# Whiskering identifications with respect to concatenation

```agda
module foundation.whiskering-identifications-concatenation where

open import foundation-core.whiskering-identifications-concatenation public
```

<details><summary>Imports</summary>

```agda
open import foundation.action-on-identifications-functions
open import foundation.dependent-pair-types
open import foundation.identity-types
open import foundation.universe-levels
open import foundation.whiskering-operations

open import foundation-core.equivalences
open import foundation-core.function-types
open import foundation-core.homotopies
```

</details>

## Idea

Consider two [identifications](foundation-core.identity-types.md) `p q : x = y`
in a type `A`. The whiskering operations are operations that take
identifications `p = q` to identifications `r ∙ p = r ∙ q` or to
identifications `p ∙ r = q ∙ r`.

The
{{#concept "left whiskering" Disambiguation="identifications" Agda=left-whisker-concat}}
operation takes an identification `r : z = x` and an identification `p = q` to
an identification `r ∙ p = r ∙ q`. Similarly, the
{{#concept "right whiskering" Disambiguation="identifications" Agda=right-whisker-concat}}
operation takes an identification `r : y = z` and an identification `p = q` to
an identification `p ∙ r = q ∙ r`.

The whiskering operations can be defined by the
[acion on identifications](foundation.action-on-identifications-functions.md) of
concatenation. Since concatenation on either side is an
[equivalence](foundation-core.equivalences.md), it follows that the whiskering
operations are equivalences.

## Properties

### Left whiskering of identifications is an equivalence

```agda
module _
  {l : Level} {A : UU l} {x y z : A} (p : x  y) {q q' : y  z}
  where

  is-equiv-left-whisker-concat :
    is-equiv (left-whisker-concat p {q} {q'})
  is-equiv-left-whisker-concat =
    is-emb-is-equiv (is-equiv-concat p z) q q'

  equiv-left-whisker-concat : (q  q')  (p  q  p  q')
  pr1 equiv-left-whisker-concat =
    left-whisker-concat p
  pr2 equiv-left-whisker-concat =
    is-equiv-left-whisker-concat
```

### Right whiskering of identification is an equivalence

```agda
module _
  {l : Level} {A : UU l} {x y z : A} {p p' : x  y} (q : y  z)
  where

  is-equiv-right-whisker-concat :
    is-equiv  (α : p  p')  right-whisker-concat α q)
  is-equiv-right-whisker-concat =
    is-emb-is-equiv (is-equiv-concat' x q) p p'

  equiv-right-whisker-concat : (p  p')  (p  q  p'  q)
  pr1 equiv-right-whisker-concat α =
    right-whisker-concat α q
  pr2 equiv-right-whisker-concat =
    is-equiv-right-whisker-concat
```