{-# OPTIONS --without-K --rewriting --overlapping-instances --instance-search-depth=4 --lossy-unification #-}
open import lib.Basics
open import lib.NType2
open import lib.types.Sigma
open import 2Semigroup
open import 2SGrpMap
open import 2Grp
open import PostMultMap
open import Hmtpy2Grp
module Hmtpy2Grp2 where
module _ {i} {G : Type i} {{η : CohGrp G}} where
open CohGrp η
fst=-sect : WkSGrpNatIso (fst=-2map ∘2Mw sgrphom-forg (1tr-2SGrpMap G)) (idf2Mw {{sgrp (Loop2Grp G)}})
WkSGrpNatIso.θ fst=-sect p = fst=-β p prop-has-all-paths-↓
WkSGrpNatIso.θ-comp fst=-sect p₁ p₂ = lemma p₁ p₂
where
lemma : {A₁ A₂ A₃ : Type i} (q₁ : A₁ == A₂) (q₂ : A₂ == A₃)
{d₁ : has-level 1 A₁} {d₂ : has-level 1 A₂} {d₃ : has-level 1 A₃}
{t₁ : d₁ == d₂ [ has-level 1 ↓ q₁ ]} {t₂ : d₂ == d₃ [ has-level 1 ↓ q₂ ]}
{t₃ : d₁ == d₃ [ has-level 1 ↓ q₁ ∙ q₂ ]} {t₄ : t₁ ∙ᵈ t₂ == t₃} →
idp
==
! (ap2 _∙_ (fst=-β q₁ t₁) (fst=-β q₂ t₂)) ∙
(∙-ap fst (pair= q₁ t₁) (pair= q₂ t₂) ∙
ap (ap fst) (Σ-∙ {p = q₁} {p' = q₂} t₁ t₂ ∙ ap (pair= (q₁ ∙ q₂)) t₄)) ∙
fst=-β (q₁ ∙ q₂) t₃
lemma {A₁} idp idp {t₁ = t₁} {t₂} {t₄ = idp} = aux t₁ t₂
where
aux : {x₁ x₂ x₃ : has-level 1 A₁} (v₁ : x₁ == x₂) (v₂ : x₂ == x₃) →
idp
==
! (ap2 _∙_ (fst=-β {B = has-level 1} idp v₁) (fst=-β idp v₂)) ∙
(∙-ap fst (ap (A₁ ,_) v₁) (ap (A₁ ,_) v₂) ∙
ap (ap fst) (Σ-∙-aux v₁ v₂ ∙ idp)) ∙
fst=-β {B = has-level 1} idp (v₁ ∙ v₂)
aux idp idp = idp
module Facts where
abstract
fst=-tri0 :
WkSGrpNatIso
(fst=-2map ∘2Mw loop-2map-forg (G , 1trunc) 2Grp-1Ty-lmap)
((fst=-2map ∘2Mw sgrphom-forg (1tr-2SGrpMap G)) ∘2Mw sgrphom-forg (ua-2SGrpMap G) ∘2Mw sgrphom-forg mu-≃-map)
fst=-tri0 =
fst=-2map ∘2Mw loop-2map-forg (G , 1trunc) 2Grp-1Ty-lmap
=⟦ natiso-id (fst=-2map ∘2Mw loop-2map-forg (G , 1trunc) 2Grp-1Ty-lmap) ⟧
fst=-2map ∘2Mw sgrphom-forg (1tr-2SGrpMap G) ∘2Mw sgrphom-forg (ua-2SGrpMap G) ∘2Mw sgrphom-forg mu-≃-map
=⟦ assoc-wksgrphom fst=-2map (sgrphom-forg (1tr-2SGrpMap G)) (sgrphom-forg (ua-2SGrpMap G) ∘2Mw sgrphom-forg mu-≃-map) ⟧
(fst=-2map ∘2Mw sgrphom-forg (1tr-2SGrpMap G)) ∘2Mw sgrphom-forg (ua-2SGrpMap G) ∘2Mw sgrphom-forg mu-≃-map ∎ₙ
fst=-tri1 :
WkSGrpNatIso
((fst=-2map ∘2Mw sgrphom-forg (1tr-2SGrpMap G)) ∘2Mw sgrphom-forg (ua-2SGrpMap G) ∘2Mw sgrphom-forg mu-≃-map)
(sgrphom-forg (ua-2SGrpMap G) ∘2Mw sgrphom-forg mu-≃-map)
fst=-tri1 =
(fst=-2map ∘2Mw sgrphom-forg (1tr-2SGrpMap G)) ∘2Mw sgrphom-forg (ua-2SGrpMap G) ∘2Mw sgrphom-forg mu-≃-map
=⟦ natiso-whisk-r fst=-sect ⟧
idf2Mw ∘2Mw sgrphom-forg (ua-2SGrpMap G) ∘2Mw sgrphom-forg mu-≃-map
=⟦ unit-wksgrphom (sgrphom-forg (ua-2SGrpMap G) ∘2Mw sgrphom-forg mu-≃-map) ⟧
sgrphom-forg (ua-2SGrpMap G) ∘2Mw sgrphom-forg mu-≃-map ∎ₙ
open Facts
abstract
fst=-tri :
WkSGrpNatIso
(fst=-2map ∘2Mw loop-2map-forg (G , 1trunc) 2Grp-1Ty-lmap)
(sgrphom-forg (ua-2SGrpMap G) ∘2Mw sgrphom-forg mu-≃-map)
fst=-tri = fst=-tri1 natiso-∘ fst=-tri0