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.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.Functors
- 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.
# Postcomposition over a base A functor over the base acts on relative functor categories by postcomposing their universal families. Its specified triangle is used in the resulting triangle, so the construction also determines the action on relative mapping animae. The native point computation and its naming comparison below retain the entire triangle over the base. ```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 module SCT.VolumeI.Chapter03.RelativeCategories.Composition.Postcomposition {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 import SCT.VolumeI.Chapter01.Section07.Currying 𝒯 M ℱ open import SCT.VolumeI.Chapter03.RelativeCategories.Functors 𝒯 M ℱ P open import SCT.VolumeI.Chapter03.RelativeCategories.Evaluation.Evaluation 𝒯 M ℱ P using (module Evaluation; module Curry) open import SCT.VolumeI.Chapter03.RelativeCategories.Evaluation.PointComputations 𝒯 M ℱ P using (module Postcomposition) open import SCT.VolumeI.Chapter01.Section06.Cones 𝒯 using (Cone; conePre) open import SCT.VolumeI.Chapter03.RelativeCategories.ConeCalculus.ConeUncurrying 𝒯 M ℱ P using (module CurriedTriangle) open import SCT.VolumeI.Chapter01.Section07.AbsoluteObjects 𝒯 M ℱ using (nameFun) open import SCT.VolumeI.Chapter01.Section07.Functoriality 𝒯 M ℱ using (funPost) open import SCT.VolumeI.Chapter03.RelativeCategories.Identifications 𝒯 M ℱ P open import SCT.VolumeI.Chapter03.RelativeCategories.ConeCalculus.EvaluatedRelativeCones 𝒯 M ℱ P open import SCT.VolumeI.Chapter03.RelativeCategories.Families.NativePointFamilies 𝒯 M ℱ P using (universal-point; module CurriedFamily) open import SCT.VolumeI.Chapter03.RelativeCategories.IdentificationCalculus.NamingComparisons 𝒯 M ℱ P using (module Triangles) open Pullbacks.PullbackStructure P using (pullbackCone) module Postcompose {B C D S : CAT} (f : MAP B S) {g : MAP C S} {h : MAP D S} (u : FunctorOver g h) where k = FunctorLift.lift u evaluation : MAP (FunOver f g × B) D evaluation = k ∘ Evaluation.evaluate f g over : (h ∘ evaluation) =₁ (f ∘ pr₂) over = Evaluation.over f g ∙ ((FunctorLift.comparison u ▷ Evaluation.evaluate f g) ∙ (comp-assoc (Evaluation.evaluate f g) k h) ⁻¹) universal-evaluation : FunctorOver (f ∘ pr₂ {C = FunOver f g}) g universal-evaluation = EvaluatedCone (pullbackCone (funPost g) (nameFun f)) evaluated : FunctorOver (f ∘ pr₂ {C = FunOver f g}) h evaluated = compose-over u universal-evaluation module Curried = Curry f h evaluation over using (functor; comparison; evaluation) abstract functor : MAP (FunOver f g) (FunOver f h) functor = Curried.functor maps : MAP (MapOver f g) (MapOver f h) maps = mapPost functor maps-as-core : maps =₁ mapPost functor maps-as-core = idIso maps evaluation-comparison : funUncurry (Over.forget f h ∘ functor) =₁ evaluation evaluation-comparison = Curried.evaluation family-comparison : FunctorOverIso (EvaluatedCone (conePre functor (pullbackCone (funPost h) (nameFun f)))) evaluated family-comparison = record { underlying = CurriedTriangle.evaluation-with-image f h evaluation over ; compatible = CurriedTriangle.native-beta f h evaluation over } on-points : (x : Obj-abs (MapOver f g)) → FunctorLift.lift (Over.decode-over f h (maps ∘ x)) =₁ (k ∘ FunctorLift.lift (Over.decode-over f g x)) on-points = Postcomposition.comparison f g h k functor evaluation-comparison on-points-over : (x : Obj-abs (MapOver f g)) → FunctorOverIso (Over.decode-over f h (maps ∘ x)) (compose-over u (Over.decode-over f g x)) on-points-over x = compose-iso-over (postwhisker-over u (inverse-iso-over (universal-point f g x))) (compose-iso-over (associator-over (CurriedFamily.Evaluated.parameter f h evaluated x) universal-evaluation u) (CurriedFamily.comparison f h evaluated x)) on-named-points : (v : FunctorOver f g) → (maps ∘ Over.name-over f g v) =₁ Over.name-over f h (compose-over u v) on-named-points v = Triangles.Identification.identification f h (Over.decode-over f h (maps ∘ Over.name-over f g v)) (compose-over u v) (compose-iso-over (postwhisker-over u (Triangles.decode-name-native f g v)) (on-points-over (Over.name-over f g v))) ∙ (Over.name-decode-over f h (maps ∘ Over.name-over f g v)) ⁻¹ ```