Suspensions of types
Content created by Egbert Rijke, Fredrik Bakke, Raymond Baker, Jonathan Prieto-Cubides, Tom de Jong, Victor Blanchi and Vojtěch Štěpančík.
Created on 2022-05-16.
Last modified on 2024-04-25.
module synthetic-homotopy-theory.suspensions-of-types where
Imports
open import foundation.action-on-identifications-dependent-functions open import foundation.action-on-identifications-functions open import foundation.commuting-squares-of-identifications open import foundation.connected-types open import foundation.constant-maps open import foundation.contractible-types open import foundation.dependent-identifications open import foundation.dependent-pair-types open import foundation.diagonal-maps-of-types open import foundation.equivalence-extensionality open import foundation.equivalences 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.identity-types open import foundation.path-algebra open import foundation.retractions open import foundation.sections open import foundation.torsorial-type-families open import foundation.transport-along-identifications open import foundation.truncated-types open import foundation.truncation-levels open import foundation.type-arithmetic-dependent-pair-types open import foundation.unit-type open import foundation.universe-levels open import foundation.whiskering-homotopies-composition open import synthetic-homotopy-theory.cocones-under-spans open import synthetic-homotopy-theory.dependent-cocones-under-spans open import synthetic-homotopy-theory.dependent-suspension-structures open import synthetic-homotopy-theory.dependent-universal-property-suspensions open import synthetic-homotopy-theory.pushouts open import synthetic-homotopy-theory.suspension-structures open import synthetic-homotopy-theory.universal-property-pushouts open import synthetic-homotopy-theory.universal-property-suspensions
Idea
The suspension of a type X
is the
pushout of the
span
unit <-- X --> unit
Suspensions play an important role in synthetic homotopy theory. For example, they star in the freudenthal suspension theorem and give us a definition of the spheres.
Definitions
The suspension of a type
suspension : {l : Level} → UU l → UU l suspension X = pushout (terminal-map X) (terminal-map X) north-suspension : {l : Level} {X : UU l} → suspension X north-suspension {X = X} = inl-pushout (terminal-map X) (terminal-map X) star south-suspension : {l : Level} {X : UU l} → suspension X south-suspension {X = X} = inr-pushout (terminal-map X) (terminal-map X) star meridian-suspension : {l : Level} {X : UU l} → X → north-suspension {X = X} = south-suspension {X = X} meridian-suspension {X = X} = glue-pushout (terminal-map X) (terminal-map X) suspension-structure-suspension : {l : Level} (X : UU l) → suspension-structure X (suspension X) pr1 (suspension-structure-suspension X) = north-suspension pr1 (pr2 (suspension-structure-suspension X)) = south-suspension pr2 (pr2 (suspension-structure-suspension X)) = meridian-suspension cocone-suspension : {l : Level} (X : UU l) → cocone (terminal-map X) (terminal-map X) (suspension X) cocone-suspension X = cocone-pushout (terminal-map X) (terminal-map X) cogap-suspension' : {l1 l2 : Level} {X : UU l1} {Y : UU l2} → cocone (terminal-map X) (terminal-map X) Y → suspension X → Y cogap-suspension' {X = X} = cogap (terminal-map X) (terminal-map X) up-suspension' : {l1 : Level} (X : UU l1) → universal-property-pushout ( terminal-map X) ( terminal-map X) ( cocone-suspension X) up-suspension' X = up-pushout (terminal-map X) (terminal-map X)
The cogap map of a suspension structure
module _ {l1 l2 : Level} {X : UU l1} {Y : UU l2} (s : suspension-structure X Y) where cogap-suspension : suspension X → Y cogap-suspension = cogap-suspension' (suspension-cocone-suspension-structure s)
The property of being a suspension
The proposition is-suspension
is the
assertion that the cogap map is an
equivalence. Note that this proposition is
small, whereas
the universal property is a
large proposition.
is-suspension : {l1 l2 : Level} {X : UU l1} {Y : UU l2} → suspension-structure X Y → UU (l1 ⊔ l2) is-suspension s = is-equiv (cogap-suspension s)
Properties
The suspension of X
has the universal property of suspensions
module _ {l1 l2 : Level} {X : UU l1} {Z : UU l2} where is-section-cogap-suspension : is-section ( ev-suspension (suspension-structure-suspension X) Z) ( cogap-suspension) is-section-cogap-suspension = ( suspension-structure-suspension-cocone) ·l ( is-section-cogap (terminal-map X) (terminal-map X)) ·r ( suspension-cocone-suspension-structure) is-retraction-cogap-suspension : is-retraction ( ev-suspension (suspension-structure-suspension X) Z) ( cogap-suspension) is-retraction-cogap-suspension = ( is-retraction-cogap (terminal-map X) (terminal-map X)) up-suspension : {l1 : Level} {X : UU l1} → universal-property-suspension (suspension-structure-suspension X) up-suspension Z = is-equiv-is-invertible ( cogap-suspension) ( is-section-cogap-suspension) ( is-retraction-cogap-suspension) module _ {l1 l2 : Level} {X : UU l1} {Z : UU l2} where equiv-up-suspension : (suspension X → Z) ≃ (suspension-structure X Z) pr1 equiv-up-suspension = ev-suspension (suspension-structure-suspension X) Z pr2 equiv-up-suspension = up-suspension Z compute-north-cogap-suspension : (c : suspension-structure X Z) → ( cogap-suspension c north-suspension) = ( north-suspension-structure c) compute-north-cogap-suspension c = pr1 ( htpy-eq-suspension-structure ( is-section-cogap-suspension c)) compute-south-cogap-suspension : (c : suspension-structure X Z) → ( cogap-suspension c south-suspension) = ( south-suspension-structure c) compute-south-cogap-suspension c = pr1 ( pr2 ( htpy-eq-suspension-structure ( is-section-cogap-suspension c))) compute-meridian-cogap-suspension : (c : suspension-structure X Z) (x : X) → ( ( ap (cogap-suspension c) (meridian-suspension x)) ∙ ( compute-south-cogap-suspension c)) = ( ( compute-north-cogap-suspension c) ∙ ( meridian-suspension-structure c x)) compute-meridian-cogap-suspension c = pr2 ( pr2 ( htpy-eq-suspension-structure ( is-section-cogap-suspension c))) ev-suspension-up-suspension : (c : suspension-structure X Z) → ( ev-suspension ( suspension-structure-suspension X) ( Z) ( cogap-suspension c)) = c ev-suspension-up-suspension c = eq-htpy-suspension-structure ( ( compute-north-cogap-suspension c) , ( compute-south-cogap-suspension c) , ( compute-meridian-cogap-suspension c))
The suspension of X
has the dependent universal property of suspensions
dup-suspension : {l1 : Level} {X : UU l1} → dependent-universal-property-suspension (suspension-structure-suspension X) dup-suspension {X = X} B = is-equiv-htpy-equiv' ( ( equiv-dependent-suspension-structure-suspension-cocone ( suspension-structure-suspension X) ( B)) ∘e ( equiv-dup-pushout (terminal-map X) (terminal-map X) B)) ( triangle-dependent-ev-suspension (suspension-structure-suspension X) B) equiv-dup-suspension : {l1 l2 : Level} {X : UU l1} (B : suspension X → UU l2) → ( (x : suspension X) → B x) ≃ ( dependent-suspension-structure B (suspension-structure-suspension X)) pr1 (equiv-dup-suspension {X = X} B) = dependent-ev-suspension (suspension-structure-suspension X) B pr2 (equiv-dup-suspension B) = dup-suspension B module _ {l1 l2 : Level} {X : UU l1} (B : suspension X → UU l2) where dependent-cogap-suspension : dependent-suspension-structure B (suspension-structure-suspension X) → (x : suspension X) → B x dependent-cogap-suspension = map-inv-is-equiv (dup-suspension B) is-section-dependent-cogap-suspension : ( ( dependent-ev-suspension (suspension-structure-suspension X) B) ∘ ( dependent-cogap-suspension)) ~ id is-section-dependent-cogap-suspension = is-section-map-inv-is-equiv (dup-suspension B) is-retraction-dependent-cogap-suspension : ( ( dependent-cogap-suspension) ∘ ( dependent-ev-suspension (suspension-structure-suspension X) B)) ~ id is-retraction-dependent-cogap-suspension = is-retraction-map-inv-is-equiv (dup-suspension B) dup-suspension-north-suspension : (d : dependent-suspension-structure ( B) ( suspension-structure-suspension X)) → ( dependent-cogap-suspension d north-suspension) = ( north-dependent-suspension-structure d) dup-suspension-north-suspension d = north-htpy-dependent-suspension-structure ( B) ( htpy-eq-dependent-suspension-structure ( B) ( is-section-dependent-cogap-suspension d)) dup-suspension-south-suspension : (d : dependent-suspension-structure ( B) ( suspension-structure-suspension X)) → ( dependent-cogap-suspension d south-suspension) = ( south-dependent-suspension-structure d) dup-suspension-south-suspension d = south-htpy-dependent-suspension-structure ( B) ( htpy-eq-dependent-suspension-structure ( B) ( is-section-dependent-cogap-suspension d)) dup-suspension-meridian-suspension : (d : dependent-suspension-structure ( B) ( suspension-structure-suspension X)) (x : X) → coherence-square-identifications ( ap ( tr B (meridian-suspension x)) ( dup-suspension-north-suspension d)) ( apd ( dependent-cogap-suspension d) ( meridian-suspension x)) ( meridian-dependent-suspension-structure d x) ( dup-suspension-south-suspension d) dup-suspension-meridian-suspension d = meridian-htpy-dependent-suspension-structure ( B) ( htpy-eq-dependent-suspension-structure ( B) ( is-section-dependent-cogap-suspension d))
Characterization of homotopies between functions with domain a suspension
module _ {l1 l2 : Level} (X : UU l1) {Y : UU l2} (f g : suspension X → Y) where htpy-function-out-of-suspension : UU (l1 ⊔ l2) htpy-function-out-of-suspension = htpy-suspension-structure ( ev-suspension (suspension-structure-suspension X) Y f) ( ev-suspension (suspension-structure-suspension X) Y g) north-htpy-function-out-of-suspension : htpy-function-out-of-suspension → f north-suspension = g north-suspension north-htpy-function-out-of-suspension = pr1 south-htpy-function-out-of-suspension : htpy-function-out-of-suspension → f south-suspension = g south-suspension south-htpy-function-out-of-suspension = pr1 ∘ pr2 meridian-htpy-function-out-of-suspension : (h : htpy-function-out-of-suspension) → (x : X) → coherence-square-identifications ( north-htpy-function-out-of-suspension h) ( ap f (meridian-suspension x)) ( ap g (meridian-suspension x)) ( south-htpy-function-out-of-suspension h) meridian-htpy-function-out-of-suspension = pr2 ∘ pr2 equiv-htpy-function-out-of-suspension-dependent-suspension-structure : ( dependent-suspension-structure ( eq-value f g) ( suspension-structure-suspension X)) ≃ ( htpy-function-out-of-suspension) equiv-htpy-function-out-of-suspension-dependent-suspension-structure = ( equiv-tot ( λ p → equiv-tot ( λ q → equiv-Π-equiv-family ( λ x → inv-equiv ( compute-dependent-identification-eq-value-function ( f) ( g) ( meridian-suspension-structure ( suspension-structure-suspension X) ( x)) ( p) ( q)))))) equiv-dependent-suspension-structure-htpy-function-out-of-suspension : ( htpy-function-out-of-suspension) ≃ ( dependent-suspension-structure ( eq-value f g) ( suspension-structure-suspension X)) equiv-dependent-suspension-structure-htpy-function-out-of-suspension = ( equiv-tot ( λ p → equiv-tot ( λ q → equiv-Π-equiv-family ( λ x → ( compute-dependent-identification-eq-value-function ( f) ( g) ( meridian-suspension-structure ( suspension-structure-suspension X) ( x)) ( p) ( q)))))) compute-inv-equiv-htpy-function-out-of-suspension-dependent-suspension-structure : htpy-equiv ( inv-equiv ( equiv-htpy-function-out-of-suspension-dependent-suspension-structure)) ( equiv-dependent-suspension-structure-htpy-function-out-of-suspension) compute-inv-equiv-htpy-function-out-of-suspension-dependent-suspension-structure = ( compute-inv-equiv-tot ( λ p → equiv-tot ( λ q → equiv-Π-equiv-family ( λ x → inv-equiv ( compute-dependent-identification-eq-value-function ( f) ( g) ( meridian-suspension-structure ( suspension-structure-suspension X) ( x)) ( p) ( q)))))) ∙h ( tot-htpy ( λ p → ( compute-inv-equiv-tot ( λ q → equiv-Π-equiv-family ( λ x → inv-equiv ( compute-dependent-identification-eq-value-function ( f) ( g) ( meridian-suspension-structure ( suspension-structure-suspension X) ( x)) ( p) ( q))))) ∙h ( tot-htpy ( λ q → compute-inv-equiv-Π-equiv-family ( λ x → inv-equiv ( compute-dependent-identification-eq-value-function ( f) ( g) ( meridian-suspension-structure ( suspension-structure-suspension X) ( x)) ( p) ( q))))))) equiv-htpy-function-out-of-suspension-htpy : (f ~ g) ≃ htpy-function-out-of-suspension equiv-htpy-function-out-of-suspension-htpy = ( equiv-htpy-function-out-of-suspension-dependent-suspension-structure) ∘e ( equiv-dup-suspension (eq-value f g)) htpy-function-out-of-suspension-htpy : (f ~ g) → htpy-function-out-of-suspension htpy-function-out-of-suspension-htpy = map-equiv (equiv-htpy-function-out-of-suspension-htpy) equiv-htpy-htpy-function-out-of-suspension : htpy-function-out-of-suspension ≃ (f ~ g) equiv-htpy-htpy-function-out-of-suspension = ( inv-equiv (equiv-dup-suspension (eq-value f g))) ∘e ( equiv-dependent-suspension-structure-htpy-function-out-of-suspension) htpy-htpy-function-out-of-suspension : htpy-function-out-of-suspension → (f ~ g) htpy-htpy-function-out-of-suspension = map-equiv equiv-htpy-htpy-function-out-of-suspension compute-inv-equiv-htpy-function-out-of-suspension-htpy : htpy-equiv ( inv-equiv equiv-htpy-function-out-of-suspension-htpy) ( equiv-htpy-htpy-function-out-of-suspension) compute-inv-equiv-htpy-function-out-of-suspension-htpy c = ( htpy-eq-equiv ( distributive-inv-comp-equiv ( equiv-dup-suspension (eq-value f g)) ( equiv-htpy-function-out-of-suspension-dependent-suspension-structure)) ( c)) ∙ ( ap ( map-inv-equiv (equiv-dup-suspension (eq-value-function f g))) ( compute-inv-equiv-htpy-function-out-of-suspension-dependent-suspension-structure ( c))) is-section-htpy-htpy-function-out-of-suspension : ( ( htpy-function-out-of-suspension-htpy) ∘ ( htpy-htpy-function-out-of-suspension)) ~ ( id) is-section-htpy-htpy-function-out-of-suspension c = ( ap ( htpy-function-out-of-suspension-htpy) ( inv (compute-inv-equiv-htpy-function-out-of-suspension-htpy c))) ∙ ( is-section-map-inv-equiv (equiv-htpy-function-out-of-suspension-htpy) c) equiv-htpy-function-out-of-suspension-htpy-north-suspension : (c : htpy-function-out-of-suspension) → ( htpy-htpy-function-out-of-suspension c north-suspension) = ( north-htpy-function-out-of-suspension c) equiv-htpy-function-out-of-suspension-htpy-north-suspension c = north-htpy-in-htpy-suspension-structure ( htpy-eq-htpy-suspension-structure ( is-section-htpy-htpy-function-out-of-suspension c)) equiv-htpy-function-out-of-suspension-htpy-south-suspension : (c : htpy-function-out-of-suspension) → ( htpy-htpy-function-out-of-suspension c south-suspension) = ( south-htpy-function-out-of-suspension c) equiv-htpy-function-out-of-suspension-htpy-south-suspension c = south-htpy-in-htpy-suspension-structure ( htpy-eq-htpy-suspension-structure ( is-section-htpy-htpy-function-out-of-suspension c))
The suspension of a contractible type is contractible
is-contr-suspension-is-contr : {l : Level} {X : UU l} → is-contr X → is-contr (suspension X) is-contr-suspension-is-contr {l} {X} is-contr-X = is-contr-is-equiv' ( unit) ( pr1 (pr2 (cocone-suspension X))) ( is-equiv-universal-property-pushout ( terminal-map X) ( terminal-map X) ( cocone-suspension X) ( is-equiv-is-contr (terminal-map X) is-contr-X is-contr-unit) ( up-suspension' X)) ( is-contr-unit)
Suspensions increase connectedness
More precisely, the suspension of a k
-connected type is (k+1)
-connected.
For the proof we use that a type A
is n
-connected if and only if the
constant map B → (A → B)
is an equivalence for all n
-types B
.
So for any (k+1)
-type Y
, we have the commutative diagram
Δ
Y ----------------------> (suspension X → Y)
∧ |
pr1 | ≃ ≃ | ev-suspension
| ≃ ∨
Σ (y y' : Y) , y = y' <----- suspension-structure Y
≐ Σ (y y' : Y) , X → y = y'
where the bottom map is induced by the equivalence (y = y') → (X → (y = y'))
given by the fact that X
is k
-connected and y = y'
is a k
-type.
Since the left, bottom and right maps are equivalences, so is the top map, as desired.
module _ {l : Level} {k : 𝕋} {X : UU l} where is-equiv-north-suspension-ev-suspension-is-connected-Truncated-Type : is-connected k X → {l' : Level} (Y : Truncated-Type l' (succ-𝕋 k)) → is-equiv ( ( north-suspension-structure) ∘ ( ev-suspension ( suspension-structure-suspension X) ( type-Truncated-Type Y))) is-equiv-north-suspension-ev-suspension-is-connected-Truncated-Type c Y = is-equiv-comp ( north-suspension-structure) ( ev-suspension ( suspension-structure-suspension X) ( type-Truncated-Type Y)) ( is-equiv-ev-suspension ( suspension-structure-suspension X) ( up-suspension' X) ( type-Truncated-Type Y)) ( is-equiv-pr1-is-contr ( λ y → is-torsorial-fiber-Id ( λ y' → ( diagonal-exponential (y = y') X , is-equiv-diagonal-exponential-is-connected ( Id-Truncated-Type Y y y') ( c))))) is-connected-succ-suspension-is-connected : is-connected k X → is-connected (succ-𝕋 k) (suspension X) is-connected-succ-suspension-is-connected c = is-connected-is-equiv-diagonal-exponential ( λ Y → is-equiv-right-factor ( ( north-suspension-structure) ∘ ( ev-suspension ( suspension-structure-suspension X) ( type-Truncated-Type Y))) ( diagonal-exponential (type-Truncated-Type Y) (suspension X)) ( is-equiv-north-suspension-ev-suspension-is-connected-Truncated-Type ( c) ( Y)) ( is-equiv-id))
Recent changes
- 2024-04-25. Fredrik Bakke. chore: Fix arrowheads in character diagrams (#1124).
- 2024-04-25. Fredrik Bakke. chore: Universal properties of colimits quantify over all universe levels (#1126).
- 2024-04-11. Fredrik Bakke. Refactor diagonals (#1096).
- 2024-02-06. Egbert Rijke and Fredrik Bakke. Refactor files about identity types and homotopies (#1014).
- 2024-01-09. Fredrik Bakke. Make type argument explicit for
terminal-map
(#993).