module Homotopy.Space.Suspension where
private variable
: Level
ℓ : Type ℓ
A B C : Type∙ ℓ A∙ B∙ C∙
Suspension🔗
Given a type its (reduced) suspension is the higher-inductive type generated by the following constructors:
data Susp {ℓ} (A : Type ℓ) : Type ℓ where
: Susp A
north : Susp A
south : A → north ≡ south merid
The names north
and south
are meant to evoke the
north and south poles of a sphere, respectively, and
the name merid
should evoke the
meridians. Indeed, we can picture a suspension like a sphere1:
We have the north and south poles and above and below a copy of the space which is diagrammatically represented by the shaded region. In the type theory, we can’t really “see” this copy of we only see its ghost, as something keeping all the meridians from collapsing.
By convention, we see the suspension as a pointed type with the north pole as the base point.
: ∀ {ℓ} (A : Type ℓ) → Type∙ ℓ
Σ∙ = Susp A , north
Σ∙ A
: ∀ {ℓ} → Type∙ ℓ → Type∙ ℓ
Σ¹ (A , _) = Σ∙ A Σ¹
Susp-elim: ∀ {ℓ ℓ'} {A : Type ℓ} (P : Susp A → Type ℓ')
→ (pN : P north) (pS : P south)
→ (∀ x → PathP (λ i → P (merid x i)) pN pS)
→ ∀ x → P x
= pN
Susp-elim P pN pS pmerid north = pS
Susp-elim P pN pS pmerid south (merid x i) = pmerid x i
Susp-elim P pN pS pmerid
unquoteDecl Susp-elim-prop = make-elim-n 1 Susp-elim-prop (quote Susp)
Every suspension admits a surjection from the booleans:
: ∀ {ℓ} {A : Type ℓ} → Bool → Susp A
2→Σ = north
2→Σ true = south
2→Σ false
: is-surjective (2→Σ {A = A})
2→Σ-surjective = Susp-elim-prop (λ _ → hlevel 1)
2→Σ-surjective (inc (true , refl)) (inc (false , refl))
Suspension extends to a functor in the evident way.
: (A → B) → Susp A → Susp B
Susp-map = north
Susp-map f north = south
Susp-map f south (merid x i) = merid (f x) i
Susp-map f
: (A∙ →∙ B∙) → Σ¹ A∙ →∙ Σ¹ B∙
Susp-map∙ (f , pt) = Susp-map f , refl
Susp-map∙
: Susp-map∙ {A∙ = A∙} id∙ ≡ id∙
Susp-map∙-id = funext∙ (Susp-elim _ refl refl λ x i j → merid x i) refl
Susp-map∙-id
Susp-map∙-∘: (f : B∙ →∙ C∙) (g : A∙ →∙ B∙)
→ Susp-map∙ (f ∘∙ g) ≡ Susp-map∙ f ∘∙ Susp-map∙ g
(f , _) (g , _) =
Susp-map∙-∘ (Susp-elim _ refl refl (λ x i j → merid (f (g x)) i)) (sym (∙-idl _))
funext∙
: Susp-map∙ (zero∙ {A = A∙} {B = B∙}) ≡ zero∙
Susp-map∙-zero {B∙ = B , b₀} =
Susp-map∙-zero (Susp-elim _ refl (sym (merid b₀)) λ a i j → merid b₀ (i ∧ ~ j)) refl funext∙
: Maps∙ A∙ B∙ →∙ Maps∙ (Σ¹ A∙) (Σ¹ B∙)
Susp-Maps∙ .fst = Susp-map∙
Susp-Maps∙ {A∙ = A∙} {B∙ = B∙} .snd = Susp-map∙-zero {A∙ = A∙} {B∙ = B∙}
Susp-Maps∙
: A ≃ B → Susp A ≃ Susp B
Susp-ap .fst = Susp-map (e .fst)
Susp-ap e .snd = is-iso→is-equiv λ where
Susp-ap e .is-iso.from → Susp-elim _ north south (λ x → merid (Equiv.from e x))
.is-iso.rinv → Susp-elim _ refl refl (λ x i j → merid (Equiv.ε e x j) i)
.is-iso.linv → Susp-elim _ refl refl (λ x i j → merid (Equiv.η e x j) i)
: A∙ ≃∙ B∙ → Σ¹ A∙ ≃∙ Σ¹ B∙
Susp-ap∙ (e , pt) .fst = Susp-ap e
Susp-ap∙ (e , pt) .snd = refl Susp-ap∙
Diagrams are hard, okay?!↩︎