Other Agda modules in this section (72)
- BaseChange.BaseChangeFamilyProjection
- BaseChange.BaseChangeNativePoints
- BaseChange.BaseChangeSubstitution
- BaseChange.BeckChevalley
- BaseChange.BeckChevalleyCones
- BaseChange.BeckChevalleyDomain
- BaseChange.BeckChevalleyEvaluation
- BaseChange.BeckChevalleyFamilies
- BaseChange.BeckChevalleyMapping
- BaseChange.DependentProductSourceTransport
- BaseChange.DependentProductTargetTransport
- BaseChange.EvaluatedBaseChange
- BaseChange.ProductBaseChangeFamilies
- BaseChange.PullbackTargetsBaseChange
- ConstantFamilyEvaluation
- ConstantFamilyUniversalProperty
- Currying.ActedConeRestriction
- Currying.ChangedConeAction
- Currying.ConeRestrictionTriangles
- Currying.ConstantBaseFunctoriality
- Currying.CurryingPostcomposition
- Currying.DependentUncurryingFamilies
- Currying.EvaluatedPullbackTargets
- Currying.EvaluatedRelativeExponentialLaw
- Currying.FamilyProjection
- Currying.ParameterizedConeComparison
- Currying.ParameterizedPullbackPasting
- Currying.PointParameterProjection
- Currying.PointPullbackCone
- Currying.PointRestrictionOverBase
- Currying.PointRestrictionSquare
- Currying.ProjectedRelativeEvaluation
- Currying.PullbackTargetFamilies
- Currying.RelativeCurrying
- Currying.RelativeEvaluationFamilies
- Currying.RelativeTransposition
- Currying.SourceChangeFamilies
- Currying.TargetChangeIdentifications
- Currying.UncurriedFamilyProjection
- Currying.UncurriedFamilySubstitution
- Currying.UncurriedParameterComparison
- Currying.UncurriedTriangleComposition
- DependentProductAction
- DependentProductActionLaws
- DependentProductEmbeddings
- DependentProductUniqueness
- DependentProducts
- DependentProductsBaseChange
- ExponentiabilityCriterion
- ExponentiableFunctors
- InternalFunctorCalculus.ConstantFamilyInternalFunctors
- InternalFunctorCalculus.ConstantFamilyNativeEvaluation
- InternalFunctorCalculus.ConstantFamilyReassociation
- InternalFunctorCalculus.InternalEvaluation
- InternalFunctorCalculus.InternalProductFamily
- InternalFunctorCalculus.RelativeInternalFunctors
- InternalFunctorFibers
- InternalFunctorSections
- InternalFunctors
- InternalFunctorsBaseChange
- ProductCalculus.DependentProductActionIdentifications
- ProductCalculus.FunctorCategoryUncurrying
- ProductCalculus.ProductDependentProducts
- ProductCalculus.ProductDependentUncurrying
- ProductCalculus.ProductEvaluationComposition
- ProductCalculus.ProductEvaluationFamilies
- ProductCalculus.ProductFamilyProjection
- ProductCalculus.ProductFamilyReassociation
- ProductCalculus.ProductParameterCones
- ProductCalculus.ReassociatedProductLifting
- SectionsOfDependentProducts
- TerminalExponentiability
Complete compiler-highlighted source. Follow a symbol to its declaration.
# The square of relative uncurrying functors The two pullback-target comparisons and restriction along the pasting equivalence identify the pulled evaluation with the original one. This module proves the square on entire relative functor categories by comparing their universal families. Taking cores will give the square of mapping animae used in the universal-property argument. ```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.Section05.BaseChange.BeckChevalleyUncurrying {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 Pullbacks.PullbackStructure P open import SCT.VolumeI.Chapter01.Section06.Cones 𝒯 open import SCT.VolumeI.Chapter01.Section06.PullbackSquares 𝒯 P using (IsPullback) open import SCT.VolumeI.Chapter03.RelativeCategories.Functors 𝒯 M ℱ P open import SCT.VolumeI.Chapter03.RelativeCategories.Identifications 𝒯 M ℱ P open import SCT.VolumeI.Chapter03.RelativeCategories.Families.Families 𝒯 M ℱ P open import SCT.VolumeI.Chapter03.RelativeCategories.Families.FamilyReflection 𝒯 M ℱ P using (reflect-family) open import SCT.VolumeI.Chapter03.RelativeCategories.BaseChange.BaseChange 𝒯 M ℱ P using (module BaseChange) open import SCT.VolumeI.Chapter03.RelativeCategories.Composition.Postcomposition 𝒯 M ℱ P using (module Postcompose) open import SCT.VolumeI.Chapter03.Section05.BaseChange.EvaluatedBaseChange 𝒯 M ℱ P using (module Evaluation) open import SCT.VolumeI.Chapter03.Section05.BaseChange.BaseChangeSubstitution 𝒯 M ℱ P using (module Substitution) open import SCT.VolumeI.Chapter03.Section05.BaseChange.BaseChangeFamilyProjection 𝒯 M ℱ P using (module Identification) open import SCT.VolumeI.Chapter03.Section05.Currying.EvaluatedPullbackTargets 𝒯 M ℱ P using (module PullbackTarget) open import SCT.VolumeI.Chapter03.RelativeCategories.Composition.EvaluatedPrecomposition 𝒯 M ℱ P using (module Precompose) open import SCT.VolumeI.Chapter03.Section05.BaseChange.BeckChevalleyEvaluation 𝒯 M ℱ P using (module Pulled) module Square {S T S′ T′ C D : CAT} (p : MAP S T) (b : MAP T′ T) (square : Cone p b S′) (square-isPullback : IsPullback square) (g : MAP D T) (f : MAP C S) (ε : FunctorOver (pullback₂ {f = g} {p}) f) where module PulledEval = Pulled p b square square-isPullback g f ε using (module Dom; module At; pulled) open PulledEval.Dom using (h; p′; t) pulled = PulledEval.pulled module At {K : CAT} (k : MAP K T′) where X = FunOver k t u = universal k t module Families = PulledEval.At {K = K} {X = X} k u using (module Geometric; module Target; common; old-evaluated; comparison) module Geometry = Families.Geometric using (module Parameters; module New; module Old; argument) open Geometry.Parameters using (rN; rO) open Geometry using (argument) module A = PullbackTarget b g k using (functor; maps; maps-isEquiv; evaluation-comparison) module B = PullbackTarget h f rN using (functor; maps; maps-isEquiv; family-comparison) module Restrict = Precompose f Geometry.Parameters.flatten-over using (functor; maps; family-comparison; module Equivalence) module NewBC = BaseChange p′ k t using (f′; g′; functor; maps; maps-as-core; family-comparison) module NewPost = Postcompose rN pulled using (functor; maps; maps-as-core) module OldBC = BaseChange p (b ∘ k) g using (f′; g′; functor; maps; maps-as-core; family-comparison) module OldPost = Postcompose rO ε using (functor; maps; maps-as-core) left = B.functor ∘ (NewPost.functor ∘ NewBC.functor) right = Restrict.functor ∘ (OldPost.functor ∘ (OldBC.functor ∘ A.functor)) abstract restriction-maps-isEquiv : IsEquiv Restrict.maps restriction-maps-isEquiv = Restrict.Equivalence.maps-isEquiv Geometry.Parameters.Nest.flatten-isEquiv new-family : FunctorOverIso (family NewBC.f′ NewBC.g′ NewBC.functor) Geometry.New.pulled new-family = compose-iso-over (Evaluation.same-family p′ k t) NewBC.family-comparison left-evaluated : FunctorOverIso (family rN (pullback₂ {f = f} {h}) (NewPost.functor ∘ NewBC.functor)) (compose-over pulled Geometry.New.pulled) left-evaluated = compose-iso-over (postwhisker-over pulled new-family) (postcompose-family rN pulled NewBC.functor) left-family : FunctorOverIso (family (h ∘ rN) f left) Families.common left-family = compose-iso-over Families.comparison (compose-iso-over (Families.Target.forward-identification left-evaluated) (B.family-comparison (NewPost.functor ∘ NewBC.functor))) old-base-family : FunctorOverIso (family OldBC.f′ OldBC.g′ (OldBC.functor ∘ A.functor)) Geometry.Old.pulled old-base-family = compose-iso-over (Identification.comparison p (b ∘ k) g A.evaluation-comparison) (Substitution.family-comparison p (b ∘ k) g A.functor) old-family : FunctorOverIso (family rO f (OldPost.functor ∘ (OldBC.functor ∘ A.functor))) Families.old-evaluated old-family = compose-iso-over (postwhisker-over ε old-base-family) (postcompose-family rO ε (OldBC.functor ∘ A.functor)) right-family : FunctorOverIso (family (h ∘ rN) f right) Families.common right-family = compose-iso-over (prewhisker-over argument old-family) (Restrict.family-comparison (OldPost.functor ∘ (OldBC.functor ∘ A.functor))) comparison : left =₁ right comparison = reflect-family (h ∘ rN) f left right (compose-iso-over (inverse-iso-over right-family) left-family) ```