# Homotopies of morphisms of arrows

```agda
module foundation.homotopies-morphisms-arrows where
```

<details><summary>Imports</summary>

```agda
open import foundation.action-on-identifications-functions
open import foundation.commuting-squares-of-identifications
open import foundation.commuting-triangles-of-identifications
open import foundation.cones-over-cospan-diagrams
open import foundation.dependent-pair-types
open import foundation.function-extensionality
open import foundation.fundamental-theorem-of-identity-types
open import foundation.homotopy-induction
open import foundation.morphisms-arrows
open import foundation.postcomposition-functions
open import foundation.structure-identity-principle
open import foundation.universe-levels
open import foundation.whiskering-homotopies-composition
open import foundation.whiskering-identifications-concatenation

open import foundation-core.commuting-squares-of-homotopies
open import foundation-core.commuting-squares-of-maps
open import foundation-core.equivalences
open import foundation-core.function-types
open import foundation-core.homotopies
open import foundation-core.identity-types
open import foundation-core.precomposition-functions
open import foundation-core.torsorial-type-families
```

</details>

## Idea

Consider two [morphisms of arrows](foundation.morphisms-arrows.md) `(i , j , H)`
and `(i' , j' , H')` from `f` to `g`, as in the diagrams

```text
        i                   i'
    A -----> X          A -----> X
    |        |          |        |
  f |        | g      f |        | g
    ∨        ∨          ∨        ∨
    B -----> Y          B -----> Y.
        j                   j'
```

A {{#concept "homotopy of morphisms of arrows"}} from `(i , j , H)` to
`(i' , j' , H')` is a triple `(I , J , K)` consisting of homotopies `I : i ~ i'`
and `J : j ~ j'` and a homotopy `K` witnessing that the
[square of homotopies](foundation.commuting-squares-of-homotopies.md)

```text
           J ·r f
  (j ∘ f) --------> (j' ∘ f)
     |                 |
   H |                 | H'
     ∨                 ∨
  (g ∘ i) --------> (g ∘ i')
           g ·l I
```

commutes.

## Definitions

### Homotopies of morphisms of arrows

```agda
module _
  {l1 l2 l3 l4 : Level} {A : UU l1} {B : UU l2} {X : UU l3} {Y : UU l4}
  (f : A  B) (g : X  Y) (α : hom-arrow f g)
  where

  coherence-htpy-hom-arrow :
    (β : hom-arrow f g)
    (I : map-domain-hom-arrow f g α ~ map-domain-hom-arrow f g β)
    (J : map-codomain-hom-arrow f g α ~ map-codomain-hom-arrow f g β) 
    UU (l1  l4)
  coherence-htpy-hom-arrow β I J =
    coherence-square-homotopies
      ( J ·r f)
      ( coh-hom-arrow f g α)
      ( coh-hom-arrow f g β)
      ( g ·l I)

  htpy-hom-arrow :
    (β : hom-arrow f g)  UU (l1  l2  l3  l4)
  htpy-hom-arrow β =
    Σ ( map-domain-hom-arrow f g α ~ map-domain-hom-arrow f g β)
      ( λ I 
        Σ ( map-codomain-hom-arrow f g α ~ map-codomain-hom-arrow f g β)
          ( coherence-htpy-hom-arrow β I))

  module _
    (β : hom-arrow f g) (η : htpy-hom-arrow β)
    where

    htpy-domain-htpy-hom-arrow :
      map-domain-hom-arrow f g α ~ map-domain-hom-arrow f g β
    htpy-domain-htpy-hom-arrow = pr1 η

    htpy-codomain-htpy-hom-arrow :
      map-codomain-hom-arrow f g α ~ map-codomain-hom-arrow f g β
    htpy-codomain-htpy-hom-arrow = pr1 (pr2 η)

    coh-htpy-hom-arrow :
      coherence-square-homotopies
        ( htpy-codomain-htpy-hom-arrow ·r f)
        ( coh-hom-arrow f g α)
        ( coh-hom-arrow f g β)
        ( g ·l htpy-domain-htpy-hom-arrow)
    coh-htpy-hom-arrow = pr2 (pr2 η)
```

### The reflexivity homotopy of morphisms of arrows

```agda
module _
  {l1 l2 l3 l4 : Level} {A : UU l1} {B : UU l2} {X : UU l3} {Y : UU l4}
  (f : A  B) (g : X  Y) (α : hom-arrow f g)
  where

  htpy-domain-refl-htpy-hom-arrow :
    map-domain-hom-arrow f g α ~ map-domain-hom-arrow f g α
  htpy-domain-refl-htpy-hom-arrow = refl-htpy

  htpy-codomain-refl-htpy-hom-arrow :
    map-codomain-hom-arrow f g α ~ map-codomain-hom-arrow f g α
  htpy-codomain-refl-htpy-hom-arrow = refl-htpy

  coh-refl-htpy-hom-arrow :
    coherence-square-homotopies
      ( htpy-codomain-refl-htpy-hom-arrow ·r f)
      ( coh-hom-arrow f g α)
      ( coh-hom-arrow f g α)
      ( g ·l htpy-domain-refl-htpy-hom-arrow)
  coh-refl-htpy-hom-arrow = right-unit-htpy

  refl-htpy-hom-arrow : htpy-hom-arrow f g α α
  pr1 refl-htpy-hom-arrow = htpy-domain-refl-htpy-hom-arrow
  pr1 (pr2 refl-htpy-hom-arrow) = htpy-codomain-refl-htpy-hom-arrow
  pr2 (pr2 refl-htpy-hom-arrow) = coh-refl-htpy-hom-arrow
```

## Operations

### Concatenation of homotopies of morphisms of arrows

```agda
module _
  {l1 l2 l3 l4 : Level} {A : UU l1} {B : UU l2} {X : UU l3} {Y : UU l4}
  (f : A  B) (g : X  Y) (α β γ : hom-arrow f g)
  (H : htpy-hom-arrow f g α β) (K : htpy-hom-arrow f g β γ)
  where

  htpy-domain-concat-htpy-hom-arrow :
    map-domain-hom-arrow f g α ~ map-domain-hom-arrow f g γ
  htpy-domain-concat-htpy-hom-arrow =
    htpy-domain-htpy-hom-arrow f g α β H ∙h
    htpy-domain-htpy-hom-arrow f g β γ K

  htpy-codomain-concat-htpy-hom-arrow :
    map-codomain-hom-arrow f g α ~ map-codomain-hom-arrow f g γ
  htpy-codomain-concat-htpy-hom-arrow =
    htpy-codomain-htpy-hom-arrow f g α β H ∙h
    htpy-codomain-htpy-hom-arrow f g β γ K

  coh-concat-htpy-hom-arrow :
    coherence-htpy-hom-arrow f g α γ
      ( htpy-domain-concat-htpy-hom-arrow)
      ( htpy-codomain-concat-htpy-hom-arrow)
  coh-concat-htpy-hom-arrow a =
    ( left-whisker-concat
      ( coh-hom-arrow f g α a)
      ( ap-concat g
        ( htpy-domain-htpy-hom-arrow f g α β H a)
        ( htpy-domain-htpy-hom-arrow f g β γ K a))) 
    ( horizontal-pasting-coherence-square-identifications
      ( htpy-codomain-htpy-hom-arrow f g α β H (f a))
      ( htpy-codomain-htpy-hom-arrow f g β γ K (f a))
      ( coh-hom-arrow f g α a)
      ( coh-hom-arrow f g β a)
      ( coh-hom-arrow f g γ a)
      ( (g ·l htpy-domain-htpy-hom-arrow f g α β H) a)
      ( (g ·l htpy-domain-htpy-hom-arrow f g β γ K) a)
      ( coh-htpy-hom-arrow f g α β H a)
      ( coh-htpy-hom-arrow f g β γ K a))

  concat-htpy-hom-arrow : htpy-hom-arrow f g α γ
  pr1 concat-htpy-hom-arrow = htpy-domain-concat-htpy-hom-arrow
  pr1 (pr2 concat-htpy-hom-arrow) = htpy-codomain-concat-htpy-hom-arrow
  pr2 (pr2 concat-htpy-hom-arrow) = coh-concat-htpy-hom-arrow
```

### Inverses of homotopies of morphisms of arrows

```agda
module _
  {l1 l2 l3 l4 : Level} {A : UU l1} {B : UU l2} {X : UU l3} {Y : UU l4}
  (f : A  B) (g : X  Y) (α β : hom-arrow f g) (H : htpy-hom-arrow f g α β)
  where

  htpy-domain-inv-htpy-hom-arrow :
    map-domain-hom-arrow f g β ~ map-domain-hom-arrow f g α
  htpy-domain-inv-htpy-hom-arrow =
    inv-htpy (htpy-domain-htpy-hom-arrow f g α β H)

  htpy-codomain-inv-htpy-hom-arrow :
    map-codomain-hom-arrow f g β ~ map-codomain-hom-arrow f g α
  htpy-codomain-inv-htpy-hom-arrow =
    inv-htpy (htpy-codomain-htpy-hom-arrow f g α β H)

  coh-inv-htpy-hom-arrow :
    coherence-htpy-hom-arrow f g β α
      ( htpy-domain-inv-htpy-hom-arrow)
      ( htpy-codomain-inv-htpy-hom-arrow)
  coh-inv-htpy-hom-arrow a =
    ( left-whisker-concat
      ( coh-hom-arrow f g β a)
      ( ap-inv g (htpy-domain-htpy-hom-arrow f g α β H a))) 
    ( double-transpose-eq-concat'
      ( coh-hom-arrow f g α a)
      ( htpy-codomain-htpy-hom-arrow f g α β H (f a))
      ( ap g (htpy-domain-htpy-hom-arrow f g α β H a))
      ( coh-hom-arrow f g β a)
      ( inv (coh-htpy-hom-arrow f g α β H a)))

  inv-htpy-hom-arrow : htpy-hom-arrow f g β α
  pr1 inv-htpy-hom-arrow = htpy-domain-inv-htpy-hom-arrow
  pr1 (pr2 inv-htpy-hom-arrow) = htpy-codomain-inv-htpy-hom-arrow
  pr2 (pr2 inv-htpy-hom-arrow) = coh-inv-htpy-hom-arrow
```

### Whiskering of homotopies of morphisms of arrows with respect to composition

#### Left whiskering of homotopies of morphisms of arrows with respect to composition

```agda
module _
  {l1 l2 l3 l4 l5 l6 : Level}
  {A : UU l1} {B : UU l2} {X : UU l3} {Y : UU l4} {U : UU l5} {V : UU l6}
  (f : A  B) (g : X  Y) (h : U  V)
  (γ : hom-arrow g h) (α β : hom-arrow f g) (H : htpy-hom-arrow f g α β)
  where

  htpy-domain-left-whisker-comp-hom-arrow :
    map-domain-comp-hom-arrow f g h γ α ~ map-domain-comp-hom-arrow f g h γ β
  htpy-domain-left-whisker-comp-hom-arrow =
    map-domain-hom-arrow g h γ ·l htpy-domain-htpy-hom-arrow f g α β H

  htpy-codomain-left-whisker-comp-hom-arrow :
    map-codomain-comp-hom-arrow f g h γ α ~
    map-codomain-comp-hom-arrow f g h γ β
  htpy-codomain-left-whisker-comp-hom-arrow =
    map-codomain-hom-arrow g h γ ·l htpy-codomain-htpy-hom-arrow f g α β H

  coh-left-whisker-comp-hom-arrow :
    coherence-htpy-hom-arrow f h
      ( comp-hom-arrow f g h γ α)
      ( comp-hom-arrow f g h γ β)
      ( htpy-domain-left-whisker-comp-hom-arrow)
      ( htpy-codomain-left-whisker-comp-hom-arrow)
  coh-left-whisker-comp-hom-arrow a =
    ( left-whisker-concat-coherence-triangle-identifications'
      ( ap (map-codomain-hom-arrow g h γ) (coh-hom-arrow f g α a))
      ( _)
      ( _)
      ( _)
      ( ( ap
          ( coh-hom-arrow g h γ (map-domain-hom-arrow f g α a) ∙_)
          ( inv
            ( ap-comp h
              ( map-domain-hom-arrow g h γ)
              ( htpy-domain-htpy-hom-arrow f g α β H a)))) 
        ( nat-htpy
          ( coh-hom-arrow g h γ)
          ( htpy-domain-htpy-hom-arrow f g α β H a)))) 
    ( right-whisker-concat-coherence-square-identifications
      ( ap
        ( map-codomain-hom-arrow g h γ)
        ( htpy-codomain-htpy-hom-arrow f g α β H (f a)))
      ( ap (map-codomain-hom-arrow g h γ) (coh-hom-arrow f g α a))
      ( ap (map-codomain-hom-arrow g h γ) (coh-hom-arrow f g β a))
      ( ap
        ( map-codomain-hom-arrow g h γ  g)
        ( htpy-domain-htpy-hom-arrow f g α β H a))
      ( ( ap
          ( ap (map-codomain-hom-arrow g h γ) (coh-hom-arrow f g α a) ∙_)
          ( ap-comp
            ( map-codomain-hom-arrow g h γ)
            ( g)
            ( htpy-domain-htpy-hom-arrow f g α β H a))) 
        ( map-coherence-square-identifications
          ( map-codomain-hom-arrow g h γ)
          ( htpy-codomain-htpy-hom-arrow f g α β H (f a))
          ( coh-hom-arrow f g α a)
          ( coh-hom-arrow f g β a)
          ( ap g (htpy-domain-htpy-hom-arrow f g α β H a))
          ( coh-htpy-hom-arrow f g α β H a)))
      ( coh-hom-arrow g h γ (map-domain-hom-arrow f g β a)))

  left-whisker-comp-hom-arrow :
    htpy-hom-arrow f h
      ( comp-hom-arrow f g h γ α)
      ( comp-hom-arrow f g h γ β)
  pr1 left-whisker-comp-hom-arrow =
    htpy-domain-left-whisker-comp-hom-arrow
  pr1 (pr2 left-whisker-comp-hom-arrow) =
    htpy-codomain-left-whisker-comp-hom-arrow
  pr2 (pr2 left-whisker-comp-hom-arrow) =
    coh-left-whisker-comp-hom-arrow
```

#### Right whiskering of homotopies of morphisms of arrows with respect to composition

```agda
module _
  {l1 l2 l3 l4 l5 l6 : Level}
  {A : UU l1} {B : UU l2} {X : UU l3} {Y : UU l4} {U : UU l5} {V : UU l6}
  (f : A  B) (g : X  Y) (h : U  V)
  (β γ : hom-arrow g h) (H : htpy-hom-arrow g h β γ) (α : hom-arrow f g)
  where

  htpy-domain-right-whisker-comp-hom-arrow :
    map-domain-comp-hom-arrow f g h β α ~ map-domain-comp-hom-arrow f g h γ α
  htpy-domain-right-whisker-comp-hom-arrow =
    htpy-domain-htpy-hom-arrow g h β γ H ·r map-domain-hom-arrow f g α

  htpy-codomain-right-whisker-comp-hom-arrow :
    map-codomain-comp-hom-arrow f g h β α ~
    map-codomain-comp-hom-arrow f g h γ α
  htpy-codomain-right-whisker-comp-hom-arrow =
    htpy-codomain-htpy-hom-arrow g h β γ H ·r map-codomain-hom-arrow f g α

  coh-right-whisker-comp-hom-arrow :
    coherence-htpy-hom-arrow f h
      ( comp-hom-arrow f g h β α)
      ( comp-hom-arrow f g h γ α)
      ( htpy-domain-right-whisker-comp-hom-arrow)
      ( htpy-codomain-right-whisker-comp-hom-arrow)
  coh-right-whisker-comp-hom-arrow a =
    ( left-whisker-concat-coherence-square-identifications
      ( ap (map-codomain-hom-arrow g h β) (coh-hom-arrow f g α a))
      ( htpy-codomain-htpy-hom-arrow g h β γ H
        ( g (map-domain-hom-arrow f g α a)))
      ( coh-hom-arrow g h β (map-domain-hom-arrow f g α a))
      ( coh-hom-arrow g h γ (map-domain-hom-arrow f g α a))
      ( ap h
        ( htpy-domain-htpy-hom-arrow g h β γ H
          ( map-domain-hom-arrow f g α a)))
      ( coh-htpy-hom-arrow g h β γ H (map-domain-hom-arrow f g α a))) 
    ( ( assoc
        ( ap (map-codomain-hom-arrow g h β) (coh-hom-arrow f g α a))
        ( htpy-codomain-htpy-hom-arrow g h β γ H
          ( g (map-domain-hom-arrow f g α a)))
        ( coh-hom-arrow g h γ (map-domain-hom-arrow f g α a))) 
      ( right-whisker-concat-coherence-square-identifications
        ( htpy-codomain-htpy-hom-arrow g h β γ H
          ( map-codomain-hom-arrow f g α (f a)))
        ( ap (map-codomain-hom-arrow g h β) (coh-hom-arrow f g α a))
        ( ap (map-codomain-hom-arrow g h γ) (coh-hom-arrow f g α a))
        ( htpy-codomain-htpy-hom-arrow g h β γ H
          ( g (map-domain-hom-arrow f g α a)))
        ( inv
          ( nat-htpy
            ( htpy-codomain-htpy-hom-arrow g h β γ H)
            ( coh-hom-arrow f g α a)))
        ( coh-hom-arrow g h γ (map-domain-hom-arrow f g α a))))

  right-whisker-comp-hom-arrow :
    htpy-hom-arrow f h
      ( comp-hom-arrow f g h β α)
      ( comp-hom-arrow f g h γ α)
  pr1 right-whisker-comp-hom-arrow =
    htpy-domain-right-whisker-comp-hom-arrow
  pr1 (pr2 right-whisker-comp-hom-arrow) =
    htpy-codomain-right-whisker-comp-hom-arrow
  pr2 (pr2 right-whisker-comp-hom-arrow) =
    coh-right-whisker-comp-hom-arrow
```

## Properties

### Homotopies of morphisms of arrows characterize equality of morphisms of arrows

```agda
module _
  {l1 l2 l3 l4 : Level} {A : UU l1} {B : UU l2} {X : UU l3} {Y : UU l4}
  (f : A  B) (g : X  Y) (α : hom-arrow f g)
  where

  is-torsorial-htpy-hom-arrow :
    is-torsorial (htpy-hom-arrow f g α)
  is-torsorial-htpy-hom-arrow =
    is-torsorial-Eq-structure
      ( is-torsorial-htpy (map-domain-hom-arrow f g α))
      ( map-domain-hom-arrow f g α , refl-htpy)
      ( is-torsorial-Eq-structure
        ( is-torsorial-htpy (map-codomain-hom-arrow f g α))
        ( map-codomain-hom-arrow f g α , refl-htpy)
        ( is-torsorial-htpy (coh-hom-arrow f g α ∙h refl-htpy)))

  htpy-eq-hom-arrow : (β : hom-arrow f g)  (α  β)  htpy-hom-arrow f g α β
  htpy-eq-hom-arrow β refl = refl-htpy-hom-arrow f g α

  is-equiv-htpy-eq-hom-arrow :
    (β : hom-arrow f g)  is-equiv (htpy-eq-hom-arrow β)
  is-equiv-htpy-eq-hom-arrow =
    fundamental-theorem-id is-torsorial-htpy-hom-arrow htpy-eq-hom-arrow

  extensionality-hom-arrow :
    (β : hom-arrow f g)  (α  β)  htpy-hom-arrow f g α β
  pr1 (extensionality-hom-arrow β) = htpy-eq-hom-arrow β
  pr2 (extensionality-hom-arrow β) = is-equiv-htpy-eq-hom-arrow β

  eq-htpy-hom-arrow :
    (β : hom-arrow f g)  htpy-hom-arrow f g α β  α  β
  eq-htpy-hom-arrow β = map-inv-equiv (extensionality-hom-arrow β)
```

### Homotopies of morphisms of arrows give homotopies of their associated cones

```agda
module _
  {l1 l2 l3 l4 : Level} {A : UU l1} {B : UU l2} {X : UU l3} {Y : UU l4}
  (f : A  B) (g : X  Y)
      (α β : hom-arrow f g)
  where

  coh-htpy-parallell-cone-htpy-hom-arrow :
    (H : htpy-hom-arrow f g α β) 
    coherence-htpy-parallel-cone
      ( htpy-codomain-htpy-hom-arrow f g α β H)
      ( refl-htpy' g)
      ( cone-hom-arrow f g α)
      ( cone-hom-arrow f g β)
      ( refl-htpy)
      ( htpy-domain-htpy-hom-arrow f g α β H)
  coh-htpy-parallell-cone-htpy-hom-arrow H =
    ( ap-concat-htpy (coh-hom-arrow f g α) right-unit-htpy) ∙h
    ( coh-htpy-hom-arrow f g α β H)

  htpy-parallell-cone-htpy-hom-arrow :
    (H : htpy-hom-arrow f g α β) 
    htpy-parallel-cone
      ( htpy-codomain-htpy-hom-arrow f g α β H)
      ( refl-htpy' g)
      ( cone-hom-arrow f g α)
      ( cone-hom-arrow f g β)
  htpy-parallell-cone-htpy-hom-arrow H =
    ( refl-htpy ,
      htpy-domain-htpy-hom-arrow f g α β H ,
      coh-htpy-parallell-cone-htpy-hom-arrow H)
```

### Associativity of composition of morphisms of arrows

Consider a commuting diagram of the form

```text
        α₀       β₀       γ₀
    A -----> X -----> U -----> K
    |        |        |        |
  f |   α  g |   β  h |   γ    | i
    ∨        ∨        ∨        ∨
    B -----> Y -----> V -----> L
        α₁       β₁       γ₁
```

Then associativity of composition of morphisms of arrows follows directly from
associativity of horizontal pasting of commutative squares of maps.

```agda
module _
  {l1 l2 l3 l4 l5 l6 l7 l8 : Level}
  {A : UU l1} {B : UU l2} {X : UU l3} {Y : UU l4} {U : UU l5} {V : UU l6}
  {K : UU l7} {L : UU l8} (f : A  B) (g : X  Y) (h : U  V) (i : K  L)
  (γ : hom-arrow h i) (β : hom-arrow g h) (α : hom-arrow f g)
  where

  assoc-comp-hom-arrow :
    htpy-hom-arrow f i
      ( comp-hom-arrow f g i (comp-hom-arrow g h i γ β) α)
      ( comp-hom-arrow f h i γ (comp-hom-arrow f g h β α))
  pr1 assoc-comp-hom-arrow = refl-htpy
  pr1 (pr2 assoc-comp-hom-arrow) = refl-htpy
  pr2 (pr2 assoc-comp-hom-arrow) =
    ( right-unit-htpy) ∙h
    ( inv-htpy
      ( assoc-pasting-horizontal-coherence-square-maps
        ( map-domain-hom-arrow f g α)
        ( map-domain-hom-arrow g h β)
        ( map-domain-hom-arrow h i γ)
        ( f)
        ( g)
        ( h)
        ( i)
        ( map-codomain-hom-arrow f g α)
        ( map-codomain-hom-arrow g h β)
        ( map-codomain-hom-arrow h i γ)
        ( coh-hom-arrow f g α)
        ( coh-hom-arrow g h β)
        ( coh-hom-arrow h i γ)))

  inv-assoc-comp-hom-arrow :
    htpy-hom-arrow f i
      ( comp-hom-arrow f h i γ (comp-hom-arrow f g h β α))
      ( comp-hom-arrow f g i (comp-hom-arrow g h i γ β) α)
  pr1 inv-assoc-comp-hom-arrow = refl-htpy
  pr1 (pr2 inv-assoc-comp-hom-arrow) = refl-htpy
  pr2 (pr2 inv-assoc-comp-hom-arrow) =
    ( right-unit-htpy) ∙h
    ( assoc-pasting-horizontal-coherence-square-maps
      ( map-domain-hom-arrow f g α)
      ( map-domain-hom-arrow g h β)
      ( map-domain-hom-arrow h i γ)
      ( f)
      ( g)
      ( h)
      ( i)
      ( map-codomain-hom-arrow f g α)
      ( map-codomain-hom-arrow g h β)
      ( map-codomain-hom-arrow h i γ)
      ( coh-hom-arrow f g α)
      ( coh-hom-arrow g h β)
      ( coh-hom-arrow h i γ))
```

### The left unit law for composition of morphisms of arrows

```agda
module _
  {l1 l2 l3 l4 : Level} {A : UU l1} {B : UU l2} {X : UU l3} {Y : UU l4}
  (f : A  B) (g : X  Y) (α : hom-arrow f g)
  where

  left-unit-law-comp-hom-arrow :
    htpy-hom-arrow f g
      ( comp-hom-arrow f g g id-hom-arrow α)
      ( α)
  pr1 left-unit-law-comp-hom-arrow = refl-htpy
  pr1 (pr2 left-unit-law-comp-hom-arrow) = refl-htpy
  pr2 (pr2 left-unit-law-comp-hom-arrow) =
    ( right-unit-htpy) ∙h
    ( right-unit-law-pasting-horizontal-coherence-square-maps
      ( map-domain-hom-arrow f g α)
      ( f)
      ( g)
      ( map-codomain-hom-arrow f g α)
      ( coh-hom-arrow f g α))
```

### The right unit law for composition of morphisms of arrows

```agda
module _
  {l1 l2 l3 l4 : Level} {A : UU l1} {B : UU l2} {X : UU l3} {Y : UU l4}
  (f : A  B) (g : X  Y) (α : hom-arrow f g)
  where

  right-unit-law-comp-hom-arrow :
    htpy-hom-arrow f g
      ( comp-hom-arrow f f g α id-hom-arrow)
      ( α)
  pr1 right-unit-law-comp-hom-arrow = refl-htpy
  pr1 (pr2 right-unit-law-comp-hom-arrow) = refl-htpy
  pr2 (pr2 right-unit-law-comp-hom-arrow) = right-unit-htpy
```