Other Agda modules in this section (89)
- CoconeCalculus.CoconeArrowRestriction
- CoconeCalculus.CoconePasting
- CoconeCalculus.CoconePastingPostcomposition
- CoconeCalculus.CoconePostcomposition
- CoconeCalculus.CoconeTransposition
- CoconeCalculus.CoconeUniversality
- CoconeCalculus.CompositeCocones
- CoconeCalculus.UniversalCoconePasting
- Cocones
- Everything
- FunctorCategoryCalculus.FunPrecompositionCompositeImage
- FunctorCategoryCalculus.FunPrecompositionComposition
- FunctorCategoryCalculus.FunPrecompositionCompositionBase
- FunctorCategoryCalculus.FunPrecompositionCongruence
- FunctorCategoryCalculus.FunPrecompositionNaturality
- FunctorCategoryCalculus.FunPrecompositionParameterChange
- FunctorCategoryCalculus.FunPrecompositionParameterChangeBase
- FunctorCategoryCalculus.FunRestrictionCones
- FunctorCategoryCalculus.FunSquareEvaluation
- FunctorCategoryCalculus.FunctorCriterionDetection
- FunctorCategoryCalculus.FunctorCriterionPreservation
- FunctorCategoryCalculus.FunctorSquares
- MappingCalculus.Decoding.DecodeRestrictionCones
- MappingCalculus.Decoding.DecodeSquareEvaluation
- MappingCalculus.Decoding.DecodedLegCalculus
- MappingCalculus.Decoding.DecodingCalculus
- MappingCalculus.Decoding.DecodingCompositeImage
- MappingCalculus.Decoding.DecodingComposition
- MappingCalculus.Decoding.DecodingCompositionBase
- MappingCalculus.Decoding.DecodingRestrictionNaturality
- MappingCalculus.Decoding.UnitRestrictionComposition
- MappingCalculus.Decoding.UnitRestrictionData
- MappingCalculus.Decoding.UnitRestrictionNaturality
- MappingCalculus.Restriction.EvaluationMateCalculus
- MappingCalculus.Restriction.EvaluationSquares
- MappingCalculus.Restriction.MapRestrictionCones
- MappingCalculus.Restriction.MapSquareEvaluation
- MappingCalculus.Restriction.MappingPastingComparison
- MappingCalculus.Restriction.PastingTransfer
- MappingCalculus.Restriction.PrecompositionCompositeImage
- MappingCalculus.Restriction.PrecompositionComposition
- MappingCalculus.Restriction.PrecompositionCompositionBase
- MappingCalculus.Restriction.PrecompositionCongruence
- MappingCalculus.Restriction.PrecompositionParameterChange
- MappingCalculus.Restriction.PrecompositionParameterChangeBase
- MappingCalculus.Restriction.RestrictionMate
- MappingCalculus.Restriction.RestrictionSquareEvaluation
- MappingCalculus.Restriction.RestrictionTransfer
- MappingCalculus.Restriction.UncurryPasting
- MappingCalculus.Transposition.SwapRestrictionComposition
- MappingCalculus.Transposition.SwapRestrictionData
- MappingCalculus.Transposition.SwapRestrictionNaturality
- MappingCalculus.Transposition.TransposedSquareEvaluation
- MappingCalculus.Transposition.Transposition
- MappingCalculus.Transposition.TranspositionCompositeImage
- MappingCalculus.Transposition.TranspositionComposition
- MappingCalculus.Transposition.TranspositionCompositionBase
- MappingCalculus.Transposition.TranspositionNaturality
- MappingCalculus.Transposition.TranspositionRestrictionNaturality
- MappingOutOfPushouts
- ProductCalculus.ChangedSeparationFrames
- ProductCalculus.NormalizedRestrictionAssociativity
- ProductCalculus.NormalizedRestrictionChange
- ProductCalculus.NormalizedRestrictionCompositeCoordinate
- ProductCalculus.NormalizedRestrictionComposition
- ProductCalculus.NormalizedRestrictionImage
- ProductCalculus.NormalizedRestrictionPentagon
- ProductCalculus.NormalizedSeparationFrames
- ProductCalculus.ParameterFirstCoordinate
- ProductCalculus.ParameterSecondCoordinate
- ProductCalculus.ProductComparisonProjections
- ProductCalculus.ProductCoordinateUnits
- ProductCalculus.ProductEvaluationAssociativity
- ProductCalculus.ProductFirstCoordinate
- ProductCalculus.ProductMixedSubstitution
- ProductCalculus.ProductRestrictionAssociativity
- ProductCalculus.ProductRestrictionPasting
- ProductCalculus.ProductSecondCoordinate
- ProductCalculus.ProductSeparationProjections
- ProductCalculus.ProjectionBaseCalculus
- ProductCalculus.SeparationEndpointTransport
- ProductCalculus.SeparationFrameTransport
- ProductSquares
- PushoutComparison
- PushoutExtensions
- PushoutPasting
- PushoutSquares
- RecognizingPushouts
- Squares
Complete compiler-highlighted source. Follow a symbol to its declaration.
# Associativity of composition in both product coordinates The pasting comparison uses products with a changing second coordinate. We therefore retain both coordinate associators. The proof reuses the pairing assembly from Section 1.4; its two projection hypotheses follow from the specified product comparisons. ```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.Section03.ProductCalculus.ProductFunctorUnits as ProductFunctorUnits import SCT.VolumeI.Chapter01.Section03.IdentificationCalculus.Structural as Structural module SCT.VolumeI.Chapter01.Section08.ProductCalculus.ProductCompositionAssociativity {c m a : Level} (π― : Theory c m a) (M : Mapping.MappingAnimae π―) where open import SCT.VolumeI.Chapter01.Section04.Setup π― open import SCT.VolumeI.Chapter01.Section04.ProductCalculus.ProductAssociativity π― M using (post-pasting; cancel-forward; module PairingAssembly) open import SCT.VolumeI.Chapter01.Section04.ProductCalculus.ProductSubstitution π― M using (coordinate-outer-comp) open ProductFunctorUnits vocabulary terminal products productLaws composition vertical whiskering pentagonTriangle using (pair-pre-cong-triangleβ; pair-pre-cong-triangleβ) open Structural vocabulary terminal products productLaws composition whiskering using (postWhisker-comp-at) module CoordinateAssociativity {Kβ Kβ Kβ Aβ Aβ Aβ Aβ : CAT} (Οβ : MAP Kβ Aβ) (Οβ : MAP Kβ Aβ) (Οβ : MAP Kβ Aβ) (fβ : MAP Aβ Aβ) (fβ : MAP Aβ Aβ) (fβ : MAP Aβ Aβ) (h : MAP Kβ Kβ) (k : MAP Kβ Kβ) (l : MAP Kβ Kβ) (ΞΊ : (h β k) =β l) (b : (Οβ β h) =β (fβ β Οβ)) (d : (Οβ β k) =β (fβ β Οβ)) (bβ² : (Οβ β l) =β ((fβ β fβ) β Οβ)) where middle : ((fβ β Οβ) β k) =β ((fβ β fβ) β Οβ) middle = coordinate-comparison Οβ fβ Οβ k d fβ firstStep : ((fβ β Οβ) β h) =β ((fβ β fβ) β Οβ) firstStep = coordinate-comparison Οβ fβ Οβ h b fβ secondStep : (((fβ β fβ) β Οβ) β k) =β (((fβ β fβ) β fβ) β Οβ) secondStep = coordinate-comparison Οβ fβ Οβ k d (fβ β fβ) direct : ((fβ β Οβ) β l) =β ((fβ β (fβ β fβ)) β Οβ) direct = coordinate-comparison Οβ (fβ β fβ) Οβ l bβ² fβ short : (((fβ β Οβ) β h) β k) =β ((fβ β (fβ β fβ)) β Οβ) short = direct β (((fβ β Οβ) β ΞΊ) β comp-assoc k h (fβ β Οβ)) long : (((fβ β Οβ) β h) β k) =β ((fβ β (fβ β fβ)) β Οβ) long = (comp-assoc fβ fβ fβ β· Οβ) β (secondStep β (firstStep β· k)) abstract comparison : (bβ² β (Οβ β ΞΊ)) =β (middle β ((b β· k) β (comp-assoc k h Οβ) β»ΒΉ)) β short =β long comparison projection = let outside = (comp-assoc Οβ (fβ β fβ) fβ) β»ΒΉ leftImage = fβ β bβ² inputA = comp-assoc l Οβ fβ change = (fβ β Οβ) β ΞΊ sourceA = comp-assoc k h (fβ β Οβ) across = fβ β (Οβ β ΞΊ) afterA = comp-assoc (h β k) Οβ fβ projectImage = (postWhisker fβ β projection) β (postWhisker-isoComp-at fβ bβ² (Οβ β ΞΊ)) β»ΒΉ moveInput = isoComp-assoc-at across afterA sourceA β (isoComp-cong (postWhisker-comp-at ΞΊ Οβ fβ) (idIso sourceA) β (isoComp-assoc-at inputA change sourceA) β»ΒΉ) removeInner = isoComp-cong projectImage (idIso (afterA β sourceA)) β (isoComp-assoc-at leftImage across (afterA β sourceA)) β»ΒΉ normalizeShort = isoComp-cong (idIso outside) (post-pasting fβ Οβ h k b middle β (removeInner β (isoComp-cong (idIso leftImage) moveInput β isoComp-assoc-at leftImage inputA (change β sourceA)))) β isoComp-assoc-at outside (leftImage β inputA) (change β sourceA) Ξ· = comp-assoc fβ fβ fβ β· Οβ sourceCorner = comp-assoc Οβ fβ fβ imageBefore = (fβ β b) β comp-assoc h Οβ fβ nextCoordinate = coordinate-comparison Οβ (fβ β fβ) (fβ β Οβ) k middle fβ outerSquare = coordinate-outer-comp Οβ fβ Οβ k d fβ fβ simplifyCorner = (preWhisker k β cancel-forward sourceCorner imageBefore) β (preWhisker-isoComp-at sourceCorner firstStep k) β»ΒΉ normalizeLong = isoComp-cong (idIso outside) (isoComp-assoc-at (fβ β middle) (comp-assoc k (fβ β Οβ) fβ) (imageBefore β· k)) β (isoComp-assoc-at outside ((fβ β middle) β comp-assoc k (fβ β Οβ) fβ) (imageBefore β· k) β (isoComp-cong (idIso nextCoordinate) simplifyCorner β (isoComp-assoc-at nextCoordinate (sourceCorner β· k) (firstStep β· k) β (isoComp-cong outerSquare (idIso (firstStep β· k)) β (isoComp-assoc-at Ξ· secondStep (firstStep β· k)) β»ΒΉ)))) in normalizeLong β»ΒΉ β normalizeShort module ProductCompositor {Aβ Aβ Aβ Aβ Bβ Bβ Bβ Bβ : CAT} (fβ : MAP Aβ Aβ) (fβ : MAP Aβ Aβ) (fβ : MAP Aβ Aβ) (gβ : MAP Bβ Bβ) (gβ : MAP Bβ Bβ) (gβ : MAP Bβ Bβ) where h = productMap fβ gβ k = productMap fβ gβ l = productMap (fβ β fβ) (gβ β gβ) ΞΊ = productMap-comp fβ fβ gβ gβ bβ = pair-Ξ²β (fβ β prβ) (gβ β prβ) bβ = pair-Ξ²β (fβ β prβ) (gβ β prβ) dβ = pair-Ξ²β (fβ β prβ) (gβ β prβ) dβ = pair-Ξ²β (fβ β prβ) (gβ β prβ) bβ²β = pair-Ξ²β ((fβ β fβ) β prβ) ((gβ β gβ) β prβ) bβ²β = pair-Ξ²β ((fβ β fβ) β prβ) ((gβ β gβ) β prβ) module First = CoordinateAssociativity prβ prβ prβ fβ fβ fβ h k l ΞΊ bβ dβ bβ²β module Second = CoordinateAssociativity prβ prβ prβ gβ gβ gβ h k l ΞΊ bβ dβ bβ²β abstract first-coordinate : First.short =β First.long first-coordinate = First.comparison (pair-pre-cong-triangleβ (fβ β prβ) (gβ β prβ) k First.middle Second.middle) second-coordinate : Second.short =β Second.long second-coordinate = Second.comparison (pair-pre-cong-triangleβ (fβ β prβ) (gβ β prβ) k First.middle Second.middle) law : (productMap-comp (fβ β fβ) fβ (gβ β gβ) gβ β ((productMap fβ gβ β productMap-comp fβ fβ gβ gβ) β comp-assoc (productMap fβ gβ) (productMap fβ gβ) (productMap fβ gβ))) =β (productMap-cong (comp-assoc fβ fβ fβ) (comp-assoc gβ gβ gβ) β (productMap-comp fβ (fβ β fβ) gβ (gβ β gβ) β (productMap-comp fβ fβ gβ gβ β· productMap fβ gβ))) law = PairingAssembly.assemble (fβ β prβ) (gβ β prβ) h k l ΞΊ First.firstStep Second.firstStep First.secondStep Second.secondStep First.direct Second.direct (comp-assoc fβ fβ fβ β· prβ) (comp-assoc gβ gβ gβ β· prβ) first-coordinate second-coordinate ```