{-# OPTIONS --without-K --rewriting #-} open import HoTT open import homotopy.JoinComm open import homotopy.JoinAssocCubical module homotopy.JoinSusp where module _ {i} (A : Type i) where private module Into = JoinRec {A = Bool} {B = A} {D = Susp A} (if_then north else south) (λ _ → south) (λ {(true , a) → merid a; (false , a) → idp}) into = Into.f module Out = SuspRec {C = Bool * A} (left true) (left false) (λ a → glue (true , a) ∙ ! (glue (false , a))) out = Out.f into-out : ∀ σ → into (out σ) == σ into-out = Susp-elim idp idp (↓-∘=idf-from-square into out ∘ λ a → vert-degen-square $ ap (ap into) (Out.merid-β a) ∙ ap-∙ into (glue (true , a)) (! (glue (false , a))) ∙ (Into.glue-β (true , a) ∙2 (ap-! into (glue (false , a)) ∙ ap ! (Into.glue-β (false , a)))) ∙ ∙-unit-r _) out-into : ∀ j → out (into j) == j out-into = Join-elim (λ{true → idp ; false → idp}) (λ a → glue (false , a)) (↓-∘=idf-from-square out into ∘ λ {(true , a) → (ap (ap out) (Into.glue-β (true , a)) ∙ Out.merid-β a) ∙v⊡ (vid-square {p = glue (true , a)} ⊡h rt-square (glue (false , a))) ⊡v∙ ∙-unit-r _; (false , a) → ap (ap out) (Into.glue-β (false , a)) ∙v⊡ connection}) *-Bool-l : Bool * A ≃ Susp A *-Bool-l = equiv into out into-out out-into module _ {i} (X : Ptd i) where ⊙*-Bool-l : ⊙Bool ⊙* X ⊙≃ ⊙Susp X ⊙*-Bool-l = ≃-to-⊙≃ (*-Bool-l (de⊙ X)) idp module _ {i j} (A : Type i) (B : Type j) where *-Susp-l : Susp A * B ≃ Susp (A * B) *-Susp-l = *-Bool-l (A * B) ∘e *-assoc Bool A B ∘e *-emap (*-Bool-l A) (ide B) ⁻¹ module _ {i j} (X : Ptd i) (Y : Ptd j) where ⊙*-Susp-l : ⊙Susp X ⊙* Y ⊙≃ ⊙Susp (X ⊙* Y) ⊙*-Susp-l = ≃-to-⊙≃ (*-Susp-l (de⊙ X) (de⊙ Y)) idp module _ {i} where ⊙*-Sphere-l : (m : ℕ) (X : Ptd i) → ⊙Sphere m ⊙* X ⊙≃ ⊙Susp^ (S m) X ⊙*-Sphere-l O X = ⊙*-Bool-l X ⊙*-Sphere-l (S m) X = ⊙Susp-emap (⊙*-Sphere-l m X) ⊙∘e ⊙*-Susp-l (⊙Sphere m) X