{-# OPTIONS --without-K --rewriting --overlapping-instances --instance-search-depth=3 #-}

open import lib.Basics
open import 2Semigroup
open import 2Grp
open import Delooping
open import KFunctor
open import KFunctor-idf
open import KFunctor-comp
open import apK

module KFunctor-comp-runit-aux2 where

module KFCRU2 {i j} {G₁ : Type i} {G₂ : Type j} {{η₁ : CohGrp G₁}} {{η₂ : CohGrp G₂}}
  {f : G₁  G₂} (σ : WkSGrpHomStr f) (x : G₁) where

  open import KFunctor-comp-runit-defs σ x
  
  private
    κ = cohsgrphom f {{σ}} ∘2Mσ cohsgrphom (idf G₁) {{idf2G}}

  abstract
    KFunc-runit-coher1 : Λ₁ =ₛ Λ₂
    KFunc-runit-coher1 =
      Λ₁
        =ₑ⟨ 5 & 2 & idp ◃∎ % ap-seq-=ₛ  q  q) (=ₛ-in (∘-ap-ap-∘-inv (K₂-map σ) (K₂-map idf2G) (loop G₁ x))) 
      _
        =ₛ₁⟨ 4 & 3 & ap2 _∙_ (ap-idf (! (ap (ap (K₂-map σ)) (K₂-map-β-pts idf2G x)))) idp  !-inv-l (ap (ap (K₂-map σ)) (K₂-map-β-pts idf2G x)) 
      Λ₂ ∎ₛ

    KFunc-runit-coher2 :
      Λ₂
        =ₛ
      idp ◃∙
      idp ◃∙
      ap (ap (K₂-map σ)) (! (ap-idf (loop G₁ x))) ◃∙
      idp ◃∙
      ap  q  q) (ap  q  q) (∘-ap (K₂-map σ)  z  z) (loop G₁ x))) ◃∙
      idp ◃∙
      idp ◃∎
    KFunc-runit-coher2 =
      Λ₂
        =ₛ₁⟨ 1 & 2 &
          ap2 _∙_ idp (ap-idf (K₂-map-β-pts κ x))  !-inv-l (K₂-map-β-pts κ x) 
      _
        =ₛ₁⟨ 0 & 3 & ap2 _∙_ idp (ap-idf (! (K₂-map-β-pts σ x)))  !-inv-r (K₂-map-β-pts σ x) 
      idp ◃∙
      idp ◃∙
      ap (ap (K₂-map σ)) (! (ap-idf (loop G₁ x))) ◃∙
      idp ◃∙
      ap  q  q) (ap  q  q) (∘-ap (K₂-map σ)  z  z) (loop G₁ x))) ◃∙
      idp ◃∙
      idp ◃∎ ∎ₛ

    KFunc-runit-coher3 : {b : K₂ G₁ η₁} (p : b == base G₁) 
      idp ◃∙
      idp ◃∙
      ap (ap (K₂-map σ)) (! (ap-idf p)) ◃∙
      idp ◃∙
      ap  q  q) (ap  q  q) (∘-ap (K₂-map σ)  z  z) p)) ◃∙
      idp ◃∙
      idp ◃∎
        =ₛ
      hmtpy-nat-∙'  z  idp) p ◃∎
    KFunc-runit-coher3 idp = =ₛ-in idp