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

open import lib.Basics
open import lib.NType2
open import lib.Equivalence2 hiding (linv; rinv)
open import 2Semigroup
open import 2Grp
open import Codes

module Decode-aux0 where

module _ {i} {G : Type i} {{η : CohGrp G}} where

  open CohGrp {{...}}

  open import Delooping G

  module _ (z : G) where
  
    long-aux8-aux-aux1 : {b : K₂ η} (p₁ : base == b) (p₂ : b == base) 
      ! (ap loop (transp-coe p₂ (coe (ap fst (ap codes p₁)) z) 
        ap  q  coe q (coe (ap fst (ap codes p₁)) z))
          (ap-∘ fst codes p₂)  idp)) 
      ! (ap  v  loop (transport codes-fst p₂ v))
        (transp-coe p₁ z  ap  q  coe q z) (ap-∘ fst codes p₁)  idp)) 
      ! (ap loop (transp-∙ p₁ p₂ z)) 
      (ap loop (transp-coe (p₁  p₂) z) 
      ap loop (ap  q  coe q z) (ap-∘ fst codes (p₁  p₂)))) 
      ap loop (ap  q  coe q z)
        (! ((∙-ap fst (ap codes p₁) (ap codes p₂) 
          ap (ap fst) (∙-ap codes p₁ p₂))  idp))) 
      ap loop (coe-∙ (ap fst (ap codes p₁)) (ap fst (ap codes p₂)) z)
        ==
      idp
    long-aux8-aux-aux1 idp p₂ = aux (transp-coe p₂ z) (ap  q  coe q z) (ap-∘ fst codes p₂))
      where
        aux : {x₁ x₂ x₃ : G} (c₁ : x₁ == x₂) (c₂ : x₂ == x₃) 
          ! (ap loop (c₁  c₂  idp))  (ap loop c₁  ap loop c₂)  idp == idp
        aux idp idp = idp