Other Agda modules in this section (43)
- CompositionCalculus.LeftTriangleAction
- CompositionCalculus.RightTriangleAction
- CompositionCalculus.SourceCompositionCones
- CompositionCalculus.SourceCompositionEquivalence
- CompositionCalculus.SourceCompositionInverse
- CompositionCalculus.TargetCompositionCones
- CompositionCalculus.TargetCompositionEquivalence
- CompositionCalculus.TargetCompositionInverse
- Everything
- IdentityIsomorphisms
- InverseCalculus.ConstantArrows
- InverseCalculus.ConstantIdentityComparison
- InverseCalculus.ConstantLongEdgeFiber
- InverseCalculus.ExpressionCalculusLifts
- InverseCalculus.ExpressionInverseLaws
- InverseCalculus.ExpressionOperations
- InverseCalculus.ExpressionParameterChanges
- InverseCalculus.InverseTriangleData
- InverseCalculus.InverseTriangleExpressions
- InverseCalculus.InverseTriangleLift
- InverseCalculus.LiftedInverseExpressions
- InverseCalculus.LiftedInverseWitnesses
- InverseCalculus.NaturalTransformationCancellation
- InverseCalculus.NormalizedTriangles
- InverseCalculus.OneSidedInverseFibers
- InverseCalculus.PrimitiveInverses
- InverseCalculus.ProjectedRestriction
- InverseCalculus.PullbackInvertibility
- InverseCalculus.RetractionsReflectInverses
- InverseCalculus.UncurryingInvertibility
- InverseCalculus.UniversalInverseExpressions
- InvertibleExpressions
- InvertibleIdentifications
- IsomorphismEmbedding
- Isomorphisms
- NaturalIsomorphisms
- PullbackCalculus.IntersectionEmbedding
- PullbackCalculus.InversePullbackComparison
- PullbackCalculus.TwoStageFibers
- RezkAxiom
- RezkFibers
- RezkIdentification
- RezkRecovery
Complete compiler-highlighted source. Follow a symbol to its declaration.
# Inverse witnesses from triangles with constant long edge Move the constant long edge to the displayed endpoint of the given morphism. The other corners then determine the endpoint frames of its inverse. Constant-boundary naturality verifies the remaining corner. This construction needs neither Segal nor Rezk. ```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 Laws import SCT.VolumeI.Chapter02.Section01.WalkingMorphism as Walking import SCT.VolumeI.Chapter02.Section01.IntervalEndpoints as Endpoints module SCT.VolumeI.Chapter02.Section03.InverseCalculus.AbsoluteInverseTriangles {c m a : Level} (π― : Theory c m a) (M : Mapping.MappingAnimae π―) (β± : Categories.FunctorCategories π― M) (P : Laws.PullbackStructure π―) (I : Walking.WalkingMorphism π―) (E : Endpoints.IntervalEndpoints π― M β± P I) where open import SCT.VolumeI.Chapter02.Section03.Isomorphisms π― M β± P I E public open import SCT.VolumeI.Chapter02.Section01.DiagramCalculus.VertexTransport π― M β± P I E using (module ConstantBoundary) open import SCT.VolumeI.Chapter02.Section01.DiagramCalculus.DegenerateCocones π― M β± P I E using (triangle-edges; triangle-source; upper-edges) open import SCT.VolumeI.Chapter01.Section04.ProductCalculus.ProductAssociativity π― M using (cancel-inverse-tail) import SCT.VolumeI.Chapter01.Section03.ProductCalculus.PairingNaturality as PN open PN vocabulary terminal products productLaws composition vertical whiskering using (cancel-left) vertex-equation : {C : CAT} {u v p q z : Obj-abs C} (Ξ± : p =β z) (Ξ² : q =β z) (L : u =β p) (R : v =β q) (Ξ΄ : u =β v) β (Ξ± β L) =β (Ξ² β (R β Ξ΄)) β ((Ξ² β»ΒΉ β Ξ±) β L) =β (R β Ξ΄) vertex-equation Ξ± Ξ² L R Ξ΄ Ξ΅ = cancel-left Ξ² (R β Ξ΄) β (isoComp-cong (idIso (Ξ² β»ΒΉ)) Ξ΅ β isoComp-assoc-at (Ξ² β»ΒΉ) Ξ± L) module MoveConstant {C : CAT} {h : Mor C} {z y : Obj-abs C} (long : h =β const z) (Ο : z =β y) where comparison : h =β const y comparison = (Ο β· terminate [1]) β long endpoint : (i : Obj-abs [1]) β (constant-boundary i y β (comparison β· i)) =β (Ο β (constant-boundary i z β (long β· i))) endpoint i = isoComp-assoc-at Ο (constant-boundary i z) (long β· i) β (isoComp-cong (ConstantBoundary.natural Ο i) (idIso (long β· i)) β ((isoComp-assoc-at (constant-boundary i y) ((Ο β· terminate [1]) β· i) (long β· i)) β»ΒΉ β isoComp-cong (idIso (constant-boundary i y)) (preWhisker-isoComp-at (Ο β· terminate [1]) long i))) module Right {C : CAT} {x y z : Obj-abs C} (f : Morphism x y) (Ο : Triangle C) (Ξ² : (Ο β dβ) =β Morphism.diagram f) (long : (Ο β dβ) =β const z) where private module F = Morphism f middle = Cocone.match (coconePost Ο triangle-edges) source-corner = Cocone.match (coconePost Ο triangle-source) target-corner = Cocone.match (coconePost Ο upper-edges) target-value = (F.target-identification β (Ξ² β· one)) β target-corner β»ΒΉ long-target = constant-boundary one z β (long β· one) module Moved = MoveConstant long (target-value β long-target β»ΒΉ) source-value = constant-boundary zero y β (Moved.comparison β· zero) inverse-source = source-value β source-corner β»ΒΉ inverse-target = F.source-identification β ((Ξ² β· zero) β middle) inverse : Morphism y x inverse = record { diagram = Ο β dβ ; source-identification = inverse-source ; target-identification = inverse-target } private middle-equation : (inverse-target β (idIso (Ο β dβ) β· one)) =β (F.source-identification β ((Ξ² β· zero) β middle)) middle-equation = isoComp-unitΚ³-at inverse-target β isoComp-cong (idIso inverse-target) (preWhisker-idIso (Ο β dβ) one) source-equation : (constant-boundary zero y β (Moved.comparison β· zero)) =β (inverse-source β ((idIso (Ο β dβ) β· zero) β source-corner)) source-equation = (cancel-inverse-tail source-value source-corner β isoComp-cong (idIso inverse-source) (isoComp-unitΛ‘-at source-corner β isoComp-cong (preWhisker-idIso (Ο β dβ) zero) (idIso source-corner))) β»ΒΉ moved-target : (constant-boundary one y β (Moved.comparison β· one)) =β target-value moved-target = cancel-inverse-tail target-value long-target β Moved.endpoint one target-equation : (F.target-identification β (Ξ² β· one)) =β (constant-boundary one y β ((Moved.comparison β· one) β target-corner)) target-equation = (cancel-inverse-tail (F.target-identification β (Ξ² β· one)) target-corner β (isoComp-cong moved-target (idIso target-corner) β (isoComp-assoc-at (constant-boundary one y) (Moved.comparison β· one) target-corner) β»ΒΉ)) β»ΒΉ witness : CompositeWitness inverse f (identity-morphism y) witness = record { triangle = Ο ; first-edge = idIso (Ο β dβ) ; second-edge = Ξ² ; long-edge = Moved.comparison ; middle-vertex = vertex-equation inverse-target F.source-identification _ _ middle middle-equation ; source-vertex = vertex-equation (constant-boundary zero y) inverse-source _ _ source-corner source-equation ; target-vertex = vertex-equation F.target-identification (constant-boundary one y) _ _ target-corner target-equation } module Left {C : CAT} {x y z : Obj-abs C} (f : Morphism x y) (Ο : Triangle C) (Ξ± : (Ο β dβ) =β Morphism.diagram f) (long : (Ο β dβ) =β const z) where private module F = Morphism f middle = Cocone.match (coconePost Ο triangle-edges) source-corner = Cocone.match (coconePost Ο triangle-source) target-corner = Cocone.match (coconePost Ο upper-edges) source-value = (F.source-identification β (Ξ± β· zero)) β source-corner long-source = constant-boundary zero z β (long β· zero) module Moved = MoveConstant long (source-value β long-source β»ΒΉ) target-value = constant-boundary one x β (Moved.comparison β· one) inverse-source = (F.target-identification β (Ξ± β· one)) β middle β»ΒΉ inverse-target = target-value β target-corner inverse : Morphism y x inverse = record { diagram = Ο β dβ ; source-identification = inverse-source ; target-identification = inverse-target } private middle-equation : (F.target-identification β (Ξ± β· one)) =β (inverse-source β ((idIso (Ο β dβ) β· zero) β middle)) middle-equation = (cancel-inverse-tail (F.target-identification β (Ξ± β· one)) middle β isoComp-cong (idIso inverse-source) (isoComp-unitΛ‘-at middle β isoComp-cong (preWhisker-idIso (Ο β dβ) zero) (idIso middle))) β»ΒΉ source-equation : (constant-boundary zero x β (Moved.comparison β· zero)) =β (F.source-identification β ((Ξ± β· zero) β source-corner)) source-equation = isoComp-assoc-at F.source-identification (Ξ± β· zero) source-corner β (cancel-inverse-tail source-value long-source β Moved.endpoint zero) target-equation : (inverse-target β (idIso (Ο β dβ) β· one)) =β (constant-boundary one x β ((Moved.comparison β· one) β target-corner)) target-equation = isoComp-assoc-at (constant-boundary one x) (Moved.comparison β· one) target-corner β (isoComp-unitΚ³-at inverse-target β isoComp-cong (idIso inverse-target) (preWhisker-idIso (Ο β dβ) one)) witness : CompositeWitness f inverse (identity-morphism x) witness = record { triangle = Ο ; first-edge = Ξ± ; second-edge = idIso (Ο β dβ) ; long-edge = Moved.comparison ; middle-vertex = vertex-equation F.target-identification inverse-source _ _ middle middle-equation ; source-vertex = vertex-equation (constant-boundary zero x) F.source-identification _ _ source-corner source-equation ; target-vertex = vertex-equation inverse-target (constant-boundary one x) _ _ target-corner target-equation } ```