Other Agda modules in this section (7)
Complete compiler-highlighted source. Follow a symbol to its declaration.
# Absolute slice and coslice categories For `cons:General_Slice_Category` in the absolute case, a slice object is a constant family in `Fun Y C`, together with an arrow to the fixed family `ψ`. We construct this directly from functor categories and a pullback. The dual construction reverses the two endpoint conditions. Both definitions retain the specified endpoint identification. The relative construction over an arbitrary base, and the comparison with mapping out of joins, are separate statements. ```agda {-# OPTIONS --safe --without-K #-} open import Agda.Primitive using (Level) open import SCT.VolumeI.Chapter01.Theory using (Theory) import SCT.VolumeI.Chapter01.Section04.MappingAnimae as Mapping import SCT.VolumeI.Chapter01.Section07.FunctorCategories as Categories import SCT.VolumeI.Chapter01.Section06.PullbackLaws as Pullbacks import SCT.VolumeI.Chapter02.Section01.WalkingMorphism as Interval module SCT.VolumeI.Chapter03.Section07.Slices {c m a : Level} (𝒯 : Theory c m a) (M : Mapping.MappingAnimae 𝒯) (ℱ : Categories.FunctorCategories 𝒯 M) (P : Pullbacks.PullbackStructure 𝒯) (I : Interval.WalkingMorphism 𝒯) where open import SCT.VolumeI.Chapter01.Section07.Setup 𝒯 M ℱ open Pullbacks.PullbackStructure P open Interval.WalkingMorphism I open import SCT.VolumeI.Chapter01.Section07.AbsoluteObjects 𝒯 M ℱ using (nameFun) open import SCT.VolumeI.Chapter01.Section06.Cones 𝒯 open import SCT.VolumeI.Chapter01.Section06.PullbackSquares 𝒯 P using (IsPullback; pullbackCone-isPullback) open import SCT.VolumeI.Chapter01.Section07.FunctorPullbacks 𝒯 M ℱ P using (fun-preserves-pullback; mappedCone) constantFamily : (Y C : CAT) → MAP C (Fun Y C) constantFamily Y C = funCurry pr₁ endpoint : (Y : CAT) (e : Obj-abs [1]) → MAP Y ([1] × Y) endpoint Y e = pair (const e) (id Y) endpoints : (Y C : CAT) → MAP (Fun ([1] × Y) C) (Fun Y C × Fun Y C) endpoints Y C = pair (funPre (endpoint Y zero)) (funPre (endpoint Y one)) module Slice {Y C : CAT} (ψ : MAP Y C) where boundary : MAP C (Fun Y C × Fun Y C) boundary = pair (constantFamily Y C) (const (nameFun ψ)) category : CAT category = Pullback (endpoints Y C) boundary diagram : MAP category (Fun ([1] × Y) C) diagram = pullback₁ projection : MAP category C projection = pullback₂ matching : (endpoints Y C ∘ diagram) =₁ (boundary ∘ projection) matching = pullbackMatch cone : Cone (endpoints Y C) boundary category cone = pullbackCone (endpoints Y C) boundary universal : IsPullback cone universal = pullbackCone-isPullback (endpoints Y C) boundary functor-square-isPullback : (X : CAT) → IsPullback (mappedCone X cone) functor-square-isPullback X = fun-preserves-pullback X cone universal module Coslice {X C : CAT} (φ : MAP X C) where boundary : MAP C (Fun X C × Fun X C) boundary = pair (const (nameFun φ)) (constantFamily X C) category : CAT category = Pullback (endpoints X C) boundary diagram : MAP category (Fun ([1] × X) C) diagram = pullback₁ projection : MAP category C projection = pullback₂ matching : (endpoints X C ∘ diagram) =₁ (boundary ∘ projection) matching = pullbackMatch cone : Cone (endpoints X C) boundary category cone = pullbackCone (endpoints X C) boundary universal : IsPullback cone universal = pullbackCone-isPullback (endpoints X C) boundary functor-square-isPullback : (Y : CAT) → IsPullback (mappedCone Y cone) functor-square-isPullback Y = fun-preserves-pullback Y cone universal ```