{-# OPTIONS --without-K --rewriting #-}

open import lib.Basics
open import 2Grp

module 2GrpSIP-aux2 {i} (G₁ : Type i) (η₁ : CohGrp G₁) where

  open CohGrp η₁

  tr-inhab : (x y : G₁) 
    ap  z  mu z y) (! (! (ap  v  v) (rho x))))
      ==
    ! (! (! (ap  v  v) (al x id y))))  ap (mu x) (! (! (ap  v  v) (lam y))  idp))
  tr-inhab x y =
    ap (ap  z  mu z y)) (!-!-ap-idf (rho x)) 
    tr x y 
    ! (ap2 _∙_
        (ap ! (!-!-ap-idf (al x id y)))
        (ap (ap (mu x))
          (!-∙ (! (ap  v  v) (lam y))) idp  !-!-ap-idf (lam y))))

  pent-inhab : (w x y z : G₁) 
    ! (! (ap  v  v) (al w x (mu y z))))  ! (! (ap  v  v) (al (mu w x) y z)))
      ==
    ap (mu w) (! (! (ap  v  v) (al x y z)))) 
    ! (! (ap  v  v) (al w (mu x y) z))) 
    ap  v  mu v z) (! (! (ap  v  v) (al w x y))))
  pent-inhab w x y z = 
    ap2 _∙_ (!-!-ap-idf (al w x (mu y z))) (!-!-ap-idf (al (mu w x) y z)) 
    pent w x y z 
    ! (ap3  p₁ p₂ p₃  p₁  p₂  p₃)
         (ap (ap (mu w)) (!-!-ap-idf (al x y z)))
         (!-!-ap-idf (al w (mu x y) z))
         (ap (ap  v  mu v z)) (!-!-ap-idf (al w x y))) )

  zz₁-inhab : (x : G₁) 
    ! (! (ap  v  v) (lam x))  idp)
      ==
    ap  z  mu z x) (ap  v  v) (rinv x)) 
    ! (! (! (ap  v  v) (al x (inv x) x)))) 
    ap (mu x) (! (! (ap  v  v) (linv x)))) 
    ! (! (ap  v  v) (rho x)))
  zz₁-inhab x =
    !-∙ (! (ap  v  v) (lam x))) idp 
    !-!-ap-idf (lam x) 
    zz₁ x 
    ! (ap4  p₁ p₂ p₃ p₄  p₁  p₂  p₃  p₄)
        (ap (ap  z  mu z x)) (ap-idf (rinv x)))
        (ap ! (!-!-ap-idf (al x (inv x) x)))
        (ap (ap (mu x)) (!-!-ap-idf (linv x)))
        (!-!-ap-idf (rho x))) 

  zz₂-inhab : (x : G₁) 
    ! (! (! (ap  v  v) (lam (inv x)))  idp))
      ==
    ! (! (! (ap  v  v) (rho (inv x))))) 
    ap (mu (inv x)) (ap  v  v) (rinv x)) 
    ! (! (ap  v  v) (al (inv x) x (inv x)))) 
    ap  z  mu z (inv x)) (! (! (ap  v  v) (linv x))))
  zz₂-inhab x =
    ap ! (!-∙ (! (ap  v  v) (lam (inv x)))) idp  !-!-ap-idf (lam (inv x))) 
    zz₂ x 
    ! (ap4  p₁ p₂ p₃ p₄  p₁  p₂  p₃  p₄)
        (ap ! (!-!-ap-idf (rho (inv x))))
        (ap (ap (mu (inv x))) (ap-idf (rinv x)))
        (!-!-ap-idf (al (inv x) x (inv x)))
        (ap (ap  z  mu z (inv x))) (!-!-ap-idf (linv x))))