Other Agda modules in this section (89)
- CoconeCalculus.CoconeArrowRestriction
- CoconeCalculus.CoconePasting
- CoconeCalculus.CoconePastingPostcomposition
- CoconeCalculus.CoconePostcomposition
- CoconeCalculus.CoconeTransposition
- CoconeCalculus.CoconeUniversality
- CoconeCalculus.CompositeCocones
- CoconeCalculus.UniversalCoconePasting
- 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.ProductCompositionAssociativity
- 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.
# Compatible cocones A cocone retains its comparison on the common source. A comparison of cocones retains the identification between the two resulting pastings. These are the data tested when a square is mapped into another category. ```agda {-# OPTIONS --safe --without-K #-} open import Agda.Primitive using (Level) open import SCT.VolumeI.Chapter01.Theory using (Theory) import SCT.VolumeI.Chapter01.Section04.Setup as Setup import SCT.VolumeI.Chapter01.Section03.ProductCalculus.PairingNaturality as PN module SCT.VolumeI.Chapter01.Section08.Cocones {c m a : Level} (𝒯 : Theory c m a) where open Setup 𝒯 open import SCT.VolumeI.Chapter01.Section06.ConeCalculus.InverseCalculus 𝒯 open PN vocabulary terminal products productLaws composition vertical whiskering using (move-square; cancel-right) record Cocone {A B C : CAT} (u : MAP A B) (v : MAP A C) (E : CAT) : Set m where field left : MAP B E right : MAP C E match : (left ∘ u) =₁ (right ∘ v) record CoconeIso {A B C E : CAT} {u : MAP A B} {v : MAP A C} (s t : Cocone u v E) : Set m where field leftIso : (Cocone.left s) =₁ (Cocone.left t) rightIso : (Cocone.right s) =₁ (Cocone.right t) compatible : (Cocone.match t ∙ (leftIso ▷ u)) =₂ ((rightIso ▷ v) ∙ Cocone.match s) coconeIso-compose : {A B C E : CAT} {u : MAP A B} {v : MAP A C} {s t w : Cocone u v E} → CoconeIso t w → CoconeIso s t → CoconeIso s w coconeIso-compose {u = u} {v} {s} {t} {w} Ψ Φ = record { leftIso = CoconeIso.leftIso Ψ ∙ CoconeIso.leftIso Φ ; rightIso = CoconeIso.rightIso Ψ ∙ CoconeIso.rightIso Φ ; compatible = isoComp-cong ((preWhisker-isoComp-at (CoconeIso.rightIso Ψ) (CoconeIso.rightIso Φ) v) ⁻¹) (idIso τs) ∙ ((isoComp-assoc-at β′ β τs) ⁻¹ ∙ (isoComp-cong (idIso β′) (CoconeIso.compatible Φ) ∙ (isoComp-assoc-at β′ τt α ∙ (isoComp-cong (CoconeIso.compatible Ψ) (idIso α) ∙ ((isoComp-assoc-at τw α′ α) ⁻¹ ∙ isoComp-cong (idIso τw) (preWhisker-isoComp-at (CoconeIso.leftIso Ψ) (CoconeIso.leftIso Φ) u)))))) } where τs = Cocone.match s τt = Cocone.match t τw = Cocone.match w α = CoconeIso.leftIso Φ ▷ u α′ = CoconeIso.leftIso Ψ ▷ u β = CoconeIso.rightIso Φ ▷ v β′ = CoconeIso.rightIso Ψ ▷ v coconeIso-inverse : {A B C E : CAT} {u : MAP A B} {v : MAP A C} {s t : Cocone u v E} → CoconeIso s t → CoconeIso t s coconeIso-inverse {u = u} {v} {s} {t} Φ = record { leftIso = (CoconeIso.leftIso Φ) ⁻¹ ; rightIso = (CoconeIso.rightIso Φ) ⁻¹ ; compatible = isoComp-cong ((pre-inverse (CoconeIso.rightIso Φ) v) ⁻¹) (idIso (Cocone.match t)) ∙ ((move-square (CoconeIso.rightIso Φ ▷ v) (Cocone.match s) (Cocone.match t) (CoconeIso.leftIso Φ ▷ u) ((CoconeIso.compatible Φ) ⁻¹)) ⁻¹ ∙ isoComp-cong (idIso (Cocone.match s)) (pre-inverse (CoconeIso.leftIso Φ) u)) } coconeIso-adjust : {A B C E : CAT} {u : MAP A B} {v : MAP A C} {s t : Cocone u v E} (Φ : CoconeIso s t) (α : (Cocone.left s) =₁ (Cocone.left t)) (β : (Cocone.right s) =₁ (Cocone.right t)) → (CoconeIso.leftIso Φ) =₂ α → (CoconeIso.rightIso Φ) =₂ β → CoconeIso s t coconeIso-adjust {u = u} {v} {s} {t} Φ α β l r = record { leftIso = α ; rightIso = β ; compatible = isoComp-cong (preWhisker v ◁ r) (idIso (Cocone.match s)) ∙ (CoconeIso.compatible Φ ∙ isoComp-cong (idIso (Cocone.match t)) (preWhisker u ◁ l ⁻¹)) } coconeRetarget : {A B C E : CAT} {u : MAP A B} {v : MAP A C} (s : Cocone u v E) (p : MAP B E) (q : MAP C E) → (Cocone.left s) =₁ p → (Cocone.right s) =₁ q → Cocone u v E coconeRetarget {u = u} {v} s p q α β = record { left = p ; right = q ; match = (β ▷ v) ∙ (Cocone.match s ∙ (α ▷ u) ⁻¹) } coconeRetarget-β : {A B C E : CAT} {u : MAP A B} {v : MAP A C} (s : Cocone u v E) (p : MAP B E) (q : MAP C E) (α : (Cocone.left s) =₁ p) (β : (Cocone.right s) =₁ q) → CoconeIso s (coconeRetarget s p q α β) coconeRetarget-β {u = u} {v} s p q α β = record { leftIso = α ; rightIso = β ; compatible = isoComp-cong (idIso (β ▷ v)) (isoComp-unitʳ-at (Cocone.match s) ∙ (isoComp-cong (idIso (Cocone.match s)) (isoComp-inverseˡ-at (α ▷ u)) ∙ isoComp-assoc-at (Cocone.match s) ((α ▷ u) ⁻¹) (α ▷ u))) ∙ isoComp-assoc-at (β ▷ v) (Cocone.match s ∙ (α ▷ u) ⁻¹) (α ▷ u) } cocone-match-change : {A B C E : CAT} {u : MAP A B} {v : MAP A C} (p : MAP B E) (q : MAP C E) (σ τ : (p ∘ u) =₁ (q ∘ v)) → σ =₂ τ → CoconeIso (record { left = p ; right = q ; match = σ }) (record { left = p ; right = q ; match = τ }) cocone-match-change {u = u} {v} p q σ τ δ = record { leftIso = idIso p ; rightIso = idIso q ; compatible = isoComp-cong ((preWhisker-idIso q v) ⁻¹) (idIso σ) ∙ ((isoComp-unitˡ-at σ) ⁻¹ ∙ (δ ⁻¹ ∙ (isoComp-unitʳ-at τ ∙ isoComp-cong (idIso τ) (preWhisker-idIso p u)))) } ```