Other Agda modules in this section (18)
- ElementaryYoneda
- Everything
- HomCalculus.ExpressionCancellation
- HomCalculus.FramedFiberImages
- HomCalculus.HomCompositionNaturality
- HomCalculus.HomCoordinates
- HomCalculus.HomFamilyPostcomposition
- HomCalculus.HomFiberPostcomposition
- HomCalculus.HomNormalization
- HomCalculus.HomOperations
- HomCalculus.HomPoints
- HomCalculus.HomPostcomposition
- HomCalculus.HomRestriction
- HomCalculus.PullbackEndpointFrames
- HomCalculus.PullbackFamilies
- HomComposition
- HomCompositionDetection
- HomCompositionEquivalences
Complete compiler-highlighted source. Follow a symbol to its declaration.
# Hom maps of a pullback The component maps in the fiber presentation become the literal hom-post functor on the left and hom-post followed by specified endpoint transport on the right. The endpoint transport retains the matching of the represented product family. Its identification with the original square's endpoint matching is a further computation. ```agda {-# OPTIONS --safe --without-K --lossy-unification #-} 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 module SCT.VolumeI.Chapter02.Section06.HomCalculus.PullbackHomMaps {c m a : Level} (π― : Theory c m a) (M : Mapping.MappingAnimae π―) (β± : Categories.FunctorCategories π― M) (P : Laws.PullbackStructure π―) (I : Walking.WalkingMorphism π―) where open import SCT.VolumeI.Chapter02.Section01.HomAndSlices π― M β± P I open import SCT.VolumeI.Chapter01.Section06.PullbackSquares π― P open import SCT.VolumeI.Chapter01.Section03.ProductCalculus.ProductPairing vocabulary terminal products productLaws composition vertical whiskering using (productMap-pair) open import SCT.VolumeI.Chapter01.Section06.PullbackFunctor π― P using (CospanMap) open import SCT.VolumeI.Chapter01.Section06.PullbackEquivalences π― P using (degenerate-pullback) import SCT.VolumeI.Chapter01.Section06.ConeCalculus.CospanPullbacks as Transport import SCT.VolumeI.Chapter02.Section06.HomCalculus.PullbackFamilies as Families import SCT.VolumeI.Chapter02.Section06.HomCalculus.HomFamilyPostcomposition as Images module At {C D E S : CAT} {f : MAP C E} {g : MAP D E} (s : Cone f g S) (es : IsPullback s) (x y : Obj-abs S) where open Families.At π― M β± P I s es x y public private module Left = Images.Along π― M β± P I f (p β x) (p β y) left-family-identification base-family-identification (idIso base-family) ((isoComp-unitΚ³-at base-family-identification) β»ΒΉ) using (comparison; prescribed; comparison-image; left-image; right-image) left-comparison : (base-equivalence β left-map) =β (hom-post f (p β x) (p β y) β left-equivalence) left-comparison = Left.comparison open Left public using () renaming (prescribed to left-prescribed; comparison-image to left-comparison-image; left-image to left-arrow-image; right-image to left-parameter-image) private right-pair = productMap-pair g g (q β x) (q β y) right-whisker = productMap g g β right-family-identification right-frame = right-pair β right-whisker matched-frame = base-family-identification β matching β»ΒΉ endpoint-identification : pair (g β (q β x)) (g β (q β y)) =β pair (f β (p β x)) (f β (p β y)) endpoint-identification = matched-frame β right-frame β»ΒΉ private triangle : ((endpoint-identification β right-pair) β right-whisker) =β matched-frame triangle = isoComp-unitΚ³-at matched-frame β (isoComp-cong (idIso matched-frame) (isoComp-inverseΛ‘-at right-frame) β (isoComp-assoc-at matched-frame (right-frame β»ΒΉ) right-frame β isoComp-assoc-at endpoint-identification right-pair right-whisker)) module Right = Images.Framed π― M β± P I g (q β x) (q β y) (f β (p β x)) (f β (p β y)) endpoint-identification right-family-identification base-family-identification (matching β»ΒΉ) triangle using (endpoint-transport; endpoint-transport-isEquiv; post-map; comparison; prescribed; comparison-image; left-image; right-image) open Right public using (endpoint-transport; endpoint-transport-isEquiv) renaming (post-map to right-hom-map) right-comparison : (base-equivalence β right-map) =β (right-hom-map β right-equivalence) right-comparison = Right.comparison open Right public using () renaming (prescribed to right-prescribed; comparison-image to right-comparison-image; left-image to right-arrow-image; right-image to right-parameter-image) hom-cospan : CospanMap left-map right-map (hom-post f (p β x) (p β y)) right-hom-map hom-cospan = record { left = left-equivalence ; right = right-equivalence ; base = base-equivalence ; leftSquare = left-comparison β»ΒΉ ; rightSquare = right-comparison β»ΒΉ } hom-cone : Cone (hom-post f (p β x) (p β y)) right-hom-map (Hom S x y) hom-cone = CospanMap.mapCone hom-cospan fiber-cone private module Transported = Transport.Mapped π― P hom-cospan (degenerate-pullback base-equivalence-isEquiv (Transport.rightSquareOf π― P hom-cospan) right-equivalence-isEquiv) fiber-cone fiber-cone-isPullback using (isPullback) hom-cone-isPullback : IsPullback hom-cone hom-cone-isPullback = Transported.isPullback left-equivalence-isEquiv ```