Other Agda modules in this chapter (87)
- RelativeCategories.BaseChange.BaseChange
- RelativeCategories.BaseChange.BaseChangeComparisonFamilies
- RelativeCategories.BaseChange.BaseChangeHigherIdentifications
- RelativeCategories.BaseChange.BasePostcomposition
- RelativeCategories.BaseChange.Identifications
- RelativeCategories.BaseChange.NativeProductBaseChange
- RelativeCategories.BaseChange.PulledFamilies
- RelativeCategories.BaseChange.SourceChange
- RelativeCategories.BaseChange.StructureChange
- RelativeCategories.Composition.EvaluatedPrecomposition
- RelativeCategories.Composition.Postcomposition
- RelativeCategories.Composition.PostcompositionEquivalences
- RelativeCategories.Composition.PostcompositionLaws
- RelativeCategories.Composition.PostcompositionReflection
- RelativeCategories.Composition.PrecompositionCompatibility
- RelativeCategories.ConeCalculus.ConeAction
- RelativeCategories.ConeCalculus.ConePasting
- RelativeCategories.ConeCalculus.ConeUncurrying
- RelativeCategories.ConeCalculus.EvaluatedRelativeCones
- RelativeCategories.ConeCalculus.NativePullbackTargets
- RelativeCategories.ConeCalculus.ProductTriangleCones
- RelativeCategories.ConeCalculus.PullbackRelativeComparisons
- RelativeCategories.ConeCalculus.PullbackTargets
- RelativeCategories.ConeCalculus.PullbackTriangles
- RelativeCategories.ConeCalculus.RelativeIntervalCones
- RelativeCategories.ConeCalculus.RestrictedConeLifts
- RelativeCategories.CoproductCalculus.CoproductDescent
- RelativeCategories.CoproductCalculus.CoproductFamilies
- RelativeCategories.CoproductCalculus.CoproductMapping
- RelativeCategories.Coproducts
- RelativeCategories.DecodedMorphisms
- RelativeCategories.DiagramMorphisms
- RelativeCategories.Equivalences
- RelativeCategories.Evaluation.BaseIdentityTriangles
- RelativeCategories.Evaluation.Evaluation
- RelativeCategories.Evaluation.EvaluationRestriction
- RelativeCategories.Evaluation.EvaluationUnitCoherence
- RelativeCategories.Evaluation.PointComputations
- RelativeCategories.Evaluation.PointReductionCoherence
- RelativeCategories.Evaluation.ProductDependentEvaluation
- RelativeCategories.Evaluation.ProductUncurryingTriangles
- RelativeCategories.Evaluation.RestrictionEquivalences
- RelativeCategories.Evaluation.TriangleTransport
- RelativeCategories.Evaluation.UncurriedBaseTriangles
- RelativeCategories.Evaluation.UncurriedTriangles
- RelativeCategories.Evaluation.Uncurrying
- RelativeCategories.Evaluation.UncurryingComposition
- RelativeCategories.Evaluation.UncurryingRestriction
- RelativeCategories.Evaluation.UncurryingSubstitution
- RelativeCategories.Families.AbsolutePointFamilies
- RelativeCategories.Families.ArgumentFamilies
- RelativeCategories.Families.DecodedFamilies
- RelativeCategories.Families.Families
- RelativeCategories.Families.FamilyReflection
- RelativeCategories.Families.IdentificationFamilies
- RelativeCategories.Families.IntervalParameters
- RelativeCategories.Families.NativePointFamilies
- RelativeCategories.IdentificationCalculus.ComparisonAlgebra
- RelativeCategories.IdentificationCalculus.ComparisonEncoding
- RelativeCategories.IdentificationCalculus.ComparisonLifting
- RelativeCategories.IdentificationCalculus.ComparisonRestriction
- RelativeCategories.IdentificationCalculus.ConstantNameChange
- RelativeCategories.IdentificationCalculus.ConstantNameNaturality
- RelativeCategories.IdentificationCalculus.ConstantNameRestriction
- RelativeCategories.IdentificationCalculus.ConstantNameUnit
- RelativeCategories.IdentificationCalculus.EquivalenceReflectionComputation
- RelativeCategories.IdentificationCalculus.FixedBoundaryComparisons
- RelativeCategories.IdentificationCalculus.HigherEncoding
- RelativeCategories.IdentificationCalculus.NamedPointEvaluation
- RelativeCategories.IdentificationCalculus.NamingCoherence
- RelativeCategories.IdentificationCalculus.NamingComparisons
- RelativeCategories.IdentificationCalculus.NamingIdentifications
- RelativeCategories.IdentificationCalculus.NamingLaws
- RelativeCategories.IdentificationCalculus.PostNamingCoherence
- RelativeCategories.Identifications
- RelativeCategories.MorphismDiagramRecovery
- RelativeCategories.MorphismDiagrams
- RelativeCategories.MorphismPostcomposition
- RelativeCategories.MorphismRetargeting
- RelativeCategories.MorphismTriangles
- RelativeCategories.MorphismWhiskering
- RelativeCategories.Morphisms
- RelativeCategories.NamedMorphisms
- RelativeCategories.Products
- RelativeCategories.PullbackMorphismLifting
- RelativeCategories.PullbackMorphisms
- RelativeCategories.TerminalBase
Complete compiler-highlighted source. Follow a symbol to its declaration.
Explanation (AI-generated): Triangles over a base
Corresponding book passages
# Functors over a category For `def:Relative_Functor_Category_Global_Sections`, take the fiber of postcomposition over the specified structure functor. The pullback retains the identification making the triangle commute. `FunOver` is the category of functors over the base; `MapOver` is its core. These are categories of global functors, as distinct from the relative internal functor category constructed later in this section. ```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.Chapter01.Section03.Whiskering as WhiskeringEquivalences module SCT.VolumeI.Chapter03.RelativeCategories.Functors {c m a : Level} (π― : Theory c m a) (M : Mapping.MappingAnimae π―) (β± : Categories.FunctorCategories π― M) (P : Pullbacks.PullbackStructure π―) where open import SCT.VolumeI.Chapter01.Section05.Setup π― M open Categories.FunctorCategories β± using (Fun) open Pullbacks.PullbackStructure P open import SCT.VolumeI.Chapter01.Section04.Core π― M using (Core; core-isAn; coreInclusion; core-universal) open import SCT.VolumeI.Chapter01.Section07.AbsoluteObjects π― M β± open import SCT.VolumeI.Chapter01.Section07.Functoriality π― M β± using (funPost) open import SCT.VolumeI.Chapter01.Section06.Cones π― open import SCT.VolumeI.Chapter01.Section06.ConeCalculus.ConeAction π― using (cone-action) open import SCT.VolumeI.Chapter01.Section06.ConeCalculus.PullbackLifting π― P using (pullback-reflect) open import SCT.VolumeI.Chapter03.Section04.CoconeCalculus.DiagramInterchange π― M β± using (post-nameFun; decodeFun-cong) open import SCT.VolumeI.Chapter03.RelativeCategories.IdentificationCalculus.NamingIdentifications π― M β± open import SCT.VolumeI.Chapter01.Section06.ConeCalculus.ConeSymmetry π― using (coneRetarget; coneRetarget-Ξ²; coneIso-compose; coneIso-inverse; cone-match-change) open import SCT.VolumeI.Chapter02.Section01.EvaluationCalculus.CoreInclusions π― M using (coreInclusion-name) open import SCT.VolumeI.Chapter01.Section04.EquivalenceDetection π― M using (mapPost-reflect) open WhiskeringEquivalences vocabulary terminal products productLaws composition vertical whiskering using (leftMultiply; rightMultiply; leftMultiply-isEquiv; rightMultiply-isEquiv) FunctorOver : {C D S : CAT} β MAP C S β MAP D S β Set m FunctorOver f g = FunctorLift g f identity-over : {C S : CAT} (f : MAP C S) β FunctorOver f f identity-over f = record { lift = id _ ; comparison = comp-unitΚ³ f } compose-over : {B C D S : CAT} {f : MAP B S} {g : MAP C S} {h : MAP D S} β FunctorOver g h β FunctorOver f g β FunctorOver f h compose-over {h = h} v u = record { lift = FunctorLift.lift v β FunctorLift.lift u ; comparison = FunctorLift.comparison u β ((FunctorLift.comparison v β· FunctorLift.lift u) β (comp-assoc (FunctorLift.lift u) (FunctorLift.lift v) h) β»ΒΉ) } FunOver : {C D S : CAT} β MAP C S β MAP D S β CAT FunOver f g = Pullback (funPost g) (nameFun f) MapOver : {C D S : CAT} β MAP C S β MAP D S β CAT MapOver f g = Core (FunOver f g) mapOver-isAn : {C D S : CAT} (f : MAP C S) (g : MAP D S) β isAn (MapOver f g) mapOver-isAn f g = core-isAn (FunOver f g) module Over {C D S : CAT} (f : MAP C S) (g : MAP D S) where forget : MAP (FunOver f g) (Fun C D) forget = pullbackβ matching : (funPost g β forget) =β (nameFun f β pullbackβ) matching = pullbackMatch intro : {X : CAT} β Cone (funPost g) (nameFun f) X β MAP X (FunOver f g) intro = pullbackLift intro-Ξ² : {X : CAT} (s : Cone (funPost g) (nameFun f) X) β ConeIso (conePre (intro s) (pullbackCone (funPost g) (nameFun f))) s intro-Ξ² = pullbackLift-Ξ² reflect : {X : CAT} (u v : MAP X (FunOver f g)) β ConeIso (conePre u (pullbackCone (funPost g) (nameFun f))) (conePre v (pullbackCone (funPost g) (nameFun f))) β u =β v reflect = pullback-reflect triangleNameMap : (h : MAP C D) β MAP ((g β h) οΌ f) ((funPost g β nameFun h) οΌ (nameFun f β id One)) triangleNameMap h = leftMultiply ((comp-unitΚ³ (nameFun f)) β»ΒΉ) β (rightMultiply (post-nameFun g h) β nameFun-isoMap (g β h) f) triangleNameMap-isEquiv : (h : MAP C D) β IsEquiv (triangleNameMap h) triangleNameMap-isEquiv h = equiv-compose (rightMultiply (post-nameFun g h) β nameFun-isoMap (g β h) f) (leftMultiply ((comp-unitΚ³ (nameFun f)) β»ΒΉ)) (equiv-compose (nameFun-isoMap (g β h) f) (rightMultiply (post-nameFun g h)) (nameFun-isoMap-isEquiv (g β h) f) (rightMultiply-isEquiv (post-nameFun g h))) (leftMultiply-isEquiv ((comp-unitΚ³ (nameFun f)) β»ΒΉ)) module Name (u : FunctorOver f g) where cone : Cone (funPost g) (nameFun f) One cone = record { left = nameFun (FunctorLift.lift u) ; right = id One ; match = triangleNameMap (FunctorLift.lift u) β FunctorLift.comparison u } object : Obj-abs (FunOver f g) object = intro cone comparison : ConeIso (conePre object (pullbackCone (funPost g) (nameFun f))) cone comparison = intro-Ξ² cone module Decode (x : Obj-abs (FunOver f g)) where cone = conePre x (pullbackCone (funPost g) (nameFun f)) functor : MAP C D functor = decodeFun (forget β x) normalized : Cone (funPost g) (nameFun f) One normalized = coneRetarget cone (nameFun functor) (id One) ((name-decodeFun (forget β x)) β»ΒΉ) (terminal-iso _ _) chosen : FunctorLift (triangleNameMap functor) (Cone.match normalized) chosen = equiv-lift (triangleNameMap-isEquiv functor) (Cone.match normalized) over : (g β functor) =β f over = FunctorLift.lift chosen triangle : FunctorOver f g triangle = record { lift = functor ; comparison = over } matching-comparison : Cone.match (Name.cone triangle) =β Cone.match normalized matching-comparison = FunctorLift.comparison chosen cone-comparison : ConeIso (Name.cone triangle) cone cone-comparison = coneIso-compose (coneIso-inverse (coneRetarget-Ξ² cone (nameFun functor) (id One) ((name-decodeFun (forget β x)) β»ΒΉ) (terminal-iso _ _))) (cone-match-change _ _ _ _ matching-comparison) object-roundtrip : Name.object triangle =β x object-roundtrip = reflect _ _ (coneIso-compose cone-comparison (Name.comparison triangle)) opaque name-over : FunctorOver f g β Obj-abs (MapOver f g) name-over u = nameMap (Name.object u) opaque unfolding name-over decode-over : Obj-abs (MapOver f g) β FunctorOver f g decode-over x = Decode.triangle (coreInclusion (FunOver f g) β x) decoded-cone : (x : Obj-abs (MapOver f g)) β ConeIso (Name.cone (decode-over x)) (conePre (coreInclusion (FunOver f g) β x) (pullbackCone (funPost g) (nameFun f))) decoded-cone x = Decode.cone-comparison (coreInclusion (FunOver f g) β x) named-cone : (u : FunctorOver f g) β ConeIso (conePre (coreInclusion (FunOver f g) β name-over u) (pullbackCone (funPost g) (nameFun f))) (Name.cone u) named-cone u = coneIso-compose (Name.comparison u) (cone-action (pullbackCone (funPost g) (nameFun f)) (coreInclusion-name (Name.object u))) decode-identification-cone : {x y : Obj-abs (MapOver f g)} β x =β y β ConeIso (Name.cone (decode-over x)) (Name.cone (decode-over y)) decode-identification-cone {x} {y} Ξ± = coneIso-compose (coneIso-inverse (decoded-cone y)) (coneIso-compose (cone-action (pullbackCone (funPost g) (nameFun f)) (coreInclusion (FunOver f g) β Ξ±)) (decoded-cone x)) identify-cones : (u v : FunctorOver f g) β name-over u =β name-over v β ConeIso (Name.cone u) (Name.cone v) identify-cones u v Ξ± = coneIso-compose (named-cone v) (coneIso-compose (cone-action (pullbackCone (funPost g) (nameFun f)) (coreInclusion (FunOver f g) β Ξ±)) (coneIso-inverse (named-cone u))) decode-name-cone : (u : FunctorOver f g) β ConeIso (Name.cone (decode-over (name-over u))) (Name.cone u) decode-name-cone u = coneIso-compose (named-cone u) (decoded-cone (name-over u)) name-decode-over : (x : Obj-abs (MapOver f g)) β name-over (decode-over x) =β x name-decode-over x = mapPost-reflect (coreInclusion (FunOver f g)) (core-universal One (FunOver f g) one-isAn) _ _ (Decode.object-roundtrip (coreInclusion (FunOver f g) β x) β coreInclusion-name (Name.object (decode-over x))) decode-underlying : (x : Obj-abs (MapOver f g)) β FunctorLift.lift (decode-over x) =β decodeFun (forget β (coreInclusion (FunOver f g) β x)) decode-underlying x = idIso _ named-cones-identify : (u v : FunctorOver f g) β ConeIso (Name.cone u) (Name.cone v) β name-over u =β name-over v named-cones-identify u v Ξ¦ = nameMapIso (reflect (Name.object u) (Name.object v) (coneIso-compose (coneIso-inverse (Name.comparison v)) (coneIso-compose Ξ¦ (Name.comparison u)))) decode-identification : {x y : Obj-abs (MapOver f g)} β x =β y β FunctorLift.lift (decode-over x) =β FunctorLift.lift (decode-over y) decode-identification Ξ± = decodeFun-cong (forget β (coreInclusion (FunOver f g) β Ξ±)) named-forget : (u : FunctorOver f g) β (forget β (coreInclusion (FunOver f g) β name-over u)) =β nameFun (FunctorLift.lift u) named-forget u = ConeIso.leftIso (Name.comparison u) β (forget β coreInclusion-name (Name.object u)) decode-name-over : (u : FunctorOver f g) β FunctorLift.lift (decode-over (name-over u)) =β FunctorLift.lift u decode-name-over u = decode-nameFun (FunctorLift.lift u) β decodeFun-cong (named-forget u) identify-underlying : (u v : FunctorOver f g) β name-over u =β name-over v β FunctorLift.lift u =β FunctorLift.lift v identify-underlying u v Ξ± = decode-name-over v β (decode-identification Ξ± β (decode-name-over u) β»ΒΉ) ``` The introduction comparison is a comparison of the entire cone, including its matching. Thus the commutativity identification is part of the constructed object, rather than an equation discarded after choosing the underlying functor. `Over.decode-name-cone` is the roundtrip statement for the entire named triangle. Its compatibility field compares the matching identifications. `Over.identify-cones` similarly retains the triangles when reflecting an identification of relative mapping points. `Over.decode-name-over` separately gives a convenient comparison of the underlying functors. No equality between those two chosen comparisons is asserted.