{-# OPTIONS --safe #-}
module Cubical.HITs.James.Inductive where
open import Cubical.Foundations.Prelude
open import Cubical.Foundations.Equiv
open import Cubical.Foundations.Pointed
open import Cubical.Data.Nat
open import Cubical.Data.Unit
open import Cubical.Data.Sigma
open import Cubical.Data.Sequence
open import Cubical.HITs.Wedge
open import Cubical.HITs.Pushout
open import Cubical.HITs.Pushout.PushoutProduct
open import Cubical.HITs.SequentialColimit
open import Cubical.HITs.James.Base
open import Cubical.HITs.James.Inductive.Base
open import Cubical.HITs.James.Inductive.PushoutFormula
renaming (isConnectedIncl to connIncl ; isConnectedInl to connInl)
open import Cubical.HITs.James.Inductive.Reduced
open import Cubical.HITs.James.Inductive.ColimitEquivalence
open import Cubical.Homotopy.Connected
private
variable
β : Level
module JamesInd
(Xβ@(X , xβ) : Pointed β) where
π : β β Type β
π = πames (X , xβ)
πSeq : Sequence β
πSeq = πamesSeq (X , xβ)
πβ : Type β
πβ = SeqColim πSeq
Jβπβ : James (X , xβ) β πβ
Jβπβ = compEquiv (JamesβπRedβ _) (invEquiv (πamesββπRedβ _))
πββUnit : π 0 β Unit
πββUnit = πames0β _
πββX : π 1 β X
πββX = πames1β _
πββP[XΓXβXβXβX] : π 2 β Pushout ββͺ foldβ
πββP[XΓXβXβXβX] = πames2β _
πPush : β β Type β
πPush = πamesPush (X , xβ)
module _
{n : β} where
f : πPush n β X Γ π (1 + n)
f = leftMap _
g : πPush n β π (1 + n)
g = rightMap _
πββββPushout : (n : β) β π (2 + n) β Pushout f g
πββββPushout = πames2+nβ _
module _
(d : β)(conn : isConnected (1 + d) X) where
isConnectedIncl : (n : β) β isConnectedFun ((1 + n) Β· d) (incl {n = n})
isConnectedIncl = connIncl Xβ d conn
inlβ : (n : β) β π n β πβ
inlβ _ = incl
isConnectedInl : (n : β) β isConnectedFun ((1 + n) Β· d) (inlβ n)
isConnectedInl = connInl Xβ d conn