{-# OPTIONS --safe #-}
module Cubical.Homotopy.Prespectrum where
open import Cubical.Foundations.Prelude
open import Cubical.Foundations.GroupoidLaws
open import Cubical.Foundations.Pointed
open import Cubical.Data.Unit.Pointed
open import Cubical.Structures.Successor
open import Cubical.Data.Nat
open import Cubical.Data.Int
open import Cubical.HITs.Susp
open import Cubical.Homotopy.Loopspace
private
variable
ℓ ℓ' : Level
record GenericPrespectrum (S : SuccStr ℓ) (ℓ' : Level) : Type (ℓ-max (ℓ-suc ℓ') ℓ) where
open SuccStr S
field
space : Index → Pointed ℓ'
map : (i : Index) → (space i →∙ Ω (space (succ i)))
Prespectrum = GenericPrespectrum ℤ+
Unit∙→ΩUnit∙ : {ℓ : Level} → (Unit∙ {ℓ = ℓ}) →∙ Ω (Unit∙ {ℓ = ℓ})
Unit∙→ΩUnit∙ = (λ {tt* → refl}) , refl
makeℤPrespectrum : (space : ℕ → Pointed ℓ)
(map : (i : ℕ) → (space i) →∙ Ω (space (suc i)))
→ Prespectrum ℓ
GenericPrespectrum.space (makeℤPrespectrum space map) (pos n) = space n
GenericPrespectrum.space (makeℤPrespectrum space map) (negsuc n) = Unit∙
GenericPrespectrum.map (makeℤPrespectrum space map) (pos n) = map n
GenericPrespectrum.map (makeℤPrespectrum space map) (negsuc zero) = (λ {tt* → refl}) , refl
GenericPrespectrum.map (makeℤPrespectrum space map) (negsuc (suc n)) = Unit∙→ΩUnit∙
SuspensionPrespectrum : Pointed ℓ → Prespectrum ℓ
SuspensionPrespectrum A = makeℤPrespectrum space map
where
space : ℕ → Pointed _
space zero = A
space (suc n) = Susp∙ (typ (space n))
map : (n : ℕ) → _
map n = toSuspPointed (space n)