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.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.ReassociatedProductLifting
- SectionsOfDependentProducts
- TerminalExponentiability
Complete compiler-highlighted source. Follow a symbol to its declaration.
# Product reassociation compares the full parameter cones Forget the external parameter and use the projection comparison for fiberwise reassociation. Lift its left leg back to the product with the parameter, retaining its prescribed second projection. This recovers the full cone comparison with the reassociation triangle as right leg. ```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.ProductCalculus.ProductParameterCones {c m a : Level} (𝒯 : Theory c m a) (M : Mapping.MappingAnimae 𝒯) (ℱ : Categories.FunctorCategories 𝒯 M) (P : Pullbacks.PullbackStructure 𝒯) where open import SCT.VolumeI.Chapter01.Section07.Setup 𝒯 M ℱ open import SCT.VolumeI.Chapter01.Section06.Cones 𝒯 open import SCT.VolumeI.Chapter01.Section06.ConeCalculus.ConeRestriction 𝒯 using (coneIso-compose; coneIso-inverse; coneIso-pre) open import SCT.VolumeI.Chapter01.Section06.ConeCalculus.ConeSymmetry 𝒯 using (cone-match-change; coneIso-adjust) open import SCT.VolumeI.Chapter01.Section06.ConeCalculus.CompositeCones 𝒯 using (compositeCone; compositeCone-pre; compositeCone-compatible) open import SCT.VolumeI.Chapter01.Section06.Coordinates.ProductSquares 𝒯 P using (module FirstFactor) open import SCT.VolumeI.Chapter01.Section06.ConeCalculus.InverseCalculus 𝒯 using (inverse-identity) open import SCT.VolumeI.Chapter03.RelativeCategories.Functors 𝒯 M ℱ P open import SCT.VolumeI.Chapter03.RelativeCategories.Identifications 𝒯 M ℱ P open import SCT.VolumeI.Chapter03.Section05.Currying.FamilyProjection 𝒯 M ℱ P using (projection) open import SCT.VolumeI.Chapter03.RelativeCategories.ConeCalculus.ConeAction 𝒯 M ℱ P using (module Action) open import SCT.VolumeI.Chapter01.Section06.ConeCalculus.ParameterizedCones 𝒯 using (module Parameter) open import SCT.VolumeI.Chapter03.RelativeCategories.Evaluation.ProductUncurryingTriangles 𝒯 M ℱ P using (module Product) open import SCT.VolumeI.Chapter03.RelativeCategories.ConeCalculus.ProductTriangleCones 𝒯 M ℱ P using (module Triangle) open import SCT.VolumeI.Chapter03.Section05.ProductCalculus.ProductFamilyReassociation 𝒯 M ℱ P using (module Regroup) open import SCT.VolumeI.Chapter03.Section05.ProductCalculus.ProductFamilyProjection 𝒯 M ℱ P using (module Projection) open import SCT.VolumeI.Chapter03.Section05.Currying.ConeRestrictionTriangles 𝒯 M ℱ P using (module Restrict) module Parameters {T S E K : CAT} (r : MAP E (T × S)) (k : MAP K T) (X : CAT) where module R = Regroup r k X module ProductProjection = Projection r k X module C = Triangle S (projection k X) module Param = Parameter X (FirstFactor.square k S) J = R.argument regroup = FunctorLift.lift J inner = FirstFactor.square R.k′ S base = FirstFactor.square k S original = compositeCone (pr₂ {X} {K}) k inner acted = Action.value R.F.projection (projection k X) inner source = conePre regroup inner target = Param.cone abstract original-matching : Cone.match original =₂ Cone.match acted original-matching = isoComp-cong (idIso (Cone.match inner)) ((isoComp-unitˡ-at ((comp-assoc (pr₁ {X × K} {S}) (pr₂ {X} {K}) k) ⁻¹) ∙ isoComp-cong (preWhisker-idIso R.k′ (pr₁ {X × K} {S})) (idIso ((comp-assoc (pr₁ {X × K} {S}) (pr₂ {X} {K}) k) ⁻¹))) ⁻¹) normalize = cone-match-change _ _ _ _ original-matching module Reduced = Restrict base acted (Product.value S (projection k X)) C.comparison C.right-image (pr₂ {X} {K × S}) J ProductProjection.comparison start = coneIso-compose (coneIso-pre regroup normalize) (coneIso-inverse (compositeCone-pre (pr₂ {X} {K}) k regroup inner)) finish = coneIso-compose (coneIso-inverse Param.projection) Reduced.value projected = coneIso-compose finish start source-right = Cone.right source target-right = Cone.right target abstract start-right : ConeIso.rightIso start =₂ idIso source-right start-right = isoComp-unitˡ-at (idIso source-right) ∙ isoComp-cong (preWhisker-idIso (Cone.right inner) regroup) (inverse-identity source-right) finish-right : ConeIso.rightIso finish =₂ FunctorLift.comparison J finish-right = isoComp-unitˡ-at (FunctorLift.comparison J) ∙ isoComp-cong (inverse-identity target-right) Reduced.right-image right-image : ConeIso.rightIso projected =₂ FunctorLift.comparison J right-image = isoComp-unitʳ-at (FunctorLift.comparison J) ∙ isoComp-cong finish-right start-right first-source = Associativity.backward-first X K S ∙ (comp-assoc regroup (pr₁ {X × K} {S}) (pr₁ {X} {K})) ⁻¹ first-target = comp-unitˡ (pr₁ {X} {K × S}) ∙ pair-β₁ (id X ∘ pr₁) ((pr₁ {K} {S}) ∘ pr₂) first = first-target ⁻¹ ∙ first-source second = ConeIso.leftIso projected left = pair-iso first second adjusted = coneIso-adjust projected ((pr₂ {X} {K}) ◁ left) (FunctorLift.comparison J) ((pair-iso-β₂ first second) ⁻¹) right-image comparison : ConeIso source target comparison = compositeCone-compatible (pr₂ {X} {K}) k source target left (FunctorLift.comparison J) (ConeIso.compatible adjusted) ```