# Whiskering homotopies with respect to concatenation ```agda module foundation-core.whiskering-homotopies-concatenation where ``` <details><summary>Imports</summary> ```agda open import foundation.universe-levels open import foundation.whiskering-operations open import foundation-core.homotopies open import foundation-core.whiskering-identifications-concatenation ``` </details> ## Idea Consider a homotopy `H : f ~ g` and a homotopy `K : I ~ J` between two homotopies `I J : g ~ f`. The {{#concept "left whiskering" Disambiguation="homotopies with respect to concatenation" Agda=left-whisker-concat-htpy}} of `H` and `K` is a homotopy `H ∙h I ~ H ∙h J`. In other words, left whiskering of homotopies with respect to concatenation is a [whiskering operation](foundation.whiskering-operations.md) ```text (H : f ~ g) {I J : g ~ h} → I ~ J → H ∙h I ~ H ∙h K. ``` Similarly, we introduce {{#concept "right whiskering" Disambiguation="homotopies with respect to concatenation" Agda=right-whisker-concat-htpy}} to be an operation ```text {H I : f ~ g} → H ~ I → (J : g ~ h) → H ∙h J ~ I ∙h J. ``` ## Definitions ### Left whiskering of homotopies with respect to concatenation Left whiskering of homotopies with respect to concatenation is an operation ```text (H : f ~ g) {I J : g ~ h} → I ~ J → H ∙h I ~ H ∙h J. ``` We implement the left whiskering operation of homotopies with respect to concatenation as an instance of a general left whiskering operation. ```agda module _ {l1 l2 : Level} {A : UU l1} {B : A → UU l2} where left-whisker-concat-htpy : left-whiskering-operation ((x : A) → B x) (_~_) (_∙h_) (_~_) left-whisker-concat-htpy H K x = left-whisker-concat (H x) (K x) left-unwhisker-concat-htpy : {f g h : (x : A) → B x} (H : f ~ g) {I J : g ~ h} → H ∙h I ~ H ∙h J → I ~ J left-unwhisker-concat-htpy H K x = left-unwhisker-concat (H x) (K x) ``` ### Right whiskering of homotopies with respect to concatenation Right whiskering of homotopies with respect to concatenation is an operation ```text {H I : f ~ g} → H ~ I → (J : g ~ h) → H ∙h J ~ I ∙h J. ``` We implement the right whiskering operation of homotopies with respect to concatenation as an instance of a general right whiskering operation. ```agda module _ {l1 l2 : Level} {A : UU l1} {B : A → UU l2} where right-whisker-concat-htpy : right-whiskering-operation ((x : A) → B x) (_~_) (_∙h_) (_~_) right-whisker-concat-htpy K J x = right-whisker-concat (K x) (J x) right-unwhisker-concat-htpy : {f g h : (x : A) → B x} {H I : f ~ g} (J : g ~ h) → H ∙h J ~ I ∙h J → H ~ I right-unwhisker-concat-htpy H K x = right-unwhisker-concat (H x) (K x) ``` ## Properties ### The unit and absorption laws for left whiskering of homotopies with respect to concatenation ```agda module _ {l1 l2 : Level} {A : UU l1} {B : A → UU l2} where left-unit-law-left-whisker-concat-htpy : {f g : (x : A) → B x} {I J : f ~ g} (K : I ~ J) → left-whisker-concat-htpy refl-htpy K ~ K left-unit-law-left-whisker-concat-htpy K x = left-unit-law-left-whisker-concat (K x) right-absorption-law-left-whisker-concat-htpy : {f g h : (x : A) → B x} (H : f ~ g) {I : g ~ h} → left-whisker-concat-htpy H (refl-htpy' I) ~ refl-htpy right-absorption-law-left-whisker-concat-htpy H x = right-absorption-law-left-whisker-concat (H x) _ ``` ### The unit and absorption laws for right whiskering of homotopies with respect to concatenation ```agda module _ {l1 l2 : Level} {A : UU l1} {B : A → UU l2} where left-absorption-law-right-whisker-concat-htpy : {f g h : (x : A) → B x} {H : f ~ g} (J : g ~ h) → right-whisker-concat-htpy (refl-htpy' H) J ~ refl-htpy left-absorption-law-right-whisker-concat-htpy J x = left-absorption-law-right-whisker-concat _ (J x) right-unit-law-right-whisker-concat-htpy : {f g : (x : A) → B x} {I J : f ~ g} (K : I ~ J) → right-unit-htpy ∙h K ~ right-whisker-concat-htpy K refl-htpy ∙h right-unit-htpy right-unit-law-right-whisker-concat-htpy K x = right-unit-law-right-whisker-concat (K x) ```