Other Agda modules in this section (24)
- ClosureCalculus.CompositionClosure
- ClosureCalculus.EmbeddingImageClosure
- ClosureCalculus.IsomorphismClosure
- GeneratedMorphisms
- IsomorphismCollections
- Lifting.CoconeLifting
- Lifting.CoproductLifting
- Lifting.EmbeddingLifting
- Lifting.EmbeddingRecognition
- Lifting.EndpointPullbacks
- Lifting.PresentationConsequences
- Lifting.TriangleLifting
- MappingCalculus.MappingAction
- MappingCalculus.MappingCommutation
- MappingCalculus.MappingPrecomposition
- MappingCalculus.MappingRestriction
- MappingCalculus.MappingSegal
- MorphismCollections
- RecoveringSubcategories
- Subcategories
- SubcategoryAxiom
- SubcategoryClosure
- SubcategoryEquivalences
- SubcategoryFunctoriality
Complete compiler-highlighted source. Follow a symbol to its declaration.
Explanation (AI-generated): Lifting a family from three restrictions
# Lifting a family at three specified points If an anima is presented by three points, a family on that anima lifts through a functor once its restrictions at the three points lift. We first glue the three restrictions using coproducts, then reflect along the specified equivalence. No pointwise choice principle is used. ```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.Section05.Coproducts as Coproducts module SCT.VolumeI.Chapter03.Section01.MappingCalculus.FiniteMappingLifts {c m a : Level} (π― : Theory c m a) (M : Mapping.MappingAnimae π―) (B : Coproducts.CoproductStructure π― M) where open import SCT.VolumeI.Chapter01.Section04.Setup π― open Mapping.MappingAnimae M open Coproducts.CoproductStructure B open import SCT.VolumeI.Chapter01.Section04.Functoriality π― M open import SCT.VolumeI.Chapter01.Section05.Copairing π― M B using (copair; copair-Ξ²β; copair-Ξ²β) open import SCT.VolumeI.Chapter03.Section01.Lifting.CoproductLifting π― M B using (mapPre-mapPost; lift-coproduct) open import SCT.VolumeI.Chapter01.Section04.Core π― M using (coreInclusion; core-of-anima; module CoreLift) open import SCT.VolumeI.Chapter02.Section01.EvaluationCalculus.CoreInclusions π― M using (coreInclusion-natural) retarget-lift : {Ξ X Y : CAT} {m : MAP X Y} {h k : MAP Ξ Y} β h =β k β FunctorLift m h β FunctorLift m k retarget-lift Ξ± l = record { lift = FunctorLift.lift l ; comparison = Ξ± β FunctorLift.comparison l } restriction-compose : {Ξ A B C D : CAT} (f : MAP A B) (g : MAP B C) (h : MAP Ξ (Map C D)) β (mapPre f β (mapPre g β h)) =β (mapPre (g β f) β h) restriction-compose f g h = (mapPre-comp f g β· h) β (comp-assoc h (mapPre g) (mapPre f)) β»ΒΉ module AlongEquivalence {Ξ K L X Y : CAT} (e : MAP K L) (ee : IsEquiv e) (m : MAP X Y) (h : MAP Ξ (Map L Y)) (restricted : FunctorLift (mapPost m) (mapPre e β h)) where chosen = equiv-lift (mapPre-isEquiv e ee) (FunctorLift.lift restricted) lift = FunctorLift.lift chosen comparison : (mapPost m β lift) =β h comparison = equiv-reflect (mapPre-isEquiv e ee) _ _ (FunctorLift.comparison restricted β ((mapPost m β FunctorLift.comparison chosen) β (comp-assoc lift (mapPre e) (mapPost m) β ((mapPre-mapPost e m β· lift) β (comp-assoc lift (mapPost m) (mapPre e)) β»ΒΉ)))) factorization : FunctorLift (mapPost m) h factorization = record { lift = lift ; comparison = comparison } module ThreePoints {K : CAT} (xβ xβ xβ : Obj-abs K) (points-isEquiv : IsEquiv (copair (copair xβ xβ) xβ)) where points = copair (copair xβ xβ) xβ module Lift {Ξ X Y : CAT} (m : MAP X Y) (h : MAP Ξ (Map K Y)) (atβ : FunctorLift (mapPost m) (mapPre xβ β h)) (atβ : FunctorLift (mapPost m) (mapPre xβ β h)) (atβ : FunctorLift (mapPost m) (mapPre xβ β h)) where whole = mapPre points β h firstTwo = mapPre inβ β whole firstTwo-comparison : firstTwo =β (mapPre (copair xβ xβ) β h) firstTwo-comparison = (mapPre-cong (copair-Ξ²β (copair xβ xβ) xβ) β· h) β restriction-compose inβ points h first-comparison : (mapPre inβ β firstTwo) =β (mapPre xβ β h) first-comparison = (mapPre-cong (copair-Ξ²β xβ xβ) β· h) β (restriction-compose inβ (copair xβ xβ) h β (mapPre inβ β firstTwo-comparison)) second-comparison : (mapPre inβ β firstTwo) =β (mapPre xβ β h) second-comparison = (mapPre-cong (copair-Ξ²β xβ xβ) β· h) β (restriction-compose inβ (copair xβ xβ) h β (mapPre inβ β firstTwo-comparison)) third-comparison : (mapPre inβ β whole) =β (mapPre xβ β h) third-comparison = (mapPre-cong (copair-Ξ²β (copair xβ xβ) xβ) β· h) β restriction-compose inβ points h restricted : FunctorLift (mapPost m) whole restricted = lift-coproduct m whole (lift-coproduct m firstTwo (retarget-lift (first-comparison β»ΒΉ) atβ) (retarget-lift (second-comparison β»ΒΉ) atβ)) (retarget-lift (third-comparison β»ΒΉ) atβ) factorization : FunctorLift (mapPost m) h factorization = AlongEquivalence.factorization points points-isEquiv m h restricted lift-three : {Ξ X Y : CAT} (m : MAP X Y) (h : MAP Ξ (Map K Y)) β FunctorLift (mapPost m) (mapPre xβ β h) β FunctorLift (mapPost m) (mapPre xβ β h) β FunctorLift (mapPost m) (mapPre xβ β h) β FunctorLift (mapPost m) h lift-three = Lift.factorization ``` At an individual point, lifting after the inclusion of the core suffices. The source is an anima, so the lift itself has a canonical core lift. ```agda lift-core-family : {Ξ X Y : CAT} (Ξ-an : isAn Ξ) (Y-an : isAn Y) (m : MAP X Y) (h : MAP Ξ (Map One Y)) β FunctorLift m (coreInclusion Y β h) β FunctorLift (mapPost m) h lift-core-family {Ξ} {X} {Y} Ξ-an Y-an m h l = record { lift = L.lift ; comparison = equiv-reflect (core-of-anima Y Y-an) _ _ (FunctorLift.comparison l β ((m β L.comparison) β (comp-assoc L.lift (coreInclusion X) m β ((coreInclusion-natural m β· L.lift) β (comp-assoc L.lift (mapPost m) (coreInclusion Y)) β»ΒΉ)))) } where module L = CoreLift Ξ-an (FunctorLift.lift l) using (lift; comparison) ```