# Transport along higher identifications

```agda
module foundation.transport-along-higher-identifications where
```

<details><summary>Imports</summary>

```agda
open import foundation.action-on-identifications-functions
open import foundation.commuting-squares-of-homotopies
open import foundation.commuting-squares-of-identifications
open import foundation.function-types
open import foundation.homotopies
open import foundation.homotopy-algebra
open import foundation.path-algebra
open import foundation.universe-levels
open import foundation.whiskering-homotopies-composition
open import foundation.whiskering-identifications-concatenation

open import foundation-core.identity-types
open import foundation-core.transport-along-identifications
open import foundation-core.whiskering-homotopies-concatenation
```

</details>

### The action on identifications of transport

```agda
module _
  {l1 l2 : Level} {A : UU l1} {x y : A} {p p' : x  y}
  where

  tr² : (B : A  UU l2) (α : p  p') (b : B x)  (tr B p b)  (tr B p' b)
  tr² B α b = ap  t  tr B t b) α

module _
  {l1 l2 : Level} {A : UU l1} {x y : A} {p p' : x  y}
  {α α' : p  p'}
  where

  tr³ : (B : A  UU l2) (β : α  α') (b : B x)  (tr² B α b)  (tr² B α' b)
  tr³ B β b = ap  t  tr² B t b) β

module _
  {l1 l2 : Level} {A : UU l1} {x y : A} {p p' : x  y}
  {α α' : p  p'} {γ γ' : α  α'}
  where

  tr⁴ : (B : A  UU l2) (ψ : γ  γ')  (tr³ B γ) ~ (tr³ B γ')
  tr⁴ B ψ b = ap  t  tr³ B t b) ψ
```

### Computing 2-dimensional transport in a family of identifications with a fixed source

```agda
module _
  {l : Level} {A : UU l} {a b c : A} {q q' : b  c}
  where

  tr²-Id-right :
    (α : q  q') (p : a  b) 
    coherence-square-identifications
      ( tr-Id-right q p)
      ( tr² (Id a) α p)
      ( left-whisker-concat p α)
      ( tr-Id-right q' p)
  tr²-Id-right α p =
    inv-nat-htpy  (t : b  c)  tr-Id-right t p) α
```

### Coherences and algebraic identities for `tr²`

#### Computing `tr²` along the concatenation of identifications

```agda
module _
  {l1 l2 : Level} {A : UU l1} {x y : A}
  {B : A  UU l2}
  where

  tr²-concat :
    {p p' p'' : x  y} (α : p  p') (β : p'  p'') 
    tr² B (α  β) ~ tr² B α ∙h tr² B β
  tr²-concat α β b = ap-concat  t  tr B t b) α β
```

#### Computing `tr²` along the inverse of an identification

```agda
module _
  {l1 l2 : Level} {A : UU l1} {x y : A}
  {B : A  UU l2}
  where

  tr²-inv :
    {p p' : x  y} (α : p  p') 
    tr² B (inv α) ~ inv-htpy (tr² B α)
  tr²-inv α b = ap-inv  t  tr B t b) α

  left-inverse-law-tr² :
    {p p' : x  y} (α : p  p') 
    tr² B (inv α) ∙h tr² B α ~ refl-htpy
  left-inverse-law-tr² α =
    ( right-whisker-concat-htpy (tr²-inv α) (tr² B α)) ∙h
    ( left-inv-htpy (tr² B α))

  right-inverse-law-tr² :
    {p p' : x  y} (α : p  p') 
    tr² B α ∙h tr² B (inv α) ~ refl-htpy
  right-inverse-law-tr² α =
    ( left-whisker-concat-htpy (tr² B α) (tr²-inv α)) ∙h
    ( right-inv-htpy (tr² B α))
```

#### Computing `tr²` along the unit laws for vertical concatenation of identifications

```agda
module _
  {l1 l2 : Level} {A : UU l1} {x y : A}
  {B : A  UU l2}
  where

  tr²-left-unit :
    (p : x  y)  tr² B left-unit ~ tr-concat refl p
  tr²-left-unit p = refl-htpy

  tr²-right-unit :
    (p : x  y)  tr² B right-unit ~ tr-concat p refl
  tr²-right-unit refl = refl-htpy
```

#### Computing `tr²` along the whiskering of identification

```agda
module _
  {l1 l2 : Level} {A : UU l1} {x y z : A}
  {B : A  UU l2}
  where

  tr²-left-whisker :
    (p : x  y) {q q' : y  z} (β : q  q') 
    coherence-square-homotopies
      ( tr-concat p q)
      ( tr² B (left-whisker-concat p β))
      ( tr² B β ·r tr B p)
      ( tr-concat p q')
  tr²-left-whisker refl refl = refl-htpy
```

```agda
module _
  {l1 l2 : Level} {A : UU l1} {x y z : A}
  {B : A  UU l2}
  where

  tr²-right-whisker :
    {p p' : x  y} (α : p  p') (q : y  z) 
    coherence-square-homotopies
      ( tr-concat p q)
      ( tr² B (right-whisker-concat α q))
      ( ( tr B q) ·l (tr² B α))
      ( tr-concat p' q)
  tr²-right-whisker refl refl = inv-htpy right-unit-htpy
```

### Coherences and algebraic identities for `tr³`

#### Computing `tr³` along the concatenation of identifications

```agda
module _
  {l1 l2 : Level} {A : UU l1} {B : A  UU l2}
  {x y : A} {p p' : x  y} {α α' α'' : p  p'}
  where

  tr³-concat :
    (γ : α  α') (δ : α'  α'')  tr³ B (γ  δ) ~ (tr³ B γ) ∙h (tr³ B δ)
  tr³-concat γ δ b = ap-concat  t  tr² B t b) γ δ
```

#### Computing `tr³` along the horizontal concatenation of identifications

```agda
module _
  {l1 l2 : Level} {A : UU l1} {x y : A} {p p' p'' : x  y}
  {α α' : p  p'} {β β' : p'  p''} {B : A  UU l2}
  where

  tr³-horizontal-concat :
    (γ : α  α') (δ : β  β') 
    coherence-square-homotopies
      ( tr²-concat α β)
      ( tr³ B (horizontal-concat-Id² γ δ))
      ( horizontal-concat-htpy² (tr³ B γ) (tr³ B δ))
      ( tr²-concat α' β')
  tr³-horizontal-concat refl refl = inv-htpy right-unit-htpy
```

#### Computing `tr³` along the inverse of an identification

```agda
module _
  {l1 l2 : Level} {A : UU l1} {x y : A} {p p' : x  y} {α α' : p  p'}
  {B : A  UU l2}
  where

  tr³-inv :
    (γ : α  α') 
    tr³ B (inv γ) ~ inv-htpy (tr³ B γ)
  tr³-inv γ b = ap-inv  t  tr² B t b) γ

  left-inv-law-tr³ :
    (γ : α  α') 
    tr³ B (inv γ) ∙h tr³ B γ ~ refl-htpy
  left-inv-law-tr³ γ =
    ( right-whisker-concat-htpy (tr³-inv γ) (tr³ B γ)) ∙h
    ( left-inv-htpy (tr³ B γ))

  right-inv-law-tr³ :
    (γ : α  α') 
    tr³ B γ ∙h tr³ B (inv γ) ~ refl-htpy
  right-inv-law-tr³ γ =
    ( left-whisker-concat-htpy (tr³ B γ) (tr³-inv γ)) ∙h
    ( right-inv-htpy (tr³ B γ))
```

#### Computing `tr³` along the unit laws for vertical concatenation of identifications

```agda
module _
  {l1 l2 : Level} {A : UU l1} {x y : A} {p q : x  y}
  {B : A  UU l2}
  where

  tr³-right-unit :
    (α : p  q) 
    tr³ B (right-unit {p = α}) ~ tr²-concat α refl ∙h right-unit-htpy
  tr³-right-unit refl = refl-htpy

  tr³-left-unit :
    (α : p  q) 
    tr³ B (left-unit {p = α}) ~ tr²-concat refl α ∙h left-unit-htpy
  tr³-left-unit α = refl-htpy
```

#### Computing tr³ along the unit laws for whiskering of identifications

These coherences take the form of the following commutative diagrams. Note that
there is an asymmetry between the left and right coherence laws due to the
asymmetry in the definition of concatenation of identifications.

```agda
module _
  {l1 l2 : Level} {A : UU l1} {x y : A}
  {B : A  UU l2}
  where

  tr³-left-unit-law-left-whisker-concat :
    {q q' : x  y} (β : q  q') 
    coherence-square-homotopies
      ( inv-htpy right-unit-htpy)
      ( refl-htpy)
      ( tr²-left-whisker refl β)
      ( tr³ B (left-unit-law-left-whisker-concat β))
  tr³-left-unit-law-left-whisker-concat refl = refl-htpy
```

```agda
module _
  {l1 l2 : Level} {A : UU l1} {x y : A}
  {B : A  UU l2}
  where

  tr³-right-unit-law-right-whisker-concat :
    {p p' : x  y} (α : p  p') 
    coherence-square-homotopies
      ( ( tr²-concat (right-whisker-concat α refl) right-unit) ∙h
        ( left-whisker-concat-htpy
          ( tr² B (right-whisker-concat α refl))
          ( tr²-right-unit p')))
      ( tr³ B (inv (right-unit-law-right-whisker-concat α)))
      ( tr²-right-whisker α refl)
      ( ( tr²-concat right-unit α) ∙h
        ( right-whisker-concat-htpy (tr²-right-unit p) (tr² B α)) ∙h
        ( inv-htpy
          ( left-whisker-concat-htpy
            ( tr-concat p refl)
            ( left-unit-law-left-whisker-comp (tr² B α)))))
  tr³-right-unit-law-right-whisker-concat {p = refl} {p' = refl} refl =
    refl-htpy
```

The above coherences have simplified forms when we consider 2-loops

```agda
module _
  {l1 l2 : Level} {A : UU l1} {x : A}
  {B : A  UU l2}
  where

  tr³-left-unit-law-left-whisker-concat-Ω² :
    (β : refl {x = x}  refl) 
    coherence-square-homotopies
      ( inv-htpy right-unit-htpy)
      ( refl-htpy)
      ( tr²-left-whisker refl β)
      ( tr³ B (left-unit-law-left-whisker-concat β))
  tr³-left-unit-law-left-whisker-concat-Ω² β =
    tr³-left-unit-law-left-whisker-concat β

  tr³-right-unit-law-right-whisker-concat-Ω² :
    (α : refl {x = x}  refl) 
    coherence-square-homotopies
      ( inv-htpy right-unit-htpy)
      ( tr³ B (inv (right-unit-law-right-whisker-concat α  right-unit)))
      ( tr²-right-whisker α refl)
      ( inv-htpy (left-unit-law-left-whisker-comp (tr² B α)))
  tr³-right-unit-law-right-whisker-concat-Ω² α =
    concat-top-homotopy-coherence-square-homotopies
      ( ( tr³ B (inv right-unit)) ∙h
        ( tr²-concat (right-whisker-concat α refl) refl))
      ( tr³
        ( B)
        ( inv (right-unit-law-right-whisker-concat α  right-unit)))
      ( tr²-right-whisker α refl)
      ( inv-htpy (left-unit-law-left-whisker-comp (tr² B α)))
      ( ( right-whisker-concat-htpy
          ( tr³-inv right-unit)
          ( tr²-concat (right-whisker-concat α refl) refl)) ∙h
        ( inv-htpy
          ( left-transpose-htpy-concat
            ( tr³ B right-unit)
            ( inv-htpy right-unit-htpy)
            ( tr²-concat (right-whisker-concat α refl) refl)
            ( inv-htpy
              ( right-transpose-htpy-concat
                ( tr²-concat (right-whisker-concat α refl) refl)
                ( right-unit-htpy)
                ( tr³ B right-unit)
                ( inv-htpy
                  ( tr³-right-unit (right-whisker-concat α refl))))))))
      ( concat-left-homotopy-coherence-square-homotopies
        ( ( tr³ B (inv right-unit)) ∙h
          ( tr²-concat (right-whisker-concat α refl) refl))
        ( ( tr³ B (inv right-unit)) ∙h
          ( tr³ B (inv (right-unit-law-right-whisker-concat α))))
        ( tr²-right-whisker α refl)
        ( inv-htpy (left-unit-law-left-whisker-comp (tr² B α)))
        ( ( inv-htpy
            ( tr³-concat
              ( inv right-unit)
              ( inv (right-unit-law-right-whisker-concat α)))) ∙h
          ( tr⁴
            ( B)
            ( inv
              ( distributive-inv-concat
                ( right-unit-law-right-whisker-concat α) (right-unit)))))
        ( left-whisker-concat-coherence-square-homotopies
          ( tr³ B (inv right-unit))
          ( tr²-concat (right-whisker-concat α refl) refl)
          ( tr³ B (inv (right-unit-law-right-whisker-concat α)))
          ( tr²-right-whisker α refl)
          ( inv-htpy (left-unit-law-left-whisker-comp (tr² B α)))
          ( concat-bottom-homotopy-coherence-square-homotopies
            ( tr²-concat (right-whisker-concat α refl) refl)
            ( tr³ B (inv (right-unit-law-right-whisker-concat α)))
            ( tr²-right-whisker α refl)
            ( inv-htpy
              ( left-whisker-concat-htpy
                ( refl-htpy)
                ( left-unit-law-left-whisker-comp (tr² B α))))
            ( ap-inv-htpy
              ( left-unit-law-left-whisker-concat-htpy
                ( left-unit-law-left-whisker-comp (tr² B α))))
            ( concat-top-homotopy-coherence-square-homotopies
              ( ( tr²-concat (right-whisker-concat α refl) refl) ∙h
                ( refl-htpy))
              ( tr³ B (inv (right-unit-law-right-whisker-concat α)))
              ( tr²-right-whisker α refl)
              ( inv-htpy
                ( left-whisker-concat-htpy
                  ( refl-htpy)
                  ( left-unit-law-left-whisker-comp (tr² B α))))
              ( right-unit-htpy)
              ( tr³-right-unit-law-right-whisker-concat α)))))
```

#### Computing `tr³` along `commutative-left-whisker-right-whisker-concat`

This coherence naturally takes the form of a filler for a cube whose left face
is

```text
tr³ B (commutative-left-whisker-right-whisker-concat β α)
```

and whose right face is

```text
commutative-right-whisker-left-whisker-htpy (tr² B β) (tr² B α)
```

However, this cube has trivial front and back faces. Thus, we only prove a
simplified form of the coherence.

##### Non-trivial faces of the cube

```agda
module _
  {l1 l2 : Level} {A : UU l1} {x y z : A}
  {B : A  UU l2} {p p' : x  y} {q q' : y  z}
  where

  tr²-left-whisker-concat-tr²-right-whisker-concat :
    (β : q  q') (α : p  p') 
    coherence-square-homotopies
      ( tr-concat p q)
      ( ( tr² B (left-whisker-concat p β)) ∙h
        ( tr² B (right-whisker-concat α q')))
      ( (tr² B β ·r tr B p) ∙h (tr B q' ·l tr² B α))
      ( tr-concat p' q')
  tr²-left-whisker-concat-tr²-right-whisker-concat β α =
    ( vertical-pasting-coherence-square-homotopies
      ( tr-concat p q)
      ( tr² B (left-whisker-concat p β))
      ( right-whisker-comp (tr² B β) (tr B p))
      ( tr-concat p q')
      ( tr² B (right-whisker-concat α q'))
      ( left-whisker-comp (tr B q') (tr² B α))
      ( tr-concat p' q')
      ( tr²-left-whisker p β)
      ( tr²-right-whisker α q'))

  tr²-concat-left-whisker-concat-right-whisker-concat :
    (β : q  q') (α : p  p') 
    coherence-square-homotopies
      ( tr-concat p q)
      ( tr² B (left-whisker-concat p β  right-whisker-concat α q'))
      ( (tr² B β ·r tr B p) ∙h (tr B q' ·l tr² B α))
      ( tr-concat p' q')
  tr²-concat-left-whisker-concat-right-whisker-concat β α =
    ( right-whisker-concat-htpy
      ( tr²-concat
        ( left-whisker-concat p β)
        ( right-whisker-concat α q'))
      ( tr-concat p' q')) ∙h
    ( tr²-left-whisker-concat-tr²-right-whisker-concat β α)

  tr²-right-whisker-concat-tr²-left-whisker-concat :
    (α : p  p') (β : q  q') 
    coherence-square-homotopies
      ( tr-concat p q)
      ( ( tr² B (right-whisker-concat α q)) ∙h
        ( tr² B (left-whisker-concat p' β)))
      ( (tr B q ·l tr² B α) ∙h (tr² B β ·r tr B p'))
      ( tr-concat p' q')
  tr²-right-whisker-concat-tr²-left-whisker-concat α β =
    ( vertical-pasting-coherence-square-homotopies
      ( tr-concat p q)
      ( tr² B (right-whisker-concat α q))
      ( left-whisker-comp (tr B q) (tr² B α))
      ( tr-concat p' q)
      ( tr² B (left-whisker-concat p' β))
      ( right-whisker-comp (tr² B β) (tr B p'))
      ( tr-concat p' q')
      ( tr²-right-whisker α q)
      ( tr²-left-whisker p' β))

  tr²-concat-right-whisker-concat-left-whisker-concat :
    (α : p  p') (β : q  q') 
    coherence-square-homotopies
      ( tr-concat p q)
      ( tr² B (right-whisker-concat α q  left-whisker-concat p' β))
      ( ( tr B q ·l tr² B α) ∙h (tr² B β ·r tr B p'))
      ( tr-concat p' q')
  tr²-concat-right-whisker-concat-left-whisker-concat α β =
    ( right-whisker-concat-htpy
      ( tr²-concat
        ( right-whisker-concat α q)
        ( left-whisker-concat p' β))
      ( tr-concat p' q')) ∙h
    ( tr²-right-whisker-concat-tr²-left-whisker-concat α β)
```

##### The coherence itself

```agda
module _
  {l1 l2 : Level} {A : UU l1} {x y z : A}
  {B : A  UU l2}
  where

  tr³-commutative-left-whisker-right-whisker-concat :
    {q q' : y  z} (β : q  q') {p p' : x  y} (α : p  p') 
    coherence-square-homotopies
      ( tr²-concat-left-whisker-concat-right-whisker-concat β α)
      ( right-whisker-concat-htpy
        ( tr³
          ( B)
          ( commutative-left-whisker-right-whisker-concat β α))
        ( tr-concat p' q'))
      ( left-whisker-concat-htpy
        ( tr-concat p q)
        ( commutative-right-whisker-left-whisker-htpy
          ( tr² B β)
          ( tr² B α)))
      ( tr²-concat-right-whisker-concat-left-whisker-concat α β)
  tr³-commutative-left-whisker-right-whisker-concat
    {q = refl} refl {p = refl} refl =
    refl-htpy
```

##### A simplification of the non-trivial faces of the cube when `α` and `β` are 2-loops

```agda
module _
  {l1 l2 : Level} {A : UU l1} {a : A}
  {B : A  UU l2}
  where

  tr²-left-whisker-concat-tr²-right-whisker-concat-Ω² :
    (α β : refl {x = a}  refl) 
    ( ( tr² B (left-whisker-concat refl α)) ∙h
      ( tr² B (right-whisker-concat β refl))) ~
    ( tr² B α ∙h (id ·l (tr² B β)))
  tr²-left-whisker-concat-tr²-right-whisker-concat-Ω² α β =
    horizontal-concat-htpy²
      ( tr³ B (left-unit-law-left-whisker-concat α))
      ( ( tr³
          ( B)
          ( inv (right-unit-law-right-whisker-concat β  right-unit))) ∙h
        ( inv-htpy (left-unit-law-left-whisker-comp (tr² B β))))

  compute-tr²-left-whisker-concat-tr²-right-whisker-concat-Ω² :
    (α β : refl {x = a}  refl) 
    ( inv-coherence-square-homotopies-horizontal-refl
      ( ( tr² B (left-whisker-concat refl α)) ∙h
        ( tr² B (right-whisker-concat β refl)))
      ( tr² B α ∙h id ·l (tr² B β))
      ( tr²-left-whisker-concat-tr²-right-whisker-concat α β)) ~
    ( tr²-left-whisker-concat-tr²-right-whisker-concat-Ω² α β)
  compute-tr²-left-whisker-concat-tr²-right-whisker-concat-Ω² α β =
    ( vertical-pasting-inv-coherence-square-homotopies-horizontal-refl
      ( tr² B (left-whisker-concat refl α))
      ( tr² B α)
      ( tr² B (right-whisker-concat β refl))
      ( id ·l (tr² B β))
      ( tr²-left-whisker refl α)
      ( tr²-right-whisker β refl)) ∙h
    ( z-concat-htpy³
      ( inv-htpy (tr³-left-unit-law-left-whisker-concat-Ω² α))
      ( inv-htpy (tr³-right-unit-law-right-whisker-concat-Ω² β)))

  tr²-right-whisker-concat-tr²-left-whisker-concat-Ω² :
    (α β : refl {x = a}  refl) 
    ( ( tr² B (right-whisker-concat α refl)) ∙h
      ( tr² B (left-whisker-concat refl β))) ~
    ( ( id ·l (tr² B α)) ∙h (tr² B β))
  tr²-right-whisker-concat-tr²-left-whisker-concat-Ω² α β =
    horizontal-concat-htpy²
      ( ( tr³
          ( B)
          ( inv (right-unit-law-right-whisker-concat α  right-unit))) ∙h
        ( inv-htpy (left-unit-law-left-whisker-comp (tr² B α))))
      ( tr³ B (left-unit-law-left-whisker-concat β))

  compute-tr²-right-whisker-concat-tr²-left-whisker-concat-Ω² :
    (α β : refl {x = a}  refl) 
    ( inv-coherence-square-homotopies-horizontal-refl
      ( ( tr² B (right-whisker-concat α refl)) ∙h
      ( tr² B (left-whisker-concat refl β)))
      ( id ·l (tr² B α) ∙h tr² B β)
      ( tr²-right-whisker-concat-tr²-left-whisker-concat α β)) ~
    ( tr²-right-whisker-concat-tr²-left-whisker-concat-Ω² α β)
  compute-tr²-right-whisker-concat-tr²-left-whisker-concat-Ω² α β =
    ( vertical-pasting-inv-coherence-square-homotopies-horizontal-refl
      ( tr² B (right-whisker-concat α refl))
      ( id ·l (tr² B α))
      ( tr² B (left-whisker-concat refl β))
      ( tr² B β)
      ( tr²-right-whisker α refl)
      ( tr²-left-whisker refl β)) ∙h
    ( z-concat-htpy³
      ( inv-htpy (tr³-right-unit-law-right-whisker-concat-Ω² α))
      ( inv-htpy (tr³-left-unit-law-left-whisker-concat-Ω² β)))

  tr²-concat-left-whisker-concat-right-whisker-concat-Ω² :
    (α β : refl {x = a}  refl) 
    ( tr²
      ( B)
      ( ( left-whisker-concat refl α) 
        ( right-whisker-concat β refl))) ~
    ( ( ( tr² B α) ·r (tr B refl)) ∙h ((tr B refl) ·l (tr² B β)))
  tr²-concat-left-whisker-concat-right-whisker-concat-Ω² α β =
    ( tr²-concat
      ( left-whisker-concat refl α)
      ( right-whisker-concat β refl)) ∙h
    ( tr²-left-whisker-concat-tr²-right-whisker-concat-Ω² α β)

  compute-tr²-concat-left-whisker-concat-right-whisker-concat-Ω² :
    (α β : refl {x = a}  refl) 
    ( ( inv-htpy right-unit-htpy) ∙h
      ( tr²-concat-left-whisker-concat-right-whisker-concat α β)) ~
    ( tr²-concat-left-whisker-concat-right-whisker-concat-Ω² α β)
  compute-tr²-concat-left-whisker-concat-right-whisker-concat-Ω² α β =
    ( inv-htpy
      ( assoc-htpy
        ( inv-htpy right-unit-htpy)
        ( right-whisker-concat-htpy
          ( tr²-concat
            ( left-whisker-concat refl α)
            ( right-whisker-concat β refl))
          ( refl-htpy))
        ( tr²-left-whisker-concat-tr²-right-whisker-concat α β))) ∙h
    ( right-whisker-concat-htpy
      ( vertical-inv-coherence-square-homotopies
        ( right-whisker-concat-htpy
          ( tr²-concat
            ( left-whisker-concat refl α)
            ( right-whisker-concat β refl))
          ( refl-htpy))
        ( right-unit-htpy)
        ( right-unit-htpy)
        ( tr²-concat
          ( left-whisker-concat refl α)
          ( right-whisker-concat β refl))
        ( right-unit-law-right-whisker-concat-htpy
          ( tr²-concat
            ( left-whisker-concat refl α)
            ( right-whisker-concat β refl))))
      ( tr²-left-whisker-concat-tr²-right-whisker-concat α β)) ∙h
    ( assoc-htpy
      ( tr²-concat
        ( left-whisker-concat refl α)
        ( right-whisker-concat β refl))
      ( inv-htpy right-unit-htpy)
      ( tr²-left-whisker-concat-tr²-right-whisker-concat α β)) ∙h
    ( left-whisker-concat-htpy
      ( tr²-concat
        ( left-whisker-concat refl α)
        ( right-whisker-concat β refl))
      ( compute-tr²-left-whisker-concat-tr²-right-whisker-concat-Ω² α β))

  tr²-concat-right-whisker-concat-left-whisker-concat-Ω² :
    (α β : refl {x = a}  refl) 
    ( tr²
      ( B)
      ( ( right-whisker-concat α refl) 
        ( left-whisker-concat refl β))) ~
    ( ( ( tr B refl) ·l (tr² B α)) ∙h ((tr² B β) ·r (tr B refl)))
  tr²-concat-right-whisker-concat-left-whisker-concat-Ω² α β =
    ( tr²-concat
      ( right-whisker-concat α refl)
      ( left-whisker-concat refl β)) ∙h
    ( tr²-right-whisker-concat-tr²-left-whisker-concat-Ω² α β)

  compute-tr²-concat-right-whisker-concat-left-whisker-concat-Ω² :
    (α β : refl {x = a}  refl) 
    ( ( inv-htpy right-unit-htpy) ∙h
      ( tr²-concat-right-whisker-concat-left-whisker-concat α β)) ~
    ( tr²-concat-right-whisker-concat-left-whisker-concat-Ω² α β)
  compute-tr²-concat-right-whisker-concat-left-whisker-concat-Ω² α β =
    ( inv-htpy
      ( assoc-htpy
        ( inv-htpy right-unit-htpy)
        ( right-whisker-concat-htpy
          ( tr²-concat
            ( right-whisker-concat α refl)
            ( left-whisker-concat refl β))
          ( refl-htpy))
        ( tr²-right-whisker-concat-tr²-left-whisker-concat α β))) ∙h
    ( right-whisker-concat-htpy
      ( vertical-inv-coherence-square-homotopies
        ( right-whisker-concat-htpy
          ( tr²-concat
            ( right-whisker-concat α refl)
            ( left-whisker-concat refl β))
          ( refl-htpy))
        ( right-unit-htpy)
        ( right-unit-htpy)
        ( tr²-concat
          ( right-whisker-concat α refl)
          ( left-whisker-concat refl β))
        ( right-unit-law-right-whisker-concat-htpy
          ( tr²-concat
            ( right-whisker-concat α refl)
            ( left-whisker-concat refl β))))
      ( tr²-right-whisker-concat-tr²-left-whisker-concat α β)) ∙h
    ( assoc-htpy
      ( tr²-concat
        ( right-whisker-concat α refl)
        ( left-whisker-concat refl β))
      ( inv-htpy right-unit-htpy)
      ( tr²-right-whisker-concat-tr²-left-whisker-concat α β)) ∙h
    ( left-whisker-concat-htpy
      ( tr²-concat
        ( right-whisker-concat α refl)
        ( left-whisker-concat refl β))
      ( compute-tr²-right-whisker-concat-tr²-left-whisker-concat-Ω² α β))
```

##### A simplification of the main coherence when `α` and `β` are 2-loops

```agda
module _
  {l1 l2 : Level} {A : UU l1} {a : A}
  {B : A  UU l2}
  where

  tr³-commutative-left-whisker-right-whisker-concat-Ω² :
    (α β : refl {x = a}  refl) 
    coherence-square-homotopies
      ( tr²-concat-left-whisker-concat-right-whisker-concat-Ω² α β)
      ( tr³ B (commutative-left-whisker-right-whisker-concat α β))
      ( commutative-right-whisker-left-whisker-htpy
        ( tr² B α)
        ( tr² B β))
      ( tr²-concat-right-whisker-concat-left-whisker-concat-Ω² β α)
  tr³-commutative-left-whisker-right-whisker-concat-Ω² α β =
    concat-bottom-homotopy-coherence-square-homotopies
      ( tr²-concat-left-whisker-concat-right-whisker-concat-Ω² α β)
      ( tr³ B (commutative-left-whisker-right-whisker-concat α β))
      ( commutative-right-whisker-left-whisker-htpy
        ( tr² B α)
        ( tr² B β))
      ( ( inv-htpy right-unit-htpy) ∙h
        ( tr²-concat-right-whisker-concat-left-whisker-concat β α))
      ( compute-tr²-concat-right-whisker-concat-left-whisker-concat-Ω² β α)
      ( concat-top-homotopy-coherence-square-homotopies
        ( ( inv-htpy right-unit-htpy) ∙h
          ( tr²-concat-left-whisker-concat-right-whisker-concat α β))
        ( tr³ B (commutative-left-whisker-right-whisker-concat α β))
        ( commutative-right-whisker-left-whisker-htpy
          ( tr² B α)
          ( tr² B β))
        ( ( inv-htpy right-unit-htpy) ∙h
          ( tr²-concat-right-whisker-concat-left-whisker-concat β α))
        ( compute-tr²-concat-left-whisker-concat-right-whisker-concat-Ω² α β)
        ( horizontal-pasting-coherence-square-homotopies
          ( inv-htpy right-unit-htpy)
          ( tr²-concat-left-whisker-concat-right-whisker-concat α β)
          ( tr³ B (commutative-left-whisker-right-whisker-concat α β))
          ( right-whisker-concat-htpy
            ( tr³ B (commutative-left-whisker-right-whisker-concat α β))
            ( refl-htpy))
          ( commutative-right-whisker-left-whisker-htpy
            ( tr² B α)
            ( tr² B β))
          ( inv-htpy right-unit-htpy)
          ( tr²-concat-right-whisker-concat-left-whisker-concat β α)
          ( horizontal-inv-coherence-square-homotopies
            ( right-unit-htpy)
            ( right-whisker-concat-htpy
              ( tr³ B (commutative-left-whisker-right-whisker-concat α β))
              ( refl-htpy))
            ( tr³ B (commutative-left-whisker-right-whisker-concat α β))
            ( right-unit-htpy)
            ( inv-htpy
              ( right-unit-law-right-whisker-concat-htpy
                ( tr³
                  ( B)
                  ( commutative-left-whisker-right-whisker-concat α β)))))
          ( concat-right-homotopy-coherence-square-homotopies
            ( tr²-concat-left-whisker-concat-right-whisker-concat α β)
            ( right-whisker-concat-htpy
              ( tr³ B (commutative-left-whisker-right-whisker-concat α β))
              ( refl-htpy))
            ( left-whisker-concat-htpy
              ( refl-htpy)
              ( commutative-right-whisker-left-whisker-htpy
                ( tr² B α)
                ( tr² B β)))
            ( tr²-concat-right-whisker-concat-left-whisker-concat β α)
            ( left-unit-law-left-whisker-comp
              ( commutative-right-whisker-left-whisker-htpy
                ( tr² B α)
                ( tr² B β)))
            ( tr³-commutative-left-whisker-right-whisker-concat α β))))
```