diff --git a/Makefile b/Makefile index 1c7fca38cc..43ebf857d9 100644 --- a/Makefile +++ b/Makefile @@ -14,7 +14,9 @@ else AGDA_MIN_HEAP ?= 4G endif -AGDARTS := +RTS -H$(AGDA_MIN_HEAP) -M6G -RTS +# Temporarily raise maximum heap size; should compile with the previous 6G +# before merging +AGDARTS := +RTS -H$(AGDA_MIN_HEAP) -M14G -RTS AGDAFILES := $(shell find src -name temp -prune -o -type f \( -name "*.lagda.md" -not -name "everything.lagda.md" \) -print) CONTRIBUTORS_FILE := CONTRIBUTORS.toml diff --git a/src/foundation-core/families-of-equivalences.lagda.md b/src/foundation-core/families-of-equivalences.lagda.md index a3578dcaaa..713a875d28 100644 --- a/src/foundation-core/families-of-equivalences.lagda.md +++ b/src/foundation-core/families-of-equivalences.lagda.md @@ -84,6 +84,24 @@ module _ is-equiv-map-fam-equiv x = is-equiv-map-equiv (e x) ``` +### Inverses of families of equivalences + +```agda +module _ + {l1 l2 l3 : Level} {A : UU l1} {P : A → UU l2} {Q : A → UU l3} + (e : fam-equiv P Q) + where + + inv-fam-equiv : fam-equiv Q P + inv-fam-equiv a = inv-equiv (e a) + + map-inv-fam-equiv : (a : A) → Q a → P a + map-inv-fam-equiv = map-fam-equiv inv-fam-equiv + + is-equiv-map-inv-fam-equiv : is-fiberwise-equiv map-inv-fam-equiv + is-equiv-map-inv-fam-equiv = is-equiv-map-fam-equiv inv-fam-equiv +``` + ## Properties ### Families of equivalences are equivalent to fiberwise equivalences diff --git a/src/foundation-core/transport-along-identifications.lagda.md b/src/foundation-core/transport-along-identifications.lagda.md index 49b511e7e0..1dda4c800f 100644 --- a/src/foundation-core/transport-along-identifications.lagda.md +++ b/src/foundation-core/transport-along-identifications.lagda.md @@ -68,6 +68,15 @@ module _ preserves-tr p x = inv (tr-ap id f p x) ∙ ap (λ q → tr B q (f i x)) (ap-id p) compute-preserves-tr refl x = refl + +module _ + {l1 l2 : Level} {I : UU l1} {A : I → UU l2} + where + + compute-preserves-tr-id : + {i j : I} (p : i = j) (x : A i) → + preserves-tr (λ i → id {A = A i}) p x = refl + compute-preserves-tr-id refl x = refl ``` ### Substitution law for transport diff --git a/src/foundation/commuting-squares-of-maps.lagda.md b/src/foundation/commuting-squares-of-maps.lagda.md index 347bb16120..57662665f2 100644 --- a/src/foundation/commuting-squares-of-maps.lagda.md +++ b/src/foundation/commuting-squares-of-maps.lagda.md @@ -13,7 +13,11 @@ open import foundation.action-on-identifications-binary-functions open import foundation.action-on-identifications-functions open import foundation.commuting-triangles-of-homotopies open import foundation.commuting-triangles-of-maps +open import foundation.dependent-pair-types +open import foundation.embeddings open import foundation.function-extensionality +open import foundation.functoriality-dependent-function-types +open import foundation.homotopies open import foundation.homotopy-algebra open import foundation.postcomposition-functions open import foundation.precomposition-functions @@ -27,7 +31,6 @@ open import foundation-core.commuting-squares-of-homotopies open import foundation-core.commuting-squares-of-identifications open import foundation-core.equivalences open import foundation-core.function-types -open import foundation-core.homotopies open import foundation-core.identity-types open import foundation-core.whiskering-identifications-concatenation ``` @@ -597,6 +600,58 @@ module _ ( sq-right-top ·r top-left)))) ``` +### Vertical pasting of a square with the right leg an equivalence is an equivalence + +```agda +module _ + {l1 l2 l3 l4 l5 l6 : Level} + {A : UU l1} {B : UU l2} {C : UU l3} {X : UU l4} {Y : UU l5} {Z : UU l6} + (top : A → X) (top-left : A → B) (top-right : X → Y) (mid : B → Y) + (bottom-left : B → C) (bottom-right : Y → Z) (bottom : C → Z) + (K : coherence-square-maps mid bottom-left bottom-right bottom) + (is-emb-bottom-right : is-emb bottom-right) + where + + is-equiv-pasting-vertical-coherence-square-maps : + is-equiv + ( λ H → + pasting-vertical-coherence-square-maps + ( top) + ( top-left) + ( top-right) + ( mid) + ( bottom-left) + ( bottom-right) + ( bottom) + ( H) + ( K)) + is-equiv-pasting-vertical-coherence-square-maps = + is-equiv-comp _ _ + ( is-equiv-map-Π-is-fiberwise-equiv (λ _ → is-emb-bottom-right _ _)) + ( is-equiv-concat-htpy (K ·r top-left) _) + + equiv-pasting-vertical-coherence-square-maps : + coherence-square-maps top top-left top-right mid ≃ + coherence-square-maps + ( top) + ( bottom-left ∘ top-left) + ( bottom-right ∘ top-right) + ( bottom) + pr1 equiv-pasting-vertical-coherence-square-maps H = + pasting-vertical-coherence-square-maps + ( top) + ( top-left) + ( top-right) + ( mid) + ( bottom-left) + ( bottom-right) + ( bottom) + ( H) + ( K) + pr2 equiv-pasting-vertical-coherence-square-maps = + is-equiv-pasting-vertical-coherence-square-maps +``` + ### Distributivity of pasting squares and transposing by precomposition Given two commuting squares which can be composed horizontally (vertically), we diff --git a/src/foundation/dependent-identifications.lagda.md b/src/foundation/dependent-identifications.lagda.md index 4a1da7c967..7267f431ab 100644 --- a/src/foundation/dependent-identifications.lagda.md +++ b/src/foundation/dependent-identifications.lagda.md @@ -116,14 +116,22 @@ module _ dependent-identification B p x' y' → dependent-identification B q y' z' → dependent-identification B (p ∙ q) x' z' - concat-dependent-identification refl q refl q' = q' + concat-dependent-identification refl q p' q' = ap (tr B q) p' ∙ q' compute-concat-dependent-identification-left-base-refl : { y z : A} (q : y = z) → { x' y' : B y} {z' : B z} (p' : x' = y') → ( q' : dependent-identification B q y' z') → concat-dependent-identification refl q p' q' = ap (tr B q) p' ∙ q' - compute-concat-dependent-identification-left-base-refl q refl q' = refl + compute-concat-dependent-identification-left-base-refl q p' q' = refl + + compute-concat-dependent-identification : + {x y z : A} (p : x = y) (q : y = z) → + {x' : B x} {y' : B y} {z' : B z} → + (p' : dependent-identification B p x' y') → + (q' : dependent-identification B q y' z') → + concat-dependent-identification p q p' q' = tr-concat p q x' ∙ ap (tr B q) p' ∙ q' + compute-concat-dependent-identification refl q p' q' = refl ``` #### Strictly right unital concatenation of dependent identifications diff --git a/src/foundation/families-of-equivalences.lagda.md b/src/foundation/families-of-equivalences.lagda.md index 3cfded46ff..f9b864e830 100644 --- a/src/foundation/families-of-equivalences.lagda.md +++ b/src/foundation/families-of-equivalences.lagda.md @@ -9,10 +9,13 @@ open import foundation-core.families-of-equivalences public
Imports ```agda +open import foundation.equality-dependent-function-types open import foundation.equivalences +open import foundation.univalence open import foundation.universe-levels open import foundation-core.propositions +open import foundation-core.torsorial-type-families ```
@@ -28,6 +31,19 @@ A **family of equivalences** is a family of [equivalences](foundation-core.equivalences.md). Families of equivalences are also called **fiberwise equivalences**. +## Definitions + +### The family of identity equivalences + +```agda +module _ + {l1 l2 : Level} {A : UU l1} {B : A → UU l2} + where + + id-fam-equiv : fam-equiv B B + id-fam-equiv a = id-equiv +``` + ## Properties ### Being a fiberwise equivalence is a proposition @@ -43,6 +59,22 @@ module _ is-prop-Π (λ a → is-property-is-equiv (f a)) ``` +### TODO + +```agda +module _ + {l1 l2 : Level} {A : UU l1} {B : A → UU l2} + where + + is-torsorial-fam-equiv : is-torsorial (fam-equiv B) + is-torsorial-fam-equiv = + is-torsorial-Eq-Π (λ a → is-torsorial-equiv (B a)) + + is-torsorial-fam-equiv' : is-torsorial (λ C → fam-equiv C B) + is-torsorial-fam-equiv' = + is-torsorial-Eq-Π (λ a → is-torsorial-equiv' (B a)) +``` + ## See also - In diff --git a/src/foundation/fiberwise-equivalence-induction.lagda.md b/src/foundation/fiberwise-equivalence-induction.lagda.md new file mode 100644 index 0000000000..51cc0a5577 --- /dev/null +++ b/src/foundation/fiberwise-equivalence-induction.lagda.md @@ -0,0 +1,119 @@ +# Fiberwise equivalence induction + +```agda +module foundation.fiberwise-equivalence-induction where +``` + +
Imports + +```agda +open import foundation.dependent-pair-types +open import foundation.equivalences +open import foundation.families-of-equivalences +open import foundation.identity-systems +open import foundation.identity-types +-- open import foundation.subuniverses +-- open import foundation.univalence +-- open import foundation.universal-property-identity-systems +open import foundation.universe-levels + +-- open import foundation-core.commuting-triangles-of-maps +-- open import foundation-core.contractible-maps +-- open import foundation-core.function-types +-- open import foundation-core.postcomposition-functions +-- open import foundation-core.sections +-- open import foundation-core.torsorial-type-families +``` + +
+ +## Idea + +## Definitions + +### Evaluation at the family of identity equivalences + +```agda +module _ + {l1 l2 l3 : Level} {A : UU l1} {P : A → UU l2} + (R : (Q : A → UU l2) → fam-equiv P Q → UU l3) + where + + ev-id-fam-equiv : + ((Q : A → UU l2) → (e : fam-equiv P Q) → R Q e) → + R P id-fam-equiv + ev-id-fam-equiv r = r P id-fam-equiv +``` + +### The induction principle of families of equivalences + +```agda +module _ + {l1 l2 : Level} {A : UU l1} (P : A → UU l2) + where + + induction-principle-fam-equiv : UUω + induction-principle-fam-equiv = + is-identity-system (λ (Q : A → UU l2) → fam-equiv P Q) P id-fam-equiv + + induction-principle-fam-equiv' : UUω + induction-principle-fam-equiv' = + is-identity-system (λ (Q : A → UU l2) → fam-equiv Q P) P id-fam-equiv +``` + +## Theorems + +### Induction on families of equivalences + +```agda +module _ + {l1 l2 : Level} {A : UU l1} {P : A → UU l2} + where + + abstract + is-identity-system-fam-equiv : induction-principle-fam-equiv P + is-identity-system-fam-equiv = + is-identity-system-is-torsorial P + ( id-fam-equiv) + ( is-torsorial-fam-equiv) + + is-identity-system-fam-equiv' : induction-principle-fam-equiv' P + is-identity-system-fam-equiv' = + is-identity-system-is-torsorial P + ( id-fam-equiv) + ( is-torsorial-fam-equiv') + +module _ + {l1 l2 l3 : Level} {A : UU l1} {P : A → UU l2} + (R : (Q : A → UU l2) → fam-equiv P Q → UU l3) + (r : R P id-fam-equiv) + where + + abstract + ind-fam-equiv : + {Q : A → UU l2} (e : fam-equiv P Q) → R Q e + ind-fam-equiv {Q = Q} e = + pr1 (is-identity-system-fam-equiv R) r Q e + + compute-ind-fam-equiv : + ind-fam-equiv id-fam-equiv = r + compute-ind-fam-equiv = + pr2 (is-identity-system-fam-equiv R) r + +module _ + {l1 l2 l3 : Level} {A : UU l1} {P : A → UU l2} + (R : (Q : A → UU l2) → fam-equiv Q P → UU l3) + (r : R P id-fam-equiv) + where + + abstract + ind-fam-equiv' : + {Q : A → UU l2} (e : fam-equiv Q P) → R Q e + ind-fam-equiv' {Q = Q} e = + pr1 (is-identity-system-fam-equiv' R) r Q e + + compute-ind-fam-equiv' : + ind-fam-equiv' id-fam-equiv = r + compute-ind-fam-equiv' = + pr2 (is-identity-system-fam-equiv' R) r +``` diff --git a/src/foundation/transposition-identifications-along-equivalences.lagda.md b/src/foundation/transposition-identifications-along-equivalences.lagda.md index ef7e0b1cc7..b7bd10a460 100644 --- a/src/foundation/transposition-identifications-along-equivalences.lagda.md +++ b/src/foundation/transposition-identifications-along-equivalences.lagda.md @@ -127,6 +127,11 @@ module _ {a : A} {b : B} → map-inv-equiv e b = a → b = map-equiv e a map-inv-eq-transpose-equiv-inv {a} {b} = map-inv-equiv (eq-transpose-equiv-inv a b) + + map-eq-transpose-equiv-inv' : + {a : A} {b : B} → b = map-equiv e a → map-inv-equiv e b = a + map-eq-transpose-equiv-inv' {a} {b} p = + ap (map-inv-equiv e) p ∙ is-retraction-map-inv-equiv e a ``` ## Properties @@ -155,6 +160,12 @@ module _ ( equiv-ap e _ _) ( ( right-unit) ∙ ( coherence-map-inv-equiv e _)) + + compute-refl-eq-transpose-equiv-inv' : + {x : A} → + map-eq-transpose-equiv-inv' e refl = is-retraction-map-inv-equiv e x + compute-refl-eq-transpose-equiv-inv' = + refl ``` ### The two definitions of transposing identifications along equivalences are homotopic diff --git a/src/synthetic-homotopy-theory.lagda.md b/src/synthetic-homotopy-theory.lagda.md index f05ba2976d..52b42811e2 100644 --- a/src/synthetic-homotopy-theory.lagda.md +++ b/src/synthetic-homotopy-theory.lagda.md @@ -51,6 +51,7 @@ open import synthetic-homotopy-theory.descent-circle-function-types public open import synthetic-homotopy-theory.descent-circle-subtypes public open import synthetic-homotopy-theory.descent-data-equivalence-types-over-pushouts public open import synthetic-homotopy-theory.descent-data-function-types-over-pushouts public +open import synthetic-homotopy-theory.descent-data-function-types-over-sequential-colimits public open import synthetic-homotopy-theory.descent-data-identity-types-over-pushouts public open import synthetic-homotopy-theory.descent-data-pushouts public open import synthetic-homotopy-theory.descent-data-sequential-colimits public @@ -72,6 +73,7 @@ open import synthetic-homotopy-theory.flattening-lemma-sequential-colimits publi open import synthetic-homotopy-theory.free-loops public open import synthetic-homotopy-theory.functoriality-loop-spaces public open import synthetic-homotopy-theory.functoriality-sequential-colimits public +open import synthetic-homotopy-theory.functoriality-stuff public open import synthetic-homotopy-theory.functoriality-suspensions public open import synthetic-homotopy-theory.groups-of-loops-in-1-types public open import synthetic-homotopy-theory.hatchers-acyclic-type public @@ -120,6 +122,7 @@ open import synthetic-homotopy-theory.smash-products-of-pointed-types public open import synthetic-homotopy-theory.spectra public open import synthetic-homotopy-theory.sphere-prespectrum public open import synthetic-homotopy-theory.spheres public +open import synthetic-homotopy-theory.stuff-over public open import synthetic-homotopy-theory.suspension-prespectra public open import synthetic-homotopy-theory.suspension-structures public open import synthetic-homotopy-theory.suspensions-of-pointed-types public @@ -139,5 +142,6 @@ open import synthetic-homotopy-theory.universal-property-sequential-colimits pub open import synthetic-homotopy-theory.universal-property-suspensions public open import synthetic-homotopy-theory.universal-property-suspensions-of-pointed-types public open import synthetic-homotopy-theory.wedges-of-pointed-types public +open import synthetic-homotopy-theory.zigzag-construction-identity-type-pushouts public open import synthetic-homotopy-theory.zigzags-sequential-diagrams public ``` diff --git a/src/synthetic-homotopy-theory/cocones-under-sequential-diagrams.lagda.md b/src/synthetic-homotopy-theory/cocones-under-sequential-diagrams.lagda.md index ca4adb47b0..c9bcd3532d 100644 --- a/src/synthetic-homotopy-theory/cocones-under-sequential-diagrams.lagda.md +++ b/src/synthetic-homotopy-theory/cocones-under-sequential-diagrams.lagda.md @@ -24,6 +24,7 @@ open import foundation.torsorial-type-families open import foundation.transport-along-identifications open import foundation.universe-levels open import foundation.whiskering-homotopies-composition +open import foundation.whiskering-homotopies-concatenation open import synthetic-homotopy-theory.dependent-sequential-diagrams open import synthetic-homotopy-theory.equifibered-sequential-diagrams @@ -208,6 +209,40 @@ module _ ( coherence-htpy-htpy-cocone-sequential-diagram K n) ``` +### Homotopies of homotopies of cocones under a sequential diagram + +```agda +module _ + {l1 l2 : Level} {A : sequential-diagram l1} {X : UU l2} + {c c' : cocone-sequential-diagram A X} + (H H' : htpy-cocone-sequential-diagram c c') + where + + coherence-htpy²-cocone-sequential-diagram : + ((n : ℕ) → + htpy-htpy-cocone-sequential-diagram H n ~ + htpy-htpy-cocone-sequential-diagram H' n) → + UU (l1 ⊔ l2) + coherence-htpy²-cocone-sequential-diagram α = + (n : ℕ) → + coherence-square-homotopies + ( left-whisker-concat-htpy + ( coherence-cocone-sequential-diagram c n) + ( α (succ-ℕ n) ·r map-sequential-diagram A n)) + ( coherence-htpy-htpy-cocone-sequential-diagram H n) + ( coherence-htpy-htpy-cocone-sequential-diagram H' n) + ( right-whisker-concat-htpy + ( α n) + ( coherence-cocone-sequential-diagram c' n)) + + htpy²-cocone-sequential-diagram : UU (l1 ⊔ l2) + htpy²-cocone-sequential-diagram = + Σ ( (n : ℕ) → + htpy-htpy-cocone-sequential-diagram H n ~ + htpy-htpy-cocone-sequential-diagram H' n) + ( coherence-htpy²-cocone-sequential-diagram) +``` + ### Postcomposing cocones under a sequential diagram with a map Given a cocone `c` with vertex `X` under `(A, a)` and a map `f : X → Y`, we may @@ -355,6 +390,60 @@ module _ map-inv-equiv (extensionality-cocone-sequential-diagram c') ``` +### Characterization of identity types of homotopies of cocones under sequential diagrams + +```agda +module _ + {l1 l2 : Level} {A : sequential-diagram l1} {X : UU l2} + {c c' : cocone-sequential-diagram A X} + (H : htpy-cocone-sequential-diagram c c') + where + + refl-htpy²-cocone-sequential-diagram : + htpy²-cocone-sequential-diagram H H + pr1 refl-htpy²-cocone-sequential-diagram n = refl-htpy + pr2 refl-htpy²-cocone-sequential-diagram n = right-unit-htpy + + htpy²-eq-cocone-sequential-diagram : + (H' : htpy-cocone-sequential-diagram c c') → + (H = H') → htpy²-cocone-sequential-diagram H H' + htpy²-eq-cocone-sequential-diagram .H refl = + refl-htpy²-cocone-sequential-diagram + + abstract + is-torsorial-htpy²-cocone-sequential-diagram : + is-torsorial (htpy²-cocone-sequential-diagram H) + is-torsorial-htpy²-cocone-sequential-diagram = + is-torsorial-Eq-structure + ( is-torsorial-binary-htpy (htpy-htpy-cocone-sequential-diagram H)) + ( htpy-htpy-cocone-sequential-diagram H , refl-binary-htpy _) + ( is-torsorial-binary-htpy + ( λ n → + coherence-htpy-htpy-cocone-sequential-diagram H n ∙h refl-htpy)) + + is-equiv-htpy²-eq-cocone-sequential-diagram : + (H' : htpy-cocone-sequential-diagram c c') → + is-equiv (htpy²-eq-cocone-sequential-diagram H') + is-equiv-htpy²-eq-cocone-sequential-diagram = + fundamental-theorem-id + ( is-torsorial-htpy²-cocone-sequential-diagram) + ( htpy²-eq-cocone-sequential-diagram) + + extensionality-htpy-eq-cocone-sequential-diagram : + (H' : htpy-cocone-sequential-diagram c c') → + (H = H') ≃ htpy²-cocone-sequential-diagram H H' + pr1 (extensionality-htpy-eq-cocone-sequential-diagram H') = + htpy²-eq-cocone-sequential-diagram H' + pr2 (extensionality-htpy-eq-cocone-sequential-diagram H') = + is-equiv-htpy²-eq-cocone-sequential-diagram H' + + eq-htpy²-cocone-sequential-diagram : + (H' : htpy-cocone-sequential-diagram c c') → + htpy²-cocone-sequential-diagram H H' → H = H' + eq-htpy²-cocone-sequential-diagram H' = + map-inv-equiv (extensionality-htpy-eq-cocone-sequential-diagram H') +``` + ### Postcomposing a cocone under a sequential diagram by identity is the identity ```agda diff --git a/src/synthetic-homotopy-theory/dependent-cocones-under-sequential-diagrams.lagda.md b/src/synthetic-homotopy-theory/dependent-cocones-under-sequential-diagrams.lagda.md index debb9262d7..95280a4e84 100644 --- a/src/synthetic-homotopy-theory/dependent-cocones-under-sequential-diagrams.lagda.md +++ b/src/synthetic-homotopy-theory/dependent-cocones-under-sequential-diagrams.lagda.md @@ -1,6 +1,7 @@ # Dependent cocones under sequential diagrams ```agda +{-# OPTIONS --allow-unsolved-metas #-} module synthetic-homotopy-theory.dependent-cocones-under-sequential-diagrams where ``` @@ -158,6 +159,37 @@ module _ coherence-htpy-htpy-dependent-cocone-sequential-diagram = pr2 H ``` +### Inversion of homotopies of dependent cocones under sequential diagrams + +```agda +module _ + {l1 l2 l3 : Level} {A : sequential-diagram l1} {X : UU l2} + {c : cocone-sequential-diagram A X} (P : X → UU l3) + {d d' : dependent-cocone-sequential-diagram c P} + (H : htpy-dependent-cocone-sequential-diagram P d d') + where + + inv-htpy-dependent-cocone-sequential-diagram : + htpy-dependent-cocone-sequential-diagram P d' d + inv-htpy-dependent-cocone-sequential-diagram = ? +``` + +### Concatenation of homotopies of dependent cocones under sequential diagrams + +```agda +module _ + {l1 l2 l3 : Level} {A : sequential-diagram l1} {X : UU l2} + {c : cocone-sequential-diagram A X} (P : X → UU l3) + {d d' d'' : dependent-cocone-sequential-diagram c P} + (H : htpy-dependent-cocone-sequential-diagram P d d') + (K : htpy-dependent-cocone-sequential-diagram P d' d'') + where + + concat-htpy-dependent-cocone-sequential-diagram : + htpy-dependent-cocone-sequential-diagram P d d'' + concat-htpy-dependent-cocone-sequential-diagram = {!!} +``` + ### Obtaining dependent cocones under sequential diagrams by postcomposing cocones under sequential diagrams with dependent maps Given a cocone `c` with vertex `X`, and a dependent map `h : (x : X) → P x`, we diff --git a/src/synthetic-homotopy-theory/dependent-universal-property-sequential-colimits.lagda.md b/src/synthetic-homotopy-theory/dependent-universal-property-sequential-colimits.lagda.md index 449c744b8e..e2607d3474 100644 --- a/src/synthetic-homotopy-theory/dependent-universal-property-sequential-colimits.lagda.md +++ b/src/synthetic-homotopy-theory/dependent-universal-property-sequential-colimits.lagda.md @@ -196,35 +196,36 @@ module _ ( c : cocone-sequential-diagram A X) where - universal-property-dependent-universal-property-sequential-colimit : - dependent-universal-property-sequential-colimit c → - universal-property-sequential-colimit c - universal-property-dependent-universal-property-sequential-colimit - ( dup-c) - ( Y) = - is-equiv-left-map-triangle - ( cocone-map-sequential-diagram c) - ( map-compute-dependent-cocone-sequential-diagram-constant-family Y) - ( dependent-cocone-map-sequential-diagram c (λ _ → Y)) - ( triangle-compute-dependent-cocone-sequential-diagram-constant-family - ( Y)) - ( dup-c (λ _ → Y)) - ( is-equiv-map-equiv - ( compute-dependent-cocone-sequential-diagram-constant-family Y)) - - dependent-universal-property-universal-property-sequential-colimit : - universal-property-sequential-colimit c → - dependent-universal-property-sequential-colimit c - dependent-universal-property-universal-property-sequential-colimit - ( up-sequential-diagram) = - dependent-universal-property-sequential-colimit-dependent-universal-property-coequalizer - ( c) - ( dependent-universal-property-universal-property-coequalizer - ( double-arrow-sequential-diagram A) - ( cofork-cocone-sequential-diagram c) - ( universal-property-coequalizer-universal-property-sequential-colimit - ( c) - ( up-sequential-diagram))) + abstract + universal-property-dependent-universal-property-sequential-colimit : + dependent-universal-property-sequential-colimit c → + universal-property-sequential-colimit c + universal-property-dependent-universal-property-sequential-colimit + ( dup-c) + ( Y) = + is-equiv-left-map-triangle + ( cocone-map-sequential-diagram c) + ( map-compute-dependent-cocone-sequential-diagram-constant-family Y) + ( dependent-cocone-map-sequential-diagram c (λ _ → Y)) + ( triangle-compute-dependent-cocone-sequential-diagram-constant-family + ( Y)) + ( dup-c (λ _ → Y)) + ( is-equiv-map-equiv + ( compute-dependent-cocone-sequential-diagram-constant-family Y)) + + dependent-universal-property-universal-property-sequential-colimit : + universal-property-sequential-colimit c → + dependent-universal-property-sequential-colimit c + dependent-universal-property-universal-property-sequential-colimit + ( up-sequential-diagram) = + dependent-universal-property-sequential-colimit-dependent-universal-property-coequalizer + ( c) + ( dependent-universal-property-universal-property-coequalizer + ( double-arrow-sequential-diagram A) + ( cofork-cocone-sequential-diagram c) + ( universal-property-coequalizer-universal-property-sequential-colimit + ( c) + ( up-sequential-diagram))) ``` ### The 3-for-2 property of the dependent universal property of sequential colimits diff --git a/src/synthetic-homotopy-theory/descent-data-function-types-over-sequential-colimits.lagda.md b/src/synthetic-homotopy-theory/descent-data-function-types-over-sequential-colimits.lagda.md new file mode 100644 index 0000000000..1a615a1cae --- /dev/null +++ b/src/synthetic-homotopy-theory/descent-data-function-types-over-sequential-colimits.lagda.md @@ -0,0 +1,91 @@ +# Descent data for type families of function types over sequential colimits + +```agda +{-# OPTIONS --lossy-unification --allow-unsolved-metas #-} + +module synthetic-homotopy-theory.descent-data-function-types-over-sequential-colimits where +``` + +
Imports + +```agda +-- open import foundation.commuting-squares-of-maps +-- open import foundation.commuting-triangles-of-maps +-- open import foundation.contractible-maps +-- open import foundation.contractible-types +open import foundation.dependent-pair-types +open import foundation.equivalences +-- open import foundation.fibers-of-maps +-- open import foundation.function-extensionality +-- open import foundation.function-types +-- open import foundation.functoriality-dependent-function-types +-- open import foundation.functoriality-dependent-pair-types +-- open import foundation.homotopies +-- open import foundation.homotopy-algebra +open import foundation.postcomposition-functions +-- open import foundation.transport-along-identifications +open import foundation.universal-property-equivalences +open import foundation.universe-levels +-- open import foundation.whiskering-homotopies-composition + +open import synthetic-homotopy-theory.cocones-under-sequential-diagrams +open import synthetic-homotopy-theory.descent-data-sequential-colimits +-- open import synthetic-homotopy-theory.equivalences-descent-data-pushouts +open import synthetic-homotopy-theory.families-descent-data-sequential-colimits +-- open import synthetic-homotopy-theory.morphisms-descent-data-pushouts +-- open import synthetic-homotopy-theory.sections-descent-data-pushouts +open import synthetic-homotopy-theory.sequential-diagrams +-- open import synthetic-homotopy-theory.universal-property-pushouts +``` + +## Idea + +## Definitions + +### TODO + +```agda +module _ + {l1 l2 l3 l4 l5 : Level} {A : sequential-diagram l1} + {X : UU l3} {c : cocone-sequential-diagram A X} + (P : family-with-descent-data-sequential-colimit c l4) + (Q : family-with-descent-data-sequential-colimit c l5) + where + + family-cocone-function-type-sequential-colimit : X → UU (l4 ⊔ l5) + family-cocone-function-type-sequential-colimit x = + family-cocone-family-with-descent-data-sequential-colimit P x → + family-cocone-family-with-descent-data-sequential-colimit Q x + + descent-data-function-type-sequential-colimit : + descent-data-sequential-colimit A (l4 ⊔ l5) + pr1 descent-data-function-type-sequential-colimit n a = + family-family-with-descent-data-sequential-colimit P n a → + family-family-with-descent-data-sequential-colimit Q n a + pr2 descent-data-function-type-sequential-colimit n a = + ( equiv-postcomp _ + ( equiv-family-family-with-descent-data-sequential-colimit Q n a)) ∘e + ( equiv-precomp + ( inv-equiv (equiv-family-family-with-descent-data-sequential-colimit P n a)) + ( _)) +``` + +## Properties + +```agda +module _ + {l1 l2 l3 l4 : Level} {A : sequential-diagram l1} + {X : UU l2} {c : cocone-sequential-diagram A X} + (P : family-with-descent-data-sequential-colimit c l3) + (Q : family-with-descent-data-sequential-colimit c l4) + where + + equiv-hom-descent-data-map-family-cocone-sequential-diagram : + ( (x : X) → + family-cocone-family-with-descent-data-sequential-colimit P x → + family-cocone-family-with-descent-data-sequential-colimit Q x) ≃ + ( hom-descent-data-sequential-colimit + ( descent-data-family-with-descent-data-sequential-colimit P) + ( descent-data-family-with-descent-data-sequential-colimit Q)) + equiv-hom-descent-data-map-family-cocone-sequential-diagram = {!!} +``` diff --git a/src/synthetic-homotopy-theory/descent-data-pushouts.lagda.md b/src/synthetic-homotopy-theory/descent-data-pushouts.lagda.md index 020d2dcefb..80fd5e1b19 100644 --- a/src/synthetic-homotopy-theory/descent-data-pushouts.lagda.md +++ b/src/synthetic-homotopy-theory/descent-data-pushouts.lagda.md @@ -106,6 +106,13 @@ module _ map-family-descent-data-pushout s = map-equiv (equiv-family-descent-data-pushout s) + inv-map-family-descent-data-pushout : + (s : spanning-type-span-diagram 𝒮) → + right-family-descent-data-pushout (right-map-span-diagram 𝒮 s) → + left-family-descent-data-pushout (left-map-span-diagram 𝒮 s) + inv-map-family-descent-data-pushout s = + map-inv-equiv (equiv-family-descent-data-pushout s) + is-equiv-map-family-descent-data-pushout : (s : spanning-type-span-diagram 𝒮) → is-equiv (map-family-descent-data-pushout s) diff --git a/src/synthetic-homotopy-theory/descent-data-sequential-colimits.lagda.md b/src/synthetic-homotopy-theory/descent-data-sequential-colimits.lagda.md index d498ebe3db..2114f82abb 100644 --- a/src/synthetic-homotopy-theory/descent-data-sequential-colimits.lagda.md +++ b/src/synthetic-homotopy-theory/descent-data-sequential-colimits.lagda.md @@ -180,6 +180,39 @@ module _ id-equiv-descent-data-sequential-colimit = id-equiv-dependent-sequential-diagram ( dependent-sequential-diagram-equifibered-sequential-diagram B) + +module _ + {l1 l2 l3 l4 : Level} {A : sequential-diagram l1} + (B : descent-data-sequential-colimit A l2) + (C : descent-data-sequential-colimit A l3) + (D : descent-data-sequential-colimit A l4) + (f : equiv-descent-data-sequential-colimit C D) + (e : equiv-descent-data-sequential-colimit B C) + where + + comp-equiv-descent-data-sequential-colimit : + equiv-descent-data-sequential-colimit B D + comp-equiv-descent-data-sequential-colimit = + comp-equiv-dependent-sequential-diagram + ( dependent-sequential-diagram-equifibered-sequential-diagram B) + ( dependent-sequential-diagram-equifibered-sequential-diagram C) + ( dependent-sequential-diagram-equifibered-sequential-diagram D) + ( f) + ( e) + +module _ + {l1 l2 l3 : Level} {A : sequential-diagram l1} + (B : descent-data-sequential-colimit A l2) + (C : descent-data-sequential-colimit A l3) + where + + inv-equiv-descent-data-sequential-colimit : + equiv-descent-data-sequential-colimit B C → + equiv-descent-data-sequential-colimit C B + inv-equiv-descent-data-sequential-colimit e = + inv-equiv-dependent-sequential-diagram + ( dependent-sequential-diagram-equifibered-sequential-diagram C) + ( e) ``` ### Descent data induced by families over cocones under sequential diagrams diff --git a/src/synthetic-homotopy-theory/descent-property-sequential-colimits.lagda.md b/src/synthetic-homotopy-theory/descent-property-sequential-colimits.lagda.md index 20b9c33dc7..c36ea4cad1 100644 --- a/src/synthetic-homotopy-theory/descent-property-sequential-colimits.lagda.md +++ b/src/synthetic-homotopy-theory/descent-property-sequential-colimits.lagda.md @@ -10,6 +10,7 @@ module synthetic-homotopy-theory.descent-property-sequential-colimits where open import elementary-number-theory.natural-numbers open import foundation.binary-homotopies +open import foundation.commuting-squares-of-maps open import foundation.commuting-triangles-of-maps open import foundation.dependent-pair-types open import foundation.equality-dependent-pair-types @@ -22,6 +23,7 @@ open import foundation.universe-levels open import synthetic-homotopy-theory.cocones-under-sequential-diagrams open import synthetic-homotopy-theory.descent-data-sequential-colimits +open import synthetic-homotopy-theory.families-descent-data-sequential-colimits open import synthetic-homotopy-theory.sequential-diagrams open import synthetic-homotopy-theory.universal-property-sequential-colimits ``` @@ -135,3 +137,213 @@ module _ map-inv-equiv ( equiv-descent-data-family-cocone-sequential-diagram) ``` + +```agda +open import synthetic-homotopy-theory.morphisms-sequential-diagrams +open import synthetic-homotopy-theory.morphisms-dependent-sequential-diagrams +open import synthetic-homotopy-theory.descent-data-function-types-over-sequential-colimits +open import foundation.action-on-identifications-functions +open import foundation.transport-along-higher-identifications +open import foundation.transport-along-identifications +open import foundation.function-types +open import foundation.whiskering-homotopies-composition +open import foundation.homotopies +module _ + {l1 l2 l3 l4 : Level} {A : UU l1} {B : UU l2} + {P : A → UU l3} {Q : B → UU l4} + (f : A → B) (h : (a : A) → P a → Q (f a)) + where + + other-nat-lemma : + {x y : A} (p : x = y) (q : f x = f y) (α : ap f p = q) → + (z : P x) → + tr Q q (h x z) = h y (tr P p z) + other-nat-lemma p q α z = + inv (preserves-tr h p z ∙ (inv (substitution-law-tr Q f p) ∙ tr² Q α _)) +module _ + {l1 l2 l3 l4 l5 l6 : Level} + {A : sequential-diagram l1} {B : sequential-diagram l2} + {X : UU l3} {c : cocone-sequential-diagram A X} + {Y : UU l4} {c' : cocone-sequential-diagram B Y} + (P : family-with-descent-data-sequential-colimit c l5) + (Q : family-with-descent-data-sequential-colimit c' l6) + (f : hom-sequential-diagram A B) + (f∞ : X → Y) + (C : + (n : ℕ) → + coherence-square-maps + ( map-hom-sequential-diagram B f n) + ( map-cocone-sequential-diagram c n) + ( map-cocone-sequential-diagram c' n) + ( f∞)) + (α : + (n : ℕ) → + ( (f∞ ·l (coherence-cocone-sequential-diagram c n)) ∙h + ( C (succ-ℕ n) ·r map-sequential-diagram A n)) ~ + ( ( C n) ∙h + ( coherence-cocone-sequential-diagram c' n ·r (map-hom-sequential-diagram B f n)) ∙h + ( map-cocone-sequential-diagram c' (succ-ℕ n) ·l naturality-map-hom-sequential-diagram B f n))) + where + + dd-alt-pullback : descent-data-sequential-colimit A l6 + pr1 dd-alt-pullback n a = + family-cocone-family-with-descent-data-sequential-colimit Q + ( map-cocone-sequential-diagram c' n + ( map-hom-sequential-diagram B f n a)) + pr2 dd-alt-pullback n a = + equiv-tr + ( family-cocone-family-with-descent-data-sequential-colimit Q) + ( ap + ( map-cocone-sequential-diagram c' (succ-ℕ n)) + ( naturality-map-hom-sequential-diagram B f n a)) ∘e + equiv-tr + ( family-cocone-family-with-descent-data-sequential-colimit Q) + ( coherence-cocone-sequential-diagram c' n + ( map-hom-sequential-diagram B f n a)) + + dd-alt-precomp : descent-data-sequential-colimit A l6 + pr1 dd-alt-precomp n a = + family-family-with-descent-data-sequential-colimit Q n + ( map-hom-sequential-diagram B f n a) + pr2 dd-alt-precomp n a = + ( equiv-tr + ( family-family-with-descent-data-sequential-colimit Q (succ-ℕ n)) + ( naturality-map-hom-sequential-diagram B f n a)) ∘e + ( equiv-family-family-with-descent-data-sequential-colimit Q n + ( map-hom-sequential-diagram B f n a)) + + equiv-dd-foo : + equiv-descent-data-sequential-colimit + ( descent-data-family-cocone-sequential-diagram c + ( family-cocone-family-with-descent-data-sequential-colimit Q ∘ f∞)) + ( dd-alt-pullback) + pr1 equiv-dd-foo n a = + equiv-tr + ( family-cocone-family-with-descent-data-sequential-colimit Q) + ( C n a) + pr2 equiv-dd-foo n a q = + ( ap + ( tr (family-cocone-family-with-descent-data-sequential-colimit Q) (C (succ-ℕ n) (map-sequential-diagram A n a))) + ( inv + ( substitution-law-tr + ( family-cocone-family-with-descent-data-sequential-colimit Q) + ( f∞) + ( coherence-cocone-sequential-diagram c n a)))) ∙ + ( inv + ( tr-concat + ( ap f∞ (coherence-cocone-sequential-diagram c n a)) + ( C (succ-ℕ n) (map-sequential-diagram A n a)) + ( q))) ∙ + ( tr² + ( family-cocone-family-with-descent-data-sequential-colimit Q) + ( α n a) + ( q)) ∙ + ( tr-concat (C n a ∙ pr2 c' n (pr1 f n a)) _ q) ∙ + ap + ( tr (family-cocone-family-with-descent-data-sequential-colimit Q) (ap (pr1 c' (succ-ℕ n)) (pr2 f n a))) + ( tr-concat (C n a) (pr2 c' n (pr1 f n a)) q) + + private + inv-equiv-e : + equiv-descent-data-sequential-colimit + ( descent-data-family-cocone-sequential-diagram c' + ( family-cocone-family-with-descent-data-sequential-colimit Q)) + ( descent-data-family-with-descent-data-sequential-colimit Q) + inv-equiv-e = + inv-equiv-descent-data-sequential-colimit + ( descent-data-family-with-descent-data-sequential-colimit Q) + ( descent-data-family-cocone-sequential-diagram c' + ( family-cocone-family-with-descent-data-sequential-colimit Q)) + ( equiv-descent-data-family-with-descent-data-sequential-colimit Q) + + equiv-equiv-dd-foo' : (n : ℕ) (b : family-sequential-diagram B n) → + ( family-cocone-family-with-descent-data-sequential-colimit Q + ( map-cocone-sequential-diagram c' n b)) ≃ + ( family-family-with-descent-data-sequential-colimit Q n b) + equiv-equiv-dd-foo' = + equiv-equiv-descent-data-sequential-colimit + ( descent-data-family-cocone-sequential-diagram c' + ( family-cocone-family-with-descent-data-sequential-colimit Q)) + ( descent-data-family-with-descent-data-sequential-colimit Q) + ( inv-equiv-e) + + equiv-dd-foo' : + equiv-descent-data-sequential-colimit + ( dd-alt-pullback) + ( dd-alt-precomp) + pr1 equiv-dd-foo' n a = + equiv-equiv-dd-foo' n (map-hom-sequential-diagram B f n a) + pr2 equiv-dd-foo' n a = + pasting-vertical-coherence-square-maps + ( map-equiv (equiv-equiv-dd-foo' n (map-hom-sequential-diagram B f n a))) + ( tr + ( family-cocone-family-with-descent-data-sequential-colimit Q) + ( pr2 c' n (pr1 f n a))) + ( map-family-family-with-descent-data-sequential-colimit Q n (map-hom-sequential-diagram B f n a)) + ( map-equiv + ( equiv-equiv-dd-foo' + ( succ-ℕ n) + ( map-sequential-diagram B n (map-hom-sequential-diagram B f n a)))) + ( tr + ( family-cocone-family-with-descent-data-sequential-colimit Q) + ( ap (map-cocone-sequential-diagram c' (succ-ℕ n)) (pr2 f n a))) + ( tr + ( family-family-with-descent-data-sequential-colimit Q (succ-ℕ n)) + ( pr2 f n a)) + ( map-equiv + ( equiv-equiv-dd-foo' + ( succ-ℕ n) + ( map-hom-sequential-diagram B f (succ-ℕ n) (map-sequential-diagram A n a)))) + ( coh-equiv-descent-data-sequential-colimit + ( descent-data-family-cocone-sequential-diagram c' + ( family-cocone-family-with-descent-data-sequential-colimit Q)) + ( descent-data-family-with-descent-data-sequential-colimit Q) + ( inv-equiv-e) + ( n) + ( map-hom-sequential-diagram B f n a)) + ( ( ( map-equiv + ( equiv-equiv-dd-foo' + ( succ-ℕ n) + ( map-hom-sequential-diagram B f + ( succ-ℕ n) + ( map-sequential-diagram A n a)))) ·l + ( λ z → + substitution-law-tr + ( family-cocone-family-with-descent-data-sequential-colimit Q) + ( map-cocone-sequential-diagram c' (succ-ℕ n)) + ( naturality-map-hom-sequential-diagram B f n a) {z})) ∙h + ( inv-htpy + ( other-nat-lemma id + ( λ b → map-equiv (equiv-equiv-dd-foo' (succ-ℕ n) b)) + ( pr2 f n a) + ( pr2 f n a) + ( ap-id (pr2 f n a))))) + + hom-over-map-over : + ( (x : X) → + family-cocone-family-with-descent-data-sequential-colimit P x → + family-cocone-family-with-descent-data-sequential-colimit Q (f∞ x)) ≃ + ( hom-dependent-sequential-diagram-over + ( dependent-sequential-diagram-family-with-descent-data-sequential-colimit P) + ( dependent-sequential-diagram-family-with-descent-data-sequential-colimit Q) + ( f)) + hom-over-map-over = + ( equiv-tot + ( λ g → + equiv-Π-equiv-family + ( λ n → equiv-Π-equiv-family (λ a → equiv-inv-htpy _ _)))) ∘e + ( equiv-hom-descent-data-map-family-cocone-sequential-diagram P + ( family-cocone-family-with-descent-data-sequential-colimit Q ∘ f∞ , + dd-alt-precomp , + inv-equiv-descent-data-sequential-colimit + ( descent-data-family-cocone-sequential-diagram c + ( family-cocone-family-with-descent-data-sequential-colimit Q ∘ f∞)) + ( dd-alt-precomp) + ( comp-equiv-descent-data-sequential-colimit + ( descent-data-family-cocone-sequential-diagram c + ( family-cocone-family-with-descent-data-sequential-colimit Q ∘ f∞)) + ( dd-alt-pullback) + ( dd-alt-precomp) + ( equiv-dd-foo') + ( equiv-dd-foo)))) +``` diff --git a/src/synthetic-homotopy-theory/equivalences-dependent-sequential-diagrams.lagda.md b/src/synthetic-homotopy-theory/equivalences-dependent-sequential-diagrams.lagda.md index 54b42eb7ca..e1a86f6c42 100644 --- a/src/synthetic-homotopy-theory/equivalences-dependent-sequential-diagrams.lagda.md +++ b/src/synthetic-homotopy-theory/equivalences-dependent-sequential-diagrams.lagda.md @@ -166,7 +166,7 @@ module _ is-equiv-map-equiv-dependent-sequential-diagram C e ``` -### The identity equivalence of sequential diagrams +### The identity equivalence of dependent sequential diagrams ```agda module _ @@ -179,6 +179,61 @@ module _ pr2 id-equiv-dependent-sequential-diagram n a = refl-htpy ``` +### Composition of equivalences of dependent sequential diagrams + +```agda +module _ + {l1 l2 l3 l4 : Level} {A : sequential-diagram l1} + (B : dependent-sequential-diagram A l2) + (C : dependent-sequential-diagram A l3) + (D : dependent-sequential-diagram A l4) + (f : equiv-dependent-sequential-diagram C D) + (e : equiv-dependent-sequential-diagram B C) + where + + comp-equiv-dependent-sequential-diagram : + equiv-dependent-sequential-diagram B D + pr1 comp-equiv-dependent-sequential-diagram n a = + equiv-equiv-dependent-sequential-diagram D f n a ∘e + equiv-equiv-dependent-sequential-diagram C e n a + pr2 comp-equiv-dependent-sequential-diagram n a = + pasting-horizontal-coherence-square-maps + ( map-equiv-dependent-sequential-diagram C e n a) + ( map-equiv-dependent-sequential-diagram D f n a) + ( map-dependent-sequential-diagram B n a) + ( map-dependent-sequential-diagram C n a) + ( map-dependent-sequential-diagram D n a) + ( map-equiv-dependent-sequential-diagram C e (succ-ℕ n) (map-sequential-diagram A n a)) + ( map-equiv-dependent-sequential-diagram D f (succ-ℕ n) (map-sequential-diagram A n a)) + ( coh-equiv-dependent-sequential-diagram C e n a) + ( coh-equiv-dependent-sequential-diagram D f n a) +``` + +### The inverse of an equivalence of dependent sequential diagrams + +```agda +module _ + {l1 l2 l3 : Level} {A : sequential-diagram l1} + {B : dependent-sequential-diagram A l2} + (C : dependent-sequential-diagram A l3) + where + + inv-equiv-dependent-sequential-diagram : + equiv-dependent-sequential-diagram B C → + equiv-dependent-sequential-diagram C B + pr1 (inv-equiv-dependent-sequential-diagram e) n a = + inv-equiv (equiv-equiv-dependent-sequential-diagram C e n a) + pr2 (inv-equiv-dependent-sequential-diagram e) n a = + horizontal-inv-equiv-coherence-square-maps + ( equiv-equiv-dependent-sequential-diagram C e n a) + ( map-dependent-sequential-diagram B n a) + ( map-dependent-sequential-diagram C n a) + ( equiv-equiv-dependent-sequential-diagram C e + ( succ-ℕ n) + ( map-sequential-diagram A n a)) + ( coh-equiv-dependent-sequential-diagram C e n a) +``` + ## Properties ### Morphisms of dependent sequential diagrams which are equivalences are equivalences of dependent sequential diagrams diff --git a/src/synthetic-homotopy-theory/families-descent-data-sequential-colimits.lagda.md b/src/synthetic-homotopy-theory/families-descent-data-sequential-colimits.lagda.md index 4343695a69..560da28e46 100644 --- a/src/synthetic-homotopy-theory/families-descent-data-sequential-colimits.lagda.md +++ b/src/synthetic-homotopy-theory/families-descent-data-sequential-colimits.lagda.md @@ -32,7 +32,7 @@ the type of type families over is [equivalent](foundation-core.equivalences.md) to [descent data](synthetic-homotopy-theory.descent-data-sequential-colimits.md). -Sometimes it is useful to consider tripes `(P, B, e)` where `P : X → 𝒰` is a +Sometimes it is useful to consider triples `(P, B, e)` where `P : X → 𝒰` is a type family, `B` is descent data, and `e` is an equivalence between `B` and the descent data induced by `P`. The type of such pairs `(B, e)` is [contractible](foundation-core.contractible-types.md), so the type of these diff --git a/src/synthetic-homotopy-theory/flattening-lemma-sequential-colimits.lagda.md b/src/synthetic-homotopy-theory/flattening-lemma-sequential-colimits.lagda.md index 1e014f974d..316040ccfa 100644 --- a/src/synthetic-homotopy-theory/flattening-lemma-sequential-colimits.lagda.md +++ b/src/synthetic-homotopy-theory/flattening-lemma-sequential-colimits.lagda.md @@ -21,7 +21,6 @@ open import foundation.whiskering-homotopies-composition open import synthetic-homotopy-theory.cocones-under-sequential-diagrams open import synthetic-homotopy-theory.coforks open import synthetic-homotopy-theory.coforks-cocones-under-sequential-diagrams -open import synthetic-homotopy-theory.dependent-universal-property-sequential-colimits open import synthetic-homotopy-theory.equivalences-coforks-under-equivalences-double-arrows open import synthetic-homotopy-theory.families-descent-data-sequential-colimits open import synthetic-homotopy-theory.flattening-lemma-coequalizers diff --git a/src/synthetic-homotopy-theory/functoriality-sequential-colimits.lagda.md b/src/synthetic-homotopy-theory/functoriality-sequential-colimits.lagda.md index e978bc0554..32812f6747 100644 --- a/src/synthetic-homotopy-theory/functoriality-sequential-colimits.lagda.md +++ b/src/synthetic-homotopy-theory/functoriality-sequential-colimits.lagda.md @@ -125,7 +125,7 @@ This homotopy of cocones provides Aₙ ---------> X | | | | ∨ | - fₙ | Bₙ₊₁ | g + fₙ | Bₙ₊₁ | f∞ | ∧ \ | | / \ | ∨/ ∨∨ @@ -146,87 +146,88 @@ module _ ( f : hom-sequential-diagram A B) where - map-sequential-colimit-hom-sequential-diagram : X → Y - map-sequential-colimit-hom-sequential-diagram = - map-universal-property-sequential-colimit up-c - ( map-cocone-hom-sequential-diagram f c') - - htpy-cocone-map-sequential-colimit-hom-sequential-diagram : - htpy-cocone-sequential-diagram - ( cocone-map-sequential-diagram c - ( map-sequential-colimit-hom-sequential-diagram)) - ( map-cocone-hom-sequential-diagram f c') - htpy-cocone-map-sequential-colimit-hom-sequential-diagram = - htpy-cocone-universal-property-sequential-colimit up-c - ( map-cocone-hom-sequential-diagram f c') - - htpy-htpy-cocone-map-sequential-colimit-hom-sequential-diagram : - ( n : ℕ) → - coherence-square-maps - ( map-hom-sequential-diagram B f n) - ( map-cocone-sequential-diagram c n) - ( map-cocone-sequential-diagram c' n) - ( map-sequential-colimit-hom-sequential-diagram) - htpy-htpy-cocone-map-sequential-colimit-hom-sequential-diagram = - htpy-htpy-cocone-sequential-diagram - ( htpy-cocone-map-sequential-colimit-hom-sequential-diagram) + opaque + map-sequential-colimit-hom-sequential-diagram : X → Y + map-sequential-colimit-hom-sequential-diagram = + map-universal-property-sequential-colimit up-c + ( map-cocone-hom-sequential-diagram f c') - coherence-htpy-cocone-map-sequential-colimit-hom-sequential-diagram : - ( n : ℕ) → - coherence-square-homotopies - ( htpy-htpy-cocone-map-sequential-colimit-hom-sequential-diagram n) - ( ( map-sequential-colimit-hom-sequential-diagram) ·l - ( coherence-cocone-sequential-diagram c n)) - ( coherence-cocone-sequential-diagram + htpy-cocone-map-sequential-colimit-hom-sequential-diagram : + htpy-cocone-sequential-diagram + ( cocone-map-sequential-diagram c + ( map-sequential-colimit-hom-sequential-diagram)) + ( map-cocone-hom-sequential-diagram f c') + htpy-cocone-map-sequential-colimit-hom-sequential-diagram = + htpy-cocone-universal-property-sequential-colimit up-c ( map-cocone-hom-sequential-diagram f c') - ( n)) - ( ( htpy-htpy-cocone-map-sequential-colimit-hom-sequential-diagram - ( succ-ℕ n)) ·r - ( map-sequential-diagram A n)) - coherence-htpy-cocone-map-sequential-colimit-hom-sequential-diagram = - coherence-htpy-htpy-cocone-sequential-diagram - htpy-cocone-map-sequential-colimit-hom-sequential-diagram - prism-htpy-cocone-map-sequential-colimit-hom-sequential-diagram : - ( n : ℕ) → - vertical-coherence-prism-maps - ( map-cocone-sequential-diagram c n) - ( map-cocone-sequential-diagram c (succ-ℕ n)) - ( map-sequential-diagram A n) - ( map-cocone-sequential-diagram c' n) - ( map-cocone-sequential-diagram c' (succ-ℕ n)) - ( map-sequential-diagram B n) - ( map-hom-sequential-diagram B f n) - ( map-hom-sequential-diagram B f (succ-ℕ n)) - ( map-sequential-colimit-hom-sequential-diagram) - ( coherence-cocone-sequential-diagram c n) - ( inv-htpy - ( htpy-htpy-cocone-map-sequential-colimit-hom-sequential-diagram n)) - ( inv-htpy + htpy-htpy-cocone-map-sequential-colimit-hom-sequential-diagram : + ( n : ℕ) → + coherence-square-maps + ( map-hom-sequential-diagram B f n) + ( map-cocone-sequential-diagram c n) + ( map-cocone-sequential-diagram c' n) + ( map-sequential-colimit-hom-sequential-diagram) + htpy-htpy-cocone-map-sequential-colimit-hom-sequential-diagram = + htpy-htpy-cocone-sequential-diagram + ( htpy-cocone-map-sequential-colimit-hom-sequential-diagram) + + coherence-htpy-cocone-map-sequential-colimit-hom-sequential-diagram : + ( n : ℕ) → + coherence-square-homotopies + ( htpy-htpy-cocone-map-sequential-colimit-hom-sequential-diagram n) + ( ( map-sequential-colimit-hom-sequential-diagram) ·l + ( coherence-cocone-sequential-diagram c n)) + ( coherence-cocone-sequential-diagram + ( map-cocone-hom-sequential-diagram f c') + ( n)) + ( ( htpy-htpy-cocone-map-sequential-colimit-hom-sequential-diagram + ( succ-ℕ n)) ·r + ( map-sequential-diagram A n)) + coherence-htpy-cocone-map-sequential-colimit-hom-sequential-diagram = + coherence-htpy-htpy-cocone-sequential-diagram + htpy-cocone-map-sequential-colimit-hom-sequential-diagram + + prism-htpy-cocone-map-sequential-colimit-hom-sequential-diagram : + ( n : ℕ) → + vertical-coherence-prism-maps + ( map-cocone-sequential-diagram c n) + ( map-cocone-sequential-diagram c (succ-ℕ n)) + ( map-sequential-diagram A n) + ( map-cocone-sequential-diagram c' n) + ( map-cocone-sequential-diagram c' (succ-ℕ n)) + ( map-sequential-diagram B n) + ( map-hom-sequential-diagram B f n) + ( map-hom-sequential-diagram B f (succ-ℕ n)) + ( map-sequential-colimit-hom-sequential-diagram) + ( coherence-cocone-sequential-diagram c n) + ( inv-htpy + ( htpy-htpy-cocone-map-sequential-colimit-hom-sequential-diagram n)) + ( inv-htpy + ( htpy-htpy-cocone-map-sequential-colimit-hom-sequential-diagram + ( succ-ℕ n))) + ( naturality-map-hom-sequential-diagram B f n) + ( coherence-cocone-sequential-diagram c' n) + prism-htpy-cocone-map-sequential-colimit-hom-sequential-diagram n = + rotate-vertical-coherence-prism-maps + ( map-cocone-sequential-diagram c n) + ( map-cocone-sequential-diagram c (succ-ℕ n)) + ( map-sequential-diagram A n) + ( map-cocone-sequential-diagram c' n) + ( map-cocone-sequential-diagram c' (succ-ℕ n)) + ( map-sequential-diagram B n) + ( map-hom-sequential-diagram B f n) + ( map-hom-sequential-diagram B f (succ-ℕ n)) + ( map-sequential-colimit-hom-sequential-diagram) + ( coherence-cocone-sequential-diagram c n) + ( htpy-htpy-cocone-map-sequential-colimit-hom-sequential-diagram n) ( htpy-htpy-cocone-map-sequential-colimit-hom-sequential-diagram - ( succ-ℕ n))) - ( naturality-map-hom-sequential-diagram B f n) - ( coherence-cocone-sequential-diagram c' n) - prism-htpy-cocone-map-sequential-colimit-hom-sequential-diagram n = - rotate-vertical-coherence-prism-maps - ( map-cocone-sequential-diagram c n) - ( map-cocone-sequential-diagram c (succ-ℕ n)) - ( map-sequential-diagram A n) - ( map-cocone-sequential-diagram c' n) - ( map-cocone-sequential-diagram c' (succ-ℕ n)) - ( map-sequential-diagram B n) - ( map-hom-sequential-diagram B f n) - ( map-hom-sequential-diagram B f (succ-ℕ n)) - ( map-sequential-colimit-hom-sequential-diagram) - ( coherence-cocone-sequential-diagram c n) - ( htpy-htpy-cocone-map-sequential-colimit-hom-sequential-diagram n) - ( htpy-htpy-cocone-map-sequential-colimit-hom-sequential-diagram - ( succ-ℕ n)) - ( naturality-map-hom-sequential-diagram B f n) - ( coherence-cocone-sequential-diagram c' n) - ( inv-htpy - ( coherence-htpy-cocone-map-sequential-colimit-hom-sequential-diagram - ( n))) + ( succ-ℕ n)) + ( naturality-map-hom-sequential-diagram B f n) + ( coherence-cocone-sequential-diagram c' n) + ( inv-htpy + ( coherence-htpy-cocone-map-sequential-colimit-hom-sequential-diagram + ( n))) ``` ### Homotopies between morphisms of sequential diagrams induce homotopies of corresponding maps between sequential colimits diff --git a/src/synthetic-homotopy-theory/functoriality-stuff.lagda.md b/src/synthetic-homotopy-theory/functoriality-stuff.lagda.md new file mode 100644 index 0000000000..d4d462cd77 --- /dev/null +++ b/src/synthetic-homotopy-theory/functoriality-stuff.lagda.md @@ -0,0 +1,2189 @@ +# Functoriality stuff + +```agda +{-# OPTIONS --lossy-unification #-} + +module synthetic-homotopy-theory.functoriality-stuff where +``` + +
Imports + +```agda +open import elementary-number-theory.natural-numbers + +open import foundation.action-on-identifications-binary-functions +open import foundation.action-on-identifications-dependent-functions +open import foundation.action-on-identifications-functions +-- open import foundation.binary-homotopies +open import foundation.commuting-squares-of-identifications +open import foundation.commuting-squares-of-maps +open import foundation.commuting-triangles-of-identifications +open import foundation.commuting-triangles-of-maps +-- open import foundation.dependent-identifications +open import foundation.dependent-pair-types +open import foundation.embeddings +open import foundation.equality-dependent-pair-types +open import foundation.equivalences +open import foundation.families-of-equivalences +open import foundation.fiberwise-equivalence-induction +open import foundation.function-extensionality +open import foundation.function-types +open import foundation.functoriality-dependent-function-types +open import foundation.functoriality-dependent-pair-types +open import foundation.homotopies +-- open import foundation.homotopy-induction +open import foundation.identity-types +open import foundation.implicit-function-types +open import foundation.postcomposition-functions +open import foundation.precomposition-dependent-functions +open import foundation.transport-along-identifications +-- open import foundation.transposition-identifications-along-equivalences +open import foundation.universal-property-equivalences +open import foundation.universe-levels +open import foundation.whiskering-homotopies-composition +-- open import foundation.whiskering-homotopies-concatenation + +open import synthetic-homotopy-theory.cocones-under-sequential-diagrams +open import synthetic-homotopy-theory.dependent-cocones-under-sequential-diagrams +open import synthetic-homotopy-theory.dependent-sequential-diagrams +open import synthetic-homotopy-theory.dependent-universal-property-sequential-colimits +open import synthetic-homotopy-theory.descent-data-sequential-colimits +open import synthetic-homotopy-theory.functoriality-sequential-colimits +open import synthetic-homotopy-theory.morphisms-sequential-diagrams +open import synthetic-homotopy-theory.sequential-diagrams +open import synthetic-homotopy-theory.stuff-over +open import synthetic-homotopy-theory.universal-property-sequential-colimits + +open import foundation.binary-homotopies +open import foundation.commuting-squares-of-homotopies +open import foundation.fundamental-theorem-of-identity-types +open import foundation.homotopy-induction +open import foundation.structure-identity-principle +open import foundation.torsorial-type-families +open import foundation.transposition-identifications-along-equivalences +``` + +
+ +## Theorem + +```agda +module _ + {l1 l2 : Level} + {A : sequential-diagram l1} + (P : descent-data-sequential-colimit A l2) + where + + section-descent-data-sequential-colimit : UU (l1 ⊔ l2) + section-descent-data-sequential-colimit = + section-dependent-sequential-diagram A + ( dependent-sequential-diagram-descent-data P) + +module _ + {l1 l2 l3 : Level} + {A : sequential-diagram l1} + {X : UU l2} {c : cocone-sequential-diagram A X} + (up-c : universal-property-sequential-colimit c) + (P : X → UU l3) + where + + sect-family-sect-dd-sequential-colimit : + section-descent-data-sequential-colimit + ( descent-data-family-cocone-sequential-diagram c P) → + ((x : X) → P x) + sect-family-sect-dd-sequential-colimit s = + map-dependent-universal-property-sequential-colimit + ( dependent-universal-property-universal-property-sequential-colimit _ up-c) + ( s) + +module _ + {l1 l2 l3 : Level} {A : sequential-diagram l1} {X : UU l2} + (c : cocone-sequential-diagram A X) + (P : X → UU l3) + where + + section-descent-data-section-family-cocone-sequential-colimit : + ((x : X) → P x) → + section-descent-data-sequential-colimit + ( descent-data-family-cocone-sequential-diagram c P) + section-descent-data-section-family-cocone-sequential-colimit = + dependent-cocone-map-sequential-diagram c P +``` + +```agda +module _ + {l1 l2 : Level} {A : sequential-diagram l1} + {B : dependent-sequential-diagram A l2} + (s t : section-dependent-sequential-diagram A B) + where + + htpy-section-dependent-sequential-diagram : UU (l1 ⊔ l2) + htpy-section-dependent-sequential-diagram = + Σ ((n : ℕ) → + map-section-dependent-sequential-diagram A B s n ~ + map-section-dependent-sequential-diagram A B t n) + ( λ H → + (n : ℕ) → + coherence-square-homotopies + ( map-dependent-sequential-diagram B n _ ·l H n) + ( naturality-map-section-dependent-sequential-diagram A B s n) + ( naturality-map-section-dependent-sequential-diagram A B t n) + ( H (succ-ℕ n) ·r map-sequential-diagram A n)) + +module _ + {l1 l2 : Level} {A : sequential-diagram l1} + {B : dependent-sequential-diagram A l2} + (s : section-dependent-sequential-diagram A B) + where + + refl-htpy-section-dependent-sequential-diagram : + htpy-section-dependent-sequential-diagram s s + pr1 refl-htpy-section-dependent-sequential-diagram n = + refl-htpy + pr2 refl-htpy-section-dependent-sequential-diagram n = + right-unit-htpy + + htpy-eq-section-dependent-sequential-diagram : + (t : section-dependent-sequential-diagram A B) → + s = t → htpy-section-dependent-sequential-diagram s t + htpy-eq-section-dependent-sequential-diagram .s refl = + refl-htpy-section-dependent-sequential-diagram + + abstract + is-torsorial-htpy-section-dependent-sequential-diagram : + is-torsorial (htpy-section-dependent-sequential-diagram s) + is-torsorial-htpy-section-dependent-sequential-diagram = + is-torsorial-Eq-structure + ( is-torsorial-binary-htpy _) + ( pr1 s , λ n → refl-htpy) + ( is-torsorial-binary-htpy _) + + is-equiv-htpy-eq-section-dependent-sequential-diagram : + (t : section-dependent-sequential-diagram A B) → + is-equiv (htpy-eq-section-dependent-sequential-diagram t) + is-equiv-htpy-eq-section-dependent-sequential-diagram = + fundamental-theorem-id + ( is-torsorial-htpy-section-dependent-sequential-diagram) + ( htpy-eq-section-dependent-sequential-diagram) + + equiv-htpy-eq-section-dependent-sequential-diagram : + (t : section-dependent-sequential-diagram A B) → + (s = t) ≃ + htpy-section-dependent-sequential-diagram s t + equiv-htpy-eq-section-dependent-sequential-diagram t = + ( htpy-eq-section-dependent-sequential-diagram t , + is-equiv-htpy-eq-section-dependent-sequential-diagram t) + + eq-htpy-section-dependent-sequential-diagram : + (t : section-dependent-sequential-diagram A B) → + htpy-section-dependent-sequential-diagram s t → + s = t + eq-htpy-section-dependent-sequential-diagram t = + map-inv-equiv (equiv-htpy-eq-section-dependent-sequential-diagram t) + +module _ + {l1 l2 : Level} {A : sequential-diagram l1} + (B : descent-data-sequential-colimit A l2) + (s t : section-descent-data-sequential-colimit B) + where + + eq-htpy-section-descent-data-sequential-colimit : + htpy-section-dependent-sequential-diagram s t → + s = t + eq-htpy-section-descent-data-sequential-colimit = + eq-htpy-section-dependent-sequential-diagram s t + +module _ + {l1 l2 l3 : Level} {A : sequential-diagram l1} {X : UU l2} + {c : cocone-sequential-diagram A X} + (up-c : universal-property-sequential-colimit c) + (P : X → UU l3) + (let P' = descent-data-family-cocone-sequential-diagram c P) + (s t : section-descent-data-sequential-colimit P') + where + + htpy-colimit-htpy-diagram-section : + htpy-section-dependent-sequential-diagram s t → + sect-family-sect-dd-sequential-colimit up-c P s ~ + sect-family-sect-dd-sequential-colimit up-c P t + htpy-colimit-htpy-diagram-section H = + htpy-eq + ( ap + ( sect-family-sect-dd-sequential-colimit up-c P) + ( eq-htpy-section-dependent-sequential-diagram s t H)) +``` + +```agda +module _ + {l1 l2 l3 : Level} {A : sequential-diagram l1} {X : UU l2} + {c : cocone-sequential-diagram A X} + (up-c : universal-property-sequential-colimit c) + (P : X → UU l3) + where + + htpy-section-out-of-sequential-colimit : (s t : (x : X) → P x) → UU (l1 ⊔ l3) + htpy-section-out-of-sequential-colimit s t = + htpy-section-dependent-sequential-diagram + ( section-descent-data-section-family-cocone-sequential-colimit c P s) + ( section-descent-data-section-family-cocone-sequential-colimit c P t) + + equiv-htpy-section-out-of-sequential-colimit : + (s t : (x : X) → P x) → + htpy-section-out-of-sequential-colimit s t ≃ (s ~ t) + equiv-htpy-section-out-of-sequential-colimit s t = + ( inv-equiv + ( equiv-dependent-universal-property-sequential-colimit + ( dependent-universal-property-universal-property-sequential-colimit c + ( up-c)))) ∘e + ( equiv-tot + ( λ H → + equiv-Π-equiv-family + ( λ n → + equiv-Π-equiv-family + ( λ a → + compute-dependent-identification-eq-value s t + ( coherence-cocone-sequential-diagram c n a) + ( H n a) + ( H (succ-ℕ n) (map-sequential-diagram A n a)))))) + + -- (2.i) + htpy-htpy-section-out-of-sequential-colimit : + (s t : (x : X) → P x) → + htpy-section-out-of-sequential-colimit s t → (s ~ t) + htpy-htpy-section-out-of-sequential-colimit s t = + map-equiv (equiv-htpy-section-out-of-sequential-colimit s t) +``` + +```agda +module _ + {l1 l2 l3 : Level} {A : UU l1} {B : A → UU l2} {C : A → UU l3} + (s : (a : A) → B a) (t : (a : A) → C a) + (e : (a : A) → B a ≃ C a) + (H : (a : A) → map-equiv (e a) (s a) = t a) + where + + -- the rest of the proof relies on the implementation of + -- map-eq-transpose-equiv', which is probably not the best idea + invert-fiberwise-triangle : (a : A) → s a = map-inv-equiv (e a) (t a) + invert-fiberwise-triangle a = map-eq-transpose-equiv' (e a) (H a) + + invert-fiberwise-triangle' : (a : A) → map-inv-equiv (e a) (t a) = s a + invert-fiberwise-triangle' a = + ap (map-inv-equiv (e a)) (inv (H a)) ∙ + is-retraction-map-inv-equiv (e a) (s a) + + compute-inv-invert-fiberwise-triangle : + (a : A) → + inv (invert-fiberwise-triangle a) = + invert-fiberwise-triangle' a + compute-inv-invert-fiberwise-triangle a = + distributive-inv-concat + ( inv (is-retraction-map-inv-equiv (e a) (s a))) + ( ap (map-inv-equiv (e a)) (H a)) ∙ + ap-binary (_∙_) + ( inv (ap-inv (map-inv-equiv (e a)) (H a))) + ( inv-inv (is-retraction-map-inv-equiv (e a) (s a))) + + compute-inv-invert-fiberwise-triangle' : + (a : A) → + inv (invert-fiberwise-triangle' a) = + invert-fiberwise-triangle a + compute-inv-invert-fiberwise-triangle' a = + distributive-inv-concat + ( ap (map-inv-equiv (e a)) (inv (H a))) + ( is-retraction-map-inv-equiv (e a) (s a)) ∙ + ap + ( inv (is-retraction-map-inv-equiv (e a) (s a)) ∙_) + ( ap inv (ap-inv (map-inv-equiv (e a)) (H a)) ∙ inv-inv _) +``` + +```agda +module _ + {l1 l2 l3 l4 l5 l6 : Level} + {A : UU l1} {B : UU l2} + {P : A → UU l3} {Q : B → UU l4} {P' : A → UU l5} {Q' : B → UU l6} + (f : A → B) + (s : (a : A) → P a) (t : (b : B) → Q b) + (s' : (a : A) → P' a) (t' : (b : B) → Q' b) + (f' : {a : A} → P a → Q (f a)) + (f'' : {a : A} → P' a → Q' (f a)) + (e : {a : A} → P a ≃ P' a) + (let g = λ {a} → map-equiv (e {a})) + (let inv-g = λ {a} → map-inv-equiv (e {a})) + (j : {b : B} → Q b ≃ Q' b) + (let h = λ {b} → map-equiv (j {b})) + (let inv-h = λ {b} → map-inv-equiv (j {b})) + (T : (a : A) → f' (s a) = t (f a)) + (G : {a : A} (p : P a) → f'' (g p) = h (f' p)) + (let + inv-G = + λ {a} (p : P' a) → + vertical-inv-equiv-coherence-square-maps f' e j f'' G p) + (F : (b : B) → h (t b) = t' b) + (let inv-F = invert-fiberwise-triangle t t' (λ b → j {b}) F) + (let inv-F' = invert-fiberwise-triangle' t t' (λ b → j {b}) F) + (H : (a : A) → g (s a) = s' a) + (let inv-H = invert-fiberwise-triangle s s' (λ a → e {a}) H) + (X : (a : A) → f'' (s' a) = t' (f a)) + (α : (a : A) → G (s a) ∙ (ap h (T a) ∙ F (f a)) = ap f'' (H a) ∙ X a) + where + + opaque + transpose-sq : + (a : A) → + T a ∙ inv-F (f a) = + ap f' (inv-H a) ∙ + ( inv-G (s' a) ∙ + ap inv-h (X a)) + transpose-sq a = + ap + ( T a ∙_) + ( inv (compute-inv-invert-fiberwise-triangle' t t' (λ b → j {b}) F (f a))) ∙ + right-transpose-eq-concat' + ( T a) + ( _) + ( inv-F' (f a)) + ( [g]) + where + [i] : + ap f' (is-retraction-map-inv-equiv e (s a)) = + ( pasting-vertical-coherence-square-maps f' g h f'' inv-g inv-h f' + G inv-G (s a) ∙ + is-retraction-map-inv-equiv j (f' (s a))) + [i] = + inv right-unit ∙ + left-inverse-law-pasting-vertical-coherence-square-maps f' e j f'' G (s a) + [a] : + ap inv-h (G (s a) ∙ (ap h (T a) ∙ F (f a))) = + ap inv-h (ap f'' (H a) ∙ X a) + [a] = ap (ap inv-h) (α a) + [b] : ap inv-h (G (s a)) ∙ + ap inv-h (ap h (T a) ∙ F (f a)) = + ap inv-h (ap f'' (H a) ∙ X a) + [b] = inv (ap-concat inv-h (G (s a)) (ap h (T a) ∙ F (f a))) ∙ [a] + [c] : + ap inv-h (G (s a)) ∙ + ( ap (inv-h ∘ h) (T a) ∙ ap inv-h (F (f a))) = + ap inv-h (ap f'' (H a) ∙ X a) + [c] = + ap + ( ap inv-h (G (s a)) ∙_) + ( ap (_∙ ap inv-h (F (f a))) (ap-comp inv-h h (T a)) ∙ + inv (ap-concat inv-h (ap h (T a)) (F (f a)))) ∙ + [b] + [d] : + pasting-vertical-coherence-square-maps f' g h f'' inv-g inv-h f' G inv-G (s a) ∙ + ( ap (inv-h ∘ h) (T a) ∙ ap inv-h (F (f a))) = + inv-G (g (s a)) ∙ ap inv-h (ap f'' (H a) ∙ X a) + [d] = assoc _ _ _ ∙ ap (inv-G (g (s a)) ∙_) [c] + [f'] : + inv-G (g (s a)) ∙ + ap inv-h (ap f'' (H a)) = + ap f' (ap inv-g (H a)) ∙ + inv-G (s' a) + [f'] = + nat-coherence-square-maps f'' inv-g inv-h f' inv-G (H a) + [e] : + ap f' (is-retraction-map-inv-equiv e (s a)) = + ap f' (ap inv-g (H a)) ∙ + inv-G (s' a) ∙ + ap inv-h (X a) ∙ + ap inv-h (inv (F (f a))) ∙ + inv (ap (inv-h ∘ h) (T a)) ∙ + is-retraction-map-inv-equiv j (f' (s a)) + [e] = + [i] ∙ + ap + ( _∙ is-retraction-map-inv-equiv j (f' (s a))) + ( right-transpose-eq-concat _ _ _ [d] ∙ + ( ( ap + ( _ ∙_) + ( ( distributive-inv-concat + ( ap (inv-h ∘ h) (T a)) + ( ap inv-h (F (f a)))) ∙ + ( ap (_∙ _) (inv (ap-inv inv-h (F (f a))))))) ∙ + ( inv (assoc _ _ _)) ∙ + ( ap + ( λ p → p ∙ _ ∙ _) + ( ap (_ ∙_) (ap-concat inv-h (ap f'' (H a)) (X a)) ∙ + inv (assoc _ _ _) ∙ + ap (_∙ ap inv-h (X a)) [f'])))) + [f] : + inv (ap (inv-h ∘ h) (T a)) ∙ + is-retraction-map-inv-equiv j (f' (s a)) = + is-retraction-map-inv-equiv j (t (f a)) ∙ inv (T a) + [f] = + inv + ( nat-htpy (is-retraction-map-inv-equiv j) (inv (T a)) ∙ + ap (_∙ is-retraction-map-inv-equiv j (f' (s a))) (ap-inv (inv-h ∘ h) (T a))) ∙ + ap + ( is-retraction-map-inv-equiv j (t (f a)) ∙_) + ( ap-id (inv (T a))) + [g] : + T a = + ap f' (inv-H a) ∙ + ( inv-G (s' a) ∙ + ap inv-h (X a)) ∙ + inv-F' (f a) + [g] = + left-transpose-eq-concat _ _ _ + ( inv-right-transpose-eq-concat _ _ _ + ( [e] ∙ + left-whisker-concat-coherence-square-identifications + ( ap f' (ap inv-g (H a)) ∙ inv-G (s' a) ∙ ap inv-h (X a) ∙ ap inv-h (inv (F (f a)))) + ( is-retraction-map-inv-equiv j (t (f a))) + ( inv (ap (inv-h ∘ h) (T a))) + ( inv (T a)) + ( is-retraction-map-inv-equiv j (f' (s a))) + ( [f]))) ∙ + ap + ( _∙ (ap f' (ap inv-g (H a)) ∙ _ ∙ _ ∙ _ ∙ _)) + ( inv (ap-inv f' (is-retraction-map-inv-equiv e (s a)))) ∙ + inv (assoc _ _ _) ∙ + ap + (_∙ is-retraction-map-inv-equiv j (t (f a))) + ( inv (assoc _ _ _)) ∙ + assoc _ _ _ ∙ + ap + ( _∙ inv-F' (f a)) + ( inv (assoc _ _ _) ∙ + ap + ( _∙ ap inv-h (X a)) + ( right-whisker-concat-coherence-triangle-identifications' + ( ap f' (inv-H a)) + ( ap f' (ap inv-g (H a))) + ( ap f' (inv (is-retraction-map-inv-equiv e (s a)))) + ( inv-G (s' a)) + ( inv (ap-concat f' _ _))) ∙ + assoc _ _ _) + +module _ + {l1 l2 l3 l4 l5 l6 l7 l8 : Level} + {P1 : UU l1} {P2 : UU l2} {P3 : UU l3} {P4 : UU l4} + {Q1 : P1 → UU l5} {Q2 : P2 → UU l6} {Q3 : P3 → UU l7} {Q4 : P4 → UU l8} + (g1 : P1 → P3) (f1 : P1 → P2) (f2 : P3 → P4) (g2 : P2 → P4) + (g1' : {p : P1} → Q1 p → Q3 (g1 p)) + (e1' : (p : P1) → Q1 p ≃ Q2 (f1 p)) + (let f1' = λ {p} → map-equiv (e1' p)) + (let inv-f1' = λ {p} → map-inv-equiv (e1' p)) + (e2' : (p : P3) → Q3 p ≃ Q4 (f2 p)) + (let f2' = λ {p} → map-equiv (e2' p)) + (let inv-f2' = λ {p} → map-inv-equiv (e2' p)) + (g2' : {p : P2} → Q2 p → Q4 (g2 p)) + (s1 : (p : P1) → Q1 p) (s2 : (p : P2) → Q2 p) (s3 : (p : P3) → Q3 p) + (s4 : (p : P4) → Q4 p) + (G1 : (p : P1) → g1' (s1 p) = s3 (g1 p)) + (F1 : (p : P1) → f1' (s1 p) = s2 (f1 p)) + (F2 : (p : P3) → f2' (s3 p) = s4 (f2 p)) + (G2 : (p : P2) → g2' (s2 p) = s4 (g2 p)) + (H : coherence-square-maps g1 f1 f2 g2) + (H' : square-over {Q4 = Q4} _ _ _ _ g1' f1' f2' g2' H) + where + + opaque + -- good luck if you ever need to unfold this... + flop-section : + section-square-over {Q4 = Q4} + _ _ _ _ g1' f1' f2' g2' + _ _ _ s4 G1 F1 F2 G2 + H H' → + (p : P1) → + G1 p ∙ invert-fiberwise-triangle s3 (s4 ∘ f2) e2' F2 (g1 p) = + ap g1' (invert-fiberwise-triangle s1 (s2 ∘ f1) e1' F1 p) ∙ + vertical-inv-equiv-coherence-square-maps g1' (e1' p) (e2' (g1 p)) (tr Q4 (H p) ∘ g2') H' (s2 (f1 p)) ∙ + ap (inv-f2' ∘ tr Q4 (H p)) (G2 (f1 p)) ∙ + ap inv-f2' (apd s4 (H p)) + flop-section α p = + [i] p ∙ + left-whisker-concat-coherence-triangle-identifications + ( _) + ( ap inv-f2' (ap (tr Q4 (H p)) (G2 (f1 p)) ∙ apd s4 (H p))) + ( ap inv-f2' (apd s4 (H p))) + ( ap (inv-f2' ∘ tr Q4 (H p)) (G2 (f1 p))) + ( ap-concat inv-f2' _ (apd s4 (H p)) ∙ + ap (_∙ _) (inv (ap-comp inv-f2' (tr Q4 (H p)) (G2 (f1 p))))) + where + [i] : (a : P1) → + G1 a ∙ + invert-fiberwise-triangle s3 (s4 ∘ f2) (λ b → e2' b) F2 (g1 a) + = + ap g1' + (invert-fiberwise-triangle s1 (s2 ∘ f1) (λ a₁ → e1' a₁) F1 a) + ∙ + vertical-inv-equiv-coherence-square-maps g1' (e1' a) (e2' (g1 a)) + (tr Q4 (H a) ∘ g2') H' ((s2 ∘ f1) a) + ∙ + ap (map-inv-equiv (e2' (g1 a))) + (ap (tr Q4 (H a)) (G2 (f1 a)) ∙ apd s4 (H a)) + [i] = + transpose-sq g1 s1 s3 (s2 ∘ f1) (s4 ∘ f2) g1' (λ {a} → tr Q4 (H a) ∘ g2') + ( e1' _) (e2' _) G1 H' F2 F1 + (λ p → ap (tr Q4 (H p)) (G2 (f1 p)) ∙ apd s4 (H p)) + (inv-htpy-assoc-htpy _ _ _ ∙h α ∙h assoc-htpy _ _ _) ∙h + inv-htpy-assoc-htpy _ _ _ +``` + +```agda +module _ + {l1 l2 l3 : Level} {A : UU l1} {B : UU l2} {C : B → UU l3} + (f : A → B) (s : (b : B) → C b) + where + + apd-left : + {x y : A} (p : x = y) → + apd (s ∘ f) p = inv (substitution-law-tr C f p) ∙ apd s (ap f p) + apd-left refl = refl + + apd-left' : + {x y : A} (p : x = y) → + substitution-law-tr C f p ∙ apd (s ∘ f) p = apd s (ap f p) + apd-left' refl = refl + +module _ + {l1 l2 l3 : Level} {A : UU l1} {B : A → UU l2} {C : A → UU l3} + (s : (a : A) → B a) (f : {a : A} → B a → C a) + where + + apd-right : + {x y : A} (p : x = y) → + apd (f ∘ s) p = inv (preserves-tr (λ a → f {a}) p (s x)) ∙ ap f (apd s p) + apd-right refl = refl +``` + +```agda +module _ + {l1 l2 : Level} {A : UU l1} {B : A → UU l2} + (s : (a : A) → B a) + where + + apd-concat : + {x y z : A} (p : x = y) (q : y = z) → + ap (tr B q) (apd s p) ∙ apd s q = inv (tr-concat p q (s x)) ∙ apd s (p ∙ q) + apd-concat refl q = refl + + apd-concat' : + {x y z : A} (p : x = y) (q : y = z) → + apd s (p ∙ q) = tr-concat p q (s x) ∙ ap (tr B q) (apd s p) ∙ apd s q + apd-concat' refl q = refl +``` + +```agda +module _ + {l1 l2 : Level} {A : UU l1} {B : A → UU l2} + (s : (a : A) → B a) + where + + apd-apd : + {x y : A} (p q : x = y) (α : p = q) → + ap (λ r → tr B r (s x)) (inv α) ∙ apd s p = apd s q + apd-apd p q refl = refl + + apd-apd' : + {x y : A} (p q : x = y) (α : p = q) → + apd s p = ap (λ r → tr B r (s x)) α ∙ apd s q + apd-apd' p q refl = refl +``` + +```agda +module _ + {l1 l2 : Level} {A : UU l1} {B : A → UU l2} + {f g : (a : A) → B a} (H : f ~ g) + where + + inv-dep-nat-htpy : + {x y : A} (p : x = y) → + apd f p ∙ H y = + ap (tr B p) (H x) ∙ apd g p + inv-dep-nat-htpy {x = x} {y = y} p = + map-inv-compute-dependent-identification-eq-value f g p (H x) (H y) + ( apd H p) +``` + +TODO: this should be parameterized by a fiberwise map, not equivalence + +```agda +module _ + {l1 l2 l3 l4 l5 l6 : Level} + {A : sequential-diagram l1} {X : UU l2} + {c : cocone-sequential-diagram A X} + (up-c : universal-property-sequential-colimit c) + {B : sequential-diagram l3} {Y : UU l4} + (c' : cocone-sequential-diagram B Y) + (f : hom-sequential-diagram A B) + (let f∞ = map-sequential-colimit-hom-sequential-diagram up-c c' f) + (let + C = htpy-htpy-cocone-map-sequential-colimit-hom-sequential-diagram up-c c' f) + (P : X → UU l5) + (let P' = descent-data-family-cocone-sequential-diagram c P) + (Q : Y → UU l6) + (let Q' = descent-data-family-cocone-sequential-diagram c' Q) + (e : fam-equiv P (Q ∘ f∞)) + where + + equiv-over-diagram-equiv-over-colimit : + (n : ℕ) (a : family-sequential-diagram A n) → + family-descent-data-sequential-colimit P' n a ≃ + family-descent-data-sequential-colimit Q' n + ( map-hom-sequential-diagram B f n a) + equiv-over-diagram-equiv-over-colimit n a = + equiv-tr Q (C n a) ∘e + e (map-cocone-sequential-diagram c n a) + + map-over-diagram-equiv-over-colimit : + (n : ℕ) (a : family-sequential-diagram A n) → + family-descent-data-sequential-colimit P' n a → + family-descent-data-sequential-colimit Q' n + ( map-hom-sequential-diagram B f n a) + map-over-diagram-equiv-over-colimit n a = + map-equiv (equiv-over-diagram-equiv-over-colimit n a) + + opaque + γ-base' : + (n : ℕ) (a : family-sequential-diagram A n) → + coherence-square-maps + ( tr Q (ap f∞ (coherence-cocone-sequential-diagram c n a))) + ( tr Q (C n a)) + ( tr Q (C (succ-ℕ n) (map-sequential-diagram A n a))) + ( ( tr + ( Q ∘ map-cocone-sequential-diagram c' (succ-ℕ n)) + ( naturality-map-hom-sequential-diagram B f n a)) ∘ + ( tr Q + ( coherence-cocone-sequential-diagram c' n + ( map-hom-sequential-diagram B f n a)))) + γ-base' n a q = + inv + ( substitution-law-tr Q + ( map-cocone-sequential-diagram c' (succ-ℕ n)) + ( naturality-map-hom-sequential-diagram B f n a)) ∙ + inv + ( tr-concat + ( coherence-cocone-sequential-diagram c' n + ( map-hom-sequential-diagram B f n a)) + ( ap + ( map-cocone-sequential-diagram c' (succ-ℕ n)) + ( naturality-map-hom-sequential-diagram B f n a)) + ( tr Q (C n a) q)) ∙ + inv + ( tr-concat (C n a) _ q) ∙ + ap + ( λ p → tr Q p q) + ( inv + ( coherence-htpy-cocone-map-sequential-colimit-hom-sequential-diagram up-c c' f n a)) ∙ + tr-concat + ( ap f∞ (coherence-cocone-sequential-diagram c n a)) + ( C (succ-ℕ n) (map-sequential-diagram A n a)) + ( q) + + opaque + γ' : + (n : ℕ) (a : family-sequential-diagram A n) → + coherence-square-maps + ( tr (Q ∘ f∞) (coherence-cocone-sequential-diagram c n a)) + ( tr Q (C n a)) + ( tr Q (C (succ-ℕ n) (map-sequential-diagram A n a))) + ( ( tr + ( Q ∘ map-cocone-sequential-diagram c' (succ-ℕ n)) + ( naturality-map-hom-sequential-diagram B f n a)) ∘ + ( tr Q + ( coherence-cocone-sequential-diagram c' n + ( map-hom-sequential-diagram B f n a)))) + γ' n a q = + γ-base' n a q ∙ + ap + ( tr Q (C (succ-ℕ n) (map-sequential-diagram A n a))) + ( substitution-law-tr Q f∞ (coherence-cocone-sequential-diagram c n a)) + + opaque + square-over-diagram-square-over-colimit : + (n : ℕ) (a : family-sequential-diagram A n) → + coherence-square-maps + ( tr P (coherence-cocone-sequential-diagram c n a)) + ( map-over-diagram-equiv-over-colimit n a) + ( map-over-diagram-equiv-over-colimit + ( succ-ℕ n) + ( map-sequential-diagram A n a)) + ( ( tr + ( Q ∘ map-cocone-sequential-diagram c' (succ-ℕ n)) + ( naturality-map-hom-sequential-diagram B f n a)) ∘ + ( tr Q + ( coherence-cocone-sequential-diagram c' n + ( map-hom-sequential-diagram B f n a)))) + square-over-diagram-square-over-colimit n a = + pasting-vertical-coherence-square-maps + ( tr P (coherence-cocone-sequential-diagram c n a)) + ( map-fam-equiv e (map-cocone-sequential-diagram c n a)) + ( map-fam-equiv e (map-cocone-sequential-diagram c (succ-ℕ n) (map-sequential-diagram A n a))) + ( tr (Q ∘ f∞) (coherence-cocone-sequential-diagram c n a)) + ( tr Q (C n a)) + ( tr Q (C (succ-ℕ n) (map-sequential-diagram A n a))) + ( ( tr + ( Q ∘ map-cocone-sequential-diagram c' (succ-ℕ n)) + ( naturality-map-hom-sequential-diagram B f n a)) ∘ + ( tr Q + ( coherence-cocone-sequential-diagram c' n + ( map-hom-sequential-diagram B f n a)))) + ( inv-htpy + ( preserves-tr + ( map-fam-equiv e) + ( coherence-cocone-sequential-diagram c n a))) + ( γ' n a) + +module _ + {l1 l2 l3 l4 l5 : Level} + {A : sequential-diagram l1} {X : UU l2} + {c : cocone-sequential-diagram A X} + (up-c : universal-property-sequential-colimit c) + {B : sequential-diagram l3} {Y : UU l4} + (c' : cocone-sequential-diagram B Y) + (f : hom-sequential-diagram A B) + (let f∞ = map-sequential-colimit-hom-sequential-diagram up-c c' f) + (Q : Y → UU l5) + where + + opaque + unfolding square-over-diagram-square-over-colimit + + compute-square-over-diagram-id : + (n : ℕ) (a : family-sequential-diagram A n) → + square-over-diagram-square-over-colimit up-c c' f (Q ∘ f∞) Q id-fam-equiv n a ~ + γ' up-c c' f (Q ∘ f∞) Q id-fam-equiv n a + compute-square-over-diagram-id n a q = + ap + ( λ r → + γ' up-c c' f (Q ∘ f∞) Q id-fam-equiv n a q ∙ + ap (tr Q _) (inv r)) + ( compute-preserves-tr-id (coherence-cocone-sequential-diagram c n a) q) ∙ + right-unit +``` + +```agda +module _ + {l1 l2 l3 l4 : Level} + {I : UU l1} {A : I → UU l2} {B : I → UU l3} {C : I → UU l4} + (g : (i : I) → B i → C i) (f : (i : I) → A i → B i) + where + + preserves-tr-comp : + {i j : I} (p : i = j) → + preserves-tr (λ i → g i ∘ f i) p ~ + pasting-horizontal-coherence-square-maps (f i) (g i) (tr A p) (tr B p) (tr C p) (f j) (g j) + ( preserves-tr f p) + ( preserves-tr g p) + preserves-tr-comp refl i = refl + + inv-preserves-tr-comp : + {i j : I} (p : i = j) → + inv-htpy (preserves-tr (λ i → g i ∘ f i) p) ~ + pasting-vertical-coherence-square-maps (tr A p) (f i) (f j) (tr B p) (g i) (g j) (tr C p) + ( inv-htpy (preserves-tr f p)) + ( inv-htpy (preserves-tr g p)) + inv-preserves-tr-comp refl x = refl + +module _ + {l1 l2 l3 : Level} {I : UU l1} {A : I → UU l1} {B : I → UU l2} + (f : (i : I) → A i → B i) + where + + preserves-tr-concat : + {i j : I} (p : i = j) + {k : I} (q : j = k) → + preserves-tr f (p ∙ q) ∙h tr-concat p q ·r f i ~ + f k ·l tr-concat p q ∙h + pasting-vertical-coherence-square-maps (f i) (tr A p) (tr B p) (f j) (tr A q) (tr B q) (f k) + ( preserves-tr f p) + ( preserves-tr f q) + preserves-tr-concat refl q x = refl + + aaa : + {i j : I} (p : i = j) → + pasting-horizontal-coherence-square-maps + ( tr A p) (tr A (inv p)) (f i) (f j) (f i) (tr B p) (tr B (inv p)) + ( inv-htpy (preserves-tr f p)) + ( inv-htpy (preserves-tr f (inv p))) ∙h + f i ·l is-retraction-map-inv-equiv (equiv-tr A p) ~ + is-retraction-map-inv-equiv (equiv-tr B p) ·r f i + aaa refl x = refl + +module _ + {l1 l2 : Level} {A : UU l1} {B : UU l2} + (e : A ≃ B) + where + + inv-coherence-map-inv-is-equiv : + (a : A) → + ap (map-equiv e) (inv (is-retraction-map-inv-equiv e a)) = + inv (is-section-map-inv-equiv e (map-equiv e a)) + inv-coherence-map-inv-is-equiv a = + ap-inv (map-equiv e) (is-retraction-map-inv-equiv e a) ∙ + ap inv (inv (coherence-map-inv-equiv e a)) + + left-inv-is-retraction-map-inv-equiv : + (a : A) → + inv (is-section-map-inv-equiv e (map-equiv e a)) ∙ + ap (map-equiv e) (is-retraction-map-inv-equiv e a) = + refl + left-inv-is-retraction-map-inv-equiv a = + ap + ( inv (is-section-map-inv-equiv e (map-equiv e a)) ∙_) + ( inv (coherence-map-inv-equiv e a)) ∙ + left-inv (is-section-map-inv-equiv e (map-equiv e a)) + +opaque + priv-is-section : + {l1 l2 : Level} {A : UU l1} {B : UU l2} + (e : A ≃ B) → map-equiv e ∘ map-inv-equiv e ~ id + priv-is-section = is-section-map-inv-equiv + +module _ + {l1 l2 l3 l4 l5 : Level} {A : UU l1} {B : A → UU l2} {C : UU l3} (f : C → A) + {D : C → UU l4} {D' : C → UU l5} + (f' : fam-equiv D D') + (g' : fam-equiv D' (B ∘ f)) + (let + e' : (c : C) → D c → B (f c) + e' c = map-fam-equiv g' c ∘ map-fam-equiv f' c + inv-e' : (c : C) → B (f c) → D c + inv-e' c = map-inv-equiv (g' c ∘e f' c)) + where + open import foundation.dependent-identifications + abstract + + ccc'' : + {x y : C} (p : x = y) + {z : A} (q : z = f y) → + {d : D x} (let b = e' x d) + {b' : B z} (s : tr B (q ∙ ap f (inv p)) b' = b) → + concat-dependent-identification B q (ap f (inv p)) + ( inv (is-section-map-inv-equiv (g' y ∘e f' y) _)) + ( left-whisk-dependent-identification (e' _) (inv p) + ( inv-dependent-identification D p + ( inv + ( ( ap + ( inv-e' _ ∘ tr B q) + ( inv + ( is-retraction-map-inv-equiv (equiv-tr B (q ∙ ap f (inv p))) b') ∙ + ap + ( tr B (inv (q ∙ ap f (inv p)))) + ( s))) ∙ + ( ( ap + ( inv-e' y) + ( ( ap + ( tr B q) + ( ap (λ r → tr B r b) (distributive-inv-concat _ _) ∙ + ( tr-concat _ _ b))) ∙ + ( is-section-map-inv-equiv + ( equiv-tr B q) + ( tr B (inv (ap f (inv p))) b)) ∙ + ap + ( λ r → tr B r b) + ( inv (ap-inv f (inv p)) ∙ ap (ap f) (inv-inv p)) ∙ + substitution-law-tr B f p)) ∙ + ( map-eq-transpose-equiv-inv' + ( g' y ∘e f' y) + ( inv (preserves-tr e' p d)))))))) = + s + ccc'' refl refl {d = d} refl = + ap + ( λ r → + ap id (inv (is-section-map-inv-equiv (g' _ ∘e f' _) (e' _ d))) ∙ + ap (e' _) r) + ( ( inv-inv _) ∙ + ( ap + ( λ r → + ap (inv-e' _) r ∙ is-retraction-map-inv-equiv (g' _ ∘e f' _) _) + ( right-unit ∙ right-unit ∙ coherence-map-inv-equiv id-equiv _))) ∙ + ap + ( _∙ ap (e' _) (is-retraction-map-inv-equiv (g' _ ∘e f' _) d)) + ( ap-id _) ∙ + left-inv-is-retraction-map-inv-equiv (g' _ ∘e f' _) d +``` + +```agda +module _ + {l1 l2 : Level} + {A : UU l1} + {P : A → UU l2} + where + open import foundation.dependent-identifications + + compute-lemma'' : + {x y : A} (p : x = y) → + {x' : P x} {y' z' : P y} + (K : dependent-identification P p x' y') + (H : y' = z') → + inv-dependent-identification P p (K ∙ H) = + ap + ( tr P (inv p)) + ( inv H) ∙ + inv-dependent-identification P p K + compute-lemma'' refl K refl = ap inv right-unit + +module _ + {l1 l2 l5 l6 : Level} + {A : UU l1} {B : UU l2} + {P : A → UU l5} {Q : UU l6} -- {Q : B → UU l6} + where + open import foundation.dependent-identifications + + compute-lemma : + {x y : A} (p : x = y) → + {u v : Q} (H : u = v) → + (f : Q → P y) + {x' : P x} (K : dependent-identification P p x' (f u)) → + inv-dependent-identification P p (K ∙ ap f H) = + ap + ( tr P (inv p) ∘ f) + ( inv H) ∙ + inv-dependent-identification P p K + compute-lemma p H f K = + compute-lemma'' p K (ap f H) ∙ + ap + ( _∙ inv-dependent-identification P p K) + ( ap + ( ap (tr P (inv p))) + ( inv (ap-inv f H)) ∙ + inv (ap-comp (tr P (inv p)) f (inv H))) + + compute-lemma' : + {x y : A} (p : x = y) → + {u v : Q} (H : u = v) → + (f : Q → P y) → + {x' : P x} (K : f v = tr P p x') → + inv-dependent-identification P p (inv (ap f H ∙ K)) = + ap + ( tr P (inv p) ∘ f) + ( H) ∙ + inv-dependent-identification P p (inv K) + compute-lemma' refl refl f K = refl +``` + +```agda + + +module _ + {l1 l2 : Level} {A : UU l1} {B : A → UU l2} + where + open import foundation.dependent-identifications + + nat-concat-dependent-identification : + {x y : A} (p : x = y) → + {z : A} (q : y = z) → + (f : B x → B y) → + (H : tr B p ~ f) → + {x' y' : B x} (p' : x' = y') → + concat-dependent-identification B p q (ap (tr B p) p') (ap (tr B q) (H y')) = + concat-dependent-identification B p q (H x') (ap (tr B q) (ap f p')) + nat-concat-dependent-identification refl refl f H refl = inv right-unit + + nat-concat-dependent-identification-id : + {x y : A} (p : x = y) → + {z : A} (q : y = z) → + (f : B y → B y) → + (H : id ~ f) → + {x' : B x} {y' : B y} (p' : dependent-identification B p x' y') → + concat-dependent-identification B p q p' (ap (tr B q) (H y')) = + concat-dependent-identification B p q (H (tr B p x')) (ap (tr B q) (ap f p')) + nat-concat-dependent-identification-id refl q f H refl = inv right-unit + +open import synthetic-homotopy-theory.zigzags-sequential-diagrams +module _ + {l1 l2 l3 l4 l5 l6 : Level} + {A : sequential-diagram l1} {X : UU l2} + {c : cocone-sequential-diagram A X} + (up-c : universal-property-sequential-colimit c) + {B : sequential-diagram l3} {Y : UU l4} + (c' : cocone-sequential-diagram B Y) + (z : zigzag-sequential-diagram A B) + (let f = hom-diagram-zigzag-sequential-diagram z) + (let f∞ = map-sequential-colimit-hom-sequential-diagram up-c c' f) + (let + C = htpy-htpy-cocone-map-sequential-colimit-hom-sequential-diagram up-c c' f) + (P : X → UU l5) + (let P' = descent-data-family-cocone-sequential-diagram c P) + (Q : Y → UU l6) + (let Q' = descent-data-family-cocone-sequential-diagram c' Q) + (e : fam-equiv P (Q ∘ f∞)) + where + + inv-map-over-diagram-equiv-zigzag' : + (n : ℕ) (a : family-sequential-diagram A n) → + family-descent-data-sequential-colimit Q' n + ( map-zigzag-sequential-diagram z n a) → + family-descent-data-sequential-colimit P' n a + inv-map-over-diagram-equiv-zigzag' n a = + map-inv-equiv + ( equiv-over-diagram-equiv-over-colimit up-c c' f P Q e n a) + + inv-map-over-diagram-equiv-zigzag : + (n : ℕ) (b : family-sequential-diagram B n) → + family-descent-data-sequential-colimit Q' n b → + family-descent-data-sequential-colimit P' (succ-ℕ n) + ( inv-map-zigzag-sequential-diagram z n b) + inv-map-over-diagram-equiv-zigzag n b = + inv-map-over-diagram-equiv-zigzag' (succ-ℕ n) + ( inv-map-zigzag-sequential-diagram z n b) ∘ + tr + ( family-descent-data-sequential-colimit Q' (succ-ℕ n)) + ( lower-triangle-zigzag-sequential-diagram z n b) ∘ + tr Q + ( coherence-cocone-sequential-diagram c' n b) + + opaque + internal-triangle-upper-triangle-over' : + (n : ℕ) (a : family-sequential-diagram A n) → + tr + ( family-descent-data-sequential-colimit Q' (succ-ℕ n)) + ( lower-triangle-zigzag-sequential-diagram z n (map-zigzag-sequential-diagram z n a)) ∘ + tr + ( family-descent-data-sequential-colimit Q' (succ-ℕ n)) + ( inv (naturality-map-hom-diagram-zigzag-sequential-diagram z n a)) ~ + tr + ( family-descent-data-sequential-colimit Q' (succ-ℕ n)) + ( ap + ( map-zigzag-sequential-diagram z (succ-ℕ n)) + ( upper-triangle-zigzag-sequential-diagram z n a)) + internal-triangle-upper-triangle-over' n a p = + ap + ( tr + ( family-descent-data-sequential-colimit Q' (succ-ℕ n)) + ( lower-triangle-zigzag-sequential-diagram z n + ( map-zigzag-sequential-diagram z n a))) + ( ( ap + ( λ r → tr (family-descent-data-sequential-colimit Q' (succ-ℕ n)) r p) + ( distributive-inv-concat _ _)) ∙ + ( tr-concat _ _ p)) ∙ + is-section-map-inv-equiv + ( equiv-tr + ( family-descent-data-sequential-colimit Q' (succ-ℕ n)) + ( lower-triangle-zigzag-sequential-diagram z n (map-zigzag-sequential-diagram z n a))) + ( _) ∙ + ap + ( λ r → + tr + ( family-descent-data-sequential-colimit Q' (succ-ℕ n)) + ( r) + ( p)) + ( ( inv + ( ap-inv + ( map-zigzag-sequential-diagram z (succ-ℕ n)) + ( inv (upper-triangle-zigzag-sequential-diagram z n a)))) ∙ + ( ap (ap (map-zigzag-sequential-diagram z (succ-ℕ n))) (inv-inv _))) + + inv-upper-triangle-over' : + (n : ℕ) (a : family-sequential-diagram A n) → + tr + ( family-descent-data-sequential-colimit Q' (succ-ℕ n)) + ( lower-triangle-zigzag-sequential-diagram z n (map-zigzag-sequential-diagram z n a)) ∘ + tr + ( family-descent-data-sequential-colimit Q' (succ-ℕ n)) + ( inv (naturality-map-hom-diagram-zigzag-sequential-diagram z n a)) ∘ + map-over-diagram-equiv-over-colimit up-c c' f P Q e (succ-ℕ n) (map-sequential-diagram A n a) ~ + map-over-diagram-equiv-over-colimit up-c c' f P Q e (succ-ℕ n) (inv-map-zigzag-sequential-diagram z n (map-zigzag-sequential-diagram z n a)) ∘ + tr + ( family-descent-data-sequential-colimit P' (succ-ℕ n)) + ( upper-triangle-zigzag-sequential-diagram z n a) + inv-upper-triangle-over' n a p = + internal-triangle-upper-triangle-over' n a + ( map-over-diagram-equiv-over-colimit up-c c' f P Q e (succ-ℕ n) (map-sequential-diagram A n a) p) ∙ + -- left-whisk-dependent-identification + -- ( map-over-diagram-equiv-over-colimit up-c c' f P Q e (succ-ℕ n) _) + -- ( upper-triangle-zigzag-sequential-diagram z n a) + -- ( refl) + substitution-law-tr + ( family-descent-data-sequential-colimit Q' (succ-ℕ n)) + ( map-zigzag-sequential-diagram z (succ-ℕ n)) + ( upper-triangle-zigzag-sequential-diagram z n a) ∙ + inv + ( preserves-tr + ( map-over-diagram-equiv-over-colimit up-c c' f P Q e (succ-ℕ n)) + ( upper-triangle-zigzag-sequential-diagram z n a) + ( p)) + + opaque + inv-transport-squares : + (n : ℕ) (a : family-sequential-diagram A n) → + coherence-square-maps + ( tr + ( family-descent-data-sequential-colimit P' (succ-ℕ n)) + ( upper-triangle-zigzag-sequential-diagram z n a)) + ( map-over-diagram-equiv-over-colimit up-c c' f P Q e (succ-ℕ n) + ( map-sequential-diagram A n a)) + ( map-over-diagram-equiv-over-colimit up-c c' f P Q e (succ-ℕ n) + ( inv-map-zigzag-sequential-diagram z n + ( map-zigzag-sequential-diagram z n a))) + ( tr + ( family-descent-data-sequential-colimit Q' (succ-ℕ n) ∘ + map-zigzag-sequential-diagram z (succ-ℕ n)) + ( upper-triangle-zigzag-sequential-diagram z n a)) + inv-transport-squares n a = + inv-htpy + ( preserves-tr + ( map-over-diagram-equiv-over-colimit up-c c' f P Q e (succ-ℕ n)) + ( upper-triangle-zigzag-sequential-diagram z n a)) + + opaque + transpose-squares : + (n : ℕ) (a : family-sequential-diagram A n) → + inv-map-over-diagram-equiv-zigzag' (succ-ℕ n) + ( inv-map-zigzag-sequential-diagram z n + ( map-zigzag-sequential-diagram z n a)) ∘ + tr + ( family-descent-data-sequential-colimit Q' (succ-ℕ n) ∘ + map-zigzag-sequential-diagram z (succ-ℕ n)) + ( upper-triangle-zigzag-sequential-diagram z n a) ∘ + map-over-diagram-equiv-over-colimit up-c c' f P Q e (succ-ℕ n) + ( map-sequential-diagram A n a) ~ + tr + ( family-descent-data-sequential-colimit P' (succ-ℕ n)) + ( upper-triangle-zigzag-sequential-diagram z n a) + transpose-squares n a p = + map-eq-transpose-equiv-inv' + ( equiv-over-diagram-equiv-over-colimit up-c c' f P Q e (succ-ℕ n) _) + ( inv-transport-squares n a p) + + + opaque + upper-triangle-over' : + (n : ℕ) (a : family-sequential-diagram A n) → + inv-map-over-diagram-equiv-zigzag' (succ-ℕ n) _ ∘ + tr + ( family-descent-data-sequential-colimit Q' (succ-ℕ n)) + ( lower-triangle-zigzag-sequential-diagram z n (map-zigzag-sequential-diagram z n a)) ∘ + tr + ( family-descent-data-sequential-colimit Q' (succ-ℕ n)) + ( inv (naturality-map-hom-diagram-zigzag-sequential-diagram z n a)) ∘ + map-over-diagram-equiv-over-colimit up-c c' f P Q e (succ-ℕ n) (map-sequential-diagram A n a) ~ + tr + ( family-descent-data-sequential-colimit P' (succ-ℕ n)) + ( upper-triangle-zigzag-sequential-diagram z n a) + upper-triangle-over' n a p = + ap + ( inv-map-over-diagram-equiv-zigzag' (succ-ℕ n) _) + ( internal-triangle-upper-triangle-over' n a + ( map-over-diagram-equiv-over-colimit up-c c' f P Q e (succ-ℕ n) (map-sequential-diagram A n a) p) ∙ + substitution-law-tr + ( family-descent-data-sequential-colimit Q' (succ-ℕ n)) + ( map-zigzag-sequential-diagram z (succ-ℕ n)) + ( upper-triangle-zigzag-sequential-diagram z n a)) ∙ + transpose-squares n a p + + inv-upper-triangle-over : + (n : ℕ) (a : family-sequential-diagram A n) → + coherence-square-maps + ( map-family-descent-data-sequential-colimit P' n a) + ( map-over-diagram-equiv-over-colimit up-c c' f P Q e n a) + ( tr + ( family-descent-data-sequential-colimit P' (succ-ℕ n)) + ( upper-triangle-zigzag-sequential-diagram z n a)) + ( inv-map-over-diagram-equiv-zigzag n (map-zigzag-sequential-diagram z n a)) + inv-upper-triangle-over n a p = + ap + ( inv-map-over-diagram-equiv-zigzag' (succ-ℕ n) _ ∘ + tr + ( family-descent-data-sequential-colimit Q' (succ-ℕ n)) + ( lower-triangle-zigzag-sequential-diagram z n (map-zigzag-sequential-diagram z n a))) + ( inv + ( is-retraction-map-inv-equiv + ( equiv-tr + ( family-descent-data-sequential-colimit Q' (succ-ℕ n)) + ( naturality-map-hom-diagram-zigzag-sequential-diagram z n a)) + ( _)) ∙ + ap + ( tr + ( family-descent-data-sequential-colimit Q' (succ-ℕ n)) + ( inv + ( naturality-map-hom-diagram-zigzag-sequential-diagram z n a))) + ( square-over-diagram-square-over-colimit up-c c' f P Q e n a p)) ∙ + upper-triangle-over' n a (map-family-descent-data-sequential-colimit P' n a p) + + upper-triangle-over : + (n : ℕ) → + htpy-over + ( family-descent-data-sequential-colimit P' (succ-ℕ n)) + ( upper-triangle-zigzag-sequential-diagram z n) + ( map-family-descent-data-sequential-colimit P' n _) + ( inv-map-over-diagram-equiv-zigzag n _ ∘ + map-over-diagram-equiv-over-colimit up-c c' f P Q e n _) + upper-triangle-over n {a} p = + inv (inv-upper-triangle-over n a p) + + opaque + lower-triangle-over' : + (n : ℕ) (a : family-sequential-diagram A n) + (q : + family-descent-data-sequential-colimit Q' n + ( map-zigzag-sequential-diagram z n a)) → + q = + map-over-diagram-equiv-over-colimit up-c c' f P Q e n a + ( inv-map-over-diagram-equiv-zigzag' n a q) + lower-triangle-over' n a q = + inv + ( is-section-map-inv-equiv + ( equiv-over-diagram-equiv-over-colimit up-c c' f P Q e n a) + ( q)) + + lower-triangle-over : + (n : ℕ) → + htpy-over + ( family-descent-data-sequential-colimit Q' (succ-ℕ n)) + ( lower-triangle-zigzag-sequential-diagram z n) + ( map-family-descent-data-sequential-colimit Q' n _) + ( map-over-diagram-equiv-over-colimit up-c c' f P Q e (succ-ℕ n) _ ∘ + inv-map-over-diagram-equiv-zigzag n _) + lower-triangle-over n {b} q = + lower-triangle-over' + ( succ-ℕ n) + ( inv-map-zigzag-sequential-diagram z n b) + ( tr + ( family-descent-data-sequential-colimit Q' (succ-ℕ n)) + ( lower-triangle-zigzag-sequential-diagram z n b) + ( map-family-descent-data-sequential-colimit Q' n b q)) + + opaque + unfolding + lower-triangle-over' upper-triangle-over' + internal-triangle-upper-triangle-over' transpose-squares + inv-transport-squares + compute-square-over-zigzag-square-over-colimit : + (n : ℕ) (a : family-sequential-diagram A n) → + pasting-triangles-over + ( map-sequential-diagram A n) + ( map-hom-sequential-diagram B f n) + ( map-hom-sequential-diagram B f (succ-ℕ n)) + ( map-sequential-diagram B n) + ( map-family-descent-data-sequential-colimit P' n _) + ( map-over-diagram-equiv-over-colimit up-c c' f P Q e n _) + ( map-over-diagram-equiv-over-colimit up-c c' f P Q e (succ-ℕ n) _) + ( map-family-descent-data-sequential-colimit Q' n _) + ( inv-map-zigzag-sequential-diagram z n) + ( inv-map-over-diagram-equiv-zigzag n _) + ( inv-htpy (upper-triangle-zigzag-sequential-diagram z n)) + ( lower-triangle-zigzag-sequential-diagram z n) + ( inv-htpy-over + ( family-descent-data-sequential-colimit P' (succ-ℕ n)) + ( upper-triangle-zigzag-sequential-diagram z n) + _ _ + ( upper-triangle-over n)) + ( lower-triangle-over n) + { a} ~ + square-over-diagram-square-over-colimit up-c c' f P Q e n a + compute-square-over-zigzag-square-over-colimit n a p = + ccc'' + ( map-zigzag-sequential-diagram z (succ-ℕ n)) + ( λ a → e (map-cocone-sequential-diagram c (succ-ℕ n) a)) + ( λ a → equiv-tr Q (C (succ-ℕ n) a)) + ( upper-triangle-zigzag-sequential-diagram z n a) + ( lower-triangle-zigzag-sequential-diagram z n + ( map-zigzag-sequential-diagram z n a)) + ( square-over-diagram-square-over-colimit up-c c' f P Q e n a p) +``` + +```agda +module _ + {l1 l2 l3 l4 l5 : Level} + {A : sequential-diagram l1} {X : UU l2} + {c : cocone-sequential-diagram A X} + (up-c : universal-property-sequential-colimit c) + {B : sequential-diagram l3} {Y : UU l4} + {c' : cocone-sequential-diagram B Y} + (up-c' : universal-property-sequential-colimit c') + (let + dup-c' = + dependent-universal-property-universal-property-sequential-colimit _ up-c') + (Q : Y → UU l5) + (let Q' = descent-data-family-cocone-sequential-diagram c' Q) + (f : hom-sequential-diagram A B) + (let f∞ = map-sequential-colimit-hom-sequential-diagram up-c c' f) + (let P = Q ∘ f∞) + (let P' = descent-data-family-cocone-sequential-diagram c P) + (let C = htpy-htpy-cocone-map-sequential-colimit-hom-sequential-diagram up-c c' f) + (let f∞n = λ n a → tr Q (C n a)) + (s : section-descent-data-sequential-colimit Q') + (let s∞ = sect-family-sect-dd-sequential-colimit up-c' Q s) + (let + 𝒞 = + htpy-dependent-cocone-dependent-universal-property-sequential-colimit + ( dup-c') + ( s)) + (let C' = htpy-htpy-dependent-cocone-sequential-diagram Q 𝒞) + where + + opaque + unfolding square-over-diagram-square-over-colimit + γ : + (n : ℕ) (a : family-sequential-diagram A n) → + coherence-square-maps + ( tr (Q ∘ f∞) (coherence-cocone-sequential-diagram c n a)) + ( f∞n n a) + ( f∞n (succ-ℕ n) (map-sequential-diagram A n a)) + ( ( tr + ( Q ∘ map-cocone-sequential-diagram c' (succ-ℕ n)) + ( naturality-map-hom-sequential-diagram B f n a)) ∘ + ( tr Q + ( coherence-cocone-sequential-diagram c' n + ( map-hom-sequential-diagram B f n a)))) + γ = γ' up-c c' f P Q id-fam-equiv + + -- compute-γ : + -- (n : ℕ) (a : family-sequential-diagram A n) → + -- square-over-diagram-square-over-colimit up-c c' f (Q ∘ f∞) Q id-fam-equiv n a ~ γ n a + -- compute-γ n a p = + -- ap + -- ( γ n a p ∙_) + -- ( ap + -- ( λ r → ap (tr Q (C (succ-ℕ n) (map-sequential-diagram A n a))) (inv r)) + -- ( compute-preserves-tr-id (coherence-cocone-sequential-diagram c n a) p)) ∙ + -- right-unit + + opaque + γ-flip : + (n : ℕ) (a : family-sequential-diagram A n) → + coherence-square-maps + ( ( tr + ( Q ∘ map-cocone-sequential-diagram c' (succ-ℕ n)) + ( naturality-map-hom-sequential-diagram B f n a)) ∘ + ( tr Q + ( coherence-cocone-sequential-diagram c' n + ( map-hom-sequential-diagram B f n a)))) + ( tr Q (inv (C n a))) + ( tr Q (inv (C (succ-ℕ n) (map-sequential-diagram A n a)))) + ( tr (Q ∘ f∞) (coherence-cocone-sequential-diagram c n a)) + γ-flip n a = + vertical-inv-equiv-coherence-square-maps + ( tr (Q ∘ f∞) (coherence-cocone-sequential-diagram c n a)) + ( equiv-tr Q (C n a)) + ( equiv-tr Q (C (succ-ℕ n) (map-sequential-diagram A n a))) + ( ( tr + ( Q ∘ map-cocone-sequential-diagram c' (succ-ℕ n)) + ( naturality-map-hom-sequential-diagram B f n a)) ∘ + ( tr Q + ( coherence-cocone-sequential-diagram c' n + ( map-hom-sequential-diagram B f n a)))) + ( γ n a) + + comp-over-diagram : + section-descent-data-sequential-colimit + ( descent-data-family-cocone-sequential-diagram c (Q ∘ f∞)) + pr1 comp-over-diagram n = + tr Q (inv (C n _)) ∘ + map-section-dependent-sequential-diagram _ _ s n ∘ + map-hom-sequential-diagram B f n + pr2 comp-over-diagram n a = + ( γ-flip n a + ( map-section-dependent-sequential-diagram _ _ s n + ( map-hom-sequential-diagram B f n a))) ∙ + ( ap + ( tr Q (inv (C (succ-ℕ n) (map-sequential-diagram A n a)))) + ( ( ap + ( tr + ( Q ∘ map-cocone-sequential-diagram c' (succ-ℕ n)) + ( naturality-map-hom-sequential-diagram B f n a)) + ( naturality-map-section-dependent-sequential-diagram _ _ s n + ( map-hom-sequential-diagram B f n a))) ∙ + ( apd + ( map-section-dependent-sequential-diagram _ _ s (succ-ℕ n)) + ( naturality-map-hom-sequential-diagram B f n a)))) + + lemma-1-1 : + htpy-section-dependent-sequential-diagram + ( section-descent-data-section-family-cocone-sequential-colimit c P + ( sect-family-sect-dd-sequential-colimit up-c P comp-over-diagram)) + ( comp-over-diagram) + lemma-1-1 = + htpy-dependent-cocone-dependent-universal-property-sequential-colimit + ( dependent-universal-property-universal-property-sequential-colimit _ up-c) + ( comp-over-diagram) + + -- needs work + lemma-1-2 : + htpy-section-dependent-sequential-diagram + ( section-descent-data-section-family-cocone-sequential-colimit c P + ( s∞ ∘ f∞)) + ( comp-over-diagram) + pr1 lemma-1-2 n = + invert-fiberwise-triangle + ( s∞ ∘ f∞ ∘ map-cocone-sequential-diagram c n) + ( map-section-dependent-sequential-diagram _ _ s n ∘ map-hom-sequential-diagram B f n) + ( λ a → equiv-tr Q (C n a)) + ( λ a → apd s∞ (C n a) ∙ C' n (map-hom-sequential-diagram B f n a)) + pr2 lemma-1-2 n = [i] + where + goal = + (pr2 + (section-descent-data-section-family-cocone-sequential-colimit c P + (s∞ ∘ f∞)) + n + ∙h + invert-fiberwise-triangle + (s∞ ∘ f∞ ∘ pr1 c (succ-ℕ n)) + (pr1 s (succ-ℕ n) ∘ pr1 f (succ-ℕ n)) + (λ a₁ → + equiv-tr Q + (C (succ-ℕ n) a₁)) + (λ a₁ → + apd s∞ (C (succ-ℕ n) a₁) ∙ + C' (succ-ℕ n) (pr1 f (succ-ℕ n) a₁)) + ·r pr2 A n) + ~ + ((λ {v} v₁ → + pr2 (dependent-sequential-diagram-descent-data P') n v v₁) ·l + invert-fiberwise-triangle + (s∞ ∘ f∞ ∘ pr1 c n) + (pr1 s n ∘ pr1 f n) + (λ a₁ → + equiv-tr Q + (C n a₁)) + (λ a₁ → + apd s∞ + (C n a₁) ∙ + C' n (pr1 f n a₁)) + ∙h + (λ a₁ → + γ-flip n a₁ (pr1 s n (pr1 f n a₁)) ∙ + ap + (tr Q + (inv + (C (succ-ℕ n) (pr2 A n a₁)))) + (ap (tr (Q ∘ pr1 c' (succ-ℕ n)) (pr2 f n a₁)) + (pr2 s n (pr1 f n a₁)) + ∙ apd (pr1 s (succ-ℕ n)) (pr2 f n a₁)))) + + opaque + [step-1] : + (a : family-sequential-diagram A n) → + ap + ( tr Q (C (succ-ℕ n) (map-sequential-diagram A n a))) + ( substitution-law-tr Q f∞ (coherence-cocone-sequential-diagram c n a)) ∙ + ap + ( tr Q (C (succ-ℕ n) (map-sequential-diagram A n a))) + ( apd (s∞ ∘ f∞) (coherence-cocone-sequential-diagram c n a)) = + ap + ( tr Q (C (succ-ℕ n) (map-sequential-diagram A n a))) + ( apd s∞ (ap f∞ (coherence-cocone-sequential-diagram c n a))) + [step-1] a = + inv + ( ap-concat + ( tr Q (C (succ-ℕ n) (map-sequential-diagram A n a))) + ( substitution-law-tr Q f∞ (coherence-cocone-sequential-diagram c n a)) + ( apd (s∞ ∘ f∞) (coherence-cocone-sequential-diagram c n a))) ∙ + ap + ( ap (tr Q (C (succ-ℕ n) (map-sequential-diagram A n a)))) + ( apd-left' f∞ s∞ (coherence-cocone-sequential-diagram c n a)) + [step-2] : + (a : family-sequential-diagram A n) → + tr-concat + ( ap f∞ (coherence-cocone-sequential-diagram c n a)) + ( C (succ-ℕ n) (map-sequential-diagram A n a)) + ( s∞ (f∞ (map-cocone-sequential-diagram c n a))) ∙ + ap + ( tr Q (C (succ-ℕ n) (map-sequential-diagram A n a))) + ( apd s∞ (ap f∞ (coherence-cocone-sequential-diagram c n a))) ∙ + apd s∞ (C (succ-ℕ n) (map-sequential-diagram A n a)) = + apd s∞ + ( ap f∞ (coherence-cocone-sequential-diagram c n a) ∙ + C (succ-ℕ n) (map-sequential-diagram A n a)) + [step-2] a = + inv + ( apd-concat' s∞ + ( ap f∞ (coherence-cocone-sequential-diagram c n a)) + ( C (succ-ℕ n) (map-sequential-diagram A n a))) + [step-3] : + (a : family-sequential-diagram A n) → + ap + ( λ p → tr Q p (s∞ (f∞ (map-cocone-sequential-diagram c n a)))) + ( inv + ( coherence-htpy-cocone-map-sequential-colimit-hom-sequential-diagram up-c c' f n a)) ∙ + apd s∞ + ( ap f∞ (coherence-cocone-sequential-diagram c n a) ∙ + C (succ-ℕ n) (map-sequential-diagram A n a)) = + apd s∞ + ( C n a ∙ + ( ( coherence-cocone-sequential-diagram c' n + ( map-hom-sequential-diagram B f n a)) ∙ + ( ap + ( map-cocone-sequential-diagram c' (succ-ℕ n)) + ( naturality-map-hom-sequential-diagram B f n a)))) + [step-3] a = + apd-apd s∞ _ _ + ( coherence-htpy-cocone-map-sequential-colimit-hom-sequential-diagram up-c c' f n a) + [step-4] : + (a : family-sequential-diagram A n) → + inv + ( tr-concat (C n a) _ (s∞ (f∞ (map-cocone-sequential-diagram c n a)))) ∙ + apd s∞ + ( C n a ∙ + ( ( coherence-cocone-sequential-diagram c' n + ( map-hom-sequential-diagram B f n a)) ∙ + ( ap + ( map-cocone-sequential-diagram c' (succ-ℕ n)) + ( naturality-map-hom-sequential-diagram B f n a)))) = + ap + ( tr Q (coherence-cocone-sequential-diagram c' n (map-hom-sequential-diagram B f n a) ∙ ap (map-cocone-sequential-diagram c' (succ-ℕ n)) (naturality-map-hom-sequential-diagram B f n a))) + ( apd s∞ (C n a)) ∙ + apd s∞ (coherence-cocone-sequential-diagram c' n (map-hom-sequential-diagram B f n a) ∙ ap (map-cocone-sequential-diagram c' (succ-ℕ n)) (naturality-map-hom-sequential-diagram B f n a)) + [step-4] a = + inv + ( apd-concat s∞ + ( C n a) + ( _)) + [step-5] : + (a : family-sequential-diagram A n) → + inv + ( tr-concat + ( coherence-cocone-sequential-diagram c' n + ( map-hom-sequential-diagram B f n a)) + ( ap + ( map-cocone-sequential-diagram c' (succ-ℕ n)) + ( naturality-map-hom-sequential-diagram B f n a)) + ( tr Q (C n a) (s∞ (f∞ (map-cocone-sequential-diagram c n a))))) ∙ + ap + ( tr Q (coherence-cocone-sequential-diagram c' n (map-hom-sequential-diagram B f n a) ∙ ap (map-cocone-sequential-diagram c' (succ-ℕ n)) (naturality-map-hom-sequential-diagram B f n a))) + ( apd s∞ (C n a)) = + ap + ( tr Q + ( ap + ( map-cocone-sequential-diagram c' (succ-ℕ n)) + ( naturality-map-hom-sequential-diagram B f n a)) ∘ + tr Q + ( coherence-cocone-sequential-diagram c' n + ( map-hom-sequential-diagram B f n a))) + ( apd s∞ (C n a)) ∙ + inv + ( tr-concat + ( coherence-cocone-sequential-diagram c' n + ( map-hom-sequential-diagram B f n a)) + ( ap + ( map-cocone-sequential-diagram c' (succ-ℕ n)) + ( naturality-map-hom-sequential-diagram B f n a)) + ( s∞ (map-cocone-sequential-diagram c' n (map-hom-sequential-diagram B f n a)))) + [step-5] a = + nat-htpy + ( inv-htpy + ( tr-concat + ( coherence-cocone-sequential-diagram c' n + ( map-hom-sequential-diagram B f n a)) + ( ap + ( map-cocone-sequential-diagram c' (succ-ℕ n)) + ( naturality-map-hom-sequential-diagram B f n a)))) + ( apd s∞ (C n a)) + [step-6] : + (a : family-sequential-diagram A n) → + inv + ( tr-concat + ( coherence-cocone-sequential-diagram c' n + ( map-hom-sequential-diagram B f n a)) + ( ap + ( map-cocone-sequential-diagram c' (succ-ℕ n)) + ( naturality-map-hom-sequential-diagram B f n a)) + ( s∞ (map-cocone-sequential-diagram c' n (map-hom-sequential-diagram B f n a)))) ∙ + apd s∞ + ( ( coherence-cocone-sequential-diagram c' n + ( map-hom-sequential-diagram B f n a)) ∙ + ( ap + ( map-cocone-sequential-diagram c' (succ-ℕ n)) + ( naturality-map-hom-sequential-diagram B f n a))) = + ap + ( tr Q + ( ap + ( map-cocone-sequential-diagram c' (succ-ℕ n)) + ( naturality-map-hom-sequential-diagram B f n a))) + ( apd s∞ + ( coherence-cocone-sequential-diagram c' n + ( map-hom-sequential-diagram B f n a))) ∙ + apd s∞ + ( ap + ( map-cocone-sequential-diagram c' (succ-ℕ n)) + ( naturality-map-hom-sequential-diagram B f n a)) + [step-6] a = inv (apd-concat s∞ _ _) + [step-7] : + (a : family-sequential-diagram A n) → + inv + ( substitution-law-tr Q + ( map-cocone-sequential-diagram c' (succ-ℕ n)) + ( naturality-map-hom-sequential-diagram B f n a)) ∙ + ap + ( tr Q + ( ap + ( map-cocone-sequential-diagram c' (succ-ℕ n)) + ( naturality-map-hom-sequential-diagram B f n a)) ∘ + tr Q + ( coherence-cocone-sequential-diagram c' n + ( map-hom-sequential-diagram B f n a))) + ( apd s∞ (C n a)) = + ap + ( tr (Q ∘ pr1 c' (succ-ℕ n)) (pr2 f n a) ∘ + tr Q + ( coherence-cocone-sequential-diagram c' n + ( map-hom-sequential-diagram B f n a))) + ( apd s∞ (C n a)) ∙ + inv + ( substitution-law-tr Q + ( map-cocone-sequential-diagram c' (succ-ℕ n)) + ( naturality-map-hom-sequential-diagram B f n a)) + [step-7] a = + nat-htpy + ( inv-htpy + ( λ q → + substitution-law-tr Q + ( map-cocone-sequential-diagram c' (succ-ℕ n)) + ( naturality-map-hom-sequential-diagram B f n a) + )) + ( apd s∞ (C n a)) + [step-8] : + (a : family-sequential-diagram A n) → + inv + ( substitution-law-tr Q + ( map-cocone-sequential-diagram c' (succ-ℕ n)) + ( naturality-map-hom-sequential-diagram B f n a)) ∙ + ap + ( tr Q + ( ap + ( map-cocone-sequential-diagram c' (succ-ℕ n)) + ( naturality-map-hom-sequential-diagram B f n a))) + ( apd s∞ + ( coherence-cocone-sequential-diagram c' n + ( map-hom-sequential-diagram B f n a))) = + ap + ( tr + ( Q ∘ map-cocone-sequential-diagram c' (succ-ℕ n)) + ( naturality-map-hom-sequential-diagram B f n a)) + ( apd s∞ + ( coherence-cocone-sequential-diagram c' n + ( map-hom-sequential-diagram B f n a))) ∙ + inv + ( substitution-law-tr Q + ( map-cocone-sequential-diagram c' (succ-ℕ n)) + ( naturality-map-hom-sequential-diagram B f n a)) + [step-8] a = + nat-htpy + ( inv-htpy + ( λ _ → + substitution-law-tr Q + ( map-cocone-sequential-diagram c' (succ-ℕ n)) + ( naturality-map-hom-sequential-diagram B f n a))) + ( apd s∞ + ( coherence-cocone-sequential-diagram c' n + ( map-hom-sequential-diagram B f n a))) + [step-9] : + (a : family-sequential-diagram A n) → + inv + ( substitution-law-tr Q + ( map-cocone-sequential-diagram c' (succ-ℕ n)) + ( naturality-map-hom-sequential-diagram B f n a)) ∙ + apd s∞ + ( ap + ( map-cocone-sequential-diagram c' (succ-ℕ n)) + ( naturality-map-hom-sequential-diagram B f n a)) = + apd + ( s∞ ∘ map-cocone-sequential-diagram c' (succ-ℕ n)) + ( naturality-map-hom-sequential-diagram B f n a) + [step-9] a = + inv + ( apd-left + ( map-cocone-sequential-diagram c' (succ-ℕ n)) + ( s∞) + ( naturality-map-hom-sequential-diagram B f n a)) + [step-10] : + (a : family-sequential-diagram A n) → + apd + ( s∞ ∘ map-cocone-sequential-diagram c' (succ-ℕ n)) + ( naturality-map-hom-sequential-diagram B f n a) ∙ + C' + ( succ-ℕ n) + ( map-hom-sequential-diagram B f + ( succ-ℕ n) + ( map-sequential-diagram A n a)) = + ap + ( tr + ( Q ∘ map-cocone-sequential-diagram c' (succ-ℕ n)) + ( naturality-map-hom-sequential-diagram B f n a)) + ( C' + ( succ-ℕ n) + ( map-sequential-diagram B n + ( map-hom-sequential-diagram B f n a))) ∙ + apd + ( map-section-dependent-sequential-diagram _ _ s (succ-ℕ n)) + ( naturality-map-hom-sequential-diagram B f n a) + [step-10] a = + inv-dep-nat-htpy + ( C' (succ-ℕ n)) + ( naturality-map-hom-sequential-diagram B f n a) + [step-11] : + (a : family-sequential-diagram A n) → + ap + ( tr + ( Q ∘ map-cocone-sequential-diagram c' (succ-ℕ n)) + ( naturality-map-hom-sequential-diagram B f n a)) + ( apd s∞ + ( coherence-cocone-sequential-diagram c' n + ( map-hom-sequential-diagram B f n a))) ∙ + ap + ( tr + ( Q ∘ map-cocone-sequential-diagram c' (succ-ℕ n)) + ( naturality-map-hom-sequential-diagram B f n a)) + ( C' + ( succ-ℕ n) + ( map-sequential-diagram B n + ( map-hom-sequential-diagram B f n a))) = + ap + ( tr + ( Q ∘ map-cocone-sequential-diagram c' (succ-ℕ n)) + ( naturality-map-hom-sequential-diagram B f n a)) + ( ap + ( tr Q + ( coherence-cocone-sequential-diagram c' n + ( map-hom-sequential-diagram B f n a))) + ( C' n (map-hom-sequential-diagram B f n a)) ∙ + naturality-map-section-dependent-sequential-diagram _ _ s n + ( map-hom-sequential-diagram B f n a)) + [step-11] a = + inv + ( ap-concat + ( tr + ( Q ∘ map-cocone-sequential-diagram c' (succ-ℕ n)) + ( naturality-map-hom-sequential-diagram B f n a)) + ( apd s∞ + ( coherence-cocone-sequential-diagram c' n + ( map-hom-sequential-diagram B f n a))) + ( C' + ( succ-ℕ n) + ( map-sequential-diagram B n + ( map-hom-sequential-diagram B f n a)))) ∙ + ap + ( ap + ( tr + ( Q ∘ map-cocone-sequential-diagram c' (succ-ℕ n)) + ( naturality-map-hom-sequential-diagram B f n a))) + ( pr2 𝒞 n (map-hom-sequential-diagram B f n a)) + [step-12] : + (a : family-sequential-diagram A n) → + ap + ( tr + ( Q ∘ map-cocone-sequential-diagram c' (succ-ℕ n)) + ( naturality-map-hom-sequential-diagram B f n a) ∘ + tr Q + ( coherence-cocone-sequential-diagram c' n + ( map-hom-sequential-diagram B f n a))) + ( apd s∞ (C n a)) ∙ + ap + ( tr + ( Q ∘ map-cocone-sequential-diagram c' (succ-ℕ n)) + ( naturality-map-hom-sequential-diagram B f n a)) + ( ap + ( tr Q + ( coherence-cocone-sequential-diagram c' n + ( map-hom-sequential-diagram B f n a))) + ( C' n (map-hom-sequential-diagram B f n a)) ∙ + naturality-map-section-dependent-sequential-diagram _ _ s n + ( map-hom-sequential-diagram B f n a)) = + ap + ( tr + ( Q ∘ map-cocone-sequential-diagram c' (succ-ℕ n)) + ( naturality-map-hom-sequential-diagram B f n a) ∘ + tr Q + ( coherence-cocone-sequential-diagram c' n + ( map-hom-sequential-diagram B f n a))) + ( apd s∞ (C n a) ∙ + C' n (map-hom-sequential-diagram B f n a)) ∙ + ap + ( tr + ( Q ∘ map-cocone-sequential-diagram c' (succ-ℕ n)) + ( naturality-map-hom-sequential-diagram B f n a)) + ( naturality-map-section-dependent-sequential-diagram _ _ s n + ( map-hom-sequential-diagram B f n a)) + open import foundation.whiskering-identifications-concatenation + [step-12] a = + left-whisker-concat-coherence-triangle-identifications + ( ap _ (apd s∞ (C n a))) + _ _ _ + ( ap-concat + ( tr + ( Q ∘ map-cocone-sequential-diagram c' (succ-ℕ n)) + ( naturality-map-hom-sequential-diagram B f n a)) + ( ap + ( tr Q + ( coherence-cocone-sequential-diagram c' n + ( map-hom-sequential-diagram B f n a))) + ( C' n (map-hom-sequential-diagram B f n a))) + ( naturality-map-section-dependent-sequential-diagram _ _ s n + ( map-hom-sequential-diagram B f n a)) ∙ + right-whisker-concat + ( inv + ( ap-comp + ( tr + ( Q ∘ map-cocone-sequential-diagram c' (succ-ℕ n)) + ( naturality-map-hom-sequential-diagram B f n a)) + ( tr Q + ( coherence-cocone-sequential-diagram c' n + ( map-hom-sequential-diagram B f n a))) + ( C' n (map-hom-sequential-diagram B f n a)))) + ( _)) ∙ + right-whisker-concat + ( inv + (ap-concat + ( tr + ( Q ∘ map-cocone-sequential-diagram c' (succ-ℕ n)) + ( naturality-map-hom-sequential-diagram B f n a) ∘ + tr Q + ( coherence-cocone-sequential-diagram c' n + ( map-hom-sequential-diagram B f n a))) + ( apd s∞ (C n a)) + ( C' n (map-hom-sequential-diagram B f n a)))) + ( _) + + opaque + unfolding γ γ' γ-base' γ-flip + + [i] : goal + [i] = + transpose-sq + ( map-sequential-diagram A n) + ( s∞ ∘ f∞ ∘ map-cocone-sequential-diagram c n) + ( s∞ ∘ f∞ ∘ map-cocone-sequential-diagram c (succ-ℕ n)) + ( map-section-dependent-sequential-diagram _ _ s n ∘ map-hom-sequential-diagram B f n) + ( map-section-dependent-sequential-diagram _ _ s (succ-ℕ n) ∘ map-hom-sequential-diagram B f (succ-ℕ n)) + ( λ q → tr (Q ∘ f∞) (coherence-cocone-sequential-diagram c n _) q) + ( ( tr + ( Q ∘ map-cocone-sequential-diagram c' (succ-ℕ n)) + ( naturality-map-hom-sequential-diagram B f n _)) ∘ + ( tr Q + ( coherence-cocone-sequential-diagram c' n + ( map-hom-sequential-diagram B f n _)))) + ( λ {a} → equiv-tr Q (C n a)) + ( λ {a} → equiv-tr Q (C (succ-ℕ n) a)) + ( λ a → apd (s∞ ∘ f∞) (coherence-cocone-sequential-diagram c n a)) + ( γ n _) + ( λ a → apd s∞ (C (succ-ℕ n) a) ∙ C' (succ-ℕ n) (map-hom-sequential-diagram B f (succ-ℕ n) a)) + ( λ a → apd s∞ (C n a) ∙ C' n (map-hom-sequential-diagram B f n a)) + ( λ a → + ap + ( tr (Q ∘ map-cocone-sequential-diagram c' (succ-ℕ n)) (naturality-map-hom-sequential-diagram B f n a)) + ( naturality-map-section-dependent-sequential-diagram _ _ s n (map-hom-sequential-diagram B f n a)) ∙ + apd (map-section-dependent-sequential-diagram _ _ s (succ-ℕ n)) (naturality-map-hom-sequential-diagram B f n a)) + ( λ a → + ( left-whisker-concat + ( γ n a (s∞ (f∞ (map-cocone-sequential-diagram c n a)))) + ( inv (assoc _ _ _))) ∙ + ( inv (assoc _ _ _)) ∙ + ( right-whisker-concat + ( ( right-whisker-concat-coherence-triangle-identifications' _ _ _ + ( apd s∞ (C (succ-ℕ n) (map-sequential-diagram A n a))) + ( assoc _ _ _ ∙ + left-whisker-concat + ( γ-base' up-c c' f (Q ∘ f∞) Q id-fam-equiv n a (s∞ (f∞ (map-cocone-sequential-diagram c n a)))) + ( [step-1] a) ∙ + assoc _ _ _)) ∙ + ( assoc _ _ _) ∙ + ( left-whisker-concat + ( _) + ( [step-2] a)) ∙ + ( left-whisker-concat-coherence-triangle-identifications' _ _ _ _ + ( [step-3] a)) ∙ + ( left-whisker-concat-coherence-triangle-identifications' _ _ _ _ + ( [step-4] a)) ∙ + ( left-whisker-concat-coherence-triangle-identifications' _ _ _ _ + ( ( right-whisker-concat-coherence-triangle-identifications' _ _ _ + ( apd s∞ _) + ( [step-5] a)) ∙ + ( ( left-whisker-concat-coherence-triangle-identifications' _ _ _ _ + ( [step-6] a)))) ∙ + ( right-whisker-concat-coherence-square-identifications _ _ _ _ + ( [step-7] a) + ( _)) ∙ + ( left-whisker-concat _ + ( ( right-whisker-concat-coherence-square-identifications _ _ _ _ + ( [step-8] a) + ( _)) ∙ + ( left-whisker-concat _ + ( [step-9] a)))))) + ( C' + ( succ-ℕ n) + ( map-hom-sequential-diagram B f (succ-ℕ n) + ( map-sequential-diagram A n a)))) ∙ + ( assoc _ _ _) ∙ + ( left-whisker-concat-coherence-triangle-identifications + ( ap + ( tr + ( Q ∘ map-cocone-sequential-diagram c' (succ-ℕ n)) + ( naturality-map-hom-sequential-diagram B f n a) ∘ + tr Q + ( coherence-cocone-sequential-diagram c' n + ( map-hom-sequential-diagram B f n a))) + ( apd s∞ (C n a))) + _ _ _ + ( ( left-whisker-concat-coherence-square-identifications _ _ _ _ _ + ( [step-10] a)) ∙ + ( right-whisker-concat + ( [step-11] a) + ( _)))) ∙ + ( right-whisker-concat + ( [step-12] a) + ( apd + ( map-section-dependent-sequential-diagram _ _ s (succ-ℕ n)) + ( naturality-map-hom-sequential-diagram B f n a))) ∙ + ( assoc _ _ _)) + + lemma-1 : + s∞ ∘ f∞ ~ sect-family-sect-dd-sequential-colimit up-c P comp-over-diagram + lemma-1 = + htpy-htpy-section-out-of-sequential-colimit up-c P _ _ + ( concat-htpy-dependent-cocone-sequential-diagram P + ( lemma-1-2) + ( inv-htpy-dependent-cocone-sequential-diagram P lemma-1-1)) + + module _ + (t : section-descent-data-sequential-colimit P') + (let t∞ = sect-family-sect-dd-sequential-colimit up-c P t) + (F : + (n : ℕ) (a : family-sequential-diagram A n) → + f∞n n a (map-section-dependent-sequential-diagram _ _ t n a) = + map-section-dependent-sequential-diagram _ _ s n + ( map-hom-sequential-diagram B f n a)) + (cubes : + (n : ℕ) → + section-square-over + ( map-sequential-diagram A n) + ( map-hom-sequential-diagram B f n) + ( map-hom-sequential-diagram B f (succ-ℕ n)) + ( map-sequential-diagram B n) + ( λ {a} → tr (Q ∘ f∞) (coherence-cocone-sequential-diagram c n a)) + ( λ {a} → f∞n n a) + ( λ {a} → f∞n (succ-ℕ n) a) + ( λ {b} → tr Q (coherence-cocone-sequential-diagram c' n b)) + ( map-section-dependent-sequential-diagram _ _ t n) + ( map-section-dependent-sequential-diagram _ _ s n) + ( map-section-dependent-sequential-diagram _ _ t (succ-ℕ n)) + ( map-section-dependent-sequential-diagram _ _ s (succ-ℕ n)) + ( naturality-map-section-dependent-sequential-diagram _ _ t n) + ( F n) + ( F (succ-ℕ n)) + ( naturality-map-section-dependent-sequential-diagram _ _ s n) + ( naturality-map-hom-sequential-diagram B f n) + ( λ {a} → γ n a)) + where + + opaque + unfolding γ-flip + + lemma-2 : htpy-section-dependent-sequential-diagram t comp-over-diagram + pr1 lemma-2 n = + invert-fiberwise-triangle + ( map-section-dependent-sequential-diagram _ _ t n) + ( map-section-dependent-sequential-diagram _ _ s n ∘ map-hom-sequential-diagram B f n) + ( λ a → equiv-tr Q (C n a)) + ( F n) + pr2 lemma-2 n a = + flop-section + ( map-sequential-diagram A n) + ( map-hom-sequential-diagram B f n) + ( map-hom-sequential-diagram B f (succ-ℕ n)) + ( map-sequential-diagram B n) + ( λ {a} → tr (Q ∘ f∞) (coherence-cocone-sequential-diagram c n a)) + ( λ a → equiv-tr Q (C n a)) + ( λ a → equiv-tr Q (C (succ-ℕ n) a)) + ( λ {b} → tr Q (coherence-cocone-sequential-diagram c' n b)) + ( map-section-dependent-sequential-diagram _ _ t n) + ( map-section-dependent-sequential-diagram _ _ s n) + ( map-section-dependent-sequential-diagram _ _ t (succ-ℕ n)) + ( map-section-dependent-sequential-diagram _ _ s (succ-ℕ n)) + ( naturality-map-section-dependent-sequential-diagram _ _ t n) + ( F n) + ( F (succ-ℕ n)) + ( naturality-map-section-dependent-sequential-diagram _ _ s n) + ( naturality-map-hom-sequential-diagram B f n) + ( λ {a} → γ n a) + ( cubes n) + ( a) ∙ + assoc _ _ _ ∙ + ap + ( ap + ( tr P (coherence-cocone-sequential-diagram c n a)) + ( pr1 lemma-2 n a) ∙ + γ-flip n a (map-section-dependent-sequential-diagram _ _ s n (map-hom-sequential-diagram B f n a)) ∙_) + ( ( ap + ( _∙ + ap + ( tr Q (inv (C (succ-ℕ n) (map-sequential-diagram A n a)))) + ( apd + ( map-section-dependent-sequential-diagram _ _ s (succ-ℕ n)) + ( naturality-map-hom-sequential-diagram B f n a))) + ( ap-comp + ( tr Q (inv (C (succ-ℕ n) (map-sequential-diagram A n a)))) + ( tr + ( Q ∘ map-cocone-sequential-diagram c' (succ-ℕ n)) + ( naturality-map-hom-sequential-diagram B f n a)) + ( naturality-map-section-dependent-sequential-diagram _ _ s n + ( map-hom-sequential-diagram B f n a)))) ∙ + inv + ( ( ap-concat + ( tr Q (inv (C (succ-ℕ n) (map-sequential-diagram A n a)))) + ( _) + ( _)))) ∙ + assoc _ _ _ + + theorem : t∞ ~ s∞ ∘ f∞ + theorem = + htpy-colimit-htpy-diagram-section up-c P t comp-over-diagram lemma-2 ∙h + inv-htpy lemma-1 +``` + +```agda +module _ + {l1 l2 l3 l4 l5 : Level} + {A : sequential-diagram l1} {X : UU l2} + {c : cocone-sequential-diagram A X} + (up-c : universal-property-sequential-colimit c) + {B : sequential-diagram l3} {Y : UU l4} + {c' : cocone-sequential-diagram B Y} + (up-c' : universal-property-sequential-colimit c') + (f : hom-sequential-diagram A B) + (let f∞ = map-sequential-colimit-hom-sequential-diagram up-c c' f) + (Q : Y → UU l5) + (let Q' = descent-data-family-cocone-sequential-diagram c (Q ∘ f∞)) + where + + comp-over-diagram' : + -- For now restricted to l5 + (P : X → UU l5) + (let P' = descent-data-family-cocone-sequential-diagram c P) + (e' : fam-equiv P (Q ∘ f∞)) + (s : section-descent-data-sequential-colimit P') + (let s∞ = sect-family-sect-dd-sequential-colimit up-c P s) → + section-descent-data-sequential-colimit Q' + pr1 (comp-over-diagram' P e' s) n a = + map-fam-equiv e' + ( map-cocone-sequential-diagram c n a) + ( map-section-dependent-sequential-diagram _ _ s n a) + pr2 (comp-over-diagram' P e' s) n a = + inv + ( preserves-tr + ( map-fam-equiv e') + ( coherence-cocone-sequential-diagram c n a) + ( map-section-dependent-sequential-diagram _ _ s n a)) ∙ + ap + ( map-fam-equiv e' + ( map-cocone-sequential-diagram c (succ-ℕ n) + ( map-sequential-diagram A n a))) + ( naturality-map-section-dependent-sequential-diagram _ _ s n a) + + compute-comp-over-diagram' : + (s : section-descent-data-sequential-colimit Q') → + htpy-section-dependent-sequential-diagram + ( comp-over-diagram' (Q ∘ f∞) id-fam-equiv s) + ( s) + pr1 (compute-comp-over-diagram' s) n = refl-htpy + pr2 (compute-comp-over-diagram' s) n a = + right-unit ∙ + ap-binary + ( _∙_) + ( ap + ( inv) + ( compute-preserves-tr-id + ( coherence-cocone-sequential-diagram c n a) + ( map-section-dependent-sequential-diagram _ _ s n a))) + ( ap-id (naturality-map-section-dependent-sequential-diagram _ _ s n a)) + + theorem' : + (P : X → UU l5) + (let P' = descent-data-family-cocone-sequential-diagram c P) + (e' : fam-equiv P (Q ∘ f∞)) + (s : section-descent-data-sequential-colimit P') + (let s∞ = sect-family-sect-dd-sequential-colimit up-c P s) → + sect-family-sect-dd-sequential-colimit up-c (Q ∘ f∞) + ( comp-over-diagram' P e' s) ~ + (map-fam-equiv e' _ ∘ s∞) + theorem' P = + ind-fam-equiv' + ( λ P e' → + let P' = descent-data-family-cocone-sequential-diagram c P in + (s : section-descent-data-sequential-colimit P') → + sect-family-sect-dd-sequential-colimit up-c (Q ∘ f∞) + ( comp-over-diagram' P e' s) ~ + map-fam-equiv e' _ ∘ sect-family-sect-dd-sequential-colimit up-c P s) + ( λ s → + htpy-colimit-htpy-diagram-section up-c (Q ∘ f∞) _ _ + ( compute-comp-over-diagram' s)) +``` + +```agda +module _ + {l1 l2 l3 l4 l5 : Level} + {A : sequential-diagram l1} {X : UU l2} + {c : cocone-sequential-diagram A X} + (up-c : universal-property-sequential-colimit c) + {B : sequential-diagram l3} {Y : UU l4} + {c' : cocone-sequential-diagram B Y} + (up-c' : universal-property-sequential-colimit c') + (f : hom-sequential-diagram A B) + {P : X → UU l5} {Q : Y → UU l5} + (let + P' = descent-data-family-cocone-sequential-diagram c P + Q' = descent-data-family-cocone-sequential-diagram c' Q + f∞ = map-sequential-colimit-hom-sequential-diagram up-c c' f) + (s : section-descent-data-sequential-colimit P') + (t : section-descent-data-sequential-colimit Q') + (let + s∞ = sect-family-sect-dd-sequential-colimit up-c P s + t∞ = sect-family-sect-dd-sequential-colimit up-c' Q t) + (e : fam-equiv P (Q ∘ f∞)) + (let C = htpy-htpy-cocone-map-sequential-colimit-hom-sequential-diagram up-c c' f) + (let + f∞n = + λ n a → + tr Q (C n a) ∘ map-fam-equiv e (map-cocone-sequential-diagram c n a)) + where + + + -- TODO: cleanup + -- - make γ into a proper definition + -- - pasting of squares + -- - find the right lemmas + opaque + unfolding square-over-diagram-square-over-colimit γ γ' γ-base' + square-colimit-cube-diagram : + (F : + (n : ℕ) → + f∞n n _ ∘ map-section-dependent-sequential-diagram _ _ s n ~ + map-section-dependent-sequential-diagram _ _ t n ∘ + map-hom-sequential-diagram B f n) → + ((n : ℕ) → + section-square-over + ( map-sequential-diagram A n) + ( map-hom-sequential-diagram B f n) + ( map-hom-sequential-diagram B f (succ-ℕ n)) + ( map-sequential-diagram B n) + ( λ {a} → map-family-descent-data-sequential-colimit P' n a) + ( λ {a} → f∞n n a) + ( λ {a} → f∞n (succ-ℕ n) a) + ( λ {b} → map-family-descent-data-sequential-colimit Q' n b) + ( map-section-dependent-sequential-diagram _ _ s n) + ( map-section-dependent-sequential-diagram _ _ t n) + ( map-section-dependent-sequential-diagram _ _ s (succ-ℕ n)) + ( map-section-dependent-sequential-diagram _ _ t (succ-ℕ n)) + ( naturality-map-section-dependent-sequential-diagram _ _ s n) + ( F n) + ( F (succ-ℕ n)) + ( naturality-map-section-dependent-sequential-diagram _ _ t n) + ( naturality-map-hom-sequential-diagram B f n) + ( square-over-diagram-square-over-colimit up-c c' f P Q e n _)) → + map-fam-equiv e _ ∘ s∞ ~ t∞ ∘ f∞ + square-colimit-cube-diagram F cubes = + inv-htpy (theorem' up-c up-c' f Q P e s) ∙h + theorem up-c up-c' Q f t _ F + ( λ n a → + assoc _ _ _ ∙ + ap + ( γ up-c up-c' Q f t n a (map-fam-equiv e (map-cocone-sequential-diagram c n a) (map-section-dependent-sequential-diagram _ _ s n a)) ∙_) + ( ( ap + ( _∙ F (succ-ℕ n) (map-sequential-diagram A n a)) + ( ap-concat (tr Q (C (succ-ℕ n) (map-sequential-diagram A n a))) + ( inv (preserves-tr (map-fam-equiv e) (coherence-cocone-sequential-diagram c n a) (map-section-dependent-sequential-diagram _ _ s n a))) + ( ap (map-fam-equiv e (map-cocone-sequential-diagram c (succ-ℕ n) (map-sequential-diagram A n a))) (naturality-map-section-dependent-sequential-diagram _ _ s n a)) ∙ + ap + ( ap (tr Q (C (succ-ℕ n) (map-sequential-diagram A n a))) (inv (preserves-tr (map-fam-equiv e) (coherence-cocone-sequential-diagram c n a) (map-section-dependent-sequential-diagram _ _ s n a))) ∙_) + ( inv (ap-comp (tr Q (C (succ-ℕ n) _)) (map-fam-equiv e _) (naturality-map-section-dependent-sequential-diagram _ _ s n a))))) ∙ + ( assoc _ _ _)) ∙ + inv (assoc _ _ _) ∙ + inv (assoc _ _ _) ∙ + cubes n a) +``` diff --git a/src/synthetic-homotopy-theory/morphisms-dependent-sequential-diagrams.lagda.md b/src/synthetic-homotopy-theory/morphisms-dependent-sequential-diagrams.lagda.md index 129a0c0eca..5ce1fa4428 100644 --- a/src/synthetic-homotopy-theory/morphisms-dependent-sequential-diagrams.lagda.md +++ b/src/synthetic-homotopy-theory/morphisms-dependent-sequential-diagrams.lagda.md @@ -10,10 +10,13 @@ module synthetic-homotopy-theory.morphisms-dependent-sequential-diagrams where open import elementary-number-theory.natural-numbers open import foundation.commuting-squares-of-maps +open import foundation.dependent-identifications open import foundation.dependent-pair-types +open import foundation.transport-along-identifications open import foundation.universe-levels open import synthetic-homotopy-theory.dependent-sequential-diagrams +open import synthetic-homotopy-theory.morphisms-sequential-diagrams open import synthetic-homotopy-theory.sequential-diagrams ``` @@ -111,3 +114,76 @@ module _ ( map-hom-dependent-sequential-diagram) coh-hom-dependent-sequential-diagram = pr2 h ``` + +### Morphisms of dependent sequential diagrams over morphisms of sequential diagrams + +```agda +module _ + {l1 l2 l3 l4 : Level} {A : sequential-diagram l1} {B : sequential-diagram l2} + (P : dependent-sequential-diagram A l3) + (Q : dependent-sequential-diagram B l4) + (h : hom-sequential-diagram A B) + where + + hom-dependent-sequential-diagram-over : UU (l1 ⊔ l3 ⊔ l4) + hom-dependent-sequential-diagram-over = + Σ ( (n : ℕ) (a : family-sequential-diagram A n) → + family-dependent-sequential-diagram P n a → + family-dependent-sequential-diagram Q n + ( map-hom-sequential-diagram B h n a)) + ( λ f → + (n : ℕ) (a : family-sequential-diagram A n) → + (p : family-dependent-sequential-diagram P n a) → + dependent-identification + ( family-dependent-sequential-diagram Q (succ-ℕ n)) + ( naturality-map-hom-sequential-diagram B h n a) + ( map-dependent-sequential-diagram Q n + ( map-hom-sequential-diagram B h n a) + ( f n a p)) + ( f (succ-ℕ n) (map-sequential-diagram A n a) (map-dependent-sequential-diagram P n a p))) +``` + +## Properties + +### TODO + +```agda +module _ + {l1 l2 l3 : Level} {A : sequential-diagram l1} {B : sequential-diagram l2} + (h : hom-sequential-diagram A B) + where + + pullback-hom-dependent-sequential-diagram : + dependent-sequential-diagram B l3 → + dependent-sequential-diagram A l3 + pr1 (pullback-hom-dependent-sequential-diagram Q) n a = + family-dependent-sequential-diagram Q n + ( map-hom-sequential-diagram B h n a) + pr2 (pullback-hom-dependent-sequential-diagram Q) n a q = + tr + ( family-dependent-sequential-diagram Q (succ-ℕ n)) + ( naturality-map-hom-sequential-diagram B h n a) + ( map-dependent-sequential-diagram Q n + ( map-hom-sequential-diagram B h n a) + ( q)) +``` + +```agda +module _ + {l1 l2 l3 l4 : Level} {A : sequential-diagram l1} {B : sequential-diagram l2} + {P : dependent-sequential-diagram A l3} + {Q : dependent-sequential-diagram B l4} + (h : hom-sequential-diagram A B) + where + + open import foundation.homotopies + + hom-dep-seq-diag-over-hom-dep-seq-diag : + hom-dependent-sequential-diagram P + ( pullback-hom-dependent-sequential-diagram h Q) → + hom-dependent-sequential-diagram-over P Q h + pr1 (hom-dep-seq-diag-over-hom-dep-seq-diag h') = + map-hom-dependent-sequential-diagram (pullback-hom-dependent-sequential-diagram h Q) h' + pr2 (hom-dep-seq-diag-over-hom-dep-seq-diag h') n a = + inv-htpy (coh-hom-dependent-sequential-diagram (pullback-hom-dependent-sequential-diagram h Q) h' n a) +``` diff --git a/src/synthetic-homotopy-theory/morphisms-descent-data-pushouts.lagda.md b/src/synthetic-homotopy-theory/morphisms-descent-data-pushouts.lagda.md index 27f747d90f..98d068c27f 100644 --- a/src/synthetic-homotopy-theory/morphisms-descent-data-pushouts.lagda.md +++ b/src/synthetic-homotopy-theory/morphisms-descent-data-pushouts.lagda.md @@ -74,7 +74,7 @@ homotopies HB(gs) ·r PS s hB(gs) ∘ PS s ---------------> kB(gs) ∘ PS s | | - hS s | | tS s + hS s | | kS s | | ∨ ∨ QS s ∘ hA(fs) ---------------> QS s ∘ kA(fs) @@ -83,10 +83,10 @@ homotopies [commutes](foundation-core.commuting-squares-of-homotopies.md). This coherence datum may be seen as a filler of the diagram one gets by gluing the squares `hS` -and `tS` along the common vertical maps +and `kS` along the common vertical maps ```text - tA(fs) + kA(fs) ________ / ∨ PA(fs) QA(fs) @@ -94,7 +94,7 @@ and `tS` along the common vertical maps | hA(fs) | | | PS s | | QS s - | tB(gs) | + | kB(gs) | | ________ | ∨ / ∨ ∨ PB(gs) QB(gs). @@ -102,7 +102,7 @@ and `tS` along the common vertical maps hB(gs) ``` -The front and back faces are `hS s` and `tS s`, and the top and bottom faces are +The front and back faces are `hS s` and `kS s`, and the top and bottom faces are `HA(fs)` and `HB(gs)`, respectively. `HS` then expresses that going along the front face and then the top face is homotopic to first going along the bottom face and then the back face. diff --git a/src/synthetic-homotopy-theory/morphisms-sequential-diagrams.lagda.md b/src/synthetic-homotopy-theory/morphisms-sequential-diagrams.lagda.md index a094834153..d4a6a5751d 100644 --- a/src/synthetic-homotopy-theory/morphisms-sequential-diagrams.lagda.md +++ b/src/synthetic-homotopy-theory/morphisms-sequential-diagrams.lagda.md @@ -24,6 +24,7 @@ open import foundation.structure-identity-principle open import foundation.torsorial-type-families open import foundation.universe-levels open import foundation.whiskering-homotopies-composition +open import foundation.whiskering-homotopies-concatenation open import synthetic-homotopy-theory.dependent-sequential-diagrams open import synthetic-homotopy-theory.sequential-diagrams @@ -274,3 +275,54 @@ module _ eq-htpy-sequential-diagram f f' = map-inv-equiv (extensionality-hom-sequential-diagram f f') ``` + +### Composition of morphisms of sequential diagrams is associative + +```agda +module _ + {l1 l2 l3 l4 : Level} + {A : sequential-diagram l1} {B : sequential-diagram l2} + {C : sequential-diagram l3} {D : sequential-diagram l4} + (f : hom-sequential-diagram A B) (g : hom-sequential-diagram B C) + (h : hom-sequential-diagram C D) + where + + assoc-comp-hom-sequential-diagram : + htpy-hom-sequential-diagram D + ( comp-hom-sequential-diagram A B D + ( comp-hom-sequential-diagram B C D h g) + ( f)) + ( comp-hom-sequential-diagram A C D h + ( comp-hom-sequential-diagram A B C g f)) + pr1 assoc-comp-hom-sequential-diagram n = refl-htpy + pr2 assoc-comp-hom-sequential-diagram n = + right-unit-htpy ∙h + assoc-htpy + ( naturality-map-hom-sequential-diagram D h n ·r + ( map-hom-sequential-diagram C g n ∘ + map-hom-sequential-diagram B f n)) + ( map-hom-sequential-diagram D h (succ-ℕ n) ·l + naturality-map-hom-sequential-diagram C g n ·r + map-hom-sequential-diagram B f n) + ( ( map-hom-sequential-diagram D h (succ-ℕ n) ∘ + map-hom-sequential-diagram C g (succ-ℕ n)) ·l + naturality-map-hom-sequential-diagram B f n) ∙h + left-whisker-concat-htpy + ( naturality-map-hom-sequential-diagram D h n ·r + ( map-hom-sequential-diagram C g n ∘ map-hom-sequential-diagram B f n)) + ( left-whisker-concat-htpy + ( map-hom-sequential-diagram D h (succ-ℕ n) ·l + naturality-map-hom-sequential-diagram C g n ·r + map-hom-sequential-diagram B f n) + ( inv-preserves-comp-left-whisker-comp + ( map-hom-sequential-diagram D h (succ-ℕ n)) + ( map-hom-sequential-diagram C g (succ-ℕ n)) + ( naturality-map-hom-sequential-diagram B f n)) ∙h + inv-htpy + ( distributive-left-whisker-comp-concat + ( map-hom-sequential-diagram D h (succ-ℕ n)) + ( naturality-map-hom-sequential-diagram C g n ·r + map-hom-sequential-diagram B f n) + ( map-hom-sequential-diagram C g (succ-ℕ n) ·l + naturality-map-hom-sequential-diagram B f n))) +``` diff --git a/src/synthetic-homotopy-theory/pushouts.lagda.md b/src/synthetic-homotopy-theory/pushouts.lagda.md index 1b5112681f..7c98487510 100644 --- a/src/synthetic-homotopy-theory/pushouts.lagda.md +++ b/src/synthetic-homotopy-theory/pushouts.lagda.md @@ -21,6 +21,7 @@ open import foundation.identity-types open import foundation.propositions open import foundation.retractions open import foundation.sections +open import foundation.span-diagrams open import foundation.transport-along-homotopies open import foundation.transport-along-identifications open import foundation.universe-levels @@ -124,6 +125,37 @@ cocone-pushout : pr1 (cocone-pushout f g) = inl-pushout f g pr1 (pr2 (cocone-pushout f g)) = inr-pushout f g pr2 (pr2 (cocone-pushout f g)) = glue-pushout f g + +module _ + {l1 l2 l3 : Level} (𝒮 : span-diagram l1 l2 l3) + where + + standard-pushout : UU (l1 ⊔ l2 ⊔ l3) + standard-pushout = + pushout (left-map-span-diagram 𝒮) (right-map-span-diagram 𝒮) + + inl-standard-pushout : domain-span-diagram 𝒮 → standard-pushout + inl-standard-pushout = + inl-pushout (left-map-span-diagram 𝒮) (right-map-span-diagram 𝒮) + + inr-standard-pushout : codomain-span-diagram 𝒮 → standard-pushout + inr-standard-pushout = + inr-pushout (left-map-span-diagram 𝒮) (right-map-span-diagram 𝒮) + + glue-standard-pushout : + coherence-square-maps + ( right-map-span-diagram 𝒮) + ( left-map-span-diagram 𝒮) + ( inr-standard-pushout) + ( inl-standard-pushout) + glue-standard-pushout = + glue-pushout (left-map-span-diagram 𝒮) (right-map-span-diagram 𝒮) + + cocone-pushout-span-diagram : + cocone-span-diagram 𝒮 standard-pushout + pr1 cocone-pushout-span-diagram = inl-standard-pushout + pr1 (pr2 cocone-pushout-span-diagram) = inr-standard-pushout + pr2 (pr2 cocone-pushout-span-diagram) = glue-standard-pushout ``` ### The dependent cogap map diff --git a/src/synthetic-homotopy-theory/sequential-colimits.lagda.md b/src/synthetic-homotopy-theory/sequential-colimits.lagda.md index e0767413bd..4b5b04f385 100644 --- a/src/synthetic-homotopy-theory/sequential-colimits.lagda.md +++ b/src/synthetic-homotopy-theory/sequential-colimits.lagda.md @@ -16,6 +16,7 @@ open import foundation.function-types open import foundation.functoriality-dependent-function-types open import foundation.functoriality-dependent-pair-types open import foundation.homotopies +open import foundation.identity-types open import foundation.propositions open import foundation.universe-levels @@ -205,6 +206,23 @@ module _ ( x : standard-sequential-colimit A) → P x dependent-cogap-standard-sequential-colimit = map-inv-equiv equiv-dup-standard-sequential-colimit + + compute-incl-dependent-cogap-standard-sequential-colimit : + { P : standard-sequential-colimit A → UU l2} → + ( d : + dependent-cocone-sequential-diagram + ( cocone-standard-sequential-colimit A) + ( P)) → + ( n : ℕ) (a : family-sequential-diagram A n) → + dependent-cogap-standard-sequential-colimit d + ( map-cocone-standard-sequential-colimit n a) = + map-dependent-cocone-sequential-diagram P d n a + compute-incl-dependent-cogap-standard-sequential-colimit d = + pr1 + ( htpy-eq-dependent-cocone-sequential-diagram _ _ d + ( is-section-map-inv-is-equiv + ( dup-standard-sequential-colimit _) + ( d))) ``` ### The small predicate of being a sequential colimit cocone diff --git a/src/synthetic-homotopy-theory/shifts-sequential-diagrams.lagda.md b/src/synthetic-homotopy-theory/shifts-sequential-diagrams.lagda.md index c7c6e22f6f..be26604bde 100644 --- a/src/synthetic-homotopy-theory/shifts-sequential-diagrams.lagda.md +++ b/src/synthetic-homotopy-theory/shifts-sequential-diagrams.lagda.md @@ -934,17 +934,20 @@ module _ (up-c : universal-property-sequential-colimit c) where - compute-map-colimit-hom-shift-once-sequential-diagram : - map-sequential-colimit-hom-sequential-diagram - ( up-c) - ( shift-once-cocone-sequential-diagram c) - ( hom-shift-once-sequential-diagram A) ~ - id - compute-map-colimit-hom-shift-once-sequential-diagram = - ( htpy-map-universal-property-htpy-cocone-sequential-diagram - ( up-c) - ( compute-map-cocone-hom-shift-sequential-diagram c)) ∙h - ( compute-map-universal-property-sequential-colimit-id up-c) + opaque + unfolding map-sequential-colimit-hom-sequential-diagram + + compute-map-colimit-hom-shift-once-sequential-diagram : + map-sequential-colimit-hom-sequential-diagram + ( up-c) + ( shift-once-cocone-sequential-diagram c) + ( hom-shift-once-sequential-diagram A) ~ + id + compute-map-colimit-hom-shift-once-sequential-diagram = + ( htpy-map-universal-property-htpy-cocone-sequential-diagram + ( up-c) + ( compute-map-cocone-hom-shift-sequential-diagram c)) ∙h + ( compute-map-universal-property-sequential-colimit-id up-c) module _ {l1 l2 : Level} {A : sequential-diagram l1} diff --git a/src/synthetic-homotopy-theory/stuff-over.lagda.md b/src/synthetic-homotopy-theory/stuff-over.lagda.md new file mode 100644 index 0000000000..e5214a52e0 --- /dev/null +++ b/src/synthetic-homotopy-theory/stuff-over.lagda.md @@ -0,0 +1,1389 @@ +# Stuff over other stuff + +```agda +{-# OPTIONS --lossy-unification #-} +module synthetic-homotopy-theory.stuff-over where +``` + +
Imports + +```agda +open import foundation.action-on-identifications-dependent-functions +open import foundation.action-on-identifications-functions +open import foundation.commuting-cubes-of-maps +open import foundation.commuting-squares-of-homotopies +open import foundation.commuting-squares-of-maps +open import foundation.commuting-triangles-of-maps +open import foundation.dependent-identifications +open import foundation.equivalences +open import foundation.function-extensionality +open import foundation.function-types +open import foundation.functoriality-dependent-function-types +open import foundation.homotopies +open import foundation.identity-types +open import foundation.transport-along-identifications +open import foundation.transposition-identifications-along-equivalences +open import foundation.universe-levels +open import foundation.whiskering-higher-homotopies-composition +open import foundation.whiskering-homotopies-composition +open import foundation.whiskering-homotopies-concatenation +``` + +
+ +```agda +open import foundation.dependent-pair-types +open import foundation.equality-dependent-pair-types +open import foundation.functoriality-dependent-pair-types +module _ + {l1 l2 l3 l4 : Level} + {A : UU l1} {B : UU l2} + {A' : A → UU l3} {B' : B → UU l4} + (f : A → B) + (f' : (a : A) → A' a → B' (f a)) + where + + tot-map-over : Σ A A' → Σ B B' + tot-map-over = map-Σ B' f f' + + coh-tot-map-over : coherence-square-maps tot-map-over pr1 pr1 f + coh-tot-map-over = refl-htpy + +module _ + {l1 l2 l3 l4 : Level} + {A : UU l1} {B : UU l2} + {A' : A → UU l3} (B' : B → UU l4) + {f g : A → B} + (H : f ~ g) + (f' : {a : A} → A' a → B' (f a)) + (g' : {a : A} → A' a → B' (g a)) + where + + htpy-over : UU (l1 ⊔ l3 ⊔ l4) + htpy-over = + {a : A} (a' : A' a) → dependent-identification B' (H a) (f' a') (g' a') + +module _ + {l1 l2 l3 l4 : Level} + {A : UU l1} {B : UU l2} + {A' : A → UU l3} (B' : B → UU l4) + {f g : A → B} + (H : f ~ g) + (f' : {a : A} → A' a → B' (f a)) + (g' : {a : A} → A' a → B' (g a)) + where + + inv-htpy-over : htpy-over B' H f' g' → htpy-over B' (inv-htpy H) g' f' + inv-htpy-over H' {a} a' = inv-dependent-identification B' (H a) (H' a') + +module _ + {l1 l2 : Level} {A : UU l1} {B : A → UU l2} + where + + compute-inv-dependent-identification : + {x y : A} (p : x = y) {x' : B x} {y' : B y} → + (q : dependent-identification B p x' y') → + inv-dependent-identification B p q = map-eq-transpose-equiv-inv' (equiv-tr B p) (inv q) + compute-inv-dependent-identification refl q = inv (right-unit ∙ ap-id (inv q)) + +module _ + {l1 l2 l3 l4 l5 l6 : Level} + {A : UU l1} {B : UU l2} {X : UU l3} + {A' : A → UU l4} {B' : B → UU l5} {X' : X → UU l6} + {f g : A → B} + (H : f ~ g) + {f' : {a : A} → A' a → B' (f a)} + {g' : {a : A} → A' a → B' (g a)} + (H' : htpy-over B' H f' g') + (s : X → A) (s' : {x : X} → X' x → A' (s x)) + where + + right-whisk-htpy-over : htpy-over B' (H ·r s) (f' ∘ s') (g' ∘ s') + right-whisk-htpy-over a' = H' (s' a') + +module _ + {l1 l2 l3 l4 : Level} + {A : UU l1} {B : UU l2} + {A' : A → UU l3} {B' : B → UU l4} + where + + left-whisk-dependent-identification : + {s : A → B} (s' : {a : A} → A' a → B' (s a)) + {x y : A} (p : x = y) + {x' : A' x} {y' : A' y} (q : dependent-identification A' p x' y') → + dependent-identification B' (ap s p) (s' x') (s' y') + left-whisk-dependent-identification s' refl q = ap s' q + + compute-left-whisk-dependent-identification : + {s : A → B} (s' : {a : A} → A' a → B' (s a)) + {x y : A} (p : x = y) + {x' : A' x} {y' : A' y} (q : dependent-identification A' p x' y') → + left-whisk-dependent-identification s' p q = + substitution-law-tr B' s p ∙ inv (preserves-tr (λ a → s' {a}) p x') ∙ ap s' q + compute-left-whisk-dependent-identification s' refl q = refl + +module _ + {l1 l2 l3 l4 l5 l6 : Level} + {A : UU l1} {B : UU l2} {X : UU l3} + {A' : A → UU l4} {B' : B → UU l5} {X' : X → UU l6} + {f g : A → B} + (H : f ~ g) + {f' : {a : A} → A' a → B' (f a)} + {g' : {a : A} → A' a → B' (g a)} + (H' : htpy-over B' H f' g') + {s : B → X} (s' : {b : B} → B' b → X' (s b)) + where + + LWMOTIF : {a : A} (a' : A' a) (g : A → B) (H : f ~ g) → UU (l5 ⊔ l6) + LWMOTIF {a} a' g H = + {g'a' : B' (g a)} → + (H' : tr B' (H a) (f' a') = g'a') → + tr X' (ap s (H a)) (s' (f' a')) = s' (g'a') + + left-whisk-htpy-over : htpy-over X' (s ·l H) (s' ∘ f') (s' ∘ g') + left-whisk-htpy-over {a} a' = left-whisk-dependent-identification s' (H a) (H' a') + +module _ + {l1 l2 l3 l4 : Level} + {A : UU l1} {B : UU l2} {A' : A → UU l3} {B' : B → UU l4} + {f g h : A → B} + (H : f ~ g) (K : g ~ h) + {f' : {a : A} → A' a → B' (f a)} + {g' : {a : A} → A' a → B' (g a)} + {h' : {a : A} → A' a → B' (h a)} + (H' : htpy-over B' H f' g') (K' : htpy-over B' K g' h') + where + + concat-htpy-over : htpy-over B' (H ∙h K) f' h' + concat-htpy-over {a} a' = + concat-dependent-identification B' (H a) (K a) (H' a') (K' a') + +module _ + {l1 l2 l3 l4 : Level} + {A : UU l1} {B : UU l2} {A' : A → UU l3} {B' : B → UU l4} + (f : A → B) + (f' : {a : A} → A' a → B' (f a)) + (sA : (a : A) → A' a) + (sB : (b : B) → B' b) + where + + section-map-over : UU (l1 ⊔ l4) + section-map-over = (a : A) → f' (sA a) = sB (f a) + +module _ + {l1 l2 l3 l4 l5 l6 : Level} + {A : UU l1} {B : UU l2} {C : UU l3} + {A' : A → UU l4} {B' : B → UU l5} {C' : C → UU l6} + (g : B → C) (f : A → B) + (g' : {b : B} → B' b → C' (g b)) + (f' : {a : A} → A' a → B' (f a)) + (sA : (a : A) → A' a) (sB : (b : B) → B' b) (sC : (c : C) → C' c) + where + + comp-section-map-over : + section-map-over g g' sB sC → section-map-over f f' sA sB → + section-map-over (g ∘ f) (g' ∘ f') sA sC + comp-section-map-over G F = + g' ·l F ∙h G ·r f + +module _ + {l1 l2 : Level} + {A : UU l1} {B : A → UU l2} + {x y : A} (p : x = y) + {x' : B x} {y' : B y} (q : dependent-identification B p x' y') + (s : (a : A) → B a) + (F : x' = s x) (G : y' = s y) + where + + section-dependent-identification : UU l2 + section-dependent-identification = + q ∙ G = ap (tr B p) F ∙ apd s p + +module _ + {l1 l2 l3 l4 : Level} + {A : UU l1} {B : UU l2} {A' : A → UU l3} {B' : B → UU l4} + {f g : A → B} + (H : f ~ g) + {f' : {a : A} → A' a → B' (f a)} + {g' : {a : A} → A' a → B' (g a)} + (H' : htpy-over B' H f' g') + (sA : (a : A) → A' a) + (sB : (b : B) → B' b) + (F : section-map-over f f' sA sB) + (G : section-map-over g g' sA sB) + where + + section-htpy-over : UU (l1 ⊔ l4) + section-htpy-over = + (a : A) → section-dependent-identification (H a) (H' (sA a)) sB (F a) (G a) + +module _ + {l1 l2 : Level} {A : UU l1} {B : A → UU l2} + where + + inv-section-identification-over : + {x y : A} (p : x = y) → + {x' : B x} {y' : B y} (q : dependent-identification B p x' y') → + (s : (a : A) → B a) → + (F : x' = s x) (G : y' = s y) → + section-dependent-identification p q s F G → + section-dependent-identification + ( inv p) + ( inv-dependent-identification B p q) + ( s) + ( G) + ( F) + inv-section-identification-over refl refl s F G α = + inv (right-unit ∙ ap-id G ∙ α ∙ right-unit ∙ ap-id F) + +module _ + {l1 l2 l3 l4 : Level} + {A : UU l1} {B : UU l2} {A' : A → UU l3} {B' : B → UU l4} + {f g : A → B} + (H : f ~ g) + {f' : {a : A} → A' a → B' (f a)} + {g' : {a : A} → A' a → B' (g a)} + (H' : htpy-over B' H f' g') + (sA : (a : A) → A' a) + (sB : (b : B) → B' b) + (F : section-map-over f f' sA sB) + (G : section-map-over g g' sA sB) + where + + inv-section-htpy-over : + section-htpy-over H H' sA sB F G → + section-htpy-over + ( inv-htpy H) + ( inv-htpy-over B' H f' g' H') + ( sA) + ( sB) + ( G) + ( F) + inv-section-htpy-over α a = + inv-section-identification-over (H a) (H' (sA a)) sB (F a) (G a) (α a) + +module _ + {l1 l2 l3 l4 l5 l6 l7 l8 : Level} + {A : UU l1} {B : UU l2} {C : UU l3} {D : UU l4} + {A' : A → UU l5} {B' : B → UU l6} {C' : C → UU l7} {D' : D → UU l8} + {f : A → B} {g : B → C} {h : C → D} + (f' : {a : A} → A' a → B' (f a)) + (g' : {b : B} → B' b → C' (g b)) + (h' : {c : C} → C' c → D' (h c)) + (sA : (a : A) → A' a) + (sB : (b : B) → B' b) + (sC : (c : C) → C' c) + (sD : (d : D) → D' d) + (F : section-map-over f f' sA sB) + (G : section-map-over g g' sB sC) + (H : section-map-over h h' sC sD) + where + + assoc-comp-section-map-over : + section-htpy-over + ( refl-htpy {f = h ∘ g ∘ f}) + ( refl-htpy {f = h' ∘ g' ∘ f'}) + sA sD + ( comp-section-map-over (h ∘ g) f (h' ∘ g') f' sA sB sD + ( comp-section-map-over h g h' g' sB sC sD H G) + ( F)) + ( comp-section-map-over h (g ∘ f) h' (g' ∘ f') sA sC sD H + ( comp-section-map-over g f g' f' sA sB sC G F)) + assoc-comp-section-map-over = + inv-htpy + ( right-unit-htpy ∙h + left-unit-law-left-whisker-comp _ ∙h + inv-htpy-assoc-htpy ((h' ∘ g') ·l F) (h' ·l G ·r f) (H ·r (g ∘ f)) ∙h + right-whisker-concat-htpy + ( ( right-whisker-concat-htpy + ( inv-preserves-comp-left-whisker-comp h' g' F) + ( h' ·l G ·r f)) ∙h + ( inv-htpy + ( distributive-left-whisker-comp-concat h' + ( g' ·l F) + ( G ·r f)))) + ( H ·r g ·r f)) + +module _ + {l1 l2 l3 l4 l5 l6 : Level} + {A : UU l1} {B : UU l2} {X : UU l3} + {A' : A → UU l4} {B' : B → UU l5} {X' : X → UU l6} + {f g : A → B} + (H : f ~ g) + {f' : {a : A} → A' a → B' (f a)} + {g' : {a : A} → A' a → B' (g a)} + (H' : htpy-over B' H f' g') + (sA : (a : A) → A' a) + (sB : (b : B) → B' b) + (F : section-map-over f f' sA sB) + (G : section-map-over g g' sA sB) + (α : section-htpy-over H H' sA sB F G) + (s : X → A) + (s' : {x : X} → X' x → A' (s x)) + (sX : (x : X) → X' x) + (S : section-map-over s s' sX sA) + where + open import foundation.commuting-squares-of-identifications + open import foundation.commuting-triangles-of-identifications + + right-whisk-section-htpy-over : + section-htpy-over (H ·r s) + ( right-whisk-htpy-over H H' s s') + sX sB + ( comp-section-map-over f s f' s' sX sA sB F S) + ( comp-section-map-over g s g' s' sX sA sB G S) + right-whisk-section-htpy-over x = + right-whisker-concat-coherence-square-identifications + ( ap (tr B' (H (s x)) ∘ f') (S x)) + ( H' (s' (sX x))) + ( H' (sA (s x))) + ( ap g' (S x)) + ( nat-htpy (H' {s x}) (S x)) + ( G (s x)) ∙ + ap (_∙ (H' (sA (s x)) ∙ G (s x))) (ap-comp (tr B' (H (s x))) f' (S x)) ∙ + ap (ap (tr B' (H (s x))) (ap f' (S x)) ∙_) (α (s x)) ∙ + right-whisker-concat-coherence-triangle-identifications' + ( ap (tr B' (H (s x))) (ap f' (S x) ∙ F (s x))) + ( ap (tr B' (H (s x))) (F (s x))) + ( ap (tr B' (H (s x))) (ap f' (S x))) + ( apd sB (H (s x))) + ( inv (ap-concat (tr B' (H (s x))) (ap f' (S x)) (F (s x)))) + +module _ + {l1 l2 l3 l4 : Level} + {A : UU l1} {X : UU l2} + {A' : A → UU l3} {X' : X → UU l4} + where + + left-whisk-section-dependent-identification : + {x y : A} (p : x = y) + {x' : A' x} {y' : A' y} (q : dependent-identification A' p x' y') + (sA : (a : A) → A' a) + (F : x' = sA x) (G : y' = sA y) + (α : section-dependent-identification p q sA F G) + {s : A → X} (s' : {a : A} → A' a → X' (s a)) + (sX : (x : X) → X' x) + (S : section-map-over s s' sA sX) → + section-dependent-identification + ( ap s p) + ( left-whisk-dependent-identification s' p q) + sX (ap s' F ∙ S x) (ap s' G ∙ S y) + left-whisk-section-dependent-identification {x} refl refl sA F G α s' sX S = + ap (λ p → ap s' p ∙ S x) (α ∙ right-unit ∙ ap-id F) ∙ + inv (right-unit ∙ ap-id (ap s' F ∙ S x)) + +module _ + {l1 l2 l3 l4 l5 l6 : Level} + {A : UU l1} {B : UU l2} {X : UU l3} + {A' : A → UU l4} {B' : B → UU l5} {X' : X → UU l6} + {f g : A → B} + (H : f ~ g) + {f' : {a : A} → A' a → B' (f a)} + {g' : {a : A} → A' a → B' (g a)} + (H' : htpy-over B' H f' g') + (sA : (a : A) → A' a) + (sB : (b : B) → B' b) + (F : section-map-over f f' sA sB) + (G : section-map-over g g' sA sB) + (α : section-htpy-over H H' sA sB F G) + (s : B → X) + (s' : {b : B} → B' b → X' (s b)) + (sX : (x : X) → X' x) + (S : section-map-over s s' sB sX) + where + + left-whisk-section-htpy-over : + section-htpy-over (s ·l H) + ( left-whisk-htpy-over H H' s') + sA sX + ( comp-section-map-over s f s' f' sA sB sX S F) + ( comp-section-map-over s g s' g' sA sB sX S G) + left-whisk-section-htpy-over a = + left-whisk-section-dependent-identification (H a) (H' (sA a)) sB (F a) (G a) (α a) s' sX S + +module _ + {l1 l2 : Level} + {A : UU l1} {B : A → UU l2} + where + + concat-section-dependent-identification : + {x y z : A} (p : x = y) (q : y = z) + {x' : B x} {y' : B y} {z' : B z} + (p' : dependent-identification B p x' y') + (q' : dependent-identification B q y' z') + (s : (a : A) → B a) + (F : x' = s x) (G : y' = s y) (H : z' = s z) + (α : section-dependent-identification p p' s F G) + (β : section-dependent-identification q q' s G H) → + section-dependent-identification (p ∙ q) + ( concat-dependent-identification B p q p' q') + ( s) + ( F) + ( H) + concat-section-dependent-identification refl q refl q' s F G H α β = + β ∙ ap (λ p → ap (tr B q) p ∙ apd s q) (α ∙ right-unit ∙ ap-id F) + +module _ + {l1 l2 l3 l4 : Level} + {A : UU l1} {B : UU l2} {A' : A → UU l3} {B' : B → UU l4} + {f g i : A → B} + (H : f ~ g) (K : g ~ i) + {f' : {a : A} → A' a → B' (f a)} + {g' : {a : A} → A' a → B' (g a)} + {i' : {a : A} → A' a → B' (i a)} + (H' : htpy-over B' H f' g') (K' : htpy-over B' K g' i') + (sA : (a : A) → A' a) + (sB : (b : B) → B' b) + (F : section-map-over f f' sA sB) + (G : section-map-over g g' sA sB) + (I : section-map-over i i' sA sB) + (α : section-htpy-over H H' sA sB F G) + (β : section-htpy-over K K' sA sB G I) + where + + concat-section-htpy-over : + section-htpy-over + ( H ∙h K) + ( concat-htpy-over H K H' K') + ( sA) + ( sB) + ( F) + ( I) + concat-section-htpy-over a = + concat-section-dependent-identification + ( H a) (K a) (H' (sA a)) (K' (sA a)) sB (F a) (G a) (I a) (α a) (β a) + +module _ + {l1 l2 l3 l4 l5 l6 : Level} + {A : UU l1} {B : UU l2} {X : UU l3} + {A' : A → UU l4} {B' : B → UU l5} {X' : X → UU l6} + (f : A → B) (g : A → X) (m : B → X) + (f' : {a : A} → A' a → B' (f a)) + (g' : {a : A} → A' a → X' (g a)) + (m' : {b : B} → B' b → X' (m b)) + (sA : (a : A) → A' a) (sB : (b : B) → B' b) (sX : (x : X) → X' x) + (F : (a : A) → f' (sA a) = sB (f a)) + (G : (a : A) → g' (sA a) = sX (g a)) + (M : (b : B) → m' (sB b) = sX (m b)) + where + + section-triangle-over : + (H : coherence-triangle-maps g m f) → + (H' : htpy-over X' H g' (m' ∘ f')) → + UU (l1 ⊔ l6) + section-triangle-over H H' = + (a : A) → + H' (sA a) ∙ ap m' (F a) ∙ (M (f a)) = + ap (tr X' (H a)) (G a) ∙ apd sX (H a) + + unget-section-triangle-over : + (H : coherence-triangle-maps g m f) → + (H' : htpy-over X' H g' (m' ∘ f')) → + section-triangle-over H H' → + section-htpy-over H H' sA sX G + ( comp-section-map-over m f m' f' sA sB sX M F) + unget-section-triangle-over H H' α = + inv-htpy-assoc-htpy (H' ·r sA) (m' ·l F) (M ·r f) ∙h α + + section-triangle-over' : + (H : coherence-triangle-maps' g m f) → + (H' : htpy-over X' H (m' ∘ f') g') → + UU (l1 ⊔ l6) + section-triangle-over' H H' = + (a : A) → + H' (sA a) ∙ G a = + ap (tr X' (H a) ∘ m') (F a) ∙ ap (tr X' (H a)) (M (f a)) ∙ apd sX (H a) + + equiv-get-section-triangle-over' : + (H : coherence-triangle-maps' g m f) → + (H' : htpy-over X' H (m' ∘ f') g') → + section-triangle-over' H H' ≃ + section-htpy-over H H' sA sX + ( comp-section-map-over m f m' f' sA sB sX M F) + ( G) + equiv-get-section-triangle-over' H H' = + equiv-Π-equiv-family + ( λ a → + equiv-concat' + ( H' (sA a) ∙ G a) + ( ap + ( _∙ apd sX (H a)) + ( ( ap + ( _∙ ap (tr X' (H a)) (M (f a))) + ( ap-comp (tr X' (H a)) m' (F a))) ∙ + ( inv (ap-concat (tr X' (H a)) (ap m' (F a)) (M (f a))))))) + + unget-section-triangle-over' : + (H : coherence-triangle-maps' g m f) → + (H' : htpy-over X' H (m' ∘ f') g') → + section-triangle-over' H H' → + section-htpy-over H H' sA sX + ( comp-section-map-over m f m' f' sA sB sX M F) + ( G) + unget-section-triangle-over' H H' = + map-equiv (equiv-get-section-triangle-over' H H') + + get-section-triangle-over' : + (H : coherence-triangle-maps' g m f) → + (H' : htpy-over X' H (m' ∘ f') g') → + section-htpy-over H H' sA sX + ( comp-section-map-over m f m' f' sA sB sX M F) + ( G) → + section-triangle-over' H H' + get-section-triangle-over' H H' = + map-inv-equiv (equiv-get-section-triangle-over' H H') + + -- actually ≐ section-triangle-over 🤔 + -- section-triangle-over-inv : + -- (H : coherence-triangle-maps g m f) → + -- (H' : {a : A} (a' : A' a) → dependent-identification X' (H a) (g' a') (m' (f' a'))) → + -- UU (l1 ⊔ l6) + -- section-triangle-over-inv H H' = + -- (a : A) → + -- H' (sA a) ∙ ap m' (F a) ∙ (M (f a)) = + -- ap (tr X' (H a)) (G a) ∙ apd sX (H a) + +module _ + {l1 l2 l3 l4 l5 l6 l7 l8 : Level} + {P1 : UU l1} {P2 : UU l2} {P3 : UU l3} {P4 : UU l4} + {Q1 : P1 → UU l5} {Q2 : P2 → UU l6} {Q3 : P3 → UU l7} {Q4 : P4 → UU l8} + (g1 : P1 → P3) (f1 : P1 → P2) (f2 : P3 → P4) (g2 : P2 → P4) + (g1' : {p : P1} → Q1 p → Q3 (g1 p)) + (f1' : {p : P1} → Q1 p → Q2 (f1 p)) + (f2' : {p : P3} → Q3 p → Q4 (f2 p)) + (g2' : {p : P2} → Q2 p → Q4 (g2 p)) + where + + square-over : coherence-square-maps g1 f1 f2 g2 → UU (l1 ⊔ l5 ⊔ l8) + square-over H = htpy-over Q4 H (g2' ∘ f1') (f2' ∘ g1') + + module _ + (s1 : (p : P1) → Q1 p) (s2 : (p : P2) → Q2 p) (s3 : (p : P3) → Q3 p) + (s4 : (p : P4) → Q4 p) + (G1 : (p : P1) → g1' (s1 p) = s3 (g1 p)) + (F1 : (p : P1) → f1' (s1 p) = s2 (f1 p)) + (F2 : (p : P3) → f2' (s3 p) = s4 (f2 p)) + (G2 : (p : P2) → g2' (s2 p) = s4 (g2 p)) + (H : coherence-square-maps g1 f1 f2 g2) + (H' : square-over H) + where + + section-square-over : UU (l1 ⊔ l8) + section-square-over = + (p : P1) → + H' (s1 p) ∙ ap f2' (G1 p) ∙ (F2 (g1 p)) = + ( ap (tr Q4 (H p) ∘ g2') (F1 p) ∙ + ap (tr Q4 (H p)) (G2 (f1 p)) ∙ + apd s4 (H p)) + + get-section-square-over : + section-htpy-over H H' s1 s4 + ( comp-section-map-over g2 f1 g2' f1' s1 s2 s4 G2 F1) + ( comp-section-map-over f2 g1 f2' g1' s1 s3 s4 F2 G1) → + section-square-over + get-section-square-over α = + assoc-htpy (H' ·r s1) (f2' ·l G1) (F2 ·r g1) ∙h + α ∙h + ( λ p → + ap + ( _∙ apd s4 (H p)) + ( ap-concat (tr Q4 (H p)) (ap g2' (F1 p)) (G2 (f1 p)) ∙ + ap (_∙ _) (inv (ap-comp _ g2' (F1 p))))) + + module _ + (m : P2 → P3) + (m' : {p : P2} → Q2 p → Q3 (m p)) + (B1 : coherence-triangle-maps' g1 m f1) + (B2 : coherence-triangle-maps g2 f2 m) + (T1 : htpy-over Q3 B1 (m' ∘ f1') g1') + (T2 : htpy-over Q4 B2 g2' (f2' ∘ m')) + where + + pasting-triangles-over : + htpy-over Q4 + ( horizontal-pasting-up-diagonal-coherence-triangle-maps g1 f1 f2 g2 B1 B2) + ( g2' ∘ f1') + ( f2' ∘ g1') + pasting-triangles-over = + concat-htpy-over + ( B2 ·r f1) + ( f2 ·l B1) + ( right-whisk-htpy-over B2 T2 f1 f1') + ( left-whisk-htpy-over B1 T1 f2') + + module _ + (m : P2 → P3) + (m' : {p : P2} → Q2 p → Q3 (m p)) + (s1 : (p : P1) → Q1 p) (s2 : (p : P2) → Q2 p) (s3 : (p : P3) → Q3 p) + (s4 : (p : P4) → Q4 p) + (G1 : (p : P1) → g1' (s1 p) = s3 (g1 p)) + (F1 : (p : P1) → f1' (s1 p) = s2 (f1 p)) + (F2 : (p : P3) → f2' (s3 p) = s4 (f2 p)) + (G2 : (p : P2) → g2' (s2 p) = s4 (g2 p)) + (M : (p : P2) → m' (s2 p) = s3 (m p)) + (B1 : coherence-triangle-maps' g1 m f1) + (B2 : coherence-triangle-maps g2 f2 m) + (T1 : htpy-over Q3 B1 (m' ∘ f1') g1') + (T2 : htpy-over Q4 B2 g2' (f2' ∘ m')) + where + + pasting-sections-triangles-over : + section-triangle-over' f1 g1 m f1' g1' m' s1 s2 s3 F1 G1 M B1 T1 → + section-triangle-over m g2 f2 m' g2' f2' s2 s3 s4 M G2 F2 B2 T2 → + section-square-over s1 s2 s3 s4 G1 F1 F2 G2 + ( horizontal-pasting-up-diagonal-coherence-triangle-maps g1 f1 f2 g2 B1 B2) + ( pasting-triangles-over m m' B1 B2 T1 T2) + pasting-sections-triangles-over S1 S2 = + get-section-square-over s1 s2 s3 s4 G1 F1 F2 G2 + ( horizontal-pasting-up-diagonal-coherence-triangle-maps g1 f1 f2 g2 B1 B2) + ( pasting-triangles-over m m' B1 B2 T1 T2) + ( concat-section-htpy-over (B2 ·r f1) (f2 ·l B1) + ( right-whisk-htpy-over B2 T2 f1 f1') + ( left-whisk-htpy-over B1 T1 f2') + s1 s4 + ( comp-section-map-over g2 f1 g2' f1' s1 s2 s4 G2 F1) + ( comp-section-map-over (f2 ∘ m) f1 (f2' ∘ m') f1' s1 s2 s4 + ( comp-section-map-over f2 m f2' m' s2 s3 s4 F2 M) + ( F1)) + ( comp-section-map-over f2 g1 f2' g1' s1 s3 s4 F2 G1) + ( [ii]) + ( concat-section-htpy-over refl-htpy (f2 ·l B1) refl-htpy + ( left-whisk-htpy-over B1 T1 f2') + s1 s4 _ _ _ + ( assoc-comp-section-map-over f1' m' f2' s1 s2 s3 s4 F1 M F2) + ( [iv]))) + where + [i] = + unget-section-triangle-over m g2 f2 m' g2' f2' s2 s3 s4 M G2 F2 B2 T2 S2 + [ii] = right-whisk-section-htpy-over B2 T2 s2 s4 _ _ [i] f1 f1' s1 F1 + [iii] = + unget-section-triangle-over' f1 g1 m f1' g1' m' s1 s2 s3 F1 G1 M B1 T1 S1 + [iv] = left-whisk-section-htpy-over B1 T1 s1 s3 _ _ [iii] f2 f2' s4 F2 +``` + +```agda +-- open import foundation.sections +-- open import foundation.transport-along-homotopies +-- module _ +-- {l1 l2 : Level} +-- {A : UU l1} (B : A → UU l2) +-- where + +-- sect-section : +-- section (pr1 {B = B}) → +-- ((a : A) → B a) +-- sect-section (s , H) a = tr B (H a) (pr2 (s a)) + +-- section-sect : +-- ((a : A) → B a) → +-- section (pr1 {B = B}) +-- section-sect = section-dependent-function + +-- module _ +-- {l1 l2 l3 l4 : Level} +-- {A : UU l1} {B : UU l2} {A' : UU l3} {B' : UU l4} +-- (f : A → B) (f' : A' → B') +-- where + +-- htpy-hom-map : +-- (hA : A' → A) (hB : B' → B) → +-- coherence-square-maps f' hA hB f → +-- (hA' : A' → A) (hB' : B' → B) → +-- coherence-square-maps f' hA' hB' f → +-- hA ~ hA' → hB ~ hB' → +-- UU (l2 ⊔ l3) +-- htpy-hom-map hA hB H hA' hB' H' σA σB = H ∙h (σB ·r f') ~ (f ·l σA) ∙h H' + +-- module _ +-- {l1 l2 l3 l4 l5 l6 : Level} +-- {A : UU l1} {B : UU l2} {C : UU l3} +-- {X : UU l4} {Y : UU l5} {Z : UU l6} +-- (f : A → B) (g : B → C) +-- (f' : X → Y) (g' : Y → Z) +-- (hA hA' : X → A) (hB hB' : Y → B) (hC hC' : Z → C) +-- (σA : hA ~ hA') (σB : hB ~ hB') (σC : hC ~ hC') +-- (NL : coherence-square-maps f' hA hB f) +-- (FL : coherence-square-maps f' hA' hB' f) +-- (α : htpy-hom-map f f' hA hB NL hA' hB' FL σA σB) +-- (NR : coherence-square-maps g' hB hC g) +-- (FR : coherence-square-maps g' hB' hC' g) +-- (β : htpy-hom-map g g' hB hC NR hB' hC' FR σB σC) +-- where +-- open import foundation.commuting-squares-of-homotopies + +-- comp-htpy-hom-map : +-- htpy-hom-map (g ∘ f) (g' ∘ f') +-- hA hC +-- ( pasting-horizontal-coherence-square-maps f' g' hA hB hC f g NL NR) +-- hA' hC' +-- ( pasting-horizontal-coherence-square-maps f' g' hA' hB' hC' f g FL FR) +-- σA σC +-- comp-htpy-hom-map = +-- left-whisker-concat-coherence-square-homotopies (g ·l NL) +-- ( g ·l σB ·r f') (NR ·r f') (FR ·r f') (σC ·r (g' ∘ f')) +-- ( β ·r f') ∙h +-- right-whisker-concat-htpy +-- ( inv-htpy +-- ( distributive-left-whisker-comp-concat g NL (σB ·r f')) ∙h +-- left-whisker-comp² g α ∙h +-- distributive-left-whisker-comp-concat g (f ·l σA) FL ∙h +-- right-whisker-concat-htpy +-- ( preserves-comp-left-whisker-comp g f σA) +-- ( g ·l FL)) +-- ( FR ·r f') ∙h +-- assoc-htpy ((g ∘ f) ·l σA) (g ·l FL) (FR ·r f') + +-- module _ +-- {l1 l2 l3 l4 : Level} +-- {A : UU l1} {B : UU l2} {A' : UU l3} {B' : UU l4} +-- (f : A → B) (f' : A' → B') +-- (hA : A' → A) (hB : B' → B) +-- (H : coherence-square-maps f' hA hB f) +-- where + +-- section-displayed-map-over : UU (l1 ⊔ l2 ⊔ l3 ⊔ l4) +-- section-displayed-map-over = +-- Σ ( section hA) +-- ( λ sA → +-- Σ ( section hB) +-- ( λ sB → +-- Σ ( coherence-square-maps +-- f (map-section hA sA) (map-section hB sB) f') +-- ( λ K → +-- htpy-hom-map f f +-- ( hA ∘ map-section hA sA) +-- ( hB ∘ map-section hB sB) +-- ( pasting-vertical-coherence-square-maps f +-- ( map-section hA sA) (map-section hB sB) f' hA hB f K H) +-- id id refl-htpy +-- ( is-section-map-section hA sA) +-- ( is-section-map-section hB sB)))) + +-- module _ +-- {l1 l2 l3 l4 : Level} +-- {A : UU l1} {P : A → UU l2} +-- {B : UU l3} {Q : B → UU l4} +-- (f : A → B) +-- (f' : {a : A} → P a → Q (f a)) +-- where + +-- sect-map-over-section-map-over : +-- (s : +-- section-displayed-map-over f +-- (tot-map-over f (λ a → f' {a})) +-- pr1 pr1 refl-htpy) → +-- section-map-over f +-- ( f') +-- ( sect-section P (pr1 s)) +-- ( sect-section Q (pr1 (pr2 s))) +-- sect-map-over-section-map-over (sA , sB , H , α) a = +-- ( preserves-tr (λ a → f' {a}) (σA a) (sA2 a)) ∙ +-- ( inv (substitution-law-tr Q f (σA a))) ∙ +-- ( ap (λ p → tr Q p (f' (sA2 a))) (inv (α a ∙ right-unit))) ∙ +-- ( tr-concat (H1 a) (σB (f a)) (f' (sA2 a))) ∙ +-- ( ap +-- ( tr Q (σB (f a))) +-- ( substitution-law-tr Q pr1 (H a) ∙ apd pr2 (H a))) +-- where +-- sA1 : A → A +-- sA1 = pr1 ∘ map-section pr1 sA +-- σA : sA1 ~ id +-- σA = is-section-map-section pr1 sA +-- sA2 : (a : A) → P (sA1 a) +-- sA2 = pr2 ∘ map-section pr1 sA +-- sB1 : B → B +-- sB1 = pr1 ∘ map-section pr1 sB +-- σB : sB1 ~ id +-- σB = is-section-map-section pr1 sB +-- H1 : f ∘ sA1 ~ sB1 ∘ f +-- H1 = pr1 ·l H +-- ``` + +-- ```agda +-- module _ +-- {l1 l2 : Level} +-- {A : UU l1} {B : A → UU l2} +-- (s : (a : A) → B a) +-- where + +-- ap-map-section-family-lemma : +-- {a a' : A} (p : a = a') → +-- ap (map-section-family s) p = eq-pair-Σ p (apd s p) +-- ap-map-section-family-lemma refl = refl +-- module _ +-- {l1 l2 l3 : Level} +-- {A : UU l1} {B : UU l2} {Q : B → UU l3} +-- (s : (b : B) → Q b) +-- {f g : A → B} (H : f ~ g) +-- where + +-- left-whisker-dependent-function-lemma : +-- (a : A) → +-- (map-section-family s ·l H) a = eq-pair-Σ (H a) (apd s (H a)) +-- left-whisker-dependent-function-lemma a = ap-map-section-family-lemma s (H a) +-- module _ +-- {l1 l2 : Level} {A : UU l1} {B : A → UU l2} +-- where +-- concat-vertical-eq-pair : +-- {x y : A} (p : x = y) {x' : B x} {y' z' : B y} → +-- (q : dependent-identification B p x' y') → (r : y' = z') → +-- eq-pair-Σ p (q ∙ r) = eq-pair-Σ p q ∙ eq-pair-eq-fiber r +-- concat-vertical-eq-pair {x} refl q r = ap-concat (pair x) q r +-- module _ +-- {l1 l2 l3 l4 : Level} +-- {A : UU l1} {B : UU l2} +-- {A' : A → UU l3} {B' : B → UU l4} +-- {f : A → B} (f' : (a : A) → A' a → B' (f a)) +-- where + +-- ap-map-Σ-eq-fiber : +-- {a : A} (x y : A' a) (p : x = y) → +-- ap (map-Σ B' f f') (eq-pair-eq-fiber p) = eq-pair-eq-fiber (ap (f' a) p) +-- ap-map-Σ-eq-fiber x .x refl = refl + +-- -- ap-map-Σ-eq-fiber' : +-- -- {a : A} (x y : A' a) (p : x = y) → +-- -- ap (map-Σ B' f f') (eq-pair-eq-fiber p) = eq-pair-eq-fiber (ap (f' a) p) +-- -- ap-map-Σ-eq-fiber' {a} x y p = +-- -- compute-ap-eq-pair-Σ (map-Σ B' f f') refl p ∙ +-- -- ap-comp (pair (f a)) (f' a) p +-- module _ +-- {l1 l2 l3 l4 l5 l6 : Level} +-- {A : UU l1} {B : UU l2} {C : UU l3} +-- {A' : A → UU l4} {B' : B → UU l5} {C' : C → UU l6} +-- {f : A → B} {g : B → C} +-- (f' : (a : A) → A' a → B' (f a)) +-- (g' : (b : B) → B' b → C' (g b)) +-- (sA : (a : A) → A' a) (sB : (b : B) → B' b) (sC : (c : C) → C' c) +-- (F : (a : A) → f' a (sA a) = sB (f a)) (G : (b : B) → g' b (sB b) = sC (g b)) +-- where + +-- pasting-horizontal-comp : +-- pasting-horizontal-coherence-square-maps f g +-- ( map-section-family sA) (map-section-family sB) (map-section-family sC) +-- ( tot-map-over f f') (tot-map-over g g') +-- ( eq-pair-eq-fiber ∘ F) +-- ( eq-pair-eq-fiber ∘ G) ~ +-- eq-pair-eq-fiber ∘ +-- ((g' _) ·l F ∙h G ·r f) +-- pasting-horizontal-comp a = +-- ap +-- ( _∙ eq-pair-eq-fiber (G (f a))) +-- ( inv (ap-comp (tot-map-over g g') (pair (f a)) (F a)) ∙ +-- ap-comp (pair (g (f a))) (g' (f a)) (F a)) ∙ +-- inv (ap-concat (pair (g (f a))) (ap (g' (f a)) (F a)) (G (f a))) + +-- module _ +-- {l1 l2 l3 l4 : Level} +-- {A : UU l1} {B : UU l2} {X : UU l3} {Y : UU l4} +-- {f g : A → B} {f' g' : X → Y} +-- (top : f' ~ g') (bottom : f ~ g) +-- {hA : X → A} {hB : Y → B} +-- (N : f ∘ hA ~ hB ∘ f') (F : g ∘ hA ~ hB ∘ g') +-- where + +-- hom-htpy : UU (l2 ⊔ l3) +-- hom-htpy = N ∙h (hB ·l top) ~ (bottom ·r hA) ∙h F + +-- -- module _ +-- -- where + +-- -- alt-map-coherence-square-homotopies + +-- module _ +-- {l1 l2 l3 l4 l5 l6 : Level} +-- {A : UU l1} {B : UU l2} {X : UU l3} {Y : UU l4} {V : UU l5} {W : UU l6} +-- {f g : A → B} {f' g' : X → Y} {f'' g'' : V → W} +-- (mid : f' ~ g') (bottom : f ~ g) (top : f'' ~ g'') +-- {hA : X → A} {hB : Y → B} {hA' : V → X} {hB' : W → Y} +-- (bottom-N : f ∘ hA ~ hB ∘ f') (bottom-F : g ∘ hA ~ hB ∘ g') +-- (top-N : f' ∘ hA' ~ hB' ∘ f'') (top-F : g' ∘ hA' ~ hB' ∘ g'') +-- where + +-- pasting-vertical-hom-htpy : +-- hom-htpy mid bottom {hB = hB} bottom-N bottom-F → +-- hom-htpy top mid {hB = hB'} top-N top-F → +-- hom-htpy top bottom {hB = hB ∘ hB'} +-- ( pasting-vertical-coherence-square-maps f'' hA' hB' f' hA hB f +-- top-N bottom-N) +-- ( pasting-vertical-coherence-square-maps g'' hA' hB' g' hA hB g +-- top-F bottom-F) +-- pasting-vertical-hom-htpy α β = +-- left-whisker-concat-coherence-square-homotopies +-- ( bottom-N ·r hA') +-- ( hB ·l mid ·r hA') +-- ( hB ·l top-N) +-- ( hB ·l top-F) +-- ( (hB ∘ hB') ·l top) +-- ( left-whisker-concat-htpy (hB ·l top-N) +-- ( inv-htpy (preserves-comp-left-whisker-comp hB hB' top)) ∙h +-- map-coherence-square-homotopies hB (mid ·r hA') top-N top-F (hB' ·l top) +-- ( β)) ∙h +-- right-whisker-concat-htpy (α ·r hA') (hB ·l top-F) ∙h +-- assoc-htpy (bottom ·r (hA ∘ hA')) (bottom-F ·r hA') (hB ·l top-F) + +-- module _ +-- {l1 l2 : Level} +-- {A : UU l1} {B : UU l2} +-- {f g : A → B} (H : f ~ g) +-- where + +-- id-hom-htpy : hom-htpy H H {hA = id} {hB = id} refl-htpy refl-htpy +-- id-hom-htpy = left-unit-law-left-whisker-comp H ∙h inv-htpy-right-unit-htpy + +-- module _ +-- {l1 l2 l3 l4 : Level} +-- {A : UU l1} {B : UU l2} {X : UU l3} {Y : UU l4} +-- (f g : A → B) (f' g' : X → Y) +-- (bottom : f ~ g) (top : f' ~ g') +-- (hA : X → A) (hB : Y → B) +-- (N : f ∘ hA ~ hB ∘ f') (F : g ∘ hA ~ hB ∘ g') +-- (α : hom-htpy top bottom N F) +-- (hA' : X → A) (hB' : Y → B) +-- (N' : f ∘ hA' ~ hB' ∘ f') (F' : g ∘ hA' ~ hB' ∘ g') +-- (β : hom-htpy top bottom N' F') +-- (σA : hA ~ hA') (σB : hB ~ hB') +-- (γN : htpy-hom-map f f' hA hB N hA' hB' N' σA σB) +-- (γF : htpy-hom-map g g' hA hB F hA' hB' F' σA σB) +-- where + +-- nudged-α nudged-β : +-- (N ∙h (hB ·l top)) ∙h (σB ·r g') ~ +-- (f ·l σA) ∙h ((bottom ·r hA') ∙h F') +-- nudged-α = +-- right-whisker-concat-htpy α (σB ·r g') ∙h +-- assoc-htpy (bottom ·r hA) F (σB ·r g') ∙h +-- left-whisker-concat-htpy (bottom ·r hA) γF ∙h +-- right-whisker-concat-coherence-square-homotopies +-- ( f ·l σA) +-- ( bottom ·r hA) +-- ( bottom ·r hA') +-- ( g ·l σA) +-- ( λ x → nat-htpy bottom (σA x)) +-- ( F') +-- nudged-β = +-- left-whisker-concat-coherence-square-homotopies N +-- ( σB ·r f') +-- ( hB ·l top) +-- ( hB' ·l top) +-- ( σB ·r g') +-- ( λ x → inv (nat-htpy σB (top x))) ∙h +-- right-whisker-concat-htpy γN (hB' ·l top) ∙h +-- assoc-htpy (f ·l σA) N' (hB' ·l top) ∙h +-- left-whisker-concat-htpy (f ·l σA) β + +-- htpy-hom-htpy : UU (l2 ⊔ l3) +-- htpy-hom-htpy = nudged-α ~ nudged-β + +-- module _ +-- {l1 l2 l3 l4 : Level} +-- {A : UU l1} {B : UU l2} {A' : UU l3} {B' : UU l4} +-- {f' g' : A' → B'} (top : f' ~ g') +-- {f g : A → B} (bottom : f ~ g) +-- (hA : A' → A) (hB : B' → B) +-- (N : coherence-square-maps f' hA hB f) +-- (F : coherence-square-maps g' hA hB g) +-- (α : hom-htpy top bottom {hB = hB} N F) +-- where + +-- coh-section-hom-htpy : +-- (sA : section hA) (sB : section hB) +-- (sN : coherence-square-maps f (map-section hA sA) (map-section hB sB) f') +-- (sF : coherence-square-maps g (map-section hA sA) (map-section hB sB) g') +-- (β : hom-htpy bottom top {hB = map-section hB sB} sN sF) +-- (γN : +-- htpy-hom-map f f +-- ( hA ∘ map-section hA sA) (hB ∘ map-section hB sB) +-- ( pasting-vertical-coherence-square-maps f +-- ( map-section hA sA) (map-section hB sB) +-- f' hA hB f sN N) +-- id id refl-htpy +-- ( is-section-map-section hA sA) +-- ( is-section-map-section hB sB)) +-- (γF : +-- htpy-hom-map g g +-- ( hA ∘ pr1 sA) (hB ∘ pr1 sB) +-- ( pasting-vertical-coherence-square-maps g (pr1 sA) (pr1 sB) g' hA +-- hB g sF F) +-- id id refl-htpy (pr2 sA) (pr2 sB)) → +-- UU (l1 ⊔ l2) +-- coh-section-hom-htpy sA sB sN sF β = +-- htpy-hom-htpy f g f g bottom bottom +-- ( hA ∘ map-section hA sA) +-- ( hB ∘ map-section hB sB) +-- ( pasting-vertical-coherence-square-maps f map-sA map-sB f' hA hB f sN N) +-- ( pasting-vertical-coherence-square-maps g map-sA map-sB g' hA hB g sF F) +-- ( pasting-vertical-hom-htpy top bottom bottom N F sN sF α β) +-- id id refl-htpy refl-htpy (id-hom-htpy bottom) +-- ( is-section-map-section hA sA) +-- ( is-section-map-section hB sB) +-- where +-- map-sA : A → A' +-- map-sA = map-section hA sA +-- map-sB : B → B' +-- map-sB = map-section hB sB + +-- module _ +-- {l1 l2 : Level} {A : UU l1} {B : A → UU l2} +-- where + +-- compute-concat-dependent-identification-right-base-refl : +-- { x y : A} (p : x = y) → +-- { x' : B x} {y' z' : B y} (p' : dependent-identification B p x' y') → +-- ( q' : y' = z') → +-- concat-dependent-identification B p refl p' q' = ap (λ r → tr B r x') right-unit ∙ p' ∙ q' +-- compute-concat-dependent-identification-right-base-refl refl p' q' = ap (_∙ q') (ap-id p') + +-- interchange-concat-eq-pair-Σ-left : +-- {y z : A} (q : y = z) {x' y' : B y} {z' : B z} → +-- (p' : x' = y') +-- (q' : dependent-identification B q y' z') → +-- eq-pair-eq-fiber p' ∙ eq-pair-Σ q q' = +-- eq-pair-Σ q (ap (tr B q) p' ∙ q') +-- interchange-concat-eq-pair-Σ-left q refl q' = refl + +-- interchange-concat-eq-pair-Σ-right : +-- {x y : A} (p : x = y) {x' : B x} {y' z' : B y} → +-- (p' : dependent-identification B p x' y') → +-- (q' : y' = z') → +-- eq-pair-Σ p p' ∙ eq-pair-eq-fiber q' = +-- eq-pair-Σ p (p' ∙ q') +-- interchange-concat-eq-pair-Σ-right p p' refl = +-- right-unit ∙ ap (eq-pair-Σ p) (inv right-unit) + +-- module _ +-- {l1 l2 l3 l4 : Level} +-- {A : UU l1} {B : UU l2} {P : A → UU l3} {Q : B → UU l4} +-- {f g : A → B} (H : f ~ g) +-- {f' : (a : A) → P a → Q (f a)} {g' : (a : A) → P a → Q (g a)} +-- (H' : htpy-over Q H (f' _) (g' _)) +-- (sA : (a : A) → P a) +-- (sB : (b : B) → Q b) +-- (F : section-map-over f (f' _) sA sB) +-- (G : section-map-over g (g' _) sA sB) +-- (α : section-htpy-over H H' sA sB F G) +-- where +-- open import foundation.embeddings + +-- _ : coh-section-hom-htpy +-- ( λ p → eq-pair-Σ (H (pr1 p)) (H' (pr2 p))) +-- ( H) +-- pr1 pr1 refl-htpy refl-htpy +-- ( λ p → ap-pr1-eq-pair-Σ (H (pr1 p)) (H' (pr2 p)) ∙ inv right-unit) +-- ( section-dependent-function sA) +-- ( section-dependent-function sB) +-- ( eq-pair-eq-fiber ∘ F) +-- ( eq-pair-eq-fiber ∘ G) +-- -- The point is that this will be `ap pr1`'d, so the α in the fiber is +-- -- projected away. This definition should probably be defined in a nicer way +-- -- to make the proof less opaque. +-- ( λ a → +-- ap (eq-pair-eq-fiber (F a) ∙_) (ap-map-section-family-lemma sB (H a)) ∙ +-- interchange-concat-eq-pair-Σ-left (H a) (F a) (apd sB (H a)) ∙ +-- ap (eq-pair-Σ (H a)) (inv (α a)) ∙ +-- inv (interchange-concat-eq-pair-Σ-right (H a) (H' (sA a)) (G a))) +-- ( λ a → right-unit ∙ ap-pr1-eq-pair-eq-fiber (F a)) +-- ( λ a → right-unit ∙ ap-pr1-eq-pair-eq-fiber (G a)) +-- _ = {!!} + +-- -- module _ +-- -- {l1 l2 l3 l4 l1' l2' l3' l4' : Level} +-- -- {A : UU l1} {B : UU l2} {C : UU l3} {D : UU l4} +-- -- (f : A → B) (g : A → C) (h : B → D) (k : C → D) +-- -- {A' : UU l1'} {B' : UU l2'} {C' : UU l3'} {D' : UU l4'} +-- -- (f' : A' → B') (g' : A' → C') (h' : B' → D') (k' : C' → D') +-- -- (top : h' ∘ f' ~ k' ∘ g') +-- -- (bottom : h ∘ f ~ k ∘ g) +-- -- (hA : A' → A) (hB : B' → B) (hC : C' → C) (hD : D' → D) +-- -- (back-left : (f ∘ hA) ~ (hB ∘ f')) +-- -- (back-right : (g ∘ hA) ~ (hC ∘ g')) +-- -- (front-left : (h ∘ hB) ~ (hD ∘ h')) +-- -- (front-right : (k ∘ hC) ~ (hD ∘ k')) +-- -- (α : +-- -- coherence-cube-maps f g h k f' g' h' k' hA hB hC hD +-- -- top back-left back-right front-left front-right bottom) +-- -- (hA' : A' → A) (hB' : B' → B) (hC' : C' → C) (hD' : D' → D) +-- -- (back-left' : (f ∘ hA') ~ (hB' ∘ f')) +-- -- (back-right' : (g ∘ hA') ~ (hC' ∘ g')) +-- -- (front-left' : (h ∘ hB') ~ (hD' ∘ h')) +-- -- (front-right' : (k ∘ hC') ~ (hD' ∘ k')) +-- -- (β : +-- -- coherence-cube-maps f g h k f' g' h' k' hA' hB' hC' hD' +-- -- top back-left' back-right' front-left' front-right' bottom) +-- -- (σA : hA ~ hA') (σB : hB ~ hB') (σC : hC ~ hC') (σD : hD ~ hD') +-- -- (back-left-H : htpy-hom-map f f' hA hB back-left hA' hB' back-left' σA σB) +-- -- (back-right-H : htpy-hom-map g g' hA hC back-right hA' hC' back-right' σA σC) +-- -- (front-left-H : htpy-hom-map h h' hB hD front-left hB' hD' front-left' σB σD) +-- -- (front-right-H : htpy-hom-map k k' hC hD front-right hC' hD' front-right' σC σD) +-- -- where +-- -- open import foundation.commuting-squares-of-homotopies + +-- -- htpy-hom-square : +-- -- UU (l4 ⊔ l1') +-- -- htpy-hom-square = +-- -- htpy-hom-htpy (h ∘ f) (k ∘ g) (h' ∘ f') (k' ∘ g') bottom top hA hD +-- -- ( pasting-horizontal-coherence-square-maps f' h' hA hB hD f h back-left front-left) +-- -- ( pasting-horizontal-coherence-square-maps g' k' hA hC hD g k back-right front-right) +-- -- ( α) +-- -- hA' hD' +-- -- ( pasting-horizontal-coherence-square-maps f' h' hA' hB' hD' f h back-left' front-left') +-- -- ( pasting-horizontal-coherence-square-maps g' k' hA' hC' hD' g k back-right' front-right') +-- -- ( β) +-- -- σA σD +-- -- ( comp-htpy-hom-map f h f' h' hA hA' hB hB' hD hD' σA σB σD +-- -- back-left back-left' back-left-H +-- -- front-left front-left' front-left-H) +-- -- ( comp-htpy-hom-map g k g' k' hA hA' hC hC' hD hD' σA σC σD +-- -- back-right back-right' back-right-H +-- -- front-right front-right' front-right-H) + +-- -- module _ +-- -- {l1 l2 l3 l4 : Level} +-- -- {A : UU l1} {B : UU l2} {C : UU l3} {D : UU l4} +-- -- (f : A → B) (g : A → C) (h : B → D) (k : C → D) +-- -- (H : coherence-square-maps g f k h) +-- -- where + +-- -- id-cube : +-- -- coherence-cube-maps f g h k f g h k id id id id +-- -- H refl-htpy refl-htpy refl-htpy refl-htpy H +-- -- id-cube = left-unit-law-left-whisker-comp H ∙h inv-htpy-right-unit-htpy + +-- -- module _ +-- -- {l1 l2 l3 l4 l1' l2' l3' l4' : Level} +-- -- {A : UU l1} {B : UU l2} {C : UU l3} {D : UU l4} +-- -- (f : A → B) (g : A → C) (h : B → D) (k : C → D) +-- -- {A' : UU l1'} {B' : UU l2'} {C' : UU l3'} {D' : UU l4'} +-- -- (f' : A' → B') (g' : A' → C') (h' : B' → D') (k' : C' → D') +-- -- (hA : A' → A) (hB : B' → B) (hC : C' → C) (hD : D' → D) +-- -- (top : (h' ∘ f') ~ (k' ∘ g')) +-- -- (back-left : (f ∘ hA) ~ (hB ∘ f')) +-- -- (back-right : (g ∘ hA) ~ (hC ∘ g')) +-- -- (front-left : (h ∘ hB) ~ (hD ∘ h')) +-- -- (front-right : (k ∘ hC) ~ (hD ∘ k')) +-- -- (bottom : (h ∘ f) ~ (k ∘ g)) +-- -- (α : +-- -- coherence-cube-maps f g h k f' g' h' k' hA hB hC hD +-- -- top back-left back-right front-left front-right bottom) +-- -- where + +-- -- section-displayed-cube-over : UU (l1 ⊔ l2 ⊔ l3 ⊔ l4 ⊔ l1' ⊔ l2' ⊔ l3' ⊔ l4') +-- -- section-displayed-cube-over = +-- -- Σ ( section-displayed-map-over f f' hA hB back-left) +-- -- ( λ sF → +-- -- Σ ( section-displayed-map-over k k' hC hD front-right) +-- -- ( λ sK → +-- -- Σ ( coherence-square-maps g +-- -- ( map-section hA (pr1 sF)) +-- -- ( map-section hC (pr1 sK)) +-- -- ( g')) +-- -- ( λ G → +-- -- Σ ( htpy-hom-map g g +-- -- ( hA ∘ map-section hA (pr1 sF)) +-- -- ( hC ∘ map-section hC (pr1 sK)) +-- -- ( pasting-vertical-coherence-square-maps g +-- -- ( map-section hA (pr1 sF)) +-- -- ( map-section hC (pr1 sK)) +-- -- g' hA hC g +-- -- G back-right) +-- -- id id refl-htpy +-- -- ( is-section-map-section hA (pr1 sF)) +-- -- ( is-section-map-section hC (pr1 sK))) +-- -- ( λ sG → +-- -- Σ ( coherence-square-maps h +-- -- ( map-section hB (pr1 (pr2 sF))) +-- -- ( map-section hD (pr1 (pr2 sK))) +-- -- ( h')) +-- -- ( λ H → +-- -- Σ ( htpy-hom-map h h +-- -- ( hB ∘ map-section hB (pr1 (pr2 sF))) +-- -- ( hD ∘ map-section hD (pr1 (pr2 sK))) +-- -- ( pasting-vertical-coherence-square-maps h +-- -- ( map-section hB (pr1 (pr2 sF))) +-- -- ( map-section hD (pr1 (pr2 sK))) +-- -- h' hB hD h +-- -- H front-left) +-- -- id id refl-htpy +-- -- ( is-section-map-section hB (pr1 (pr2 sF))) +-- -- ( is-section-map-section hD (pr1 (pr2 sK)))) +-- -- ( λ sH → +-- -- Σ ( coherence-cube-maps f' g' h' k' f g h k +-- -- ( map-section hA (pr1 sF)) +-- -- ( map-section hB (pr1 (pr2 sF))) +-- -- ( map-section hC (pr1 sK)) +-- -- ( map-section hD (pr1 (pr2 sK))) +-- -- ( bottom) +-- -- ( pr1 (pr2 (pr2 sF))) +-- -- ( G) +-- -- ( H) +-- -- ( pr1 (pr2 (pr2 sK))) +-- -- ( top)) +-- -- ( λ β → +-- -- htpy-hom-square f g h k f g h k bottom bottom +-- -- ( hA ∘ map-section hA (pr1 sF)) +-- -- ( hB ∘ map-section hB (pr1 (pr2 sF))) +-- -- ( hC ∘ map-section hC (pr1 sK)) +-- -- ( hD ∘ map-section hD (pr1 (pr2 sK))) +-- -- ( pasting-vertical-coherence-square-maps f +-- -- ( map-section hA (pr1 sF)) +-- -- ( map-section hB (pr1 (pr2 sF))) +-- -- f' hA hB f +-- -- ( pr1 (pr2 (pr2 sF))) +-- -- ( back-left)) +-- -- ( pasting-vertical-coherence-square-maps g +-- -- ( map-section hA (pr1 sF)) +-- -- ( map-section hC (pr1 sK)) +-- -- g' hA hC g +-- -- ( G) +-- -- ( back-right)) +-- -- ( pasting-vertical-coherence-square-maps h +-- -- ( map-section hB (pr1 (pr2 sF))) +-- -- ( map-section hD (pr1 (pr2 sK))) +-- -- h' hB hD h +-- -- ( H) +-- -- ( front-left)) +-- -- ( pasting-vertical-coherence-square-maps k +-- -- ( map-section hC (pr1 sK)) +-- -- ( map-section hD (pr1 (pr2 sK))) +-- -- k' hC hD k +-- -- ( pr1 (pr2 (pr2 sK))) +-- -- ( front-right)) +-- -- ( pasting-vertical-coherence-cube-maps f g h k +-- -- f' g' h' k' f g h k +-- -- hA hB hC hD +-- -- ( map-section hA (pr1 sF)) +-- -- ( map-section hB (pr1 (pr2 sF))) +-- -- ( map-section hC (pr1 sK)) +-- -- ( map-section hD (pr1 (pr2 sK))) +-- -- ( top) +-- -- back-left back-right front-left front-right bottom +-- -- ( bottom) +-- -- ( pr1 (pr2 (pr2 sF))) +-- -- ( G) +-- -- ( H) +-- -- ( pr1 (pr2 (pr2 sK))) +-- -- ( α) +-- -- ( β)) +-- -- id id id id +-- -- refl-htpy refl-htpy refl-htpy refl-htpy +-- -- ( id-cube f g h k bottom) +-- -- ( is-section-map-section hA (pr1 sF)) +-- -- ( is-section-map-section hB (pr1 (pr2 sF))) +-- -- ( is-section-map-section hC (pr1 sK)) +-- -- ( is-section-map-section hD (pr1 (pr2 sK))) +-- -- ( pr2 (pr2 (pr2 sF))) +-- -- ( sG) +-- -- ( sH) +-- -- ( pr2 (pr2 (pr2 sK)))))))))) + +-- -- module _ +-- -- {l1 l2 l3 l4 l5 l6 l7 l8 : Level} +-- -- {P1 : UU l1} {P2 : UU l2} {P3 : UU l3} {P4 : UU l4} +-- -- {Q1 : P1 → UU l5} {Q2 : P2 → UU l6} {Q3 : P3 → UU l7} {Q4 : P4 → UU l8} +-- -- (g1 : P1 → P3) (f1 : P1 → P2) (f2 : P3 → P4) (g2 : P2 → P4) +-- -- (g1' : (p : P1) → Q1 p → Q3 (g1 p)) +-- -- (f1' : (p : P1) → Q1 p → Q2 (f1 p)) +-- -- (f2' : (p : P3) → Q3 p → Q4 (f2 p)) +-- -- (g2' : (p : P2) → Q2 p → Q4 (g2 p)) +-- -- (bottom : g2 ∘ f1 ~ f2 ∘ g1) +-- -- (top : square-over g1 f1 f2 g2 (g1' _) (f1' _) (f2' _) (g2' _) bottom) +-- -- where + +-- -- tot-square-over : +-- -- coherence-square-maps +-- -- ( tot-map-over g1 g1') +-- -- ( tot-map-over f1 f1') +-- -- ( tot-map-over {B' = Q4} f2 f2') +-- -- ( tot-map-over g2 g2') +-- -- tot-square-over = +-- -- coherence-square-maps-Σ Q4 g1' f1' f2' g2' (λ p → top {p}) + +-- -- coh-tot-square-over : +-- -- coherence-cube-maps f1 g1 g2 f2 +-- -- ( map-Σ Q2 f1 f1') +-- -- ( map-Σ Q3 g1 g1') +-- -- ( map-Σ Q4 g2 g2') +-- -- ( map-Σ Q4 f2 f2') +-- -- pr1 pr1 pr1 pr1 +-- -- ( tot-square-over) +-- -- refl-htpy refl-htpy refl-htpy refl-htpy +-- -- ( bottom) +-- -- coh-tot-square-over (p , q) = +-- -- ap-pr1-eq-pair-Σ (bottom p) (top q) ∙ inv right-unit + +-- -- module _ +-- -- (s1 : (p : P1) → Q1 p) (s2 : (p : P2) → Q2 p) +-- -- (s3 : (p : P3) → Q3 p) (s4 : (p : P4) → Q4 p) +-- -- (G1 : (p : P1) → g1' p (s1 p) = s3 (g1 p)) +-- -- (F1 : (p : P1) → f1' p (s1 p) = s2 (f1 p)) +-- -- (F2 : (p : P3) → f2' p (s3 p) = s4 (f2 p)) +-- -- (G2 : (p : P2) → g2' p (s2 p) = s4 (g2 p)) +-- -- where +-- -- open import foundation.action-on-identifications-binary-functions + +-- -- lemma : +-- -- pasting-vertical-coherence-square-maps g1 +-- -- ( map-section-family s1) (map-section-family s3) +-- -- ( tot-map-over g1 g1') (tot-map-over f1 f1') +-- -- ( tot-map-over {B' = Q4} f2 f2') (tot-map-over g2 g2') +-- -- ( eq-pair-eq-fiber ∘ G1) +-- -- ( coherence-square-maps-Σ Q4 g1' f1' f2' g2' (λ p → top {p})) ~ +-- -- ( λ p → eq-pair-Σ (bottom p) (top (s1 p) ∙ ap (f2' (g1 p)) (G1 p))) +-- -- lemma = λ p → ap +-- -- ( eq-pair-Σ (bottom p) (top (s1 p)) ∙_) +-- -- ( [i] p) ∙ +-- -- ( inv (concat-vertical-eq-pair (bottom p) (top (s1 p)) (ap (f2' (g1 p)) (G1 p)))) +-- -- where +-- -- [i] = +-- -- λ (p : P1) → +-- -- inv (ap-comp (map-Σ Q4 f2 f2') (pair (g1 p)) (G1 p)) ∙ +-- -- ap-comp (pair (f2 (g1 p))) (f2' (g1 p)) (G1 p) + +-- -- section-cube-over-sect-square-over : +-- -- section-square-over g1 f1 f2 g2 +-- -- ( g1' _) (f1' _) (f2' _) (g2' _) +-- -- s1 s2 s3 s4 +-- -- G1 F1 F2 G2 +-- -- bottom top → +-- -- section-displayed-cube-over f1 g1 g2 f2 +-- -- ( tot-map-over f1 f1') +-- -- ( tot-map-over g1 g1') +-- -- ( tot-map-over g2 g2') +-- -- ( tot-map-over f2 f2') +-- -- pr1 pr1 pr1 pr1 +-- -- ( coherence-square-maps-Σ Q4 g1' f1' f2' g2' (λ p → top {p})) +-- -- refl-htpy refl-htpy refl-htpy refl-htpy +-- -- ( bottom) +-- -- ( coh-tot-square-over) +-- -- pr1 (section-cube-over-sect-square-over α) = +-- -- ( section-dependent-function s1) , +-- -- ( section-dependent-function s2) , +-- -- ( eq-pair-eq-fiber ∘ F1) , +-- -- ( λ p → right-unit ∙ ap-pr1-eq-pair-Σ refl (F1 p)) +-- -- pr1 (pr2 (section-cube-over-sect-square-over α)) = +-- -- ( section-dependent-function s3) , +-- -- ( section-dependent-function s4) , +-- -- ( eq-pair-eq-fiber ∘ F2) , +-- -- ( λ p → right-unit ∙ ap-pr1-eq-pair-Σ refl (F2 p)) +-- -- pr2 (pr2 (section-cube-over-sect-square-over α)) = +-- -- ( eq-pair-eq-fiber ∘ G1) , +-- -- ( λ p → right-unit ∙ ap-pr1-eq-pair-Σ refl (G1 p)) , +-- -- ( eq-pair-eq-fiber ∘ G2) , +-- -- ( λ p → right-unit ∙ ap-pr1-eq-pair-Σ refl (G2 p)) , +-- -- ( λ p → +-- -- ap-binary +-- -- ( _∙_) +-- -- ( pasting-horizontal-comp f1' g2' s1 s2 s4 F1 G2 p) +-- -- ( ap-map-section-family-lemma s4 (bottom p)) ∙ +-- -- {!!} ∙ +-- -- ap (eq-pair-Σ (bottom p)) (inv (α p) ∙ assoc (top (s1 p)) (ap (f2' (g1 p)) (G1 p)) (F2 (g1 p))) ∙ +-- -- concat-vertical-eq-pair +-- -- ( bottom p) +-- -- ( top (s1 p)) +-- -- ( ap (f2' (g1 p)) (G1 p) ∙ F2 (g1 p)) ∙ +-- -- ap-binary +-- -- ( _∙_) +-- -- ( refl {x = eq-pair-Σ (bottom p) (top (s1 p))}) +-- -- ( inv (pasting-horizontal-comp g1' f2' s1 s3 s4 G1 F2 p))) , +-- -- {!!} +-- -- ``` diff --git a/src/synthetic-homotopy-theory/zigzag-construction-identity-type-pushouts.lagda.md b/src/synthetic-homotopy-theory/zigzag-construction-identity-type-pushouts.lagda.md new file mode 100644 index 0000000000..80ac2fa11e --- /dev/null +++ b/src/synthetic-homotopy-theory/zigzag-construction-identity-type-pushouts.lagda.md @@ -0,0 +1,1235 @@ +# The zigzag construction of identity types of pushouts + +```agda +{-# OPTIONS --lossy-unification #-} + +module synthetic-homotopy-theory.zigzag-construction-identity-type-pushouts where +``` + +
Imports + +```agda +open import elementary-number-theory.natural-numbers + +open import foundation.action-on-identifications-dependent-functions +open import foundation.action-on-identifications-functions +open import foundation.cartesian-product-types +open import foundation.commuting-squares-of-homotopies +open import foundation.commuting-squares-of-maps +open import foundation.dependent-identifications +open import foundation.dependent-pair-types +open import foundation.embeddings +open import foundation.empty-types +open import foundation.equivalences +open import foundation.function-types +open import foundation.functoriality-dependent-pair-types +open import foundation.homotopies +open import foundation.homotopy-algebra +open import foundation.identity-types +open import foundation.raising-universe-levels +open import foundation.span-diagrams +open import foundation.transport-along-identifications +open import foundation.transposition-identifications-along-equivalences +open import foundation.unit-type +open import foundation.universe-levels +open import foundation.whiskering-higher-homotopies-composition +open import foundation.whiskering-homotopies-composition + +open import synthetic-homotopy-theory.cocones-under-spans +open import synthetic-homotopy-theory.dependent-cocones-under-sequential-diagrams +open import synthetic-homotopy-theory.dependent-cocones-under-spans +open import synthetic-homotopy-theory.dependent-universal-property-sequential-colimits +open import synthetic-homotopy-theory.descent-data-pushouts +open import synthetic-homotopy-theory.families-descent-data-pushouts +open import synthetic-homotopy-theory.flattening-lemma-pushouts +open import synthetic-homotopy-theory.functoriality-sequential-colimits +open import synthetic-homotopy-theory.functoriality-stuff +open import synthetic-homotopy-theory.identity-systems-descent-data-pushouts +open import synthetic-homotopy-theory.pushouts +open import synthetic-homotopy-theory.sections-descent-data-pushouts +open import synthetic-homotopy-theory.sequential-colimits +open import synthetic-homotopy-theory.sequential-diagrams +open import synthetic-homotopy-theory.shifts-sequential-diagrams +open import synthetic-homotopy-theory.stuff-over +open import synthetic-homotopy-theory.universal-property-pushouts +open import synthetic-homotopy-theory.zigzags-sequential-diagrams +``` + +
+ +## Idea + +The identity types of pushouts may be characterized as certain sequential +colimits of pushouts. + +## Definitions + +```agda +module _ + {l1 l2 l3 : Level} (𝒮 : span-diagram l1 l2 l3) + where + + type-stage-zigzag-construction-id-pushout : ℕ → UU (lsuc (l1 ⊔ l2 ⊔ l3)) + type-stage-zigzag-construction-id-pushout n = + Σ ( codomain-span-diagram 𝒮 → UU (l1 ⊔ l2 ⊔ l3)) + ( λ Path-to-b → + Σ ( domain-span-diagram 𝒮 → UU (l1 ⊔ l2 ⊔ l3)) + ( λ Path-to-a → + ( Σ ( (s : spanning-type-span-diagram 𝒮) → + Path-to-b (right-map-span-diagram 𝒮 s) → + Path-to-a (left-map-span-diagram 𝒮 s)) + ( λ _ → + rec-ℕ + ( raise-unit (lsuc (l1 ⊔ l2 ⊔ l3))) + ( λ _ _ → + ( codomain-span-diagram 𝒮 → + span-diagram + ( l1 ⊔ l2 ⊔ l3) + ( l1 ⊔ l2 ⊔ l3) + ( l1 ⊔ l2 ⊔ l3)) × + ( domain-span-diagram 𝒮 → + span-diagram + ( l1 ⊔ l2 ⊔ l3) + ( l1 ⊔ l2 ⊔ l3) + ( l1 ⊔ l2 ⊔ l3))) + ( n))))) + +module _ + {l1 l2 l3 : Level} (𝒮 : span-diagram l1 l2 l3) + (a₀ : domain-span-diagram 𝒮) + where + + stage-zigzag-construction-id-pushout : + (n : ℕ) → type-stage-zigzag-construction-id-pushout 𝒮 n + stage-zigzag-construction-id-pushout zero-ℕ = + Path-to-b , + Path-to-a , + ( λ s → raise-ex-falso _) , + raise-star + where + Path-to-b : codomain-span-diagram 𝒮 → UU (l1 ⊔ l2 ⊔ l3) + Path-to-b _ = raise-empty _ + Path-to-a : domain-span-diagram 𝒮 → UU (l1 ⊔ l2 ⊔ l3) + Path-to-a a = raise (l2 ⊔ l3) (a₀ = a) + stage-zigzag-construction-id-pushout (succ-ℕ n) = + Path-to-b , + Path-to-a , + ( λ s p → inr-pushout _ _ (s , refl , p)) , + span-diagram-B , + span-diagram-A + where + span-diagram-B : + codomain-span-diagram 𝒮 → + span-diagram (l1 ⊔ l2 ⊔ l3) (l1 ⊔ l2 ⊔ l3) (l1 ⊔ l2 ⊔ l3) + span-diagram-B b = + make-span-diagram + ( pr2 ∘ pr2) + ( tot + ( λ s → + tot + ( λ r (p : pr1 (stage-zigzag-construction-id-pushout n) b) → + pr1 + ( pr2 (pr2 (stage-zigzag-construction-id-pushout n))) + ( s) + ( tr (pr1 (stage-zigzag-construction-id-pushout n)) r p)))) + Path-to-b : codomain-span-diagram 𝒮 → UU (l1 ⊔ l2 ⊔ l3) + Path-to-b b = standard-pushout (span-diagram-B b) + span-diagram-A : + domain-span-diagram 𝒮 → + span-diagram (l1 ⊔ l2 ⊔ l3) (l1 ⊔ l2 ⊔ l3) (l1 ⊔ l2 ⊔ l3) + span-diagram-A a = + make-span-diagram + ( pr2 ∘ pr2) + ( tot + ( λ s → + tot + ( λ r (p : pr1 (pr2 (stage-zigzag-construction-id-pushout n)) a) → + inr-standard-pushout + ( span-diagram-B (right-map-span-diagram 𝒮 s)) + ( ( s) , + ( refl) , + ( tr + ( pr1 (pr2 (stage-zigzag-construction-id-pushout n))) + ( r) + ( p)))))) + Path-to-a : domain-span-diagram 𝒮 → UU (l1 ⊔ l2 ⊔ l3) + Path-to-a a = standard-pushout (span-diagram-A a) + + span-diagram-path-to-b : + codomain-span-diagram 𝒮 → ℕ → + span-diagram + ( l1 ⊔ l2 ⊔ l3) + ( l1 ⊔ l2 ⊔ l3) + ( l1 ⊔ l2 ⊔ l3) + span-diagram-path-to-b b n = + pr1 (pr2 (pr2 (pr2 (stage-zigzag-construction-id-pushout (succ-ℕ n))))) b + + span-diagram-path-to-a : + domain-span-diagram 𝒮 → ℕ → + span-diagram + ( l1 ⊔ l2 ⊔ l3) + ( l1 ⊔ l2 ⊔ l3) + ( l1 ⊔ l2 ⊔ l3) + span-diagram-path-to-a a n = + pr2 (pr2 (pr2 (pr2 (stage-zigzag-construction-id-pushout (succ-ℕ n))))) a + + Path-to-b : codomain-span-diagram 𝒮 → ℕ → UU (l1 ⊔ l2 ⊔ l3) + Path-to-b b n = pr1 (stage-zigzag-construction-id-pushout n) b + + Path-to-a : domain-span-diagram 𝒮 → ℕ → UU (l1 ⊔ l2 ⊔ l3) + Path-to-a a n = pr1 (pr2 (stage-zigzag-construction-id-pushout n)) a + + inl-Path-to-b : + (b : codomain-span-diagram 𝒮) (n : ℕ) → Path-to-b b n → Path-to-b b (succ-ℕ n) + inl-Path-to-b b n = + inl-standard-pushout + ( span-diagram-path-to-b b n) + + inl-Path-to-a : + (a : domain-span-diagram 𝒮) (n : ℕ) → Path-to-a a n → Path-to-a a (succ-ℕ n) + inl-Path-to-a a n = + inl-standard-pushout + ( span-diagram-path-to-a a n) + + concat-inv-s : + (s : spanning-type-span-diagram 𝒮) → + (n : ℕ) → + Path-to-b (right-map-span-diagram 𝒮 s) n → + Path-to-a (left-map-span-diagram 𝒮 s) n + concat-inv-s s n = pr1 (pr2 (pr2 (stage-zigzag-construction-id-pushout n))) s + + concat-s : + (s : spanning-type-span-diagram 𝒮) → + (n : ℕ) → + Path-to-a (left-map-span-diagram 𝒮 s) n → + Path-to-b (right-map-span-diagram 𝒮 s) (succ-ℕ n) + concat-s s n p = + inr-standard-pushout + ( span-diagram-path-to-b (right-map-span-diagram 𝒮 s) n) + ( s , refl , p) + + right-sequential-diagram-zigzag-id-pushout : + codomain-span-diagram 𝒮 → + sequential-diagram (l1 ⊔ l2 ⊔ l3) + pr1 (right-sequential-diagram-zigzag-id-pushout b) = Path-to-b b + pr2 (right-sequential-diagram-zigzag-id-pushout b) = inl-Path-to-b b + + left-sequential-diagram-zigzag-id-pushout : + domain-span-diagram 𝒮 → + sequential-diagram (l1 ⊔ l2 ⊔ l3) + pr1 (left-sequential-diagram-zigzag-id-pushout a) = Path-to-a a + pr2 (left-sequential-diagram-zigzag-id-pushout a) = inl-Path-to-a a + + zigzag-sequential-diagram-zigzag-id-pushout : + (s : spanning-type-span-diagram 𝒮) → + zigzag-sequential-diagram + ( left-sequential-diagram-zigzag-id-pushout + ( left-map-span-diagram 𝒮 s)) + ( shift-once-sequential-diagram + ( right-sequential-diagram-zigzag-id-pushout + ( right-map-span-diagram 𝒮 s))) + pr1 (zigzag-sequential-diagram-zigzag-id-pushout s) = + concat-s s + pr1 (pr2 (zigzag-sequential-diagram-zigzag-id-pushout s)) n = + concat-inv-s s (succ-ℕ n) + pr1 (pr2 (pr2 (zigzag-sequential-diagram-zigzag-id-pushout s))) n p = + glue-standard-pushout + ( span-diagram-path-to-a (left-map-span-diagram 𝒮 s) n) + ( s , refl , p) + pr2 (pr2 (pr2 (zigzag-sequential-diagram-zigzag-id-pushout s))) n p = + glue-standard-pushout + ( span-diagram-path-to-b (right-map-span-diagram 𝒮 s) (succ-ℕ n)) + ( s , refl , p) + + left-id-pushout : domain-span-diagram 𝒮 → UU (l1 ⊔ l2 ⊔ l3) + left-id-pushout a = + standard-sequential-colimit (left-sequential-diagram-zigzag-id-pushout a) + + refl-id-pushout : left-id-pushout a₀ + refl-id-pushout = + map-cocone-standard-sequential-colimit 0 (map-raise refl) + + right-id-pushout : codomain-span-diagram 𝒮 → UU (l1 ⊔ l2 ⊔ l3) + right-id-pushout b = + standard-sequential-colimit (right-sequential-diagram-zigzag-id-pushout b) + + equiv-id-pushout : + (s : spanning-type-span-diagram 𝒮) → + left-id-pushout (left-map-span-diagram 𝒮 s) ≃ + right-id-pushout (right-map-span-diagram 𝒮 s) + equiv-id-pushout s = + equiv-colimit-zigzag-sequential-diagram _ _ + ( up-standard-sequential-colimit) + ( up-shift-cocone-sequential-diagram 1 up-standard-sequential-colimit) + ( zigzag-sequential-diagram-zigzag-id-pushout s) + + -- concat-inv-s-inf : + -- (s : spanning-type-span-diagram 𝒮) → + -- right-id-pushout (right-map-span-diagram 𝒮 s) → + -- left-id-pushout (left-map-span-diagram 𝒮 s) + -- concat-inv-s-inf s = + -- map-inv-equiv (equiv-id-pushout s) + + concat-s-inf : + (s : spanning-type-span-diagram 𝒮) → + left-id-pushout (left-map-span-diagram 𝒮 s) → + right-id-pushout (right-map-span-diagram 𝒮 s) + concat-s-inf s = + map-equiv (equiv-id-pushout s) + + descent-data-zigzag-id-pushout : descent-data-pushout 𝒮 (l1 ⊔ l2 ⊔ l3) + pr1 descent-data-zigzag-id-pushout = left-id-pushout + pr1 (pr2 descent-data-zigzag-id-pushout) = right-id-pushout + pr2 (pr2 descent-data-zigzag-id-pushout) = equiv-id-pushout +``` + +## Theorem + +### TODO + +```agda +apd-lemma : + {l1 l2 l3 : Level} {A : UU l1} {B : A → UU l2} {C : A → UU l3} + (f : (a : A) → B a) (g : (a : A) → B a → C a) {x y : A} (p : x = y) → + apd (λ a → g a (f a)) p = inv (preserves-tr g p (f x)) ∙ ap (g y) (apd f p) +apd-lemma f g refl = refl + +lem : + {l : Level} {X : UU l} {x y z u v : X} → + (p : y = x) (q : y = z) (r : z = u) (s : x = v) (t : u = v) → + (inv p ∙ (q ∙ r) = s ∙ inv t) → q ∙ r ∙ t = p ∙ s +lem refl q r refl refl x = right-unit ∙ x + +module _ + {l1 l2 l3 l4 : Level} {𝒮 : span-diagram l1 l2 l3} + {X : UU l4} {c : cocone-span-diagram 𝒮 X} + (up-c : universal-property-pushout _ _ c) + (a₀ : domain-span-diagram 𝒮) + where + + module _ + {l5 : Level} + (R : descent-data-pushout + ( span-diagram-flattening-descent-data-pushout + ( descent-data-zigzag-id-pushout 𝒮 a₀)) + ( l5)) + (r₀ : left-family-descent-data-pushout R (a₀ , refl-id-pushout 𝒮 a₀)) + where + + private + CB : + (s : spanning-type-span-diagram 𝒮) → + (n : ℕ) → + (p : Path-to-a 𝒮 a₀ (left-map-span-diagram 𝒮 s) n) → + concat-s-inf 𝒮 a₀ s + ( map-cocone-standard-sequential-colimit n p) = + map-cocone-standard-sequential-colimit (succ-ℕ n) + ( concat-s 𝒮 a₀ s n p) + CB s = + htpy-htpy-cocone-map-sequential-colimit-hom-sequential-diagram + ( up-standard-sequential-colimit) + ( shift-once-cocone-sequential-diagram + ( cocone-standard-sequential-colimit + ( right-sequential-diagram-zigzag-id-pushout 𝒮 a₀ (right-map-span-diagram 𝒮 s)))) + ( hom-diagram-zigzag-sequential-diagram + ( zigzag-sequential-diagram-zigzag-id-pushout 𝒮 a₀ s)) + + Ψ : + (s : spanning-type-span-diagram 𝒮) → + (n : ℕ) → + (p : Path-to-a 𝒮 a₀ (left-map-span-diagram 𝒮 s) n) → + left-family-descent-data-pushout R + ( left-map-span-diagram 𝒮 s , map-cocone-standard-sequential-colimit n p) → + right-family-descent-data-pushout R + ( right-map-span-diagram 𝒮 s , map-cocone-standard-sequential-colimit (succ-ℕ n) (concat-s 𝒮 a₀ s n p)) + Ψ s = + map-over-diagram-equiv-over-colimit + ( up-standard-sequential-colimit) + ( shift-once-cocone-sequential-diagram + ( cocone-standard-sequential-colimit _)) + ( hom-diagram-zigzag-sequential-diagram + ( zigzag-sequential-diagram-zigzag-id-pushout 𝒮 a₀ s)) + ( ev-pair + ( left-family-descent-data-pushout R) + ( left-map-span-diagram 𝒮 s)) + ( ev-pair + ( right-family-descent-data-pushout R) + ( right-map-span-diagram 𝒮 s)) + ( ev-pair + ( equiv-family-descent-data-pushout R) + ( s)) + -- ( tr + -- ( ev-pair (right-family-descent-data-pushout R) (right-map-span-diagram 𝒮 s)) + -- ( CB s n p)) ∘ + -- ( map-family-descent-data-pushout R + -- ( s , map-cocone-standard-sequential-colimit n p)) + + opaque + -- The definitions currently matter for α and β + -- Φ : + -- (s : spanning-type-span-diagram 𝒮) → + -- (n : ℕ) → + -- (p : Path-to-b 𝒮 a₀ (right-map-span-diagram 𝒮 s) (succ-ℕ n)) → + -- right-family-descent-data-pushout R + -- ( right-map-span-diagram 𝒮 s , map-cocone-standard-sequential-colimit (succ-ℕ n) p) → + -- right-family-descent-data-pushout R + -- ( right-map-span-diagram 𝒮 s , + -- concat-s-inf 𝒮 a₀ s (map-cocone-standard-sequential-colimit (succ-ℕ n) (concat-inv-s 𝒮 a₀ s (succ-ℕ n) p))) + -- Φ s n p = + -- ( tr + -- ( ev-pair (right-family-descent-data-pushout R) (right-map-span-diagram 𝒮 s)) + -- ( inv (CB s (succ-ℕ n) (concat-inv-s 𝒮 a₀ s (succ-ℕ n) p)))) ∘ + -- ( tr + -- ( λ p → + -- right-family-descent-data-pushout R + -- ( right-map-span-diagram 𝒮 s , map-cocone-standard-sequential-colimit (succ-ℕ (succ-ℕ n)) p)) + -- ( glue-pushout _ _ (s , refl , p))) ∘ + -- ( tr + -- ( ev-pair (right-family-descent-data-pushout R) (right-map-span-diagram 𝒮 s)) + -- ( coherence-cocone-standard-sequential-colimit (succ-ℕ n) p)) + + Φ' : + (s : spanning-type-span-diagram 𝒮) → + (n : ℕ) → + (p : Path-to-b 𝒮 a₀ (right-map-span-diagram 𝒮 s) (succ-ℕ n)) → + right-family-descent-data-pushout R + ( right-map-span-diagram 𝒮 s , map-cocone-standard-sequential-colimit (succ-ℕ n) p) → + left-family-descent-data-pushout R + ( left-map-span-diagram 𝒮 s , map-cocone-standard-sequential-colimit (succ-ℕ n) (concat-inv-s 𝒮 a₀ s (succ-ℕ n) p)) + Φ' s = + inv-map-over-diagram-equiv-zigzag + ( up-standard-sequential-colimit) + ( shift-once-cocone-sequential-diagram + ( cocone-standard-sequential-colimit _)) + ( zigzag-sequential-diagram-zigzag-id-pushout 𝒮 a₀ s) + ( ev-pair + ( left-family-descent-data-pushout R) + ( left-map-span-diagram 𝒮 s)) + ( ev-pair + ( right-family-descent-data-pushout R) + ( right-map-span-diagram 𝒮 s)) + ( ev-pair + ( equiv-family-descent-data-pushout R) + ( s)) + + -- coh-dep-cocone-a : + -- (s : spanning-type-span-diagram 𝒮) (n : ℕ) → + -- (p : Path-to-a 𝒮 a₀ (left-map-span-diagram 𝒮 s) n) → + -- coherence-square-maps + -- ( ( tr + -- ( λ p → + -- left-family-descent-data-pushout R + -- ( left-map-span-diagram 𝒮 s , + -- map-cocone-standard-sequential-colimit (succ-ℕ n) p)) + -- ( glue-pushout _ _ (s , refl , p))) ∘ + -- ( tr + -- ( ev-pair + -- ( left-family-descent-data-pushout R) + -- ( left-map-span-diagram 𝒮 s)) + -- ( coherence-cocone-standard-sequential-colimit n p))) + -- ( map-family-descent-data-pushout R + -- ( s , map-cocone-standard-sequential-colimit n p)) + -- ( map-family-descent-data-pushout R + -- ( s , + -- map-cocone-standard-sequential-colimit (succ-ℕ n) + -- ( concat-inv-s 𝒮 a₀ s (succ-ℕ n) ( concat-s 𝒮 a₀ s n p)))) + -- ( ( tr + -- ( ev-pair + -- ( right-family-descent-data-pushout R) + -- ( right-map-span-diagram 𝒮 s)) + -- ( inv (CB s (succ-ℕ n) (concat-inv-s 𝒮 a₀ s (succ-ℕ n) (concat-s 𝒮 a₀ s n p))))) ∘ + -- ( tr + -- ( λ p → + -- right-family-descent-data-pushout R + -- ( right-map-span-diagram 𝒮 s , + -- map-cocone-standard-sequential-colimit (succ-ℕ (succ-ℕ n)) p)) + -- ( glue-pushout _ _ (s , refl , concat-s 𝒮 a₀ s n p))) ∘ + -- ( tr + -- ( ev-pair + -- ( right-family-descent-data-pushout R) + -- ( right-map-span-diagram 𝒮 s)) + -- ( coherence-cocone-standard-sequential-colimit (succ-ℕ n) (concat-s 𝒮 a₀ s n p))) ∘ + -- ( tr + -- ( ev-pair + -- ( right-family-descent-data-pushout R) + -- ( right-map-span-diagram 𝒮 s)) + -- ( CB s n p))) + -- coh-dep-cocone-a s n p = + -- ( ( inv-htpy + -- ( ( tr-concat _ _) ∙h + -- ( ( tr _ _) ·l + -- ( ( tr-concat _ _) ∙h + -- ( horizontal-concat-htpy + -- ( λ _ → substitution-law-tr _ _ _) + -- ( tr-concat _ _)))))) ·r + -- ( map-family-descent-data-pushout R + -- ( s , map-cocone-standard-sequential-colimit n p))) ∙h + -- ( ( λ q → + -- ap + -- ( λ r → + -- tr + -- ( ev-pair + -- ( right-family-descent-data-pushout R) + -- ( right-map-span-diagram 𝒮 s)) + -- ( r) + -- ( map-family-descent-data-pushout R + -- ( s , map-cocone-standard-sequential-colimit n p) + -- ( q))) + -- ( inv ([i] p))) ∙h + -- ( λ q → + -- substitution-law-tr + -- ( ev-pair + -- ( right-family-descent-data-pushout R) + -- ( right-map-span-diagram 𝒮 s)) + -- ( concat-s-inf 𝒮 a₀ s) + -- ( coherence-cocone-standard-sequential-colimit n p ∙ + -- ap + -- ( map-cocone-standard-sequential-colimit (succ-ℕ n)) + -- ( glue-standard-pushout _ _))) ∙h + -- ( inv-htpy + -- ( preserves-tr + -- ( ev-pair + -- ( map-family-descent-data-pushout R) + -- ( s)) + -- ( coherence-cocone-standard-sequential-colimit n p ∙ + -- ap (map-cocone-standard-sequential-colimit (succ-ℕ n)) (glue-standard-pushout _ _))))) ∙h + -- ( ( map-family-descent-data-pushout R + -- ( s , + -- map-cocone-standard-sequential-colimit + -- ( succ-ℕ n) + -- ( concat-inv-s 𝒮 a₀ s + -- ( succ-ℕ n) + -- ( concat-s 𝒮 a₀ s n p)))) ·l + -- ( ( tr-concat _ _) ∙h + -- ( λ q → substitution-law-tr _ _ _))) + -- where + -- [i] : + -- ( ( concat-s-inf 𝒮 a₀ s) ·l + -- ( ( coherence-cocone-standard-sequential-colimit n) ∙h + -- ( ( map-cocone-standard-sequential-colimit + -- { A = + -- left-sequential-diagram-zigzag-id-pushout 𝒮 a₀ + -- ( left-map-span-diagram 𝒮 s)} + -- ( succ-ℕ n)) ·l + -- ( λ p → glue-pushout _ _ (s , refl , p))))) ~ + -- ( ( CB s n) ∙h + -- ( ( coherence-cocone-standard-sequential-colimit (succ-ℕ n)) ·r + -- ( concat-s 𝒮 a₀ s n)) ∙h + -- ( ( map-cocone-standard-sequential-colimit + -- { A = + -- right-sequential-diagram-zigzag-id-pushout 𝒮 a₀ + -- ( right-map-span-diagram 𝒮 s)} + -- ( succ-ℕ (succ-ℕ n))) ·l + -- ( λ p → glue-pushout _ _ ( s , refl , concat-s 𝒮 a₀ s n p))) ∙h + -- ( ( inv-htpy (CB s (succ-ℕ n))) ·r + -- ( concat-inv-s 𝒮 a₀ s (succ-ℕ n) ∘ concat-s 𝒮 a₀ s n))) + -- [i] = + -- ( distributive-left-whisker-comp-concat _ _ _) ∙h + -- ( right-transpose-htpy-concat _ _ _ + -- ( ( left-whisker-concat-coherence-square-homotopies _ _ _ _ _ + -- ( λ p → + -- inv + -- ( nat-coherence-square-maps _ _ _ _ + -- ( CB s (succ-ℕ n)) + -- ( glue-pushout _ _ (s , refl , p))))) ∙h + -- ( map-inv-equiv + -- ( equiv-right-transpose-htpy-concat _ _ _) + -- ( ( coherence-htpy-cocone-map-sequential-colimit-hom-sequential-diagram + -- ( up-standard-sequential-colimit) + -- ( shift-once-cocone-sequential-diagram + -- ( cocone-standard-sequential-colimit + -- ( right-sequential-diagram-zigzag-id-pushout 𝒮 a₀ + -- ( right-map-span-diagram 𝒮 s)))) + -- ( hom-diagram-zigzag-sequential-diagram + -- ( zigzag-sequential-diagram-zigzag-id-pushout 𝒮 a₀ s)) + -- ( n)) ∙h + -- ( ap-concat-htpy + -- ( CB s n) + -- ( ( ap-concat-htpy _ + -- ( ( distributive-left-whisker-comp-concat + -- ( map-cocone-standard-sequential-colimit + -- { A = + -- right-sequential-diagram-zigzag-id-pushout 𝒮 a₀ + -- ( right-map-span-diagram 𝒮 s)} + -- ( succ-ℕ (succ-ℕ n))) + -- ( _) + -- ( _)) ∙h + -- ( ap-concat-htpy _ + -- ( ( left-whisker-comp² _ + -- ( left-whisker-inv-htpy _ _)) ∙h + -- ( left-whisker-inv-htpy _ _))))) ∙h + -- ( inv-htpy-assoc-htpy _ _ _))) ∙h + -- ( inv-htpy-assoc-htpy _ _ _))))) ∙h + -- ( ap-concat-htpy' _ + -- ( inv-htpy-assoc-htpy _ _ _)) + + α : + (s : spanning-type-span-diagram 𝒮) → + (n : ℕ) → + (p : Path-to-a 𝒮 a₀ (left-map-span-diagram 𝒮 s) n) → + coherence-square-maps + ( Ψ s n p) + ( tr + ( ev-pair + ( left-family-descent-data-pushout R) + ( left-map-span-diagram 𝒮 s)) + ( coherence-cocone-standard-sequential-colimit n p)) + ( Φ' s n (concat-s 𝒮 a₀ s n p)) + ( tr + ( λ p → + left-family-descent-data-pushout R + ( left-map-span-diagram 𝒮 s , + map-cocone-standard-sequential-colimit (succ-ℕ n) p)) + ( glue-pushout _ _ (s , refl , p))) + α s n p = + upper-triangle-over + ( up-standard-sequential-colimit) + ( shift-once-cocone-sequential-diagram + ( cocone-standard-sequential-colimit _)) + ( zigzag-sequential-diagram-zigzag-id-pushout 𝒮 a₀ s) + ( ev-pair + ( left-family-descent-data-pushout R) + ( left-map-span-diagram 𝒮 s)) + ( ev-pair + ( right-family-descent-data-pushout R) + ( right-map-span-diagram 𝒮 s)) + ( ev-pair + ( equiv-family-descent-data-pushout R) + ( s)) + ( n) + { p} + -- map-eq-transpose-equiv + -- ( equiv-family-descent-data-pushout R + -- ( s , + -- map-cocone-standard-sequential-colimit + -- ( succ-ℕ n) + -- ( concat-inv-s 𝒮 a₀ s + -- ( succ-ℕ n) + -- ( concat-s 𝒮 a₀ s n p)))) + -- ( inv (coh-dep-cocone-a s n p q)) + + β : + (s : spanning-type-span-diagram 𝒮) → + (n : ℕ) → + (p : Path-to-b 𝒮 a₀ (right-map-span-diagram 𝒮 s) (succ-ℕ n)) → + coherence-square-maps + ( Φ' s n p) + ( tr + ( ev-pair + ( right-family-descent-data-pushout R) + ( right-map-span-diagram 𝒮 s)) + ( coherence-cocone-standard-sequential-colimit (succ-ℕ n) p)) + ( Ψ s (succ-ℕ n) (concat-inv-s 𝒮 a₀ s (succ-ℕ n) p)) + ( tr + ( λ p → + right-family-descent-data-pushout R + ( right-map-span-diagram 𝒮 s , + map-cocone-standard-sequential-colimit (succ-ℕ (succ-ℕ n)) p)) + ( glue-pushout _ _ (s , refl , p))) + β s n p = + lower-triangle-over + ( up-standard-sequential-colimit) + ( shift-once-cocone-sequential-diagram + ( cocone-standard-sequential-colimit _)) + ( zigzag-sequential-diagram-zigzag-id-pushout 𝒮 a₀ s) + ( ev-pair + ( left-family-descent-data-pushout R) + ( left-map-span-diagram 𝒮 s)) + ( ev-pair + ( right-family-descent-data-pushout R) + ( right-map-span-diagram 𝒮 s)) + ( ev-pair + ( equiv-family-descent-data-pushout R) + ( s)) + ( n) + { p} + + -- Note for refactoring: after contracting away the last component and the + -- vertical map, the definition of prism2 will fail to typecheck, since + -- currently the coherence computes to ∙ refl, which needs to be taken + -- into account; contracting away this data would simplify the later + -- homotopy algebra. + stages-cocones' : + (n : ℕ) → + Σ ( (b : codomain-span-diagram 𝒮) → + dependent-cocone-span-diagram + ( cocone-pushout-span-diagram + ( span-diagram-path-to-b 𝒮 a₀ b n)) + ( λ p → + right-family-descent-data-pushout R + ( b , map-cocone-standard-sequential-colimit (succ-ℕ n) p))) + ( λ dep-cocone-b → + Σ ( (a : domain-span-diagram 𝒮) → + dependent-cocone-span-diagram + ( cocone-pushout-span-diagram + ( span-diagram-path-to-a 𝒮 a₀ a n)) + ( λ p → + left-family-descent-data-pushout R + ( a , map-cocone-standard-sequential-colimit (succ-ℕ n) p))) + ( λ dep-cocone-a → + (s : spanning-type-span-diagram 𝒮) → + (p : Path-to-b 𝒮 a₀ (right-map-span-diagram 𝒮 s) (succ-ℕ n)) → + vertical-map-dependent-cocone _ _ _ _ + ( dep-cocone-a (left-map-span-diagram 𝒮 s)) + ( s , refl , p) = + Φ' s n p (dependent-cogap _ _ (dep-cocone-b (right-map-span-diagram 𝒮 s)) p))) + stages-cocones' zero-ℕ = + dep-cocone-b , + dep-cocone-a , + λ s p → refl + where + dep-cocone-b : + (b : codomain-span-diagram 𝒮) → + dependent-cocone-span-diagram + ( cocone-pushout-span-diagram (span-diagram-path-to-b 𝒮 a₀ b 0)) + ( λ p → + right-family-descent-data-pushout R + ( b , map-cocone-standard-sequential-colimit 1 p)) + pr1 (dep-cocone-b b) (map-raise ()) + pr1 (pr2 (dep-cocone-b ._)) (s , refl , map-raise refl) = + tr + ( ev-pair + ( right-family-descent-data-pushout R) + ( right-map-span-diagram 𝒮 s)) + ( CB s 0 (map-raise refl)) + ( map-family-descent-data-pushout R + ( s , map-cocone-standard-sequential-colimit 0 (map-raise refl)) + ( r₀)) + pr2 (pr2 (dep-cocone-b ._)) (s , refl , map-raise ()) + dep-cocone-a : + (a : domain-span-diagram 𝒮) → + dependent-cocone-span-diagram + ( cocone-pushout-span-diagram (span-diagram-path-to-a 𝒮 a₀ a 0)) + ( λ p → + left-family-descent-data-pushout R + ( a , map-cocone-standard-sequential-colimit 1 p)) + pr1 (dep-cocone-a .a₀) (map-raise refl) = + tr + ( ev-pair (left-family-descent-data-pushout R) a₀) + ( coherence-cocone-standard-sequential-colimit 0 (map-raise refl)) + ( r₀) + pr1 (pr2 (dep-cocone-a a)) (s , refl , p) = + Φ' s 0 p (dependent-cogap _ _ (dep-cocone-b (right-map-span-diagram 𝒮 s)) p) + pr2 (pr2 (dep-cocone-a .a₀)) (s , refl , map-raise refl) = + ( α s 0 (map-raise refl) r₀) ∙ + ( ap + ( Φ' s 0 _) + ( inv + ( compute-inr-dependent-cogap _ _ + ( dep-cocone-b (right-map-span-diagram 𝒮 s)) + ( s , refl , map-raise refl)))) + stages-cocones' (succ-ℕ n) = + dep-cocone-b , + dep-cocone-a , + λ s p → refl + where + dep-cocone-b : + (b : codomain-span-diagram 𝒮) → + dependent-cocone-span-diagram + ( cocone-pushout-span-diagram (span-diagram-path-to-b 𝒮 a₀ b (succ-ℕ n))) + ( λ p → + right-family-descent-data-pushout R + ( b , map-cocone-standard-sequential-colimit (succ-ℕ (succ-ℕ n)) p)) + pr1 (dep-cocone-b b) p = + tr + ( ev-pair (right-family-descent-data-pushout R) b) + ( coherence-cocone-standard-sequential-colimit (succ-ℕ n) p) + ( dependent-cogap _ _ (pr1 (stages-cocones' n) b) p) + pr1 (pr2 (dep-cocone-b b)) (s , refl , p) = + tr + ( ev-pair + ( right-family-descent-data-pushout R) + ( right-map-span-diagram 𝒮 s)) + ( CB s (succ-ℕ n) p) + ( map-family-descent-data-pushout R + ( s , map-cocone-standard-sequential-colimit (succ-ℕ n) p) + ( dependent-cogap _ _ (pr1 (pr2 (stages-cocones' n)) (left-map-span-diagram 𝒮 s)) p)) + pr2 (pr2 (dep-cocone-b b)) (s , refl , p) = + ( β s n p _) ∙ + ( ap + ( Ψ s (succ-ℕ n) _) + ( inv + ( ( compute-inr-dependent-cogap _ _ + ( pr1 (pr2 (stages-cocones' n)) (left-map-span-diagram 𝒮 s)) + ( s , refl , p)) ∙ + ( pr2 (pr2 (stages-cocones' n)) s p)))) + dep-cocone-a : + (a : domain-span-diagram 𝒮) → + dependent-cocone-span-diagram + ( cocone-pushout-span-diagram (span-diagram-path-to-a 𝒮 a₀ a (succ-ℕ n))) + ( λ p → + left-family-descent-data-pushout R + ( a , map-cocone-standard-sequential-colimit (succ-ℕ (succ-ℕ n)) p)) + pr1 (dep-cocone-a a) p = + tr + ( ev-pair (left-family-descent-data-pushout R) a) + ( coherence-cocone-standard-sequential-colimit (succ-ℕ n) p) + ( dependent-cogap _ _ (pr1 (pr2 (stages-cocones' n)) a) p) + pr1 (pr2 (dep-cocone-a a)) (s , refl , p) = + Φ' s (succ-ℕ n) p (dependent-cogap _ _ (dep-cocone-b (right-map-span-diagram 𝒮 s)) p) + pr2 (pr2 (dep-cocone-a a)) (s , refl , p) = + ( α s (succ-ℕ n) p _) ∙ + ( ap + ( Φ' s (succ-ℕ n) _) + ( inv + ( compute-inr-dependent-cogap _ _ + ( dep-cocone-b (right-map-span-diagram 𝒮 s)) + ( s , refl , p)))) + + tB : + (b : codomain-span-diagram 𝒮) (n : ℕ) (p : Path-to-b 𝒮 a₀ b n) → + right-family-descent-data-pushout R + ( b , map-cocone-standard-sequential-colimit n p) + tB b zero-ℕ (map-raise ()) + tB b (succ-ℕ n) = dependent-cogap _ _ (pr1 (stages-cocones' n) b) + + KB : + (b : codomain-span-diagram 𝒮) (n : ℕ) (p : Path-to-b 𝒮 a₀ b n) → + dependent-identification + ( ev-pair (right-family-descent-data-pushout R) b) + ( coherence-cocone-standard-sequential-colimit n p) + ( tB b n p) + ( tB b (succ-ℕ n) (inl-Path-to-b 𝒮 a₀ b n p)) + KB b zero-ℕ (map-raise ()) + KB b (succ-ℕ n) p = + inv + ( compute-inl-dependent-cogap _ _ + ( pr1 (stages-cocones' (succ-ℕ n)) b) + ( p)) + + tA : + (a : domain-span-diagram 𝒮) (n : ℕ) (p : Path-to-a 𝒮 a₀ a n) → + left-family-descent-data-pushout R + ( a , map-cocone-standard-sequential-colimit n p) + tA .a₀ zero-ℕ (map-raise refl) = r₀ + tA a (succ-ℕ n) = dependent-cogap _ _ (pr1 (pr2 (stages-cocones' n)) a) + + KA : + (a : domain-span-diagram 𝒮) (n : ℕ) (p : Path-to-a 𝒮 a₀ a n) → + dependent-identification + ( ev-pair (left-family-descent-data-pushout R) a) + ( coherence-cocone-standard-sequential-colimit n p) + ( tA a n p) + ( tA a (succ-ℕ n) (inl-Path-to-a 𝒮 a₀ a n p)) + KA a zero-ℕ (map-raise refl) = + inv + ( compute-inl-dependent-cogap _ _ + ( pr1 (pr2 (stages-cocones' 0)) a) + ( map-raise refl)) + KA a (succ-ℕ n) p = + inv + ( compute-inl-dependent-cogap _ _ + ( pr1 (pr2 (stages-cocones' (succ-ℕ n))) a) + ( p)) + + tS-in-diagram : + (s : spanning-type-span-diagram 𝒮) (n : ℕ) → + (p : Path-to-a 𝒮 a₀ (left-map-span-diagram 𝒮 s) n) → + ( tr (ev-pair (right-family-descent-data-pushout R) (right-map-span-diagram 𝒮 s)) + ( CB s n p) + ( map-family-descent-data-pushout R _ (tA (left-map-span-diagram 𝒮 s) n p))) = + ( tB (right-map-span-diagram 𝒮 s) (succ-ℕ n) (concat-s 𝒮 a₀ s n p)) + tS-in-diagram s zero-ℕ (map-raise refl) = + inv (compute-inr-dependent-cogap _ _ _ _) + tS-in-diagram s (succ-ℕ n) p = inv (compute-inr-dependent-cogap _ _ _ _) + + module vertices + (s : spanning-type-span-diagram 𝒮) + where + PAn : (n : ℕ) → UU (l1 ⊔ l2 ⊔ l3) + PAn = Path-to-a 𝒮 a₀ (left-map-span-diagram 𝒮 s) + QAn : {n : ℕ} → PAn n → UU l5 + QAn {n} p = + left-family-descent-data-pushout R (left-map-span-diagram 𝒮 s , map-cocone-standard-sequential-colimit n p) + PBn : (n : ℕ) → UU (l1 ⊔ l2 ⊔ l3) + PBn = Path-to-b 𝒮 a₀ (right-map-span-diagram 𝒮 s) ∘ succ-ℕ + QBn : {n : ℕ} → PBn n → UU l5 + QBn {n} p = + right-family-descent-data-pushout R (right-map-span-diagram 𝒮 s , map-cocone-standard-sequential-colimit (succ-ℕ n) p) + fn : {n : ℕ} → PAn n → PBn n + fn = concat-s 𝒮 a₀ s _ + gn : {n : ℕ} → PAn n → PAn (succ-ℕ n) + gn = inl-Path-to-a 𝒮 a₀ (left-map-span-diagram 𝒮 s) _ + hn : {n : ℕ} → PBn n → PBn (succ-ℕ n) + hn = inl-Path-to-b 𝒮 a₀ (right-map-span-diagram 𝒮 s) _ + mn : {n : ℕ} → PBn n → PAn (succ-ℕ n) + mn {n} = concat-inv-s 𝒮 a₀ s (succ-ℕ n) + sAn : {n : ℕ} (p : PAn n) → QAn p + sAn = tA (left-map-span-diagram 𝒮 s) _ + sBn : {n : ℕ} (p : PBn n) → QBn p + sBn = tB (right-map-span-diagram 𝒮 s) _ + f'n : {n : ℕ} {p : PAn n} → QAn p → QBn (fn p) + f'n {n} {p} = Ψ s n p + g'n : {n : ℕ} {p : PAn n} → QAn p → QAn (gn p) + g'n {n} {p} = + tr + ( ev-pair + ( left-family-descent-data-pushout R) + ( left-map-span-diagram 𝒮 s)) + ( coherence-cocone-standard-sequential-colimit n p) + h'n : {n : ℕ} {p : PBn n} → QBn p → QBn (hn p) + h'n {n} {p} = + tr + ( ev-pair + ( right-family-descent-data-pushout R) + ( right-map-span-diagram 𝒮 s)) + ( coherence-cocone-standard-sequential-colimit (succ-ℕ n) p) + m'n : {n : ℕ} {p : PBn n} → QBn p → QAn (mn p) + m'n = Φ' s _ _ + + module sides + (s : spanning-type-span-diagram 𝒮) (n : ℕ) + where + open vertices s + left : + {p : PAn n} → f'n (sAn p) = sBn (fn p) + left = tS-in-diagram s n _ + right : + {p : PAn (succ-ℕ n)} → + f'n (sAn p) = sBn (fn p) + right = tS-in-diagram s (succ-ℕ n) _ + bottom : + {p : PAn n} → hn (fn p) = fn (gn p) + bottom = + naturality-map-hom-diagram-zigzag-sequential-diagram + ( zigzag-sequential-diagram-zigzag-id-pushout 𝒮 a₀ s) + ( n) + ( _) + bottom1 : + {p : PAn n} → gn p = mn (fn p) + bottom1 = glue-pushout _ _ _ + bottom2 : + {p : PBn n} → hn p = fn (mn p) + bottom2 = glue-pushout _ _ _ + far : + {p : PAn n} → g'n (sAn p) = sAn (gn p) + far = KA (left-map-span-diagram 𝒮 s) n _ + near : + {p : PBn n} → h'n (sBn p) = sBn (hn p) + near = KB (right-map-span-diagram 𝒮 s) (succ-ℕ n) _ + mid : + {p : PBn n} → m'n (sBn p) = sAn (mn p) + mid = mid' _ _ + where + mid' : (n : ℕ) (p : PBn n) → m'n (sBn p) = sAn (mn p) + mid' zero-ℕ p = inv (compute-inr-dependent-cogap _ _ _ _) + mid' (succ-ℕ n) p = inv (compute-inr-dependent-cogap _ _ _ _) + top1 : + {p : PAn n} (q : QAn p) → + tr QAn bottom1 (g'n q) = m'n (f'n q) + top1 = α s n _ + top2 : + {p : PBn n} (q : QBn p) → + tr QBn bottom2 (h'n {n = n} q) = f'n {n = succ-ℕ n} (m'n q) + top2 = β s n _ + top : + {p : PAn n} (q : QAn p) → + tr QBn bottom (h'n (f'n q)) = f'n (g'n q) + top = + pasting-triangles-over gn fn fn hn g'n f'n f'n h'n mn m'n + ( inv-htpy (λ p → bottom1 {p})) + ( λ p → bottom2 {p}) + ( inv-htpy-over QAn (λ _ → bottom1) g'n (m'n ∘ f'n) top1) + ( top2) + + module CUBE + (s : spanning-type-span-diagram 𝒮) (n : ℕ) + where + open vertices s + open sides s n + + CUBE : UU (l1 ⊔ l2 ⊔ l3 ⊔ l5) + CUBE = + section-square-over gn fn fn hn g'n f'n f'n h'n sAn sBn sAn sBn + ( λ p → far {p}) + ( λ p → left {p}) + ( λ p → right {p}) + ( λ p → near {p}) + ( λ p → bottom {p}) + ( top) + + PRISM1 : UU (l1 ⊔ l2 ⊔ l3 ⊔ l5) + PRISM1 = + section-triangle-over fn gn mn f'n g'n m'n sAn sBn sAn + ( λ p → left {p}) + ( λ p → far {p}) + ( λ p → mid {p}) + ( λ p → bottom1 {p}) + ( top1) + + PRISM2 : UU (l1 ⊔ l2 ⊔ l3 ⊔ l5) + PRISM2 = + section-triangle-over mn hn fn m'n h'n f'n sBn sAn sBn + ( λ p → mid {p}) + ( λ p → near {p}) + ( λ p → right {p}) + ( λ p → bottom2 {p}) + ( top2) + + module cube + (s : spanning-type-span-diagram 𝒮) + where abstract + open vertices s + open sides s + open CUBE s + + -- THE COMMENTED CODE WORKS, DON'T DELETE IT! + -- It just takes too long to typecheck it in its current state + prism1 : (n : ℕ) → PRISM1 n + -- prism1 = {!!} + prism1 zero-ℕ (map-raise refl) = + lem _ _ _ _ _ + ( ( ap + ( _∙ (top1 0 (sAn _) ∙ ap m'n (left 0))) + ( ( inv (ap-inv (tr QAn (bottom1 0)) (far 0))) ∙ + ( ap² (tr QAn (bottom1 0)) (inv-inv _)))) ∙ + -- ( [i]) ∙ + ( inv + ( compute-glue-dependent-cogap _ _ + ( pr1 (pr2 (stages-cocones' 0)) (left-map-span-diagram 𝒮 s)) + ( s , refl , (map-raise refl)))) ∙ + ( ap + ( apd sAn (bottom1 0) ∙_) + ( inv (inv-inv _)))) + where + open import foundation.action-on-higher-identifications-functions + prism1 (succ-ℕ n) p = + lem _ _ _ _ _ + ( ( ap + ( _∙ (top1 (succ-ℕ n) (sAn _) ∙ ap m'n (left (succ-ℕ n)))) + ( ( inv (ap-inv (tr QAn (bottom1 (succ-ℕ n))) (far (succ-ℕ n)))) ∙ + ( ap² (tr QAn (bottom1 (succ-ℕ n))) (inv-inv _)))) ∙ + ( inv + ( compute-glue-dependent-cogap _ _ + ( pr1 (pr2 (stages-cocones' (succ-ℕ n))) (left-map-span-diagram 𝒮 s)) + ( s , refl , p))) ∙ + -- ( [i]) ∙ + ( ap + ( apd sAn (bottom1 (succ-ℕ n)) ∙_) + ( inv (inv-inv _)))) + where + open import foundation.action-on-higher-identifications-functions + + prism2 : (n : ℕ) → PRISM2 n + -- prism2 = {!!} + prism2 0 p = + lem _ _ _ _ _ + ( ( ap + ( _∙ (top2 0 (sBn p) ∙ ap f'n (mid 0))) + ( ( inv (ap-inv (tr QBn (bottom2 0)) (near 0))) ∙ + ( ap² (tr (QBn {1}) (bottom2 0)) (inv-inv _)))) ∙ + -- ( inv [ii]) ∙ + ( inv + ( ( compute-glue-dependent-cogap _ _ + ( pr1 (stages-cocones' 1) (right-map-span-diagram 𝒮 s)) + ( s , refl , p)) ∙ + ( ap + ( λ q → + ap (tr QBn _) (compute-inl-dependent-cogap _ _ _ _) ∙ + (top2 0 (sBn p) ∙ ap f'n (inv q))) + ( right-unit)))) ∙ + ( ap + ( apd sBn (bottom2 0) ∙_) + ( inv (inv-inv _)))) + where + open import foundation.action-on-higher-identifications-functions + -- [i] = + -- -- inv + -- ( compute-glue-dependent-cogap _ _ + -- ( pr1 (stages-cocones' 1) (right-map-span-diagram 𝒮 s)) + -- ( s , refl , p)) + -- [ii] = [i] ∙ ap (λ q → ap (tr QBn _) (compute-inl-dependent-cogap _ _ _ _) ∙ (top2 0 (sBn p) ∙ ap f'n (inv q))) right-unit + prism2 (succ-ℕ n) p = + lem _ _ _ _ _ + ( ( ap + ( _∙ (top2 (succ-ℕ n) (sBn p) ∙ ap f'n (mid (succ-ℕ n)))) + ( ( inv (ap-inv (tr QBn (bottom2 (succ-ℕ n))) (near (succ-ℕ n)))) ∙ + ( ap² (tr QBn (bottom2 (succ-ℕ n))) (inv-inv _)))) ∙ + -- ( inv [ii]) ∙ + ( inv + ( ( compute-glue-dependent-cogap _ _ + ( pr1 (stages-cocones' (succ-ℕ (succ-ℕ n))) (right-map-span-diagram 𝒮 s)) + ( s , refl , p)) ∙ + ( ap + ( λ q → + ap (tr QBn _) (compute-inl-dependent-cogap _ _ _ _) ∙ + (top2 (succ-ℕ n) (sBn p) ∙ ap f'n (inv q))) + ( right-unit)))) ∙ + ( ap + ( apd sBn (bottom2 (succ-ℕ n)) ∙_) + ( inv (inv-inv _)))) + where + open import foundation.action-on-higher-identifications-functions + -- [i] = + -- -- inv + -- ( compute-glue-dependent-cogap _ _ + -- ( pr1 (stages-cocones' (succ-ℕ (succ-ℕ n))) (right-map-span-diagram 𝒮 s)) + -- ( s , refl , p)) + -- [ii] = [i] ∙ ap (λ q → ap (tr QBn _) (compute-inl-dependent-cogap _ _ _ _) ∙ (top2 (succ-ℕ n) (sBn p) ∙ ap f'n (inv q))) right-unit + + cube : (n : ℕ) → CUBE n + cube n = + pasting-sections-triangles-over gn fn fn hn g'n f'n f'n h'n mn m'n sAn sBn sAn sBn + ( λ p → far n {p}) + ( λ p → left n {p}) + ( λ p → right n {p}) + ( λ p → near n {p}) + ( λ p → mid n {p}) + ( inv-htpy (λ p → bottom1 n {p})) + ( λ p → bottom2 n {p}) + ( inv-htpy-over QAn (λ p → bottom1 n {p}) g'n (m'n ∘ f'n) (top1 n)) + ( top2 n) + ( get-section-triangle-over' fn gn mn f'n g'n m'n sAn sBn sAn + ( λ p → left n {p}) + ( λ p → far n {p}) + ( λ p → mid n {p}) + ( inv-htpy (λ p → bottom1 n {p})) + ( inv-htpy-over QAn (λ p → bottom1 n {p}) g'n (m'n ∘ f'n) (top1 n)) + ( inv-section-htpy-over + ( λ p → bottom1 n {p}) + ( top1 n) + sAn sAn _ _ + ( unget-section-triangle-over fn gn mn f'n g'n m'n sAn sBn sAn + ( λ p → left n {p}) + ( λ p → far n {p}) + ( λ p → mid n {p}) + ( λ p → bottom1 n {p}) + ( top1 n) + ( prism1 n)))) + ( prism2 n) + + + opaque + unfolding Φ' -- square-over-diagram-square-over-colimit γ + + realign-top : + (s : spanning-type-span-diagram 𝒮) (n : ℕ) → + (p : vertices.PAn s n) → + sides.top s n {p} ~ + square-over-diagram-square-over-colimit + ( up-standard-sequential-colimit) + ( shift-once-cocone-sequential-diagram + ( cocone-standard-sequential-colimit _)) + ( hom-diagram-zigzag-sequential-diagram + ( zigzag-sequential-diagram-zigzag-id-pushout 𝒮 a₀ s)) + ( ev-pair + ( left-family-descent-data-pushout R) + ( left-map-span-diagram 𝒮 s)) + ( ev-pair + ( right-family-descent-data-pushout R) + ( right-map-span-diagram 𝒮 s)) + ( ev-pair + ( equiv-family-descent-data-pushout R) + ( s)) + ( n) + ( p) + realign-top s = + compute-square-over-zigzag-square-over-colimit + ( up-standard-sequential-colimit) + ( shift-once-cocone-sequential-diagram + ( cocone-standard-sequential-colimit _)) + ( zigzag-sequential-diagram-zigzag-id-pushout 𝒮 a₀ s) + ( ev-pair + ( left-family-descent-data-pushout R) + ( left-map-span-diagram 𝒮 s)) + ( ev-pair + ( right-family-descent-data-pushout R) + ( right-map-span-diagram 𝒮 s)) + ( ev-pair + ( equiv-family-descent-data-pushout R) + ( s)) + + KS-in-diagram : + (s : spanning-type-span-diagram 𝒮) (n : ℕ) → + section-square-over + ( vertices.gn s) + ( vertices.fn s) + ( vertices.fn s) + ( vertices.hn s) + ( vertices.g'n s) + ( vertices.f'n s) + ( vertices.f'n s) + ( vertices.h'n s) + ( vertices.sAn s) + ( vertices.sBn s) + ( vertices.sAn s) + ( vertices.sBn s) + ( λ p → sides.far s n) + ( λ p → sides.left s n) + ( λ p → sides.right s n) + ( λ p → sides.near s n) + ( λ p → sides.bottom s n) + ( sides.top s n) + KS-in-diagram = cube.cube + + alt-section-RA : + (a : domain-span-diagram 𝒮) + (p : left-id-pushout 𝒮 a₀ a) → + left-family-descent-data-pushout R (a , p) + alt-section-RA a = + sect-family-sect-dd-sequential-colimit + ( up-standard-sequential-colimit) + ( _) + ( tA a , KA a) + + alt-section-RB : + (b : codomain-span-diagram 𝒮) + (p : right-id-pushout 𝒮 a₀ b) → + right-family-descent-data-pushout R (b , p) + alt-section-RB b = + sect-family-sect-dd-sequential-colimit + ( up-shift-cocone-sequential-diagram 1 up-standard-sequential-colimit) + ( _) + ( tB b ∘ succ-ℕ , KB b ∘ succ-ℕ) + + alt-ind-coherence : + (s : spanning-type-span-diagram 𝒮) + (p : left-id-pushout 𝒮 a₀ (left-map-span-diagram 𝒮 s)) → + map-family-descent-data-pushout R + ( s , p) + ( alt-section-RA (left-map-span-diagram 𝒮 s) p) = + alt-section-RB + ( right-map-span-diagram 𝒮 s) + ( map-sequential-colimit-hom-sequential-diagram + ( up-standard-sequential-colimit) + ( shift-once-cocone-sequential-diagram + ( cocone-standard-sequential-colimit _)) + ( hom-diagram-zigzag-sequential-diagram + ( zigzag-sequential-diagram-zigzag-id-pushout 𝒮 a₀ s)) + ( p)) + alt-ind-coherence s p = + square-colimit-cube-diagram + ( up-standard-sequential-colimit) + ( up-shift-cocone-sequential-diagram 1 up-standard-sequential-colimit) + ( hom-diagram-zigzag-sequential-diagram + ( zigzag-sequential-diagram-zigzag-id-pushout 𝒮 a₀ s)) + ( tA (left-map-span-diagram 𝒮 s) , KA (left-map-span-diagram 𝒮 s)) + ( tB (right-map-span-diagram 𝒮 s) ∘ succ-ℕ , + KB (right-map-span-diagram 𝒮 s) ∘ succ-ℕ) + ( λ p → equiv-family-descent-data-pushout R (s , p)) + ( tS-in-diagram s) + ( λ n p → + ap + ( λ H → H ∙ ap (vertices.f'n s) (sides.far s n) ∙ sides.right s n) + ( inv (realign-top s n p (vertices.sAn s p))) ∙ KS-in-diagram s n p) + ( p) + + alt-ind-singleton-zigzag-id-pushout' : section-descent-data-pushout R + pr1 alt-ind-singleton-zigzag-id-pushout' = + ind-Σ alt-section-RA + pr1 (pr2 alt-ind-singleton-zigzag-id-pushout') = + ind-Σ alt-section-RB + pr2 (pr2 alt-ind-singleton-zigzag-id-pushout') = + ind-Σ alt-ind-coherence + + is-identity-system-zigzag-id-pushout : + is-identity-system-descent-data-pushout + ( descent-data-zigzag-id-pushout 𝒮 a₀) + ( refl-id-pushout 𝒮 a₀) + is-identity-system-zigzag-id-pushout = + is-identity-system-descent-data-pushout-ind-singleton up-c + ( descent-data-zigzag-id-pushout 𝒮 a₀) + ( refl-id-pushout 𝒮 a₀) + -- ( ind-singleton-zigzag-id-pushout') + ( alt-ind-singleton-zigzag-id-pushout') +``` diff --git a/src/synthetic-homotopy-theory/zigzags-sequential-diagrams.lagda.md b/src/synthetic-homotopy-theory/zigzags-sequential-diagrams.lagda.md index 71068b80e1..c521df41bf 100644 --- a/src/synthetic-homotopy-theory/zigzags-sequential-diagrams.lagda.md +++ b/src/synthetic-homotopy-theory/zigzags-sequential-diagrams.lagda.md @@ -247,10 +247,9 @@ module _ (z : zigzag-sequential-diagram A B) where - hom-diagram-zigzag-sequential-diagram : hom-sequential-diagram A B - pr1 hom-diagram-zigzag-sequential-diagram = - map-zigzag-sequential-diagram z - pr2 hom-diagram-zigzag-sequential-diagram n = + naturality-map-hom-diagram-zigzag-sequential-diagram : + naturality-hom-sequential-diagram A B (map-zigzag-sequential-diagram z) + naturality-map-hom-diagram-zigzag-sequential-diagram n = horizontal-pasting-up-diagonal-coherence-triangle-maps ( map-sequential-diagram A n) ( map-zigzag-sequential-diagram z n) @@ -259,6 +258,12 @@ module _ ( inv-htpy (upper-triangle-zigzag-sequential-diagram z n)) ( lower-triangle-zigzag-sequential-diagram z n) + hom-diagram-zigzag-sequential-diagram : hom-sequential-diagram A B + pr1 hom-diagram-zigzag-sequential-diagram = + map-zigzag-sequential-diagram z + pr2 hom-diagram-zigzag-sequential-diagram = + naturality-map-hom-diagram-zigzag-sequential-diagram + module _ {l1 l2 : Level} {A : sequential-diagram l1} {B : sequential-diagram l2} (z : zigzag-sequential-diagram A B)