Other Agda modules in this section (72)
- BaseChange.BaseChangeFamilyProjection
- BaseChange.BaseChangeNativePoints
- BaseChange.BaseChangeSubstitution
- BaseChange.BeckChevalley
- BaseChange.BeckChevalleyCones
- BaseChange.BeckChevalleyDomain
- BaseChange.BeckChevalleyEvaluation
- BaseChange.BeckChevalleyFamilies
- BaseChange.BeckChevalleyUncurrying
- 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.
# Beck–Chevalley on mapping animae Take cores of the comparison of uncurrying functors. The composition comparisons identify these cores with the stipulated base-change and postcomposition maps. Since the other three sides are equivalences, the pulled evaluation has the dependent-product universal property. ```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.BeckChevalleyMapping {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.Section05.DependentProducts 𝒯 M ℱ P open import SCT.VolumeI.Chapter03.Section05.BaseChange.BeckChevalleyUncurrying 𝒯 M ℱ P using (module Square) module Stability {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 Functors = Square p b square square-isPullback g f ε using (pulled; module At) h = Cone.left square p′ = Cone.right square t : MAP (Pullback g b) T′ t = pullback₂ f′ : MAP (Pullback f h) S′ f′ = pullback₂ pulled = Functors.pulled module At {K : CAT} (k : MAP K T′) where module F = Functors.At k using (left; right; comparison; restriction-maps-isEquiv; module A; module B; module Restrict; module NewBC; module NewPost; module OldBC; module OldPost) module A = F.A using (maps; functor; maps-isEquiv) module B = F.B using (maps; functor; maps-isEquiv) module R = F.Restrict using (maps; functor) module NewBC = F.NewBC using (maps; functor; maps-as-core) module NewPost = F.NewPost using (maps; functor; maps-as-core) module OldBC = F.OldBC using (maps; functor; maps-as-core) module OldPost = F.OldPost using (maps; functor; maps-as-core) new-uncurry = EvaluationAlong.uncurrying p′ f′ t pulled k old-uncurry = EvaluationAlong.uncurrying p f g ε (b ∘ k) left = B.maps ∘ new-uncurry right = R.maps ∘ (old-uncurry ∘ A.maps) old-functor = OldPost.functor ∘ OldBC.functor abstract new-core : new-uncurry =₁ mapPost (NewPost.functor ∘ NewBC.functor) new-core = mapPost-comp NewBC.functor NewPost.functor ∙ ((mapPost NewPost.functor ◁ NewBC.maps-as-core) ∙ (NewPost.maps-as-core ▷ NewBC.maps)) old-core : old-uncurry =₁ mapPost old-functor old-core = mapPost-comp OldBC.functor OldPost.functor ∙ ((mapPost OldPost.functor ◁ OldBC.maps-as-core) ∙ (OldPost.maps-as-core ▷ OldBC.maps)) left-core : left =₁ mapPost F.left left-core = mapPost-comp (NewPost.functor ∘ NewBC.functor) B.functor ∙ (mapPost B.functor ◁ new-core) right-core : right =₁ mapPost F.right right-core = mapPost-comp (OldPost.functor ∘ (OldBC.functor ∘ A.functor)) R.functor ∙ (mapPost R.functor ◁ (mapPost-cong (comp-assoc A.functor OldBC.functor OldPost.functor) ∙ (mapPost-comp A.functor old-functor ∙ (old-core ▷ A.maps)))) comparison : left =₁ right comparison = right-core ⁻¹ ∙ (mapPost-cong F.comparison ∙ left-core) isEquiv : IsDependentProduct p f g ε → IsEquiv new-uncurry isEquiv universal = equiv-cancel-left new-uncurry B.maps B.maps-isEquiv (equiv-transport (comparison ⁻¹) (equiv-compose (old-uncurry ∘ A.maps) R.maps (equiv-compose A.maps old-uncurry A.maps-isEquiv (IsDependentProduct.universal universal (b ∘ k))) (F.restriction-maps-isEquiv))) abstract universal : IsDependentProduct p f g ε → IsDependentProduct p′ f′ t pulled universal old = record { universal = λ k → At.isEquiv k old } ```