Whiskering homotopies
Content created by Egbert Rijke, Fredrik Bakke and Vojtěch Štěpančík.
Created on 2023-09-12.
Last modified on 2023-12-08.
module foundation-core.whiskering-homotopies where
Imports
open import foundation.action-on-identifications-functions open import foundation.universe-levels open import foundation-core.function-types open import foundation-core.homotopies open import foundation-core.identity-types
Idea
There are two whiskering operations on homotopies. The left whiskering operation assumes a diagram of the form
f
-----> h
A -----> B -----> C
g
and is defined to be a function h ·l_ : (f ~ g) → (h ∘ f ~ h ∘ g)
. The right
whiskering operation assumes a diagram of the form
g
f ----->
A -----> B -----> C
h
and is defined to be a function _·r f : (g ~ h) → (g ∘ f ~ h ∘ f)
.
Note: The infix whiskering operators _·l_
and _·r_
use the
middle dot ·
(agda-input: \cdot
\centerdot
), as opposed to the infix homotopy concatenation operator _∙h_
which uses the bullet operator ∙
(agda-input:
\.
). If these look the same in your editor, we suggest that you change your
font. For more details, see How to install.
Definitions
Left whiskering of homotopies
module _ {l1 l2 l3 : Level} {A : UU l1} {B : A → UU l2} {C : A → UU l3} where htpy-left-whisk : (h : {x : A} → B x → C x) {f g : (x : A) → B x} → f ~ g → h ∘ f ~ h ∘ g htpy-left-whisk h H x = ap h (H x) infixr 17 _·l_ _·l_ = htpy-left-whisk
Right whiskering of homotopies
module _ {l1 l2 l3 : Level} {A : UU l1} {B : A → UU l2} {C : (x : A) → B x → UU l3} where htpy-right-whisk : {g h : {x : A} (y : B x) → C x y} (H : {x : A} → g {x} ~ h {x}) (f : (x : A) → B x) → g ∘ f ~ h ∘ f htpy-right-whisk H f x = H (f x) infixl 16 _·r_ _·r_ = htpy-right-whisk
Horizontal composition of homotopies
module _ {l1 l2 l3 : Level} {A : UU l1} {B : A → UU l2} {C : A → UU l3} {f f' : (x : A) → B x} {g g' : {x : A} → B x → C x} where htpy-comp-horizontal : f ~ f' → ({x : A} → g {x} ~ g' {x}) → g ∘ f ~ g' ∘ f' htpy-comp-horizontal F G = (g ·l F) ∙h (G ·r f') htpy-comp-horizontal' : f ~ f' → ({x : A} → g {x} ~ g' {x}) → g ∘ f ~ g' ∘ f' htpy-comp-horizontal' F G = (G ·r f) ∙h (g' ·l F)
Properties
Unit laws for whiskering homotopies
The identity map is the identity element for whiskerings from the function side, and the reflexivity homotopy is the identity element for whiskerings from the homotopy side.
module _ {l1 l2 : Level} {A : UU l1} {B : A → UU l2} where left-unit-law-left-whisk-htpy : {f f' : (x : A) → B x} → (H : f ~ f') → id ·l H ~ H left-unit-law-left-whisk-htpy H x = ap-id (H x) module _ {l1 l2 l3 : Level} {A : UU l1} {B : A → UU l2} {C : A → UU l3} where right-unit-law-left-whisk-htpy : {f : (x : A) → B x} (g : {x : A} → B x → C x) → g ·l refl-htpy {f = f} ~ refl-htpy right-unit-law-left-whisk-htpy g = refl-htpy module _ {l1 l2 l3 : Level} {A : UU l1} {B : A → UU l2} {C : (x : A) → B x → UU l3} where left-unit-law-right-whisk-htpy : {g : {x : A} (y : B x) → C x y} (f : (x : A) → B x) → refl-htpy {f = g} ·r f ~ refl-htpy left-unit-law-right-whisk-htpy f = refl-htpy module _ {l1 l2 : Level} {A : UU l1} {B : A → UU l2} where right-unit-law-right-whisk-htpy : {f f' : (x : A) → B x} → (H : f ~ f') → H ·r id ~ H right-unit-law-right-whisk-htpy H = refl-htpy
Laws for whiskering an inverted homotopy
module _ {l1 l2 l3 : Level} {A : UU l1} {B : A → UU l2} {C : A → UU l3} {f f' : (x : A) → B x} (g : {x : A} → B x → C x) (H : f ~ f') where left-whisk-inv-htpy : g ·l (inv-htpy H) ~ inv-htpy (g ·l H) left-whisk-inv-htpy x = ap-inv g (H x) inv-htpy-left-whisk-inv-htpy : inv-htpy (g ·l H) ~ g ·l (inv-htpy H) inv-htpy-left-whisk-inv-htpy = inv-htpy left-whisk-inv-htpy module _ {l1 l2 l3 : Level} {A : UU l1} {B : A → UU l2} {C : (x : A) → B x → UU l3} {g g' : {x : A} (y : B x) → C x y} (H : {x : A} → g {x} ~ g' {x}) (f : (x : A) → B x) where right-whisk-inv-htpy : inv-htpy H ·r f ~ inv-htpy (H ·r f) right-whisk-inv-htpy = refl-htpy inv-htpy-right-whisk-inv-htpy : inv-htpy H ·r f ~ inv-htpy (H ·r f) inv-htpy-right-whisk-inv-htpy = inv-htpy right-whisk-inv-htpy
Distributivity of whiskering over composition of homotopies
module _ {l1 l2 l3 : Level} {A : UU l1} {B : A → UU l2} {C : A → UU l3} where distributive-left-whisk-concat-htpy : { f g h : (x : A) → B x} (k : {x : A} → B x → C x) → ( H : f ~ g) (K : g ~ h) → k ·l (H ∙h K) ~ (k ·l H) ∙h (k ·l K) distributive-left-whisk-concat-htpy k H K a = ap-concat k (H a) (K a) module _ {l1 l2 l3 : Level} {A : UU l1} {B : A → UU l2} {C : (x : A) → B x → UU l3} (k : (x : A) → B x) {f g h : {x : A} (y : B x) → C x y} (H : {x : A} → f {x} ~ g {x}) (K : {x : A} → g {x} ~ h {x}) where distributive-right-whisk-concat-htpy : (H ∙h K) ·r k ~ (H ·r k) ∙h (K ·r k) distributive-right-whisk-concat-htpy = refl-htpy
Associativity of whiskering and function composition
module _ {l1 l2 l3 l4 : Level} {A : UU l1} {B : A → UU l2} {C : A → UU l3} {D : A → UU l4} where associative-left-whisk-comp : ( k : {x : A} → C x → D x) (h : {x : A} → B x → C x) {f g : (x : A) → B x} ( H : f ~ g) → k ·l (h ·l H) ~ (k ∘ h) ·l H associative-left-whisk-comp k h H x = inv (ap-comp k h (H x)) module _ { l1 l2 l3 l4 : Level} { A : UU l1} {B : A → UU l2} {C : (x : A) → B x → UU l3} { D : (x : A) (y : B x) (z : C x y) → UU l4} { f g : {x : A} {y : B x} (z : C x y) → D x y z} ( h : {x : A} (y : B x) → C x y) (k : (x : A) → B x) ( H : {x : A} {y : B x} → f {x} {y} ~ g {x} {y}) where associative-right-whisk-comp : (H ·r h) ·r k ~ H ·r (h ∘ k) associative-right-whisk-comp = refl-htpy
A coherence for homotopies to the identity function
module _ {l : Level} {A : UU l} {f : A → A} (H : f ~ id) where coh-htpy-id : H ·r f ~ f ·l H coh-htpy-id x = is-injective-concat' (H x) (nat-htpy-id H (H x)) inv-htpy-coh-htpy-id : f ·l H ~ H ·r f inv-htpy-coh-htpy-id = inv-htpy coh-htpy-id
Whiskering whiskerings
module _ {l1 l2 l3 : Level} {A : UU l1} {B : A → UU l2} {C : A → UU l3} {f g : (x : A) → B x} where ap-left-whisk-htpy : (h : {x : A} → B x → C x) {H H' : f ~ g} (α : H ~ H') → h ·l H ~ h ·l H' ap-left-whisk-htpy h α = (ap h) ·l α 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 ap-right-whisk-htpy : (α : {x : A} → H {x} ~ H' {x}) (h : (x : A) → B x) → H ·r h ~ H' ·r h ap-right-whisk-htpy α h = α ·r h
The left and right whiskering operations commute
We have the coherence
(h ·l H) ·r h' ~ h ·l (H ·r h')
and, in fact, this equation holds definitionally.
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 y} where coherence-left-right-whisk-htpy : (h : {x : A} {y : B x} → C y → D y) (H : {x : A} → f {x} ~ g {x}) (h' : (x : A) → B x) → (h ·l H) ·r h' ~ h ·l (H ·r h') coherence-left-right-whisk-htpy h H h' = refl-htpy
Recent changes
- 2023-12-08. Fredrik Bakke. Improve generality of homotopy whiskering operations (#976).
- 2023-12-05. Vojtěch Štěpančík. Functoriality of sequential colimits (#919).
- 2023-09-12. Egbert Rijke. Factoring out whiskering (#756).