Composition algebra
Content created by Fredrik Bakke and Egbert Rijke.
Created on 2024-01-14.
Last modified on 2024-04-25.
module foundation.composition-algebra where
Imports
open import foundation.action-on-identifications-functions open import foundation.function-extensionality open import foundation.homotopy-induction open import foundation.postcomposition-functions open import foundation.precomposition-functions open import foundation.universe-levels open import foundation.whiskering-higher-homotopies-composition open import foundation.whiskering-homotopies-composition open import foundation-core.function-types open import foundation-core.homotopies open import foundation-core.identity-types
Idea
Given a homotopy of maps H : f ~ g
, there are
standard witnesses
htpy-precomp H S : precomp f S ~ precomp g S
and
htpy-postcomp S H : postcomp S f ~ postcomp S g.
This file records their interactions with eachother and different operations on homotopies.
Properties
Precomposition distributes over whiskerings of homotopies
The operation htpy-precomp
distributes over
whiskerings of homotopies
contravariantly. Given a homotopy H : f ~ g
and a suitable map h
the
homotopy constructed as the whiskering
- ∘ f
-----------------> - ∘ h
(B → S) htpy-precomp H S (A → S) -----> (C → S)
----------------->
- ∘ g
is homotopic to the homotopy
- ∘ (f ∘ h)
-------------------------->
(B → S) htpy-precomp (H ·r h) S (C → S).
-------------------------->
- ∘ (g ∘ h)
module _ {l1 l2 l3 l4 : Level} {A : UU l1} {B : UU l2} {C : UU l3} {f g : A → B} where inv-distributive-htpy-precomp-right-whisker : (h : C → A) (H : f ~ g) (S : UU l4) → precomp h S ·l htpy-precomp H S ~ htpy-precomp (H ·r h) S inv-distributive-htpy-precomp-right-whisker h H S i = compute-eq-htpy-ap-precomp h (i ·l H) distributive-htpy-precomp-right-whisker : (h : C → A) (H : f ~ g) (S : UU l4) → htpy-precomp (H ·r h) S ~ precomp h S ·l htpy-precomp H S distributive-htpy-precomp-right-whisker h H S = inv-htpy (inv-distributive-htpy-precomp-right-whisker h H S)
Similarly, the homotopy given by the whiskering
- ∘ f
- ∘ h ----------------->
(C → S) -----> (B → S) htpy-precomp H S (A → S)
----------------->
- ∘ g
is homotopic to the homotopy
- ∘ (h ∘ f)
-------------------------->
(C → S) htpy-precomp (h · l H) S (A → S).
-------------------------->
- ∘ (h ∘ g)
module _ {l1 l2 l3 l4 : Level} {A : UU l1} {B : UU l2} {C : UU l3} {f g : A → B} where inv-distributive-htpy-precomp-left-whisker : (h : B → C) (H : f ~ g) (S : UU l4) → htpy-precomp H S ·r precomp h S ~ htpy-precomp (h ·l H) S inv-distributive-htpy-precomp-left-whisker h H S i = ap eq-htpy (eq-htpy (ap-comp i h ∘ H)) distributive-htpy-precomp-left-whisker : (h : B → C) (H : f ~ g) (S : UU l4) → htpy-precomp (h ·l H) S ~ htpy-precomp H S ·r precomp h S distributive-htpy-precomp-left-whisker h H S = inv-htpy (inv-distributive-htpy-precomp-left-whisker h H S)
Precomposition distributes over concatenations of homotopies
module _ {l1 l2 l3 : Level} {A : UU l1} {B : UU l2} {f g h : A → B} where distributive-htpy-precomp-concat-htpy : (H : f ~ g) (K : g ~ h) (S : UU l3) → htpy-precomp (H ∙h K) S ~ htpy-precomp H S ∙h htpy-precomp K S distributive-htpy-precomp-concat-htpy H K S i = ( ap eq-htpy (eq-htpy (distributive-left-whisker-comp-concat i H K))) ∙ ( eq-htpy-concat-htpy (i ·l H) (i ·l K))
Postcomposition distributes over whiskerings of homotopies
Given a homotopy H : f ~ g
and a suitable map h
the homotopy given by the
whiskering
f ∘ –
h ∘ - ------------------>
(S → C) -----> (S → B) htpy-postcomp S H (S → A)
------------------>
g ∘ -
is homotopic to the homotopy
(f ∘ h) ∘ -
-------------------------->
(S → C) htpy-postcomp S (H ·r h) (S → A).
-------------------------->
(g ∘ h) ∘ -
In fact, they are syntactically equal.
module _ {l1 l2 l3 l4 : Level} {A : UU l1} {B : UU l2} {C : UU l3} {f g : A → B} where inv-distributive-htpy-postcomp-right-whisker : (h : C → A) (H : f ~ g) (S : UU l4) → htpy-postcomp S (H ·r h) ~ htpy-postcomp S H ·r postcomp S h inv-distributive-htpy-postcomp-right-whisker h H S = refl-htpy distributive-htpy-postcomp-right-whisker : (h : C → A) (H : f ~ g) (S : UU l4) → htpy-postcomp S H ·r postcomp S h ~ htpy-postcomp S (H ·r h) distributive-htpy-postcomp-right-whisker h H S = refl-htpy
Similarly, the homotopy given by the whiskering
f ∘ -
-----------------> h ∘ -
(S → A) htpy-postcomp S H (S → B) -----> (S → C)
----------------->
g ∘ -
is homotopic to the homotopy
(h ∘ f) ∘ -
-------------------------->
(S → A) htpy-postcomp S (h ·l H) (S → C).
-------------------------->
(h ∘ g) ∘ -
module _ {l1 l2 l3 l4 : Level} {A : UU l1} {B : UU l2} {C : UU l3} {f g : A → B} where inv-distributive-htpy-postcomp-left-whisker : (h : B → C) (H : f ~ g) (S : UU l4) → postcomp S h ·l htpy-postcomp S H ~ htpy-postcomp S (h ·l H) inv-distributive-htpy-postcomp-left-whisker h H S i = compute-eq-htpy-ap-postcomp h (H ·r i) distributive-htpy-postcomp-left-whisker : (h : B → C) (H : f ~ g) (S : UU l4) → htpy-postcomp S (h ·l H) ~ postcomp S h ·l htpy-postcomp S H distributive-htpy-postcomp-left-whisker h H S = inv-htpy (inv-distributive-htpy-postcomp-left-whisker h H S)
Postcomposition distributes over concatenations of homotopies
module _ {l1 l2 l3 : Level} {A : UU l1} {B : UU l2} {f g h : A → B} where distributive-htpy-postcomp-concat-htpy : (H : f ~ g) (K : g ~ h) (S : UU l3) → htpy-postcomp S (H ∙h K) ~ htpy-postcomp S H ∙h htpy-postcomp S K distributive-htpy-postcomp-concat-htpy H K S i = ( ap eq-htpy (eq-htpy (distributive-right-whisker-comp-concat i H K))) ∙ ( eq-htpy-concat-htpy (H ·r i) (K ·r i))
The actions of precomposition and postcomposition on homotopies commute
Given homotopies F : f ~ f'
and G : g ~ g'
, we have a commuting square of
homotopies
postcomp A g ·l htpy-precomp F X
(g ∘ - ∘ f) ---------------------------------> (g ∘ - ∘ f')
| |
| |
| |
precomp f Y ·l htpy-postcomp B G htpy-postcomp A G ·r precomp f' X
| |
| |
∨ ∨
(g' ∘ - ∘ f) --------------------------------> (g' ∘ - ∘ f').
htpy-precomp F Y ·r postcomp B g'
module _ {l1 l2 l3 l4 : Level} {A : UU l1} {B : UU l2} {X : UU l3} {Y : UU l4} where commutative-postcomp-htpy-precomp : {f f' : A → B} (g : X → Y) (F : f ~ f') → htpy-precomp F Y ·r postcomp B g ~ postcomp A g ·l htpy-precomp F X commutative-postcomp-htpy-precomp {f} g = ind-htpy f ( λ f' F → htpy-precomp F Y ·r postcomp B g ~ postcomp A g ·l htpy-precomp F X) ( ( right-whisker-comp² ( compute-htpy-precomp-refl-htpy f Y) ( postcomp B g)) ∙h ( inv-htpy ( left-whisker-comp² ( postcomp A g) ( compute-htpy-precomp-refl-htpy f X)))) commutative-precomp-htpy-postcomp : (f : A → B) {g g' : X → Y} (G : g ~ g') → htpy-postcomp A G ·r precomp f X ~ precomp f Y ·l htpy-postcomp B G commutative-precomp-htpy-postcomp f {g} = ind-htpy g ( λ g' G → htpy-postcomp A G ·r precomp f X ~ precomp f Y ·l htpy-postcomp B G) ( ( right-whisker-comp² ( compute-htpy-postcomp-refl-htpy A g) ( precomp f X)) ∙h ( inv-htpy ( left-whisker-comp² ( precomp f Y) ( compute-htpy-postcomp-refl-htpy B g)))) module _ {l1 l2 l3 l4 : Level} {A : UU l1} {B : UU l2} {X : UU l3} {Y : UU l4} {f f' : A → B} {g g' : X → Y} where commutative-htpy-postcomp-htpy-precomp : (F : f ~ f') (G : g ~ g') → ( postcomp A g ·l htpy-precomp F X ∙h htpy-postcomp A G ·r precomp f' X) ~ ( precomp f Y ·l htpy-postcomp B G ∙h htpy-precomp F Y ·r postcomp B g') commutative-htpy-postcomp-htpy-precomp F = ind-htpy g ( λ g' G → ( postcomp A g ·l htpy-precomp F X ∙h htpy-postcomp A G ·r precomp f' X) ~ ( precomp f Y ·l htpy-postcomp B G ∙h htpy-precomp F Y ·r postcomp B g')) ( ( ap-concat-htpy ( postcomp A g ·l htpy-precomp F X) ( right-whisker-comp² ( compute-htpy-postcomp-refl-htpy A g) ( precomp f' X))) ∙h ( right-unit-htpy) ∙h ( inv-htpy (commutative-postcomp-htpy-precomp g F)) ∙h ( ap-concat-htpy' ( htpy-precomp F Y ·r postcomp B g) ( left-whisker-comp² ( precomp f Y) ( inv-htpy (compute-htpy-postcomp-refl-htpy B g)))))
Recent changes
- 2024-04-25. Fredrik Bakke. chore: Fix arrowheads in character diagrams (#1124).
- 2024-02-06. Egbert Rijke and Fredrik Bakke. Refactor files about identity types and homotopies (#1014).
- 2024-01-25. Fredrik Bakke. Basic properties of orthogonal maps (#979).
- 2024-01-14. Fredrik Bakke. Exponentiating retracts of maps (#989).