# Whiskering higher homotopies with respect to composition
```agda
module foundation.whiskering-higher-homotopies-composition where
```
<details><summary>Imports</summary>
```agda
open import foundation.action-on-identifications-functions
open import foundation.universe-levels
open import foundation.whiskering-homotopies-composition
open import foundation-core.homotopies
```
</details>
## Idea
Consider two dependent functions `f g : (x : A) → B x` equipped with two
[homotopies](foundation-core.homotopies.md) `H H' : f ~ g`, and consider a
family of maps `h : (x : A) → B x → C x`. Then we obtain a map
```text
α ↦ ap h ·l α : H ~ H' → h ·l H ~ h ·l H'
```
This operation is called the
{{#concept "left whiskering" Disambiguation="`2`-homotopies with respect to composition" Agda=left-whisker-comp²}}.
Alternatively the left whiskering operation of `2`-homotopies can be defined
using the
[action on higher identifications of functions](foundation.action-on-higher-identifications-functions.md)
by
```text
α x ↦ ap² h (α x).
```
Similarly, the
{{#concept "right whiskering" Disambiguation="2-homotopies with respect to composition" Agda=right-whisker-comp²}}
is defined to be the operation
```text
(H ~ H') → (h : (x : A) → B x) → (H ·r h ~ H' ·r h)
```
given by
```text
α h ↦ α ·r h,
```
for any pair of homotopies `H H' : f ~ g`, where
`f g : (x : A) (y : B x) → C x y`.
## Definitions
### Left whiskering higher homotopies
```agda
module _
{l1 l2 l3 : Level} {A : UU l1} {B : A → UU l2} {C : A → UU l3}
{f g : (x : A) → B x}
where
left-whisker-comp² :
(h : {x : A} → B x → C x) {H H' : f ~ g} (α : H ~ H') → h ·l H ~ h ·l H'
left-whisker-comp² h α = ap h ·l α
```
### Right whiskering higher homotopies
```agda
module _
{l1 l2 l3 : Level} {A : UU l1} {B : A → UU l2} {C : (x : A) → B x → UU l3}
{f g : {x : A} (y : B x) → C x y} {H H' : {x : A} → f {x} ~ g {x}}
where
right-whisker-comp² :
(α : {x : A} → H {x} ~ H' {x}) (h : (x : A) → B x) → H ·r h ~ H' ·r h
right-whisker-comp² α h = α ·r h
```
### Double whiskering higher homotopies
```agda
module _
{l1 l2 l3 l4 : Level} {A : UU l1} {B : A → UU l2}
{C : (x : A) → B x → UU l3} {D : (x : A) → B x → UU l4}
{f g : {x : A} (y : B x) → C x y} {H H' : {x : A} → f {x} ~ g {x}}
where
double-whisker-comp² :
(left : {x : A} {y : B x} → C x y → D x y)
(α : {x : A} → H {x} ~ H' {x})
(right : (x : A) → B x) →
left ·l H ·r right ~ left ·l H' ·r right
double-whisker-comp² left α right = double-whisker-comp (ap left) α right
```