{-# OPTIONS --without-K --exact-split #-}
open import TransportLemmas
open import EquivalenceType

open import HomotopyType
open import FunExtAxiom
open import QuasiinverseType
open import DecidableEquality
open import NaturalType
open import HLevelTypes
open import HLevelLemmas
open import HedbergLemmas

Suspensions

module SuspensionType where

  module S where

  private
    data Suspₚ {: Level} (A : Type ℓ) : Type ℓ where
      Nₚ : Suspₚ A
      Sₚ : Suspₚ A

    data Suspₓ {} (A : Type ℓ) : Type ℓ where
      mkSusp : Suspₚ A  (𝟙 𝟙)  Suspₓ A

  Susp = Suspₓ
  • point-constructors
North :  {} {A : Type ℓ}  Susp A
North = mkSusp Nₚ _

South :  {} {A : Type ℓ}  Susp A
South = mkSusp Sₚ _
  • path-constructors
postulate
  merid :  {} {A : Type ℓ}
         A
         Path {}{Susp A} North South

Recursion principle on points

Susp-rec
  :  {ℓ₁ ℓ₂ : Level} {A : Type ℓ₁}{C : Type ℓ₂}
   (cₙ cₛ  : C)
   (merid' : A  cₙ == cₛ)
  ------------------------
   (Susp A  C)

Susp-rec cₙ _ _ (mkSusp Nₚ _) = cₙ
Susp-rec _ cₛ _ (mkSusp Sₚ _) = cₛ

Recursion principle on paths

postulate
  Susp-βrec
    :  {ℓ₁ ℓ₂ : Level} {A : Type ℓ₁}{C : Type ℓ₂}
     {cₙ cₛ : C} {mer : A  cₙ == cₛ}
     {a : A}
    -------------------------------------------
     ap (Susp-rec cₙ cₛ mer) (merid a) == mer a

Induction principle on points

Susp-ind
  :  {: Level} {A : Type ℓ} (C : Susp A  Type ℓ)
   (N' : C North)
   (S' : C South)
   (merid' : (x : A)  N' == S' [ C ↓ (merid x) ])
  --------------------------------------------------
   ((x : Susp A)  C x)

Susp-ind _ N' S' _ (mkSusp Nₚ _) = N'
Susp-ind _ N' S' _ (mkSusp Sₚ _) = S'

Induction principle on paths

postulate
  Susp-βind
    :  {} {A : Type ℓ} (C : Susp A  Type ℓ)
     (N' : C North)
     (S' : C South)
     (merid' : (x : A)  N' == S' [ C ↓ (merid x)]) {x : A}
    --------------------------------------------------------
     apd (Susp-ind C N' S' merid') (merid x) == merid' x