diff --git a/src/synthetic-homotopy-theory.lagda.md b/src/synthetic-homotopy-theory.lagda.md index 89173b31c2..d0edc20c56 100644 --- a/src/synthetic-homotopy-theory.lagda.md +++ b/src/synthetic-homotopy-theory.lagda.md @@ -86,6 +86,7 @@ open import synthetic-homotopy-theory.sections-descent-circle public open import synthetic-homotopy-theory.sequential-colimits public open import synthetic-homotopy-theory.sequential-diagrams public open import synthetic-homotopy-theory.sequentially-compact-types public +open import synthetic-homotopy-theory.shifts-sequential-diagrams public 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 @@ -95,6 +96,7 @@ open import synthetic-homotopy-theory.suspension-structures public open import synthetic-homotopy-theory.suspensions-of-pointed-types public open import synthetic-homotopy-theory.suspensions-of-types public open import synthetic-homotopy-theory.tangent-spheres public +open import synthetic-homotopy-theory.total-sequential-diagrams public open import synthetic-homotopy-theory.triple-loop-spaces public open import synthetic-homotopy-theory.truncated-acyclic-maps public open import synthetic-homotopy-theory.truncated-acyclic-types 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 7eb8ec69fd..1da0704bf2 100644 --- a/src/synthetic-homotopy-theory/cocones-under-sequential-diagrams.lagda.md +++ b/src/synthetic-homotopy-theory/cocones-under-sequential-diagrams.lagda.md @@ -35,10 +35,11 @@ open import synthetic-homotopy-theory.sequential-diagrams ## Idea -A **cocone under a -[sequential diagram](synthetic-homotopy-theory.sequential-diagrams.md) -`(A, a)`** with codomain `X : ๐“ค` consists of a family of maps `iโ‚™ : A n โ†’ C` and -a family of [homotopies](foundation.homotopies.md) `Hโ‚™` asserting that the +A +{{#concept "cocone" Disambiguation="sequential diagram" Agda=cocone-sequential-diagram}} +under a [sequential diagram](synthetic-homotopy-theory.sequential-diagrams.md) +`(A, a)` with codomain `X : ๐’ฐ` consists of a family of maps `iโ‚™ : A n โ†’ C` and a +family of [homotopies](foundation.homotopies.md) `Hโ‚™` asserting that the triangles ```text @@ -154,6 +155,35 @@ module _ coherence-htpy-htpy-cocone-sequential-diagram = pr2 H ``` +### Concatenation of homotopies of cocones under a sequential diagram + +```agda +module _ + {l1 l2 : Level} {A : sequential-diagram l1} {X : UU l2} + {c c' c'' : cocone-sequential-diagram A X} + (H : htpy-cocone-sequential-diagram c c') + (K : htpy-cocone-sequential-diagram c' c'') + where + + concat-htpy-cocone-sequential-diagram : htpy-cocone-sequential-diagram c c'' + pr1 concat-htpy-cocone-sequential-diagram n = + ( htpy-htpy-cocone-sequential-diagram H n) โˆ™h + ( htpy-htpy-cocone-sequential-diagram K n) + pr2 concat-htpy-cocone-sequential-diagram n = + horizontal-pasting-coherence-square-homotopies + ( htpy-htpy-cocone-sequential-diagram H n) + ( htpy-htpy-cocone-sequential-diagram K n) + ( coherence-cocone-sequential-diagram c n) + ( coherence-cocone-sequential-diagram c' n) + ( coherence-cocone-sequential-diagram c'' n) + ( ( htpy-htpy-cocone-sequential-diagram H (succ-โ„• n)) ยทr + ( map-sequential-diagram A n)) + ( ( htpy-htpy-cocone-sequential-diagram K (succ-โ„• n)) ยทr + ( map-sequential-diagram A n)) + ( coherence-htpy-htpy-cocone-sequential-diagram H n) + ( coherence-htpy-htpy-cocone-sequential-diagram K n) +``` + ### 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 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 dcee6298d0..6711f8276f 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 @@ -41,7 +41,7 @@ open import synthetic-homotopy-theory.sequential-diagrams Given a [sequential diagram](synthetic-homotopy-theory.sequential-diagrams.md) `(A, a)`, a [cocone](synthetic-homotopy-theory.cocones-under-sequential-diagrams.md) `c` -with vertex `X` under it, and a type family `P : X โ†’ ๐“ค`, we may construct +with vertex `X` under it, and a type family `P : X โ†’ ๐’ฐ`, we may construct _dependent_ cocones on `P` over `c`. A **dependent cocone under a diff --git a/src/synthetic-homotopy-theory/dependent-sequential-diagrams.lagda.md b/src/synthetic-homotopy-theory/dependent-sequential-diagrams.lagda.md index 7cafe2e7ee..a4554336de 100644 --- a/src/synthetic-homotopy-theory/dependent-sequential-diagrams.lagda.md +++ b/src/synthetic-homotopy-theory/dependent-sequential-diagrams.lagda.md @@ -24,7 +24,7 @@ open import synthetic-homotopy-theory.sequential-diagrams A **dependent sequential diagram** over a [sequential diagram](synthetic-homotopy-theory.sequential-diagrams.md) `(A, a)` is a [sequence](foundation.dependent-sequences.md) of families of types -`B : (n : โ„•) โ†’ Aโ‚™ โ†’ ๐“ค` over the types in the base sequential diagram, equipped +`B : (n : โ„•) โ†’ Aโ‚™ โ†’ ๐’ฐ` over the types in the base sequential diagram, equipped with fiberwise maps ```text diff --git a/src/synthetic-homotopy-theory/morphisms-sequential-diagrams.lagda.md b/src/synthetic-homotopy-theory/morphisms-sequential-diagrams.lagda.md index 86c6950684..47a9948110 100644 --- a/src/synthetic-homotopy-theory/morphisms-sequential-diagrams.lagda.md +++ b/src/synthetic-homotopy-theory/morphisms-sequential-diagrams.lagda.md @@ -71,8 +71,8 @@ module _ hom-sequential-diagram : UU (l1 โŠ” l2) hom-sequential-diagram = - section-dependent-sequential-diagram A - ( constant-dependent-sequential-diagram A B) + ฮฃ ( (n : โ„•) โ†’ family-sequential-diagram A n โ†’ family-sequential-diagram B n) + ( naturality-hom-sequential-diagram) ``` ### Components of morphisms of sequential diagrams @@ -91,17 +91,11 @@ module _ map-hom-sequential-diagram : ( n : โ„•) โ†’ family-sequential-diagram A n โ†’ family-sequential-diagram B n - map-hom-sequential-diagram = - map-section-dependent-sequential-diagram A - ( constant-dependent-sequential-diagram A B) - ( h) + map-hom-sequential-diagram = pr1 h naturality-map-hom-sequential-diagram : naturality-hom-sequential-diagram A B map-hom-sequential-diagram - naturality-map-hom-sequential-diagram = - naturality-map-section-dependent-sequential-diagram A - ( constant-dependent-sequential-diagram A B) - ( h) + naturality-map-hom-sequential-diagram = pr2 h ``` ### The identity morphism of sequential diagrams diff --git a/src/synthetic-homotopy-theory/sequential-diagrams.lagda.md b/src/synthetic-homotopy-theory/sequential-diagrams.lagda.md index 33166e8430..34fe7194f0 100644 --- a/src/synthetic-homotopy-theory/sequential-diagrams.lagda.md +++ b/src/synthetic-homotopy-theory/sequential-diagrams.lagda.md @@ -18,7 +18,7 @@ open import foundation.universe-levels ## Idea A **sequential diagram** `(A, a)` is a [sequence](foundation.sequences.md) of -types `A : โ„• โ†’ ๐“ค` over the natural numbers, equipped with a family of maps +types `A : โ„• โ†’ ๐’ฐ` over the natural numbers, equipped with a family of maps `aโ‚™ : Aโ‚™ โ†’ Aโ‚™โ‚Šโ‚` for all `n`. They can be represented by diagrams diff --git a/src/synthetic-homotopy-theory/shifts-sequential-diagrams.lagda.md b/src/synthetic-homotopy-theory/shifts-sequential-diagrams.lagda.md new file mode 100644 index 0000000000..66cb304593 --- /dev/null +++ b/src/synthetic-homotopy-theory/shifts-sequential-diagrams.lagda.md @@ -0,0 +1,773 @@ +# Shifts of sequential diagrams + +```agda +module synthetic-homotopy-theory.shifts-sequential-diagrams where +``` + +
Imports + +```agda +open import elementary-number-theory.natural-numbers + +open import foundation.commuting-triangles-of-maps +open import foundation.dependent-pair-types +open import foundation.equivalences +open import foundation.function-types +open import foundation.homotopies +open import foundation.identity-types +open import foundation.retractions +open import foundation.sections +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.morphisms-sequential-diagrams +open import synthetic-homotopy-theory.sequential-colimits +open import synthetic-homotopy-theory.sequential-diagrams +open import synthetic-homotopy-theory.universal-property-sequential-colimits +``` + +
+ +## Idea + +A +{{#concept "shift" Disambiguation="sequential diagram" Agda=shift-sequential-diagram}} +of a [sequential diagram](synthetic-homotopy-theory.sequential-diagrams.md) is a +sequential diagram consisting of the types and maps shifted by one. It is also +denoted `A[1]`. This shifting can be iterated for any +[natural number](elementary-number-theory.natural-numbers.md) `k`; then the +resulting sequential diagram is denoted `A[k]`. + +Similarly, a +{{#concept "shift" Disambiguation="morphism of sequential diagrams" Agda=shift-hom-sequential-diagram}} +of a +[morphism of sequential diagrams](synthetic-homotopy-theory.morphisms-sequential-diagrams.md) +is a morphism from the shifted domain into the shifted codomain. In symbols, +given a morphism `f : A โ†’ B`, we have `f[k] : A[k] โ†’ B[k]`. + +We also define shifts of +[cocones](synthetic-homotopy-theory.cocones-under-sequential-diagrams.md) and +[homotopies of cocones](synthetic-homotopy-theory.cocones-under-sequential-diagrams.md), +which can additionally be unshifted. + +Importantly the type of cocones under a sequential diagram is +[equivalent](foundation-core.equivalences.md) to the type of cocones under its +shift, which implies that the +[sequential colimit](synthetic-homotopy-theory.sequential-colimits.md) of a +shifted sequential diagram is equivalent to the colimit of the original diagram. + +## Definitions + +_Implementation note_: the constructions are defined by first defining a shift +by one, and then recursively shifting by one according to the argument. An +alternative would be to shift all data using +[addition](elementary-number-theory.addition-natural-numbers.md) on the natural +numbers. + +However, addition computes only on one side, so we have a choice to make: given +a shift `k`, do we define the `n`-th level of the shifted structure to be the +`n+k`-th or `k+n`-th level of the original? + +The former runs into issues already when defining the shifted sequence, since +`aโ‚™โ‚Šโ‚– : Aโ‚™โ‚Šโ‚– โ†’ Aโ‚โ‚™โ‚Šโ‚โ‚Žโ‚Šโ‚–`, but we need a map of type `Aโ‚™โ‚Šโ‚– โ†’ Aโ‚โ‚™โ‚Šโ‚–โ‚Žโ‚Šโ‚`, which +forces us to introduce a +[transport](foundation-core.transport-along-identifications.md). + +On the other hand, the latter requires transport when proving anything by +induction on `k` and doesn't satisfy the judgmental equality `A[0] โ‰ A`, because +`Aโ‚โ‚–โ‚Šโ‚โ‚Žโ‚Šโ‚™` is not `Aโ‚โ‚–โ‚Šโ‚™โ‚Žโ‚Šโ‚` and `Aโ‚€โ‚Šโ‚™` is not `Aโ‚™`, and it requires more +infrastructure for working with horizontal compositions in sequential colimit to +be formalized in terms of addition. + +To contrast, defining the operations by induction does satisfy `A[0] โ‰ A`, it +computes when proving properties by induction, which is the expected primary +use-case, and no further infrastructure is necessary. + +### Shifts of sequential diagrams + +Given a sequential diagram `A` + +```text + aโ‚€ aโ‚ aโ‚‚ + Aโ‚€ ---> Aโ‚ ---> Aโ‚‚ ---> โ‹ฏ , +``` + +we can forget the first type and map to get the diagram + +```text + aโ‚ aโ‚‚ + Aโ‚ ---> Aโ‚‚ ---> โ‹ฏ , +``` + +which we call `A[1]`. Inductively, we define `A[k + 1] โ‰ A[k][1]`. + +```agda +module _ + {l1 : Level} (A : sequential-diagram l1) + where + + shift-once-sequential-diagram : sequential-diagram l1 + pr1 shift-once-sequential-diagram n = family-sequential-diagram A (succ-โ„• n) + pr2 shift-once-sequential-diagram n = map-sequential-diagram A (succ-โ„• n) + +module _ + {l1 : Level} + where + + shift-sequential-diagram : โ„• โ†’ sequential-diagram l1 โ†’ sequential-diagram l1 + shift-sequential-diagram zero-โ„• A = A + shift-sequential-diagram (succ-โ„• k) A = + shift-once-sequential-diagram (shift-sequential-diagram k A) +``` + +### Shifts of morphisms of sequential diagrams + +Given a morphism of sequential diagrams `f : A โ†’ B` + +```text + aโ‚€ aโ‚ + Aโ‚€ ---> Aโ‚ ---> Aโ‚‚ ---> โ‹ฏ + | | | + fโ‚€ | | fโ‚ | fโ‚‚ + โˆจ โˆจ โˆจ + Bโ‚€ ---> Bโ‚ ---> Bโ‚‚ ---> โ‹ฏ , + bโ‚€ bโ‚ +``` + +we can drop the first square to get the morphism + +```text + aโ‚ + Aโ‚ ---> Aโ‚‚ ---> โ‹ฏ + | | + fโ‚ | | fโ‚‚ + โˆจ โˆจ + Bโ‚ ---> Bโ‚‚ ---> โ‹ฏ , + bโ‚ +``` + +which we call `f[1] : A[1] โ†’ B[1]`. Inductively, we define `f[k + 1] โ‰ f[k][1]`. + +```agda +module _ + {l1 l2 : Level} {A : sequential-diagram l1} (B : sequential-diagram l2) + (f : hom-sequential-diagram A B) + where + + shift-once-hom-sequential-diagram : + hom-sequential-diagram + ( shift-once-sequential-diagram A) + ( shift-once-sequential-diagram B) + pr1 shift-once-hom-sequential-diagram n = + map-hom-sequential-diagram B f (succ-โ„• n) + pr2 shift-once-hom-sequential-diagram n = + naturality-map-hom-sequential-diagram B f (succ-โ„• n) + +module _ + {l1 l2 : Level} {A : sequential-diagram l1} (B : sequential-diagram l2) + where + + shift-hom-sequential-diagram : + (k : โ„•) โ†’ + hom-sequential-diagram A B โ†’ + hom-sequential-diagram + ( shift-sequential-diagram k A) + ( shift-sequential-diagram k B) + shift-hom-sequential-diagram zero-โ„• f = f + shift-hom-sequential-diagram (succ-โ„• k) f = + shift-once-hom-sequential-diagram + ( shift-sequential-diagram k B) + ( shift-hom-sequential-diagram k f) +``` + +### Shifts of cocones under sequential diagrams + +Given a cocone `c` + +```text + aโ‚€ aโ‚ + Aโ‚€ ---> Aโ‚ ---> Aโ‚‚ ---> โ‹ฏ + \ | / + \ | / + iโ‚€ \ | iโ‚ / iโ‚‚ + \ | / + โˆจ โˆจ โˆจ + X +``` + +under `A`, we may forget the first inclusion and homotopy to get the cocone + +```text + aโ‚ + Aโ‚ ---> Aโ‚‚ ---> โ‹ฏ + | / + | / + iโ‚ | / iโ‚‚ + | / + โˆจ โˆจ + X +``` + +under `A[1]`. We denote this cocone `c[1]`. Inductively, we define +`c[k + 1] โ‰ c[k][1]`. + +```agda +module _ + {l1 l2 : Level} {A : sequential-diagram l1} + {X : UU l2} (c : cocone-sequential-diagram A X) + where + + shift-once-cocone-sequential-diagram : + cocone-sequential-diagram (shift-once-sequential-diagram A) X + pr1 shift-once-cocone-sequential-diagram n = + map-cocone-sequential-diagram c (succ-โ„• n) + pr2 shift-once-cocone-sequential-diagram n = + coherence-cocone-sequential-diagram c (succ-โ„• n) + +module _ + {l1 l2 : Level} {A : sequential-diagram l1} + {X : UU l2} + where + + shift-cocone-sequential-diagram : + (k : โ„•) โ†’ + cocone-sequential-diagram A X โ†’ + cocone-sequential-diagram (shift-sequential-diagram k A) X + shift-cocone-sequential-diagram zero-โ„• c = + c + shift-cocone-sequential-diagram (succ-โ„• k) c = + shift-once-cocone-sequential-diagram + ( shift-cocone-sequential-diagram k c) +``` + +### Unshifts of cocones under sequential diagrams + +Conversely, given a cocone `c` + +```text + aโ‚ + Aโ‚ ---> Aโ‚‚ ---> โ‹ฏ + | / + | / + iโ‚ | / iโ‚‚ + | / + โˆจ โˆจ + X +``` + +under `A[1]`, we may prepend a map + +```text + aโ‚€ aโ‚ + Aโ‚€ ---> Aโ‚ ---> Aโ‚‚ ---> โ‹ฏ + \ | / + \ | / + iโ‚ โˆ˜ aโ‚€ \ | iโ‚ / iโ‚‚ + \ | / + โˆจ โˆจ โˆจ + X +``` + +which commutes by reflexivity, giving us a cocone under `A`, which we call +`c[-1]`. + +Notice that by restricting the type of `c` to be the cocones under an already +shifted diagram, we ensure that unshifting cannot get out of bounds of the +original diagram. + +Inductively, we define `c[-(k + 1)] โ‰ c[-1][-k]`. One might expect that +following the pattern of shifts, this should be `c[-k][-1]`, but recall that we +only know how to unshift a cocone under `A[n]` by `n`; since this `c` is under +`A[k][1]`, we first need to unshift by 1 to get `c[-1]` under `A[k]`, and only +then we can unshift by `k` to get `c[-1][-k]` under `A`. + +```agda +module _ + {l1 l2 : Level} (A : sequential-diagram l1) + {X : UU l2} + (c : cocone-sequential-diagram (shift-once-sequential-diagram A) X) + where + + unshift-once-cocone-sequential-diagram : + cocone-sequential-diagram A X + pr1 unshift-once-cocone-sequential-diagram zero-โ„• = + map-cocone-sequential-diagram c zero-โ„• โˆ˜ map-sequential-diagram A zero-โ„• + pr1 unshift-once-cocone-sequential-diagram (succ-โ„• n) = + map-cocone-sequential-diagram c n + pr2 unshift-once-cocone-sequential-diagram zero-โ„• = + refl-htpy + pr2 unshift-once-cocone-sequential-diagram (succ-โ„• n) = + coherence-cocone-sequential-diagram c n + +module _ + {l1 l2 : Level} (A : sequential-diagram l1) + {X : UU l2} + where + + unshift-cocone-sequential-diagram : + (k : โ„•) โ†’ + cocone-sequential-diagram (shift-sequential-diagram k A) X โ†’ + cocone-sequential-diagram A X + unshift-cocone-sequential-diagram zero-โ„• c = + c + unshift-cocone-sequential-diagram (succ-โ„• k) c = + unshift-cocone-sequential-diagram k + ( unshift-once-cocone-sequential-diagram + ( shift-sequential-diagram k A) + ( c)) +``` + +### Shifts of homotopies of cocones under sequential diagrams + +Given cocones `c` and `c'` under `A` + +```text + aโ‚€ aโ‚ aโ‚€ aโ‚ + Aโ‚€ ---> Aโ‚ ---> Aโ‚‚ ---> โ‹ฏ Aโ‚€ ---> Aโ‚ ---> Aโ‚‚ ---> โ‹ฏ + \ | / \ | / + \ | iโ‚ / \ | i'โ‚ / + iโ‚€ \ | / iโ‚‚ ~ i'โ‚€ \ | / i'โ‚‚ + \ | / \ | / + โˆจ โˆจ โˆจ โˆจ โˆจ โˆจ + X X +``` + +and a homotopy `H : c ~ c'` between them, we can again forget the first homotopy +of maps and coherence to get the homotopy `H[1] : c[1] ~ c'[1]`. Inductively, we +define `H[k + 1] โ‰ H[k][1]`. + +```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 + + shift-once-htpy-cocone-sequential-diagram : + htpy-cocone-sequential-diagram + ( shift-once-cocone-sequential-diagram c) + ( shift-once-cocone-sequential-diagram c') + pr1 shift-once-htpy-cocone-sequential-diagram n = + htpy-htpy-cocone-sequential-diagram H (succ-โ„• n) + pr2 shift-once-htpy-cocone-sequential-diagram n = + coherence-htpy-htpy-cocone-sequential-diagram + ( H) + ( succ-โ„• n) + +module _ + {l1 l2 : Level} {A : sequential-diagram l1} {X : UU l2} + {c c' : cocone-sequential-diagram A X} + where + + shift-htpy-cocone-sequential-diagram : + (k : โ„•) โ†’ + htpy-cocone-sequential-diagram c c' โ†’ + htpy-cocone-sequential-diagram + ( shift-cocone-sequential-diagram k c) + ( shift-cocone-sequential-diagram k c') + shift-htpy-cocone-sequential-diagram zero-โ„• H = + H + shift-htpy-cocone-sequential-diagram (succ-โ„• k) H = + shift-once-htpy-cocone-sequential-diagram + ( shift-htpy-cocone-sequential-diagram k H) +``` + +### Unshifts of homotopies of cocones under sequential diagrams + +Similarly to unshifting cocones, we can recover the first homotopy and coherence +to unshift a homotopy of cocones. Given two cocones `c`, `c'` under `A[1]` + +```text + aโ‚ aโ‚ + Aโ‚ ---> Aโ‚‚ ---> โ‹ฏ Aโ‚ ---> Aโ‚‚ ---> โ‹ฏ + | / | / + | / | / + iโ‚ | / iโ‚‚ ~ i'โ‚ | / i'โ‚‚ + | / | / + โˆจ โˆจ โˆจ โˆจ + X X +``` + +and a homotopy `H : c ~ c'`, we need to show that `iโ‚ โˆ˜ aโ‚€ ~ i'โ‚ โˆ˜ aโ‚€`. This can +be obtained by whiskering `Hโ‚€ ยทr aโ‚€`, which makes the coherence trivial. + +Inductively, we define `H[-(k + 1)] โ‰ H[-1][-k]`. + +```agda +module _ + {l1 l2 : Level} {A : sequential-diagram l1} {X : UU l2} + {c c' : cocone-sequential-diagram (shift-once-sequential-diagram A) X} + (H : htpy-cocone-sequential-diagram c c') + where + + unshift-once-htpy-cocone-sequential-diagram : + htpy-cocone-sequential-diagram + ( unshift-once-cocone-sequential-diagram A c) + ( unshift-once-cocone-sequential-diagram A c') + pr1 unshift-once-htpy-cocone-sequential-diagram zero-โ„• = + ( htpy-htpy-cocone-sequential-diagram H zero-โ„•) ยทr + ( map-sequential-diagram A zero-โ„•) + pr1 unshift-once-htpy-cocone-sequential-diagram (succ-โ„• n) = + htpy-htpy-cocone-sequential-diagram H n + pr2 unshift-once-htpy-cocone-sequential-diagram zero-โ„• = + inv-htpy-right-unit-htpy + pr2 unshift-once-htpy-cocone-sequential-diagram (succ-โ„• n) = + coherence-htpy-htpy-cocone-sequential-diagram H n + +module _ + {l1 l2 : Level} {A : sequential-diagram l1} {X : UU l2} + where + + unshift-htpy-cocone-sequential-diagram : + (k : โ„•) โ†’ + {c c' : cocone-sequential-diagram (shift-sequential-diagram k A) X} โ†’ + htpy-cocone-sequential-diagram c c' โ†’ + htpy-cocone-sequential-diagram + ( unshift-cocone-sequential-diagram A k c) + ( unshift-cocone-sequential-diagram A k c') + unshift-htpy-cocone-sequential-diagram zero-โ„• H = + H + unshift-htpy-cocone-sequential-diagram (succ-โ„• k) H = + unshift-htpy-cocone-sequential-diagram k + (unshift-once-htpy-cocone-sequential-diagram H) +``` + +### Morphisms from sequential diagrams into their shifts + +The morphism is obtained by observing that the squares in the diagram + +```text + aโ‚€ aโ‚ + Aโ‚€ ---> Aโ‚ ---> Aโ‚‚ ---> โ‹ฏ + | | | + aโ‚€ | | aโ‚ | aโ‚‚ + โˆจ โˆจ โˆจ + Aโ‚ ---> Aโ‚‚ ---> Aโ‚ƒ ---> โ‹ฏ + aโ‚ aโ‚‚ +``` + +commute by reflexivity. + +```agda +module _ + {l1 : Level} (A : sequential-diagram l1) + where + + hom-shift-once-sequential-diagram : + hom-sequential-diagram + ( A) + ( shift-once-sequential-diagram A) + pr1 hom-shift-once-sequential-diagram = map-sequential-diagram A + pr2 hom-shift-once-sequential-diagram n = refl-htpy + +module _ + {l1 : Level} (A : sequential-diagram l1) + where + + hom-shift-sequential-diagram : + (k : โ„•) โ†’ + hom-sequential-diagram + ( A) + ( shift-sequential-diagram k A) + hom-shift-sequential-diagram zero-โ„• = id-hom-sequential-diagram A + hom-shift-sequential-diagram (succ-โ„• k) = + comp-hom-sequential-diagram + ( A) + ( shift-sequential-diagram k A) + ( shift-sequential-diagram (succ-โ„• k) A) + ( hom-shift-once-sequential-diagram + ( shift-sequential-diagram k A)) + ( hom-shift-sequential-diagram k) +``` + +## Properties + +### The type of cocones under a sequential diagram is equivalent to the type of cocones under its shift + +This is shown by proving that shifting and unshifting of cocones are mutually +inverse operations. + +To show that `shift โˆ˜ unshift ~ id` is trivial, since the first step synthesizes +some data for the first level, which the second step promptly forgets. + +In the inductive step, we need to show `c[-(k + 1)][k + 1] ~ c`. The left-hand +side computes to `c[-1][-k][k][1]`, which is homotopic to `c[-1][1]` by shifting +the homotopy given by the inductive hypothesis, and that computes to `c`. + +```agda +module _ + {l1 l2 : Level} {A : sequential-diagram l1} + {X : UU l2} + where + + htpy-is-section-unshift-once-cocone-sequential-diagram : + (c : cocone-sequential-diagram (shift-once-sequential-diagram A) X) โ†’ + htpy-cocone-sequential-diagram + ( shift-once-cocone-sequential-diagram + ( unshift-once-cocone-sequential-diagram A c)) + ( c) + htpy-is-section-unshift-once-cocone-sequential-diagram c = + refl-htpy-cocone-sequential-diagram (shift-once-sequential-diagram A) c + +module _ + {l1 l2 : Level} {A : sequential-diagram l1} + {X : UU l2} + where + + htpy-is-section-unshift-cocone-sequential-diagram : + (k : โ„•) โ†’ + (c : cocone-sequential-diagram (shift-sequential-diagram k A) X) โ†’ + htpy-cocone-sequential-diagram + ( shift-cocone-sequential-diagram k + ( unshift-cocone-sequential-diagram A k c)) + ( c) + htpy-is-section-unshift-cocone-sequential-diagram zero-โ„• c = + refl-htpy-cocone-sequential-diagram A c + htpy-is-section-unshift-cocone-sequential-diagram (succ-โ„• k) c = + shift-once-htpy-cocone-sequential-diagram + ( htpy-is-section-unshift-cocone-sequential-diagram k + ( unshift-once-cocone-sequential-diagram + ( shift-sequential-diagram k A) + ( c))) + + is-section-unshift-cocone-sequential-diagram : + (k : โ„•) โ†’ + is-section + ( shift-cocone-sequential-diagram k) + ( unshift-cocone-sequential-diagram A {X} k) + is-section-unshift-cocone-sequential-diagram k c = + eq-htpy-cocone-sequential-diagram + ( shift-sequential-diagram k A) + ( _) + ( _) + ( htpy-is-section-unshift-cocone-sequential-diagram k c) +``` + +For the other direction, we need to show that the synthesized data, namely the +map `iโ‚ โˆ˜ aโ‚€ : Aโ‚€ โ†’ X` and the reflexive homotopy, is consistent with the +original data `iโ‚€ : Aโ‚€ โ†’ X` and the homotopy `Hโ‚€ : iโ‚€ ~ iโ‚ โˆ˜ aโ‚€`. It is more +convenient to show the inverse homotopy `id ~ unshift โˆ˜ shift`, because `Hโ‚€` +gives us exactly the right homotopy for the first level, so the rest of the +coherences are also trivial. + +In the inductive step, we need to show +`c ~ c[k + 1][-(k + 1)] โ‰ c[k][1][-1][-k]`. This follows from the inductive +hypothesis, which states that `c ~ c[k][-k]`, and which we compose with the +homotopy `c[k] ~ c[k][1][-1]` unshifted by `k`. + +```agda +module _ + {l1 l2 : Level} {A : sequential-diagram l1} + {X : UU l2} + where + + inv-htpy-is-retraction-unshift-once-cocone-sequential-diagram : + (c : cocone-sequential-diagram A X) โ†’ + htpy-cocone-sequential-diagram + ( c) + ( unshift-once-cocone-sequential-diagram A + ( shift-once-cocone-sequential-diagram c)) + pr1 (inv-htpy-is-retraction-unshift-once-cocone-sequential-diagram c) + zero-โ„• = + coherence-cocone-sequential-diagram c zero-โ„• + pr1 (inv-htpy-is-retraction-unshift-once-cocone-sequential-diagram c) + (succ-โ„• n) = + refl-htpy + pr2 (inv-htpy-is-retraction-unshift-once-cocone-sequential-diagram c) + zero-โ„• = + refl-htpy + pr2 (inv-htpy-is-retraction-unshift-once-cocone-sequential-diagram c) + (succ-โ„• n) = + right-unit-htpy + +module _ + {l1 l2 : Level} {A : sequential-diagram l1} + {X : UU l2} + where + + inv-htpy-is-retraction-unshift-cocone-sequential-diagram : + (k : โ„•) โ†’ + (c : cocone-sequential-diagram A X) โ†’ + htpy-cocone-sequential-diagram + ( c) + ( unshift-cocone-sequential-diagram A k + ( shift-cocone-sequential-diagram k c)) + inv-htpy-is-retraction-unshift-cocone-sequential-diagram zero-โ„• c = + refl-htpy-cocone-sequential-diagram A c + inv-htpy-is-retraction-unshift-cocone-sequential-diagram (succ-โ„• k) c = + concat-htpy-cocone-sequential-diagram + ( inv-htpy-is-retraction-unshift-cocone-sequential-diagram k c) + ( unshift-htpy-cocone-sequential-diagram k + ( inv-htpy-is-retraction-unshift-once-cocone-sequential-diagram + ( shift-cocone-sequential-diagram k c))) + + is-retraction-unshift-cocone-sequential-diagram : + (k : โ„•) โ†’ + is-retraction + ( shift-cocone-sequential-diagram k) + ( unshift-cocone-sequential-diagram A {X} k) + is-retraction-unshift-cocone-sequential-diagram k c = + inv + ( eq-htpy-cocone-sequential-diagram A _ _ + ( inv-htpy-is-retraction-unshift-cocone-sequential-diagram k c)) + +module _ + {l1 l2 : Level} {A : sequential-diagram l1} + {X : UU l2} + where + + is-equiv-shift-cocone-sequential-diagram : + (k : โ„•) โ†’ + is-equiv (shift-cocone-sequential-diagram {X = X} k) + is-equiv-shift-cocone-sequential-diagram k = + is-equiv-is-invertible + ( unshift-cocone-sequential-diagram A k) + ( is-section-unshift-cocone-sequential-diagram k) + ( is-retraction-unshift-cocone-sequential-diagram k) + + equiv-shift-cocone-sequential-diagram : + (k : โ„•) โ†’ + cocone-sequential-diagram A X โ‰ƒ + cocone-sequential-diagram (shift-sequential-diagram k A) X + pr1 (equiv-shift-cocone-sequential-diagram k) = + shift-cocone-sequential-diagram k + pr2 (equiv-shift-cocone-sequential-diagram k) = + is-equiv-shift-cocone-sequential-diagram k +``` + +### The sequential colimit of a sequential diagram is also the sequential colimit of its shift + +Given a sequential colimit + +```text + aโ‚€ aโ‚ aโ‚‚ + Aโ‚€ ---> Aโ‚ ---> Aโ‚‚ ---> โ‹ฏ --> X, +``` + +there is a commuting triangle + +```text + cocone-map + X โ†’ Y ------------> cocone A Y + \ / + cocone-map \ / + โˆจ โˆจ + cocone A[1] Y. +``` + +Inductively, we compose this triangle in the following way + +```text + cocone-map + X โ†’ Y ------------> cocone A Y + \โŸ | + \ โŸ | + \ โŸ | + \ โŸ โˆจ + \ > cocone A[k] Y + cocone-map \ / + \ / + \ / + โˆจ โˆจ + cocone A[k + 1] Y, +``` + +where the top triangle is the inductive hypothesis, and the bottom triangle is +the step instantiated at `A[k]`. + +This gives us the commuting triangle + +```text + cocone-map + X โ†’ Y ------------> cocone A Y + \ โ‰ƒ / + cocone-map \ / โ‰ƒ + โˆจ โˆจ + cocone A[k] Y, +``` + +where the top map is an equivalence by the universal property of the cocone on +`X`, and the right map is an equivalence by a theorem shown above, which implies +that the left map is an equivalence, which exactly says that `X` is the +sequential colimit of `A[k]`. + +```agda +module _ + {l1 l2 : Level} {A : sequential-diagram l1} + {X : UU l2} (c : cocone-sequential-diagram A X) + where + + triangle-cocone-map-shift-once-cocone-sequential-diagram : + {l : Level} (Y : UU l) โ†’ + coherence-triangle-maps + ( cocone-map-sequential-diagram + ( shift-once-cocone-sequential-diagram c) + { Y = Y}) + ( shift-once-cocone-sequential-diagram) + ( cocone-map-sequential-diagram c) + triangle-cocone-map-shift-once-cocone-sequential-diagram Y = refl-htpy + +module _ + {l1 l2 : Level} {A : sequential-diagram l1} + {X : UU l2} (c : cocone-sequential-diagram A X) + where + + triangle-cocone-map-shift-cocone-sequential-diagram : + (k : โ„•) โ†’ + {l : Level} (Y : UU l) โ†’ + coherence-triangle-maps + ( cocone-map-sequential-diagram + ( shift-cocone-sequential-diagram k c)) + ( shift-cocone-sequential-diagram k) + ( cocone-map-sequential-diagram c) + triangle-cocone-map-shift-cocone-sequential-diagram zero-โ„• Y = + refl-htpy + triangle-cocone-map-shift-cocone-sequential-diagram (succ-โ„• k) Y = + ( triangle-cocone-map-shift-once-cocone-sequential-diagram + ( shift-cocone-sequential-diagram k c) + ( Y)) โˆ™h + ( ( shift-once-cocone-sequential-diagram) ยทl + ( triangle-cocone-map-shift-cocone-sequential-diagram k Y)) + +module _ + {l1 l2 : Level} {A : sequential-diagram l1} + {X : UU l2} {c : cocone-sequential-diagram A X} + where + + up-shift-cocone-sequential-diagram : + (k : โ„•) โ†’ + universal-property-sequential-colimit c โ†’ + universal-property-sequential-colimit (shift-cocone-sequential-diagram k c) + up-shift-cocone-sequential-diagram k up-c Y = + is-equiv-left-map-triangle + ( cocone-map-sequential-diagram + ( shift-cocone-sequential-diagram k c)) + ( shift-cocone-sequential-diagram k) + ( cocone-map-sequential-diagram c) + ( triangle-cocone-map-shift-cocone-sequential-diagram c k Y) + ( up-c Y) + ( is-equiv-shift-cocone-sequential-diagram k) +``` + +We instantiate this theorem for the standard sequential colimits, giving us +`A[k]โˆž โ‰ƒ Aโˆž`. + +```agda +module _ + {l1 : Level} (A : sequential-diagram l1) + where + + compute-sequential-colimit-shift-sequential-diagram : + (k : โ„•) โ†’ + standard-sequential-colimit (shift-sequential-diagram k A) โ‰ƒ + standard-sequential-colimit A + pr1 (compute-sequential-colimit-shift-sequential-diagram k) = + cogap-standard-sequential-colimit + ( shift-cocone-sequential-diagram + ( k) + ( cocone-standard-sequential-colimit A)) + pr2 (compute-sequential-colimit-shift-sequential-diagram k) = + is-sequential-colimit-universal-property _ + ( up-shift-cocone-sequential-diagram k up-standard-sequential-colimit) +``` diff --git a/src/synthetic-homotopy-theory/total-sequential-diagrams.lagda.md b/src/synthetic-homotopy-theory/total-sequential-diagrams.lagda.md new file mode 100644 index 0000000000..70bd318d5a --- /dev/null +++ b/src/synthetic-homotopy-theory/total-sequential-diagrams.lagda.md @@ -0,0 +1,117 @@ +# Total sequential diagrams of dependent sequential diagrams + +```agda +module synthetic-homotopy-theory.total-sequential-diagrams where +``` + +
Imports + +```agda +open import elementary-number-theory.natural-numbers + +open import foundation.dependent-pair-types +open import foundation.functoriality-dependent-pair-types +open import foundation.homotopies +open import foundation.universe-levels + +open import synthetic-homotopy-theory.cocones-under-sequential-diagrams +open import synthetic-homotopy-theory.dependent-sequential-diagrams +open import synthetic-homotopy-theory.functoriality-sequential-colimits +open import synthetic-homotopy-theory.morphisms-sequential-diagrams +open import synthetic-homotopy-theory.sequential-colimits +open import synthetic-homotopy-theory.sequential-diagrams +open import synthetic-homotopy-theory.universal-property-sequential-colimits +``` + +
+ +## Idea + +The +{{#concept "total diagram" Disambiguation="dependent sequential diagrams" Agda=total-sequential-diagram}} +of a +[dependent sequential diagram](synthetic-homotopy-theory.dependent-sequential-diagrams.md) +`B : (A, a) โ†’ ๐’ฐ` is the +[sequential diagram](synthetic-homotopy-theory.sequential-diagrams.md) +consisting of [total spaces](foundation.dependent-pair-types.md) `ฮฃ Aโ‚™ Bโ‚™` and +total maps. + +## Definitions + +### The total sequential diagram of a dependent sequential diagram + +```agda +module _ + {l1 l2 : Level} + {A : sequential-diagram l1} (B : dependent-sequential-diagram A l2) + where + + family-total-sequential-diagram : โ„• โ†’ UU (l1 โŠ” l2) + family-total-sequential-diagram n = + ฮฃ (family-sequential-diagram A n) + (family-dependent-sequential-diagram A B n) + + map-total-sequential-diagram : + (n : โ„•) โ†’ family-total-sequential-diagram n โ†’ + family-total-sequential-diagram (succ-โ„• n) + map-total-sequential-diagram n = + map-ฮฃ + ( family-dependent-sequential-diagram A B (succ-โ„• n)) + ( map-sequential-diagram A n) + ( map-dependent-sequential-diagram A B n) + + total-sequential-diagram : sequential-diagram (l1 โŠ” l2) + pr1 total-sequential-diagram = family-total-sequential-diagram + pr2 total-sequential-diagram = map-total-sequential-diagram +``` + +### The projection morphism onto the base of the total sequential diagram + +```agda +module _ + {l1 l2 : Level} + {A : sequential-diagram l1} (B : dependent-sequential-diagram A l2) + where + + pr1-total-sequential-diagram : + hom-sequential-diagram + ( total-sequential-diagram B) + ( A) + pr1 pr1-total-sequential-diagram n = pr1 + pr2 pr1-total-sequential-diagram n = refl-htpy +``` + +### The induced projection map on sequential colimits + +```agda +module _ + {l1 l2 l3 l4 : Level} + {A : sequential-diagram l1} (B : dependent-sequential-diagram A l2) + {X : UU l3} {c : cocone-sequential-diagram (total-sequential-diagram B) X} + (up-c : universal-property-sequential-colimit c) + {Y : UU l4} (c' : cocone-sequential-diagram A Y) + where + + pr1-sequential-colimit-total-sequential-diagram : X โ†’ Y + pr1-sequential-colimit-total-sequential-diagram = + map-sequential-colimit-hom-sequential-diagram + ( up-c) + ( c') + ( pr1-total-sequential-diagram B) +``` + +### The induced projection map on standard sequential colimits + +```agda +module _ + {l1 l2 : Level} + {A : sequential-diagram l1} (B : dependent-sequential-diagram A l2) + where + + pr1-standard-sequential-colimit-total-sequential-diagram : + standard-sequential-colimit (total-sequential-diagram B) โ†’ + standard-sequential-colimit A + pr1-standard-sequential-colimit-total-sequential-diagram = + map-hom-standard-sequential-colimit A + ( pr1-total-sequential-diagram B) +```