From 52c1e0fd9d9c777cde16a0cd470c3a79416520a8 Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Mon, 29 Jan 2024 13:19:54 +0100 Subject: [PATCH 001/150] replace whisk\b with whisker --- ...nspositions-standard-finite-types.lagda.md | 16 +-- .../coherently-invertible-maps.lagda.md | 2 +- .../commuting-prisms-of-maps.lagda.md | 4 +- src/foundation-core/equivalences.lagda.md | 2 +- .../whiskering-homotopies.lagda.md | 72 +++++----- .../coherently-invertible-maps.lagda.md | 8 +- .../commuting-cubes-of-maps.lagda.md | 50 +++---- .../commuting-prisms-of-maps.lagda.md | 6 +- ...muting-squares-of-identifications.lagda.md | 20 +-- .../commuting-squares-of-maps.lagda.md | 34 ++--- ...ommuting-tetrahedra-of-homotopies.lagda.md | 8 +- ...commuting-triangles-of-homotopies.lagda.md | 22 +-- ...ting-triangles-of-identifications.lagda.md | 82 +++++------ src/foundation/composition-algebra.lagda.md | 16 +-- .../coproduct-decompositions.lagda.md | 2 +- src/foundation/homotopies.lagda.md | 8 +- src/foundation/morphisms-arrows.lagda.md | 4 +- src/foundation/path-algebra.lagda.md | 132 +++++++++--------- .../postcomposition-functions.lagda.md | 4 +- .../precomposition-functions.lagda.md | 2 +- src/foundation/pullbacks.lagda.md | 4 +- ...port-along-higher-identifications.lagda.md | 60 ++++---- src/foundation/whiskering-homotopies.lagda.md | 70 +++++----- .../lifting-squares.lagda.md | 4 +- .../lifts-of-maps.lagda.md | 8 +- ...sition-lifts-families-of-elements.lagda.md | 4 +- .../pullback-hom.lagda.md | 2 +- src/synthetic-homotopy-theory/circle.lagda.md | 28 ++-- .../double-loop-spaces.lagda.md | 16 +-- .../eckmann-hilton-argument.lagda.md | 114 +++++++-------- ...functoriality-sequential-colimits.lagda.md | 4 +- .../smash-products-of-pointed-types.lagda.md | 12 +- .../suspension-structures.lagda.md | 16 +-- 33 files changed, 418 insertions(+), 418 deletions(-) diff --git a/src/finite-group-theory/transpositions-standard-finite-types.lagda.md b/src/finite-group-theory/transpositions-standard-finite-types.lagda.md index b36b649301..725921e7d7 100644 --- a/src/finite-group-theory/transpositions-standard-finite-types.lagda.md +++ b/src/finite-group-theory/transpositions-standard-finite-types.lagda.md @@ -445,16 +445,16 @@ htpy-conjugate-transposition-Fin n x y z neqxy neqyz neqxz = ( neqxz) private - htpy-whisk-conjugate : + htpy-whisker-conjugate : {l1 : Level} {A : UU l1} {f f' : A → A} (g : A → A) → (f ~ f') → (f ∘ (g ∘ f)) ~ (f' ∘ (g ∘ f')) - htpy-whisk-conjugate {f = f} {f' = f'} g H x = + htpy-whisker-conjugate {f = f} {f' = f'} g H x = H (g ( f x)) ∙ ap (f' ∘ g) (H x) - htpy-whisk : + htpy-whisker : {l : Level} {A : UU l} (f : A → A) {g g' : A → A} → g ~ g' → (f ∘ (g ∘ f)) ~ (f ∘ (g' ∘ f)) - htpy-whisk f H x = ap f (H (f x)) + htpy-whisker f H x = ap f (H (f x)) htpy-conjugate-transposition-swap-two-last-elements-transposition-Fin : (n : ℕ) (x : Fin (succ-ℕ n)) (neq : x ≠ neg-one-Fin n) → @@ -472,7 +472,7 @@ htpy-conjugate-transposition-swap-two-last-elements-transposition-Fin : ( neg-one-Fin (succ-ℕ n)) ( neq-inl-inr)) htpy-conjugate-transposition-swap-two-last-elements-transposition-Fin n x neq = - ( ( htpy-whisk-conjugate + ( ( htpy-whisker-conjugate ( map-transposition-Fin ( succ-ℕ (succ-ℕ n)) ( inl-Fin (succ-ℕ n) x) @@ -504,7 +504,7 @@ htpy-conjugate-transposition-swap-two-last-elements-transposition-Fin' : ( inl-Fin (succ-ℕ n) x) ( neq-inr-inl)) htpy-conjugate-transposition-swap-two-last-elements-transposition-Fin' n x neq = - ( ( htpy-whisk + ( ( htpy-whisker ( map-swap-two-last-elements-transposition-Fin n) ( ( htpy-transposition-Fin-transposition-swap-Fin ( succ-ℕ (succ-ℕ n)) @@ -662,7 +662,7 @@ htpy-permutation-list-adjacent-transpositions-transposition-Fin ( inl i) ( inr star))) ( inr star)) ∙h - ( ( htpy-whisk + ( ( htpy-whisker ( map-swap-two-last-elements-transposition-Fin n) ( ( htpy-permutation-inl-list-adjacent-transpositions ( n) @@ -709,7 +709,7 @@ htpy-permutation-list-adjacent-transpositions-transposition-Fin ( inr star) ( inl j))) ( inr star)) ∙h - ( ( htpy-whisk + ( ( htpy-whisker ( map-swap-two-last-elements-transposition-Fin n) ( ( htpy-permutation-inl-list-adjacent-transpositions ( n) diff --git a/src/foundation-core/coherently-invertible-maps.lagda.md b/src/foundation-core/coherently-invertible-maps.lagda.md index 89e6a3579c..350db64040 100644 --- a/src/foundation-core/coherently-invertible-maps.lagda.md +++ b/src/foundation-core/coherently-invertible-maps.lagda.md @@ -155,7 +155,7 @@ module _ ( coh-is-coherently-invertible-id ( is-section-is-invertible H) x)))) ( nat-htpy - ( htpy-right-whisk (is-retraction-is-invertible H) f) + ( htpy-right-whisker (is-retraction-is-invertible H) f) ( is-section-is-invertible H x)))) abstract diff --git a/src/foundation-core/commuting-prisms-of-maps.lagda.md b/src/foundation-core/commuting-prisms-of-maps.lagda.md index f659edcb86..cba5ea41e9 100644 --- a/src/foundation-core/commuting-prisms-of-maps.lagda.md +++ b/src/foundation-core/commuting-prisms-of-maps.lagda.md @@ -231,7 +231,7 @@ module _ ( bottom ·r hA) ( ( ap-concat-htpy' ( inv-htpy inv-right ·r h) - ( left-whisk-inv-htpy g' inv-left)) ∙h + ( left-whisker-inv-htpy g' inv-left)) ∙h ( inv-htpy-distributive-inv-concat-htpy ( inv-right ·r h) ( g' ·l inv-left)))) ∙h @@ -276,7 +276,7 @@ module _ ( hC ·l inv-top) ( ( ap-concat-htpy' ( inv-htpy inv-right ·r h) - ( left-whisk-inv-htpy g' inv-left)) ∙h + ( left-whisker-inv-htpy g' inv-left)) ∙h ( inv-htpy-distributive-inv-concat-htpy ( inv-right ·r h) ( g' ·l inv-left)))) ∙h diff --git a/src/foundation-core/equivalences.lagda.md b/src/foundation-core/equivalences.lagda.md index 4fdf05534e..ff695140a2 100644 --- a/src/foundation-core/equivalences.lagda.md +++ b/src/foundation-core/equivalences.lagda.md @@ -523,7 +523,7 @@ module _ is-equiv-section-is-equiv (g , is-section-g) is-equiv-section-f = is-equiv-htpy h ( ( f ·l (inv-htpy (is-section-map-inv-is-equiv is-equiv-section-f))) ∙h - ( htpy-right-whisk is-section-g h)) + ( htpy-right-whisker is-section-g h)) ( is-equiv-map-inv-is-equiv is-equiv-section-f) where h : A → B diff --git a/src/foundation-core/whiskering-homotopies.lagda.md b/src/foundation-core/whiskering-homotopies.lagda.md index 1cf39a10e4..747d73fec7 100644 --- a/src/foundation-core/whiskering-homotopies.lagda.md +++ b/src/foundation-core/whiskering-homotopies.lagda.md @@ -58,13 +58,13 @@ module _ {l1 l2 l3 : Level} {A : UU l1} {B : A → UU l2} {C : A → UU l3} where - htpy-left-whisk : + htpy-left-whisker : (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) + htpy-left-whisker h H x = ap h (H x) infixr 17 _·l_ - _·l_ = htpy-left-whisk + _·l_ = htpy-left-whisker ``` ### Right whiskering of homotopies @@ -74,14 +74,14 @@ module _ {l1 l2 l3 : Level} {A : UU l1} {B : A → UU l2} {C : (x : A) → B x → UU l3} where - htpy-right-whisk : + htpy-right-whisker : {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) + htpy-right-whisker H f x = H (f x) infixl 16 _·r_ - _·r_ = htpy-right-whisk + _·r_ = htpy-right-whisker ``` ### Horizontal composition of homotopies @@ -112,35 +112,35 @@ module _ {l1 l2 : Level} {A : UU l1} {B : A → UU l2} where - left-unit-law-left-whisk-htpy : + left-unit-law-left-whisker-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) + left-unit-law-left-whisker-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 : + right-unit-law-left-whisker-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 + right-unit-law-left-whisker-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 : + left-unit-law-right-whisker-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 + left-unit-law-right-whisker-htpy f = refl-htpy module _ {l1 l2 : Level} {A : UU l1} {B : A → UU l2} where - right-unit-law-right-whisk-htpy : + right-unit-law-right-whisker-htpy : {f f' : (x : A) → B x} → (H : f ~ f') → H ·r id ~ H - right-unit-law-right-whisk-htpy H = refl-htpy + right-unit-law-right-whisker-htpy H = refl-htpy ``` ### Laws for whiskering an inverted homotopy @@ -151,11 +151,11 @@ module _ {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) + left-whisker-inv-htpy : g ·l (inv-htpy H) ~ inv-htpy (g ·l H) + left-whisker-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 + inv-htpy-left-whisker-inv-htpy : inv-htpy (g ·l H) ~ g ·l (inv-htpy H) + inv-htpy-left-whisker-inv-htpy = inv-htpy left-whisker-inv-htpy module _ {l1 l2 l3 : Level} {A : UU l1} {B : A → UU l2} {C : (x : A) → B x → UU l3} @@ -163,11 +163,11 @@ module _ (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 + right-whisker-inv-htpy : inv-htpy H ·r f ~ inv-htpy (H ·r f) + right-whisker-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 + inv-htpy-right-whisker-inv-htpy : inv-htpy H ·r f ~ inv-htpy (H ·r f) + inv-htpy-right-whisker-inv-htpy = inv-htpy right-whisker-inv-htpy ``` ### Distributivity of whiskering over composition of homotopies @@ -177,11 +177,11 @@ module _ {l1 l2 l3 : Level} {A : UU l1} {B : A → UU l2} {C : A → UU l3} where - distributive-left-whisk-concat-htpy : + distributive-left-whisker-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 = + distributive-left-whisker-concat-htpy k H K a = ap-concat k (H a) (K a) module _ @@ -190,9 +190,9 @@ module _ (H : {x : A} → f {x} ~ g {x}) (K : {x : A} → g {x} ~ h {x}) where - distributive-right-whisk-concat-htpy : + distributive-right-whisker-concat-htpy : (H ∙h K) ·r k ~ (H ·r k) ∙h (K ·r k) - distributive-right-whisk-concat-htpy = refl-htpy + distributive-right-whisker-concat-htpy = refl-htpy ``` ### Associativity of whiskering and function composition @@ -203,11 +203,11 @@ module _ {A : UU l1} {B : A → UU l2} {C : A → UU l3} {D : A → UU l4} where - associative-left-whisk-comp : + associative-left-whisker-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)) + associative-left-whisker-comp k h H x = inv (ap-comp k h (H x)) module _ { l1 l2 l3 l4 : Level} @@ -218,8 +218,8 @@ module _ ( 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 + associative-right-whisker-comp : (H ·r h) ·r k ~ H ·r (h ∘ k) + associative-right-whisker-comp = refl-htpy ``` ### A coherence for homotopies to the identity function @@ -244,18 +244,18 @@ module _ {f g : (x : A) → B x} where - ap-left-whisk-htpy : + ap-left-whisker-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 α + ap-left-whisker-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 : + ap-right-whisker-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 + ap-right-whisker-htpy α h = α ·r h ``` ### The left and right whiskering operations commute @@ -276,12 +276,12 @@ module _ {f g : {x : A} (y : B x) → C y} where - coherence-left-right-whisk-htpy : + coherence-left-right-whisker-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 + coherence-left-right-whisker-htpy h H h' = refl-htpy ``` ## See also diff --git a/src/foundation/coherently-invertible-maps.lagda.md b/src/foundation/coherently-invertible-maps.lagda.md index ff45dc7dbf..b519feb96b 100644 --- a/src/foundation/coherently-invertible-maps.lagda.md +++ b/src/foundation/coherently-invertible-maps.lagda.md @@ -47,16 +47,16 @@ abstract ( λ s → Σ ( ( map-section f s ∘ f) ~ id) ( λ H → - ( htpy-right-whisk (is-section-map-section f s) f) ~ - ( htpy-left-whisk f H)))) + ( htpy-right-whisker (is-section-map-section f s) f) ~ + ( htpy-left-whisker f H)))) ( associative-Σ ( B → A) ( λ g → (f ∘ g) ~ id) ( λ s → Σ ( ( map-section f s ∘ f) ~ id) ( λ H → - ( htpy-right-whisk (is-section-map-section f s) f) ~ - ( htpy-left-whisk f H)))) + ( htpy-right-whisker (is-section-map-section f s) f) ~ + ( htpy-left-whisker f H)))) ( is-contr-Σ ( is-contr-section-is-equiv (is-equiv-is-coherently-invertible H)) ( section-is-coherently-invertible H) diff --git a/src/foundation/commuting-cubes-of-maps.lagda.md b/src/foundation/commuting-cubes-of-maps.lagda.md index 9ffd6c5f80..c45b484fbd 100644 --- a/src/foundation/commuting-cubes-of-maps.lagda.md +++ b/src/foundation/commuting-cubes-of-maps.lagda.md @@ -361,7 +361,7 @@ module _ ( (k ·l back-right) ∙h (refl-htpy' (k ∘ (hC ∘ g'))))) ∙h ( ( ap-concat-htpy' ( _) - ( left-whisk-inv-htpy h back-left)) ∙h + ( left-whisker-inv-htpy h back-left)) ∙h ( inv-htpy-left-transpose-htpy-concat (h ·l back-left) _ _ ( ( (inv-htpy-assoc-htpy (h ·l back-left) (front-left ·r f') _) ∙h ( ( inv-htpy-assoc-htpy @@ -424,22 +424,22 @@ module _ ( (precomp f' W) ·l precomp-front-left-inv) ∙h ( precomp-back-left-inv ·r (precomp h W)) ∙h ( (precomp hA W) ·l precomp-bottom) - ~ ( precomp-front-left-inv-whisk-f') ∙h - ( precomp-h-whisk-back-left-inv) ∙h - ( precomp-bottom-whisk-hA) + ~ ( precomp-front-left-inv-whisker-f') ∙h + ( precomp-h-whisker-back-left-inv) ∙h + ( precomp-bottom-whisker-hA) by inv-htpy ( horizontal-concat-htpy² ( horizontal-concat-htpy² - ( distributive-precomp-right-whisk-coherence-square-maps W hB h' h + ( distributive-precomp-right-whisker-coherence-square-maps W hB h' h ( hD) ( inv-htpy front-left) ( f')) - ( distributive-precomp-left-whisk-coherence-square-maps W hA f' f + ( distributive-precomp-left-whisker-coherence-square-maps W hA f' f ( hB) ( inv-htpy back-left) ( h))) - ( distributive-precomp-right-whisk-coherence-square-maps W g f k h + ( distributive-precomp-right-whisker-coherence-square-maps W g f k h ( bottom) ( hA))) ~ precomp-coherence-square-maps hA @@ -493,9 +493,9 @@ module _ ( bottom) ( c) ( a'))))) - ~ ( precomp-hD-whisk-top) ∙h - ( ( precomp-front-right-inv-whisk-g') ∙h - ( precomp-k-whisk-back-right-inv)) + ~ ( precomp-hD-whisker-top) ∙h + ( ( precomp-front-right-inv-whisker-g') ∙h + ( precomp-k-whisker-back-right-inv)) by distributive-precomp-coherence-square-left-map-triangle-coherence-triangle-maps' ( W) @@ -511,15 +511,15 @@ module _ ( precomp-back-right-inv ·r (precomp k W))) by horizontal-concat-htpy² - ( distributive-precomp-left-whisk-coherence-square-maps W g' f' k' h' + ( distributive-precomp-left-whisker-coherence-square-maps W g' f' k' h' ( top) ( hD)) ( horizontal-concat-htpy² - ( distributive-precomp-right-whisk-coherence-square-maps W hC k' k + ( distributive-precomp-right-whisker-coherence-square-maps W hC k' k ( hD) ( inv-htpy front-right) ( g')) - ( distributive-precomp-left-whisk-coherence-square-maps W hA g' g hC + ( distributive-precomp-left-whisker-coherence-square-maps W hA g' g hC ( inv-htpy back-right) ( k))) where @@ -569,13 +569,13 @@ module _ ( precomp g W) ( precomp f W) precomp-bottom = precomp-coherence-square-maps g f k h bottom W - precomp-front-left-inv-whisk-f' : + precomp-front-left-inv-whisker-f' : coherence-square-maps ( precomp h W) ( precomp hD W) ( precomp f' W ∘ precomp hB W) ( precomp f' W ∘ precomp h' W) - precomp-front-left-inv-whisk-f' = + precomp-front-left-inv-whisker-f' = precomp-coherence-square-maps ( hB ∘ f') ( h' ∘ f') @@ -583,25 +583,25 @@ module _ ( hD) ( inv-htpy front-left ·r f') ( W) - precomp-h-whisk-back-left-inv : + precomp-h-whisker-back-left-inv : coherence-square-maps ( precomp f W ∘ precomp h W) ( precomp hB W ∘ precomp h W) ( precomp hA W) ( precomp f' W) - precomp-h-whisk-back-left-inv = + precomp-h-whisker-back-left-inv = precomp-coherence-square-maps hA f' ( h ∘ f) ( h ∘ hB) ( h ·l inv-htpy back-left) ( W) - precomp-bottom-whisk-hA : + precomp-bottom-whisker-hA : coherence-square-maps ( precomp k W) ( precomp h W) ( precomp hA W ∘ precomp g W) ( precomp hA W ∘ precomp f W) - precomp-bottom-whisk-hA = + precomp-bottom-whisker-hA = precomp-coherence-square-maps ( g ∘ hA) ( f ∘ hA) @@ -609,25 +609,25 @@ module _ ( h) ( bottom ·r hA) ( W) - precomp-hD-whisk-top : + precomp-hD-whisker-top : coherence-square-maps ( precomp k' W ∘ precomp hD W) ( precomp h' W ∘ precomp hD W) ( precomp g' W) ( precomp f' W) - precomp-hD-whisk-top = + precomp-hD-whisker-top = precomp-coherence-square-maps g' f' ( hD ∘ k') ( hD ∘ h') ( hD ·l top) ( W) - precomp-front-right-inv-whisk-g' : + precomp-front-right-inv-whisker-g' : coherence-square-maps ( precomp k W) ( precomp hD W) ( precomp g' W ∘ precomp hC W) ( precomp g' W ∘ precomp k' W) - precomp-front-right-inv-whisk-g' = + precomp-front-right-inv-whisker-g' = precomp-coherence-square-maps ( hC ∘ g') ( k' ∘ g') @@ -635,13 +635,13 @@ module _ ( hD) ( inv-htpy front-right ·r g') ( W) - precomp-k-whisk-back-right-inv : + precomp-k-whisker-back-right-inv : coherence-square-maps ( precomp g W ∘ precomp k W) ( precomp hC W ∘ precomp k W) ( precomp hA W) ( precomp g' W) - precomp-k-whisk-back-right-inv = + precomp-k-whisker-back-right-inv = precomp-coherence-square-maps hA g' ( k ∘ g) ( k ∘ hC) diff --git a/src/foundation/commuting-prisms-of-maps.lagda.md b/src/foundation/commuting-prisms-of-maps.lagda.md index 5ad0bd595c..67b5776b55 100644 --- a/src/foundation/commuting-prisms-of-maps.lagda.md +++ b/src/foundation/commuting-prisms-of-maps.lagda.md @@ -92,20 +92,20 @@ module _ ( right-top) ( left-bottom) ( right-bottom))) ∙h - ( right-whisk-square-htpy + ( right-whisker-square-htpy ( front-bottom ·r hA) ( bottom ·r hA' ·r hA) ( hC' ·l ((g' ·l left-top) ∙h (right-top ·r h))) ( prism-bottom ·r hA)) ∙h ( ap-concat-htpy ( front-bottom ·r hA) - ( ( ap-left-whisk-coherence-square-homotopies hC' + ( ( ap-left-whisker-coherence-square-homotopies hC' ( front-top) ( mid ·r hA) ( prism-top)) ∙h ( ap-concat-htpy ( hC' ·l front-top) - ( associative-left-whisk-comp hC' hC top)))) ∙h + ( associative-left-whisker-comp hC' hC top)))) ∙h ( inv-htpy-assoc-htpy ( front-bottom ·r hA) ( hC' ·l front-top) diff --git a/src/foundation/commuting-squares-of-identifications.lagda.md b/src/foundation/commuting-squares-of-identifications.lagda.md index 0c716a303b..b41c0d2b74 100644 --- a/src/foundation/commuting-squares-of-identifications.lagda.md +++ b/src/foundation/commuting-squares-of-identifications.lagda.md @@ -145,39 +145,39 @@ module _ (left : x = z) (bottom : z = w) (top : x = y) (right : y = w) where - coherence-square-identifications-top-left-whisk' : + coherence-square-identifications-top-left-whisker' : {x' : A} (p : x' = x) → coherence-square-identifications top left right bottom → coherence-square-identifications (p ∙ top) (p ∙ left) right bottom - coherence-square-identifications-top-left-whisk' refl sq = sq + coherence-square-identifications-top-left-whisker' refl sq = sq - coherence-square-identifications-top-left-whisk : + coherence-square-identifications-top-left-whisker : {x' : A} (p : x = x') → coherence-square-identifications top left right bottom → coherence-square-identifications (inv p ∙ top) (inv p ∙ left) right bottom - coherence-square-identifications-top-left-whisk refl sq = sq + coherence-square-identifications-top-left-whisker refl sq = sq - coherence-square-identifications-top-right-whisk : + coherence-square-identifications-top-right-whisker : {y' : A} (p : y = y') → coherence-square-identifications top left right bottom → coherence-square-identifications (top ∙ p) left (inv p ∙ right) bottom - coherence-square-identifications-top-right-whisk refl = + coherence-square-identifications-top-right-whisker refl = coherence-square-identifications-top-paste left bottom top right (inv right-unit) - coherence-square-identifications-bottom-left-whisk : + coherence-square-identifications-bottom-left-whisker : {z' : A} (p : z = z') → coherence-square-identifications top left right bottom → coherence-square-identifications top (left ∙ p) right (inv p ∙ bottom) - coherence-square-identifications-bottom-left-whisk refl = + coherence-square-identifications-bottom-left-whisker refl = coherence-square-identifications-left-paste left bottom top right (inv right-unit) - coherence-square-identifications-bottom-right-whisk : + coherence-square-identifications-bottom-right-whisker : {w' : A} (p : w = w') → coherence-square-identifications top left right bottom → coherence-square-identifications top left (right ∙ p) (bottom ∙ p) - coherence-square-identifications-bottom-right-whisk refl = + coherence-square-identifications-bottom-right-whisker refl = ( coherence-square-identifications-bottom-paste left bottom top (right ∙ refl) (inv right-unit)) ∘ ( coherence-square-identifications-right-paste diff --git a/src/foundation/commuting-squares-of-maps.lagda.md b/src/foundation/commuting-squares-of-maps.lagda.md index 93688a63b5..6367269dfc 100644 --- a/src/foundation/commuting-squares-of-maps.lagda.md +++ b/src/foundation/commuting-squares-of-maps.lagda.md @@ -325,7 +325,7 @@ module _ ( ap bottom (is-section-map-inv-equiv left (map-equiv left a))))) ( ap (map-inv-equiv right) (H a)) ( is-retraction-map-inv-equiv right (top a))) ∙ - ( left-whisk-square-identification + ( left-whisker-square-identification ( map-eq-transpose-equiv ( right) ( inv (H (map-inv-equiv left (map-equiv left a))))) @@ -484,13 +484,13 @@ module _ assoc-pasting-vertical-coherence-square-maps = ( ap-concat-htpy ( sq-bottom ·r mid-left ·r top-left) - ( ( distributive-left-whisk-concat-htpy + ( ( distributive-left-whisker-concat-htpy ( bottom-right) ( sq-mid ·r top-left) ( mid-right ·l sq-top)) ∙h ( ap-concat-htpy ( bottom-right ·l (sq-mid ·r top-left)) - ( associative-left-whisk-comp bottom-right mid-right sq-top)))) ∙h + ( associative-left-whisker-comp bottom-right mid-right sq-top)))) ∙h ( inv-htpy-assoc-htpy ( sq-bottom ·r mid-left ·r top-left) ( bottom-right ·l (sq-mid ·r top-left)) @@ -675,11 +675,11 @@ module _ ( sq-right-bottom))) commutative-pasting-vertical-pasting-horizontal-coherence-square-maps = ( ap-concat-htpy' _ - ( distributive-left-whisk-concat-htpy + ( distributive-left-whisker-concat-htpy ( bottom-right) ( sq-left-bottom ·r left-top) ( mid-bottom ·l sq-left-top)) ∙h - ( both-whisk-square-htpy + ( both-whisker-square-htpy ( bottom-right ·l (sq-left-bottom ·r left-top)) ( right-bottom ·l (sq-right-top ·r top-left)) ( inv-htpy @@ -696,7 +696,7 @@ module _ ( sq-right-bottom))))) ∙h ( ap-concat-htpy _ ( inv-htpy - ( distributive-left-whisk-concat-htpy + ( distributive-left-whisker-concat-htpy ( right-bottom) ( mid-right ·l sq-left-top) ( sq-right-top ·r top-left)))) @@ -809,7 +809,7 @@ module _ ap ( eq-htpy) ( eq-htpy - ( distributive-left-whisk-concat-htpy + ( distributive-left-whisker-concat-htpy ( h) ( bottom-right ·l H) ( K ·r top-left))) @@ -829,8 +829,8 @@ module _ by ap-binary ( λ L q → eq-htpy L ∙ q) - ( eq-htpy (associative-left-whisk-comp h bottom-right H)) - ( compute-eq-htpy-right-whisk + ( eq-htpy (associative-left-whisker-comp h bottom-right H)) + ( compute-eq-htpy-right-whisker ( top-left) ( h ·l K)) @@ -897,7 +897,7 @@ module _ ap ( eq-htpy) ( eq-htpy - ( distributive-left-whisk-concat-htpy + ( distributive-left-whisker-concat-htpy ( h) ( K ·r left-top) ( right-bottom ·l H))) @@ -917,8 +917,8 @@ module _ by ap-binary ( λ p L → p ∙ eq-htpy L) - ( compute-eq-htpy-right-whisk left-top (h ·l K)) - ( eq-htpy (associative-left-whisk-comp h right-bottom H)) + ( compute-eq-htpy-right-whisker left-top (h ·l K)) + ( eq-htpy (associative-left-whisker-comp h right-bottom H)) ``` ### Transposing by precomposition of whiskered squares @@ -956,7 +956,7 @@ module _ ( H : coherence-square-maps top left right bottom) where - distributive-precomp-right-whisk-coherence-square-maps : + distributive-precomp-right-whisker-coherence-square-maps : ( f : X → A) → precomp-coherence-square-maps ( top ∘ f) @@ -967,15 +967,15 @@ module _ ( W) ~ ( ( precomp f W) ·l ( precomp-coherence-square-maps top left right bottom H W)) - distributive-precomp-right-whisk-coherence-square-maps f g = - compute-eq-htpy-right-whisk f (g ·l H) + distributive-precomp-right-whisker-coherence-square-maps f g = + compute-eq-htpy-right-whisker f (g ·l H) ``` Similarly, we can calculate transpositions of left-whiskered squares with the formula `W^(f ·l H) = W^H ·r W^f`. ```agda - distributive-precomp-left-whisk-coherence-square-maps : + distributive-precomp-left-whisker-coherence-square-maps : ( f : D → X) → precomp-coherence-square-maps ( top) @@ -986,7 +986,7 @@ formula `W^(f ·l H) = W^H ·r W^f`. ( W) ~ ( ( precomp-coherence-square-maps top left right bottom H W) ·r ( precomp f W)) - distributive-precomp-left-whisk-coherence-square-maps f g = + distributive-precomp-left-whisker-coherence-square-maps f g = ap eq-htpy (eq-htpy (λ a → inv (ap-comp g f (H a)))) ``` diff --git a/src/foundation/commuting-tetrahedra-of-homotopies.lagda.md b/src/foundation/commuting-tetrahedra-of-homotopies.lagda.md index ef99472c72..89daa21d5b 100644 --- a/src/foundation/commuting-tetrahedra-of-homotopies.lagda.md +++ b/src/foundation/commuting-tetrahedra-of-homotopies.lagda.md @@ -50,12 +50,12 @@ module _ coherence-tetrahedron-homotopies : UU (l1 ⊔ l2) coherence-tetrahedron-homotopies = ( ( upper-right) ∙h - ( left-whisk-htpy-coherence-triangle-homotopies + ( left-whisker-htpy-coherence-triangle-homotopies ( diagonal-up) ( right) ( upper-left))) ~ ( ( lower-left) ∙h - ( right-whisk-htpy-coherence-triangle-homotopies + ( right-whisker-htpy-coherence-triangle-homotopies ( right) ( lower-right) ( left)) ∙h @@ -64,13 +64,13 @@ module _ coherence-tetrahedron-homotopies' : UU (l1 ⊔ l2) coherence-tetrahedron-homotopies' = ( ( lower-left) ∙h - ( right-whisk-htpy-coherence-triangle-homotopies + ( right-whisker-htpy-coherence-triangle-homotopies ( right) ( lower-right) ( left)) ∙h ( assoc-htpy left diagonal-up right)) ~ ( ( upper-right) ∙h - ( left-whisk-htpy-coherence-triangle-homotopies + ( left-whisker-htpy-coherence-triangle-homotopies ( diagonal-up) ( right) ( upper-left))) diff --git a/src/foundation/commuting-triangles-of-homotopies.lagda.md b/src/foundation/commuting-triangles-of-homotopies.lagda.md index 4430d65079..5e03f5e591 100644 --- a/src/foundation/commuting-triangles-of-homotopies.lagda.md +++ b/src/foundation/commuting-triangles-of-homotopies.lagda.md @@ -62,10 +62,10 @@ module _ (left : f ~ h) (right : g ~ h) (top : f ~ g) where - distributivity-left-whisk : + distributivity-left-whisker : coherence-triangle-homotopies left right top → (i ·l left) ~ ((i ·l top) ∙h (i ·l right)) - distributivity-left-whisk T x = + distributivity-left-whisker T x = ap-concat-eq i (top x) (right x) (left x) (T x) ``` @@ -78,11 +78,11 @@ module _ {left : f ~ h} (right : g ~ h) {top : f ~ g} where - left-whisk-htpy-coherence-triangle-homotopies : + left-whisker-htpy-coherence-triangle-homotopies : {i : (x : A) → B x} (H : h ~ i) (T : coherence-triangle-homotopies left right top) → coherence-triangle-homotopies {h = i} (left ∙h H) (right ∙h H) top - left-whisk-htpy-coherence-triangle-homotopies H T = + left-whisker-htpy-coherence-triangle-homotopies H T = (λ x → ap (_∙ H x) (T x)) ∙h assoc-htpy top right H module _ @@ -91,14 +91,14 @@ module _ {left : f ~ h} (right : g ~ h) {top : f ~ g} where - left-whisk-coherence-triangle-homotopies : + left-whisker-coherence-triangle-homotopies : {l3 : Level} {X : UU l3} (i : B → X) (T : coherence-triangle-homotopies left right top) → coherence-triangle-homotopies {f = i ∘ f} {i ∘ g} {i ∘ h} (i ·l left) (i ·l right) (i ·l top) - left-whisk-coherence-triangle-homotopies i = - distributivity-left-whisk i left right top + left-whisker-coherence-triangle-homotopies i = + distributivity-left-whisker i left right top ``` ### Right whiskering triangles of homotopies @@ -110,11 +110,11 @@ module _ {left : f ~ h} (right : g ~ h) {top : f ~ g} where - right-whisk-htpy-coherence-triangle-homotopies : + right-whisker-htpy-coherence-triangle-homotopies : {i : (x : A) → B x} (T : coherence-triangle-homotopies left right top) (H : i ~ f) → coherence-triangle-homotopies {f = i} (H ∙h left) right (H ∙h top) - right-whisk-htpy-coherence-triangle-homotopies T H = + right-whisker-htpy-coherence-triangle-homotopies T H = (λ x → ap (H x ∙_) (T x)) ∙h (inv-htpy-assoc-htpy H top right) module _ @@ -123,11 +123,11 @@ module _ {left : f ~ h} (right : g ~ h) {top : f ~ g} where - right-whisk-coherence-triangle-homotopies : + right-whisker-coherence-triangle-homotopies : {l3 : Level} {X : UU l3} (T : coherence-triangle-homotopies left right top) (i : X → A) → coherence-triangle-homotopies {f = f ∘ i} {g ∘ i} {h ∘ i} (left ·r i) (right ·r i) (top ·r i) - right-whisk-coherence-triangle-homotopies T i = T ∘ i + right-whisker-coherence-triangle-homotopies T i = T ∘ i ``` diff --git a/src/foundation/commuting-triangles-of-identifications.lagda.md b/src/foundation/commuting-triangles-of-identifications.lagda.md index 63fdd6e73b..558f4cbdd3 100644 --- a/src/foundation/commuting-triangles-of-identifications.lagda.md +++ b/src/foundation/commuting-triangles-of-identifications.lagda.md @@ -106,11 +106,11 @@ Because concatenation of identifications is an equivalence, it follows that all of these transformations are equivalences. These lemmas are useful in proofs involving path algebra, because taking -`equiv-right-whisk-triangle-identicications` as an example, it provides us with -two maps: the forward direction states `(p = q ∙ r) → (p ∙ s = q ∙ (r ∙ s))`, -which allows one to append an identification without needing to reassociate on -the right, and the backwards direction conversely allows one to cancel out an -identification in parentheses. +`equiv-right-whisker-triangle-identicications` as an example, it provides us +with two maps: the forward direction states +`(p = q ∙ r) → (p ∙ s = q ∙ (r ∙ s))`, which allows one to append an +identification without needing to reassociate on the right, and the backwards +direction conversely allows one to cancel out an identification in parentheses. ```agda module _ @@ -118,84 +118,84 @@ module _ (left : x = z) (top : x = y) {right : y = z} (p : z = u) where - equiv-right-whisk-triangle-identifications : + equiv-right-whisker-triangle-identifications : ( coherence-triangle-identifications left right top) ≃ ( coherence-triangle-identifications (left ∙ p) (right ∙ p) top) - equiv-right-whisk-triangle-identifications = + equiv-right-whisker-triangle-identifications = ( equiv-concat-assoc' (left ∙ p) top right p) ∘e - ( equiv-identification-right-whisk p) + ( equiv-identification-right-whisker p) - right-whisk-triangle-identifications : + right-whisker-triangle-identifications : coherence-triangle-identifications left right top → coherence-triangle-identifications (left ∙ p) (right ∙ p) top - right-whisk-triangle-identifications = - map-equiv equiv-right-whisk-triangle-identifications + right-whisker-triangle-identifications = + map-equiv equiv-right-whisker-triangle-identifications - right-unwhisk-triangle-identifications : + right-unwhisker-triangle-identifications : coherence-triangle-identifications (left ∙ p) (right ∙ p) top → coherence-triangle-identifications left right top - right-unwhisk-triangle-identifications = - map-inv-equiv equiv-right-whisk-triangle-identifications + right-unwhisker-triangle-identifications = + map-inv-equiv equiv-right-whisker-triangle-identifications - equiv-right-whisk-triangle-identifications' : + equiv-right-whisker-triangle-identifications' : ( coherence-triangle-identifications' left right top) ≃ ( coherence-triangle-identifications' (left ∙ p) (right ∙ p) top) - equiv-right-whisk-triangle-identifications' = + equiv-right-whisker-triangle-identifications' = ( equiv-concat-assoc top right p (left ∙ p)) ∘e - ( equiv-identification-right-whisk p) + ( equiv-identification-right-whisker p) - right-whisk-triangle-identifications' : + right-whisker-triangle-identifications' : coherence-triangle-identifications' left right top → coherence-triangle-identifications' (left ∙ p) (right ∙ p) top - right-whisk-triangle-identifications' = - map-equiv equiv-right-whisk-triangle-identifications' + right-whisker-triangle-identifications' = + map-equiv equiv-right-whisker-triangle-identifications' - right-unwhisk-triangle-identifications' : + right-unwhisker-triangle-identifications' : coherence-triangle-identifications' (left ∙ p) (right ∙ p) top → coherence-triangle-identifications' left right top - right-unwhisk-triangle-identifications' = - map-inv-equiv equiv-right-whisk-triangle-identifications' + right-unwhisker-triangle-identifications' = + map-inv-equiv equiv-right-whisker-triangle-identifications' module _ {l : Level} {A : UU l} {x y z u : A} (p : u = x) {left : x = z} {right : y = z} {top : x = y} where - equiv-left-whisk-triangle-identifications : + equiv-left-whisker-triangle-identifications : ( coherence-triangle-identifications left right top) ≃ ( coherence-triangle-identifications (p ∙ left) right (p ∙ top)) - equiv-left-whisk-triangle-identifications = + equiv-left-whisker-triangle-identifications = ( inv-equiv (equiv-concat-assoc' (p ∙ left) p top right)) ∘e - ( equiv-identification-left-whisk p) + ( equiv-identification-left-whisker p) - left-whisk-triangle-identifications : + left-whisker-triangle-identifications : coherence-triangle-identifications left right top → coherence-triangle-identifications (p ∙ left) right (p ∙ top) - left-whisk-triangle-identifications = - map-equiv equiv-left-whisk-triangle-identifications + left-whisker-triangle-identifications = + map-equiv equiv-left-whisker-triangle-identifications - left-unwhisk-triangle-identifications : + left-unwhisker-triangle-identifications : coherence-triangle-identifications (p ∙ left) right (p ∙ top) → coherence-triangle-identifications left right top - left-unwhisk-triangle-identifications = - map-inv-equiv equiv-left-whisk-triangle-identifications + left-unwhisker-triangle-identifications = + map-inv-equiv equiv-left-whisker-triangle-identifications - equiv-left-whisk-triangle-identifications' : + equiv-left-whisker-triangle-identifications' : ( coherence-triangle-identifications' left right top) ≃ ( coherence-triangle-identifications' (p ∙ left) right (p ∙ top)) - equiv-left-whisk-triangle-identifications' = + equiv-left-whisker-triangle-identifications' = ( inv-equiv (equiv-concat-assoc p top right (p ∙ left))) ∘e - ( equiv-identification-left-whisk p) + ( equiv-identification-left-whisker p) - left-whisk-triangle-identifications' : + left-whisker-triangle-identifications' : coherence-triangle-identifications' left right top → coherence-triangle-identifications' (p ∙ left) right (p ∙ top) - left-whisk-triangle-identifications' = - map-equiv equiv-left-whisk-triangle-identifications' + left-whisker-triangle-identifications' = + map-equiv equiv-left-whisker-triangle-identifications' - left-unwhisk-triangle-identifications' : + left-unwhisker-triangle-identifications' : coherence-triangle-identifications' (p ∙ left) right (p ∙ top) → coherence-triangle-identifications' left right top - left-unwhisk-triangle-identifications' = - map-inv-equiv equiv-left-whisk-triangle-identifications' + left-unwhisker-triangle-identifications' = + map-inv-equiv equiv-left-whisker-triangle-identifications' ``` diff --git a/src/foundation/composition-algebra.lagda.md b/src/foundation/composition-algebra.lagda.md index da04122fb6..e271a880bb 100644 --- a/src/foundation/composition-algebra.lagda.md +++ b/src/foundation/composition-algebra.lagda.md @@ -137,7 +137,7 @@ module _ (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-whisk-concat-htpy i H K))) ∙ + ( ap eq-htpy (eq-htpy (distributive-left-whisker-concat-htpy i H K))) ∙ ( eq-htpy-concat-htpy (i ·l H) (i ·l K)) ``` @@ -234,7 +234,7 @@ module _ (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-whisk-concat-htpy i H K))) ∙ + ( ap eq-htpy (eq-htpy (distributive-right-whisker-concat-htpy i H K))) ∙ ( eq-htpy-concat-htpy (H ·r i) (K ·r i)) ``` @@ -269,11 +269,11 @@ module _ ind-htpy f ( λ f' F → htpy-precomp F Y ·r postcomp B g ~ postcomp A g ·l htpy-precomp F X) - ( ( ap-right-whisk-htpy + ( ( ap-right-whisker-htpy ( compute-htpy-precomp-refl-htpy f Y) ( postcomp B g)) ∙h ( inv-htpy - ( ap-left-whisk-htpy + ( ap-left-whisker-htpy ( postcomp A g) ( compute-htpy-precomp-refl-htpy f X)))) @@ -284,11 +284,11 @@ module _ ind-htpy g ( λ g' G → htpy-postcomp A G ·r precomp f X ~ precomp f Y ·l htpy-postcomp B G) - ( ( ap-right-whisk-htpy + ( ( ap-right-whisker-htpy ( compute-htpy-postcomp-refl-htpy A g) ( precomp f X)) ∙h ( inv-htpy - ( ap-left-whisk-htpy + ( ap-left-whisker-htpy ( precomp f Y) ( compute-htpy-postcomp-refl-htpy B g)))) @@ -310,14 +310,14 @@ module _ htpy-precomp F Y ·r postcomp B g')) ( ( ap-concat-htpy ( postcomp A g ·l htpy-precomp F X) - ( ap-right-whisk-htpy + ( ap-right-whisker-htpy ( 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) - ( ap-left-whisk-htpy + ( ap-left-whisker-htpy ( precomp f Y) ( inv-htpy (compute-htpy-postcomp-refl-htpy B g))))) ``` diff --git a/src/foundation/coproduct-decompositions.lagda.md b/src/foundation/coproduct-decompositions.lagda.md index 33c93fb911..c32a89cf1e 100644 --- a/src/foundation/coproduct-decompositions.lagda.md +++ b/src/foundation/coproduct-decompositions.lagda.md @@ -109,7 +109,7 @@ pr2 (equiv-coproduct-Decomposition-full-subuniverse X) = ( d) ( id-equiv , ( id-equiv , - htpy-right-whisk + htpy-right-whisker ( id-map-coprod _ _) ( map-equiv ( matching-correspondence-binary-coproduct-Decomposition-subuniverse diff --git a/src/foundation/homotopies.lagda.md b/src/foundation/homotopies.lagda.md index 6791ab63ab..c95e55e865 100644 --- a/src/foundation/homotopies.lagda.md +++ b/src/foundation/homotopies.lagda.md @@ -292,8 +292,8 @@ htpy-swap-nat-right-htpy : {l0 l1 l2 : Level} {X : UU l0} {Y : UU l1} {Z : UU l2} {f g : X → Y} {f' g' : Y → Z} (H' : f' ~ g') (H : f ~ g) → - (htpy-right-whisk H' f ∙h htpy-left-whisk g' H) ~ - (htpy-left-whisk f' H ∙h htpy-right-whisk H' g) + (htpy-right-whisker H' f ∙h htpy-left-whisker g' H) ~ + (htpy-left-whisker f' H ∙h htpy-right-whisker H' g) htpy-swap-nat-right-htpy H' H x = nat-htpy H' (H x) @@ -301,9 +301,9 @@ eckmann-hilton-htpy : {l : Level} {X : UU l} (H K : id {A = X} ~ id) → (H ∙h K) ~ (K ∙h H) eckmann-hilton-htpy H K x = - ( inv (identification-left-whisk (H x) (ap-id (K x))) ∙ + ( inv (identification-left-whisker (H x) (ap-id (K x))) ∙ ( htpy-swap-nat-right-htpy H K x)) ∙ - ( identification-right-whisk (ap-id (K x)) (H x)) + ( identification-right-whisker (ap-id (K x)) (H x)) ``` ### Action on identifications at `eq-htpy` diff --git a/src/foundation/morphisms-arrows.lagda.md b/src/foundation/morphisms-arrows.lagda.md index 6d5efae800..b520ab9b65 100644 --- a/src/foundation/morphisms-arrows.lagda.md +++ b/src/foundation/morphisms-arrows.lagda.md @@ -443,7 +443,7 @@ module _ ( htpy-domain-left-whisker-htpy-hom-arrow) ( htpy-codomain-left-whisker-htpy-hom-arrow) coh-left-whisker-htpy-hom-arrow a = - ( left-whisk-triangle-identifications' + ( left-whisker-triangle-identifications' ( ap (map-codomain-hom-arrow g h γ) (coh-hom-arrow f g α a)) ( ( ap ( coh-hom-arrow g h γ (map-domain-hom-arrow f g α a) ∙_) @@ -454,7 +454,7 @@ module _ ( nat-htpy ( coh-hom-arrow g h γ) ( htpy-domain-htpy-hom-arrow f g α β H a)))) ∙ - ( right-whisk-square-identification + ( right-whisker-square-identification ( ap ( map-codomain-hom-arrow g h γ) ( htpy-codomain-htpy-hom-arrow f g α β H (f a))) diff --git a/src/foundation/path-algebra.lagda.md b/src/foundation/path-algebra.lagda.md index d25a907734..4f838d30a7 100644 --- a/src/foundation/path-algebra.lagda.md +++ b/src/foundation/path-algebra.lagda.md @@ -238,17 +238,17 @@ module _ {l : Level} {A : UU l} {x y z : A} where - identification-left-whisk : + identification-left-whisker : (p : x = y) {q q' : y = z} → q = q' → (p ∙ q) = (p ∙ q') - identification-left-whisk p β = ap (p ∙_) β + identification-left-whisker p β = ap (p ∙_) β - identification-right-whisk : + identification-right-whisker : {p p' : x = y} → p = p' → (q : y = z) → (p ∙ q) = (p' ∙ q) - identification-right-whisk α q = ap (_∙ q) α + identification-right-whisker α q = ap (_∙ q) α - htpy-identification-left-whisk : + htpy-identification-left-whisker : {q q' : y = z} → q = q' → (_∙ q) ~ (_∙ q') - htpy-identification-left-whisk β p = identification-left-whisk p β + htpy-identification-left-whisker β p = identification-left-whisker p β ``` ### Whiskerings of identifications are equivalences @@ -258,30 +258,30 @@ module _ {l : Level} {A : UU l} {x y z : A} where - is-equiv-identification-left-whisk : + is-equiv-identification-left-whisker : (p : x = y) {q q' : y = z} → - is-equiv (identification-left-whisk p {q} {q'}) - is-equiv-identification-left-whisk p {q} {q'} = + is-equiv (identification-left-whisker p {q} {q'}) + is-equiv-identification-left-whisker p {q} {q'} = is-emb-is-equiv (is-equiv-concat p z) q q' - equiv-identification-left-whisk : + equiv-identification-left-whisker : (p : x = y) {q q' : y = z} → (q = q') ≃ (p ∙ q = p ∙ q') - pr1 (equiv-identification-left-whisk p) = identification-left-whisk p - pr2 (equiv-identification-left-whisk p) = is-equiv-identification-left-whisk p + pr1 (equiv-identification-left-whisker p) = identification-left-whisker p + pr2 (equiv-identification-left-whisker p) = is-equiv-identification-left-whisker p - is-equiv-identification-right-whisk : + is-equiv-identification-right-whisker : {p p' : x = y} → (q : y = z) → - is-equiv (λ (α : p = p') → identification-right-whisk α q) - is-equiv-identification-right-whisk {p} {p'} q = + is-equiv (λ (α : p = p') → identification-right-whisker α q) + is-equiv-identification-right-whisker {p} {p'} q = is-emb-is-equiv (is-equiv-concat' x q) p p' - equiv-identification-right-whisk : + equiv-identification-right-whisker : {p p' : x = y} → (q : y = z) → (p = p') ≃ (p ∙ q = p' ∙ q) - pr1 (equiv-identification-right-whisk q) α = identification-right-whisk α q - pr2 (equiv-identification-right-whisk q) = - is-equiv-identification-right-whisk q + pr1 (equiv-identification-right-whisker q) α = identification-right-whisker α q + pr2 (equiv-identification-right-whisker q) = + is-equiv-identification-right-whisker q ``` ### Reassociating one side of a higher identification is an equivalence @@ -310,63 +310,63 @@ module _ (p : x = y) (p' : x = z) {q : y = u} {q' : z = u} (r : u = v) where - equiv-right-whisk-square-identification : + equiv-right-whisker-square-identification : ( coherence-square-identifications p p' q q') ≃ ( coherence-square-identifications p p' (q ∙ r) (q' ∙ r)) - equiv-right-whisk-square-identification = + equiv-right-whisker-square-identification = ( equiv-concat-assoc' (p' ∙ (q' ∙ r)) p q r) ∘e ( equiv-concat-assoc p' q' r (p ∙ q ∙ r)) ∘e - ( equiv-identification-right-whisk r) + ( equiv-identification-right-whisker r) - right-whisk-square-identification : + right-whisker-square-identification : coherence-square-identifications p p' q q' → coherence-square-identifications p p' (q ∙ r) (q' ∙ r) - right-whisk-square-identification = - map-equiv equiv-right-whisk-square-identification + right-whisker-square-identification = + map-equiv equiv-right-whisker-square-identification - right-unwhisk-square-identifications : + right-unwhisker-square-identifications : coherence-square-identifications p p' (q ∙ r) (q' ∙ r) → coherence-square-identifications p p' q q' - right-unwhisk-square-identifications = - map-inv-equiv equiv-right-whisk-square-identification + right-unwhisker-square-identifications = + map-inv-equiv equiv-right-whisker-square-identification module _ {l : Level} {A : UU l} {x y z u v : A} (p : v = x) {q : x = y} {q' : x = z} {r : y = u} {r' : z = u} where - equiv-left-whisk-square-identification : + equiv-left-whisker-square-identification : ( coherence-square-identifications q q' r r') ≃ ( coherence-square-identifications (p ∙ q) (p ∙ q') r r') - equiv-left-whisk-square-identification = + equiv-left-whisker-square-identification = ( inv-equiv (equiv-concat-assoc p q' r' (p ∙ q ∙ r))) ∘e ( inv-equiv (equiv-concat-assoc' (p ∙ (q' ∙ r')) p q r)) ∘e - ( equiv-identification-left-whisk p) + ( equiv-identification-left-whisker p) - left-whisk-square-identification : + left-whisker-square-identification : coherence-square-identifications q q' r r' → coherence-square-identifications (p ∙ q) (p ∙ q') r r' - left-whisk-square-identification = - map-equiv equiv-left-whisk-square-identification + left-whisker-square-identification = + map-equiv equiv-left-whisker-square-identification - left-unwhisk-square-identification : + left-unwhisker-square-identification : coherence-square-identifications (p ∙ q) (p ∙ q') r r' → coherence-square-identifications q q' r r' - left-unwhisk-square-identification = - map-inv-equiv equiv-left-whisk-square-identification + left-unwhisker-square-identification = + map-inv-equiv equiv-left-whisker-square-identification module _ {l : Level} {A : UU l} {x y z u v w : A} where - equiv-both-whisk-square-identifications : + equiv-both-whisker-square-identifications : (p : x = y) {q : y = z} {q' : y = u} {r : z = v} {r' : u = v} → (s : v = w) → ( coherence-square-identifications q q' r r') ≃ ( coherence-square-identifications (p ∙ q) (p ∙ q') (r ∙ s) (r' ∙ s)) - equiv-both-whisk-square-identifications p {q} {q'} s = - ( equiv-left-whisk-square-identification p) ∘e - ( equiv-right-whisk-square-identification q q' s) + equiv-both-whisker-square-identifications p {q} {q'} s = + ( equiv-left-whisker-square-identification p) ∘e + ( equiv-right-whisker-square-identification q q' s) ``` ### Both horizontal and vertical concatenation of 2-paths are binary equivalences @@ -400,13 +400,13 @@ right-unit-law-vertical-concat-Id² = right-unit left-unit-law-horizontal-concat-Id² : {l : Level} {A : UU l} {x y z : A} {p : x = y} {u v : y = z} (γ : u = v) → horizontal-concat-Id² (refl {x = p}) γ = - identification-left-whisk p γ + identification-left-whisker p γ left-unit-law-horizontal-concat-Id² = left-unit-ap-binary (_∙_) right-unit-law-horizontal-concat-Id² : {l : Level} {A : UU l} {x y z : A} {p q : x = y} (α : p = q) {u : y = z} → horizontal-concat-Id² α (refl {x = u}) = - identification-right-whisk α u + identification-right-whisker α u right-unit-law-horizontal-concat-Id² = right-unit-ap-binary (_∙_) ``` @@ -448,16 +448,16 @@ module _ {l : Level} {A : UU l} {x y : A} where - left-unit-law-identification-left-whisk : + left-unit-law-identification-left-whisker : {p p' : x = y} (α : p = p') → - identification-left-whisk refl α = α - left-unit-law-identification-left-whisk refl = refl + identification-left-whisker refl α = α + left-unit-law-identification-left-whisker refl = refl - right-unit-law-identification-right-whisk : + right-unit-law-identification-right-whisker : {p p' : x = y} (α : p = p') → - identification-right-whisk α refl = + identification-right-whisker α refl = right-unit ∙ α ∙ inv right-unit - right-unit-law-identification-right-whisk {p = refl} refl = refl + right-unit-law-identification-right-whisker {p = refl} refl = refl ``` ### The whiskering operations allow us to commute higher identifications @@ -471,30 +471,30 @@ module _ {l : Level} {A : UU l} {x y z : A} where - path-swap-nat-identification-left-whisk : + path-swap-nat-identification-left-whisker : {q q' : y = z} (β : q = q') {p p' : x = y} (α : p = p') → coherence-square-identifications - ( identification-right-whisk α q) - ( identification-left-whisk p β) - ( identification-left-whisk p' β) - ( identification-right-whisk α q') - path-swap-nat-identification-left-whisk β = - nat-htpy (htpy-identification-left-whisk β) - - path-swap-nat-identification-right-whisk : + ( identification-right-whisker α q) + ( identification-left-whisker p β) + ( identification-left-whisker p' β) + ( identification-right-whisker α q') + path-swap-nat-identification-left-whisker β = + nat-htpy (htpy-identification-left-whisker β) + + path-swap-nat-identification-right-whisker : {p p' : x = y} (α : p = p') {q q' : y = z} (β : q = q') → coherence-square-identifications - ( identification-left-whisk p β) - ( identification-right-whisk α q) - ( identification-right-whisk α q') - ( identification-left-whisk p' β) - path-swap-nat-identification-right-whisk α = - nat-htpy (identification-right-whisk α) + ( identification-left-whisker p β) + ( identification-right-whisker α q) + ( identification-right-whisker α q') + ( identification-left-whisker p' β) + path-swap-nat-identification-right-whisker α = + nat-htpy (identification-right-whisker α) path-swap-right-undoes-path-swap-left : {q q' : y = z} (β : q = q') {p p' : x = y} (α : p = p') → - inv (path-swap-nat-identification-right-whisk α β) = - (path-swap-nat-identification-left-whisk β α) + inv (path-swap-nat-identification-right-whisker α β) = + (path-swap-nat-identification-left-whisker β α) path-swap-right-undoes-path-swap-left refl refl = refl ``` diff --git a/src/foundation/postcomposition-functions.lagda.md b/src/foundation/postcomposition-functions.lagda.md index 9ca67261ed..b966ed33dd 100644 --- a/src/foundation/postcomposition-functions.lagda.md +++ b/src/foundation/postcomposition-functions.lagda.md @@ -177,8 +177,8 @@ abstract is-equiv-postcomp-is-equiv {X = X} {Y = Y} f is-equiv-f A = is-equiv-is-invertible ( postcomp A (map-inv-is-equiv is-equiv-f)) - ( eq-htpy ∘ htpy-right-whisk (is-section-map-inv-is-equiv is-equiv-f)) - ( eq-htpy ∘ htpy-right-whisk (is-retraction-map-inv-is-equiv is-equiv-f)) + ( eq-htpy ∘ htpy-right-whisker (is-section-map-inv-is-equiv is-equiv-f)) + ( eq-htpy ∘ htpy-right-whisker (is-retraction-map-inv-is-equiv is-equiv-f)) is-equiv-postcomp-equiv : {l1 l2 : Level} {X : UU l1} {Y : UU l2} (f : X ≃ Y) → diff --git a/src/foundation/precomposition-functions.lagda.md b/src/foundation/precomposition-functions.lagda.md index 69f45b2776..1dfe87fb4f 100644 --- a/src/foundation/precomposition-functions.lagda.md +++ b/src/foundation/precomposition-functions.lagda.md @@ -72,7 +72,7 @@ compute-concat-htpy-precomp : compute-concat-htpy-precomp H K C k = ( ap ( eq-htpy) - ( eq-htpy (distributive-left-whisk-concat-htpy k H K))) ∙ + ( eq-htpy (distributive-left-whisker-concat-htpy k H K))) ∙ ( eq-htpy-concat-htpy (k ·l H) (k ·l K)) ``` diff --git a/src/foundation/pullbacks.lagda.md b/src/foundation/pullbacks.lagda.md index 64af30d769..5dcfcd8c98 100644 --- a/src/foundation/pullbacks.lagda.md +++ b/src/foundation/pullbacks.lagda.md @@ -525,7 +525,7 @@ module _ ( concat (tr-tr-refl-htpy-cone c) c')) ~ ( htpy-eq-square c c') left-map-triangle-parallel-cone-eq' c c' = - ( htpy-right-whisk + ( htpy-right-whisker ( multivariable-htpy-eq 3 ( compute-ind-htpy g ( λ g'' Hg' → @@ -568,7 +568,7 @@ module _ ( concat (tr-tr-refl-htpy-cone c) c') ~ ( htpy-eq-square c c') left-map-triangle-parallel-cone-eq c c' = - ( htpy-right-whisk + ( htpy-right-whisker ( multivariable-htpy-eq 5 ( compute-ind-htpy f ( λ f'' Hf' → diff --git a/src/foundation/transport-along-higher-identifications.lagda.md b/src/foundation/transport-along-higher-identifications.lagda.md index 8c86cdc2e1..4984a0bf6d 100644 --- a/src/foundation/transport-along-higher-identifications.lagda.md +++ b/src/foundation/transport-along-higher-identifications.lagda.md @@ -51,7 +51,7 @@ module _ coherence-square-identifications ( tr-Id-right q p) ( tr² (Id a) α p) - ( identification-left-whisk p α) + ( identification-left-whisker p α) ( tr-Id-right q' p) tr²-Id-right α p = inv-nat-htpy (λ (t : b = c) → tr-Id-right t p) α @@ -75,23 +75,23 @@ module _ {B : A → UU l2} where - tr²-left-whisk : + tr²-left-whisker : (p : x = y) {q q' : y = z} (β : q = q') (b : B x) → coherence-square-identifications ( tr-concat p q b) - ( tr² B (identification-left-whisk p β) b) - ( htpy-right-whisk (tr² B β) (tr B p) b) + ( tr² B (identification-left-whisker p β) b) + ( htpy-right-whisker (tr² B β) (tr B p) b) ( tr-concat p q' b) - tr²-left-whisk refl refl b = refl + tr²-left-whisker refl refl b = refl - tr²-right-whisk : + tr²-right-whisker : {p p' : x = y} (α : p = p') (q : y = z) (b : B x) → coherence-square-identifications ( tr-concat p q b) - ( tr² B (identification-right-whisk α q) b) - ( htpy-left-whisk (tr B q) (tr² B α) b) + ( tr² B (identification-right-whisker α q) b) + ( htpy-left-whisker (tr B q) (tr² B α) b) ( tr-concat p' q b) - tr²-right-whisk refl refl b = inv right-unit + tr²-right-whisker refl refl b = inv right-unit ``` #### Coherences and algebraic identities for `tr³` @@ -105,43 +105,43 @@ module _ tr³-htpy-swap-path-swap : {q q' : y = z} (β : q = q') {p p' : x = y} (α : p = p') (b : B x) → coherence-square-identifications - ( ( identification-right-whisk - ( tr²-concat (identification-left-whisk p β) - ( identification-right-whisk α q') b) + ( ( identification-right-whisker + ( tr²-concat (identification-left-whisker p β) + ( identification-right-whisker α q') b) ( tr-concat p' q' b)) ∙ ( vertical-concat-square - ( tr² B (identification-left-whisk p β) b) - ( tr² B (identification-right-whisk α q') b) + ( tr² B (identification-left-whisker p β) b) + ( tr² B (identification-right-whisker α q') b) ( tr-concat p' q' b) ( tr-concat p q' b) ( tr-concat p q b) - ( htpy-right-whisk (tr² B β) (tr B p) b) - ( htpy-left-whisk (tr B q') (tr² B α) b) - ( tr²-left-whisk p β b) - ( tr²-right-whisk α q' b))) - ( identification-right-whisk + ( htpy-right-whisker (tr² B β) (tr B p) b) + ( htpy-left-whisker (tr B q') (tr² B α) b) + ( tr²-left-whisker p β b) + ( tr²-right-whisker α q' b))) + ( identification-right-whisker ( tr³ ( B) - ( path-swap-nat-identification-left-whisk β α) + ( path-swap-nat-identification-left-whisker β α) ( b)) ( tr-concat p' q' b)) - ( identification-left-whisk + ( identification-left-whisker ( tr-concat p q b) ( htpy-swap-nat-right-htpy (tr² B β) (tr² B α) b)) - ( ( identification-right-whisk + ( ( identification-right-whisker ( tr²-concat - ( identification-right-whisk α q) - ( identification-left-whisk p' β) b) + ( identification-right-whisker α q) + ( identification-left-whisker p' β) b) ( tr-concat p' q' b)) ∙ ( vertical-concat-square - ( tr² B (identification-right-whisk α q) b) - ( tr² B (identification-left-whisk p' β) b) + ( tr² B (identification-right-whisker α q) b) + ( tr² B (identification-left-whisker p' β) b) ( tr-concat p' q' b) ( tr-concat p' q b) ( tr-concat p q b) - ( htpy-left-whisk (tr B q) (tr² B α) b) - ( htpy-right-whisk (tr² B β) (tr B p') b) - ( tr²-right-whisk α q b) - ( tr²-left-whisk p' β b))) + ( htpy-left-whisker (tr B q) (tr² B α) b) + ( htpy-right-whisker (tr² B β) (tr B p') b) + ( tr²-right-whisker α q b) + ( tr²-left-whisker p' β b))) tr³-htpy-swap-path-swap {q = refl} refl {p = refl} refl b = refl ``` diff --git a/src/foundation/whiskering-homotopies.lagda.md b/src/foundation/whiskering-homotopies.lagda.md index 07ce4de860..42cfd520af 100644 --- a/src/foundation/whiskering-homotopies.lagda.md +++ b/src/foundation/whiskering-homotopies.lagda.md @@ -70,20 +70,20 @@ module _ { f g : B → C} (h : A → B) where - compute-eq-htpy-htpy-eq-right-whisk : + compute-eq-htpy-htpy-eq-right-whisker : ( p : f = g) → eq-htpy ((htpy-eq p) ·r h) = ap (precomp h C) p - compute-eq-htpy-htpy-eq-right-whisk refl = + compute-eq-htpy-htpy-eq-right-whisker refl = eq-htpy-refl-htpy (f ∘ h) - compute-eq-htpy-right-whisk : + compute-eq-htpy-right-whisker : ( H : f ~ g) → eq-htpy (H ·r h) = ap (precomp h C) (eq-htpy H) - compute-eq-htpy-right-whisk H = + compute-eq-htpy-right-whisker H = ( ap ( λ K → eq-htpy (K ·r h)) ( inv (is-section-eq-htpy H))) ∙ - ( compute-eq-htpy-htpy-eq-right-whisk (eq-htpy H)) + ( compute-eq-htpy-htpy-eq-right-whisker (eq-htpy H)) ``` ```agda @@ -92,19 +92,19 @@ module _ { f g : A → B} (h : B → C) where - compute-eq-htpy-htpy-eq-left-whisk : + compute-eq-htpy-htpy-eq-left-whisker : ( p : f = g) → eq-htpy (h ·l (htpy-eq p)) = ap (postcomp A h) p - compute-eq-htpy-htpy-eq-left-whisk refl = + compute-eq-htpy-htpy-eq-left-whisker refl = eq-htpy-refl-htpy (h ∘ f) - compute-eq-htpy-left-whisk : + compute-eq-htpy-left-whisker : (H : f ~ g) → eq-htpy (h ·l H) = ap (postcomp A h) (eq-htpy H) - compute-eq-htpy-left-whisk H = + compute-eq-htpy-left-whisker H = ( ap ( λ K → eq-htpy (h ·l K)) ( inv (is-section-eq-htpy H))) ∙ - ( compute-eq-htpy-htpy-eq-left-whisk (eq-htpy H)) + ( compute-eq-htpy-htpy-eq-left-whisker (eq-htpy H)) ``` ### Whiskering a square of homotopies by a homotopy is an equivalence @@ -151,43 +151,43 @@ module _ ( H : f ~ g) (H' : f ~ g') {K : g ~ h} {K' : g' ~ h} (L : h ~ k) where - equiv-right-whisk-square-htpy : + equiv-right-whisker-square-htpy : ( coherence-square-homotopies H H' K K') ≃ ( coherence-square-homotopies H H' (K ∙h L) (K' ∙h L)) - equiv-right-whisk-square-htpy = + equiv-right-whisker-square-htpy = equiv-Π-equiv-family - ( λ a → equiv-right-whisk-square-identification (H a) (H' a) (L a)) + ( λ a → equiv-right-whisker-square-identification (H a) (H' a) (L a)) - right-whisk-square-htpy : + right-whisker-square-htpy : coherence-square-homotopies H H' K K' → coherence-square-homotopies H H' (K ∙h L) (K' ∙h L) - right-whisk-square-htpy = map-equiv equiv-right-whisk-square-htpy + right-whisker-square-htpy = map-equiv equiv-right-whisker-square-htpy - right-unwhisk-square-htpy : + right-unwhisker-square-htpy : coherence-square-homotopies H H' (K ∙h L) (K' ∙h L) → coherence-square-homotopies H H' K K' - right-unwhisk-square-htpy = map-inv-equiv equiv-right-whisk-square-htpy + right-unwhisker-square-htpy = map-inv-equiv equiv-right-whisker-square-htpy module _ ( L : k ~ f) {H : f ~ g} {H' : f ~ g'} {K : g ~ h} {K' : g' ~ h} where - equiv-left-whisk-square-htpy : + equiv-left-whisker-square-htpy : ( coherence-square-homotopies H H' K K') ≃ ( coherence-square-homotopies (L ∙h H) (L ∙h H') K K') - equiv-left-whisk-square-htpy = + equiv-left-whisker-square-htpy = equiv-Π-equiv-family - ( λ a → equiv-left-whisk-square-identification (L a)) + ( λ a → equiv-left-whisker-square-identification (L a)) - left-whisk-square-htpy : + left-whisker-square-htpy : coherence-square-homotopies H H' K K' → coherence-square-homotopies (L ∙h H) (L ∙h H') K K' - left-whisk-square-htpy = map-equiv equiv-left-whisk-square-htpy + left-whisker-square-htpy = map-equiv equiv-left-whisker-square-htpy - left-unwhisk-square-htpy : + left-unwhisker-square-htpy : coherence-square-homotopies (L ∙h H) (L ∙h H') K K' → coherence-square-homotopies H H' K K' - left-unwhisk-square-htpy = map-inv-equiv equiv-left-whisk-square-htpy + left-unwhisker-square-htpy = map-inv-equiv equiv-left-whisker-square-htpy module _ { l1 l2 : Level} {A : UU l1} {B : UU l2} @@ -195,22 +195,22 @@ module _ ( H : f ~ g) {K : g ~ h} {K' : g ~ h'} {L : h ~ k} {L' : h' ~ k} (M : k ~ m) where - equiv-both-whisk-square-htpy : + equiv-both-whisker-square-htpy : ( coherence-square-homotopies K K' L L') ≃ ( coherence-square-homotopies (H ∙h K) (H ∙h K') (L ∙h M) (L' ∙h M)) - equiv-both-whisk-square-htpy = + equiv-both-whisker-square-htpy = equiv-Π-equiv-family - ( λ a → equiv-both-whisk-square-identifications (H a) (M a)) + ( λ a → equiv-both-whisker-square-identifications (H a) (M a)) - both-whisk-square-htpy : + both-whisker-square-htpy : ( coherence-square-homotopies K K' L L') → ( coherence-square-homotopies (H ∙h K) (H ∙h K') (L ∙h M) (L' ∙h M)) - both-whisk-square-htpy = map-equiv equiv-both-whisk-square-htpy + both-whisker-square-htpy = map-equiv equiv-both-whisker-square-htpy - both-unwhisk-square-htpy : + both-unwhisker-square-htpy : ( coherence-square-homotopies (H ∙h K) (H ∙h K') (L ∙h M) (L' ∙h M)) → ( coherence-square-homotopies K K' L L') - both-unwhisk-square-htpy = map-inv-equiv equiv-both-whisk-square-htpy + both-unwhisker-square-htpy = map-inv-equiv equiv-both-whisker-square-htpy ``` ### Whiskering a square of homotopies by a map @@ -249,10 +249,10 @@ module _ ( H : g ~ h) (H' : g ~ h') {K : h ~ k} {K' : h' ~ k} where - ap-left-whisk-coherence-square-homotopies : + ap-left-whisker-coherence-square-homotopies : coherence-square-homotopies H H' K K' → coherence-square-homotopies (f ·l H) (f ·l H') (f ·l K) (f ·l K') - ap-left-whisk-coherence-square-homotopies α a = + ap-left-whisker-coherence-square-homotopies α a = coherence-square-identifications-ap f (H a) (H' a) (K a) (K' a) (α a) module _ @@ -261,10 +261,10 @@ module _ ( f : A → B) where - ap-right-whisk-coherence-square-homotopies : + ap-right-whisker-coherence-square-homotopies : coherence-square-homotopies H H' K K' → coherence-square-homotopies (H ·r f) (H' ·r f) (K ·r f) (K' ·r f) - ap-right-whisk-coherence-square-homotopies α = α ·r f + ap-right-whisker-coherence-square-homotopies α = α ·r f ``` ### The two definitions of horizontal concatenation of homotopies agree diff --git a/src/orthogonal-factorization-systems/lifting-squares.lagda.md b/src/orthogonal-factorization-systems/lifting-squares.lagda.md index 5e76fe7735..9f1b6a521d 100644 --- a/src/orthogonal-factorization-systems/lifting-squares.lagda.md +++ b/src/orthogonal-factorization-systems/lifting-squares.lagda.md @@ -158,8 +158,8 @@ module _ ( g ·l is-extension-lifting-square l) ( is-lift-lifting-square l' ·r f) ( coherence-lifting-square l) - ( left-whisk-coherence-triangle-homotopies (K ·r f) g E) - ( right-whisk-coherence-triangle-homotopies (g ·l K) L f) + ( left-whisker-coherence-triangle-homotopies (K ·r f) g E) + ( right-whisker-coherence-triangle-homotopies (g ·l K) L f) ( coherence-lifting-square l') htpy-lifting-square : diff --git a/src/orthogonal-factorization-systems/lifts-of-maps.lagda.md b/src/orthogonal-factorization-systems/lifts-of-maps.lagda.md index c4834595cd..cb332761b6 100644 --- a/src/orthogonal-factorization-systems/lifts-of-maps.lagda.md +++ b/src/orthogonal-factorization-systems/lifts-of-maps.lagda.md @@ -139,8 +139,8 @@ module _ {i : A → B} {f : X → B} {g : X → A} where - is-lift-left-whisk : (h : B → S) → is-lift i f g → is-lift (h ∘ i) (h ∘ f) g - is-lift-left-whisk h H x = ap h (H x) + is-lift-left-whisker : (h : B → S) → is-lift i f g → is-lift (h ∘ i) (h ∘ f) g + is-lift-left-whisker h H x = ap h (H x) ``` ## Right whiskering of lifts of maps @@ -160,8 +160,8 @@ module _ {i : A → B} {f : X → B} {g : X → A} where - is-lift-right-whisk : is-lift i f g → (h : S → X) → is-lift i (f ∘ h) (g ∘ h) - is-lift-right-whisk H h s = H (h s) + is-lift-right-whisker : is-lift i f g → (h : S → X) → is-lift i (f ∘ h) (g ∘ h) + is-lift-right-whisker H h s = H (h s) ``` ## Properties diff --git a/src/orthogonal-factorization-systems/precomposition-lifts-families-of-elements.lagda.md b/src/orthogonal-factorization-systems/precomposition-lifts-families-of-elements.lagda.md index 1cc89a4539..99141fc2a1 100644 --- a/src/orthogonal-factorization-systems/precomposition-lifts-families-of-elements.lagda.md +++ b/src/orthogonal-factorization-systems/precomposition-lifts-families-of-elements.lagda.md @@ -179,7 +179,7 @@ module _ coherence-triangle-precomp-lift-family-of-elements-refl-htpy b = ( htpy-eq (compute-triangle-precomp-lift-family-of-elements-htpy B a) b) ∙ ( inv right-unit) ∙ - ( identification-left-whisk + ( identification-left-whisker ( triangle-precomp-lift-family-of-elements-htpy-refl-htpy B a b) ( inv (eq-htpy-refl-htpy (b ∘ f)))) @@ -335,7 +335,7 @@ module _ statement-coherence-htpy-precomp-coherence-square-precomp-map-inv-distributive-Π-Σ ( refl-htpy) coherence-htpy-precomp-coherence-square-precomp-map-inv-distributive-Π-Σ-refl-htpy = - ( ap-left-whisk-htpy + ( ap-left-whisker-htpy ( map-inv-distributive-Π-Σ) ( compute-htpy-precomp-lifted-family-of-elements B)) ∙h ( inv-htpy diff --git a/src/orthogonal-factorization-systems/pullback-hom.lagda.md b/src/orthogonal-factorization-systems/pullback-hom.lagda.md index 3a9d93683b..0d510ff618 100644 --- a/src/orthogonal-factorization-systems/pullback-hom.lagda.md +++ b/src/orthogonal-factorization-systems/pullback-hom.lagda.md @@ -227,7 +227,7 @@ module _ ( λ x → ap ( is-map-over-map-total-fibered-map f g h x ∙_) - ( inv-htpy-left-whisk-inv-htpy g E x))) ∘e + ( inv-htpy-left-whisker-inv-htpy g E x))) ∘e ( equiv-right-transpose-htpy-concat ( inv-htpy (L ·r f)) ( g ·l E) diff --git a/src/synthetic-homotopy-theory/circle.lagda.md b/src/synthetic-homotopy-theory/circle.lagda.md index 0d3f688f2e..4a0dd3cbd2 100644 --- a/src/synthetic-homotopy-theory/circle.lagda.md +++ b/src/synthetic-homotopy-theory/circle.lagda.md @@ -314,7 +314,7 @@ apply-up-suspension-meridian-suspension-sphere-1-circle-sphere-1 ( ap sphere-1-circle (ap circle-sphere-1 (meridian-suspension n))) ( ap sphere-1-circle circle-sphere-1-south-sphere-1-eq-base-𝕊¹) ( sphere-1-circle-base-𝕊¹-eq-south-sphere-1))) ∙ - ( identification-right-whisk + ( identification-right-whisker ( inv ( ap-concat ( sphere-1-circle) @@ -341,7 +341,7 @@ apply-loop-universal-property-𝕊¹-sphere-1-circle-sphere-1 = ( ap sphere-1-circle loop-𝕊¹) ( sphere-1-circle-base-𝕊¹-eq-north-sphere-1) ( meridian-sphere 0 (one-Fin 1)))) ∙ - ( identification-right-whisk + ( identification-right-whisker ( loop-universal-property-𝕊¹ ( north-sphere 1) ( north-sphere-1-loop)) @@ -350,7 +350,7 @@ apply-loop-universal-property-𝕊¹-sphere-1-circle-sphere-1 = ( sphere-1-circle-base-𝕊¹-eq-north-sphere-1) ( north-sphere-1-loop) ( meridian-sphere 0 (one-Fin 1))) ∙ - ( identification-left-whisk + ( identification-left-whisker ( sphere-1-circle-base-𝕊¹-eq-north-sphere-1) ( is-section-right-concat-inv ( meridian-sphere 0 (zero-Fin 1)) @@ -374,7 +374,7 @@ map-sphere-1-circle-sphere-1-meridian (inl (inr n)) = ( sphere-1-circle-sphere-1-south-sphere-1) ( ( apply-up-suspension-meridian-suspension-sphere-1-circle-sphere-1 ( inl (inr n))) ∙ - ( identification-right-whisk + ( identification-right-whisker ( ap-concat ( sphere-1-circle) ( circle-sphere-1-north-sphere-1-eq-base-𝕊¹) @@ -384,7 +384,7 @@ map-sphere-1-circle-sphere-1-meridian (inl (inr n)) = ( ap sphere-1-circle (circle-sphere-1-north-sphere-1-eq-base-𝕊¹)) ( ap sphere-1-circle loop-𝕊¹) ( sphere-1-circle-base-𝕊¹-eq-south-sphere-1)) ∙ - ( identification-left-whisk + ( identification-left-whisker ( ap sphere-1-circle (circle-sphere-1-north-sphere-1-eq-base-𝕊¹)) ( apply-loop-universal-property-𝕊¹-sphere-1-circle-sphere-1)) ∙ ( inv @@ -450,7 +450,7 @@ apply-up-suspension-meridian-one-suspension-circle-sphere-1-circle : ( circle-sphere-1-south-sphere-1-eq-base-𝕊¹) ( circle-sphere-1-north-sphere-1-eq-base-𝕊¹) apply-up-suspension-meridian-one-suspension-circle-sphere-1-circle = - ( identification-right-whisk + ( identification-right-whisker ( ap-inv ( circle-sphere-1) ( meridian-suspension (one-Fin 1))) @@ -460,7 +460,7 @@ apply-up-suspension-meridian-one-suspension-circle-sphere-1-circle = ( inv (ap circle-sphere-1 (meridian-suspension (one-Fin 1)))) ( circle-sphere-1-north-sphere-1-eq-base-𝕊¹) ( refl)) ∙ - ( identification-left-whisk + ( identification-left-whisker ( inv (ap circle-sphere-1 (meridian-suspension (one-Fin 1)))) ( inv ( compute-meridian-cogap-suspension @@ -471,7 +471,7 @@ apply-up-suspension-meridian-one-suspension-circle-sphere-1-circle = ( inv (ap circle-sphere-1 (meridian-suspension (one-Fin 1)))) ( ap circle-sphere-1 (meridian-suspension (one-Fin 1))) ( circle-sphere-1-south-sphere-1-eq-base-𝕊¹))) ∙ - ( identification-right-whisk + ( identification-right-whisker ( left-inv (ap circle-sphere-1 (meridian-suspension (one-Fin 1)))) ( circle-sphere-1-south-sphere-1-eq-base-𝕊¹)) @@ -482,7 +482,7 @@ apply-up-suspension-meridian-zero-suspension-circle-sphere-1-circle : ( loop-𝕊¹) ( circle-sphere-1-north-sphere-1-eq-base-𝕊¹) apply-up-suspension-meridian-zero-suspension-circle-sphere-1-circle = - ( identification-right-whisk + ( identification-right-whisker ( ap-concat ( circle-sphere-1) ( meridian-sphere 0 (zero-Fin 1)) @@ -492,7 +492,7 @@ apply-up-suspension-meridian-zero-suspension-circle-sphere-1-circle = ( ap circle-sphere-1 (meridian-suspension (zero-Fin 1))) ( ap circle-sphere-1 (inv ( meridian-sphere 0 (one-Fin 1)))) ( circle-sphere-1-north-sphere-1-eq-base-𝕊¹)) ∙ - ( identification-left-whisk + ( identification-left-whisker ( ap circle-sphere-1 (meridian-suspension (zero-Fin 1))) ( apply-up-suspension-meridian-one-suspension-circle-sphere-1-circle)) ∙ ( compute-meridian-cogap-suspension @@ -513,21 +513,21 @@ circle-sphere-1-circle-loop-𝕊¹ = ( circle-sphere-1) ( sphere-1-circle-base-𝕊¹-eq-north-sphere-1)) ( circle-sphere-1-north-sphere-1-eq-base-𝕊¹)) ∙ - ( identification-right-whisk + ( identification-right-whisker ( inv ( ap-concat ( circle-sphere-1) ( ap sphere-1-circle loop-𝕊¹) ( sphere-1-circle-base-𝕊¹-eq-north-sphere-1))) ( circle-sphere-1-north-sphere-1-eq-base-𝕊¹)) ∙ - ( identification-right-whisk + ( identification-right-whisker ( ap ( ap circle-sphere-1) ( loop-universal-property-𝕊¹ ( north-sphere 1) ( north-sphere-1-loop))) ( circle-sphere-1-north-sphere-1-eq-base-𝕊¹)) ∙ - ( identification-right-whisk + ( identification-right-whisker ( ap-concat ( circle-sphere-1) ( sphere-1-circle-base-𝕊¹-eq-north-sphere-1) @@ -537,7 +537,7 @@ circle-sphere-1-circle-loop-𝕊¹ = ( ap circle-sphere-1 sphere-1-circle-base-𝕊¹-eq-north-sphere-1) ( ap circle-sphere-1 north-sphere-1-loop) ( circle-sphere-1-north-sphere-1-eq-base-𝕊¹)) ∙ - ( identification-left-whisk + ( identification-left-whisker ( ap circle-sphere-1 sphere-1-circle-base-𝕊¹-eq-north-sphere-1) ( apply-up-suspension-meridian-zero-suspension-circle-sphere-1-circle)) ∙ ( inv diff --git a/src/synthetic-homotopy-theory/double-loop-spaces.lagda.md b/src/synthetic-homotopy-theory/double-loop-spaces.lagda.md index 06ece9f61a..43f0092c69 100644 --- a/src/synthetic-homotopy-theory/double-loop-spaces.lagda.md +++ b/src/synthetic-homotopy-theory/double-loop-spaces.lagda.md @@ -95,17 +95,17 @@ right-unit-law-horizontal-concat-Ω² : right-unit-law-horizontal-concat-Ω² {α = α} = ( right-unit-law-horizontal-concat-Id² α) ∙ (naturality-right-unit-Ω² α) -left-unit-law-identification-left-whisk-Ω² : +left-unit-law-identification-left-whisker-Ω² : {l : Level} {A : UU l} {a : A} (α : type-Ω² a) → - identification-left-whisk (refl-Ω (pair A a)) α = α -left-unit-law-identification-left-whisk-Ω² α = - left-unit-law-identification-left-whisk α + identification-left-whisker (refl-Ω (pair A a)) α = α +left-unit-law-identification-left-whisker-Ω² α = + left-unit-law-identification-left-whisker α -right-unit-law-identification-right-whisk-Ω² : +right-unit-law-identification-right-whisker-Ω² : {l : Level} {A : UU l} {a : A} (α : type-Ω² a) → - identification-right-whisk α (refl-Ω (pair A a)) = α -right-unit-law-identification-right-whisk-Ω² α = - (right-unit-law-identification-right-whisk α) ∙ right-unit + identification-right-whisker α (refl-Ω (pair A a)) = α +right-unit-law-identification-right-whisker-Ω² α = + (right-unit-law-identification-right-whisker α) ∙ right-unit ``` ### The interchange law for double loop spaces diff --git a/src/synthetic-homotopy-theory/eckmann-hilton-argument.lagda.md b/src/synthetic-homotopy-theory/eckmann-hilton-argument.lagda.md index 628a72f567..656ffd8cf9 100644 --- a/src/synthetic-homotopy-theory/eckmann-hilton-argument.lagda.md +++ b/src/synthetic-homotopy-theory/eckmann-hilton-argument.lagda.md @@ -114,12 +114,12 @@ Eckmann-Hilton argument is often depicted as follows: The first picture represents the vertical concatination of `α` and `β`. The notation ` | γ | δ |` represents the horizontal concatination of 2-dimensional identifications `γ` and `δ`. Then `| refl | α |` is just -[`identification-left-whisk refl-Ω² α`](https://unimath.github.io/agda-unimath/foundation.path-algebra.html#7697). +[`identification-left-whisker refl-Ω² α`](https://unimath.github.io/agda-unimath/foundation.path-algebra.html#7697). The first and last equality come from the unit laws of whiskering. And the middle equality can be recognized as -[`path-swap-nat-identification-left-whisk`](https://unimath.github.io/agda-unimath/foundation.path-algebra.html#9823), -which is the naturality condition of `htpy-identification-left-whisk α` applied -to `β`. +[`path-swap-nat-identification-left-whisker`](https://unimath.github.io/agda-unimath/foundation.path-algebra.html#9823), +which is the naturality condition of `htpy-identification-left-whisker α` +applied to `β`. Since this version of the Eckmann-Hilton argument may seem more complicated than the algbraic version, the reader is entitled to wonder why we bother giving this @@ -132,7 +132,7 @@ induces an autoequivalence `Ω X ≃ Ω X` given by concatinating on the right b `l`. This is shown in [`tr-Id-right`](https://unimath.github.io/agda-unimath/foundation.identity-types.html#11216). A 2-loop `s` induces a homotpy `id {A = Ω X} ~ id` given by -[`htpy-identification-left-whisk`](https://unimath.github.io/agda-unimath/foundation.path-algebra.html#7977). +[`htpy-identification-left-whisker`](https://unimath.github.io/agda-unimath/foundation.path-algebra.html#7977). This claim is shown in TODO (provide link). Thus, the 2-D descent data of `Id base` is (up to equivalence) exactly the homotopy at the heart of this version of the Eckmann-Hilton argument. @@ -172,19 +172,19 @@ module _ (α β : type-Ω² (point-Pointed-Type A)) → α ∙ β = β ∙ α eckmann-hilton-Ω² α β = equational-reasoning_ (α ∙ β) = - ( identification-left-whisk refl α) ∙ - ( identification-right-whisk β refl) + ( identification-left-whisker refl α) ∙ + ( identification-right-whisker β refl) by ( inv ( horizontal-concat-Id² - ( left-unit-law-identification-left-whisk-Ω² α) - ( right-unit-law-identification-right-whisk-Ω² β))) - = ( identification-right-whisk β refl) ∙ - ( identification-left-whisk refl α) - by ( path-swap-nat-identification-left-whisk α β) + ( left-unit-law-identification-left-whisker-Ω² α) + ( right-unit-law-identification-right-whisker-Ω² β))) + = ( identification-right-whisker β refl) ∙ + ( identification-left-whisker refl α) + by ( path-swap-nat-identification-left-whisker α β) = β ∙ α by ( horizontal-concat-Id² - ( right-unit-law-identification-right-whisk-Ω² β) - ( left-unit-law-identification-left-whisk-Ω² α)) + ( right-unit-law-identification-right-whisker-Ω² β) + ( left-unit-law-identification-left-whisker-Ω² α)) ``` #### Using right whiskering @@ -211,17 +211,17 @@ module _ (α β : type-Ω² (point-Pointed-Type A)) → α ∙ β = β ∙ α eckmann-hilton-inverse-Ω² α β = equational-reasoning_ (α ∙ β) - = (identification-right-whisk α refl) ∙ (identification-left-whisk refl β) + = (identification-right-whisker α refl) ∙ (identification-left-whisker refl β) by ( inv ( horizontal-concat-Id² - ( right-unit-law-identification-right-whisk-Ω² α) - ( left-unit-law-identification-left-whisk-Ω² β))) - = (identification-left-whisk refl β) ∙ (identification-right-whisk α refl) - by path-swap-nat-identification-right-whisk α β + ( right-unit-law-identification-right-whisker-Ω² α) + ( left-unit-law-identification-left-whisker-Ω² β))) + = (identification-left-whisker refl β) ∙ (identification-right-whisker α refl) + by path-swap-nat-identification-right-whisker α β = β ∙ α by ( horizontal-concat-Id² - ( left-unit-law-identification-left-whisk-Ω² β)) - ( right-unit-law-identification-right-whisk-Ω² α) + ( left-unit-law-identification-left-whisker-Ω² β)) + ( right-unit-law-identification-right-whisker-Ω² α) ``` We now prove that this Eckmann-Hilton identification "undoes" the previously @@ -252,87 +252,87 @@ module _ = concat ( inv ( horizontal-concat-Id² - ( left-unit-law-identification-left-whisk-Ω² α) - ( right-unit-law-identification-right-whisk-Ω² β))) + ( left-unit-law-identification-left-whisker-Ω² α) + ( right-unit-law-identification-right-whisker-Ω² β))) ( _) ( inv ( concat ( inv ( horizontal-concat-Id² - ( right-unit-law-identification-right-whisk-Ω² β) - ( left-unit-law-identification-left-whisk-Ω² α))) + ( right-unit-law-identification-right-whisker-Ω² β) + ( left-unit-law-identification-left-whisker-Ω² α))) ( _) - ( path-swap-nat-identification-right-whisk β α))) + ( path-swap-nat-identification-right-whisker β α))) by distributive-inv-concat ( concat ( inv ( horizontal-concat-Id² - ( right-unit-law-identification-right-whisk-Ω² β) - ( left-unit-law-identification-left-whisk-Ω² α))) + ( right-unit-law-identification-right-whisker-Ω² β) + ( left-unit-law-identification-left-whisker-Ω² α))) ( _) - ( path-swap-nat-identification-right-whisk β α)) + ( path-swap-nat-identification-right-whisker β α)) ( horizontal-concat-Id² - ( left-unit-law-identification-left-whisk-Ω² α) - ( right-unit-law-identification-right-whisk-Ω² β)) + ( left-unit-law-identification-left-whisker-Ω² α) + ( right-unit-law-identification-right-whisker-Ω² β)) = concat ( inv ( horizontal-concat-Id² - ( left-unit-law-identification-left-whisk-Ω² α) - ( right-unit-law-identification-right-whisk-Ω² β))) + ( left-unit-law-identification-left-whisker-Ω² α) + ( right-unit-law-identification-right-whisker-Ω² β))) ( _) ( concat - ( inv (path-swap-nat-identification-right-whisk β α)) + ( inv (path-swap-nat-identification-right-whisker β α)) ( _) ( inv ( inv ( horizontal-concat-Id² - ( right-unit-law-identification-right-whisk-Ω² β) - ( left-unit-law-identification-left-whisk-Ω² α))))) - by identification-left-whisk + ( right-unit-law-identification-right-whisker-Ω² β) + ( left-unit-law-identification-left-whisker-Ω² α))))) + by identification-left-whisker ( inv ( horizontal-concat-Id² - ( left-unit-law-identification-left-whisk-Ω² α) - ( right-unit-law-identification-right-whisk-Ω² β))) + ( left-unit-law-identification-left-whisker-Ω² α) + ( right-unit-law-identification-right-whisker-Ω² β))) ( distributive-inv-concat ( inv ( horizontal-concat-Id² - ( right-unit-law-identification-right-whisk-Ω² β) - ( left-unit-law-identification-left-whisk-Ω² α))) - ( path-swap-nat-identification-right-whisk β α)) + ( right-unit-law-identification-right-whisker-Ω² β) + ( left-unit-law-identification-left-whisker-Ω² α))) + ( path-swap-nat-identification-right-whisker β α)) = concat ( inv ( horizontal-concat-Id² - ( left-unit-law-identification-left-whisk-Ω² α) - ( right-unit-law-identification-right-whisk-Ω² β))) + ( left-unit-law-identification-left-whisker-Ω² α) + ( right-unit-law-identification-right-whisker-Ω² β))) ( _) ( concat - ( path-swap-nat-identification-left-whisk α β) + ( path-swap-nat-identification-left-whisker α β) ( _) ( horizontal-concat-Id² - ( right-unit-law-identification-right-whisk-Ω² β) - ( left-unit-law-identification-left-whisk-Ω² α))) - by identification-left-whisk + ( right-unit-law-identification-right-whisker-Ω² β) + ( left-unit-law-identification-left-whisker-Ω² α))) + by identification-left-whisker ( inv ( horizontal-concat-Id² - ( left-unit-law-identification-left-whisk-Ω² α) - ( right-unit-law-identification-right-whisk-Ω² β))) + ( left-unit-law-identification-left-whisker-Ω² α) + ( right-unit-law-identification-right-whisker-Ω² β))) ( horizontal-concat-Id² ( path-swap-right-undoes-path-swap-left α β) ( inv-inv ( horizontal-concat-Id² - ( right-unit-law-identification-right-whisk-Ω² β) - ( left-unit-law-identification-left-whisk-Ω² α)))) + ( right-unit-law-identification-right-whisker-Ω² β) + ( left-unit-law-identification-left-whisker-Ω² α)))) = eckmann-hilton-Ω² α β by inv ( assoc ( inv ( horizontal-concat-Id² - ( left-unit-law-identification-left-whisk-Ω² α) - ( right-unit-law-identification-right-whisk-Ω² β))) - ( path-swap-nat-identification-left-whisk α β) + ( left-unit-law-identification-left-whisker-Ω² α) + ( right-unit-law-identification-right-whisker-Ω² β))) + ( path-swap-nat-identification-left-whisker α β) ( horizontal-concat-Id² - ( right-unit-law-identification-right-whisk-Ω² β) - ( left-unit-law-identification-left-whisk-Ω² α))) + ( right-unit-law-identification-right-whisker-Ω² β) + ( left-unit-law-identification-left-whisker-Ω² α))) ``` ## Properties diff --git a/src/synthetic-homotopy-theory/functoriality-sequential-colimits.lagda.md b/src/synthetic-homotopy-theory/functoriality-sequential-colimits.lagda.md index d00f137058..f5255da870 100644 --- a/src/synthetic-homotopy-theory/functoriality-sequential-colimits.lagda.md +++ b/src/synthetic-homotopy-theory/functoriality-sequential-colimits.lagda.md @@ -274,7 +274,7 @@ module _ ( ap-concat-htpy _ ( ( right-unit-htpy) ∙h ( inv-htpy - ( left-unit-law-left-whisk-htpy + ( left-unit-law-left-whisker-htpy ( coherence-cocone-sequential-diagram c n))))) preserves-id-map-sequential-colimit-hom-sequential-diagram : @@ -329,7 +329,7 @@ module _ ( g) ( n)))) pr2 htpy-preserves-comp-map-sequential-colimit-hom-sequential-diagram n = - ( right-whisk-square-htpy + ( right-whisker-square-htpy ( htpy-htpy-cocone-map-sequential-colimit-hom-sequential-diagram up-c c'' ( comp-hom-sequential-diagram A B C g f) ( n)) diff --git a/src/synthetic-homotopy-theory/smash-products-of-pointed-types.lagda.md b/src/synthetic-homotopy-theory/smash-products-of-pointed-types.lagda.md index 6ccd7154b2..ebca8f6ac7 100644 --- a/src/synthetic-homotopy-theory/smash-products-of-pointed-types.lagda.md +++ b/src/synthetic-homotopy-theory/smash-products-of-pointed-types.lagda.md @@ -162,7 +162,7 @@ module _ ( map-pointed-map {A = A ∨∗ B} {B = unit-Pointed-Type} ( terminal-pointed-map (A ∨∗ B))) ( x)) ∙ - ( htpy-right-whisk + ( htpy-right-whisker ( htpy-pointed-htpy ( inr-pushout-Pointed-Type ( pointed-map-prod-wedge-Pointed-Type A B) @@ -199,7 +199,7 @@ module _ ( apd ( contraction-map-smash-prod-wedge-Pointed-Type) ( glue-wedge-Pointed-Type A B))) ∙ - ( identification-left-whisk + ( identification-left-whisker ( contraction-map-smash-prod-wedge-Pointed-Type ( map-inl-wedge-Pointed-Type A B (point-Pointed-Type A))) ( ap-const @@ -249,7 +249,7 @@ module _ inl-glue-smash-prod-Pointed-Type (point-Pointed-Type A) = inr-glue-smash-prod-Pointed-Type (point-Pointed-Type B) coh-glue-smash-prod-Pointed-Type = - ( identification-left-whisk + ( identification-left-whisker ( ap ( map-smash-prod-prod-Pointed-Type A B) ( inv (compute-inl-prod-wedge-Pointed-Type A B (point-Pointed-Type A)))) @@ -263,8 +263,8 @@ module _ ( glue-wedge-Pointed-Type A B)) ( contraction-map-smash-prod-wedge-Pointed-Type A B ( map-inr-wedge-Pointed-Type A B (point-Pointed-Type B))))) ∙ - ( identification-right-whisk - ( ( identification-left-whisk + ( identification-right-whisker + ( ( identification-left-whisker ( ap (map-smash-prod-prod-Pointed-Type A B) ( inv ( compute-inl-prod-wedge-Pointed-Type A B @@ -362,7 +362,7 @@ pr2 (universal-property-smash-prod-Pointed-Type A B C f) = ( map-pointed-map f) ( inr-glue-smash-prod-Pointed-Type A B y) ∙ ( preserves-point-pointed-map f))) , - ( ( identification-right-whisk + ( ( identification-right-whisker ( ap² ( map-pointed-map f) ( inv (coh-glue-smash-prod-Pointed-Type A B))) diff --git a/src/synthetic-homotopy-theory/suspension-structures.lagda.md b/src/synthetic-homotopy-theory/suspension-structures.lagda.md index 6a3e59877e..d7f51f381b 100644 --- a/src/synthetic-homotopy-theory/suspension-structures.lagda.md +++ b/src/synthetic-homotopy-theory/suspension-structures.lagda.md @@ -324,10 +324,10 @@ module _ (x : X) → coherence-square-identifications ( h x) - ( identification-left-whisk + ( identification-left-whisker ( meridian-suspension-structure c x) ( q)) - ( identification-right-whisk + ( identification-right-whisker ( p) ( meridian-suspension-structure c' x)) ( h' x))) @@ -343,10 +343,10 @@ module _ (x : X) → coherence-square-identifications ( h x) - ( identification-left-whisk + ( identification-left-whisker ( meridian-suspension-structure c x) ( q)) - ( identification-right-whisk + ( identification-right-whisker ( p) ( meridian-suspension-structure c' x)) ( pr2 y x))) @@ -358,8 +358,8 @@ module _ (x : X) → coherence-square-identifications ( h x) - ( identification-left-whisk (meridian-suspension-structure c x) q) - ( identification-right-whisk + ( identification-left-whisker (meridian-suspension-structure c x) q) + ( identification-right-whisker ( refl) ( meridian-suspension-structure c' x)) ( h' x)) @@ -391,10 +391,10 @@ module _ (x : X) → coherence-square-identifications ( meridian-htpy-suspension-structure h x) - ( identification-left-whisk + ( identification-left-whisker ( meridian-suspension-structure c x) ( south-htpy-in-htpy-suspension-structure H)) - ( identification-right-whisk + ( identification-right-whisker ( north-htpy-in-htpy-suspension-structure H) ( meridian-suspension-structure c' x)) ( meridian-htpy-suspension-structure h' x) From 0ac9514b186f94ef1d809c402f1eb881265999a3 Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Mon, 29 Jan 2024 13:23:53 +0100 Subject: [PATCH 002/150] replace htpy-right-whisker with right-whisker-htpy, and htpy-left-whisker with left-whisker-htpy --- .../coherently-invertible-maps.lagda.md | 2 +- src/foundation-core/equivalences.lagda.md | 2 +- .../whiskering-homotopies.lagda.md | 20 +++++++++---------- .../coherently-invertible-maps.lagda.md | 8 ++++---- .../commuting-squares-of-maps.lagda.md | 6 +++--- .../coproduct-decompositions.lagda.md | 2 +- src/foundation/homotopies.lagda.md | 4 ++-- .../postcomposition-functions.lagda.md | 4 ++-- src/foundation/pullbacks.lagda.md | 4 ++-- ...port-along-higher-identifications.lagda.md | 12 +++++------ src/foundation/whiskering-homotopies.lagda.md | 8 ++++---- .../pullback-hom.lagda.md | 2 +- .../smash-products-of-pointed-types.lagda.md | 2 +- 13 files changed, 38 insertions(+), 38 deletions(-) diff --git a/src/foundation-core/coherently-invertible-maps.lagda.md b/src/foundation-core/coherently-invertible-maps.lagda.md index 350db64040..b4e5e76878 100644 --- a/src/foundation-core/coherently-invertible-maps.lagda.md +++ b/src/foundation-core/coherently-invertible-maps.lagda.md @@ -155,7 +155,7 @@ module _ ( coh-is-coherently-invertible-id ( is-section-is-invertible H) x)))) ( nat-htpy - ( htpy-right-whisker (is-retraction-is-invertible H) f) + ( right-whisker-htpy (is-retraction-is-invertible H) f) ( is-section-is-invertible H x)))) abstract diff --git a/src/foundation-core/equivalences.lagda.md b/src/foundation-core/equivalences.lagda.md index ff695140a2..e9be25b48f 100644 --- a/src/foundation-core/equivalences.lagda.md +++ b/src/foundation-core/equivalences.lagda.md @@ -523,7 +523,7 @@ module _ is-equiv-section-is-equiv (g , is-section-g) is-equiv-section-f = is-equiv-htpy h ( ( f ·l (inv-htpy (is-section-map-inv-is-equiv is-equiv-section-f))) ∙h - ( htpy-right-whisker is-section-g h)) + ( right-whisker-htpy is-section-g h)) ( is-equiv-map-inv-is-equiv is-equiv-section-f) where h : A → B diff --git a/src/foundation-core/whiskering-homotopies.lagda.md b/src/foundation-core/whiskering-homotopies.lagda.md index 747d73fec7..54b759cb3c 100644 --- a/src/foundation-core/whiskering-homotopies.lagda.md +++ b/src/foundation-core/whiskering-homotopies.lagda.md @@ -58,13 +58,13 @@ module _ {l1 l2 l3 : Level} {A : UU l1} {B : A → UU l2} {C : A → UU l3} where - htpy-left-whisker : + left-whisker-htpy : (h : {x : A} → B x → C x) {f g : (x : A) → B x} → f ~ g → h ∘ f ~ h ∘ g - htpy-left-whisker h H x = ap h (H x) + left-whisker-htpy h H x = ap h (H x) infixr 17 _·l_ - _·l_ = htpy-left-whisker + _·l_ = left-whisker-htpy ``` ### Right whiskering of homotopies @@ -74,14 +74,14 @@ module _ {l1 l2 l3 : Level} {A : UU l1} {B : A → UU l2} {C : (x : A) → B x → UU l3} where - htpy-right-whisker : + right-whisker-htpy : {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-whisker H f x = H (f x) + right-whisker-htpy H f x = H (f x) infixl 16 _·r_ - _·r_ = htpy-right-whisker + _·r_ = right-whisker-htpy ``` ### Horizontal composition of homotopies @@ -154,8 +154,8 @@ module _ left-whisker-inv-htpy : g ·l (inv-htpy H) ~ inv-htpy (g ·l H) left-whisker-inv-htpy x = ap-inv g (H x) - inv-htpy-left-whisker-inv-htpy : inv-htpy (g ·l H) ~ g ·l (inv-htpy H) - inv-htpy-left-whisker-inv-htpy = inv-htpy left-whisker-inv-htpy + inv-left-whisker-htpy-inv-htpy : inv-htpy (g ·l H) ~ g ·l (inv-htpy H) + inv-left-whisker-htpy-inv-htpy = inv-htpy left-whisker-inv-htpy module _ {l1 l2 l3 : Level} {A : UU l1} {B : A → UU l2} {C : (x : A) → B x → UU l3} @@ -166,8 +166,8 @@ module _ right-whisker-inv-htpy : inv-htpy H ·r f ~ inv-htpy (H ·r f) right-whisker-inv-htpy = refl-htpy - inv-htpy-right-whisker-inv-htpy : inv-htpy H ·r f ~ inv-htpy (H ·r f) - inv-htpy-right-whisker-inv-htpy = inv-htpy right-whisker-inv-htpy + inv-right-whisker-htpy-inv-htpy : inv-htpy H ·r f ~ inv-htpy (H ·r f) + inv-right-whisker-htpy-inv-htpy = inv-htpy right-whisker-inv-htpy ``` ### Distributivity of whiskering over composition of homotopies diff --git a/src/foundation/coherently-invertible-maps.lagda.md b/src/foundation/coherently-invertible-maps.lagda.md index b519feb96b..f0c684e6da 100644 --- a/src/foundation/coherently-invertible-maps.lagda.md +++ b/src/foundation/coherently-invertible-maps.lagda.md @@ -47,16 +47,16 @@ abstract ( λ s → Σ ( ( map-section f s ∘ f) ~ id) ( λ H → - ( htpy-right-whisker (is-section-map-section f s) f) ~ - ( htpy-left-whisker f H)))) + ( right-whisker-htpy (is-section-map-section f s) f) ~ + ( left-whisker-htpy f H)))) ( associative-Σ ( B → A) ( λ g → (f ∘ g) ~ id) ( λ s → Σ ( ( map-section f s ∘ f) ~ id) ( λ H → - ( htpy-right-whisker (is-section-map-section f s) f) ~ - ( htpy-left-whisker f H)))) + ( right-whisker-htpy (is-section-map-section f s) f) ~ + ( left-whisker-htpy f H)))) ( is-contr-Σ ( is-contr-section-is-equiv (is-equiv-is-coherently-invertible H)) ( section-is-coherently-invertible H) diff --git a/src/foundation/commuting-squares-of-maps.lagda.md b/src/foundation/commuting-squares-of-maps.lagda.md index 6367269dfc..9905f854d5 100644 --- a/src/foundation/commuting-squares-of-maps.lagda.md +++ b/src/foundation/commuting-squares-of-maps.lagda.md @@ -830,7 +830,7 @@ module _ ap-binary ( λ L q → eq-htpy L ∙ q) ( eq-htpy (associative-left-whisker-comp h bottom-right H)) - ( compute-eq-htpy-right-whisker + ( compute-eq-right-whisker-htpy ( top-left) ( h ·l K)) @@ -917,7 +917,7 @@ module _ by ap-binary ( λ p L → p ∙ eq-htpy L) - ( compute-eq-htpy-right-whisker left-top (h ·l K)) + ( compute-eq-right-whisker-htpy left-top (h ·l K)) ( eq-htpy (associative-left-whisker-comp h right-bottom H)) ``` @@ -968,7 +968,7 @@ module _ ( ( precomp f W) ·l ( precomp-coherence-square-maps top left right bottom H W)) distributive-precomp-right-whisker-coherence-square-maps f g = - compute-eq-htpy-right-whisker f (g ·l H) + compute-eq-right-whisker-htpy f (g ·l H) ``` Similarly, we can calculate transpositions of left-whiskered squares with the diff --git a/src/foundation/coproduct-decompositions.lagda.md b/src/foundation/coproduct-decompositions.lagda.md index c32a89cf1e..fbab92bf70 100644 --- a/src/foundation/coproduct-decompositions.lagda.md +++ b/src/foundation/coproduct-decompositions.lagda.md @@ -109,7 +109,7 @@ pr2 (equiv-coproduct-Decomposition-full-subuniverse X) = ( d) ( id-equiv , ( id-equiv , - htpy-right-whisker + right-whisker-htpy ( id-map-coprod _ _) ( map-equiv ( matching-correspondence-binary-coproduct-Decomposition-subuniverse diff --git a/src/foundation/homotopies.lagda.md b/src/foundation/homotopies.lagda.md index c95e55e865..114920220e 100644 --- a/src/foundation/homotopies.lagda.md +++ b/src/foundation/homotopies.lagda.md @@ -292,8 +292,8 @@ htpy-swap-nat-right-htpy : {l0 l1 l2 : Level} {X : UU l0} {Y : UU l1} {Z : UU l2} {f g : X → Y} {f' g' : Y → Z} (H' : f' ~ g') (H : f ~ g) → - (htpy-right-whisker H' f ∙h htpy-left-whisker g' H) ~ - (htpy-left-whisker f' H ∙h htpy-right-whisker H' g) + (right-whisker-htpy H' f ∙h left-whisker-htpy g' H) ~ + (left-whisker-htpy f' H ∙h right-whisker-htpy H' g) htpy-swap-nat-right-htpy H' H x = nat-htpy H' (H x) diff --git a/src/foundation/postcomposition-functions.lagda.md b/src/foundation/postcomposition-functions.lagda.md index b966ed33dd..138adbfe82 100644 --- a/src/foundation/postcomposition-functions.lagda.md +++ b/src/foundation/postcomposition-functions.lagda.md @@ -177,8 +177,8 @@ abstract is-equiv-postcomp-is-equiv {X = X} {Y = Y} f is-equiv-f A = is-equiv-is-invertible ( postcomp A (map-inv-is-equiv is-equiv-f)) - ( eq-htpy ∘ htpy-right-whisker (is-section-map-inv-is-equiv is-equiv-f)) - ( eq-htpy ∘ htpy-right-whisker (is-retraction-map-inv-is-equiv is-equiv-f)) + ( eq-htpy ∘ right-whisker-htpy (is-section-map-inv-is-equiv is-equiv-f)) + ( eq-htpy ∘ right-whisker-htpy (is-retraction-map-inv-is-equiv is-equiv-f)) is-equiv-postcomp-equiv : {l1 l2 : Level} {X : UU l1} {Y : UU l2} (f : X ≃ Y) → diff --git a/src/foundation/pullbacks.lagda.md b/src/foundation/pullbacks.lagda.md index 5dcfcd8c98..59e31653bc 100644 --- a/src/foundation/pullbacks.lagda.md +++ b/src/foundation/pullbacks.lagda.md @@ -525,7 +525,7 @@ module _ ( concat (tr-tr-refl-htpy-cone c) c')) ~ ( htpy-eq-square c c') left-map-triangle-parallel-cone-eq' c c' = - ( htpy-right-whisker + ( right-whisker-htpy ( multivariable-htpy-eq 3 ( compute-ind-htpy g ( λ g'' Hg' → @@ -568,7 +568,7 @@ module _ ( concat (tr-tr-refl-htpy-cone c) c') ~ ( htpy-eq-square c c') left-map-triangle-parallel-cone-eq c c' = - ( htpy-right-whisker + ( right-whisker-htpy ( multivariable-htpy-eq 5 ( compute-ind-htpy f ( λ f'' Hf' → diff --git a/src/foundation/transport-along-higher-identifications.lagda.md b/src/foundation/transport-along-higher-identifications.lagda.md index 4984a0bf6d..40b126f1b8 100644 --- a/src/foundation/transport-along-higher-identifications.lagda.md +++ b/src/foundation/transport-along-higher-identifications.lagda.md @@ -80,7 +80,7 @@ module _ coherence-square-identifications ( tr-concat p q b) ( tr² B (identification-left-whisker p β) b) - ( htpy-right-whisker (tr² B β) (tr B p) b) + ( right-whisker-htpy (tr² B β) (tr B p) b) ( tr-concat p q' b) tr²-left-whisker refl refl b = refl @@ -89,7 +89,7 @@ module _ coherence-square-identifications ( tr-concat p q b) ( tr² B (identification-right-whisker α q) b) - ( htpy-left-whisker (tr B q) (tr² B α) b) + ( left-whisker-htpy (tr B q) (tr² B α) b) ( tr-concat p' q b) tr²-right-whisker refl refl b = inv right-unit ``` @@ -115,8 +115,8 @@ module _ ( tr-concat p' q' b) ( tr-concat p q' b) ( tr-concat p q b) - ( htpy-right-whisker (tr² B β) (tr B p) b) - ( htpy-left-whisker (tr B q') (tr² B α) b) + ( right-whisker-htpy (tr² B β) (tr B p) b) + ( left-whisker-htpy (tr B q') (tr² B α) b) ( tr²-left-whisker p β b) ( tr²-right-whisker α q' b))) ( identification-right-whisker @@ -139,8 +139,8 @@ module _ ( tr-concat p' q' b) ( tr-concat p' q b) ( tr-concat p q b) - ( htpy-left-whisker (tr B q) (tr² B α) b) - ( htpy-right-whisker (tr² B β) (tr B p') b) + ( left-whisker-htpy (tr B q) (tr² B α) b) + ( right-whisker-htpy (tr² B β) (tr B p') b) ( tr²-right-whisker α q b) ( tr²-left-whisker p' β b))) tr³-htpy-swap-path-swap {q = refl} refl {p = refl} refl b = refl diff --git a/src/foundation/whiskering-homotopies.lagda.md b/src/foundation/whiskering-homotopies.lagda.md index 42cfd520af..7660c263e1 100644 --- a/src/foundation/whiskering-homotopies.lagda.md +++ b/src/foundation/whiskering-homotopies.lagda.md @@ -76,10 +76,10 @@ module _ compute-eq-htpy-htpy-eq-right-whisker refl = eq-htpy-refl-htpy (f ∘ h) - compute-eq-htpy-right-whisker : + compute-eq-right-whisker-htpy : ( H : f ~ g) → eq-htpy (H ·r h) = ap (precomp h C) (eq-htpy H) - compute-eq-htpy-right-whisker H = + compute-eq-right-whisker-htpy H = ( ap ( λ K → eq-htpy (K ·r h)) ( inv (is-section-eq-htpy H))) ∙ @@ -97,10 +97,10 @@ module _ compute-eq-htpy-htpy-eq-left-whisker refl = eq-htpy-refl-htpy (h ∘ f) - compute-eq-htpy-left-whisker : + compute-eq-left-whisker-htpy : (H : f ~ g) → eq-htpy (h ·l H) = ap (postcomp A h) (eq-htpy H) - compute-eq-htpy-left-whisker H = + compute-eq-left-whisker-htpy H = ( ap ( λ K → eq-htpy (h ·l K)) ( inv (is-section-eq-htpy H))) ∙ diff --git a/src/orthogonal-factorization-systems/pullback-hom.lagda.md b/src/orthogonal-factorization-systems/pullback-hom.lagda.md index 0d510ff618..ac982c2926 100644 --- a/src/orthogonal-factorization-systems/pullback-hom.lagda.md +++ b/src/orthogonal-factorization-systems/pullback-hom.lagda.md @@ -227,7 +227,7 @@ module _ ( λ x → ap ( is-map-over-map-total-fibered-map f g h x ∙_) - ( inv-htpy-left-whisker-inv-htpy g E x))) ∘e + ( inv-left-whisker-htpy-inv-htpy g E x))) ∘e ( equiv-right-transpose-htpy-concat ( inv-htpy (L ·r f)) ( g ·l E) diff --git a/src/synthetic-homotopy-theory/smash-products-of-pointed-types.lagda.md b/src/synthetic-homotopy-theory/smash-products-of-pointed-types.lagda.md index ebca8f6ac7..82c7bc543f 100644 --- a/src/synthetic-homotopy-theory/smash-products-of-pointed-types.lagda.md +++ b/src/synthetic-homotopy-theory/smash-products-of-pointed-types.lagda.md @@ -162,7 +162,7 @@ module _ ( map-pointed-map {A = A ∨∗ B} {B = unit-Pointed-Type} ( terminal-pointed-map (A ∨∗ B))) ( x)) ∙ - ( htpy-right-whisker + ( right-whisker-htpy ( htpy-pointed-htpy ( inr-pushout-Pointed-Type ( pointed-map-prod-wedge-Pointed-Type A B) From b34b11a519104fc6f2fbe2694595eca4dde65544 Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Mon, 29 Jan 2024 13:26:25 +0100 Subject: [PATCH 003/150] replace whisker-htpy-inv-htpy with whisker-inv-htpy --- src/foundation-core/whiskering-homotopies.lagda.md | 8 ++++---- .../pullback-hom.lagda.md | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/foundation-core/whiskering-homotopies.lagda.md b/src/foundation-core/whiskering-homotopies.lagda.md index 54b759cb3c..31fe6dd2c6 100644 --- a/src/foundation-core/whiskering-homotopies.lagda.md +++ b/src/foundation-core/whiskering-homotopies.lagda.md @@ -154,8 +154,8 @@ module _ left-whisker-inv-htpy : g ·l (inv-htpy H) ~ inv-htpy (g ·l H) left-whisker-inv-htpy x = ap-inv g (H x) - inv-left-whisker-htpy-inv-htpy : inv-htpy (g ·l H) ~ g ·l (inv-htpy H) - inv-left-whisker-htpy-inv-htpy = inv-htpy left-whisker-inv-htpy + inv-left-whisker-inv-htpy : inv-htpy (g ·l H) ~ g ·l (inv-htpy H) + inv-left-whisker-inv-htpy = inv-htpy left-whisker-inv-htpy module _ {l1 l2 l3 : Level} {A : UU l1} {B : A → UU l2} {C : (x : A) → B x → UU l3} @@ -166,8 +166,8 @@ module _ right-whisker-inv-htpy : inv-htpy H ·r f ~ inv-htpy (H ·r f) right-whisker-inv-htpy = refl-htpy - inv-right-whisker-htpy-inv-htpy : inv-htpy H ·r f ~ inv-htpy (H ·r f) - inv-right-whisker-htpy-inv-htpy = inv-htpy right-whisker-inv-htpy + inv-right-whisker-inv-htpy : inv-htpy H ·r f ~ inv-htpy (H ·r f) + inv-right-whisker-inv-htpy = inv-htpy right-whisker-inv-htpy ``` ### Distributivity of whiskering over composition of homotopies diff --git a/src/orthogonal-factorization-systems/pullback-hom.lagda.md b/src/orthogonal-factorization-systems/pullback-hom.lagda.md index ac982c2926..bd753fec50 100644 --- a/src/orthogonal-factorization-systems/pullback-hom.lagda.md +++ b/src/orthogonal-factorization-systems/pullback-hom.lagda.md @@ -227,7 +227,7 @@ module _ ( λ x → ap ( is-map-over-map-total-fibered-map f g h x ∙_) - ( inv-left-whisker-htpy-inv-htpy g E x))) ∘e + ( inv-left-whisker-inv-htpy g E x))) ∘e ( equiv-right-transpose-htpy-concat ( inv-htpy (L ·r f)) ( g ·l E) From b6cbf11e8fede4245f726eb77abb6c4887b068bf Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Mon, 29 Jan 2024 13:29:17 +0100 Subject: [PATCH 004/150] replace whisker-comp with whisker-htpy --- src/foundation-core/whiskering-homotopies.lagda.md | 8 ++++---- src/foundation/commuting-prisms-of-maps.lagda.md | 2 +- src/foundation/commuting-squares-of-maps.lagda.md | 6 +++--- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/foundation-core/whiskering-homotopies.lagda.md b/src/foundation-core/whiskering-homotopies.lagda.md index 31fe6dd2c6..fc9937ab82 100644 --- a/src/foundation-core/whiskering-homotopies.lagda.md +++ b/src/foundation-core/whiskering-homotopies.lagda.md @@ -203,11 +203,11 @@ module _ {A : UU l1} {B : A → UU l2} {C : A → UU l3} {D : A → UU l4} where - associative-left-whisker-comp : + associative-left-whisker-htpy : ( 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-whisker-comp k h H x = inv (ap-comp k h (H x)) + associative-left-whisker-htpy k h H x = inv (ap-comp k h (H x)) module _ { l1 l2 l3 l4 : Level} @@ -218,8 +218,8 @@ module _ ( H : {x : A} {y : B x} → f {x} {y} ~ g {x} {y}) where - associative-right-whisker-comp : (H ·r h) ·r k ~ H ·r (h ∘ k) - associative-right-whisker-comp = refl-htpy + associative-right-whisker-htpy : (H ·r h) ·r k ~ H ·r (h ∘ k) + associative-right-whisker-htpy = refl-htpy ``` ### A coherence for homotopies to the identity function diff --git a/src/foundation/commuting-prisms-of-maps.lagda.md b/src/foundation/commuting-prisms-of-maps.lagda.md index 67b5776b55..df36c6612a 100644 --- a/src/foundation/commuting-prisms-of-maps.lagda.md +++ b/src/foundation/commuting-prisms-of-maps.lagda.md @@ -105,7 +105,7 @@ module _ ( prism-top)) ∙h ( ap-concat-htpy ( hC' ·l front-top) - ( associative-left-whisker-comp hC' hC top)))) ∙h + ( associative-left-whisker-htpy hC' hC top)))) ∙h ( inv-htpy-assoc-htpy ( front-bottom ·r hA) ( hC' ·l front-top) diff --git a/src/foundation/commuting-squares-of-maps.lagda.md b/src/foundation/commuting-squares-of-maps.lagda.md index 9905f854d5..075a365ef5 100644 --- a/src/foundation/commuting-squares-of-maps.lagda.md +++ b/src/foundation/commuting-squares-of-maps.lagda.md @@ -490,7 +490,7 @@ module _ ( mid-right ·l sq-top)) ∙h ( ap-concat-htpy ( bottom-right ·l (sq-mid ·r top-left)) - ( associative-left-whisker-comp bottom-right mid-right sq-top)))) ∙h + ( associative-left-whisker-htpy bottom-right mid-right sq-top)))) ∙h ( inv-htpy-assoc-htpy ( sq-bottom ·r mid-left ·r top-left) ( bottom-right ·l (sq-mid ·r top-left)) @@ -829,7 +829,7 @@ module _ by ap-binary ( λ L q → eq-htpy L ∙ q) - ( eq-htpy (associative-left-whisker-comp h bottom-right H)) + ( eq-htpy (associative-left-whisker-htpy h bottom-right H)) ( compute-eq-right-whisker-htpy ( top-left) ( h ·l K)) @@ -918,7 +918,7 @@ module _ ap-binary ( λ p L → p ∙ eq-htpy L) ( compute-eq-right-whisker-htpy left-top (h ·l K)) - ( eq-htpy (associative-left-whisker-comp h right-bottom H)) + ( eq-htpy (associative-left-whisker-htpy h right-bottom H)) ``` ### Transposing by precomposition of whiskered squares From fd1a8a6605dddb3d1cd52a13a89d5254cdaee35d Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Mon, 29 Jan 2024 13:30:56 +0100 Subject: [PATCH 005/150] replace associative-left/right-whisker-htpy with preserves-comp-left/right-whisker-htpy --- src/foundation-core/whiskering-homotopies.lagda.md | 8 ++++---- src/foundation/commuting-prisms-of-maps.lagda.md | 2 +- src/foundation/commuting-squares-of-maps.lagda.md | 6 +++--- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/foundation-core/whiskering-homotopies.lagda.md b/src/foundation-core/whiskering-homotopies.lagda.md index fc9937ab82..e64a3ad51f 100644 --- a/src/foundation-core/whiskering-homotopies.lagda.md +++ b/src/foundation-core/whiskering-homotopies.lagda.md @@ -203,11 +203,11 @@ module _ {A : UU l1} {B : A → UU l2} {C : A → UU l3} {D : A → UU l4} where - associative-left-whisker-htpy : + preserves-comp-left-whisker-htpy : ( 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-whisker-htpy k h H x = inv (ap-comp k h (H x)) + preserves-comp-left-whisker-htpy k h H x = inv (ap-comp k h (H x)) module _ { l1 l2 l3 l4 : Level} @@ -218,8 +218,8 @@ module _ ( H : {x : A} {y : B x} → f {x} {y} ~ g {x} {y}) where - associative-right-whisker-htpy : (H ·r h) ·r k ~ H ·r (h ∘ k) - associative-right-whisker-htpy = refl-htpy + preserves-comp-right-whisker-htpy : (H ·r h) ·r k ~ H ·r (h ∘ k) + preserves-comp-right-whisker-htpy = refl-htpy ``` ### A coherence for homotopies to the identity function diff --git a/src/foundation/commuting-prisms-of-maps.lagda.md b/src/foundation/commuting-prisms-of-maps.lagda.md index df36c6612a..31fcf3b462 100644 --- a/src/foundation/commuting-prisms-of-maps.lagda.md +++ b/src/foundation/commuting-prisms-of-maps.lagda.md @@ -105,7 +105,7 @@ module _ ( prism-top)) ∙h ( ap-concat-htpy ( hC' ·l front-top) - ( associative-left-whisker-htpy hC' hC top)))) ∙h + ( preserves-comp-left-whisker-htpy hC' hC top)))) ∙h ( inv-htpy-assoc-htpy ( front-bottom ·r hA) ( hC' ·l front-top) diff --git a/src/foundation/commuting-squares-of-maps.lagda.md b/src/foundation/commuting-squares-of-maps.lagda.md index 075a365ef5..52ef24b1eb 100644 --- a/src/foundation/commuting-squares-of-maps.lagda.md +++ b/src/foundation/commuting-squares-of-maps.lagda.md @@ -490,7 +490,7 @@ module _ ( mid-right ·l sq-top)) ∙h ( ap-concat-htpy ( bottom-right ·l (sq-mid ·r top-left)) - ( associative-left-whisker-htpy bottom-right mid-right sq-top)))) ∙h + ( preserves-comp-left-whisker-htpy bottom-right mid-right sq-top)))) ∙h ( inv-htpy-assoc-htpy ( sq-bottom ·r mid-left ·r top-left) ( bottom-right ·l (sq-mid ·r top-left)) @@ -829,7 +829,7 @@ module _ by ap-binary ( λ L q → eq-htpy L ∙ q) - ( eq-htpy (associative-left-whisker-htpy h bottom-right H)) + ( eq-htpy (preserves-comp-left-whisker-htpy h bottom-right H)) ( compute-eq-right-whisker-htpy ( top-left) ( h ·l K)) @@ -918,7 +918,7 @@ module _ ap-binary ( λ p L → p ∙ eq-htpy L) ( compute-eq-right-whisker-htpy left-top (h ·l K)) - ( eq-htpy (associative-left-whisker-htpy h right-bottom H)) + ( eq-htpy (preserves-comp-left-whisker-htpy h right-bottom H)) ``` ### Transposing by precomposition of whiskered squares From 4e8c33312f064ef2ee3e9a9a5cb24978adcf8f54 Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Mon, 29 Jan 2024 13:44:46 +0100 Subject: [PATCH 006/150] make pre-commit --- .../commuting-cubes-of-maps.lagda.md | 19 +++++++++++++++---- .../commuting-squares-of-maps.lagda.md | 5 ++++- src/foundation/path-algebra.lagda.md | 6 ++++-- .../postcomposition-functions.lagda.md | 6 ++++-- .../lifts-of-maps.lagda.md | 3 ++- .../eckmann-hilton-argument.lagda.md | 6 ++++-- 6 files changed, 33 insertions(+), 12 deletions(-) diff --git a/src/foundation/commuting-cubes-of-maps.lagda.md b/src/foundation/commuting-cubes-of-maps.lagda.md index c45b484fbd..d8f6c6deb7 100644 --- a/src/foundation/commuting-cubes-of-maps.lagda.md +++ b/src/foundation/commuting-cubes-of-maps.lagda.md @@ -431,11 +431,15 @@ module _ inv-htpy ( horizontal-concat-htpy² ( horizontal-concat-htpy² - ( distributive-precomp-right-whisker-coherence-square-maps W hB h' h + ( distributive-precomp-right-whisker-coherence-square-maps W hB + ( h') + ( h) ( hD) ( inv-htpy front-left) ( f')) - ( distributive-precomp-left-whisker-coherence-square-maps W hA f' f + ( distributive-precomp-left-whisker-coherence-square-maps W hA + ( f') + ( f) ( hB) ( inv-htpy back-left) ( h))) @@ -511,7 +515,11 @@ module _ ( precomp-back-right-inv ·r (precomp k W))) by horizontal-concat-htpy² - ( distributive-precomp-left-whisker-coherence-square-maps W g' f' k' h' + ( distributive-precomp-left-whisker-coherence-square-maps W + ( g') + ( f') + ( k') + ( h') ( top) ( hD)) ( horizontal-concat-htpy² @@ -519,7 +527,10 @@ module _ ( hD) ( inv-htpy front-right) ( g')) - ( distributive-precomp-left-whisker-coherence-square-maps W hA g' g hC + ( distributive-precomp-left-whisker-coherence-square-maps W hA + ( g') + ( g) + ( hC) ( inv-htpy back-right) ( k))) where diff --git a/src/foundation/commuting-squares-of-maps.lagda.md b/src/foundation/commuting-squares-of-maps.lagda.md index 52ef24b1eb..7a1a592d44 100644 --- a/src/foundation/commuting-squares-of-maps.lagda.md +++ b/src/foundation/commuting-squares-of-maps.lagda.md @@ -490,7 +490,10 @@ module _ ( mid-right ·l sq-top)) ∙h ( ap-concat-htpy ( bottom-right ·l (sq-mid ·r top-left)) - ( preserves-comp-left-whisker-htpy bottom-right mid-right sq-top)))) ∙h + ( preserves-comp-left-whisker-htpy + ( bottom-right) + ( mid-right) + ( sq-top))))) ∙h ( inv-htpy-assoc-htpy ( sq-bottom ·r mid-left ·r top-left) ( bottom-right ·l (sq-mid ·r top-left)) diff --git a/src/foundation/path-algebra.lagda.md b/src/foundation/path-algebra.lagda.md index 4f838d30a7..b8c65ffee3 100644 --- a/src/foundation/path-algebra.lagda.md +++ b/src/foundation/path-algebra.lagda.md @@ -268,7 +268,8 @@ module _ (p : x = y) {q q' : y = z} → (q = q') ≃ (p ∙ q = p ∙ q') pr1 (equiv-identification-left-whisker p) = identification-left-whisker p - pr2 (equiv-identification-left-whisker p) = is-equiv-identification-left-whisker p + pr2 (equiv-identification-left-whisker p) = + is-equiv-identification-left-whisker p is-equiv-identification-right-whisker : {p p' : x = y} → (q : y = z) → @@ -279,7 +280,8 @@ module _ equiv-identification-right-whisker : {p p' : x = y} → (q : y = z) → (p = p') ≃ (p ∙ q = p' ∙ q) - pr1 (equiv-identification-right-whisker q) α = identification-right-whisker α q + pr1 (equiv-identification-right-whisker q) α = + identification-right-whisker α q pr2 (equiv-identification-right-whisker q) = is-equiv-identification-right-whisker q ``` diff --git a/src/foundation/postcomposition-functions.lagda.md b/src/foundation/postcomposition-functions.lagda.md index 138adbfe82..5fcce0ba10 100644 --- a/src/foundation/postcomposition-functions.lagda.md +++ b/src/foundation/postcomposition-functions.lagda.md @@ -177,8 +177,10 @@ abstract is-equiv-postcomp-is-equiv {X = X} {Y = Y} f is-equiv-f A = is-equiv-is-invertible ( postcomp A (map-inv-is-equiv is-equiv-f)) - ( eq-htpy ∘ right-whisker-htpy (is-section-map-inv-is-equiv is-equiv-f)) - ( eq-htpy ∘ right-whisker-htpy (is-retraction-map-inv-is-equiv is-equiv-f)) + ( eq-htpy ∘ + right-whisker-htpy (is-section-map-inv-is-equiv is-equiv-f)) + ( eq-htpy ∘ + right-whisker-htpy (is-retraction-map-inv-is-equiv is-equiv-f)) is-equiv-postcomp-equiv : {l1 l2 : Level} {X : UU l1} {Y : UU l2} (f : X ≃ Y) → diff --git a/src/orthogonal-factorization-systems/lifts-of-maps.lagda.md b/src/orthogonal-factorization-systems/lifts-of-maps.lagda.md index cb332761b6..7cda519d05 100644 --- a/src/orthogonal-factorization-systems/lifts-of-maps.lagda.md +++ b/src/orthogonal-factorization-systems/lifts-of-maps.lagda.md @@ -160,7 +160,8 @@ module _ {i : A → B} {f : X → B} {g : X → A} where - is-lift-right-whisker : is-lift i f g → (h : S → X) → is-lift i (f ∘ h) (g ∘ h) + is-lift-right-whisker : + is-lift i f g → (h : S → X) → is-lift i (f ∘ h) (g ∘ h) is-lift-right-whisker H h s = H (h s) ``` diff --git a/src/synthetic-homotopy-theory/eckmann-hilton-argument.lagda.md b/src/synthetic-homotopy-theory/eckmann-hilton-argument.lagda.md index 656ffd8cf9..3a84270439 100644 --- a/src/synthetic-homotopy-theory/eckmann-hilton-argument.lagda.md +++ b/src/synthetic-homotopy-theory/eckmann-hilton-argument.lagda.md @@ -211,12 +211,14 @@ module _ (α β : type-Ω² (point-Pointed-Type A)) → α ∙ β = β ∙ α eckmann-hilton-inverse-Ω² α β = equational-reasoning_ (α ∙ β) - = (identification-right-whisker α refl) ∙ (identification-left-whisker refl β) + = ( identification-right-whisker α refl) ∙ + ( identification-left-whisker refl β) by ( inv ( horizontal-concat-Id² ( right-unit-law-identification-right-whisker-Ω² α) ( left-unit-law-identification-left-whisker-Ω² β))) - = (identification-left-whisker refl β) ∙ (identification-right-whisker α refl) + = ( identification-left-whisker refl β) ∙ + ( identification-right-whisker α refl) by path-swap-nat-identification-right-whisker α β = β ∙ α by ( horizontal-concat-Id² From dc27e791fa42b03f1cf2a7fb66ce2196577c6c72 Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Mon, 29 Jan 2024 13:52:31 +0100 Subject: [PATCH 007/150] replace identification-left/right-whisker with left/right-whisker-identification --- ...ting-triangles-of-identifications.lagda.md | 8 +- src/foundation/homotopies.lagda.md | 4 +- src/foundation/path-algebra.lagda.md | 96 +++++++-------- ...port-along-higher-identifications.lagda.md | 32 ++--- ...sition-lifts-families-of-elements.lagda.md | 2 +- src/synthetic-homotopy-theory/circle.lagda.md | 28 ++--- .../double-loop-spaces.lagda.md | 16 +-- .../eckmann-hilton-argument.lagda.md | 116 +++++++++--------- .../smash-products-of-pointed-types.lagda.md | 10 +- .../suspension-structures.lagda.md | 16 +-- 10 files changed, 164 insertions(+), 164 deletions(-) diff --git a/src/foundation/commuting-triangles-of-identifications.lagda.md b/src/foundation/commuting-triangles-of-identifications.lagda.md index 558f4cbdd3..0f4809126c 100644 --- a/src/foundation/commuting-triangles-of-identifications.lagda.md +++ b/src/foundation/commuting-triangles-of-identifications.lagda.md @@ -123,7 +123,7 @@ module _ ( coherence-triangle-identifications (left ∙ p) (right ∙ p) top) equiv-right-whisker-triangle-identifications = ( equiv-concat-assoc' (left ∙ p) top right p) ∘e - ( equiv-identification-right-whisker p) + ( equiv-right-whisker-identification p) right-whisker-triangle-identifications : coherence-triangle-identifications left right top → @@ -142,7 +142,7 @@ module _ ( coherence-triangle-identifications' (left ∙ p) (right ∙ p) top) equiv-right-whisker-triangle-identifications' = ( equiv-concat-assoc top right p (left ∙ p)) ∘e - ( equiv-identification-right-whisker p) + ( equiv-right-whisker-identification p) right-whisker-triangle-identifications' : coherence-triangle-identifications' left right top → @@ -166,7 +166,7 @@ module _ ( coherence-triangle-identifications (p ∙ left) right (p ∙ top)) equiv-left-whisker-triangle-identifications = ( inv-equiv (equiv-concat-assoc' (p ∙ left) p top right)) ∘e - ( equiv-identification-left-whisker p) + ( equiv-left-whisker-identification p) left-whisker-triangle-identifications : coherence-triangle-identifications left right top → @@ -185,7 +185,7 @@ module _ ( coherence-triangle-identifications' (p ∙ left) right (p ∙ top)) equiv-left-whisker-triangle-identifications' = ( inv-equiv (equiv-concat-assoc p top right (p ∙ left))) ∘e - ( equiv-identification-left-whisker p) + ( equiv-left-whisker-identification p) left-whisker-triangle-identifications' : coherence-triangle-identifications' left right top → diff --git a/src/foundation/homotopies.lagda.md b/src/foundation/homotopies.lagda.md index 114920220e..5d60861c2b 100644 --- a/src/foundation/homotopies.lagda.md +++ b/src/foundation/homotopies.lagda.md @@ -301,9 +301,9 @@ eckmann-hilton-htpy : {l : Level} {X : UU l} (H K : id {A = X} ~ id) → (H ∙h K) ~ (K ∙h H) eckmann-hilton-htpy H K x = - ( inv (identification-left-whisker (H x) (ap-id (K x))) ∙ + ( inv (left-whisker-identification (H x) (ap-id (K x))) ∙ ( htpy-swap-nat-right-htpy H K x)) ∙ - ( identification-right-whisker (ap-id (K x)) (H x)) + ( right-whisker-identification (ap-id (K x)) (H x)) ``` ### Action on identifications at `eq-htpy` diff --git a/src/foundation/path-algebra.lagda.md b/src/foundation/path-algebra.lagda.md index b8c65ffee3..9b17fc26de 100644 --- a/src/foundation/path-algebra.lagda.md +++ b/src/foundation/path-algebra.lagda.md @@ -238,17 +238,17 @@ module _ {l : Level} {A : UU l} {x y z : A} where - identification-left-whisker : + left-whisker-identification : (p : x = y) {q q' : y = z} → q = q' → (p ∙ q) = (p ∙ q') - identification-left-whisker p β = ap (p ∙_) β + left-whisker-identification p β = ap (p ∙_) β - identification-right-whisker : + right-whisker-identification : {p p' : x = y} → p = p' → (q : y = z) → (p ∙ q) = (p' ∙ q) - identification-right-whisker α q = ap (_∙ q) α + right-whisker-identification α q = ap (_∙ q) α - htpy-identification-left-whisker : + htpy-left-whisker-identification : {q q' : y = z} → q = q' → (_∙ q) ~ (_∙ q') - htpy-identification-left-whisker β p = identification-left-whisker p β + htpy-left-whisker-identification β p = left-whisker-identification p β ``` ### Whiskerings of identifications are equivalences @@ -258,32 +258,32 @@ module _ {l : Level} {A : UU l} {x y z : A} where - is-equiv-identification-left-whisker : + is-equiv-left-whisker-identification : (p : x = y) {q q' : y = z} → - is-equiv (identification-left-whisker p {q} {q'}) - is-equiv-identification-left-whisker p {q} {q'} = + is-equiv (left-whisker-identification p {q} {q'}) + is-equiv-left-whisker-identification p {q} {q'} = is-emb-is-equiv (is-equiv-concat p z) q q' - equiv-identification-left-whisker : + equiv-left-whisker-identification : (p : x = y) {q q' : y = z} → (q = q') ≃ (p ∙ q = p ∙ q') - pr1 (equiv-identification-left-whisker p) = identification-left-whisker p - pr2 (equiv-identification-left-whisker p) = - is-equiv-identification-left-whisker p + pr1 (equiv-left-whisker-identification p) = left-whisker-identification p + pr2 (equiv-left-whisker-identification p) = + is-equiv-left-whisker-identification p - is-equiv-identification-right-whisker : + is-equiv-right-whisker-identification : {p p' : x = y} → (q : y = z) → - is-equiv (λ (α : p = p') → identification-right-whisker α q) - is-equiv-identification-right-whisker {p} {p'} q = + is-equiv (λ (α : p = p') → right-whisker-identification α q) + is-equiv-right-whisker-identification {p} {p'} q = is-emb-is-equiv (is-equiv-concat' x q) p p' - equiv-identification-right-whisker : + equiv-right-whisker-identification : {p p' : x = y} → (q : y = z) → (p = p') ≃ (p ∙ q = p' ∙ q) - pr1 (equiv-identification-right-whisker q) α = - identification-right-whisker α q - pr2 (equiv-identification-right-whisker q) = - is-equiv-identification-right-whisker q + pr1 (equiv-right-whisker-identification q) α = + right-whisker-identification α q + pr2 (equiv-right-whisker-identification q) = + is-equiv-right-whisker-identification q ``` ### Reassociating one side of a higher identification is an equivalence @@ -318,7 +318,7 @@ module _ equiv-right-whisker-square-identification = ( equiv-concat-assoc' (p' ∙ (q' ∙ r)) p q r) ∘e ( equiv-concat-assoc p' q' r (p ∙ q ∙ r)) ∘e - ( equiv-identification-right-whisker r) + ( equiv-right-whisker-identification r) right-whisker-square-identification : coherence-square-identifications p p' q q' → @@ -343,7 +343,7 @@ module _ equiv-left-whisker-square-identification = ( inv-equiv (equiv-concat-assoc p q' r' (p ∙ q ∙ r))) ∘e ( inv-equiv (equiv-concat-assoc' (p ∙ (q' ∙ r')) p q r)) ∘e - ( equiv-identification-left-whisker p) + ( equiv-left-whisker-identification p) left-whisker-square-identification : coherence-square-identifications q q' r r' → @@ -402,13 +402,13 @@ right-unit-law-vertical-concat-Id² = right-unit left-unit-law-horizontal-concat-Id² : {l : Level} {A : UU l} {x y z : A} {p : x = y} {u v : y = z} (γ : u = v) → horizontal-concat-Id² (refl {x = p}) γ = - identification-left-whisker p γ + left-whisker-identification p γ left-unit-law-horizontal-concat-Id² = left-unit-ap-binary (_∙_) right-unit-law-horizontal-concat-Id² : {l : Level} {A : UU l} {x y z : A} {p q : x = y} (α : p = q) {u : y = z} → horizontal-concat-Id² α (refl {x = u}) = - identification-right-whisker α u + right-whisker-identification α u right-unit-law-horizontal-concat-Id² = right-unit-ap-binary (_∙_) ``` @@ -450,16 +450,16 @@ module _ {l : Level} {A : UU l} {x y : A} where - left-unit-law-identification-left-whisker : + left-unit-law-left-whisker-identification : {p p' : x = y} (α : p = p') → - identification-left-whisker refl α = α - left-unit-law-identification-left-whisker refl = refl + left-whisker-identification refl α = α + left-unit-law-left-whisker-identification refl = refl - right-unit-law-identification-right-whisker : + right-unit-law-right-whisker-identification : {p p' : x = y} (α : p = p') → - identification-right-whisker α refl = + right-whisker-identification α refl = right-unit ∙ α ∙ inv right-unit - right-unit-law-identification-right-whisker {p = refl} refl = refl + right-unit-law-right-whisker-identification {p = refl} refl = refl ``` ### The whiskering operations allow us to commute higher identifications @@ -473,30 +473,30 @@ module _ {l : Level} {A : UU l} {x y z : A} where - path-swap-nat-identification-left-whisker : + path-swap-nat-left-whisker-identification : {q q' : y = z} (β : q = q') {p p' : x = y} (α : p = p') → coherence-square-identifications - ( identification-right-whisker α q) - ( identification-left-whisker p β) - ( identification-left-whisker p' β) - ( identification-right-whisker α q') - path-swap-nat-identification-left-whisker β = - nat-htpy (htpy-identification-left-whisker β) - - path-swap-nat-identification-right-whisker : + ( right-whisker-identification α q) + ( left-whisker-identification p β) + ( left-whisker-identification p' β) + ( right-whisker-identification α q') + path-swap-nat-left-whisker-identification β = + nat-htpy (htpy-left-whisker-identification β) + + path-swap-nat-right-whisker-identification : {p p' : x = y} (α : p = p') {q q' : y = z} (β : q = q') → coherence-square-identifications - ( identification-left-whisker p β) - ( identification-right-whisker α q) - ( identification-right-whisker α q') - ( identification-left-whisker p' β) - path-swap-nat-identification-right-whisker α = - nat-htpy (identification-right-whisker α) + ( left-whisker-identification p β) + ( right-whisker-identification α q) + ( right-whisker-identification α q') + ( left-whisker-identification p' β) + path-swap-nat-right-whisker-identification α = + nat-htpy (right-whisker-identification α) path-swap-right-undoes-path-swap-left : {q q' : y = z} (β : q = q') {p p' : x = y} (α : p = p') → - inv (path-swap-nat-identification-right-whisker α β) = - (path-swap-nat-identification-left-whisker β α) + inv (path-swap-nat-right-whisker-identification α β) = + (path-swap-nat-left-whisker-identification β α) path-swap-right-undoes-path-swap-left refl refl = refl ``` diff --git a/src/foundation/transport-along-higher-identifications.lagda.md b/src/foundation/transport-along-higher-identifications.lagda.md index 40b126f1b8..9a57c4f63f 100644 --- a/src/foundation/transport-along-higher-identifications.lagda.md +++ b/src/foundation/transport-along-higher-identifications.lagda.md @@ -51,7 +51,7 @@ module _ coherence-square-identifications ( tr-Id-right q p) ( tr² (Id a) α p) - ( identification-left-whisker p α) + ( left-whisker-identification p α) ( tr-Id-right q' p) tr²-Id-right α p = inv-nat-htpy (λ (t : b = c) → tr-Id-right t p) α @@ -79,7 +79,7 @@ module _ (p : x = y) {q q' : y = z} (β : q = q') (b : B x) → coherence-square-identifications ( tr-concat p q b) - ( tr² B (identification-left-whisker p β) b) + ( tr² B (left-whisker-identification p β) b) ( right-whisker-htpy (tr² B β) (tr B p) b) ( tr-concat p q' b) tr²-left-whisker refl refl b = refl @@ -88,7 +88,7 @@ module _ {p p' : x = y} (α : p = p') (q : y = z) (b : B x) → coherence-square-identifications ( tr-concat p q b) - ( tr² B (identification-right-whisker α q) b) + ( tr² B (right-whisker-identification α q) b) ( left-whisker-htpy (tr B q) (tr² B α) b) ( tr-concat p' q b) tr²-right-whisker refl refl b = inv right-unit @@ -105,13 +105,13 @@ module _ tr³-htpy-swap-path-swap : {q q' : y = z} (β : q = q') {p p' : x = y} (α : p = p') (b : B x) → coherence-square-identifications - ( ( identification-right-whisker - ( tr²-concat (identification-left-whisker p β) - ( identification-right-whisker α q') b) + ( ( right-whisker-identification + ( tr²-concat (left-whisker-identification p β) + ( right-whisker-identification α q') b) ( tr-concat p' q' b)) ∙ ( vertical-concat-square - ( tr² B (identification-left-whisker p β) b) - ( tr² B (identification-right-whisker α q') b) + ( tr² B (left-whisker-identification p β) b) + ( tr² B (right-whisker-identification α q') b) ( tr-concat p' q' b) ( tr-concat p q' b) ( tr-concat p q b) @@ -119,23 +119,23 @@ module _ ( left-whisker-htpy (tr B q') (tr² B α) b) ( tr²-left-whisker p β b) ( tr²-right-whisker α q' b))) - ( identification-right-whisker + ( right-whisker-identification ( tr³ ( B) - ( path-swap-nat-identification-left-whisker β α) + ( path-swap-nat-left-whisker-identification β α) ( b)) ( tr-concat p' q' b)) - ( identification-left-whisker + ( left-whisker-identification ( tr-concat p q b) ( htpy-swap-nat-right-htpy (tr² B β) (tr² B α) b)) - ( ( identification-right-whisker + ( ( right-whisker-identification ( tr²-concat - ( identification-right-whisker α q) - ( identification-left-whisker p' β) b) + ( right-whisker-identification α q) + ( left-whisker-identification p' β) b) ( tr-concat p' q' b)) ∙ ( vertical-concat-square - ( tr² B (identification-right-whisker α q) b) - ( tr² B (identification-left-whisker p' β) b) + ( tr² B (right-whisker-identification α q) b) + ( tr² B (left-whisker-identification p' β) b) ( tr-concat p' q' b) ( tr-concat p' q b) ( tr-concat p q b) diff --git a/src/orthogonal-factorization-systems/precomposition-lifts-families-of-elements.lagda.md b/src/orthogonal-factorization-systems/precomposition-lifts-families-of-elements.lagda.md index 99141fc2a1..0a00e91a9f 100644 --- a/src/orthogonal-factorization-systems/precomposition-lifts-families-of-elements.lagda.md +++ b/src/orthogonal-factorization-systems/precomposition-lifts-families-of-elements.lagda.md @@ -179,7 +179,7 @@ module _ coherence-triangle-precomp-lift-family-of-elements-refl-htpy b = ( htpy-eq (compute-triangle-precomp-lift-family-of-elements-htpy B a) b) ∙ ( inv right-unit) ∙ - ( identification-left-whisker + ( left-whisker-identification ( triangle-precomp-lift-family-of-elements-htpy-refl-htpy B a b) ( inv (eq-htpy-refl-htpy (b ∘ f)))) diff --git a/src/synthetic-homotopy-theory/circle.lagda.md b/src/synthetic-homotopy-theory/circle.lagda.md index 4a0dd3cbd2..278927f05f 100644 --- a/src/synthetic-homotopy-theory/circle.lagda.md +++ b/src/synthetic-homotopy-theory/circle.lagda.md @@ -314,7 +314,7 @@ apply-up-suspension-meridian-suspension-sphere-1-circle-sphere-1 ( ap sphere-1-circle (ap circle-sphere-1 (meridian-suspension n))) ( ap sphere-1-circle circle-sphere-1-south-sphere-1-eq-base-𝕊¹) ( sphere-1-circle-base-𝕊¹-eq-south-sphere-1))) ∙ - ( identification-right-whisker + ( right-whisker-identification ( inv ( ap-concat ( sphere-1-circle) @@ -341,7 +341,7 @@ apply-loop-universal-property-𝕊¹-sphere-1-circle-sphere-1 = ( ap sphere-1-circle loop-𝕊¹) ( sphere-1-circle-base-𝕊¹-eq-north-sphere-1) ( meridian-sphere 0 (one-Fin 1)))) ∙ - ( identification-right-whisker + ( right-whisker-identification ( loop-universal-property-𝕊¹ ( north-sphere 1) ( north-sphere-1-loop)) @@ -350,7 +350,7 @@ apply-loop-universal-property-𝕊¹-sphere-1-circle-sphere-1 = ( sphere-1-circle-base-𝕊¹-eq-north-sphere-1) ( north-sphere-1-loop) ( meridian-sphere 0 (one-Fin 1))) ∙ - ( identification-left-whisker + ( left-whisker-identification ( sphere-1-circle-base-𝕊¹-eq-north-sphere-1) ( is-section-right-concat-inv ( meridian-sphere 0 (zero-Fin 1)) @@ -374,7 +374,7 @@ map-sphere-1-circle-sphere-1-meridian (inl (inr n)) = ( sphere-1-circle-sphere-1-south-sphere-1) ( ( apply-up-suspension-meridian-suspension-sphere-1-circle-sphere-1 ( inl (inr n))) ∙ - ( identification-right-whisker + ( right-whisker-identification ( ap-concat ( sphere-1-circle) ( circle-sphere-1-north-sphere-1-eq-base-𝕊¹) @@ -384,7 +384,7 @@ map-sphere-1-circle-sphere-1-meridian (inl (inr n)) = ( ap sphere-1-circle (circle-sphere-1-north-sphere-1-eq-base-𝕊¹)) ( ap sphere-1-circle loop-𝕊¹) ( sphere-1-circle-base-𝕊¹-eq-south-sphere-1)) ∙ - ( identification-left-whisker + ( left-whisker-identification ( ap sphere-1-circle (circle-sphere-1-north-sphere-1-eq-base-𝕊¹)) ( apply-loop-universal-property-𝕊¹-sphere-1-circle-sphere-1)) ∙ ( inv @@ -450,7 +450,7 @@ apply-up-suspension-meridian-one-suspension-circle-sphere-1-circle : ( circle-sphere-1-south-sphere-1-eq-base-𝕊¹) ( circle-sphere-1-north-sphere-1-eq-base-𝕊¹) apply-up-suspension-meridian-one-suspension-circle-sphere-1-circle = - ( identification-right-whisker + ( right-whisker-identification ( ap-inv ( circle-sphere-1) ( meridian-suspension (one-Fin 1))) @@ -460,7 +460,7 @@ apply-up-suspension-meridian-one-suspension-circle-sphere-1-circle = ( inv (ap circle-sphere-1 (meridian-suspension (one-Fin 1)))) ( circle-sphere-1-north-sphere-1-eq-base-𝕊¹) ( refl)) ∙ - ( identification-left-whisker + ( left-whisker-identification ( inv (ap circle-sphere-1 (meridian-suspension (one-Fin 1)))) ( inv ( compute-meridian-cogap-suspension @@ -471,7 +471,7 @@ apply-up-suspension-meridian-one-suspension-circle-sphere-1-circle = ( inv (ap circle-sphere-1 (meridian-suspension (one-Fin 1)))) ( ap circle-sphere-1 (meridian-suspension (one-Fin 1))) ( circle-sphere-1-south-sphere-1-eq-base-𝕊¹))) ∙ - ( identification-right-whisker + ( right-whisker-identification ( left-inv (ap circle-sphere-1 (meridian-suspension (one-Fin 1)))) ( circle-sphere-1-south-sphere-1-eq-base-𝕊¹)) @@ -482,7 +482,7 @@ apply-up-suspension-meridian-zero-suspension-circle-sphere-1-circle : ( loop-𝕊¹) ( circle-sphere-1-north-sphere-1-eq-base-𝕊¹) apply-up-suspension-meridian-zero-suspension-circle-sphere-1-circle = - ( identification-right-whisker + ( right-whisker-identification ( ap-concat ( circle-sphere-1) ( meridian-sphere 0 (zero-Fin 1)) @@ -492,7 +492,7 @@ apply-up-suspension-meridian-zero-suspension-circle-sphere-1-circle = ( ap circle-sphere-1 (meridian-suspension (zero-Fin 1))) ( ap circle-sphere-1 (inv ( meridian-sphere 0 (one-Fin 1)))) ( circle-sphere-1-north-sphere-1-eq-base-𝕊¹)) ∙ - ( identification-left-whisker + ( left-whisker-identification ( ap circle-sphere-1 (meridian-suspension (zero-Fin 1))) ( apply-up-suspension-meridian-one-suspension-circle-sphere-1-circle)) ∙ ( compute-meridian-cogap-suspension @@ -513,21 +513,21 @@ circle-sphere-1-circle-loop-𝕊¹ = ( circle-sphere-1) ( sphere-1-circle-base-𝕊¹-eq-north-sphere-1)) ( circle-sphere-1-north-sphere-1-eq-base-𝕊¹)) ∙ - ( identification-right-whisker + ( right-whisker-identification ( inv ( ap-concat ( circle-sphere-1) ( ap sphere-1-circle loop-𝕊¹) ( sphere-1-circle-base-𝕊¹-eq-north-sphere-1))) ( circle-sphere-1-north-sphere-1-eq-base-𝕊¹)) ∙ - ( identification-right-whisker + ( right-whisker-identification ( ap ( ap circle-sphere-1) ( loop-universal-property-𝕊¹ ( north-sphere 1) ( north-sphere-1-loop))) ( circle-sphere-1-north-sphere-1-eq-base-𝕊¹)) ∙ - ( identification-right-whisker + ( right-whisker-identification ( ap-concat ( circle-sphere-1) ( sphere-1-circle-base-𝕊¹-eq-north-sphere-1) @@ -537,7 +537,7 @@ circle-sphere-1-circle-loop-𝕊¹ = ( ap circle-sphere-1 sphere-1-circle-base-𝕊¹-eq-north-sphere-1) ( ap circle-sphere-1 north-sphere-1-loop) ( circle-sphere-1-north-sphere-1-eq-base-𝕊¹)) ∙ - ( identification-left-whisker + ( left-whisker-identification ( ap circle-sphere-1 sphere-1-circle-base-𝕊¹-eq-north-sphere-1) ( apply-up-suspension-meridian-zero-suspension-circle-sphere-1-circle)) ∙ ( inv diff --git a/src/synthetic-homotopy-theory/double-loop-spaces.lagda.md b/src/synthetic-homotopy-theory/double-loop-spaces.lagda.md index 43f0092c69..db223e89fb 100644 --- a/src/synthetic-homotopy-theory/double-loop-spaces.lagda.md +++ b/src/synthetic-homotopy-theory/double-loop-spaces.lagda.md @@ -95,17 +95,17 @@ right-unit-law-horizontal-concat-Ω² : right-unit-law-horizontal-concat-Ω² {α = α} = ( right-unit-law-horizontal-concat-Id² α) ∙ (naturality-right-unit-Ω² α) -left-unit-law-identification-left-whisker-Ω² : +left-unit-law-left-whisker-identification-Ω² : {l : Level} {A : UU l} {a : A} (α : type-Ω² a) → - identification-left-whisker (refl-Ω (pair A a)) α = α -left-unit-law-identification-left-whisker-Ω² α = - left-unit-law-identification-left-whisker α + left-whisker-identification (refl-Ω (pair A a)) α = α +left-unit-law-left-whisker-identification-Ω² α = + left-unit-law-left-whisker-identification α -right-unit-law-identification-right-whisker-Ω² : +right-unit-law-right-whisker-identification-Ω² : {l : Level} {A : UU l} {a : A} (α : type-Ω² a) → - identification-right-whisker α (refl-Ω (pair A a)) = α -right-unit-law-identification-right-whisker-Ω² α = - (right-unit-law-identification-right-whisker α) ∙ right-unit + right-whisker-identification α (refl-Ω (pair A a)) = α +right-unit-law-right-whisker-identification-Ω² α = + (right-unit-law-right-whisker-identification α) ∙ right-unit ``` ### The interchange law for double loop spaces diff --git a/src/synthetic-homotopy-theory/eckmann-hilton-argument.lagda.md b/src/synthetic-homotopy-theory/eckmann-hilton-argument.lagda.md index 3a84270439..32ea2df412 100644 --- a/src/synthetic-homotopy-theory/eckmann-hilton-argument.lagda.md +++ b/src/synthetic-homotopy-theory/eckmann-hilton-argument.lagda.md @@ -114,11 +114,11 @@ Eckmann-Hilton argument is often depicted as follows: The first picture represents the vertical concatination of `α` and `β`. The notation ` | γ | δ |` represents the horizontal concatination of 2-dimensional identifications `γ` and `δ`. Then `| refl | α |` is just -[`identification-left-whisker refl-Ω² α`](https://unimath.github.io/agda-unimath/foundation.path-algebra.html#7697). +[`left-whisker-identification refl-Ω² α`](https://unimath.github.io/agda-unimath/foundation.path-algebra.html#7697). The first and last equality come from the unit laws of whiskering. And the middle equality can be recognized as -[`path-swap-nat-identification-left-whisker`](https://unimath.github.io/agda-unimath/foundation.path-algebra.html#9823), -which is the naturality condition of `htpy-identification-left-whisker α` +[`path-swap-nat-left-whisker-identification`](https://unimath.github.io/agda-unimath/foundation.path-algebra.html#9823), +which is the naturality condition of `htpy-left-whisker-identification α` applied to `β`. Since this version of the Eckmann-Hilton argument may seem more complicated than @@ -132,7 +132,7 @@ induces an autoequivalence `Ω X ≃ Ω X` given by concatinating on the right b `l`. This is shown in [`tr-Id-right`](https://unimath.github.io/agda-unimath/foundation.identity-types.html#11216). A 2-loop `s` induces a homotpy `id {A = Ω X} ~ id` given by -[`htpy-identification-left-whisker`](https://unimath.github.io/agda-unimath/foundation.path-algebra.html#7977). +[`htpy-left-whisker-identification`](https://unimath.github.io/agda-unimath/foundation.path-algebra.html#7977). This claim is shown in TODO (provide link). Thus, the 2-D descent data of `Id base` is (up to equivalence) exactly the homotopy at the heart of this version of the Eckmann-Hilton argument. @@ -172,19 +172,19 @@ module _ (α β : type-Ω² (point-Pointed-Type A)) → α ∙ β = β ∙ α eckmann-hilton-Ω² α β = equational-reasoning_ (α ∙ β) = - ( identification-left-whisker refl α) ∙ - ( identification-right-whisker β refl) + ( left-whisker-identification refl α) ∙ + ( right-whisker-identification β refl) by ( inv ( horizontal-concat-Id² - ( left-unit-law-identification-left-whisker-Ω² α) - ( right-unit-law-identification-right-whisker-Ω² β))) - = ( identification-right-whisker β refl) ∙ - ( identification-left-whisker refl α) - by ( path-swap-nat-identification-left-whisker α β) + ( left-unit-law-left-whisker-identification-Ω² α) + ( right-unit-law-right-whisker-identification-Ω² β))) + = ( right-whisker-identification β refl) ∙ + ( left-whisker-identification refl α) + by ( path-swap-nat-left-whisker-identification α β) = β ∙ α by ( horizontal-concat-Id² - ( right-unit-law-identification-right-whisker-Ω² β) - ( left-unit-law-identification-left-whisker-Ω² α)) + ( right-unit-law-right-whisker-identification-Ω² β) + ( left-unit-law-left-whisker-identification-Ω² α)) ``` #### Using right whiskering @@ -211,19 +211,19 @@ module _ (α β : type-Ω² (point-Pointed-Type A)) → α ∙ β = β ∙ α eckmann-hilton-inverse-Ω² α β = equational-reasoning_ (α ∙ β) - = ( identification-right-whisker α refl) ∙ - ( identification-left-whisker refl β) + = ( right-whisker-identification α refl) ∙ + ( left-whisker-identification refl β) by ( inv ( horizontal-concat-Id² - ( right-unit-law-identification-right-whisker-Ω² α) - ( left-unit-law-identification-left-whisker-Ω² β))) - = ( identification-left-whisker refl β) ∙ - ( identification-right-whisker α refl) - by path-swap-nat-identification-right-whisker α β + ( right-unit-law-right-whisker-identification-Ω² α) + ( left-unit-law-left-whisker-identification-Ω² β))) + = ( left-whisker-identification refl β) ∙ + ( right-whisker-identification α refl) + by path-swap-nat-right-whisker-identification α β = β ∙ α by ( horizontal-concat-Id² - ( left-unit-law-identification-left-whisker-Ω² β)) - ( right-unit-law-identification-right-whisker-Ω² α) + ( left-unit-law-left-whisker-identification-Ω² β)) + ( right-unit-law-right-whisker-identification-Ω² α) ``` We now prove that this Eckmann-Hilton identification "undoes" the previously @@ -254,87 +254,87 @@ module _ = concat ( inv ( horizontal-concat-Id² - ( left-unit-law-identification-left-whisker-Ω² α) - ( right-unit-law-identification-right-whisker-Ω² β))) + ( left-unit-law-left-whisker-identification-Ω² α) + ( right-unit-law-right-whisker-identification-Ω² β))) ( _) ( inv ( concat ( inv ( horizontal-concat-Id² - ( right-unit-law-identification-right-whisker-Ω² β) - ( left-unit-law-identification-left-whisker-Ω² α))) + ( right-unit-law-right-whisker-identification-Ω² β) + ( left-unit-law-left-whisker-identification-Ω² α))) ( _) - ( path-swap-nat-identification-right-whisker β α))) + ( path-swap-nat-right-whisker-identification β α))) by distributive-inv-concat ( concat ( inv ( horizontal-concat-Id² - ( right-unit-law-identification-right-whisker-Ω² β) - ( left-unit-law-identification-left-whisker-Ω² α))) + ( right-unit-law-right-whisker-identification-Ω² β) + ( left-unit-law-left-whisker-identification-Ω² α))) ( _) - ( path-swap-nat-identification-right-whisker β α)) + ( path-swap-nat-right-whisker-identification β α)) ( horizontal-concat-Id² - ( left-unit-law-identification-left-whisker-Ω² α) - ( right-unit-law-identification-right-whisker-Ω² β)) + ( left-unit-law-left-whisker-identification-Ω² α) + ( right-unit-law-right-whisker-identification-Ω² β)) = concat ( inv ( horizontal-concat-Id² - ( left-unit-law-identification-left-whisker-Ω² α) - ( right-unit-law-identification-right-whisker-Ω² β))) + ( left-unit-law-left-whisker-identification-Ω² α) + ( right-unit-law-right-whisker-identification-Ω² β))) ( _) ( concat - ( inv (path-swap-nat-identification-right-whisker β α)) + ( inv (path-swap-nat-right-whisker-identification β α)) ( _) ( inv ( inv ( horizontal-concat-Id² - ( right-unit-law-identification-right-whisker-Ω² β) - ( left-unit-law-identification-left-whisker-Ω² α))))) - by identification-left-whisker + ( right-unit-law-right-whisker-identification-Ω² β) + ( left-unit-law-left-whisker-identification-Ω² α))))) + by left-whisker-identification ( inv ( horizontal-concat-Id² - ( left-unit-law-identification-left-whisker-Ω² α) - ( right-unit-law-identification-right-whisker-Ω² β))) + ( left-unit-law-left-whisker-identification-Ω² α) + ( right-unit-law-right-whisker-identification-Ω² β))) ( distributive-inv-concat ( inv ( horizontal-concat-Id² - ( right-unit-law-identification-right-whisker-Ω² β) - ( left-unit-law-identification-left-whisker-Ω² α))) - ( path-swap-nat-identification-right-whisker β α)) + ( right-unit-law-right-whisker-identification-Ω² β) + ( left-unit-law-left-whisker-identification-Ω² α))) + ( path-swap-nat-right-whisker-identification β α)) = concat ( inv ( horizontal-concat-Id² - ( left-unit-law-identification-left-whisker-Ω² α) - ( right-unit-law-identification-right-whisker-Ω² β))) + ( left-unit-law-left-whisker-identification-Ω² α) + ( right-unit-law-right-whisker-identification-Ω² β))) ( _) ( concat - ( path-swap-nat-identification-left-whisker α β) + ( path-swap-nat-left-whisker-identification α β) ( _) ( horizontal-concat-Id² - ( right-unit-law-identification-right-whisker-Ω² β) - ( left-unit-law-identification-left-whisker-Ω² α))) - by identification-left-whisker + ( right-unit-law-right-whisker-identification-Ω² β) + ( left-unit-law-left-whisker-identification-Ω² α))) + by left-whisker-identification ( inv ( horizontal-concat-Id² - ( left-unit-law-identification-left-whisker-Ω² α) - ( right-unit-law-identification-right-whisker-Ω² β))) + ( left-unit-law-left-whisker-identification-Ω² α) + ( right-unit-law-right-whisker-identification-Ω² β))) ( horizontal-concat-Id² ( path-swap-right-undoes-path-swap-left α β) ( inv-inv ( horizontal-concat-Id² - ( right-unit-law-identification-right-whisker-Ω² β) - ( left-unit-law-identification-left-whisker-Ω² α)))) + ( right-unit-law-right-whisker-identification-Ω² β) + ( left-unit-law-left-whisker-identification-Ω² α)))) = eckmann-hilton-Ω² α β by inv ( assoc ( inv ( horizontal-concat-Id² - ( left-unit-law-identification-left-whisker-Ω² α) - ( right-unit-law-identification-right-whisker-Ω² β))) - ( path-swap-nat-identification-left-whisker α β) + ( left-unit-law-left-whisker-identification-Ω² α) + ( right-unit-law-right-whisker-identification-Ω² β))) + ( path-swap-nat-left-whisker-identification α β) ( horizontal-concat-Id² - ( right-unit-law-identification-right-whisker-Ω² β) - ( left-unit-law-identification-left-whisker-Ω² α))) + ( right-unit-law-right-whisker-identification-Ω² β) + ( left-unit-law-left-whisker-identification-Ω² α))) ``` ## Properties diff --git a/src/synthetic-homotopy-theory/smash-products-of-pointed-types.lagda.md b/src/synthetic-homotopy-theory/smash-products-of-pointed-types.lagda.md index 82c7bc543f..1ce97da445 100644 --- a/src/synthetic-homotopy-theory/smash-products-of-pointed-types.lagda.md +++ b/src/synthetic-homotopy-theory/smash-products-of-pointed-types.lagda.md @@ -199,7 +199,7 @@ module _ ( apd ( contraction-map-smash-prod-wedge-Pointed-Type) ( glue-wedge-Pointed-Type A B))) ∙ - ( identification-left-whisker + ( left-whisker-identification ( contraction-map-smash-prod-wedge-Pointed-Type ( map-inl-wedge-Pointed-Type A B (point-Pointed-Type A))) ( ap-const @@ -249,7 +249,7 @@ module _ inl-glue-smash-prod-Pointed-Type (point-Pointed-Type A) = inr-glue-smash-prod-Pointed-Type (point-Pointed-Type B) coh-glue-smash-prod-Pointed-Type = - ( identification-left-whisker + ( left-whisker-identification ( ap ( map-smash-prod-prod-Pointed-Type A B) ( inv (compute-inl-prod-wedge-Pointed-Type A B (point-Pointed-Type A)))) @@ -263,8 +263,8 @@ module _ ( glue-wedge-Pointed-Type A B)) ( contraction-map-smash-prod-wedge-Pointed-Type A B ( map-inr-wedge-Pointed-Type A B (point-Pointed-Type B))))) ∙ - ( identification-right-whisker - ( ( identification-left-whisker + ( right-whisker-identification + ( ( left-whisker-identification ( ap (map-smash-prod-prod-Pointed-Type A B) ( inv ( compute-inl-prod-wedge-Pointed-Type A B @@ -362,7 +362,7 @@ pr2 (universal-property-smash-prod-Pointed-Type A B C f) = ( map-pointed-map f) ( inr-glue-smash-prod-Pointed-Type A B y) ∙ ( preserves-point-pointed-map f))) , - ( ( identification-right-whisker + ( ( right-whisker-identification ( ap² ( map-pointed-map f) ( inv (coh-glue-smash-prod-Pointed-Type A B))) diff --git a/src/synthetic-homotopy-theory/suspension-structures.lagda.md b/src/synthetic-homotopy-theory/suspension-structures.lagda.md index d7f51f381b..6ed5e3aac5 100644 --- a/src/synthetic-homotopy-theory/suspension-structures.lagda.md +++ b/src/synthetic-homotopy-theory/suspension-structures.lagda.md @@ -324,10 +324,10 @@ module _ (x : X) → coherence-square-identifications ( h x) - ( identification-left-whisker + ( left-whisker-identification ( meridian-suspension-structure c x) ( q)) - ( identification-right-whisker + ( right-whisker-identification ( p) ( meridian-suspension-structure c' x)) ( h' x))) @@ -343,10 +343,10 @@ module _ (x : X) → coherence-square-identifications ( h x) - ( identification-left-whisker + ( left-whisker-identification ( meridian-suspension-structure c x) ( q)) - ( identification-right-whisker + ( right-whisker-identification ( p) ( meridian-suspension-structure c' x)) ( pr2 y x))) @@ -358,8 +358,8 @@ module _ (x : X) → coherence-square-identifications ( h x) - ( identification-left-whisker (meridian-suspension-structure c x) q) - ( identification-right-whisker + ( left-whisker-identification (meridian-suspension-structure c x) q) + ( right-whisker-identification ( refl) ( meridian-suspension-structure c' x)) ( h' x)) @@ -391,10 +391,10 @@ module _ (x : X) → coherence-square-identifications ( meridian-htpy-suspension-structure h x) - ( identification-left-whisker + ( left-whisker-identification ( meridian-suspension-structure c x) ( south-htpy-in-htpy-suspension-structure H)) - ( identification-right-whisker + ( right-whisker-identification ( north-htpy-in-htpy-suspension-structure H) ( meridian-suspension-structure c' x)) ( meridian-htpy-suspension-structure h' x) From 8c0b25460374f2bd4f8986b45d1157f1a2ff1e37 Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Mon, 29 Jan 2024 14:00:12 +0100 Subject: [PATCH 008/150] factoring out whiskering of identifications --- src/foundation/identity-types.lagda.md | 20 +- src/foundation/path-algebra.lagda.md | 197 ----------------- .../whiskering-identifications.lagda.md | 204 ++++++++++++++++++ 3 files changed, 223 insertions(+), 198 deletions(-) create mode 100644 src/foundation/whiskering-identifications.lagda.md diff --git a/src/foundation/identity-types.lagda.md b/src/foundation/identity-types.lagda.md index a9ad803830..25c31b5e1d 100644 --- a/src/foundation/identity-types.lagda.md +++ b/src/foundation/identity-types.lagda.md @@ -213,7 +213,25 @@ module _ ( ( ap (concat' _ s) (right-inv right-unit)))) ``` -## Transposing inverses is an equivalence +### Reassociating one side of a higher identification is an equivalence + +```agda +module _ + {l : Level} {A : UU l} {x y z u : A} + where + + equiv-concat-assoc : + (p : x = y) (q : y = z) (r : z = u) (s : x = u) → + ((p ∙ q) ∙ r = s) ≃ (p ∙ (q ∙ r) = s) + equiv-concat-assoc p q r = equiv-concat (inv (assoc p q r)) + + equiv-concat-assoc' : + (s : x = u) (p : x = y) (q : y = z) (r : z = u) → + (s = (p ∙ q) ∙ r) ≃ (s = p ∙ (q ∙ r)) + equiv-concat-assoc' s p q r = equiv-concat' s (assoc p q r) +``` + +### Transposing inverses is an equivalence ```agda module _ diff --git a/src/foundation/path-algebra.lagda.md b/src/foundation/path-algebra.lagda.md index 9b17fc26de..2b9728a4e9 100644 --- a/src/foundation/path-algebra.lagda.md +++ b/src/foundation/path-algebra.lagda.md @@ -231,146 +231,6 @@ horizontal-concat-Id² : horizontal-concat-Id² α β = ap-binary (_∙_) α β ``` -### Definition of identification whiskering - -```agda -module _ - {l : Level} {A : UU l} {x y z : A} - where - - left-whisker-identification : - (p : x = y) {q q' : y = z} → q = q' → (p ∙ q) = (p ∙ q') - left-whisker-identification p β = ap (p ∙_) β - - right-whisker-identification : - {p p' : x = y} → p = p' → (q : y = z) → (p ∙ q) = (p' ∙ q) - right-whisker-identification α q = ap (_∙ q) α - - htpy-left-whisker-identification : - {q q' : y = z} → q = q' → (_∙ q) ~ (_∙ q') - htpy-left-whisker-identification β p = left-whisker-identification p β -``` - -### Whiskerings of identifications are equivalences - -```agda -module _ - {l : Level} {A : UU l} {x y z : A} - where - - is-equiv-left-whisker-identification : - (p : x = y) {q q' : y = z} → - is-equiv (left-whisker-identification p {q} {q'}) - is-equiv-left-whisker-identification p {q} {q'} = - is-emb-is-equiv (is-equiv-concat p z) q q' - - equiv-left-whisker-identification : - (p : x = y) {q q' : y = z} → - (q = q') ≃ (p ∙ q = p ∙ q') - pr1 (equiv-left-whisker-identification p) = left-whisker-identification p - pr2 (equiv-left-whisker-identification p) = - is-equiv-left-whisker-identification p - - is-equiv-right-whisker-identification : - {p p' : x = y} → (q : y = z) → - is-equiv (λ (α : p = p') → right-whisker-identification α q) - is-equiv-right-whisker-identification {p} {p'} q = - is-emb-is-equiv (is-equiv-concat' x q) p p' - - equiv-right-whisker-identification : - {p p' : x = y} → (q : y = z) → - (p = p') ≃ (p ∙ q = p' ∙ q) - pr1 (equiv-right-whisker-identification q) α = - right-whisker-identification α q - pr2 (equiv-right-whisker-identification q) = - is-equiv-right-whisker-identification q -``` - -### Reassociating one side of a higher identification is an equivalence - -```agda -module _ - {l : Level} {A : UU l} {x y z u : A} - where - - equiv-concat-assoc : - (p : x = y) (q : y = z) (r : z = u) (s : x = u) → - ((p ∙ q) ∙ r = s) ≃ (p ∙ (q ∙ r) = s) - equiv-concat-assoc p q r = equiv-concat (inv (assoc p q r)) - - equiv-concat-assoc' : - (s : x = u) (p : x = y) (q : y = z) (r : z = u) → - (s = (p ∙ q) ∙ r) ≃ (s = p ∙ (q ∙ r)) - equiv-concat-assoc' s p q r = equiv-concat' s (assoc p q r) -``` - -### Whiskering of squares of identifications - -```agda -module _ - {l : Level} {A : UU l} {x y z u v : A} - (p : x = y) (p' : x = z) {q : y = u} {q' : z = u} (r : u = v) - where - - equiv-right-whisker-square-identification : - ( coherence-square-identifications p p' q q') ≃ - ( coherence-square-identifications p p' (q ∙ r) (q' ∙ r)) - equiv-right-whisker-square-identification = - ( equiv-concat-assoc' (p' ∙ (q' ∙ r)) p q r) ∘e - ( equiv-concat-assoc p' q' r (p ∙ q ∙ r)) ∘e - ( equiv-right-whisker-identification r) - - right-whisker-square-identification : - coherence-square-identifications p p' q q' → - coherence-square-identifications p p' (q ∙ r) (q' ∙ r) - right-whisker-square-identification = - map-equiv equiv-right-whisker-square-identification - - right-unwhisker-square-identifications : - coherence-square-identifications p p' (q ∙ r) (q' ∙ r) → - coherence-square-identifications p p' q q' - right-unwhisker-square-identifications = - map-inv-equiv equiv-right-whisker-square-identification - -module _ - {l : Level} {A : UU l} {x y z u v : A} - (p : v = x) {q : x = y} {q' : x = z} {r : y = u} {r' : z = u} - where - - equiv-left-whisker-square-identification : - ( coherence-square-identifications q q' r r') ≃ - ( coherence-square-identifications (p ∙ q) (p ∙ q') r r') - equiv-left-whisker-square-identification = - ( inv-equiv (equiv-concat-assoc p q' r' (p ∙ q ∙ r))) ∘e - ( inv-equiv (equiv-concat-assoc' (p ∙ (q' ∙ r')) p q r)) ∘e - ( equiv-left-whisker-identification p) - - left-whisker-square-identification : - coherence-square-identifications q q' r r' → - coherence-square-identifications (p ∙ q) (p ∙ q') r r' - left-whisker-square-identification = - map-equiv equiv-left-whisker-square-identification - - left-unwhisker-square-identification : - coherence-square-identifications (p ∙ q) (p ∙ q') r r' → - coherence-square-identifications q q' r r' - left-unwhisker-square-identification = - map-inv-equiv equiv-left-whisker-square-identification - -module _ - {l : Level} {A : UU l} {x y z u v w : A} - where - - equiv-both-whisker-square-identifications : - (p : x = y) {q : y = z} {q' : y = u} {r : z = v} {r' : u = v} → - (s : v = w) → - ( coherence-square-identifications q q' r r') ≃ - ( coherence-square-identifications (p ∙ q) (p ∙ q') (r ∙ s) (r' ∙ s)) - equiv-both-whisker-square-identifications p {q} {q'} s = - ( equiv-left-whisker-square-identification p) ∘e - ( equiv-right-whisker-square-identification q q' s) -``` - ### Both horizontal and vertical concatenation of 2-paths are binary equivalences ```agda @@ -443,63 +303,6 @@ module _ ( inv right-unit) ``` -### Unit laws for whiskering - -```agda -module _ - {l : Level} {A : UU l} {x y : A} - where - - left-unit-law-left-whisker-identification : - {p p' : x = y} (α : p = p') → - left-whisker-identification refl α = α - left-unit-law-left-whisker-identification refl = refl - - right-unit-law-right-whisker-identification : - {p p' : x = y} (α : p = p') → - right-whisker-identification α refl = - right-unit ∙ α ∙ inv right-unit - right-unit-law-right-whisker-identification {p = refl} refl = refl -``` - -### The whiskering operations allow us to commute higher identifications - -There are two natural ways to commute higher identifications: using whiskering -on the left versus using whiskering on the right. These two ways "undo" each -other. - -```agda -module _ - {l : Level} {A : UU l} {x y z : A} - where - - path-swap-nat-left-whisker-identification : - {q q' : y = z} (β : q = q') {p p' : x = y} (α : p = p') → - coherence-square-identifications - ( right-whisker-identification α q) - ( left-whisker-identification p β) - ( left-whisker-identification p' β) - ( right-whisker-identification α q') - path-swap-nat-left-whisker-identification β = - nat-htpy (htpy-left-whisker-identification β) - - path-swap-nat-right-whisker-identification : - {p p' : x = y} (α : p = p') {q q' : y = z} (β : q = q') → - coherence-square-identifications - ( left-whisker-identification p β) - ( right-whisker-identification α q) - ( right-whisker-identification α q') - ( left-whisker-identification p' β) - path-swap-nat-right-whisker-identification α = - nat-htpy (right-whisker-identification α) - - path-swap-right-undoes-path-swap-left : - {q q' : y = z} (β : q = q') {p p' : x = y} (α : p = p') → - inv (path-swap-nat-right-whisker-identification α β) = - (path-swap-nat-left-whisker-identification β α) - path-swap-right-undoes-path-swap-left refl refl = refl -``` - ### Definition of horizontal inverse 2-paths have an induced inverse operation from the operation on boundary 1-paths diff --git a/src/foundation/whiskering-identifications.lagda.md b/src/foundation/whiskering-identifications.lagda.md new file mode 100644 index 0000000000..a65a1e6827 --- /dev/null +++ b/src/foundation/whiskering-identifications.lagda.md @@ -0,0 +1,204 @@ +# Whiskering identifications + +```agda +module foundation.whiskering-identifications where +``` + +
Imports + +```agda +open import foundation.action-on-identifications-functions +open import foundation.commuting-squares-of-identifications +open import foundation.dependent-pair-types +open import foundation.identity-types +open import foundation.universe-levels + +open import foundation-core.equivalences +open import foundation-core.homotopies +``` + +
+ +## Idea + +## Definitions + +### Definition of identification whiskering + +```agda +module _ + {l : Level} {A : UU l} {x y z : A} + where + + left-whisker-identification : + (p : x = y) {q q' : y = z} → q = q' → (p ∙ q) = (p ∙ q') + left-whisker-identification p β = ap (p ∙_) β + + right-whisker-identification : + {p p' : x = y} → p = p' → (q : y = z) → (p ∙ q) = (p' ∙ q) + right-whisker-identification α q = ap (_∙ q) α + + htpy-left-whisker-identification : + {q q' : y = z} → q = q' → (_∙ q) ~ (_∙ q') + htpy-left-whisker-identification β p = left-whisker-identification p β +``` + +### Whiskerings of identifications are equivalences + +```agda +module _ + {l : Level} {A : UU l} {x y z : A} + where + + is-equiv-left-whisker-identification : + (p : x = y) {q q' : y = z} → + is-equiv (left-whisker-identification p {q} {q'}) + is-equiv-left-whisker-identification p {q} {q'} = + is-emb-is-equiv (is-equiv-concat p z) q q' + + equiv-left-whisker-identification : + (p : x = y) {q q' : y = z} → + (q = q') ≃ (p ∙ q = p ∙ q') + pr1 (equiv-left-whisker-identification p) = left-whisker-identification p + pr2 (equiv-left-whisker-identification p) = + is-equiv-left-whisker-identification p + + is-equiv-right-whisker-identification : + {p p' : x = y} → (q : y = z) → + is-equiv (λ (α : p = p') → right-whisker-identification α q) + is-equiv-right-whisker-identification {p} {p'} q = + is-emb-is-equiv (is-equiv-concat' x q) p p' + + equiv-right-whisker-identification : + {p p' : x = y} → (q : y = z) → + (p = p') ≃ (p ∙ q = p' ∙ q) + pr1 (equiv-right-whisker-identification q) α = + right-whisker-identification α q + pr2 (equiv-right-whisker-identification q) = + is-equiv-right-whisker-identification q +``` + +### Whiskering of squares of identifications + +```agda +module _ + {l : Level} {A : UU l} {x y z u v : A} + (p : x = y) (p' : x = z) {q : y = u} {q' : z = u} (r : u = v) + where + + equiv-right-whisker-square-identification : + ( coherence-square-identifications p p' q q') ≃ + ( coherence-square-identifications p p' (q ∙ r) (q' ∙ r)) + equiv-right-whisker-square-identification = + ( equiv-concat-assoc' (p' ∙ (q' ∙ r)) p q r) ∘e + ( equiv-concat-assoc p' q' r (p ∙ q ∙ r)) ∘e + ( equiv-right-whisker-identification r) + + right-whisker-square-identification : + coherence-square-identifications p p' q q' → + coherence-square-identifications p p' (q ∙ r) (q' ∙ r) + right-whisker-square-identification = + map-equiv equiv-right-whisker-square-identification + + right-unwhisker-square-identifications : + coherence-square-identifications p p' (q ∙ r) (q' ∙ r) → + coherence-square-identifications p p' q q' + right-unwhisker-square-identifications = + map-inv-equiv equiv-right-whisker-square-identification + +module _ + {l : Level} {A : UU l} {x y z u v : A} + (p : v = x) {q : x = y} {q' : x = z} {r : y = u} {r' : z = u} + where + + equiv-left-whisker-square-identification : + ( coherence-square-identifications q q' r r') ≃ + ( coherence-square-identifications (p ∙ q) (p ∙ q') r r') + equiv-left-whisker-square-identification = + ( inv-equiv (equiv-concat-assoc p q' r' (p ∙ q ∙ r))) ∘e + ( inv-equiv (equiv-concat-assoc' (p ∙ (q' ∙ r')) p q r)) ∘e + ( equiv-left-whisker-identification p) + + left-whisker-square-identification : + coherence-square-identifications q q' r r' → + coherence-square-identifications (p ∙ q) (p ∙ q') r r' + left-whisker-square-identification = + map-equiv equiv-left-whisker-square-identification + + left-unwhisker-square-identification : + coherence-square-identifications (p ∙ q) (p ∙ q') r r' → + coherence-square-identifications q q' r r' + left-unwhisker-square-identification = + map-inv-equiv equiv-left-whisker-square-identification + +module _ + {l : Level} {A : UU l} {x y z u v w : A} + where + + equiv-both-whisker-square-identifications : + (p : x = y) {q : y = z} {q' : y = u} {r : z = v} {r' : u = v} → + (s : v = w) → + ( coherence-square-identifications q q' r r') ≃ + ( coherence-square-identifications (p ∙ q) (p ∙ q') (r ∙ s) (r' ∙ s)) + equiv-both-whisker-square-identifications p {q} {q'} s = + ( equiv-left-whisker-square-identification p) ∘e + ( equiv-right-whisker-square-identification q q' s) +``` + +### Unit laws for whiskering + +```agda +module _ + {l : Level} {A : UU l} {x y : A} + where + + left-unit-law-left-whisker-identification : + {p p' : x = y} (α : p = p') → + left-whisker-identification refl α = α + left-unit-law-left-whisker-identification refl = refl + + right-unit-law-right-whisker-identification : + {p p' : x = y} (α : p = p') → + right-whisker-identification α refl = + right-unit ∙ α ∙ inv right-unit + right-unit-law-right-whisker-identification {p = refl} refl = refl +``` + +### The whiskering operations allow us to commute higher identifications + +There are two natural ways to commute higher identifications: using whiskering +on the left versus using whiskering on the right. These two ways "undo" each +other. + +```agda +module _ + {l : Level} {A : UU l} {x y z : A} + where + + path-swap-nat-left-whisker-identification : + {q q' : y = z} (β : q = q') {p p' : x = y} (α : p = p') → + coherence-square-identifications + ( right-whisker-identification α q) + ( left-whisker-identification p β) + ( left-whisker-identification p' β) + ( right-whisker-identification α q') + path-swap-nat-left-whisker-identification β = + nat-htpy (htpy-left-whisker-identification β) + + path-swap-nat-right-whisker-identification : + {p p' : x = y} (α : p = p') {q q' : y = z} (β : q = q') → + coherence-square-identifications + ( left-whisker-identification p β) + ( right-whisker-identification α q) + ( right-whisker-identification α q') + ( left-whisker-identification p' β) + path-swap-nat-right-whisker-identification α = + nat-htpy (right-whisker-identification α) + + path-swap-right-undoes-path-swap-left : + {q q' : y = z} (β : q = q') {p p' : x = y} (α : p = p') → + inv (path-swap-nat-right-whisker-identification α β) = + (path-swap-nat-left-whisker-identification β α) + path-swap-right-undoes-path-swap-left refl refl = refl +``` + From 480a4aeafe043d0d9154856acce904402ca3d364 Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Mon, 29 Jan 2024 16:47:43 +0100 Subject: [PATCH 009/150] refactor --- src/foundation/path-algebra.lagda.md | 1 + ...port-along-higher-identifications.lagda.md | 2 +- .../whiskering-identifications.lagda.md | 227 +++++++++++------- .../eckmann-hilton-argument.lagda.md | 32 +-- 4 files changed, 164 insertions(+), 98 deletions(-) diff --git a/src/foundation/path-algebra.lagda.md b/src/foundation/path-algebra.lagda.md index 2b9728a4e9..391cbd65fb 100644 --- a/src/foundation/path-algebra.lagda.md +++ b/src/foundation/path-algebra.lagda.md @@ -15,6 +15,7 @@ open import foundation.commuting-squares-of-identifications open import foundation.dependent-pair-types open import foundation.identity-types open import foundation.universe-levels +open import foundation.whiskering-identifications open import foundation-core.constant-maps open import foundation-core.equivalences diff --git a/src/foundation/transport-along-higher-identifications.lagda.md b/src/foundation/transport-along-higher-identifications.lagda.md index 9a57c4f63f..6f83f491c3 100644 --- a/src/foundation/transport-along-higher-identifications.lagda.md +++ b/src/foundation/transport-along-higher-identifications.lagda.md @@ -122,7 +122,7 @@ module _ ( right-whisker-identification ( tr³ ( B) - ( path-swap-nat-left-whisker-identification β α) + ( commutative-left-whisker-right-whisker-identification β α) ( b)) ( tr-concat p' q' b)) ( left-whisker-identification diff --git a/src/foundation/whiskering-identifications.lagda.md b/src/foundation/whiskering-identifications.lagda.md index a65a1e6827..7988e9dac1 100644 --- a/src/foundation/whiskering-identifications.lagda.md +++ b/src/foundation/whiskering-identifications.lagda.md @@ -21,9 +21,28 @@ open import foundation-core.homotopies ## 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="identifcations" Agda=left-whisker-identification"}} +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-identification"}} +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. + ## Definitions -### Definition of identification whiskering +### Left whiskering of identifications ```agda module _ @@ -33,49 +52,153 @@ module _ left-whisker-identification : (p : x = y) {q q' : y = z} → q = q' → (p ∙ q) = (p ∙ q') left-whisker-identification p β = ap (p ∙_) β +``` + +### Right whiskering of identifications + +```agda +module _ + {l : Level} {A : UU l} {x y z : A} + where right-whisker-identification : {p p' : x = y} → p = p' → (q : y = z) → (p ∙ q) = (p' ∙ q) right-whisker-identification α q = ap (_∙ q) α - - htpy-left-whisker-identification : - {q q' : y = z} → q = q' → (_∙ q) ~ (_∙ q') - htpy-left-whisker-identification β p = left-whisker-identification p β ``` -### Whiskerings of identifications are equivalences +## Properties + +### Left whiskering of identifications is an equivalence ```agda module _ - {l : Level} {A : UU l} {x y z : A} + {l : Level} {A : UU l} {x y z : A} (p : x = y) {q q' : y = z} where is-equiv-left-whisker-identification : - (p : x = y) {q q' : y = z} → is-equiv (left-whisker-identification p {q} {q'}) - is-equiv-left-whisker-identification p {q} {q'} = + is-equiv-left-whisker-identification = is-emb-is-equiv (is-equiv-concat p z) q q' - equiv-left-whisker-identification : - (p : x = y) {q q' : y = z} → - (q = q') ≃ (p ∙ q = p ∙ q') - pr1 (equiv-left-whisker-identification p) = left-whisker-identification p - pr2 (equiv-left-whisker-identification p) = - is-equiv-left-whisker-identification p + equiv-left-whisker-identification : (q = q') ≃ (p ∙ q = p ∙ q') + pr1 equiv-left-whisker-identification = + left-whisker-identification p + pr2 equiv-left-whisker-identification = + is-equiv-left-whisker-identification +``` + +### 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-identification : - {p p' : x = y} → (q : y = z) → is-equiv (λ (α : p = p') → right-whisker-identification α q) - is-equiv-right-whisker-identification {p} {p'} q = + is-equiv-right-whisker-identification = is-emb-is-equiv (is-equiv-concat' x q) p p' - equiv-right-whisker-identification : - {p p' : x = y} → (q : y = z) → - (p = p') ≃ (p ∙ q = p' ∙ q) - pr1 (equiv-right-whisker-identification q) α = + equiv-right-whisker-identification : (p = p') ≃ (p ∙ q = p' ∙ q) + pr1 equiv-right-whisker-identification α = right-whisker-identification α q - pr2 (equiv-right-whisker-identification q) = - is-equiv-right-whisker-identification q + pr2 equiv-right-whisker-identification = + is-equiv-right-whisker-identification +``` + +### The unit and absorption laws for left whiskering of identifications + +```agda +module _ + {l : Level} {A : UU l} + where + + left-unit-law-left-whisker-identification : + {x y : A} {p p' : x = y} (α : p = p') → + left-whisker-identification refl α = α + left-unit-law-left-whisker-identification refl = refl + + right-absorption-law-left-whisker-identification : + {x y z : A} (p : x = y) (q : y = z) → + left-whisker-identification p (refl {x = q}) = refl + right-absorption-law-left-whisker-identification p q = refl +``` + +### The unit and absorption laws for right whiskering of identifications + +```agda +module _ + {l : Level} {A : UU l} + where + + right-unit-law-right-whisker-identification : + {x y : A} {p p' : x = y} (α : p = p') → + right-whisker-identification α refl = + right-unit ∙ α ∙ inv right-unit + right-unit-law-right-whisker-identification {p = refl} refl = refl + + left-absorption-law-right-whisker-identification : + {x y z : A} (p : x = y) (q : y = z) → + right-whisker-identification (refl {x = p}) q = refl + left-absorption-law-right-whisker-identification p q = refl +``` + +### Commutativity of left and right whiskering of identifications + +Consider four identifications `p p' : x = y` and `q q' : y = z` in a type `A`. +Then the square of identifications + +```text + right-whisker α q + p ∙ q ---------------------> p' ∙ q + | | + left-whisker p β | | left-whisker p' β + ∨ ∨ + p ∙ q' --------------------> p' ∙ q' + right-whisker α q' +``` + +commutes. There are at least two natural ways in which this square is seen to +commute: + +1. The square commutes by naturality of the homotopy + `α ↦ left-whisker-identification α β`. +2. The transposed square commutes by the naturality of the homotopy + `β ↦ right-whisker-identification α β`. + +These two ways in which the square commutes are inverse to each other. + +```agda +module _ + {l : Level} {A : UU l} {x y z : A} + where + + commutative-left-whisker-right-whisker-identification : + {q q' : y = z} (β : q = q') {p p' : x = y} (α : p = p') → + coherence-square-identifications + ( right-whisker-identification α q) + ( left-whisker-identification p β) + ( left-whisker-identification p' β) + ( right-whisker-identification α q') + commutative-left-whisker-right-whisker-identification β = + nat-htpy (λ α → left-whisker-identification α β) + + commutative-right-whisker-left-whisker-identification : + {p p' : x = y} (α : p = p') {q q' : y = z} (β : q = q') → + coherence-square-identifications + ( left-whisker-identification p β) + ( right-whisker-identification α q) + ( right-whisker-identification α q') + ( left-whisker-identification p' β) + commutative-right-whisker-left-whisker-identification α = + nat-htpy (right-whisker-identification α) + + compute-inv-commutative-left-whisker-right-whisker-identification : + {q q' : y = z} (β : q = q') {p p' : x = y} (α : p = p') → + inv (commutative-right-whisker-left-whisker-identification α β) = + (commutative-left-whisker-right-whisker-identification β α) + compute-inv-commutative-left-whisker-right-whisker-identification refl refl = + refl ``` ### Whiskering of squares of identifications @@ -144,61 +267,3 @@ module _ ( equiv-left-whisker-square-identification p) ∘e ( equiv-right-whisker-square-identification q q' s) ``` - -### Unit laws for whiskering - -```agda -module _ - {l : Level} {A : UU l} {x y : A} - where - - left-unit-law-left-whisker-identification : - {p p' : x = y} (α : p = p') → - left-whisker-identification refl α = α - left-unit-law-left-whisker-identification refl = refl - - right-unit-law-right-whisker-identification : - {p p' : x = y} (α : p = p') → - right-whisker-identification α refl = - right-unit ∙ α ∙ inv right-unit - right-unit-law-right-whisker-identification {p = refl} refl = refl -``` - -### The whiskering operations allow us to commute higher identifications - -There are two natural ways to commute higher identifications: using whiskering -on the left versus using whiskering on the right. These two ways "undo" each -other. - -```agda -module _ - {l : Level} {A : UU l} {x y z : A} - where - - path-swap-nat-left-whisker-identification : - {q q' : y = z} (β : q = q') {p p' : x = y} (α : p = p') → - coherence-square-identifications - ( right-whisker-identification α q) - ( left-whisker-identification p β) - ( left-whisker-identification p' β) - ( right-whisker-identification α q') - path-swap-nat-left-whisker-identification β = - nat-htpy (htpy-left-whisker-identification β) - - path-swap-nat-right-whisker-identification : - {p p' : x = y} (α : p = p') {q q' : y = z} (β : q = q') → - coherence-square-identifications - ( left-whisker-identification p β) - ( right-whisker-identification α q) - ( right-whisker-identification α q') - ( left-whisker-identification p' β) - path-swap-nat-right-whisker-identification α = - nat-htpy (right-whisker-identification α) - - path-swap-right-undoes-path-swap-left : - {q q' : y = z} (β : q = q') {p p' : x = y} (α : p = p') → - inv (path-swap-nat-right-whisker-identification α β) = - (path-swap-nat-left-whisker-identification β α) - path-swap-right-undoes-path-swap-left refl refl = refl -``` - diff --git a/src/synthetic-homotopy-theory/eckmann-hilton-argument.lagda.md b/src/synthetic-homotopy-theory/eckmann-hilton-argument.lagda.md index 32ea2df412..10aae40002 100644 --- a/src/synthetic-homotopy-theory/eckmann-hilton-argument.lagda.md +++ b/src/synthetic-homotopy-theory/eckmann-hilton-argument.lagda.md @@ -117,9 +117,9 @@ identifications `γ` and `δ`. Then `| refl | α |` is just [`left-whisker-identification refl-Ω² α`](https://unimath.github.io/agda-unimath/foundation.path-algebra.html#7697). The first and last equality come from the unit laws of whiskering. And the middle equality can be recognized as -[`path-swap-nat-left-whisker-identification`](https://unimath.github.io/agda-unimath/foundation.path-algebra.html#9823), -which is the naturality condition of `htpy-left-whisker-identification α` -applied to `β`. +[`commutative-left-whisker-right-whisker-identification`](https://unimath.github.io/agda-unimath/foundation.path-algebra.html#9823), +which is the naturality condition of `left-whisker-identification - α` applied +to `β`. Since this version of the Eckmann-Hilton argument may seem more complicated than the algbraic version, the reader is entitled to wonder why we bother giving this @@ -132,10 +132,10 @@ induces an autoequivalence `Ω X ≃ Ω X` given by concatinating on the right b `l`. This is shown in [`tr-Id-right`](https://unimath.github.io/agda-unimath/foundation.identity-types.html#11216). A 2-loop `s` induces a homotpy `id {A = Ω X} ~ id` given by -[`htpy-left-whisker-identification`](https://unimath.github.io/agda-unimath/foundation.path-algebra.html#7977). -This claim is shown in TODO (provide link). Thus, the 2-D descent data of -`Id base` is (up to equivalence) exactly the homotopy at the heart of this -version of the Eckmann-Hilton argument. +[`left-whisker-identification`](foundation.whiskering-identifications.md). This +claim is shown in TODO (provide link). Thus, the 2-D descent data of `Id base` +is (up to equivalence) exactly the homotopy at the heart of this version of the +Eckmann-Hilton argument. Recall that homotpies of type `id ~ id` automatically commute with each other via @@ -180,7 +180,7 @@ module _ ( right-unit-law-right-whisker-identification-Ω² β))) = ( right-whisker-identification β refl) ∙ ( left-whisker-identification refl α) - by ( path-swap-nat-left-whisker-identification α β) + by ( commutative-left-whisker-right-whisker-identification α β) = β ∙ α by ( horizontal-concat-Id² ( right-unit-law-right-whisker-identification-Ω² β) @@ -219,7 +219,7 @@ module _ ( left-unit-law-left-whisker-identification-Ω² β))) = ( left-whisker-identification refl β) ∙ ( right-whisker-identification α refl) - by path-swap-nat-right-whisker-identification α β + by commutative-right-whisker-left-whisker-identification α β = β ∙ α by ( horizontal-concat-Id² ( left-unit-law-left-whisker-identification-Ω² β)) @@ -264,7 +264,7 @@ module _ ( right-unit-law-right-whisker-identification-Ω² β) ( left-unit-law-left-whisker-identification-Ω² α))) ( _) - ( path-swap-nat-right-whisker-identification β α))) + ( commutative-right-whisker-left-whisker-identification β α))) by distributive-inv-concat ( concat ( inv @@ -272,7 +272,7 @@ module _ ( right-unit-law-right-whisker-identification-Ω² β) ( left-unit-law-left-whisker-identification-Ω² α))) ( _) - ( path-swap-nat-right-whisker-identification β α)) + ( commutative-right-whisker-left-whisker-identification β α)) ( horizontal-concat-Id² ( left-unit-law-left-whisker-identification-Ω² α) ( right-unit-law-right-whisker-identification-Ω² β)) @@ -283,7 +283,7 @@ module _ ( right-unit-law-right-whisker-identification-Ω² β))) ( _) ( concat - ( inv (path-swap-nat-right-whisker-identification β α)) + ( inv (commutative-right-whisker-left-whisker-identification β α)) ( _) ( inv ( inv @@ -300,7 +300,7 @@ module _ ( horizontal-concat-Id² ( right-unit-law-right-whisker-identification-Ω² β) ( left-unit-law-left-whisker-identification-Ω² α))) - ( path-swap-nat-right-whisker-identification β α)) + ( commutative-right-whisker-left-whisker-identification β α)) = concat ( inv ( horizontal-concat-Id² @@ -308,7 +308,7 @@ module _ ( right-unit-law-right-whisker-identification-Ω² β))) ( _) ( concat - ( path-swap-nat-left-whisker-identification α β) + ( commutative-left-whisker-right-whisker-identification α β) ( _) ( horizontal-concat-Id² ( right-unit-law-right-whisker-identification-Ω² β) @@ -319,7 +319,7 @@ module _ ( left-unit-law-left-whisker-identification-Ω² α) ( right-unit-law-right-whisker-identification-Ω² β))) ( horizontal-concat-Id² - ( path-swap-right-undoes-path-swap-left α β) + ( compute-inv-commutative-left-whisker-right-whisker-identification α β) ( inv-inv ( horizontal-concat-Id² ( right-unit-law-right-whisker-identification-Ω² β) @@ -331,7 +331,7 @@ module _ ( horizontal-concat-Id² ( left-unit-law-left-whisker-identification-Ω² α) ( right-unit-law-right-whisker-identification-Ω² β))) - ( path-swap-nat-left-whisker-identification α β) + ( commutative-left-whisker-right-whisker-identification α β) ( horizontal-concat-Id² ( right-unit-law-right-whisker-identification-Ω² β) ( left-unit-law-left-whisker-identification-Ω² α))) From 89f0e6123b2bd455c307ff7f00b862bd677dc720 Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Mon, 29 Jan 2024 16:51:03 +0100 Subject: [PATCH 010/150] moving file --- .../commuting-squares-of-identifications.lagda.md | 0 src/foundation.lagda.md | 1 + .../commuting-triangles-of-identifications.lagda.md | 3 ++- src/foundation/whiskering-identifications.lagda.md | 4 ++-- 4 files changed, 5 insertions(+), 3 deletions(-) rename src/{foundation => foundation-core}/commuting-squares-of-identifications.lagda.md (100%) diff --git a/src/foundation/commuting-squares-of-identifications.lagda.md b/src/foundation-core/commuting-squares-of-identifications.lagda.md similarity index 100% rename from src/foundation/commuting-squares-of-identifications.lagda.md rename to src/foundation-core/commuting-squares-of-identifications.lagda.md diff --git a/src/foundation.lagda.md b/src/foundation.lagda.md index 1adc44d8a8..62f945dd8f 100644 --- a/src/foundation.lagda.md +++ b/src/foundation.lagda.md @@ -416,4 +416,5 @@ open import foundation.weak-function-extensionality public open import foundation.weak-limited-principle-of-omniscience public open import foundation.weakly-constant-maps public open import foundation.whiskering-homotopies public +open import foundation.whiskering-identifications public ``` diff --git a/src/foundation/commuting-triangles-of-identifications.lagda.md b/src/foundation/commuting-triangles-of-identifications.lagda.md index 0f4809126c..7543ed00d4 100644 --- a/src/foundation/commuting-triangles-of-identifications.lagda.md +++ b/src/foundation/commuting-triangles-of-identifications.lagda.md @@ -8,13 +8,14 @@ module foundation.commuting-triangles-of-identifications where ```agda open import foundation.action-on-identifications-functions +open import foundation.identity-types open import foundation.path-algebra open import foundation.universe-levels +open import foundation.whiskering-identifications open import foundation-core.equivalences open import foundation-core.function-types open import foundation-core.homotopies -open import foundation-core.identity-types ``` diff --git a/src/foundation/whiskering-identifications.lagda.md b/src/foundation/whiskering-identifications.lagda.md index 7988e9dac1..f4c066fbc2 100644 --- a/src/foundation/whiskering-identifications.lagda.md +++ b/src/foundation/whiskering-identifications.lagda.md @@ -114,7 +114,7 @@ module _ where left-unit-law-left-whisker-identification : - {x y : A} {p p' : x = y} (α : p = p') → + {x y : A} {p p' : x = y} (α : p = p') → left-whisker-identification refl α = α left-unit-law-left-whisker-identification refl = refl @@ -132,7 +132,7 @@ module _ where right-unit-law-right-whisker-identification : - {x y : A} {p p' : x = y} (α : p = p') → + {x y : A} {p p' : x = y} (α : p = p') → right-whisker-identification α refl = right-unit ∙ α ∙ inv right-unit right-unit-law-right-whisker-identification {p = refl} refl = refl From 9f9bd6f09ddfda687becdda757b50775dcfe7b7b Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Mon, 29 Jan 2024 16:53:46 +0100 Subject: [PATCH 011/150] renaming imports --- src/foundation-core/coherently-invertible-maps.lagda.md | 2 +- .../commuting-squares-of-identifications.lagda.md | 2 +- src/foundation-core/homotopies.lagda.md | 2 +- src/foundation/commuting-squares-of-maps.lagda.md | 2 +- src/foundation/homotopies.lagda.md | 2 +- src/foundation/morphisms-arrows.lagda.md | 2 +- src/foundation/path-algebra.lagda.md | 2 +- src/foundation/transport-along-higher-identifications.lagda.md | 2 +- src/foundation/whiskering-homotopies.lagda.md | 2 +- src/foundation/whiskering-identifications.lagda.md | 2 +- 10 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/foundation-core/coherently-invertible-maps.lagda.md b/src/foundation-core/coherently-invertible-maps.lagda.md index b4e5e76878..1ccb1d862d 100644 --- a/src/foundation-core/coherently-invertible-maps.lagda.md +++ b/src/foundation-core/coherently-invertible-maps.lagda.md @@ -8,10 +8,10 @@ module foundation-core.coherently-invertible-maps where ```agda open import foundation.action-on-identifications-functions -open import foundation.commuting-squares-of-identifications open import foundation.dependent-pair-types open import foundation.universe-levels +open import foundation-core.commuting-squares-of-identifications open import foundation-core.function-types open import foundation-core.homotopies open import foundation-core.identity-types diff --git a/src/foundation-core/commuting-squares-of-identifications.lagda.md b/src/foundation-core/commuting-squares-of-identifications.lagda.md index b41c0d2b74..e9c6f13b59 100644 --- a/src/foundation-core/commuting-squares-of-identifications.lagda.md +++ b/src/foundation-core/commuting-squares-of-identifications.lagda.md @@ -1,7 +1,7 @@ # Commuting squares of identifications ```agda -module foundation.commuting-squares-of-identifications where +module foundation-core.commuting-squares-of-identifications where ```
Imports diff --git a/src/foundation-core/homotopies.lagda.md b/src/foundation-core/homotopies.lagda.md index 6dcaa23896..1ba1fd09c0 100644 --- a/src/foundation-core/homotopies.lagda.md +++ b/src/foundation-core/homotopies.lagda.md @@ -9,9 +9,9 @@ module foundation-core.homotopies where ```agda open import foundation.action-on-identifications-dependent-functions open import foundation.action-on-identifications-functions -open import foundation.commuting-squares-of-identifications open import foundation.universe-levels +open import foundation-core.commuting-squares-of-identifications open import foundation-core.dependent-identifications open import foundation-core.function-types open import foundation-core.identity-types diff --git a/src/foundation/commuting-squares-of-maps.lagda.md b/src/foundation/commuting-squares-of-maps.lagda.md index 7a1a592d44..70d8e6389e 100644 --- a/src/foundation/commuting-squares-of-maps.lagda.md +++ b/src/foundation/commuting-squares-of-maps.lagda.md @@ -12,7 +12,7 @@ open import foundation-core.commuting-squares-of-maps public open import foundation.action-on-identifications-binary-functions open import foundation.action-on-identifications-functions open import foundation.commuting-squares-of-homotopies -open import foundation.commuting-squares-of-identifications +open import foundation-core.commuting-squares-of-identifications open import foundation.commuting-triangles-of-maps open import foundation.equivalences open import foundation.path-algebra diff --git a/src/foundation/homotopies.lagda.md b/src/foundation/homotopies.lagda.md index 5d60861c2b..ddadef5f75 100644 --- a/src/foundation/homotopies.lagda.md +++ b/src/foundation/homotopies.lagda.md @@ -12,7 +12,7 @@ open import foundation-core.homotopies public open import foundation.action-on-identifications-dependent-functions open import foundation.action-on-identifications-functions open import foundation.binary-equivalences -open import foundation.commuting-squares-of-identifications +open import foundation-core.commuting-squares-of-identifications open import foundation.dependent-pair-types open import foundation.homotopy-induction open import foundation.identity-types diff --git a/src/foundation/morphisms-arrows.lagda.md b/src/foundation/morphisms-arrows.lagda.md index b520ab9b65..149727de7c 100644 --- a/src/foundation/morphisms-arrows.lagda.md +++ b/src/foundation/morphisms-arrows.lagda.md @@ -9,7 +9,7 @@ module foundation.morphisms-arrows where ```agda open import foundation.action-on-identifications-functions open import foundation.commuting-squares-of-homotopies -open import foundation.commuting-squares-of-identifications +open import foundation-core.commuting-squares-of-identifications open import foundation.commuting-triangles-of-identifications open import foundation.dependent-pair-types open import foundation.fundamental-theorem-of-identity-types diff --git a/src/foundation/path-algebra.lagda.md b/src/foundation/path-algebra.lagda.md index 391cbd65fb..8c971a6943 100644 --- a/src/foundation/path-algebra.lagda.md +++ b/src/foundation/path-algebra.lagda.md @@ -11,7 +11,7 @@ open import foundation.action-on-identifications-binary-functions open import foundation.action-on-identifications-functions open import foundation.binary-embeddings open import foundation.binary-equivalences -open import foundation.commuting-squares-of-identifications +open import foundation-core.commuting-squares-of-identifications open import foundation.dependent-pair-types open import foundation.identity-types open import foundation.universe-levels diff --git a/src/foundation/transport-along-higher-identifications.lagda.md b/src/foundation/transport-along-higher-identifications.lagda.md index 6f83f491c3..fa58293dcb 100644 --- a/src/foundation/transport-along-higher-identifications.lagda.md +++ b/src/foundation/transport-along-higher-identifications.lagda.md @@ -8,7 +8,7 @@ module foundation.transport-along-higher-identifications where ```agda open import foundation.action-on-identifications-functions -open import foundation.commuting-squares-of-identifications +open import foundation-core.commuting-squares-of-identifications open import foundation.homotopies open import foundation.path-algebra open import foundation.universe-levels diff --git a/src/foundation/whiskering-homotopies.lagda.md b/src/foundation/whiskering-homotopies.lagda.md index 7660c263e1..a7d5094a6e 100644 --- a/src/foundation/whiskering-homotopies.lagda.md +++ b/src/foundation/whiskering-homotopies.lagda.md @@ -11,7 +11,7 @@ open import foundation-core.whiskering-homotopies public ```agda open import foundation.action-on-identifications-functions open import foundation.commuting-squares-of-homotopies -open import foundation.commuting-squares-of-identifications +open import foundation-core.commuting-squares-of-identifications open import foundation.homotopy-induction open import foundation.path-algebra open import foundation.universe-levels diff --git a/src/foundation/whiskering-identifications.lagda.md b/src/foundation/whiskering-identifications.lagda.md index f4c066fbc2..e1e013cf55 100644 --- a/src/foundation/whiskering-identifications.lagda.md +++ b/src/foundation/whiskering-identifications.lagda.md @@ -8,11 +8,11 @@ module foundation.whiskering-identifications where ```agda open import foundation.action-on-identifications-functions -open import foundation.commuting-squares-of-identifications open import foundation.dependent-pair-types open import foundation.identity-types open import foundation.universe-levels +open import foundation-core.commuting-squares-of-identifications open import foundation-core.equivalences open import foundation-core.homotopies ``` From 01355e973e6b4f42fcaeb62137046ebef273c0a7 Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Mon, 29 Jan 2024 19:20:56 +0100 Subject: [PATCH 012/150] a bunch of refactoring --- ...muting-squares-of-identifications.lagda.md | 50 ++++++++--- src/foundation-core/homotopies.lagda.md | 10 +-- .../commuting-squares-of-maps.lagda.md | 8 +- src/foundation/equivalences.lagda.md | 2 +- src/foundation/homotopies.lagda.md | 1 + src/foundation/morphisms-arrows.lagda.md | 4 +- src/foundation/path-algebra.lagda.md | 79 ----------------- ...port-along-higher-identifications.lagda.md | 4 +- src/foundation/whiskering-homotopies.lagda.md | 3 +- .../whiskering-identifications.lagda.md | 86 ++----------------- .../functoriality-higher-modalities.lagda.md | 6 +- .../lifting-squares.lagda.md | 10 +-- src/synthetic-homotopy-theory/circle.lagda.md | 6 +- 13 files changed, 72 insertions(+), 197 deletions(-) diff --git a/src/foundation-core/commuting-squares-of-identifications.lagda.md b/src/foundation-core/commuting-squares-of-identifications.lagda.md index e9c6f13b59..3c455dd5bb 100644 --- a/src/foundation-core/commuting-squares-of-identifications.lagda.md +++ b/src/foundation-core/commuting-squares-of-identifications.lagda.md @@ -22,30 +22,56 @@ open import foundation-core.identity-types A square of [identifications](foundation-core.identity-types.md) ```text - top - x ------- y - | | - left | | right - | | - z ------- w - bottom + top + x -------> y + | | + left | | right + ∨ ∨ + z -------> w + bottom ``` is said to **commute** if there is an identification -`left ∙ bottom = top ∙ right`. Such an identification is called a **coherence** +`left ∙ bottom = top ∙ right`. Such an identification is called a +{{#concept "coherence" Disambiguation="commuting square of identifications" Agda=coherence-square-identifications}} of the square. ## Definition +### Commuting squares of identifications + ```agda module _ {l : Level} {A : UU l} {x y z w : A} + (top : x = y) (left : x = z) (right : y = w) (bottom : z = w) + where + + coherence-square-identifications : UU l + coherence-square-identifications = left ∙ bottom = top ∙ right +``` + +### Horizontally constant squares + +```agda +module _ + {l : Level} {A : UU l} {a b : A} (p : a = b) + where + + horizontal-refl-coherence-square-identification : + coherence-square-identifications refl p p refl + horizontal-refl-coherence-square-identification = right-unit +``` + +### Vertically constant squares + +```agda +module _ + {l : Level} {A : UU l} {a b : A} (p : a = b) where - coherence-square-identifications : - (top : x = y) (left : x = z) (right : y = w) (bottom : z = w) → UU l - coherence-square-identifications top left right bottom = - left ∙ bottom = top ∙ right + vertical-refl-coherence-square-identifications : + coherence-square-identifications p refl refl p + vertical-refl-coherence-square-identifications = inv right-unit ``` ## Operations diff --git a/src/foundation-core/homotopies.lagda.md b/src/foundation-core/homotopies.lagda.md index 1ba1fd09c0..c01b1724a3 100644 --- a/src/foundation-core/homotopies.lagda.md +++ b/src/foundation-core/homotopies.lagda.md @@ -11,7 +11,6 @@ open import foundation.action-on-identifications-dependent-functions open import foundation.action-on-identifications-functions open import foundation.universe-levels -open import foundation-core.commuting-squares-of-identifications open import foundation-core.dependent-identifications open import foundation-core.function-types open import foundation-core.identity-types @@ -41,7 +40,7 @@ module _ map-compute-dependent-identification-eq-value : {x y : X} (p : x = y) (q : eq-value x) (r : eq-value y) → - coherence-square-identifications (ap (tr P p) q) (apd f p) (apd g p) r → + apd f p ∙ r = ap (tr P p) q ∙ apd g p → dependent-identification eq-value p q r map-compute-dependent-identification-eq-value refl q r = inv ∘ (concat' r (right-unit ∙ ap-id q)) @@ -61,22 +60,21 @@ module _ map-compute-dependent-identification-eq-value-function : {x y : X} (p : x = y) (q : eq-value f g x) (r : eq-value f g y) → - coherence-square-identifications q (ap f p) (ap g p) r → + ap f p ∙ r = q ∙ ap g p → dependent-identification eq-value-function p q r map-compute-dependent-identification-eq-value-function refl q r = inv ∘ concat' r right-unit map-compute-dependent-identification-eq-value-id-id : {l1 : Level} {A : UU l1} {a b : A} (p : a = b) (q : a = a) (r : b = b) → - coherence-square-identifications q p p r → - dependent-identification (eq-value id id) p q r + p ∙ r = q ∙ p → dependent-identification (eq-value id id) p q r map-compute-dependent-identification-eq-value-id-id refl q r s = inv (s ∙ right-unit) map-compute-dependent-identification-eq-value-comp-id : {l1 l2 : Level} {A : UU l1} {B : UU l2} (g : B → A) (f : A → B) {a b : A} (p : a = b) (q : eq-value (g ∘ f) id a) (r : eq-value (g ∘ f) id b) → - coherence-square-identifications q (ap g (ap f p)) p r → + ap g (ap f p) ∙ r = q ∙ p → dependent-identification (eq-value (g ∘ f) id) p q r map-compute-dependent-identification-eq-value-comp-id g f refl q r s = inv (s ∙ right-unit) diff --git a/src/foundation/commuting-squares-of-maps.lagda.md b/src/foundation/commuting-squares-of-maps.lagda.md index 70d8e6389e..7496811e4b 100644 --- a/src/foundation/commuting-squares-of-maps.lagda.md +++ b/src/foundation/commuting-squares-of-maps.lagda.md @@ -12,10 +12,10 @@ open import foundation-core.commuting-squares-of-maps public open import foundation.action-on-identifications-binary-functions open import foundation.action-on-identifications-functions open import foundation.commuting-squares-of-homotopies -open import foundation-core.commuting-squares-of-identifications +open import foundation.commuting-squares-of-identifications open import foundation.commuting-triangles-of-maps open import foundation.equivalences -open import foundation.path-algebra +open import foundation.identity-types open import foundation.postcomposition-functions open import foundation.precomposition-functions open import foundation.universe-levels @@ -25,7 +25,6 @@ open import foundation-core.commuting-prisms-of-maps open import foundation-core.function-extensionality open import foundation-core.function-types open import foundation-core.homotopies -open import foundation-core.identity-types ```
@@ -418,8 +417,9 @@ module _ ( right) ( ( inv (H (map-inv-equiv left a))) ∙ ( ap bottom (is-section-map-inv-equiv left a))))) ∙ - ( is-retraction-left-concat-inv + ( is-section-inv-concat ( H (map-inv-equiv left a)) + ( _) ( ap bottom (is-section-map-inv-equiv left a))))) ``` diff --git a/src/foundation/equivalences.lagda.md b/src/foundation/equivalences.lagda.md index e3e695b440..e54ea7e15a 100644 --- a/src/foundation/equivalences.lagda.md +++ b/src/foundation/equivalences.lagda.md @@ -230,7 +230,7 @@ the original identifications. ( ap ( is-retraction-map-inv-equiv e x ∙_) ( htpy-map-eq-transpose-equiv refl)) ∙ - ( is-retraction-left-concat-inv (is-retraction-map-inv-equiv e x) refl) + ( is-section-inv-concat (is-retraction-map-inv-equiv e x) _ refl) triangle-eq-transpose-equiv-inv' : {x : A} {y : B} (p : y = map-equiv e x) → diff --git a/src/foundation/homotopies.lagda.md b/src/foundation/homotopies.lagda.md index ddadef5f75..91643acf6d 100644 --- a/src/foundation/homotopies.lagda.md +++ b/src/foundation/homotopies.lagda.md @@ -18,6 +18,7 @@ open import foundation.homotopy-induction open import foundation.identity-types open import foundation.path-algebra open import foundation.universe-levels +open import foundation.whiskering-identifications open import foundation-core.dependent-identifications open import foundation-core.equivalences diff --git a/src/foundation/morphisms-arrows.lagda.md b/src/foundation/morphisms-arrows.lagda.md index 149727de7c..0903ebcde0 100644 --- a/src/foundation/morphisms-arrows.lagda.md +++ b/src/foundation/morphisms-arrows.lagda.md @@ -9,15 +9,15 @@ module foundation.morphisms-arrows where ```agda open import foundation.action-on-identifications-functions open import foundation.commuting-squares-of-homotopies -open import foundation-core.commuting-squares-of-identifications +open import foundation.commuting-squares-of-identifications open import foundation.commuting-triangles-of-identifications open import foundation.dependent-pair-types open import foundation.fundamental-theorem-of-identity-types open import foundation.homotopy-induction -open import foundation.path-algebra open import foundation.postcomposition-functions open import foundation.structure-identity-principle open import foundation.universe-levels +open import foundation.whiskering-identifications open import foundation-core.commuting-squares-of-maps open import foundation-core.equivalences diff --git a/src/foundation/path-algebra.lagda.md b/src/foundation/path-algebra.lagda.md index 8c971a6943..4fdc920fbc 100644 --- a/src/foundation/path-algebra.lagda.md +++ b/src/foundation/path-algebra.lagda.md @@ -62,61 +62,6 @@ module _ htpy-right-unit p = right-unit ``` -### Squares - -```agda -horizontal-concat-square : - {l : Level} {A : UU l} {a b c d e f : A} - (p-lleft : a = b) (p-lbottom : b = d) (p-rbottom : d = f) - (p-middle : c = d) (p-ltop : a = c) (p-rtop : c = e) (p-rright : e = f) - (s-left : coherence-square-identifications p-ltop p-lleft p-middle p-lbottom) - (s-right : - coherence-square-identifications p-rtop p-middle p-rright p-rbottom) → - coherence-square-identifications - (p-ltop ∙ p-rtop) p-lleft p-rright (p-lbottom ∙ p-rbottom) -horizontal-concat-square {a = a} {f = f} - p-lleft p-lbottom p-rbottom p-middle p-ltop p-rtop p-rright s-left s-right = - ( inv (assoc p-lleft p-lbottom p-rbottom)) ∙ - ( ( ap (concat' a p-rbottom) s-left) ∙ - ( ( assoc p-ltop p-middle p-rbottom) ∙ - ( ( ap (concat p-ltop f) s-right) ∙ - ( inv (assoc p-ltop p-rtop p-rright))))) - -horizontal-unit-square : - {l : Level} {A : UU l} {a b : A} (p : a = b) → - coherence-square-identifications refl p p refl -horizontal-unit-square p = right-unit - -left-unit-law-horizontal-concat-square : - {l : Level} {A : UU l} {a b c d : A} - (p-left : a = b) (p-bottom : b = d) (p-top : a = c) (p-right : c = d) → - (s : coherence-square-identifications p-top p-left p-right p-bottom) → - ( horizontal-concat-square - p-left refl p-bottom p-left refl p-top p-right - ( horizontal-unit-square p-left) - ( s)) = - ( s) -left-unit-law-horizontal-concat-square refl p-bottom p-top p-right s = - right-unit ∙ ap-id s - -vertical-concat-square : - {l : Level} {A : UU l} {a b c d e f : A} - (p-tleft : a = b) (p-bleft : b = c) (p-bbottom : c = f) - (p-middle : b = e) (p-ttop : a = d) (p-tright : d = e) (p-bright : e = f) - (s-top : coherence-square-identifications p-ttop p-tleft p-tright p-middle) - (s-bottom : - coherence-square-identifications p-middle p-bleft p-bright p-bbottom) → - coherence-square-identifications - p-ttop (p-tleft ∙ p-bleft) (p-tright ∙ p-bright) p-bbottom -vertical-concat-square {a = a} {f = f} - p-tleft p-bleft p-bbottom p-middle p-ttop p-tright p-bright s-top s-bottom = - ( assoc p-tleft p-bleft p-bbottom) ∙ - ( ( ap (concat p-tleft f) s-bottom) ∙ - ( ( inv (assoc p-tleft p-middle p-bright)) ∙ - ( ( ap (concat' a p-bright) s-top) ∙ - ( assoc p-ttop p-tright p-bright)))) -``` - ### Unit laws for `assoc` We give two treatments of the unit laws for the associator. One for computing @@ -193,30 +138,6 @@ ap-concat-eq-inv-right-unit : ap-concat-eq-inv-right-unit f refl = refl ``` -### Iterated inverse laws - -```agda -module _ - {l : Level} {A : UU l} - where - - is-section-left-concat-inv : - {x y z : A} (p : x = y) (q : y = z) → (inv p ∙ (p ∙ q)) = q - is-section-left-concat-inv refl q = refl - - is-retraction-left-concat-inv : - {x y z : A} (p : x = y) (q : x = z) → (p ∙ (inv p ∙ q)) = q - is-retraction-left-concat-inv refl q = refl - - is-section-right-concat-inv : - {x y z : A} (p : x = y) (q : z = y) → ((p ∙ inv q) ∙ q) = p - is-section-right-concat-inv refl refl = refl - - is-retraction-right-concat-inv : - {x y z : A} (p : x = y) (q : y = z) → ((p ∙ q) ∙ inv q) = p - is-retraction-right-concat-inv refl refl = refl -``` - ## Properties of 2-paths ### Definition of vertical and horizontal concatenation in identity types of identity types (a type of 2-paths) diff --git a/src/foundation/transport-along-higher-identifications.lagda.md b/src/foundation/transport-along-higher-identifications.lagda.md index fa58293dcb..3c9c97fdea 100644 --- a/src/foundation/transport-along-higher-identifications.lagda.md +++ b/src/foundation/transport-along-higher-identifications.lagda.md @@ -8,10 +8,10 @@ module foundation.transport-along-higher-identifications where ```agda open import foundation.action-on-identifications-functions -open import foundation-core.commuting-squares-of-identifications +open import foundation.commuting-squares-of-identifications open import foundation.homotopies -open import foundation.path-algebra open import foundation.universe-levels +open import foundation.whiskering-identifications open import foundation-core.identity-types open import foundation-core.transport-along-identifications diff --git a/src/foundation/whiskering-homotopies.lagda.md b/src/foundation/whiskering-homotopies.lagda.md index a7d5094a6e..6217d763bb 100644 --- a/src/foundation/whiskering-homotopies.lagda.md +++ b/src/foundation/whiskering-homotopies.lagda.md @@ -11,10 +11,11 @@ open import foundation-core.whiskering-homotopies public ```agda open import foundation.action-on-identifications-functions open import foundation.commuting-squares-of-homotopies -open import foundation-core.commuting-squares-of-identifications +open import foundation.commuting-squares-of-identifications open import foundation.homotopy-induction open import foundation.path-algebra open import foundation.universe-levels +open import foundation.whiskering-identifications open import foundation-core.equivalences open import foundation-core.function-extensionality diff --git a/src/foundation/whiskering-identifications.lagda.md b/src/foundation/whiskering-identifications.lagda.md index e1e013cf55..8fbcc9f4c7 100644 --- a/src/foundation/whiskering-identifications.lagda.md +++ b/src/foundation/whiskering-identifications.lagda.md @@ -12,7 +12,6 @@ open import foundation.dependent-pair-types open import foundation.identity-types open import foundation.universe-levels -open import foundation-core.commuting-squares-of-identifications open import foundation-core.equivalences open import foundation-core.homotopies ``` @@ -168,6 +167,8 @@ commute: These two ways in which the square commutes are inverse to each other. +**Note.** The following statements could have been formalized using [commuting squares of identifications](foundation.commuting-squares-of-identifications.md). However, in order to avoid cyclic module dependencies in the library we avoid doing so. + ```agda module _ {l : Level} {A : UU l} {x y z : A} @@ -175,95 +176,22 @@ module _ commutative-left-whisker-right-whisker-identification : {q q' : y = z} (β : q = q') {p p' : x = y} (α : p = p') → - coherence-square-identifications - ( right-whisker-identification α q) - ( left-whisker-identification p β) - ( left-whisker-identification p' β) - ( right-whisker-identification α q') + left-whisker-identification p β ∙ right-whisker-identification α q' = + right-whisker-identification α q ∙ left-whisker-identification p' β commutative-left-whisker-right-whisker-identification β = nat-htpy (λ α → left-whisker-identification α β) commutative-right-whisker-left-whisker-identification : {p p' : x = y} (α : p = p') {q q' : y = z} (β : q = q') → - coherence-square-identifications - ( left-whisker-identification p β) - ( right-whisker-identification α q) - ( right-whisker-identification α q') - ( left-whisker-identification p' β) + right-whisker-identification α q ∙ left-whisker-identification p' β = + left-whisker-identification p β ∙ right-whisker-identification α q' commutative-right-whisker-left-whisker-identification α = nat-htpy (right-whisker-identification α) compute-inv-commutative-left-whisker-right-whisker-identification : {q q' : y = z} (β : q = q') {p p' : x = y} (α : p = p') → inv (commutative-right-whisker-left-whisker-identification α β) = - (commutative-left-whisker-right-whisker-identification β α) + commutative-left-whisker-right-whisker-identification β α compute-inv-commutative-left-whisker-right-whisker-identification refl refl = refl ``` - -### Whiskering of squares of identifications - -```agda -module _ - {l : Level} {A : UU l} {x y z u v : A} - (p : x = y) (p' : x = z) {q : y = u} {q' : z = u} (r : u = v) - where - - equiv-right-whisker-square-identification : - ( coherence-square-identifications p p' q q') ≃ - ( coherence-square-identifications p p' (q ∙ r) (q' ∙ r)) - equiv-right-whisker-square-identification = - ( equiv-concat-assoc' (p' ∙ (q' ∙ r)) p q r) ∘e - ( equiv-concat-assoc p' q' r (p ∙ q ∙ r)) ∘e - ( equiv-right-whisker-identification r) - - right-whisker-square-identification : - coherence-square-identifications p p' q q' → - coherence-square-identifications p p' (q ∙ r) (q' ∙ r) - right-whisker-square-identification = - map-equiv equiv-right-whisker-square-identification - - right-unwhisker-square-identifications : - coherence-square-identifications p p' (q ∙ r) (q' ∙ r) → - coherence-square-identifications p p' q q' - right-unwhisker-square-identifications = - map-inv-equiv equiv-right-whisker-square-identification - -module _ - {l : Level} {A : UU l} {x y z u v : A} - (p : v = x) {q : x = y} {q' : x = z} {r : y = u} {r' : z = u} - where - - equiv-left-whisker-square-identification : - ( coherence-square-identifications q q' r r') ≃ - ( coherence-square-identifications (p ∙ q) (p ∙ q') r r') - equiv-left-whisker-square-identification = - ( inv-equiv (equiv-concat-assoc p q' r' (p ∙ q ∙ r))) ∘e - ( inv-equiv (equiv-concat-assoc' (p ∙ (q' ∙ r')) p q r)) ∘e - ( equiv-left-whisker-identification p) - - left-whisker-square-identification : - coherence-square-identifications q q' r r' → - coherence-square-identifications (p ∙ q) (p ∙ q') r r' - left-whisker-square-identification = - map-equiv equiv-left-whisker-square-identification - - left-unwhisker-square-identification : - coherence-square-identifications (p ∙ q) (p ∙ q') r r' → - coherence-square-identifications q q' r r' - left-unwhisker-square-identification = - map-inv-equiv equiv-left-whisker-square-identification - -module _ - {l : Level} {A : UU l} {x y z u v w : A} - where - - equiv-both-whisker-square-identifications : - (p : x = y) {q : y = z} {q' : y = u} {r : z = v} {r' : u = v} → - (s : v = w) → - ( coherence-square-identifications q q' r r') ≃ - ( coherence-square-identifications (p ∙ q) (p ∙ q') (r ∙ s) (r' ∙ s)) - equiv-both-whisker-square-identifications p {q} {q'} s = - ( equiv-left-whisker-square-identification p) ∘e - ( equiv-right-whisker-square-identification q q' s) -``` diff --git a/src/orthogonal-factorization-systems/functoriality-higher-modalities.lagda.md b/src/orthogonal-factorization-systems/functoriality-higher-modalities.lagda.md index a2e7148542..93863bc8ea 100644 --- a/src/orthogonal-factorization-systems/functoriality-higher-modalities.lagda.md +++ b/src/orthogonal-factorization-systems/functoriality-higher-modalities.lagda.md @@ -165,9 +165,9 @@ module _ ( ap ( ap-map-higher-modality m g) ( compute-rec-higher-modality m (unit-higher-modality m ∘ f) x) ∙_) - ( is-section-right-concat-inv - ( compute-rec-higher-modality m (unit-higher-modality m ∘ g) (f x)) - ( compute-rec-higher-modality m (unit-higher-modality m ∘ g ∘ f) x))) + ( is-section-inv-concat' _ + ( compute-rec-higher-modality m (unit-higher-modality m ∘ g ∘ f) x) + ( compute-rec-higher-modality m (unit-higher-modality m ∘ g) (f x)))) ``` ### Action on homotopies diff --git a/src/orthogonal-factorization-systems/lifting-squares.lagda.md b/src/orthogonal-factorization-systems/lifting-squares.lagda.md index 9f1b6a521d..ec8709b71c 100644 --- a/src/orthogonal-factorization-systems/lifting-squares.lagda.md +++ b/src/orthogonal-factorization-systems/lifting-squares.lagda.md @@ -187,8 +187,9 @@ module _ ( ( ap ( inv right-unit ∙_) ( ap-refl-concat (coherence-lifting-square l x))) ∙ - ( is-section-left-concat-inv + ( is-retraction-inv-concat ( right-unit) + ( _) ( coherence-lifting-square l x ∙ inv right-unit)))) ∙ ( ( assoc (coherence-lifting-square l x) (inv right-unit) (α)) ∙ ( ( ap @@ -198,13 +199,12 @@ module _ ( right-unit-law-assoc ( H x) ( ap g (is-extension-lifting-square l x)))) ∙ - ( ( is-section-left-concat-inv + ( ( is-retraction-inv-concat ( right-unit) + ( _) ( ap (H x ∙_) (inv right-unit))) ∙ ( inv - ( is-section-right-concat-inv - ( ap (H x ∙_) (inv right-unit)) - ( α)))))) ∙ + ( is-section-inv-concat' _ α (ap (H x ∙_) (inv right-unit))))))) ∙ ( ( inv ( assoc ( coherence-lifting-square l x) diff --git a/src/synthetic-homotopy-theory/circle.lagda.md b/src/synthetic-homotopy-theory/circle.lagda.md index 278927f05f..f72332e5a5 100644 --- a/src/synthetic-homotopy-theory/circle.lagda.md +++ b/src/synthetic-homotopy-theory/circle.lagda.md @@ -352,9 +352,9 @@ apply-loop-universal-property-𝕊¹-sphere-1-circle-sphere-1 = ( meridian-sphere 0 (one-Fin 1))) ∙ ( left-whisker-identification ( sphere-1-circle-base-𝕊¹-eq-north-sphere-1) - ( is-section-right-concat-inv - ( meridian-sphere 0 (zero-Fin 1)) - ( meridian-sphere 0 (one-Fin 1)))) + ( is-section-inv-concat' _ + ( meridian-sphere 0 (one-Fin 1)) + ( meridian-sphere 0 (zero-Fin 1)))) map-sphere-1-circle-sphere-1-meridian : ( n : Fin 2) → From 1b2431058ecc65a7b0b18e988971cb8782270dfd Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Mon, 29 Jan 2024 19:21:30 +0100 Subject: [PATCH 013/150] new file --- ...muting-squares-of-identifications.lagda.md | 169 ++++++++++++++++++ 1 file changed, 169 insertions(+) create mode 100644 src/foundation/commuting-squares-of-identifications.lagda.md diff --git a/src/foundation/commuting-squares-of-identifications.lagda.md b/src/foundation/commuting-squares-of-identifications.lagda.md new file mode 100644 index 0000000000..37fb9e1b4e --- /dev/null +++ b/src/foundation/commuting-squares-of-identifications.lagda.md @@ -0,0 +1,169 @@ +# Commuting squares of identifications + +```agda +module foundation.commuting-squares-of-identifications where + +open import foundation-core.commuting-squares-of-identifications public +``` + +
Imports + +```agda +open import foundation.action-on-identifications-functions +open import foundation.identity-types +open import foundation.universe-levels +open import foundation.whiskering-identifications + +open import foundation-core.equivalences +``` + +
+ +## Idea + +In this file we develop some further properties of [commuting squares of identifications](foundation-core.commuting-squares-of-identifications.md). + +## Properties + +### Whiskering of squares of identifications + +```agda +module _ + {l : Level} {A : UU l} {x y z u v : A} + (p : x = y) (p' : x = z) {q : y = u} {q' : z = u} (r : u = v) + where + + equiv-right-whisker-square-identification : + ( coherence-square-identifications p p' q q') ≃ + ( coherence-square-identifications p p' (q ∙ r) (q' ∙ r)) + equiv-right-whisker-square-identification = + ( equiv-concat-assoc' (p' ∙ (q' ∙ r)) p q r) ∘e + ( equiv-concat-assoc p' q' r (p ∙ q ∙ r)) ∘e + ( equiv-right-whisker-identification r) + + right-whisker-square-identification : + coherence-square-identifications p p' q q' → + coherence-square-identifications p p' (q ∙ r) (q' ∙ r) + right-whisker-square-identification = + map-equiv equiv-right-whisker-square-identification + + right-unwhisker-square-identifications : + coherence-square-identifications p p' (q ∙ r) (q' ∙ r) → + coherence-square-identifications p p' q q' + right-unwhisker-square-identifications = + map-inv-equiv equiv-right-whisker-square-identification + +module _ + {l : Level} {A : UU l} {x y z u v : A} + (p : v = x) {q : x = y} {q' : x = z} {r : y = u} {r' : z = u} + where + + equiv-left-whisker-square-identification : + ( coherence-square-identifications q q' r r') ≃ + ( coherence-square-identifications (p ∙ q) (p ∙ q') r r') + equiv-left-whisker-square-identification = + ( inv-equiv (equiv-concat-assoc p q' r' (p ∙ q ∙ r))) ∘e + ( inv-equiv (equiv-concat-assoc' (p ∙ (q' ∙ r')) p q r)) ∘e + ( equiv-left-whisker-identification p) + + left-whisker-square-identification : + coherence-square-identifications q q' r r' → + coherence-square-identifications (p ∙ q) (p ∙ q') r r' + left-whisker-square-identification = + map-equiv equiv-left-whisker-square-identification + + left-unwhisker-square-identification : + coherence-square-identifications (p ∙ q) (p ∙ q') r r' → + coherence-square-identifications q q' r r' + left-unwhisker-square-identification = + map-inv-equiv equiv-left-whisker-square-identification + +module _ + {l : Level} {A : UU l} {x y z u v w : A} + where + + equiv-both-whisker-square-identifications : + (p : x = y) {q : y = z} {q' : y = u} {r : z = v} {r' : u = v} → + (s : v = w) → + ( coherence-square-identifications q q' r r') ≃ + ( coherence-square-identifications (p ∙ q) (p ∙ q') (r ∙ s) (r' ∙ s)) + equiv-both-whisker-square-identifications p {q} {q'} s = + ( equiv-left-whisker-square-identification p) ∘e + ( equiv-right-whisker-square-identification q q' s) +``` + +### Horizontal pasting of commuting squares of identifications + +Consider a commuting diagram of identifications + +```text + top-left top-right + a -------------> b -------------> c + | | | + left | | middle | right + ∨ ∨ ∨ + d -------------> e -------------> f + bottom-left bottom-right +``` + +in a type `A`. + +```agda +{- + (p-lleft : a = b) (p-lbottom : b = d) (p-rbottom : d = f) + (p-middle : c = d) (p-ltop : a = c) (p-rtop : c = e) (p-rright : e = f) +-} + +module _ + {l : Level} {A : UU l} {a b c d e f : A} + (top-left : a = b) (top-right : b = c) + (left : a = d) (middle : b = e) (right : c = f) + (bottom-left : d = e) (bottom-right : e = f) + where + + horizontal-concat-square : + coherence-square-identifications top-left left middle bottom-left → + coherence-square-identifications top-right middle right bottom-right → + coherence-square-identifications + ( top-left ∙ top-right) + ( left) + ( right) + ( bottom-left ∙ bottom-right) + horizontal-concat-square s t = + ( inv (assoc left bottom-left bottom-right)) ∙ + ( ( ap (concat' a bottom-right) s) ∙ + ( ( assoc top-left middle bottom-right) ∙ + ( ( ap (concat top-left f) t) ∙ + ( inv (assoc top-left top-right right))))) + +module _ + {l : Level} {A : UU l} {a b c d : A} + where + + left-unit-law-horizontal-concat-square : + (top : a = b) (left : a = c) (right : b = d) (bottom : c = d) + (s : coherence-square-identifications top left right bottom) → + horizontal-concat-square refl top left left right refl bottom + ( horizontal-unit-square left) + ( s) = + s + left-unit-law-horizontal-concat-square top refl right bottom s = + right-unit ∙ ap-id s + +vertical-concat-square : + {l : Level} {A : UU l} {a b c d e f : A} + (p-tleft : a = b) (p-bleft : b = c) (p-bbottom : c = f) + (p-middle : b = e) (p-ttop : a = d) (p-tright : d = e) (p-bright : e = f) + (s-top : coherence-square-identifications p-ttop p-tleft p-tright p-middle) + (s-bottom : + coherence-square-identifications p-middle p-bleft p-bright p-bbottom) → + coherence-square-identifications + p-ttop (p-tleft ∙ p-bleft) (p-tright ∙ p-bright) p-bbottom +vertical-concat-square {a = a} {f = f} + p-tleft p-bleft p-bbottom p-middle p-ttop p-tright p-bright s-top s-bottom = + ( assoc p-tleft p-bleft p-bbottom) ∙ + ( ( ap (concat p-tleft f) s-bottom) ∙ + ( ( inv (assoc p-tleft p-middle p-bright)) ∙ + ( ( ap (concat' a p-bright) s-top) ∙ + ( assoc p-ttop p-tright p-bright)))) +``` From 8fd598e9c4afc7c54d4e1311ef7ab8a47b317c15 Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Mon, 29 Jan 2024 19:27:33 +0100 Subject: [PATCH 014/150] work --- src/foundation-core.lagda.md | 1 + ...muting-squares-of-identifications.lagda.md | 82 ++++++++++++++++++- ...muting-squares-of-identifications.lagda.md | 79 +----------------- src/foundation/homotopies.lagda.md | 2 +- src/foundation/path-algebra.lagda.md | 2 +- .../whiskering-identifications.lagda.md | 5 +- .../lifting-squares.lagda.md | 15 ++-- 7 files changed, 96 insertions(+), 90 deletions(-) diff --git a/src/foundation-core.lagda.md b/src/foundation-core.lagda.md index 803e7912e1..2f12ba23d9 100644 --- a/src/foundation-core.lagda.md +++ b/src/foundation-core.lagda.md @@ -9,6 +9,7 @@ open import foundation-core.1-types public open import foundation-core.cartesian-product-types public open import foundation-core.coherently-invertible-maps public open import foundation-core.commuting-prisms-of-maps public +open import foundation-core.commuting-squares-of-identifications public open import foundation-core.commuting-squares-of-maps public open import foundation-core.commuting-triangles-of-maps public open import foundation-core.constant-maps public diff --git a/src/foundation-core/commuting-squares-of-identifications.lagda.md b/src/foundation-core/commuting-squares-of-identifications.lagda.md index 3c455dd5bb..b44837d1b7 100644 --- a/src/foundation-core/commuting-squares-of-identifications.lagda.md +++ b/src/foundation-core/commuting-squares-of-identifications.lagda.md @@ -56,10 +56,10 @@ module _ module _ {l : Level} {A : UU l} {a b : A} (p : a = b) where - - horizontal-refl-coherence-square-identification : + + horizontal-refl-coherence-square-identifications : coherence-square-identifications refl p p refl - horizontal-refl-coherence-square-identification = right-unit + horizontal-refl-coherence-square-identifications = right-unit ``` ### Vertically constant squares @@ -123,6 +123,82 @@ module _ assoc p-top p-right q-right ``` +### Horizontal pasting of commuting squares of identifications + +Consider a commuting diagram of identifications + +```text + top-left top-right + a -------------> b -------------> c + | | | + left | | middle | right + ∨ ∨ ∨ + d -------------> e -------------> f + bottom-left bottom-right +``` + +in a type `A`. + +```agda +{- + (p-lleft : a = b) (p-lbottom : b = d) (p-rbottom : d = f) + (p-middle : c = d) (p-ltop : a = c) (p-rtop : c = e) (p-rright : e = f) +-} + +module _ + {l : Level} {A : UU l} {a b c d e f : A} + (top-left : a = b) (top-right : b = c) + (left : a = d) (middle : b = e) (right : c = f) + (bottom-left : d = e) (bottom-right : e = f) + where + + horizontal-concat-square : + coherence-square-identifications top-left left middle bottom-left → + coherence-square-identifications top-right middle right bottom-right → + coherence-square-identifications + ( top-left ∙ top-right) + ( left) + ( right) + ( bottom-left ∙ bottom-right) + horizontal-concat-square s t = + ( inv (assoc left bottom-left bottom-right)) ∙ + ( ( ap (concat' a bottom-right) s) ∙ + ( ( assoc top-left middle bottom-right) ∙ + ( ( ap (concat top-left f) t) ∙ + ( inv (assoc top-left top-right right))))) + +module _ + {l : Level} {A : UU l} {a b c d : A} + where + + left-unit-law-horizontal-concat-square : + (top : a = b) (left : a = c) (right : b = d) (bottom : c = d) + (s : coherence-square-identifications top left right bottom) → + horizontal-concat-square refl top left left right refl bottom + ( horizontal-refl-coherence-square-identifications left) + ( s) = + s + left-unit-law-horizontal-concat-square top refl right bottom s = + right-unit ∙ ap-id s + +vertical-concat-square : + {l : Level} {A : UU l} {a b c d e f : A} + (p-tleft : a = b) (p-bleft : b = c) (p-bbottom : c = f) + (p-middle : b = e) (p-ttop : a = d) (p-tright : d = e) (p-bright : e = f) + (s-top : coherence-square-identifications p-ttop p-tleft p-tright p-middle) + (s-bottom : + coherence-square-identifications p-middle p-bleft p-bright p-bbottom) → + coherence-square-identifications + p-ttop (p-tleft ∙ p-bleft) (p-tright ∙ p-bright) p-bbottom +vertical-concat-square {a = a} {f = f} + p-tleft p-bleft p-bbottom p-middle p-ttop p-tright p-bright s-top s-bottom = + ( assoc p-tleft p-bleft p-bbottom) ∙ + ( ( ap (concat p-tleft f) s-bottom) ∙ + ( ( inv (assoc p-tleft p-middle p-bright)) ∙ + ( ( ap (concat' a p-bright) s-top) ∙ + ( assoc p-ttop p-tright p-bright)))) +``` + ### Pasting of identifications along edges of squares of identifications Given a coherence square with an edge `p` and a new identification `s : p = p'` diff --git a/src/foundation/commuting-squares-of-identifications.lagda.md b/src/foundation/commuting-squares-of-identifications.lagda.md index 37fb9e1b4e..c138a8ba0a 100644 --- a/src/foundation/commuting-squares-of-identifications.lagda.md +++ b/src/foundation/commuting-squares-of-identifications.lagda.md @@ -21,7 +21,8 @@ open import foundation-core.equivalences ## Idea -In this file we develop some further properties of [commuting squares of identifications](foundation-core.commuting-squares-of-identifications.md). +In this file we develop some further properties of +[commuting squares of identifications](foundation-core.commuting-squares-of-identifications.md). ## Properties @@ -91,79 +92,3 @@ module _ ( equiv-left-whisker-square-identification p) ∘e ( equiv-right-whisker-square-identification q q' s) ``` - -### Horizontal pasting of commuting squares of identifications - -Consider a commuting diagram of identifications - -```text - top-left top-right - a -------------> b -------------> c - | | | - left | | middle | right - ∨ ∨ ∨ - d -------------> e -------------> f - bottom-left bottom-right -``` - -in a type `A`. - -```agda -{- - (p-lleft : a = b) (p-lbottom : b = d) (p-rbottom : d = f) - (p-middle : c = d) (p-ltop : a = c) (p-rtop : c = e) (p-rright : e = f) --} - -module _ - {l : Level} {A : UU l} {a b c d e f : A} - (top-left : a = b) (top-right : b = c) - (left : a = d) (middle : b = e) (right : c = f) - (bottom-left : d = e) (bottom-right : e = f) - where - - horizontal-concat-square : - coherence-square-identifications top-left left middle bottom-left → - coherence-square-identifications top-right middle right bottom-right → - coherence-square-identifications - ( top-left ∙ top-right) - ( left) - ( right) - ( bottom-left ∙ bottom-right) - horizontal-concat-square s t = - ( inv (assoc left bottom-left bottom-right)) ∙ - ( ( ap (concat' a bottom-right) s) ∙ - ( ( assoc top-left middle bottom-right) ∙ - ( ( ap (concat top-left f) t) ∙ - ( inv (assoc top-left top-right right))))) - -module _ - {l : Level} {A : UU l} {a b c d : A} - where - - left-unit-law-horizontal-concat-square : - (top : a = b) (left : a = c) (right : b = d) (bottom : c = d) - (s : coherence-square-identifications top left right bottom) → - horizontal-concat-square refl top left left right refl bottom - ( horizontal-unit-square left) - ( s) = - s - left-unit-law-horizontal-concat-square top refl right bottom s = - right-unit ∙ ap-id s - -vertical-concat-square : - {l : Level} {A : UU l} {a b c d e f : A} - (p-tleft : a = b) (p-bleft : b = c) (p-bbottom : c = f) - (p-middle : b = e) (p-ttop : a = d) (p-tright : d = e) (p-bright : e = f) - (s-top : coherence-square-identifications p-ttop p-tleft p-tright p-middle) - (s-bottom : - coherence-square-identifications p-middle p-bleft p-bright p-bbottom) → - coherence-square-identifications - p-ttop (p-tleft ∙ p-bleft) (p-tright ∙ p-bright) p-bbottom -vertical-concat-square {a = a} {f = f} - p-tleft p-bleft p-bbottom p-middle p-ttop p-tright p-bright s-top s-bottom = - ( assoc p-tleft p-bleft p-bbottom) ∙ - ( ( ap (concat p-tleft f) s-bottom) ∙ - ( ( inv (assoc p-tleft p-middle p-bright)) ∙ - ( ( ap (concat' a p-bright) s-top) ∙ - ( assoc p-ttop p-tright p-bright)))) -``` diff --git a/src/foundation/homotopies.lagda.md b/src/foundation/homotopies.lagda.md index 91643acf6d..75de88e5d5 100644 --- a/src/foundation/homotopies.lagda.md +++ b/src/foundation/homotopies.lagda.md @@ -12,7 +12,6 @@ open import foundation-core.homotopies public open import foundation.action-on-identifications-dependent-functions open import foundation.action-on-identifications-functions open import foundation.binary-equivalences -open import foundation-core.commuting-squares-of-identifications open import foundation.dependent-pair-types open import foundation.homotopy-induction open import foundation.identity-types @@ -20,6 +19,7 @@ open import foundation.path-algebra open import foundation.universe-levels open import foundation.whiskering-identifications +open import foundation-core.commuting-squares-of-identifications open import foundation-core.dependent-identifications open import foundation-core.equivalences open import foundation-core.function-extensionality diff --git a/src/foundation/path-algebra.lagda.md b/src/foundation/path-algebra.lagda.md index 4fdc920fbc..fd906d0409 100644 --- a/src/foundation/path-algebra.lagda.md +++ b/src/foundation/path-algebra.lagda.md @@ -11,12 +11,12 @@ open import foundation.action-on-identifications-binary-functions open import foundation.action-on-identifications-functions open import foundation.binary-embeddings open import foundation.binary-equivalences -open import foundation-core.commuting-squares-of-identifications open import foundation.dependent-pair-types open import foundation.identity-types open import foundation.universe-levels open import foundation.whiskering-identifications +open import foundation-core.commuting-squares-of-identifications open import foundation-core.constant-maps open import foundation-core.equivalences open import foundation-core.function-types diff --git a/src/foundation/whiskering-identifications.lagda.md b/src/foundation/whiskering-identifications.lagda.md index 8fbcc9f4c7..06d5013874 100644 --- a/src/foundation/whiskering-identifications.lagda.md +++ b/src/foundation/whiskering-identifications.lagda.md @@ -167,7 +167,10 @@ commute: These two ways in which the square commutes are inverse to each other. -**Note.** The following statements could have been formalized using [commuting squares of identifications](foundation.commuting-squares-of-identifications.md). However, in order to avoid cyclic module dependencies in the library we avoid doing so. +**Note.** The following statements could have been formalized using +[commuting squares of identifications](foundation.commuting-squares-of-identifications.md). +However, in order to avoid cyclic module dependencies in the library we avoid +doing so. ```agda module _ diff --git a/src/orthogonal-factorization-systems/lifting-squares.lagda.md b/src/orthogonal-factorization-systems/lifting-squares.lagda.md index ec8709b71c..1f6d55af4b 100644 --- a/src/orthogonal-factorization-systems/lifting-squares.lagda.md +++ b/src/orthogonal-factorization-systems/lifting-squares.lagda.md @@ -45,12 +45,12 @@ together with a diagonal map `j : X → B` such that the complete diagram ```text h - A ------> B - | ^ | - f| j / |g - | / | - V / V - X ------> Y + A --------> B + | ∧ | + f| j / |g + | / | + V / V + X --------> Y i ``` @@ -204,7 +204,8 @@ module _ ( _) ( ap (H x ∙_) (inv right-unit))) ∙ ( inv - ( is-section-inv-concat' _ α (ap (H x ∙_) (inv right-unit))))))) ∙ + ( is-section-inv-concat' _ α + ( ap (H x ∙_) (inv right-unit))))))) ∙ ( ( inv ( assoc ( coherence-lifting-square l x) From 42babf09a5e046ba916b45e23eb31f1b11deb0ac Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Mon, 29 Jan 2024 20:09:48 +0100 Subject: [PATCH 015/150] refactoring the action of functions on higher identifications --- src/foundation/path-algebra.lagda.md | 81 ------------------- ...sition-lifts-families-of-elements.lagda.md | 2 +- src/synthetic-homotopy-theory/circle.lagda.md | 2 +- .../double-loop-spaces.lagda.md | 1 + .../eckmann-hilton-argument.lagda.md | 1 + .../smash-products-of-pointed-types.lagda.md | 2 +- .../suspension-structures.lagda.md | 2 +- 7 files changed, 6 insertions(+), 85 deletions(-) diff --git a/src/foundation/path-algebra.lagda.md b/src/foundation/path-algebra.lagda.md index fd906d0409..eeba4a5717 100644 --- a/src/foundation/path-algebra.lagda.md +++ b/src/foundation/path-algebra.lagda.md @@ -320,87 +320,6 @@ unit-law-δ-interchange-Id² : unit-law-δ-interchange-Id² p refl = refl ``` -### Action on 2-paths of functors - -Functions have an induced action on 2-paths - -```agda -module _ - {l1 l2 : Level} {A : UU l1} {B : UU l2} {x y : A} - {p p' : x = y} (f : A → B) (α : p = p') - where - - ap² : (ap f p) = (ap f p') - ap² = (ap (ap f)) α -``` - -Since this is define in terms of `ap`, it comes with the standard coherences. It -also has induced cohereces. - -Inverse law. - -```agda -module _ - {l1 l2 : Level} {A : UU l1} {B : UU l2} {x y : A} - {p p' : x = y} (f : A → B) (α : p = p') - where - - nat-sq-ap-inv-Id² : - coherence-square-identifications - ( ap² f (horizontal-inv-Id² α)) - ( ap-inv f p) - ( ap-inv f p') - ( horizontal-inv-Id² (ap² f α)) - nat-sq-ap-inv-Id² = - ( ( inv (horizontal-concat-Id² refl (ap-comp inv (ap f) α))) ∙ - ( nat-htpy (ap-inv f) α)) ∙ - ( horizontal-concat-Id² (ap-comp (ap f) inv α) refl) -``` - -Identity law and constant law. - -```agda -module _ - {l1 l2 : Level} {A : UU l1} {B : UU l2} {x y : A} - {p p' : x = y} (α : p = p') - where - - nat-sq-ap-id-Id² : - coherence-square-identifications (ap² id α) (ap-id p) (ap-id p') α - nat-sq-ap-id-Id² = - ((horizontal-concat-Id² refl (inv (ap-id α))) ∙ (nat-htpy ap-id α)) - - nat-sq-ap-const-Id² : - (b : B) → - coherence-square-identifications - ( ap² (const A B b) α) - ( ap-const b p) - ( ap-const b p') - ( refl) - nat-sq-ap-const-Id² b = - ( inv (horizontal-concat-Id² refl (ap-const refl α))) ∙ - ( nat-htpy (ap-const b) α) -``` - -Composition law - -```agda -module _ - {l1 l2 l3 : Level} {A : UU l1} {B : UU l2} {C : UU l3} - {x y : A} {p p' : x = y} (g : B → C) (f : A → B) (α : p = p') - where - - nat-sq-ap-comp-Id² : - coherence-square-identifications - ( ap² (g ∘ f) α) - ( ap-comp g f p) - ( ap-comp g f p') - ( (ap² g ∘ ap² f) α) - nat-sq-ap-comp-Id² = - (horizontal-concat-Id² refl (inv (ap-comp (ap g) (ap f) α)) ∙ - (nat-htpy (ap-comp g f) α)) -``` - ## Properties of 3-paths 3-paths are identifications of 2-paths. In symbols, a type of 3-paths is a type diff --git a/src/orthogonal-factorization-systems/precomposition-lifts-families-of-elements.lagda.md b/src/orthogonal-factorization-systems/precomposition-lifts-families-of-elements.lagda.md index 0a00e91a9f..14ed5757c1 100644 --- a/src/orthogonal-factorization-systems/precomposition-lifts-families-of-elements.lagda.md +++ b/src/orthogonal-factorization-systems/precomposition-lifts-families-of-elements.lagda.md @@ -18,12 +18,12 @@ open import foundation.functoriality-dependent-pair-types open import foundation.homotopies open import foundation.homotopy-induction open import foundation.identity-types -open import foundation.path-algebra open import foundation.precomposition-functions open import foundation.transport-along-identifications open import foundation.type-theoretic-principle-of-choice open import foundation.universe-levels open import foundation.whiskering-homotopies +open import foundation.whiskering-identifications open import orthogonal-factorization-systems.lifts-families-of-elements ``` diff --git a/src/synthetic-homotopy-theory/circle.lagda.md b/src/synthetic-homotopy-theory/circle.lagda.md index f72332e5a5..f93bdd6992 100644 --- a/src/synthetic-homotopy-theory/circle.lagda.md +++ b/src/synthetic-homotopy-theory/circle.lagda.md @@ -19,13 +19,13 @@ open import foundation.equivalences open import foundation.homotopies open import foundation.identity-types open import foundation.mere-equality -open import foundation.path-algebra open import foundation.propositional-truncations open import foundation.propositions open import foundation.retractions open import foundation.sections open import foundation.transport-along-identifications open import foundation.universe-levels +open import foundation.whiskering-identifications open import higher-group-theory.higher-groups diff --git a/src/synthetic-homotopy-theory/double-loop-spaces.lagda.md b/src/synthetic-homotopy-theory/double-loop-spaces.lagda.md index db223e89fb..4a10a09af7 100644 --- a/src/synthetic-homotopy-theory/double-loop-spaces.lagda.md +++ b/src/synthetic-homotopy-theory/double-loop-spaces.lagda.md @@ -12,6 +12,7 @@ open import foundation.dependent-pair-types open import foundation.identity-types open import foundation.path-algebra open import foundation.universe-levels +open import foundation.whiskering-identifications open import structured-types.pointed-equivalences open import structured-types.pointed-types diff --git a/src/synthetic-homotopy-theory/eckmann-hilton-argument.lagda.md b/src/synthetic-homotopy-theory/eckmann-hilton-argument.lagda.md index 10aae40002..c27160f731 100644 --- a/src/synthetic-homotopy-theory/eckmann-hilton-argument.lagda.md +++ b/src/synthetic-homotopy-theory/eckmann-hilton-argument.lagda.md @@ -13,6 +13,7 @@ open import foundation.identity-types open import foundation.interchange-law open import foundation.path-algebra open import foundation.universe-levels +open import foundation.whiskering-identifications open import structured-types.pointed-equivalences open import structured-types.pointed-types diff --git a/src/synthetic-homotopy-theory/smash-products-of-pointed-types.lagda.md b/src/synthetic-homotopy-theory/smash-products-of-pointed-types.lagda.md index 1ce97da445..f73407def4 100644 --- a/src/synthetic-homotopy-theory/smash-products-of-pointed-types.lagda.md +++ b/src/synthetic-homotopy-theory/smash-products-of-pointed-types.lagda.md @@ -12,9 +12,9 @@ open import foundation.action-on-identifications-functions open import foundation.dependent-pair-types open import foundation.homotopies open import foundation.identity-types -open import foundation.path-algebra open import foundation.universe-levels open import foundation.whiskering-homotopies +open import foundation.whiskering-identifications open import structured-types.pointed-cartesian-product-types open import structured-types.pointed-homotopies diff --git a/src/synthetic-homotopy-theory/suspension-structures.lagda.md b/src/synthetic-homotopy-theory/suspension-structures.lagda.md index 6ed5e3aac5..ea7b13733a 100644 --- a/src/synthetic-homotopy-theory/suspension-structures.lagda.md +++ b/src/synthetic-homotopy-theory/suspension-structures.lagda.md @@ -20,11 +20,11 @@ open import foundation.homotopies open import foundation.identity-systems open import foundation.identity-types open import foundation.injective-maps -open import foundation.path-algebra open import foundation.structure-identity-principle open import foundation.unit-type open import foundation.universal-property-unit-type open import foundation.universe-levels +open import foundation.whiskering-identifications open import synthetic-homotopy-theory.cocones-under-spans ``` From 3501d46d5dd12f4bca5a9ada2f09e4447b950298 Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Mon, 29 Jan 2024 20:09:57 +0100 Subject: [PATCH 016/150] refactoring the action of functions on higher identifications --- ...-higher-identifications-functions.lagda.md | 165 ++++++++++++++++++ 1 file changed, 165 insertions(+) create mode 100644 src/foundation/action-on-higher-identifications-functions.lagda.md diff --git a/src/foundation/action-on-higher-identifications-functions.lagda.md b/src/foundation/action-on-higher-identifications-functions.lagda.md new file mode 100644 index 0000000000..38a9abe2b9 --- /dev/null +++ b/src/foundation/action-on-higher-identifications-functions.lagda.md @@ -0,0 +1,165 @@ +# Action of functions on higher identifications + +```agda +module foundation.action-on-higher-identifications-functions where +``` + +
Imports + +```agda +open import foundation.action-on-identifications-functions +open import foundation.path-algebra +open import foundation.universe-levels + +open import foundation-core.commuting-squares-of-identifications +open import foundation-core.constant-maps +open import foundation-core.function-types +open import foundation-core.homotopies +open import foundation-core.identity-types +``` + +
+ +## Idea + +## Definitions + +### The action of functions on higher identifications + +```agda +module _ + {l1 l2 : Level} {A : UU l1} {B : UU l2} {x y : A} + {p p' : x = y} (f : A → B) (α : p = p') + where + + ap² : ap f p = ap f p' + ap² = ap (ap f) α +``` + +## Properties + +### The inverse law of the action of functions on higher identifications + +Consider an identification `α : p = q` between two identifications `p q : x = y` in a type `A`, and consider a map `f : A → B`. Then the square of identifications + +```text + ap² f (horizontal-inv-Id² α) + ap f (inv p) ------------------------------> ap f (inv q) + | | + ap-inv f p | | ap-inv f q + ∨ ∨ + inv (ap f p) ------------------------------> inv (ap f q) + horizontal-inv-Id² (ap² f α) +``` + +commutes. + +```agda +module _ + {l1 l2 : Level} {A : UU l1} {B : UU l2} {x y : A} + {p q : x = y} (f : A → B) (α : p = q) + where + + nat-sq-ap-inv-Id² : + coherence-square-identifications + ( ap² f (horizontal-inv-Id² α)) + ( ap-inv f p) + ( ap-inv f q) + ( horizontal-inv-Id² (ap² f α)) + nat-sq-ap-inv-Id² = + ( ( inv (horizontal-concat-Id² refl (ap-comp inv (ap f) α))) ∙ + ( nat-htpy (ap-inv f) α)) ∙ + ( horizontal-concat-Id² (ap-comp (ap f) inv α) refl) +``` + +### The action of the identity function on higher identifications is trivial + +Consider an identification `α : p = q` between two identifications `p q : x = y` in a type `A`. Then the square of identifications + +```text + ap² id α + ap id p ----------> ap id q + | | + ap-id p | | ap-id q + ∨ ∨ + p -----------------> q + α +``` + +commutes. + +```agda +module _ + {l1 l2 : Level} {A : UU l1} {B : UU l2} {x y : A} + {p q : x = y} (α : p = q) + where + + nat-sq-ap-id-Id² : + coherence-square-identifications (ap² id α) (ap-id p) (ap-id q) α + nat-sq-ap-id-Id² = + horizontal-concat-Id² refl (inv (ap-id α)) ∙ nat-htpy ap-id α +``` + +### The action of a composite function on higher identifications + +Consider an identification `α : p = q` between two identifications `p q : x = y` in a type `A` and consider two functions `f : A → B` and `g : B → C`. Then the square of identifications + +```text + ap² (g ∘ f) α + ap (g ∘ f) p -----------------> ap (g ∘ f) q + | | + ap-comp g f p | | ap-comp g f q + ∨ ∨ + ap g (ap f p) ----------------> ap g (ap f q) + ap² g (ap² f α) +``` + +commutes. + +```agda +module _ + {l1 l2 l3 : Level} {A : UU l1} {B : UU l2} {C : UU l3} + {x y : A} {p p' : x = y} (g : B → C) (f : A → B) (α : p = p') + where + + nat-sq-ap-comp-Id² : + coherence-square-identifications + ( ap² (g ∘ f) α) + ( ap-comp g f p) + ( ap-comp g f p') + ( (ap² g ∘ ap² f) α) + nat-sq-ap-comp-Id² = + (horizontal-concat-Id² refl (inv (ap-comp (ap g) (ap f) α)) ∙ + (nat-htpy (ap-comp g f) α)) +``` + +### The action of a constant function on higher identifications is constant + +Consider an identification `α : p = q` between two identifications `p q : x = y` in a type `A` and consider an element `b : B`. Then the triangle of identifications + +```text + ap² (const b) α + ap (const b) p ---------------> ap (const b) q + \ / + ap-const b p \ / ap-const b q + ∨ ∨ + refl +``` + +```agda +module _ + {l1 l2 : Level} {A : UU l1} {B : UU l2} {x y : A} + {p q : x = y} (α : p = q) + where + + nat-sq-ap-const-Id² : + (b : B) → + coherence-square-identifications + ( ap² (const A B b) α) + ( ap-const b p) + ( ap-const b q) + ( refl) + nat-sq-ap-const-Id² b = + ( inv (horizontal-concat-Id² refl (ap-const refl α))) ∙ + ( nat-htpy (ap-const b) α) +``` From 3245ff8c4eae0dfba62c57704ba7bb665e7edecc Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Mon, 29 Jan 2024 20:13:51 +0100 Subject: [PATCH 017/150] adding idea section --- src/foundation.lagda.md | 1 + ...-higher-identifications-functions.lagda.md | 30 ++++++++++++++++--- 2 files changed, 27 insertions(+), 4 deletions(-) diff --git a/src/foundation.lagda.md b/src/foundation.lagda.md index 62f945dd8f..afcd3e12aa 100644 --- a/src/foundation.lagda.md +++ b/src/foundation.lagda.md @@ -14,6 +14,7 @@ open import foundation.action-on-equivalences-functions public open import foundation.action-on-equivalences-functions-out-of-subuniverses public open import foundation.action-on-equivalences-type-families public open import foundation.action-on-equivalences-type-families-over-subuniverses public +open import foundation.action-on-higher-identifications-functions public open import foundation.action-on-homotopies-functions public open import foundation.action-on-identifications-binary-functions public open import foundation.action-on-identifications-dependent-functions public diff --git a/src/foundation/action-on-higher-identifications-functions.lagda.md b/src/foundation/action-on-higher-identifications-functions.lagda.md index 38a9abe2b9..56bf7c4370 100644 --- a/src/foundation/action-on-higher-identifications-functions.lagda.md +++ b/src/foundation/action-on-higher-identifications-functions.lagda.md @@ -22,6 +22,21 @@ open import foundation-core.identity-types ## Idea +Any map `f : A → B` has an +{{#concept "action on higher identifications" Disambiguation="functions" Agda=ap²}}, +which is a map + +```text + ap² f : (p = q) → (ap f p = ap f q) +``` + +Here `p q : x = y` are identifications in the type `A`. The action of `f` on +higher identifications is defined by + +```text + ap² f := ap (ap f). +``` + ## Definitions ### The action of functions on higher identifications @@ -40,7 +55,9 @@ module _ ### The inverse law of the action of functions on higher identifications -Consider an identification `α : p = q` between two identifications `p q : x = y` in a type `A`, and consider a map `f : A → B`. Then the square of identifications +Consider an identification `α : p = q` between two identifications +`p q : x = y` in a type `A`, and consider a map `f : A → B`. Then the square of +identifications ```text ap² f (horizontal-inv-Id² α) @@ -74,7 +91,8 @@ module _ ### The action of the identity function on higher identifications is trivial -Consider an identification `α : p = q` between two identifications `p q : x = y` in a type `A`. Then the square of identifications +Consider an identification `α : p = q` between two identifications +`p q : x = y` in a type `A`. Then the square of identifications ```text ap² id α @@ -102,7 +120,9 @@ module _ ### The action of a composite function on higher identifications -Consider an identification `α : p = q` between two identifications `p q : x = y` in a type `A` and consider two functions `f : A → B` and `g : B → C`. Then the square of identifications +Consider an identification `α : p = q` between two identifications +`p q : x = y` in a type `A` and consider two functions `f : A → B` and +`g : B → C`. Then the square of identifications ```text ap² (g ∘ f) α @@ -135,7 +155,9 @@ module _ ### The action of a constant function on higher identifications is constant -Consider an identification `α : p = q` between two identifications `p q : x = y` in a type `A` and consider an element `b : B`. Then the triangle of identifications +Consider an identification `α : p = q` between two identifications +`p q : x = y` in a type `A` and consider an element `b : B`. Then the triangle +of identifications ```text ap² (const b) α From 7a89f01c0ac21e718749df851392a6f26ea19b04 Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Mon, 29 Jan 2024 20:19:15 +0100 Subject: [PATCH 018/150] fix imports --- ...action-on-higher-identifications-functions.lagda.md | 10 +++++----- .../smash-products-of-pointed-types.lagda.md | 1 + 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/src/foundation/action-on-higher-identifications-functions.lagda.md b/src/foundation/action-on-higher-identifications-functions.lagda.md index 56bf7c4370..e675415a66 100644 --- a/src/foundation/action-on-higher-identifications-functions.lagda.md +++ b/src/foundation/action-on-higher-identifications-functions.lagda.md @@ -1,4 +1,4 @@ -# Action of functions on higher identifications +# The action of functions on higher identifications ```agda module foundation.action-on-higher-identifications-functions where @@ -44,10 +44,10 @@ higher identifications is defined by ```agda module _ {l1 l2 : Level} {A : UU l1} {B : UU l2} {x y : A} - {p p' : x = y} (f : A → B) (α : p = p') + {p q : x = y} (f : A → B) (α : p = q) where - ap² : ap f p = ap f p' + ap² : ap f p = ap f q ap² = ap (ap f) α ``` @@ -139,14 +139,14 @@ commutes. ```agda module _ {l1 l2 l3 : Level} {A : UU l1} {B : UU l2} {C : UU l3} - {x y : A} {p p' : x = y} (g : B → C) (f : A → B) (α : p = p') + {x y : A} {p q : x = y} (g : B → C) (f : A → B) (α : p = q) where nat-sq-ap-comp-Id² : coherence-square-identifications ( ap² (g ∘ f) α) ( ap-comp g f p) - ( ap-comp g f p') + ( ap-comp g f q) ( (ap² g ∘ ap² f) α) nat-sq-ap-comp-Id² = (horizontal-concat-Id² refl (inv (ap-comp (ap g) (ap f) α)) ∙ diff --git a/src/synthetic-homotopy-theory/smash-products-of-pointed-types.lagda.md b/src/synthetic-homotopy-theory/smash-products-of-pointed-types.lagda.md index f73407def4..a62a002b2a 100644 --- a/src/synthetic-homotopy-theory/smash-products-of-pointed-types.lagda.md +++ b/src/synthetic-homotopy-theory/smash-products-of-pointed-types.lagda.md @@ -7,6 +7,7 @@ module synthetic-homotopy-theory.smash-products-of-pointed-types where
Imports ```agda +open import foundation.action-on-higher-identifications-functions open import foundation.action-on-identifications-dependent-functions open import foundation.action-on-identifications-functions open import foundation.dependent-pair-types From dbdc723399d6f34f4ef63df30db9d014cd7585e3 Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Mon, 29 Jan 2024 21:22:08 +0100 Subject: [PATCH 019/150] refactoring commuting squares of maps --- ...muting-squares-of-identifications.lagda.md | 212 ++---------------- ...muting-squares-of-identifications.lagda.md | 190 ++++++++++++++++ .../commuting-squares-of-maps.lagda.md | 98 ++++---- src/foundation/morphisms-arrows.lagda.md | 4 + 4 files changed, 261 insertions(+), 243 deletions(-) diff --git a/src/foundation-core/commuting-squares-of-identifications.lagda.md b/src/foundation-core/commuting-squares-of-identifications.lagda.md index b44837d1b7..1729e0afae 100644 --- a/src/foundation-core/commuting-squares-of-identifications.lagda.md +++ b/src/foundation-core/commuting-squares-of-identifications.lagda.md @@ -7,7 +7,6 @@ module foundation-core.commuting-squares-of-identifications where
Imports ```agda -open import foundation.action-on-identifications-binary-functions open import foundation.action-on-identifications-functions open import foundation.universe-levels @@ -36,7 +35,7 @@ is said to **commute** if there is an identification {{#concept "coherence" Disambiguation="commuting square of identifications" Agda=coherence-square-identifications}} of the square. -## Definition +## Definitions ### Commuting squares of identifications @@ -76,127 +75,37 @@ module _ ## Operations -### Composing squares of identifications - -We can compose coherence squares that have an edge in common. This is also -called _pasting_ of squares. +### Inverting squares of identifications ```agda module _ - {l : Level} {A : UU l} {x y1 y2 z1 z2 w : A} - (p-left : x = y1) {p-bottom : y1 = z1} - {p-top : x = y2} (middle : y2 = z1) - {q-bottom : z1 = w} {q-top : y2 = z2} - (q-right : z2 = w) - where - - coherence-square-identifications-comp-horizontal : - coherence-square-identifications p-top p-left middle p-bottom → - coherence-square-identifications q-top middle q-right q-bottom → - coherence-square-identifications - (p-top ∙ q-top) p-left q-right (p-bottom ∙ q-bottom) - coherence-square-identifications-comp-horizontal p q = - ( ( ( inv (assoc p-left p-bottom q-bottom) ∙ - ap-binary (_∙_) p (refl {x = q-bottom})) ∙ - assoc p-top middle q-bottom) ∙ - ap-binary (_∙_) (refl {x = p-top}) q) ∙ - inv (assoc p-top q-top q-right) - -module _ - {l : Level} {A : UU l} {x y1 y2 z1 z2 w : A} - {p-left : x = y1} {middle : y1 = z2} - {p-top : x = y2} {p-right : y2 = z2} - {q-left : y1 = z1} {q-bottom : z1 = w} - {q-right : z2 = w} + {l : Level} {A : UU l} {x y z w : A} where - coherence-square-identifications-comp-vertical : - coherence-square-identifications p-top p-left p-right middle → - coherence-square-identifications middle q-left q-right q-bottom → - coherence-square-identifications - p-top (p-left ∙ q-left) (p-right ∙ q-right) q-bottom - coherence-square-identifications-comp-vertical p q = - ( assoc p-left q-left q-bottom ∙ - ( ( ap-binary (_∙_) (refl {x = p-left}) q ∙ - inv (assoc p-left middle q-right)) ∙ - ap-binary (_∙_) p (refl {x = q-right}))) ∙ - assoc p-top p-right q-right -``` - -### Horizontal pasting of commuting squares of identifications - -Consider a commuting diagram of identifications - -```text - top-left top-right - a -------------> b -------------> c - | | | - left | | middle | right - ∨ ∨ ∨ - d -------------> e -------------> f - bottom-left bottom-right + coherence-square-identifications-horizontal-inv : + (top : x = y) (left : x = z) (right : y = w) (bottom : z = w) → + coherence-square-identifications top left right bottom → + coherence-square-identifications (inv top) right left (inv bottom) + coherence-square-identifications-horizontal-inv refl refl right refl coh = + right-unit ∙ inv coh ``` -in a type `A`. +### Functions acting on squares of identifications ```agda -{- - (p-lleft : a = b) (p-lbottom : b = d) (p-rbottom : d = f) - (p-middle : c = d) (p-ltop : a = c) (p-rtop : c = e) (p-rright : e = f) --} - module _ - {l : Level} {A : UU l} {a b c d e f : A} - (top-left : a = b) (top-right : b = c) - (left : a = d) (middle : b = e) (right : c = f) - (bottom-left : d = e) (bottom-right : e = f) + {l1 l2 : Level} {A : UU l1} {B : UU l2} {x y z w : A} (f : A → B) where - horizontal-concat-square : - coherence-square-identifications top-left left middle bottom-left → - coherence-square-identifications top-right middle right bottom-right → + coherence-square-identifications-ap : + (top : x = y) (left : x = z) (right : y = w) (bottom : z = w) → + coherence-square-identifications top left right bottom → coherence-square-identifications - ( top-left ∙ top-right) - ( left) - ( right) - ( bottom-left ∙ bottom-right) - horizontal-concat-square s t = - ( inv (assoc left bottom-left bottom-right)) ∙ - ( ( ap (concat' a bottom-right) s) ∙ - ( ( assoc top-left middle bottom-right) ∙ - ( ( ap (concat top-left f) t) ∙ - ( inv (assoc top-left top-right right))))) - -module _ - {l : Level} {A : UU l} {a b c d : A} - where - - left-unit-law-horizontal-concat-square : - (top : a = b) (left : a = c) (right : b = d) (bottom : c = d) - (s : coherence-square-identifications top left right bottom) → - horizontal-concat-square refl top left left right refl bottom - ( horizontal-refl-coherence-square-identifications left) - ( s) = - s - left-unit-law-horizontal-concat-square top refl right bottom s = - right-unit ∙ ap-id s - -vertical-concat-square : - {l : Level} {A : UU l} {a b c d e f : A} - (p-tleft : a = b) (p-bleft : b = c) (p-bbottom : c = f) - (p-middle : b = e) (p-ttop : a = d) (p-tright : d = e) (p-bright : e = f) - (s-top : coherence-square-identifications p-ttop p-tleft p-tright p-middle) - (s-bottom : - coherence-square-identifications p-middle p-bleft p-bright p-bbottom) → - coherence-square-identifications - p-ttop (p-tleft ∙ p-bleft) (p-tright ∙ p-bright) p-bbottom -vertical-concat-square {a = a} {f = f} - p-tleft p-bleft p-bbottom p-middle p-ttop p-tright p-bright s-top s-bottom = - ( assoc p-tleft p-bleft p-bbottom) ∙ - ( ( ap (concat p-tleft f) s-bottom) ∙ - ( ( inv (assoc p-tleft p-middle p-bright)) ∙ - ( ( ap (concat' a p-bright) s-top) ∙ - ( assoc p-ttop p-tright p-bright)))) + ( ap f top) + ( ap f left) + ( ap f right) + ( ap f bottom) + coherence-square-identifications-ap refl refl right refl coh = ap (ap f) coh ``` ### Pasting of identifications along edges of squares of identifications @@ -235,86 +144,3 @@ module _ coherence-square-identifications top left right' bottom coherence-square-identifications-right-paste refl sq = sq ``` - -### Whiskering squares of identifications - -Given an identification at one the vertices of a coherence square, then we may -whisker the square by that identification. - -```agda -module _ - {l : Level} {A : UU l} {x y z w : A} - (left : x = z) (bottom : z = w) (top : x = y) (right : y = w) - where - - coherence-square-identifications-top-left-whisker' : - {x' : A} (p : x' = x) → - coherence-square-identifications top left right bottom → - coherence-square-identifications (p ∙ top) (p ∙ left) right bottom - coherence-square-identifications-top-left-whisker' refl sq = sq - - coherence-square-identifications-top-left-whisker : - {x' : A} (p : x = x') → - coherence-square-identifications top left right bottom → - coherence-square-identifications (inv p ∙ top) (inv p ∙ left) right bottom - coherence-square-identifications-top-left-whisker refl sq = sq - - coherence-square-identifications-top-right-whisker : - {y' : A} (p : y = y') → - coherence-square-identifications top left right bottom → - coherence-square-identifications (top ∙ p) left (inv p ∙ right) bottom - coherence-square-identifications-top-right-whisker refl = - coherence-square-identifications-top-paste - left bottom top right (inv right-unit) - - coherence-square-identifications-bottom-left-whisker : - {z' : A} (p : z = z') → - coherence-square-identifications top left right bottom → - coherence-square-identifications top (left ∙ p) right (inv p ∙ bottom) - coherence-square-identifications-bottom-left-whisker refl = - coherence-square-identifications-left-paste - left bottom top right (inv right-unit) - - coherence-square-identifications-bottom-right-whisker : - {w' : A} (p : w = w') → - coherence-square-identifications top left right bottom → - coherence-square-identifications top left (right ∙ p) (bottom ∙ p) - coherence-square-identifications-bottom-right-whisker refl = - ( coherence-square-identifications-bottom-paste - left bottom top (right ∙ refl) (inv right-unit)) ∘ - ( coherence-square-identifications-right-paste - left bottom top right (inv right-unit)) -``` - -### Inverting squares of identifications - -```agda -module _ - {l : Level} {A : UU l} {x y z w : A} - where - - coherence-square-identifications-horizontal-inv : - (top : x = y) (left : x = z) (right : y = w) (bottom : z = w) → - coherence-square-identifications top left right bottom → - coherence-square-identifications (inv top) right left (inv bottom) - coherence-square-identifications-horizontal-inv refl refl right refl coh = - right-unit ∙ inv coh -``` - -### Functions acting on squares of identifications - -```agda -module _ - {l1 l2 : Level} {A : UU l1} {B : UU l2} {x y z w : A} (f : A → B) - where - - coherence-square-identifications-ap : - (top : x = y) (left : x = z) (right : y = w) (bottom : z = w) → - coherence-square-identifications top left right bottom → - coherence-square-identifications - ( ap f top) - ( ap f left) - ( ap f right) - ( ap f bottom) - coherence-square-identifications-ap refl refl right refl coh = ap (ap f) coh -``` diff --git a/src/foundation/commuting-squares-of-identifications.lagda.md b/src/foundation/commuting-squares-of-identifications.lagda.md index c138a8ba0a..a692f59008 100644 --- a/src/foundation/commuting-squares-of-identifications.lagda.md +++ b/src/foundation/commuting-squares-of-identifications.lagda.md @@ -9,12 +9,14 @@ open import foundation-core.commuting-squares-of-identifications public
Imports ```agda +open import foundation.action-on-identifications-binary-functions open import foundation.action-on-identifications-functions open import foundation.identity-types open import foundation.universe-levels open import foundation.whiskering-identifications open import foundation-core.equivalences +open import foundation-core.function-types ```
@@ -24,6 +26,194 @@ open import foundation-core.equivalences In this file we develop some further properties of [commuting squares of identifications](foundation-core.commuting-squares-of-identifications.md). +## Operations + +### Horizontally pasting squares of identifications + +Consider two squares of identifications as in the diagram + +```text + top-left top-right + a -------------> b -------------> c + | | | + left | | middle | right + ∨ ∨ ∨ + d -------------> e -------------> f + bottom-left bottom-right +``` + +with `s : left ∙ bottom-left = top-left ∙ middle` and t : middle ∙ bottom-right = top-right ∙ right`. Then the outer square commutes. + +```agda +module _ + {l : Level} {A : UU l} {a b c d e f : A} + (top-left : a = b) (top-right : b = c) + (left : a = d) (middle : b = e) (right : c = f) + (bottom-left : d = e) (bottom-right : e = f) + where + + coherence-square-identifications-comp-horizontal : + coherence-square-identifications top-left left middle bottom-left → + coherence-square-identifications top-right middle right bottom-right → + coherence-square-identifications + (top-left ∙ top-right) left right (bottom-left ∙ bottom-right) + coherence-square-identifications-comp-horizontal p q = + ( ( ( ( inv (assoc left bottom-left bottom-right)) ∙ + ( ap-binary _∙_ p refl)) ∙ + ( assoc top-left middle bottom-right)) ∙ + ( ap-binary _∙_ (refl {x = top-left}) q)) ∙ + ( inv (assoc top-left top-right right)) +``` + +### Vertically pasting squares of identifications + +```agda +module _ + {l : Level} {A : UU l} {a b c d e f : A} + (top : a = b) (top-left : a = c) (top-right : b = d) + (middle : c = d) (bottom-left : c = e) (bottom-right : d = f) + (bottom : e = f) + where + + coherence-square-identifications-comp-vertical : + coherence-square-identifications top top-left top-right middle → + coherence-square-identifications middle bottom-left bottom-right bottom → + coherence-square-identifications + top (top-left ∙ bottom-left) (top-right ∙ bottom-right) bottom + coherence-square-identifications-comp-vertical p q = + ( ( assoc top-left bottom-left bottom) ∙ + ( ( ( ap-binary _∙_ (refl {x = top-left}) q) ∙ + ( inv (assoc top-left middle bottom-right))) ∙ + ( ap-binary _∙_ p (refl {x = bottom-right})))) ∙ + ( assoc top top-right bottom-right) +``` + +### Horizontal pasting of commuting squares of identifications + +Consider a commuting diagram of identifications + +```text + top-left top-right + a -------------> b -------------> c + | | | + left | | middle | right + ∨ ∨ ∨ + d -------------> e -------------> f + bottom-left bottom-right +``` + +in a type `A`. + +```agda +{- + (p-lleft : a = b) (p-lbottom : b = d) (p-rbottom : d = f) + (p-middle : c = d) (p-ltop : a = c) (p-rtop : c = e) (p-rright : e = f) +-} + +module _ + {l : Level} {A : UU l} {a b c d e f : A} + (top-left : a = b) (top-right : b = c) + (left : a = d) (middle : b = e) (right : c = f) + (bottom-left : d = e) (bottom-right : e = f) + where + + horizontal-concat-square : + coherence-square-identifications top-left left middle bottom-left → + coherence-square-identifications top-right middle right bottom-right → + coherence-square-identifications + ( top-left ∙ top-right) + ( left) + ( right) + ( bottom-left ∙ bottom-right) + horizontal-concat-square s t = + ( inv (assoc left bottom-left bottom-right)) ∙ + ( ( ap (concat' a bottom-right) s) ∙ + ( ( assoc top-left middle bottom-right) ∙ + ( ( ap (concat top-left f) t) ∙ + ( inv (assoc top-left top-right right))))) + +module _ + {l : Level} {A : UU l} {a b c d : A} + where + + left-unit-law-horizontal-concat-square : + (top : a = b) (left : a = c) (right : b = d) (bottom : c = d) + (s : coherence-square-identifications top left right bottom) → + horizontal-concat-square refl top left left right refl bottom + ( horizontal-refl-coherence-square-identifications left) + ( s) = + s + left-unit-law-horizontal-concat-square top refl right bottom s = + right-unit ∙ ap-id s + +vertical-concat-square : + {l : Level} {A : UU l} {a b c d e f : A} + (p-tleft : a = b) (p-bleft : b = c) (p-bbottom : c = f) + (p-middle : b = e) (p-ttop : a = d) (p-tright : d = e) (p-bright : e = f) + (s-top : coherence-square-identifications p-ttop p-tleft p-tright p-middle) + (s-bottom : + coherence-square-identifications p-middle p-bleft p-bright p-bbottom) → + coherence-square-identifications + p-ttop (p-tleft ∙ p-bleft) (p-tright ∙ p-bright) p-bbottom +vertical-concat-square {a = a} {f = f} + p-tleft p-bleft p-bbottom p-middle p-ttop p-tright p-bright s-top s-bottom = + ( assoc p-tleft p-bleft p-bbottom) ∙ + ( ( ap (concat p-tleft f) s-bottom) ∙ + ( ( inv (assoc p-tleft p-middle p-bright)) ∙ + ( ( ap (concat' a p-bright) s-top) ∙ + ( assoc p-ttop p-tright p-bright)))) +``` + +### Whiskering squares of identifications + +Given an identification at one the vertices of a coherence square, then we may +whisker the square by that identification. + +```agda +module _ + {l : Level} {A : UU l} {x y z w : A} + (left : x = z) (bottom : z = w) (top : x = y) (right : y = w) + where + + coherence-square-identifications-top-left-whisker' : + {x' : A} (p : x' = x) → + coherence-square-identifications top left right bottom → + coherence-square-identifications (p ∙ top) (p ∙ left) right bottom + coherence-square-identifications-top-left-whisker' refl sq = sq + + coherence-square-identifications-top-left-whisker : + {x' : A} (p : x = x') → + coherence-square-identifications top left right bottom → + coherence-square-identifications (inv p ∙ top) (inv p ∙ left) right bottom + coherence-square-identifications-top-left-whisker refl sq = sq + + coherence-square-identifications-top-right-whisker : + {y' : A} (p : y = y') → + coherence-square-identifications top left right bottom → + coherence-square-identifications (top ∙ p) left (inv p ∙ right) bottom + coherence-square-identifications-top-right-whisker refl = + coherence-square-identifications-top-paste + left bottom top right (inv right-unit) + + coherence-square-identifications-bottom-left-whisker : + {z' : A} (p : z = z') → + coherence-square-identifications top left right bottom → + coherence-square-identifications top (left ∙ p) right (inv p ∙ bottom) + coherence-square-identifications-bottom-left-whisker refl = + coherence-square-identifications-left-paste + left bottom top right (inv right-unit) + + coherence-square-identifications-bottom-right-whisker : + {w' : A} (p : w = w') → + coherence-square-identifications top left right bottom → + coherence-square-identifications top left (right ∙ p) (bottom ∙ p) + coherence-square-identifications-bottom-right-whisker refl = + ( coherence-square-identifications-bottom-paste + left bottom top (right ∙ refl) (inv right-unit)) ∘ + ( coherence-square-identifications-right-paste + left bottom top right (inv right-unit)) +``` + ## Properties ### Whiskering of squares of identifications diff --git a/src/foundation/commuting-squares-of-maps.lagda.md b/src/foundation/commuting-squares-of-maps.lagda.md index 7496811e4b..c312a19372 100644 --- a/src/foundation/commuting-squares-of-maps.lagda.md +++ b/src/foundation/commuting-squares-of-maps.lagda.md @@ -1,6 +1,8 @@ # Commuting squares of maps ```agda +{-# OPTIONS --lossy-unification #-} + module foundation.commuting-squares-of-maps where open import foundation-core.commuting-squares-of-maps public @@ -155,35 +157,28 @@ coherence-square-inv-all top left right bottom H = Every commuting square ```text - top - A -----------------> X - | | - | | - left ⇗ right - | | - v v - B -----------------> Y - bottom + top + A --------> X + | | + left | | right + ∨ ∨ + B --------> Y + bottom ``` induces a commuting square of [precomposition functions](foundation-core.precomposition-functions.md) ```text - precomp bottom S - (A → S) ----------------> (B → S) - | | - | | - precomp right S ⇙ precomp left S - | | - v v - (X → S) ----------------> (Y → S) - precomp top S + precomp right S + (A → S) -----------------> (X → S) + | | + precomp bottom S | | precomp top S + ∨ ∨ + (B → S) ------------------> (Y → S). + precomp left S ``` -Note both that the order of composition has been flipped as well as the -direction of the homotopy. - ```agda module _ {l1 l2 l3 l4 l5 : Level} @@ -217,30 +212,26 @@ module _ Every commuting square ```text - top - A -----------------> X - | | - | | - left ⇗ right - | | - v v - B -----------------> Y - bottom + top + A --------> X + | | + left | | right + ∨ ∨ + B --------> Y + bottom ``` induces a commuting square of [postcomposition functions](foundation-core.postcomposition-functions.md) ```text - postcomp S top - (S → A) ----------------> (S → X) - | | - | | - postcomp S left ⇗ postcomp S right - | | - v v - (S → B) ----------------> (S → Y) - postcomp S bottom + postcomp S top + (S → A) ------------------> (S → X) + | | + postcomp S left | | postcomp S right + ∨ ∨ + (S → B) ------------------> (S → Y). + postcomp S bottom ``` ```agda @@ -330,17 +321,24 @@ module _ ( inv (H (map-inv-equiv left (map-equiv left a))))) ( inv ( coherence-square-identifications-comp-vertical - { p-left = - ap - ( map-inv-equiv right) - ( H (map-inv-equiv left (map-equiv left a)))} - { p-top = - ap - ( map-inv-equiv right) - ( ap - ( bottom) - ( is-section-map-inv-equiv left (map-equiv left a)))} - { q-bottom = ap top (is-retraction-map-inv-equiv left a)} + ( ap + ( map-inv-equiv right) + ( ap + ( bottom) + ( is-section-map-inv-equiv left (map-equiv left a)))) + ( ap + ( map-inv-equiv right) + ( H (map-inv-equiv left (map-equiv left a)))) + ( ap (map-inv-equiv right) (H a)) + ( ap + ( map-inv-equiv right) + ( ap + ( map-equiv right ∘ top) + ( is-retraction-map-inv-equiv left a))) + ( is-retraction-map-inv-equiv right + ( top (map-inv-equiv left (map-equiv left a)))) + ( is-retraction-map-inv-equiv right (top a)) + ( ap top (is-retraction-map-inv-equiv left a)) ( coherence-square-identifications-top-paste ( ap ( map-inv-equiv right) diff --git a/src/foundation/morphisms-arrows.lagda.md b/src/foundation/morphisms-arrows.lagda.md index 0903ebcde0..ac9611a199 100644 --- a/src/foundation/morphisms-arrows.lagda.md +++ b/src/foundation/morphisms-arrows.lagda.md @@ -362,9 +362,13 @@ module _ ( htpy-domain-htpy-hom-arrow f g α β H a) ( htpy-domain-htpy-hom-arrow f g β γ K a))) ∙ ( coherence-square-identifications-comp-horizontal + ( htpy-codomain-htpy-hom-arrow f g α β H (f a)) + ( htpy-codomain-htpy-hom-arrow f g β γ K (f a)) ( coh-hom-arrow f g α a) ( coh-hom-arrow f g β a) ( coh-hom-arrow f g γ a) + ( (g ·l htpy-domain-htpy-hom-arrow f g α β H) a) + ( (g ·l htpy-domain-htpy-hom-arrow f g β γ K) a) ( coh-htpy-hom-arrow f g α β H a) ( coh-htpy-hom-arrow f g β γ K a)) From 9aef0a276c90e45abef0918684a014246cd8bb8f Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Mon, 29 Jan 2024 21:29:12 +0100 Subject: [PATCH 020/150] fixing the order of arguments of pasting lemmas of commuting squares --- .../functoriality-suspensions.lagda.md | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/synthetic-homotopy-theory/functoriality-suspensions.lagda.md b/src/synthetic-homotopy-theory/functoriality-suspensions.lagda.md index ee63c9d038..aa73a01290 100644 --- a/src/synthetic-homotopy-theory/functoriality-suspensions.lagda.md +++ b/src/synthetic-homotopy-theory/functoriality-suspensions.lagda.md @@ -138,10 +138,12 @@ module _ ( ap (map-suspension (g ∘ f)) (meridian-suspension a)) ( preserves-comp-map-suspension-south) coherence-square-identifications-comp-map-suspension a = - coherence-square-identifications-comp-horizontal + coherence-square-identifications-comp-horizontal _ _ ( ap (map-suspension g ∘ map-suspension f) (meridian-suspension a)) ( ap (map-suspension g) (meridian-suspension (f a))) ( ap (map-suspension (g ∘ f)) (meridian-suspension a)) + ( _) + ( _) ( coherence-square-identifications-left-paste ( ap (map-suspension g) (ap (map-suspension f) (meridian-suspension a))) ( ap (map-suspension g) (compute-south-map-suspension f)) @@ -159,10 +161,12 @@ module _ ( meridian-suspension (f a)) ( compute-south-map-suspension f) ( compute-meridian-map-suspension f a))) - ( coherence-square-identifications-comp-horizontal + ( coherence-square-identifications-comp-horizontal _ _ ( ap (map-suspension g) (meridian-suspension (f a))) ( meridian-suspension (g (f a))) ( ap (map-suspension (g ∘ f)) (meridian-suspension a)) + ( _) + ( _) ( compute-meridian-map-suspension g (f a)) ( coherence-square-identifications-horizontal-inv ( compute-north-map-suspension (g ∘ f)) From 167a59e5420276acd559c8ea5872a7721758f34a Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Mon, 29 Jan 2024 21:29:34 +0100 Subject: [PATCH 021/150] make pre-commit --- src/foundation/commuting-squares-of-identifications.lagda.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/foundation/commuting-squares-of-identifications.lagda.md b/src/foundation/commuting-squares-of-identifications.lagda.md index a692f59008..714d1de56c 100644 --- a/src/foundation/commuting-squares-of-identifications.lagda.md +++ b/src/foundation/commuting-squares-of-identifications.lagda.md @@ -42,7 +42,8 @@ Consider two squares of identifications as in the diagram bottom-left bottom-right ``` -with `s : left ∙ bottom-left = top-left ∙ middle` and t : middle ∙ bottom-right = top-right ∙ right`. Then the outer square commutes. +with `s : left ∙ bottom-left = top-left ∙ middle` and t : middle ∙ bottom-right += top-right ∙ right`. Then the outer square commutes. ```agda module _ From 9e71bd8be21d09f527bf85e9eb39f3eeb04bb81e Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Mon, 29 Jan 2024 23:21:30 +0100 Subject: [PATCH 022/150] refactoring foundation-core.commuting-squares-identifications --- .../coherently-invertible-maps.lagda.md | 10 +++--- ...muting-squares-of-identifications.lagda.md | 18 +++++------ ...muting-squares-of-identifications.lagda.md | 32 ++++++++++++++----- .../commuting-squares-of-maps.lagda.md | 8 ++--- .../functoriality-suspensions.lagda.md | 12 +++---- 5 files changed, 47 insertions(+), 33 deletions(-) diff --git a/src/foundation-core/coherently-invertible-maps.lagda.md b/src/foundation-core/coherently-invertible-maps.lagda.md index 1ccb1d862d..a09054618e 100644 --- a/src/foundation-core/coherently-invertible-maps.lagda.md +++ b/src/foundation-core/coherently-invertible-maps.lagda.md @@ -139,13 +139,13 @@ module _ ( ( ap f ( is-section-is-invertible H (map-inv-is-invertible H (f x)))) ∙ ( is-retraction-is-invertible H (f x))) - ( coherence-square-identifications-top-paste + ( top-concat-identification-coherence-square-identification + ( ap + ( f ∘ (map-inv-is-invertible H ∘ f)) + ( is-section-is-invertible H x)) ( is-retraction-is-invertible H (f (map-inv-is-invertible H (f x)))) - ( ap f (is-section-is-invertible H x)) - ( ( ap - ( f ∘ (map-inv-is-invertible H ∘ f)) - ( is-section-is-invertible H x))) ( is-retraction-is-invertible H (f x)) + ( ap f (is-section-is-invertible H x)) ( ( ap-comp f ( map-inv-is-invertible H ∘ f) ( is-section-is-invertible H x)) ∙ diff --git a/src/foundation-core/commuting-squares-of-identifications.lagda.md b/src/foundation-core/commuting-squares-of-identifications.lagda.md index 1729e0afae..7eded57a76 100644 --- a/src/foundation-core/commuting-squares-of-identifications.lagda.md +++ b/src/foundation-core/commuting-squares-of-identifications.lagda.md @@ -117,30 +117,30 @@ having `p'` as an edge instead of `p`. ```agda module _ {l : Level} {A : UU l} {x y z w : A} - (left : x = z) (bottom : z = w) (top : x = y) (right : y = w) + (top : x = y) (left : x = z) (right : y = w) (bottom : z = w) where - coherence-square-identifications-left-paste : + left-concat-identification-coherence-square-identification : {left' : x = z} (s : left = left') → coherence-square-identifications top left right bottom → coherence-square-identifications top left' right bottom - coherence-square-identifications-left-paste refl sq = sq + left-concat-identification-coherence-square-identification refl sq = sq - coherence-square-identifications-bottom-paste : + bottom-concat-identification-coherence-square-identification : {bottom' : z = w} (s : bottom = bottom') → coherence-square-identifications top left right bottom → coherence-square-identifications top left right bottom' - coherence-square-identifications-bottom-paste refl sq = sq + bottom-concat-identification-coherence-square-identification refl sq = sq - coherence-square-identifications-top-paste : + top-concat-identification-coherence-square-identification : {top' : x = y} (s : top = top') → coherence-square-identifications top left right bottom → coherence-square-identifications top' left right bottom - coherence-square-identifications-top-paste refl sq = sq + top-concat-identification-coherence-square-identification refl sq = sq - coherence-square-identifications-right-paste : + right-concat-identification-coherence-square-identification : {right' : y = w} (s : right = right') → coherence-square-identifications top left right bottom → coherence-square-identifications top left right' bottom - coherence-square-identifications-right-paste refl sq = sq + right-concat-identification-coherence-square-identification refl sq = sq ``` diff --git a/src/foundation/commuting-squares-of-identifications.lagda.md b/src/foundation/commuting-squares-of-identifications.lagda.md index 714d1de56c..648933a078 100644 --- a/src/foundation/commuting-squares-of-identifications.lagda.md +++ b/src/foundation/commuting-squares-of-identifications.lagda.md @@ -193,26 +193,42 @@ module _ coherence-square-identifications top left right bottom → coherence-square-identifications (top ∙ p) left (inv p ∙ right) bottom coherence-square-identifications-top-right-whisker refl = - coherence-square-identifications-top-paste - left bottom top right (inv right-unit) + top-concat-identification-coherence-square-identification + ( top) + ( left) + ( right) + ( bottom) + ( inv right-unit) coherence-square-identifications-bottom-left-whisker : {z' : A} (p : z = z') → coherence-square-identifications top left right bottom → coherence-square-identifications top (left ∙ p) right (inv p ∙ bottom) coherence-square-identifications-bottom-left-whisker refl = - coherence-square-identifications-left-paste - left bottom top right (inv right-unit) + left-concat-identification-coherence-square-identification + ( top) + ( left) + ( right) + ( bottom) + ( inv right-unit) coherence-square-identifications-bottom-right-whisker : {w' : A} (p : w = w') → coherence-square-identifications top left right bottom → coherence-square-identifications top left (right ∙ p) (bottom ∙ p) coherence-square-identifications-bottom-right-whisker refl = - ( coherence-square-identifications-bottom-paste - left bottom top (right ∙ refl) (inv right-unit)) ∘ - ( coherence-square-identifications-right-paste - left bottom top right (inv right-unit)) + ( bottom-concat-identification-coherence-square-identification + ( top) + ( left) + ( right ∙ refl) + ( bottom) + ( inv right-unit)) ∘ + ( right-concat-identification-coherence-square-identification + ( top) + ( left) + ( right) + ( bottom) + ( inv right-unit)) ``` ## Properties diff --git a/src/foundation/commuting-squares-of-maps.lagda.md b/src/foundation/commuting-squares-of-maps.lagda.md index c312a19372..e5b1c052fd 100644 --- a/src/foundation/commuting-squares-of-maps.lagda.md +++ b/src/foundation/commuting-squares-of-maps.lagda.md @@ -339,13 +339,13 @@ module _ ( top (map-inv-equiv left (map-equiv left a)))) ( is-retraction-map-inv-equiv right (top a)) ( ap top (is-retraction-map-inv-equiv left a)) - ( coherence-square-identifications-top-paste + ( top-concat-identification-coherence-square-identification + ( _) ( ap ( map-inv-equiv right) ( H (map-inv-equiv left (map-equiv left a)))) ( _) ( _) - ( _) ( inv ( ap ( ap (map-inv-equiv right)) @@ -366,10 +366,8 @@ module _ ( map-equiv right ∘ top) ( is-retraction-map-inv-equiv left a)) ( nat-htpy H (is-retraction-map-inv-equiv left a)))) - ( coherence-square-identifications-top-paste _ + ( top-concat-identification-coherence-square-identification _ _ _ ( ap top (is-retraction-map-inv-equiv left a)) - ( _) - ( _) ( ap-comp ( map-inv-equiv right) ( map-equiv right ∘ top) diff --git a/src/synthetic-homotopy-theory/functoriality-suspensions.lagda.md b/src/synthetic-homotopy-theory/functoriality-suspensions.lagda.md index aa73a01290..eb27be374c 100644 --- a/src/synthetic-homotopy-theory/functoriality-suspensions.lagda.md +++ b/src/synthetic-homotopy-theory/functoriality-suspensions.lagda.md @@ -90,11 +90,11 @@ module _ pr1 (pr2 htpy-function-out-of-suspension-id-map-suspension) = compute-south-map-suspension id pr2 (pr2 htpy-function-out-of-suspension-id-map-suspension) a = - coherence-square-identifications-right-paste - ( ap (map-suspension id) (meridian-suspension a)) - ( compute-south-map-suspension id) + right-concat-identification-coherence-square-identification ( compute-north-map-suspension id) + ( ap (map-suspension id) (meridian-suspension a)) ( meridian-suspension a) + ( compute-south-map-suspension id) ( inv (ap-id (meridian-suspension a))) ( compute-meridian-map-suspension id a) @@ -144,11 +144,11 @@ module _ ( ap (map-suspension (g ∘ f)) (meridian-suspension a)) ( _) ( _) - ( coherence-square-identifications-left-paste - ( ap (map-suspension g) (ap (map-suspension f) (meridian-suspension a))) - ( ap (map-suspension g) (compute-south-map-suspension f)) + ( left-concat-identification-coherence-square-identification ( ap (map-suspension g) (compute-north-map-suspension f)) + ( ap (map-suspension g) (ap (map-suspension f) (meridian-suspension a))) ( ap (map-suspension g) (meridian-suspension (f a))) + ( ap (map-suspension g) (compute-south-map-suspension f)) ( inv ( ap-comp ( map-suspension g) From 80147c12f5802997747262e5bc4d470674286229 Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Mon, 29 Jan 2024 23:30:04 +0100 Subject: [PATCH 023/150] more explaining --- ...commuting-squares-of-identifications.lagda.md | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/src/foundation-core/commuting-squares-of-identifications.lagda.md b/src/foundation-core/commuting-squares-of-identifications.lagda.md index 7eded57a76..8becfebde2 100644 --- a/src/foundation-core/commuting-squares-of-identifications.lagda.md +++ b/src/foundation-core/commuting-squares-of-identifications.lagda.md @@ -110,9 +110,19 @@ module _ ### Pasting of identifications along edges of squares of identifications -Given a coherence square with an edge `p` and a new identification `s : p = p'` -then we may paste that identification onto the square to get a coherence square -having `p'` as an edge instead of `p`. +Consider a commuting square of identifications and an identification of one of the four sides with another identification, as for example in the diagram below: + +```text + top + a ---------> b + | | | + left | right |=| right' + ∨ ∨ ∨ + c ---------> d. + bottom +``` + +Then any identification witnessing that the square commutes can be concatenated with the identification on the side, to obtain a new commuting square of identifications. ```agda module _ From 28c194f91a957e900e2c2d70a15692b88baf507c Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Mon, 29 Jan 2024 23:30:28 +0100 Subject: [PATCH 024/150] make pre-commit --- .../commuting-squares-of-identifications.lagda.md | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/foundation-core/commuting-squares-of-identifications.lagda.md b/src/foundation-core/commuting-squares-of-identifications.lagda.md index 8becfebde2..46626c8859 100644 --- a/src/foundation-core/commuting-squares-of-identifications.lagda.md +++ b/src/foundation-core/commuting-squares-of-identifications.lagda.md @@ -110,7 +110,8 @@ module _ ### Pasting of identifications along edges of squares of identifications -Consider a commuting square of identifications and an identification of one of the four sides with another identification, as for example in the diagram below: +Consider a commuting square of identifications and an identification of one of +the four sides with another identification, as for example in the diagram below: ```text top @@ -122,7 +123,9 @@ Consider a commuting square of identifications and an identification of one of t bottom ``` -Then any identification witnessing that the square commutes can be concatenated with the identification on the side, to obtain a new commuting square of identifications. +Then any identification witnessing that the square commutes can be concatenated +with the identification on the side, to obtain a new commuting square of +identifications. ```agda module _ From ec0550e6c41543ad70b08176201add7522460938 Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Mon, 29 Jan 2024 23:52:34 +0100 Subject: [PATCH 025/150] more explanations and diagrams --- ...muting-squares-of-identifications.lagda.md | 124 +++++++++++++++++- .../functoriality-suspensions.lagda.md | 2 +- 2 files changed, 122 insertions(+), 4 deletions(-) diff --git a/src/foundation-core/commuting-squares-of-identifications.lagda.md b/src/foundation-core/commuting-squares-of-identifications.lagda.md index 46626c8859..62dae87508 100644 --- a/src/foundation-core/commuting-squares-of-identifications.lagda.md +++ b/src/foundation-core/commuting-squares-of-identifications.lagda.md @@ -51,6 +51,19 @@ module _ ### Horizontally constant squares +{{#concept "Horizontally constant squares" Disambiguation="identifications" Agda=horizontal-refl-coherence-square-identifications}} +are commuting squares of identifications of the form + +```text + refl + a -----> a + | | + p | | p + ∨ ∨ + b -----> b. + refl +``` + ```agda module _ {l : Level} {A : UU l} {a b : A} (p : a = b) @@ -63,6 +76,19 @@ module _ ### Vertically constant squares +{{#concept "Vertically constant squares" Disambiguation="identifications" Agda=vertical-refl-coherence-square-identifications}} +are commuting squares of identifications of the form + +```text + p + a -----> b + | | + refl | | refl + ∨ ∨ + a -----> b. + p +``` + ```agda module _ {l : Level} {A : UU l} {a b : A} (p : a = b) @@ -75,23 +101,115 @@ module _ ## Operations -### Inverting squares of identifications +### Inverting squares of identifications horizontally + +Given a commuting square of identifications + +```text + top + x -------> y + | | + left | | right + ∨ ∨ + z -------> w, + bottom +``` + +the square of identifications + +```text + inv top + y ------------> x + | | + right | | left + ∨ ∨ + w ------------> z + inv bottom +``` + +commutes. ```agda module _ {l : Level} {A : UU l} {x y z w : A} where - coherence-square-identifications-horizontal-inv : + horizontal-inv-coherence-square-identifications : (top : x = y) (left : x = z) (right : y = w) (bottom : z = w) → coherence-square-identifications top left right bottom → coherence-square-identifications (inv top) right left (inv bottom) - coherence-square-identifications-horizontal-inv refl refl right refl coh = + horizontal-inv-coherence-square-identifications refl refl right refl coh = right-unit ∙ inv coh ``` +### Inverting squares of identifications vertically + +Given a commuting square of identifications + +```text + top + x -------> y + | | + left | | right + ∨ ∨ + z -------> w, + bottom +``` + +the square of identifications + +```text + bottom + z -------> w + | | + inv left | | inv right + ∨ ∨ + x -------> y + top +``` + +commutes. + +```agda +module _ + {l : Level} {A : UU l} {x y z w : A} + where + + vertical-inv-coherence-square-identifications : + (top : x = y) (left : x = z) (right : y = w) (bottom : z = w) → + coherence-square-identifications top left right bottom → + coherence-square-identifications bottom (inv left) (inv right) top + vertical-inv-coherence-square-identifications refl refl refl refl refl = refl +``` + ### Functions acting on squares of identifications +Given a commuting square of identifications + +```text + top + x -------> y + | | + left | | right + ∨ ∨ + z -------> w + bottom +``` + +in a type `A`, and given a map `f : A → B`, the square of identifications + +```text + ap f top + f x -----------> f y + | | + ap f left | | ap f right + ∨ ∨ + z -------------> w + ap f bottom +``` + +commutes. + ```agda module _ {l1 l2 : Level} {A : UU l1} {B : UU l2} {x y z w : A} (f : A → B) diff --git a/src/synthetic-homotopy-theory/functoriality-suspensions.lagda.md b/src/synthetic-homotopy-theory/functoriality-suspensions.lagda.md index eb27be374c..8ef143a81d 100644 --- a/src/synthetic-homotopy-theory/functoriality-suspensions.lagda.md +++ b/src/synthetic-homotopy-theory/functoriality-suspensions.lagda.md @@ -168,7 +168,7 @@ module _ ( _) ( _) ( compute-meridian-map-suspension g (f a)) - ( coherence-square-identifications-horizontal-inv + ( horizontal-inv-coherence-square-identifications ( compute-north-map-suspension (g ∘ f)) ( ap (map-suspension (g ∘ f)) (meridian-suspension a)) ( meridian-suspension (g (f a))) From f28203da42984f80bcd62eb4db050cb1cffb0e7b Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Tue, 30 Jan 2024 00:20:08 +0100 Subject: [PATCH 026/150] using action on higher identifications --- ...lences-functions-out-of-subuniverses.lagda.md | 3 ++- .../action-on-equivalences-functions.lagda.md | 7 ++++--- ...action-on-equivalences-type-families.lagda.md | 3 ++- ...-on-higher-identifications-functions.lagda.md | 16 ++++++++-------- .../action-on-homotopies-functions.lagda.md | 7 ++++--- .../commuting-squares-of-maps.lagda.md | 3 ++- .../functoriality-fibers-of-maps.lagda.md | 5 +++-- src/foundation/homotopies.lagda.md | 3 ++- src/foundation/iterating-functions.lagda.md | 3 ++- src/linear-algebra/vectors.lagda.md | 3 ++- src/lists/lists.lagda.md | 3 ++- ...niversal-property-lists-wild-monoids.lagda.md | 5 +++-- src/structured-types/morphisms-h-spaces.lagda.md | 5 +++-- src/structured-types/pointed-homotopies.lagda.md | 3 ++- 14 files changed, 41 insertions(+), 28 deletions(-) diff --git a/src/foundation/action-on-equivalences-functions-out-of-subuniverses.lagda.md b/src/foundation/action-on-equivalences-functions-out-of-subuniverses.lagda.md index 0ca8b37397..7aaf843921 100644 --- a/src/foundation/action-on-equivalences-functions-out-of-subuniverses.lagda.md +++ b/src/foundation/action-on-equivalences-functions-out-of-subuniverses.lagda.md @@ -7,6 +7,7 @@ module foundation.action-on-equivalences-functions-out-of-subuniverses where
Imports ```agda +open import foundation.action-on-higher-identifications-functions open import foundation.action-on-identifications-functions open import foundation.dependent-pair-types open import foundation.equivalence-induction @@ -74,5 +75,5 @@ module _ (X : type-subuniverse P) → action-equiv-function-subuniverse X X id-equiv = refl compute-action-equiv-function-subuniverse-id-equiv X = - ap (ap f) (compute-eq-equiv-id-equiv-subuniverse P) + ap² f (compute-eq-equiv-id-equiv-subuniverse P) ``` diff --git a/src/foundation/action-on-equivalences-functions.lagda.md b/src/foundation/action-on-equivalences-functions.lagda.md index 6d47aecd5d..c59a308d75 100644 --- a/src/foundation/action-on-equivalences-functions.lagda.md +++ b/src/foundation/action-on-equivalences-functions.lagda.md @@ -7,6 +7,7 @@ module foundation.action-on-equivalences-functions where
Imports ```agda +open import foundation.action-on-higher-identifications-functions open import foundation.action-on-identifications-functions open import foundation.dependent-pair-types open import foundation.equivalence-induction @@ -57,7 +58,7 @@ module _ compute-action-equiv-function-id-equiv : (X : UU l1) → action-equiv-function id-equiv = refl compute-action-equiv-function-id-equiv X = - ap (ap f) (compute-eq-equiv-id-equiv X) + ap² f (compute-eq-equiv-id-equiv X) ``` ## Properties @@ -80,7 +81,7 @@ distributive-action-equiv-function-comp-equiv : action-equiv-function f (e' ∘e e) = action-equiv-function f e ∙ action-equiv-function f e' distributive-action-equiv-function-comp-equiv f e e' = - ( ap (ap f) (inv (compute-eq-equiv-comp-equiv e e'))) ∙ + ( ap² f (inv (compute-eq-equiv-comp-equiv e e'))) ∙ ( ap-concat f (eq-equiv e) (eq-equiv e')) ``` @@ -92,6 +93,6 @@ compute-action-equiv-function-inv-equiv : (e : X ≃ Y) → action-equiv-function f (inv-equiv e) = inv (action-equiv-function f e) compute-action-equiv-function-inv-equiv f e = - ( ap (ap f) (inv (commutativity-inv-eq-equiv e))) ∙ + ( ap² f (inv (commutativity-inv-eq-equiv e))) ∙ ( ap-inv f (eq-equiv e)) ``` diff --git a/src/foundation/action-on-equivalences-type-families.lagda.md b/src/foundation/action-on-equivalences-type-families.lagda.md index c6d4fa2eba..595483741d 100644 --- a/src/foundation/action-on-equivalences-type-families.lagda.md +++ b/src/foundation/action-on-equivalences-type-families.lagda.md @@ -8,6 +8,7 @@ module foundation.action-on-equivalences-type-families where ```agda open import foundation.action-on-equivalences-functions +open import foundation.action-on-higher-identifications-functions open import foundation.action-on-identifications-functions open import foundation.equivalence-induction open import foundation.univalence @@ -145,7 +146,7 @@ distributive-action-equiv-function-comp : action-equiv-function g ∘ action-equiv-family f distributive-action-equiv-function-comp g f e = ( ap-comp g f (eq-equiv e)) ∙ - ( ap (ap g) (inv (is-retraction-eq-equiv (action-equiv-function f e)))) + ( ap² g (inv (is-retraction-eq-equiv (action-equiv-function f e)))) distributive-action-equiv-family-comp : {l1 l2 l3 : Level} (g : UU l2 → UU l3) (f : UU l1 → UU l2) diff --git a/src/foundation/action-on-higher-identifications-functions.lagda.md b/src/foundation/action-on-higher-identifications-functions.lagda.md index e675415a66..8f2db17c27 100644 --- a/src/foundation/action-on-higher-identifications-functions.lagda.md +++ b/src/foundation/action-on-higher-identifications-functions.lagda.md @@ -77,13 +77,13 @@ module _ {p q : x = y} (f : A → B) (α : p = q) where - nat-sq-ap-inv-Id² : + compute-ap²-inv : coherence-square-identifications ( ap² f (horizontal-inv-Id² α)) ( ap-inv f p) ( ap-inv f q) ( horizontal-inv-Id² (ap² f α)) - nat-sq-ap-inv-Id² = + compute-ap²-inv = ( ( inv (horizontal-concat-Id² refl (ap-comp inv (ap f) α))) ∙ ( nat-htpy (ap-inv f) α)) ∙ ( horizontal-concat-Id² (ap-comp (ap f) inv α) refl) @@ -112,9 +112,9 @@ module _ {p q : x = y} (α : p = q) where - nat-sq-ap-id-Id² : + compute-ap²-id : coherence-square-identifications (ap² id α) (ap-id p) (ap-id q) α - nat-sq-ap-id-Id² = + compute-ap²-id = horizontal-concat-Id² refl (inv (ap-id α)) ∙ nat-htpy ap-id α ``` @@ -142,13 +142,13 @@ module _ {x y : A} {p q : x = y} (g : B → C) (f : A → B) (α : p = q) where - nat-sq-ap-comp-Id² : + compute-ap²-comp : coherence-square-identifications ( ap² (g ∘ f) α) ( ap-comp g f p) ( ap-comp g f q) ( (ap² g ∘ ap² f) α) - nat-sq-ap-comp-Id² = + compute-ap²-comp = (horizontal-concat-Id² refl (inv (ap-comp (ap g) (ap f) α)) ∙ (nat-htpy (ap-comp g f) α)) ``` @@ -174,14 +174,14 @@ module _ {p q : x = y} (α : p = q) where - nat-sq-ap-const-Id² : + compute-ap²-const : (b : B) → coherence-square-identifications ( ap² (const A B b) α) ( ap-const b p) ( ap-const b q) ( refl) - nat-sq-ap-const-Id² b = + compute-ap²-const b = ( inv (horizontal-concat-Id² refl (ap-const refl α))) ∙ ( nat-htpy (ap-const b) α) ``` diff --git a/src/foundation/action-on-homotopies-functions.lagda.md b/src/foundation/action-on-homotopies-functions.lagda.md index 75d9a6c0e6..e7f46ce6ae 100644 --- a/src/foundation/action-on-homotopies-functions.lagda.md +++ b/src/foundation/action-on-homotopies-functions.lagda.md @@ -7,6 +7,7 @@ module foundation.action-on-homotopies-functions where
Imports ```agda +open import foundation.action-on-higher-identifications-functions open import foundation.action-on-identifications-functions open import foundation.dependent-pair-types open import foundation.function-extensionality @@ -101,7 +102,7 @@ module _ compute-action-htpy-function-refl-htpy : (f : (x : A) → B x) → action-htpy-function refl-htpy = refl compute-action-htpy-function-refl-htpy f = - ap (ap F) (eq-htpy-refl-htpy f) + ap² F (eq-htpy-refl-htpy f) ``` ## Properties @@ -121,7 +122,7 @@ module _ action-htpy-function F (H ∙h H') = action-htpy-function F H ∙ action-htpy-function F H' distributive-action-htpy-function-comp-htpy H H' = - ap (ap F) (eq-htpy-concat-htpy H H') ∙ ap-concat F (eq-htpy H) (eq-htpy H') + ap² F (eq-htpy-concat-htpy H H') ∙ ap-concat F (eq-htpy H) (eq-htpy H') ``` ### The action on homotopies preserves inverses @@ -138,5 +139,5 @@ module _ (H : f ~ g) → action-htpy-function F (inv-htpy H) = inv (action-htpy-function F H) compute-action-htpy-function-inv-htpy H = - ap (ap F) (compute-inv-eq-htpy H) ∙ ap-inv F (eq-htpy H) + ap² F (compute-inv-eq-htpy H) ∙ ap-inv F (eq-htpy H) ``` diff --git a/src/foundation/commuting-squares-of-maps.lagda.md b/src/foundation/commuting-squares-of-maps.lagda.md index e5b1c052fd..8b97b3046e 100644 --- a/src/foundation/commuting-squares-of-maps.lagda.md +++ b/src/foundation/commuting-squares-of-maps.lagda.md @@ -11,6 +11,7 @@ open import foundation-core.commuting-squares-of-maps public
Imports ```agda +open import foundation.action-on-higher-identifications-functions open import foundation.action-on-identifications-binary-functions open import foundation.action-on-identifications-functions open import foundation.commuting-squares-of-homotopies @@ -349,7 +350,7 @@ module _ ( inv ( ap ( ap (map-inv-equiv right)) - ( ( ap (ap bottom) (coherence-map-inv-equiv left a)) ∙ + ( ( ap² bottom (coherence-map-inv-equiv left a)) ∙ ( inv ( ap-comp ( bottom) diff --git a/src/foundation/functoriality-fibers-of-maps.lagda.md b/src/foundation/functoriality-fibers-of-maps.lagda.md index 730d05b084..c35b0d467b 100644 --- a/src/foundation/functoriality-fibers-of-maps.lagda.md +++ b/src/foundation/functoriality-fibers-of-maps.lagda.md @@ -7,6 +7,7 @@ module foundation.functoriality-fibers-of-maps where
Imports ```agda +open import foundation.action-on-higher-identifications-functions open import foundation.action-on-identifications-functions open import foundation.commuting-squares-of-homotopies open import foundation.cones-over-cospan-diagrams @@ -191,7 +192,7 @@ module _ ( ap ( concat (inv (coh-hom-arrow g h β (pr1 α a))) _) ( inv - ( ( ap (ap (map-codomain-hom-arrow g h β)) right-unit) ∙ + ( ( ap² (map-codomain-hom-arrow g h β) right-unit) ∙ ( ap-inv ( map-codomain-hom-arrow g h β) ( coh-hom-arrow f g α a)))))) @@ -484,7 +485,7 @@ module _ ( p (p' a)) ( p' a , refl)))) ( ( inv (ap-inv g (H' a))) ∙ - ( ap (ap g) (inv right-unit))))) + ( ap² g (inv right-unit))))) ``` ## See also diff --git a/src/foundation/homotopies.lagda.md b/src/foundation/homotopies.lagda.md index 75de88e5d5..f65c0f3914 100644 --- a/src/foundation/homotopies.lagda.md +++ b/src/foundation/homotopies.lagda.md @@ -9,6 +9,7 @@ open import foundation-core.homotopies public
Imports ```agda +open import foundation.action-on-higher-identifications-functions open import foundation.action-on-identifications-dependent-functions open import foundation.action-on-identifications-functions open import foundation.binary-equivalences @@ -324,7 +325,7 @@ module _ ( h) ( λ k p → eq-htpy (λ i → ap (f i) (p i)) = ap (map-Π f) (eq-htpy p)) ( eq-htpy-refl-htpy (map-Π f h) ∙ - ap (ap (map-Π f)) (inv (eq-htpy-refl-htpy h))) + ap² (map-Π f) (inv (eq-htpy-refl-htpy h))) ``` ## See also diff --git a/src/foundation/iterating-functions.lagda.md b/src/foundation/iterating-functions.lagda.md index e60cb5a472..e3108892ef 100644 --- a/src/foundation/iterating-functions.lagda.md +++ b/src/foundation/iterating-functions.lagda.md @@ -13,6 +13,7 @@ open import elementary-number-theory.multiplication-natural-numbers open import elementary-number-theory.multiplicative-monoid-of-natural-numbers open import elementary-number-theory.natural-numbers +open import foundation.action-on-higher-identifications-functions open import foundation.action-on-identifications-functions open import foundation.dependent-pair-types open import foundation.universe-levels @@ -115,7 +116,7 @@ module _ left-unit-law-iterate-add-ℕ zero-ℕ f x = refl left-unit-law-iterate-add-ℕ (succ-ℕ l) f x = ( right-unit) ∙ - ( ( ap (ap f) (left-unit-law-iterate-add-ℕ l f x)) ∙ + ( ( ap² f (left-unit-law-iterate-add-ℕ l f x)) ∙ ( ( inv (ap-comp f (λ t → iterate t f x) (left-unit-law-add-ℕ l))) ∙ ( ap-comp (λ t → iterate t f x) succ-ℕ (left-unit-law-add-ℕ l)))) diff --git a/src/linear-algebra/vectors.lagda.md b/src/linear-algebra/vectors.lagda.md index 3a7bb0216b..b20f6187cb 100644 --- a/src/linear-algebra/vectors.lagda.md +++ b/src/linear-algebra/vectors.lagda.md @@ -9,6 +9,7 @@ module linear-algebra.vectors where ```agda open import elementary-number-theory.natural-numbers +open import foundation.action-on-higher-identifications-functions open import foundation.action-on-identifications-functions open import foundation.cartesian-product-types open import foundation.contractible-types @@ -178,7 +179,7 @@ module _ (p : u = v) → eq-Eq-vec n u v (Eq-eq-vec n u v p) = p is-retraction-eq-Eq-vec zero-ℕ empty-vec empty-vec refl = refl is-retraction-eq-Eq-vec (succ-ℕ n) (x ∷ xs) .(x ∷ xs) refl = - ap (ap (x ∷_)) (is-retraction-eq-Eq-vec n xs xs refl) + ap² (x ∷_) (is-retraction-eq-Eq-vec n xs xs refl) square-Eq-eq-vec : (n : ℕ) (x : A) (u v : vec A n) (p : Id u v) → diff --git a/src/lists/lists.lagda.md b/src/lists/lists.lagda.md index 82634d6451..223a33befe 100644 --- a/src/lists/lists.lagda.md +++ b/src/lists/lists.lagda.md @@ -9,6 +9,7 @@ module lists.lists where ```agda open import elementary-number-theory.natural-numbers +open import foundation.action-on-higher-identifications-functions open import foundation.action-on-identifications-functions open import foundation.cartesian-product-types open import foundation.contractible-types @@ -191,7 +192,7 @@ eq-Eq-refl-Eq-list : {l1 : Level} {A : UU l1} (l : list A) → Id (eq-Eq-list l l (refl-Eq-list l)) refl eq-Eq-refl-Eq-list nil = refl -eq-Eq-refl-Eq-list (cons x l) = ap (ap (cons x)) (eq-Eq-refl-Eq-list l) +eq-Eq-refl-Eq-list (cons x l) = ap² (cons x) (eq-Eq-refl-Eq-list l) is-retraction-eq-Eq-list : {l1 : Level} {A : UU l1} (l l' : list A) (p : Id l l') → diff --git a/src/lists/universal-property-lists-wild-monoids.lagda.md b/src/lists/universal-property-lists-wild-monoids.lagda.md index 1610b71b90..f2b256b40e 100644 --- a/src/lists/universal-property-lists-wild-monoids.lagda.md +++ b/src/lists/universal-property-lists-wild-monoids.lagda.md @@ -7,6 +7,7 @@ module lists.universal-property-lists-wild-monoids where
Imports ```agda +open import foundation.action-on-higher-identifications-functions open import foundation.action-on-identifications-functions open import foundation.dependent-pair-types open import foundation.identity-types @@ -75,7 +76,7 @@ unit-law-101-associative-concat-list (cons x l) z = ( cons x) ( associative-concat-list l nil z) ( ap (concat-list l) (left-unit-law-concat-list z)))) ∙ - ( ap (ap (cons x)) (unit-law-101-associative-concat-list l z))) ∙ + ( ap² (cons x) (unit-law-101-associative-concat-list l z))) ∙ ( inv ( ap-comp (cons x) (concat-list' z) (right-unit-law-concat-list l)))) ∙ ( ap-comp (concat-list' z) (cons x) (right-unit-law-concat-list l)) @@ -99,7 +100,7 @@ unit-law-110-associative-concat-list (cons a x) y = ( cons a) ( associative-concat-list x y nil) ( ap (concat-list x) (right-unit-law-concat-list y)))) ∙ - ( ap (ap (cons a)) (unit-law-110-associative-concat-list x y))) + ( ap² (cons a) (unit-law-110-associative-concat-list x y))) list-Wild-Monoid : {l : Level} → UU l → Wild-Monoid l list-Wild-Monoid X = diff --git a/src/structured-types/morphisms-h-spaces.lagda.md b/src/structured-types/morphisms-h-spaces.lagda.md index d6819d89eb..bb1e60deef 100644 --- a/src/structured-types/morphisms-h-spaces.lagda.md +++ b/src/structured-types/morphisms-h-spaces.lagda.md @@ -7,6 +7,7 @@ module structured-types.morphisms-h-spaces where
Imports ```agda +open import foundation.action-on-higher-identifications-functions open import foundation.action-on-identifications-binary-functions open import foundation.action-on-identifications-functions open import foundation.dependent-pair-types @@ -76,7 +77,7 @@ preserves-coh-unit-laws-mul : preserves-coh-unit-laws-mul M (pair (pair N ._) μ) (pair f refl) μf lf rf = - Id (ap (ap f) cM ∙ rf eM) (lf eM ∙ ap (concat μf (f eM)) cN) + Id (ap² f cM ∙ rf eM) (lf eM ∙ ap (concat μf (f eM)) cN) where eM = unit-H-Space M cM = coh-unit-laws-mul-H-Space M @@ -143,7 +144,7 @@ preserves-coh-unit-laws-mul' M N f μf lf rf = ( μf ∙_) ( inv (triangle-ap-binary μN ef ef))) ( cN)))))))) - ( ( ap (_∙ ef) (ap (ap (pr1 f)) cM)) ∙ + ( ( ap (_∙ ef) (ap² (pr1 f) cM)) ∙ ( ( horizontal-concat-Id² (rf eM) (inv (ap-id ef))) ∙ ( ( ap ( _∙ ap id ef) diff --git a/src/structured-types/pointed-homotopies.lagda.md b/src/structured-types/pointed-homotopies.lagda.md index 25b71c6a97..a1fd165868 100644 --- a/src/structured-types/pointed-homotopies.lagda.md +++ b/src/structured-types/pointed-homotopies.lagda.md @@ -7,6 +7,7 @@ module structured-types.pointed-homotopies where
Imports ```agda +open import foundation.action-on-higher-identifications-functions open import foundation.action-on-identifications-binary-functions open import foundation.action-on-identifications-functions open import foundation.dependent-pair-types @@ -221,7 +222,7 @@ module _ left-whisker-htpy-pointed-map g f1 f2 H = pair ( map-pointed-map g ·l (pr1 H)) - ( ( ( ( ap (ap (pr1 g)) (pr2 H)) ∙ + ( ( ( ( ap² (pr1 g) (pr2 H)) ∙ ( ap-concat (pr1 g) (pr2 f1) (inv (pr2 f2)))) ∙ ( ap ( concat From 406c63294c16a01da616b81def0b6b73616d2cc6 Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Tue, 30 Jan 2024 11:26:25 +0100 Subject: [PATCH 027/150] factoring out the action of maps on commuting triangles of identifications --- ...muting-squares-of-identifications.lagda.md | 4 +- ...tion-on-identifications-functions.lagda.md | 8 +- .../commuting-squares-of-maps.lagda.md | 2 +- ...commuting-triangles-of-homotopies.lagda.md | 3 +- ...ting-triangles-of-identifications.lagda.md | 103 +++++++++++++----- src/foundation/morphisms-arrows.lagda.md | 2 +- src/foundation/path-algebra.lagda.md | 9 -- src/foundation/whiskering-homotopies.lagda.md | 2 +- .../lifting-squares.lagda.md | 3 +- .../functoriality-suspensions.lagda.md | 2 +- .../sections-descent-circle.lagda.md | 7 +- 11 files changed, 89 insertions(+), 56 deletions(-) diff --git a/src/foundation-core/commuting-squares-of-identifications.lagda.md b/src/foundation-core/commuting-squares-of-identifications.lagda.md index 62dae87508..e9aea44f1d 100644 --- a/src/foundation-core/commuting-squares-of-identifications.lagda.md +++ b/src/foundation-core/commuting-squares-of-identifications.lagda.md @@ -215,7 +215,7 @@ module _ {l1 l2 : Level} {A : UU l1} {B : UU l2} {x y z w : A} (f : A → B) where - coherence-square-identifications-ap : + map-coherence-square-identifications : (top : x = y) (left : x = z) (right : y = w) (bottom : z = w) → coherence-square-identifications top left right bottom → coherence-square-identifications @@ -223,7 +223,7 @@ module _ ( ap f left) ( ap f right) ( ap f bottom) - coherence-square-identifications-ap refl refl right refl coh = ap (ap f) coh + map-coherence-square-identifications refl refl right refl coh = ap (ap f) coh ``` ### Pasting of identifications along edges of squares of identifications diff --git a/src/foundation/action-on-identifications-functions.lagda.md b/src/foundation/action-on-identifications-functions.lagda.md index e59fb9db53..006a73e944 100644 --- a/src/foundation/action-on-identifications-functions.lagda.md +++ b/src/foundation/action-on-identifications-functions.lagda.md @@ -74,14 +74,8 @@ ap-refl f x = refl ```agda ap-concat : {l1 l2 : Level} {A : UU l1} {B : UU l2} (f : A → B) {x y z : A} - (p : x = y) (q : y = z) → (ap f (p ∙ q)) = ((ap f p) ∙ (ap f q)) + (p : x = y) (q : y = z) → ap f (p ∙ q) = ap f p ∙ ap f q ap-concat f refl q = refl - -ap-concat-eq : - {l1 l2 : Level} {A : UU l1} {B : UU l2} (f : A → B) {x y z : A} - (p : x = y) (q : y = z) (r : x = z) - (H : r = (p ∙ q)) → (ap f r) = ((ap f p) ∙ (ap f q)) -ap-concat-eq f p q .(p ∙ q) refl = ap-concat f p q ``` ### The action on identifications of any map preserves inverses diff --git a/src/foundation/commuting-squares-of-maps.lagda.md b/src/foundation/commuting-squares-of-maps.lagda.md index 8b97b3046e..6e3f15166d 100644 --- a/src/foundation/commuting-squares-of-maps.lagda.md +++ b/src/foundation/commuting-squares-of-maps.lagda.md @@ -356,7 +356,7 @@ module _ ( bottom) ( map-equiv left) ( is-retraction-map-inv-equiv left a)))))) - ( coherence-square-identifications-ap + ( map-coherence-square-identifications ( map-inv-equiv right) ( ap ( bottom ∘ map-equiv left) diff --git a/src/foundation/commuting-triangles-of-homotopies.lagda.md b/src/foundation/commuting-triangles-of-homotopies.lagda.md index 5e03f5e591..a762019906 100644 --- a/src/foundation/commuting-triangles-of-homotopies.lagda.md +++ b/src/foundation/commuting-triangles-of-homotopies.lagda.md @@ -8,6 +8,7 @@ module foundation.commuting-triangles-of-homotopies where ```agda open import foundation.action-on-identifications-functions +open import foundation.commuting-triangles-of-identifications open import foundation.universe-levels open import foundation-core.function-types @@ -66,7 +67,7 @@ module _ coherence-triangle-homotopies left right top → (i ·l left) ~ ((i ·l top) ∙h (i ·l right)) distributivity-left-whisker T x = - ap-concat-eq i (top x) (right x) (left x) (T x) + map-coherence-triangle-identifications i (left x) (right x) (top x) (T x) ``` ### Left whiskering triangles of homotopies diff --git a/src/foundation/commuting-triangles-of-identifications.lagda.md b/src/foundation/commuting-triangles-of-identifications.lagda.md index 7543ed00d4..1c839cd7e6 100644 --- a/src/foundation/commuting-triangles-of-identifications.lagda.md +++ b/src/foundation/commuting-triangles-of-identifications.lagda.md @@ -25,11 +25,12 @@ open import foundation-core.homotopies A triangle of [identifications](foundation-core.identity-types.md) ```text - x ----- y - \ / - \ / - \ / - z + top + x ----> y + \ / + left \ / right + ∨ ∨ + z ``` is said to **commute** if there is a higher identification between the `x = z` @@ -58,47 +59,47 @@ module _ Given a commuting triangle of identifications ```text - top - x ----- y - \ / - left \ / right - \ / - z , + top + x ----> y + \ / + left \ / right + ∨ ∨ + z , ``` we may consider three ways of attaching new identifications to it: prepending `p : u = x` to the left, which gives us a commuting triangle ```text - p ∙ top - u ----- y - \ / - p ∙ left \ / right - \ / - z , + p ∙ top + u ----> y + \ / + p ∙ left \ / right + ∨ ∨ + z , ``` or appending an identification `p : z = u` to the right, which gives ```text - top - u ----- y - \ / - left ∙ p \ / right ∙ p - \ / - z , + top + u ----> y + \ / + left ∙ p \ / right ∙ p + ∨ ∨ + z , ``` or splicing an identification `p : y = u` and its inverse into the middle, to get ```text - top ∙ p - u ----- y - \ / - left \ / p⁻¹ ∙ right - \ / - z , + top ∙ p + u ----> y + \ / + left \ / p⁻¹ ∙ right + ∨ ∨ + z , ``` which isn't formalized yet. @@ -200,3 +201,47 @@ module _ left-unwhisker-triangle-identifications' = map-inv-equiv equiv-left-whisker-triangle-identifications' ``` + +### The action of functions on commuting triangles of identifications + +Consider a commuting triangle of identifications + +```text + top + x ----> y + \ / + left \ / right + ∨ ∨ + z +``` + +in a type `A` and consider a map `f : A → B`. Then we obtain a commuting +triangle of identifications + +```text + ap f top + f x ----> f y + \ / + ap f left \ / ap f right + ∨ ∨ + f z +``` + +```agda +module _ + {l1 l2 : Level} {A : UU l1} {B : UU l2} (f : A → B) + where + + map-coherence-triangle-identifications : + {x y z : A} (left : x = z) (right : y = z) (top : x = y) → + coherence-triangle-identifications left right top → + coherence-triangle-identifications (ap f left) (ap f right) (ap f top) + map-coherence-triangle-identifications .(top ∙ right) right top refl = + ap-concat f top right + + map-coherence-triangle-identifications-inv-right-unit : + {x y : A} (p : x = y) → + inv right-unit = + map-coherence-triangle-identifications p refl p (inv right-unit) + map-coherence-triangle-identifications-inv-right-unit refl = refl +``` diff --git a/src/foundation/morphisms-arrows.lagda.md b/src/foundation/morphisms-arrows.lagda.md index ac9611a199..4addaaf6bf 100644 --- a/src/foundation/morphisms-arrows.lagda.md +++ b/src/foundation/morphisms-arrows.lagda.md @@ -470,7 +470,7 @@ module _ ( map-codomain-hom-arrow g h γ) ( g) ( htpy-domain-htpy-hom-arrow f g α β H a))) ∙ - ( coherence-square-identifications-ap + ( map-coherence-square-identifications ( map-codomain-hom-arrow g h γ) ( htpy-codomain-htpy-hom-arrow f g α β H (f a)) ( coh-hom-arrow f g α a) diff --git a/src/foundation/path-algebra.lagda.md b/src/foundation/path-algebra.lagda.md index eeba4a5717..29ae52a134 100644 --- a/src/foundation/path-algebra.lagda.md +++ b/src/foundation/path-algebra.lagda.md @@ -129,15 +129,6 @@ module _ unit-law-assoc-110' refl refl = refl ``` -### Unit laws for `ap-concat-eq` - -```agda -ap-concat-eq-inv-right-unit : - {l1 l2 : Level} {A : UU l1} {B : UU l2} (f : A → B) {x y : A} - (p : x = y) → inv right-unit = ap-concat-eq f p refl p (inv right-unit) -ap-concat-eq-inv-right-unit f refl = refl -``` - ## Properties of 2-paths ### Definition of vertical and horizontal concatenation in identity types of identity types (a type of 2-paths) diff --git a/src/foundation/whiskering-homotopies.lagda.md b/src/foundation/whiskering-homotopies.lagda.md index 6217d763bb..20fdea9ebc 100644 --- a/src/foundation/whiskering-homotopies.lagda.md +++ b/src/foundation/whiskering-homotopies.lagda.md @@ -254,7 +254,7 @@ module _ coherence-square-homotopies H H' K K' → coherence-square-homotopies (f ·l H) (f ·l H') (f ·l K) (f ·l K') ap-left-whisker-coherence-square-homotopies α a = - coherence-square-identifications-ap f (H a) (H' a) (K a) (K' a) (α a) + map-coherence-square-identifications f (H a) (H' a) (K a) (K' a) (α a) module _ { l1 l2 l3 : Level} {A : UU l1} {B : UU l2} {C : UU l3} diff --git a/src/orthogonal-factorization-systems/lifting-squares.lagda.md b/src/orthogonal-factorization-systems/lifting-squares.lagda.md index 1f6d55af4b..3249e84cd0 100644 --- a/src/orthogonal-factorization-systems/lifting-squares.lagda.md +++ b/src/orthogonal-factorization-systems/lifting-squares.lagda.md @@ -11,6 +11,7 @@ open import foundation.action-on-identifications-functions open import foundation.commuting-squares-of-maps open import foundation.commuting-tetrahedra-of-homotopies open import foundation.commuting-triangles-of-homotopies +open import foundation.commuting-triangles-of-identifications open import foundation.dependent-pair-types open import foundation.fibered-maps open import foundation.function-types @@ -214,7 +215,7 @@ module _ ( ap ( λ r → ( coherence-lifting-square l x ∙ (ap (H x ∙_) r ∙ inv α)) ∙ α) - ( ap-concat-eq-inv-right-unit + ( map-coherence-triangle-identifications-inv-right-unit ( g) ( is-extension-lifting-square l x))))))) where diff --git a/src/synthetic-homotopy-theory/functoriality-suspensions.lagda.md b/src/synthetic-homotopy-theory/functoriality-suspensions.lagda.md index 8ef143a81d..384807d29a 100644 --- a/src/synthetic-homotopy-theory/functoriality-suspensions.lagda.md +++ b/src/synthetic-homotopy-theory/functoriality-suspensions.lagda.md @@ -154,7 +154,7 @@ module _ ( map-suspension g) ( map-suspension f) ( meridian-suspension a))) - ( coherence-square-identifications-ap + ( map-coherence-square-identifications ( map-suspension g) ( compute-north-map-suspension f) ( ap (map-suspension f) (meridian-suspension a)) diff --git a/src/synthetic-homotopy-theory/sections-descent-circle.lagda.md b/src/synthetic-homotopy-theory/sections-descent-circle.lagda.md index 05b78745aa..e274bcb015 100644 --- a/src/synthetic-homotopy-theory/sections-descent-circle.lagda.md +++ b/src/synthetic-homotopy-theory/sections-descent-circle.lagda.md @@ -11,6 +11,7 @@ open import foundation.action-on-identifications-dependent-functions open import foundation.action-on-identifications-functions open import foundation.commuting-squares-of-maps open import foundation.commuting-triangles-of-maps +open import foundation.commuting-triangles-of-identifications open import foundation.contractible-maps open import foundation.contractible-types open import foundation.dependent-identifications @@ -205,13 +206,13 @@ module _ ( ( inv (assoc (ap _ (inv is-section-inv-α)) _ _)) ∙ ( horizontal-concat-Id² ( inv - ( ap-concat-eq + ( map-coherence-triangle-identifications ( tr ( family-family-with-descent-data-circle A) ( loop-free-loop l)) - ( inv is-section-inv-α) - ( is-section-inv-α) ( refl) + ( is-section-inv-α) + ( inv is-section-inv-α) ( inv (left-inv is-section-inv-α)))) ( refl))))) where From 5c2d109d6e82c2e9903110f6109298f40cd6b08e Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Tue, 30 Jan 2024 12:18:11 +0100 Subject: [PATCH 028/150] further refactoring commuting triangles of identifications' --- ...tion-on-identifications-functions.lagda.md | 17 ---- ...ting-triangles-of-identifications.lagda.md | 93 ++++++++++++------- .../whiskering-identifications.lagda.md | 29 ++++++ .../lifting-squares.lagda.md | 10 +- .../sections-descent-circle.lagda.md | 2 +- 5 files changed, 100 insertions(+), 51 deletions(-) diff --git a/src/foundation/action-on-identifications-functions.lagda.md b/src/foundation/action-on-identifications-functions.lagda.md index 006a73e944..a22b70e08c 100644 --- a/src/foundation/action-on-identifications-functions.lagda.md +++ b/src/foundation/action-on-identifications-functions.lagda.md @@ -95,20 +95,3 @@ ap-const : (p : x = y) → (ap (const A B b) p) = refl ap-const b refl = refl ``` - -### The action on identifications of concatenating by `refl` on the right - -Note that `_∙ refl` is only homotopic to the identity function. Therefore we -will compute here the action on identifications of the map `_∙ refl`. - -```agda -inv-ap-refl-concat : - {l : Level} {A : UU l} {x y : A} {p q : x = y} (r : p = q) → - (right-unit ∙ (r ∙ inv right-unit)) = (ap (_∙ refl) r) -inv-ap-refl-concat refl = right-inv right-unit - -ap-refl-concat : - {l : Level} {A : UU l} {x y : A} {p q : x = y} (r : p = q) → - (ap (_∙ refl) r) = (right-unit ∙ (r ∙ inv right-unit)) -ap-refl-concat = inv ∘ inv-ap-refl-concat -``` diff --git a/src/foundation/commuting-triangles-of-identifications.lagda.md b/src/foundation/commuting-triangles-of-identifications.lagda.md index 1c839cd7e6..0c30cc5da1 100644 --- a/src/foundation/commuting-triangles-of-identifications.lagda.md +++ b/src/foundation/commuting-triangles-of-identifications.lagda.md @@ -36,7 +36,9 @@ A triangle of [identifications](foundation-core.identity-types.md) is said to **commute** if there is a higher identification between the `x = z` and the concatenated identification `x = y = z`. -## Definition +## Definitions + +### Commuting triangles of identifications ```agda module _ @@ -67,47 +69,74 @@ Given a commuting triangle of identifications z , ``` -we may consider three ways of attaching new identifications to it: prepending -`p : u = x` to the left, which gives us a commuting triangle +we may consider three ways of attaching new identifications to it: -```text - p ∙ top - u ----> y - \ / - p ∙ left \ / right - ∨ ∨ - z , -``` +1. Prepending `p : u = x` to the left gives us a commuting triangle -or appending an identification `p : z = u` to the right, which gives + ```text + p ∙ top + u ----> y + \ / + p ∙ left \ / right + ∨ ∨ + z. + ``` -```text - top - u ----> y - \ / - left ∙ p \ / right ∙ p - ∨ ∨ - z , -``` + In other words, we have a map -or splicing an identification `p : y = u` and its inverse into the middle, to -get + ```text + (left = top ∙ right) → (p ∙ left = (p ∙ top) ∙ right). + ``` -```text - top ∙ p - u ----> y - \ / - left \ / p⁻¹ ∙ right - ∨ ∨ - z , -``` +2. Appending an identification `p : z = u` to the right gives a commuting + triangle of identifications + + ```text + top + x ----> y + \ / + left ∙ p \ / right ∙ p + ∨ ∨ + u. + ``` + + In other words, we have a map + + ```text + (left = top ∙ right) → (left ∙ p = top ∙ (right ∙ p)). + + ``` + +3. Splicing an identification `p : y = u` and its inverse into the middle gives + a commuting triangle of identifications + + ```text + top ∙ p + x ----> u + \ / + left \ / p⁻¹ ∙ right + ∨ ∨ + z. + ``` + + In other words, we have a map + + ```text + (left = top ∙ right) → left = (top ∙ p) ∙ (p⁻¹ ∙ right). + ``` + + Similarly, we have a map + + ```text + (left = top ∙ right) → left = (top ∙ p⁻¹) ∙ (p ∙ right). + ``` -which isn't formalized yet. + This isn't formalized yet. Because concatenation of identifications is an equivalence, it follows that all of these transformations are equivalences. -These lemmas are useful in proofs involving path algebra, because taking +These operations are useful in proofs involving path algebra, because taking `equiv-right-whisker-triangle-identicications` as an example, it provides us with two maps: the forward direction states `(p = q ∙ r) → (p ∙ s = q ∙ (r ∙ s))`, which allows one to append an diff --git a/src/foundation/whiskering-identifications.lagda.md b/src/foundation/whiskering-identifications.lagda.md index 06d5013874..bc91c97254 100644 --- a/src/foundation/whiskering-identifications.lagda.md +++ b/src/foundation/whiskering-identifications.lagda.md @@ -13,6 +13,7 @@ open import foundation.identity-types open import foundation.universe-levels open import foundation-core.equivalences +open import foundation-core.function-types open import foundation-core.homotopies ``` @@ -198,3 +199,31 @@ module _ compute-inv-commutative-left-whisker-right-whisker-identification refl refl = refl ``` + +### The action on identifications of concatenating by `refl` on the right + +Consider an identification `r : p = q` between two identifications +`p q : x = y` in a type `A`. Then the square of identifications + +```text + right-whisker r refl + p ∙ refl ----------------------> q ∙ refl + | | + right-unit | | right-unit + ∨ ∨ + p -----------------------------> q + r +``` + +commutes. + +```agda +module _ + {l : Level} {A : UU l} {x y : A} {p q : x = y} + where + + compute-refl-right-whisker-identification : + (r : p = q) → + right-unit ∙ r = right-whisker-identification r refl ∙ right-unit + compute-refl-right-whisker-identification refl = right-unit +``` diff --git a/src/orthogonal-factorization-systems/lifting-squares.lagda.md b/src/orthogonal-factorization-systems/lifting-squares.lagda.md index 3249e84cd0..298425c088 100644 --- a/src/orthogonal-factorization-systems/lifting-squares.lagda.md +++ b/src/orthogonal-factorization-systems/lifting-squares.lagda.md @@ -20,6 +20,7 @@ open import foundation.identity-types open import foundation.path-algebra open import foundation.universe-levels open import foundation.whiskering-homotopies +open import foundation.whiskering-identifications open import orthogonal-factorization-systems.extensions-of-maps open import orthogonal-factorization-systems.lifts-of-maps @@ -187,7 +188,14 @@ module _ ( _∙ α) ( ( ap ( inv right-unit ∙_) - ( ap-refl-concat (coherence-lifting-square l x))) ∙ + ( ( right-transpose-eq-concat _ _ _ + ( inv + ( compute-refl-right-whisker-identification + ( coherence-lifting-square l x)))) ∙ + ( assoc + ( right-unit) + ( coherence-lifting-square l x) + ( inv right-unit)))) ∙ ( is-retraction-inv-concat ( right-unit) ( _) diff --git a/src/synthetic-homotopy-theory/sections-descent-circle.lagda.md b/src/synthetic-homotopy-theory/sections-descent-circle.lagda.md index e274bcb015..73a21a6f3a 100644 --- a/src/synthetic-homotopy-theory/sections-descent-circle.lagda.md +++ b/src/synthetic-homotopy-theory/sections-descent-circle.lagda.md @@ -10,8 +10,8 @@ module synthetic-homotopy-theory.sections-descent-circle where open import foundation.action-on-identifications-dependent-functions open import foundation.action-on-identifications-functions open import foundation.commuting-squares-of-maps -open import foundation.commuting-triangles-of-maps open import foundation.commuting-triangles-of-identifications +open import foundation.commuting-triangles-of-maps open import foundation.contractible-maps open import foundation.contractible-types open import foundation.dependent-identifications From b2b572732b8b147eed953b2e7b79c0354390caab Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Tue, 30 Jan 2024 12:25:03 +0100 Subject: [PATCH 029/150] compute map-coherence-triangle-identifications with refl on the right --- .../commuting-triangles-of-identifications.lagda.md | 4 ++-- src/orthogonal-factorization-systems/lifting-squares.lagda.md | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/foundation/commuting-triangles-of-identifications.lagda.md b/src/foundation/commuting-triangles-of-identifications.lagda.md index 0c30cc5da1..737e39c09e 100644 --- a/src/foundation/commuting-triangles-of-identifications.lagda.md +++ b/src/foundation/commuting-triangles-of-identifications.lagda.md @@ -268,9 +268,9 @@ module _ map-coherence-triangle-identifications .(top ∙ right) right top refl = ap-concat f top right - map-coherence-triangle-identifications-inv-right-unit : + compute-refl-right-map-coherence-triangle-identifications : {x y : A} (p : x = y) → inv right-unit = map-coherence-triangle-identifications p refl p (inv right-unit) - map-coherence-triangle-identifications-inv-right-unit refl = refl + compute-refl-right-map-coherence-triangle-identifications refl = refl ``` diff --git a/src/orthogonal-factorization-systems/lifting-squares.lagda.md b/src/orthogonal-factorization-systems/lifting-squares.lagda.md index 298425c088..aba39b7c20 100644 --- a/src/orthogonal-factorization-systems/lifting-squares.lagda.md +++ b/src/orthogonal-factorization-systems/lifting-squares.lagda.md @@ -223,7 +223,7 @@ module _ ( ap ( λ r → ( coherence-lifting-square l x ∙ (ap (H x ∙_) r ∙ inv α)) ∙ α) - ( map-coherence-triangle-identifications-inv-right-unit + ( compute-refl-right-map-coherence-triangle-identifications ( g) ( is-extension-lifting-square l x))))))) where From 309638cb5dfedeaa92cd5d32f54b13cd86e5e9a6 Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Tue, 30 Jan 2024 12:29:37 +0100 Subject: [PATCH 030/150] edits --- ...uting-triangles-of-identifications.lagda.md | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/foundation/commuting-triangles-of-identifications.lagda.md b/src/foundation/commuting-triangles-of-identifications.lagda.md index 737e39c09e..a9b168a375 100644 --- a/src/foundation/commuting-triangles-of-identifications.lagda.md +++ b/src/foundation/commuting-triangles-of-identifications.lagda.md @@ -256,6 +256,19 @@ triangle of identifications f z ``` +Furthermore, in the case where the identification `right` is `refl` we obtain an identification + +```text + inv right-unit = + map-coherence-triangle-identifications p refl p (inv right-unit) +``` + +and in the case where the identification `top` is refl` we obtain + +```text + refl = map-coherence-triangle-identifications p p refl refl. +``` + ```agda module _ {l1 l2 : Level} {A : UU l1} {B : UU l2} (f : A → B) @@ -273,4 +286,9 @@ module _ inv right-unit = map-coherence-triangle-identifications p refl p (inv right-unit) compute-refl-right-map-coherence-triangle-identifications refl = refl + + compute-refl-top-map-coherence-triangle-identifications : + {x y : A} (p : x = y) → + refl = map-coherence-triangle-identifications p p refl refl + compute-refl-top-map-coherence-triangle-identifications p = refl ``` From f3c1fabb4ad04a747ede08387f66e9018cbac9c5 Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Tue, 30 Jan 2024 12:30:04 +0100 Subject: [PATCH 031/150] make pre-commit --- .../commuting-triangles-of-identifications.lagda.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/foundation/commuting-triangles-of-identifications.lagda.md b/src/foundation/commuting-triangles-of-identifications.lagda.md index a9b168a375..869d71a5e3 100644 --- a/src/foundation/commuting-triangles-of-identifications.lagda.md +++ b/src/foundation/commuting-triangles-of-identifications.lagda.md @@ -256,7 +256,8 @@ triangle of identifications f z ``` -Furthermore, in the case where the identification `right` is `refl` we obtain an identification +Furthermore, in the case where the identification `right` is `refl` we obtain an +identification ```text inv right-unit = @@ -288,7 +289,7 @@ module _ compute-refl-right-map-coherence-triangle-identifications refl = refl compute-refl-top-map-coherence-triangle-identifications : - {x y : A} (p : x = y) → + {x y : A} (p : x = y) → refl = map-coherence-triangle-identifications p p refl refl compute-refl-top-map-coherence-triangle-identifications p = refl ``` From dad9c2636446238b6700d1efd5b18686913481fd Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Tue, 30 Jan 2024 13:27:36 +0100 Subject: [PATCH 032/150] edits --- ...-on-higher-identifications-functions.lagda.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/foundation/action-on-higher-identifications-functions.lagda.md b/src/foundation/action-on-higher-identifications-functions.lagda.md index 8f2db17c27..db4aa34ffb 100644 --- a/src/foundation/action-on-higher-identifications-functions.lagda.md +++ b/src/foundation/action-on-higher-identifications-functions.lagda.md @@ -77,13 +77,13 @@ module _ {p q : x = y} (f : A → B) (α : p = q) where - compute-ap²-inv : + compute-inv-ap² : coherence-square-identifications ( ap² f (horizontal-inv-Id² α)) ( ap-inv f p) ( ap-inv f q) ( horizontal-inv-Id² (ap² f α)) - compute-ap²-inv = + compute-inv-ap² = ( ( inv (horizontal-concat-Id² refl (ap-comp inv (ap f) α))) ∙ ( nat-htpy (ap-inv f) α)) ∙ ( horizontal-concat-Id² (ap-comp (ap f) inv α) refl) @@ -112,9 +112,9 @@ module _ {p q : x = y} (α : p = q) where - compute-ap²-id : + compute-id-ap² : coherence-square-identifications (ap² id α) (ap-id p) (ap-id q) α - compute-ap²-id = + compute-id-ap² = horizontal-concat-Id² refl (inv (ap-id α)) ∙ nat-htpy ap-id α ``` @@ -142,13 +142,13 @@ module _ {x y : A} {p q : x = y} (g : B → C) (f : A → B) (α : p = q) where - compute-ap²-comp : + compute-comp-ap² : coherence-square-identifications ( ap² (g ∘ f) α) ( ap-comp g f p) ( ap-comp g f q) ( (ap² g ∘ ap² f) α) - compute-ap²-comp = + compute-comp-ap² = (horizontal-concat-Id² refl (inv (ap-comp (ap g) (ap f) α)) ∙ (nat-htpy (ap-comp g f) α)) ``` @@ -174,14 +174,14 @@ module _ {p q : x = y} (α : p = q) where - compute-ap²-const : + compute-const-ap² : (b : B) → coherence-square-identifications ( ap² (const A B b) α) ( ap-const b p) ( ap-const b q) ( refl) - compute-ap²-const b = + compute-const-ap² b = ( inv (horizontal-concat-Id² refl (ap-const refl α))) ∙ ( nat-htpy (ap-const b) α) ``` From 810bebe94b957fadb5f06a6828137171a5f08472 Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Tue, 30 Jan 2024 14:24:40 +0100 Subject: [PATCH 033/150] =?UTF-8?q?rename=20whisker-identification-=CE=A9?= =?UTF-8?q?=C2=B2=20to=20whisker-=CE=A9=C2=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../double-loop-spaces.lagda.md | 8 +-- .../eckmann-hilton-argument.lagda.md | 72 +++++++++---------- 2 files changed, 40 insertions(+), 40 deletions(-) diff --git a/src/synthetic-homotopy-theory/double-loop-spaces.lagda.md b/src/synthetic-homotopy-theory/double-loop-spaces.lagda.md index 4a10a09af7..aa74e3c917 100644 --- a/src/synthetic-homotopy-theory/double-loop-spaces.lagda.md +++ b/src/synthetic-homotopy-theory/double-loop-spaces.lagda.md @@ -96,16 +96,16 @@ right-unit-law-horizontal-concat-Ω² : right-unit-law-horizontal-concat-Ω² {α = α} = ( right-unit-law-horizontal-concat-Id² α) ∙ (naturality-right-unit-Ω² α) -left-unit-law-left-whisker-identification-Ω² : +left-unit-law-left-whisker-Ω² : {l : Level} {A : UU l} {a : A} (α : type-Ω² a) → left-whisker-identification (refl-Ω (pair A a)) α = α -left-unit-law-left-whisker-identification-Ω² α = +left-unit-law-left-whisker-Ω² α = left-unit-law-left-whisker-identification α -right-unit-law-right-whisker-identification-Ω² : +right-unit-law-right-whisker-Ω² : {l : Level} {A : UU l} {a : A} (α : type-Ω² a) → right-whisker-identification α (refl-Ω (pair A a)) = α -right-unit-law-right-whisker-identification-Ω² α = +right-unit-law-right-whisker-Ω² α = (right-unit-law-right-whisker-identification α) ∙ right-unit ``` diff --git a/src/synthetic-homotopy-theory/eckmann-hilton-argument.lagda.md b/src/synthetic-homotopy-theory/eckmann-hilton-argument.lagda.md index c27160f731..3f295d0856 100644 --- a/src/synthetic-homotopy-theory/eckmann-hilton-argument.lagda.md +++ b/src/synthetic-homotopy-theory/eckmann-hilton-argument.lagda.md @@ -177,15 +177,15 @@ module _ ( right-whisker-identification β refl) by ( inv ( horizontal-concat-Id² - ( left-unit-law-left-whisker-identification-Ω² α) - ( right-unit-law-right-whisker-identification-Ω² β))) + ( left-unit-law-left-whisker-Ω² α) + ( right-unit-law-right-whisker-Ω² β))) = ( right-whisker-identification β refl) ∙ ( left-whisker-identification refl α) by ( commutative-left-whisker-right-whisker-identification α β) = β ∙ α by ( horizontal-concat-Id² - ( right-unit-law-right-whisker-identification-Ω² β) - ( left-unit-law-left-whisker-identification-Ω² α)) + ( right-unit-law-right-whisker-Ω² β) + ( left-unit-law-left-whisker-Ω² α)) ``` #### Using right whiskering @@ -216,15 +216,15 @@ module _ ( left-whisker-identification refl β) by ( inv ( horizontal-concat-Id² - ( right-unit-law-right-whisker-identification-Ω² α) - ( left-unit-law-left-whisker-identification-Ω² β))) + ( right-unit-law-right-whisker-Ω² α) + ( left-unit-law-left-whisker-Ω² β))) = ( left-whisker-identification refl β) ∙ ( right-whisker-identification α refl) by commutative-right-whisker-left-whisker-identification α β = β ∙ α by ( horizontal-concat-Id² - ( left-unit-law-left-whisker-identification-Ω² β)) - ( right-unit-law-right-whisker-identification-Ω² α) + ( left-unit-law-left-whisker-Ω² β)) + ( right-unit-law-right-whisker-Ω² α) ``` We now prove that this Eckmann-Hilton identification "undoes" the previously @@ -255,33 +255,33 @@ module _ = concat ( inv ( horizontal-concat-Id² - ( left-unit-law-left-whisker-identification-Ω² α) - ( right-unit-law-right-whisker-identification-Ω² β))) + ( left-unit-law-left-whisker-Ω² α) + ( right-unit-law-right-whisker-Ω² β))) ( _) ( inv ( concat ( inv ( horizontal-concat-Id² - ( right-unit-law-right-whisker-identification-Ω² β) - ( left-unit-law-left-whisker-identification-Ω² α))) + ( right-unit-law-right-whisker-Ω² β) + ( left-unit-law-left-whisker-Ω² α))) ( _) ( commutative-right-whisker-left-whisker-identification β α))) by distributive-inv-concat ( concat ( inv ( horizontal-concat-Id² - ( right-unit-law-right-whisker-identification-Ω² β) - ( left-unit-law-left-whisker-identification-Ω² α))) + ( right-unit-law-right-whisker-Ω² β) + ( left-unit-law-left-whisker-Ω² α))) ( _) ( commutative-right-whisker-left-whisker-identification β α)) ( horizontal-concat-Id² - ( left-unit-law-left-whisker-identification-Ω² α) - ( right-unit-law-right-whisker-identification-Ω² β)) + ( left-unit-law-left-whisker-Ω² α) + ( right-unit-law-right-whisker-Ω² β)) = concat ( inv ( horizontal-concat-Id² - ( left-unit-law-left-whisker-identification-Ω² α) - ( right-unit-law-right-whisker-identification-Ω² β))) + ( left-unit-law-left-whisker-Ω² α) + ( right-unit-law-right-whisker-Ω² β))) ( _) ( concat ( inv (commutative-right-whisker-left-whisker-identification β α)) @@ -289,53 +289,53 @@ module _ ( inv ( inv ( horizontal-concat-Id² - ( right-unit-law-right-whisker-identification-Ω² β) - ( left-unit-law-left-whisker-identification-Ω² α))))) + ( right-unit-law-right-whisker-Ω² β) + ( left-unit-law-left-whisker-Ω² α))))) by left-whisker-identification ( inv ( horizontal-concat-Id² - ( left-unit-law-left-whisker-identification-Ω² α) - ( right-unit-law-right-whisker-identification-Ω² β))) + ( left-unit-law-left-whisker-Ω² α) + ( right-unit-law-right-whisker-Ω² β))) ( distributive-inv-concat ( inv ( horizontal-concat-Id² - ( right-unit-law-right-whisker-identification-Ω² β) - ( left-unit-law-left-whisker-identification-Ω² α))) + ( right-unit-law-right-whisker-Ω² β) + ( left-unit-law-left-whisker-Ω² α))) ( commutative-right-whisker-left-whisker-identification β α)) = concat ( inv ( horizontal-concat-Id² - ( left-unit-law-left-whisker-identification-Ω² α) - ( right-unit-law-right-whisker-identification-Ω² β))) + ( left-unit-law-left-whisker-Ω² α) + ( right-unit-law-right-whisker-Ω² β))) ( _) ( concat ( commutative-left-whisker-right-whisker-identification α β) ( _) ( horizontal-concat-Id² - ( right-unit-law-right-whisker-identification-Ω² β) - ( left-unit-law-left-whisker-identification-Ω² α))) + ( right-unit-law-right-whisker-Ω² β) + ( left-unit-law-left-whisker-Ω² α))) by left-whisker-identification ( inv ( horizontal-concat-Id² - ( left-unit-law-left-whisker-identification-Ω² α) - ( right-unit-law-right-whisker-identification-Ω² β))) + ( left-unit-law-left-whisker-Ω² α) + ( right-unit-law-right-whisker-Ω² β))) ( horizontal-concat-Id² ( compute-inv-commutative-left-whisker-right-whisker-identification α β) ( inv-inv ( horizontal-concat-Id² - ( right-unit-law-right-whisker-identification-Ω² β) - ( left-unit-law-left-whisker-identification-Ω² α)))) + ( right-unit-law-right-whisker-Ω² β) + ( left-unit-law-left-whisker-Ω² α)))) = eckmann-hilton-Ω² α β by inv ( assoc ( inv ( horizontal-concat-Id² - ( left-unit-law-left-whisker-identification-Ω² α) - ( right-unit-law-right-whisker-identification-Ω² β))) + ( left-unit-law-left-whisker-Ω² α) + ( right-unit-law-right-whisker-Ω² β))) ( commutative-left-whisker-right-whisker-identification α β) ( horizontal-concat-Id² - ( right-unit-law-right-whisker-identification-Ω² β) - ( left-unit-law-left-whisker-identification-Ω² α))) + ( right-unit-law-right-whisker-Ω² β) + ( left-unit-law-left-whisker-Ω² α))) ``` ## Properties From 0c68fd482c1ce8f1f4789a9df6e4c5794f715287 Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Tue, 30 Jan 2024 14:35:43 +0100 Subject: [PATCH 034/150] removing superfluous entries --- src/foundation-core/whiskering-homotopies.lagda.md | 6 ------ src/orthogonal-factorization-systems/pullback-hom.lagda.md | 2 +- 2 files changed, 1 insertion(+), 7 deletions(-) diff --git a/src/foundation-core/whiskering-homotopies.lagda.md b/src/foundation-core/whiskering-homotopies.lagda.md index e64a3ad51f..31f1b97f72 100644 --- a/src/foundation-core/whiskering-homotopies.lagda.md +++ b/src/foundation-core/whiskering-homotopies.lagda.md @@ -154,9 +154,6 @@ module _ left-whisker-inv-htpy : g ·l (inv-htpy H) ~ inv-htpy (g ·l H) left-whisker-inv-htpy x = ap-inv g (H x) - inv-left-whisker-inv-htpy : inv-htpy (g ·l H) ~ g ·l (inv-htpy H) - inv-left-whisker-inv-htpy = inv-htpy left-whisker-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}) @@ -165,9 +162,6 @@ module _ right-whisker-inv-htpy : inv-htpy H ·r f ~ inv-htpy (H ·r f) right-whisker-inv-htpy = refl-htpy - - inv-right-whisker-inv-htpy : inv-htpy H ·r f ~ inv-htpy (H ·r f) - inv-right-whisker-inv-htpy = inv-htpy right-whisker-inv-htpy ``` ### Distributivity of whiskering over composition of homotopies diff --git a/src/orthogonal-factorization-systems/pullback-hom.lagda.md b/src/orthogonal-factorization-systems/pullback-hom.lagda.md index bd753fec50..ecfe81913b 100644 --- a/src/orthogonal-factorization-systems/pullback-hom.lagda.md +++ b/src/orthogonal-factorization-systems/pullback-hom.lagda.md @@ -227,7 +227,7 @@ module _ ( λ x → ap ( is-map-over-map-total-fibered-map f g h x ∙_) - ( inv-left-whisker-inv-htpy g E x))) ∘e + ( inv-htpy (left-whisker-inv-htpy g E) x))) ∘e ( equiv-right-transpose-htpy-concat ( inv-htpy (L ·r f)) ( g ·l E) From fb9771666cdc4eaed57f1ac4eb8bbcba3ac12878 Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Tue, 30 Jan 2024 14:52:36 +0100 Subject: [PATCH 035/150] adding file about whiskering of higher hommotopies --- .../whiskering-homotopies.lagda.md | 22 ------- .../whiskering-higher-homotopies.lagda.md | 59 +++++++++++++++++++ 2 files changed, 59 insertions(+), 22 deletions(-) create mode 100644 src/foundation/whiskering-higher-homotopies.lagda.md diff --git a/src/foundation-core/whiskering-homotopies.lagda.md b/src/foundation-core/whiskering-homotopies.lagda.md index 31f1b97f72..15152e5b21 100644 --- a/src/foundation-core/whiskering-homotopies.lagda.md +++ b/src/foundation-core/whiskering-homotopies.lagda.md @@ -230,28 +230,6 @@ module _ inv-htpy-coh-htpy-id = inv-htpy coh-htpy-id ``` -### Whiskering whiskerings - -```agda -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-whisker-htpy : - (h : {x : A} → B x → C x) {H H' : f ~ g} (α : H ~ H') → h ·l H ~ h ·l H' - ap-left-whisker-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-whisker-htpy : - (α : {x : A} → H {x} ~ H' {x}) (h : (x : A) → B x) → H ·r h ~ H' ·r h - ap-right-whisker-htpy α h = α ·r h -``` - ### The left and right whiskering operations commute We have the coherence diff --git a/src/foundation/whiskering-higher-homotopies.lagda.md b/src/foundation/whiskering-higher-homotopies.lagda.md new file mode 100644 index 0000000000..64524756fc --- /dev/null +++ b/src/foundation/whiskering-higher-homotopies.lagda.md @@ -0,0 +1,59 @@ +# Whiskering higher homotopies + +```agda +module foundation.whiskering-higher-homotopies where +``` + +
Imports + +```agda +open import foundation.action-on-identifications-functions +open import foundation.universe-levels + +open import foundation-core.homotopies +open import foundation-core.whiskering-homotopies +``` + +
+ +## Idea + +Consider two dependent functions `f g : (x : A) → B x` equipped with two homotopies `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 of 2-homotopies"}}. 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). +``` + +## 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 + + ap-left-whisker-htpy : + (h : {x : A} → B x → C x) {H H' : f ~ g} (α : H ~ H') → h ·l H ~ h ·l H' + ap-left-whisker-htpy 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 + + ap-right-whisker-htpy : + (α : {x : A} → H {x} ~ H' {x}) (h : (x : A) → B x) → H ·r h ~ H' ·r h + ap-right-whisker-htpy α h = α ·r h +``` From e05fbfaed928bf6e95aaf40b431f99f7bda434a5 Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Tue, 30 Jan 2024 14:53:43 +0100 Subject: [PATCH 036/150] make pre-commit --- src/foundation.lagda.md | 1 + src/foundation/whiskering-higher-homotopies.lagda.md | 10 ++++++++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/foundation.lagda.md b/src/foundation.lagda.md index afcd3e12aa..9a301e0574 100644 --- a/src/foundation.lagda.md +++ b/src/foundation.lagda.md @@ -416,6 +416,7 @@ open import foundation.vectors-set-quotients public open import foundation.weak-function-extensionality public open import foundation.weak-limited-principle-of-omniscience public open import foundation.weakly-constant-maps public +open import foundation.whiskering-higher-homotopies public open import foundation.whiskering-homotopies public open import foundation.whiskering-identifications public ``` diff --git a/src/foundation/whiskering-higher-homotopies.lagda.md b/src/foundation/whiskering-higher-homotopies.lagda.md index 64524756fc..eb0634f7a7 100644 --- a/src/foundation/whiskering-higher-homotopies.lagda.md +++ b/src/foundation/whiskering-higher-homotopies.lagda.md @@ -18,13 +18,19 @@ open import foundation-core.whiskering-homotopies ## Idea -Consider two dependent functions `f g : (x : A) → B x` equipped with two homotopies `H H' : f ~ g`, and consider a family of maps `h : (x : A) → B x → C x`. Then we obtain a map +Consider two dependent functions `f g : (x : A) → B x` equipped with two +homotopies `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 of 2-homotopies"}}. 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 +This operation is called the {{#concept "left whiskering of 2-homotopies"}}. +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). From 752d8bac8de39e13d9fd29c64024296a9a4ff851 Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Tue, 30 Jan 2024 15:44:26 +0100 Subject: [PATCH 037/150] renaming whiskering of higher homotopies --- src/foundation/composition-algebra.lagda.md | 13 +++++++------ .../whiskering-higher-homotopies.lagda.md | 8 ++++---- ...ecomposition-lifts-families-of-elements.lagda.md | 3 ++- 3 files changed, 13 insertions(+), 11 deletions(-) diff --git a/src/foundation/composition-algebra.lagda.md b/src/foundation/composition-algebra.lagda.md index e271a880bb..318bbfec29 100644 --- a/src/foundation/composition-algebra.lagda.md +++ b/src/foundation/composition-algebra.lagda.md @@ -13,6 +13,7 @@ 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 open import foundation-core.function-types open import foundation-core.homotopies @@ -269,11 +270,11 @@ module _ ind-htpy f ( λ f' F → htpy-precomp F Y ·r postcomp B g ~ postcomp A g ·l htpy-precomp F X) - ( ( ap-right-whisker-htpy + ( ( right-whisker-htpy² ( compute-htpy-precomp-refl-htpy f Y) ( postcomp B g)) ∙h ( inv-htpy - ( ap-left-whisker-htpy + ( left-whisker-htpy² ( postcomp A g) ( compute-htpy-precomp-refl-htpy f X)))) @@ -284,11 +285,11 @@ module _ ind-htpy g ( λ g' G → htpy-postcomp A G ·r precomp f X ~ precomp f Y ·l htpy-postcomp B G) - ( ( ap-right-whisker-htpy + ( ( right-whisker-htpy² ( compute-htpy-postcomp-refl-htpy A g) ( precomp f X)) ∙h ( inv-htpy - ( ap-left-whisker-htpy + ( left-whisker-htpy² ( precomp f Y) ( compute-htpy-postcomp-refl-htpy B g)))) @@ -310,14 +311,14 @@ module _ htpy-precomp F Y ·r postcomp B g')) ( ( ap-concat-htpy ( postcomp A g ·l htpy-precomp F X) - ( ap-right-whisker-htpy + ( right-whisker-htpy² ( 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) - ( ap-left-whisker-htpy + ( left-whisker-htpy² ( precomp f Y) ( inv-htpy (compute-htpy-postcomp-refl-htpy B g))))) ``` diff --git a/src/foundation/whiskering-higher-homotopies.lagda.md b/src/foundation/whiskering-higher-homotopies.lagda.md index eb0634f7a7..359507da3c 100644 --- a/src/foundation/whiskering-higher-homotopies.lagda.md +++ b/src/foundation/whiskering-higher-homotopies.lagda.md @@ -46,9 +46,9 @@ module _ {f g : (x : A) → B x} where - ap-left-whisker-htpy : + left-whisker-htpy² : (h : {x : A} → B x → C x) {H H' : f ~ g} (α : H ~ H') → h ·l H ~ h ·l H' - ap-left-whisker-htpy h α = ap h ·l α + left-whisker-htpy² h α = ap h ·l α ``` ### Right whiskering higher homotopies @@ -59,7 +59,7 @@ module _ {f g : {x : A} (y : B x) → C x y} {H H' : {x : A} → f {x} ~ g {x}} where - ap-right-whisker-htpy : + right-whisker-htpy² : (α : {x : A} → H {x} ~ H' {x}) (h : (x : A) → B x) → H ·r h ~ H' ·r h - ap-right-whisker-htpy α h = α ·r h + right-whisker-htpy² α h = α ·r h ``` diff --git a/src/orthogonal-factorization-systems/precomposition-lifts-families-of-elements.lagda.md b/src/orthogonal-factorization-systems/precomposition-lifts-families-of-elements.lagda.md index 14ed5757c1..6fbe12d609 100644 --- a/src/orthogonal-factorization-systems/precomposition-lifts-families-of-elements.lagda.md +++ b/src/orthogonal-factorization-systems/precomposition-lifts-families-of-elements.lagda.md @@ -22,6 +22,7 @@ open import foundation.precomposition-functions open import foundation.transport-along-identifications open import foundation.type-theoretic-principle-of-choice open import foundation.universe-levels +open import foundation.whiskering-higher-homotopies open import foundation.whiskering-homotopies open import foundation.whiskering-identifications @@ -335,7 +336,7 @@ module _ statement-coherence-htpy-precomp-coherence-square-precomp-map-inv-distributive-Π-Σ ( refl-htpy) coherence-htpy-precomp-coherence-square-precomp-map-inv-distributive-Π-Σ-refl-htpy = - ( ap-left-whisker-htpy + ( left-whisker-htpy² ( map-inv-distributive-Π-Σ) ( compute-htpy-precomp-lifted-family-of-elements B)) ∙h ( inv-htpy From 5e2e182a86aa06ad02571e46daea79578196da5a Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Tue, 30 Jan 2024 16:20:03 +0100 Subject: [PATCH 038/150] trying to use left-whisker-htpy2 in places where I used ap2 before --- .../action-on-equivalences-type-families.lagda.md | 6 ++++-- src/foundation/commuting-squares-of-maps.lagda.md | 6 +++++- src/foundation/homotopies.lagda.md | 2 +- src/linear-algebra/vectors.lagda.md | 4 ++-- .../universal-property-lists-wild-monoids.lagda.md | 12 +++++++++--- 5 files changed, 21 insertions(+), 9 deletions(-) diff --git a/src/foundation/action-on-equivalences-type-families.lagda.md b/src/foundation/action-on-equivalences-type-families.lagda.md index 595483741d..2125037c37 100644 --- a/src/foundation/action-on-equivalences-type-families.lagda.md +++ b/src/foundation/action-on-equivalences-type-families.lagda.md @@ -8,11 +8,11 @@ module foundation.action-on-equivalences-type-families where ```agda open import foundation.action-on-equivalences-functions -open import foundation.action-on-higher-identifications-functions open import foundation.action-on-identifications-functions open import foundation.equivalence-induction open import foundation.univalence open import foundation.universe-levels +open import foundation.whiskering-higher-homotopies open import foundation-core.commuting-squares-of-maps open import foundation-core.constant-maps @@ -146,7 +146,9 @@ distributive-action-equiv-function-comp : action-equiv-function g ∘ action-equiv-family f distributive-action-equiv-function-comp g f e = ( ap-comp g f (eq-equiv e)) ∙ - ( ap² g (inv (is-retraction-eq-equiv (action-equiv-function f e)))) + ( left-whisker-htpy² g + ( inv-htpy is-retraction-eq-equiv) + ( action-equiv-function f e) distributive-action-equiv-family-comp : {l1 l2 l3 : Level} (g : UU l2 → UU l3) (f : UU l1 → UU l2) diff --git a/src/foundation/commuting-squares-of-maps.lagda.md b/src/foundation/commuting-squares-of-maps.lagda.md index 6e3f15166d..cd397f40a9 100644 --- a/src/foundation/commuting-squares-of-maps.lagda.md +++ b/src/foundation/commuting-squares-of-maps.lagda.md @@ -22,6 +22,7 @@ open import foundation.identity-types open import foundation.postcomposition-functions open import foundation.precomposition-functions open import foundation.universe-levels +open import foundation.whiskering-higher-homotopies open import foundation.whiskering-homotopies open import foundation-core.commuting-prisms-of-maps @@ -350,7 +351,10 @@ module _ ( inv ( ap ( ap (map-inv-equiv right)) - ( ( ap² bottom (coherence-map-inv-equiv left a)) ∙ + ( ( left-whisker-htpy² + ( bottom) + ( coherence-map-inv-equiv left) + ( a)) ∙ ( inv ( ap-comp ( bottom) diff --git a/src/foundation/homotopies.lagda.md b/src/foundation/homotopies.lagda.md index f65c0f3914..b901892c53 100644 --- a/src/foundation/homotopies.lagda.md +++ b/src/foundation/homotopies.lagda.md @@ -325,7 +325,7 @@ module _ ( h) ( λ k p → eq-htpy (λ i → ap (f i) (p i)) = ap (map-Π f) (eq-htpy p)) ( eq-htpy-refl-htpy (map-Π f h) ∙ - ap² (map-Π f) (inv (eq-htpy-refl-htpy h))) + inv (ap² (map-Π f) (eq-htpy-refl-htpy h))) ``` ## See also diff --git a/src/linear-algebra/vectors.lagda.md b/src/linear-algebra/vectors.lagda.md index b20f6187cb..da98df6636 100644 --- a/src/linear-algebra/vectors.lagda.md +++ b/src/linear-algebra/vectors.lagda.md @@ -9,7 +9,6 @@ module linear-algebra.vectors where ```agda open import elementary-number-theory.natural-numbers -open import foundation.action-on-higher-identifications-functions open import foundation.action-on-identifications-functions open import foundation.cartesian-product-types open import foundation.contractible-types @@ -27,6 +26,7 @@ open import foundation.truncated-types open import foundation.truncation-levels open import foundation.unit-type open import foundation.universe-levels +open import foundation.whiskering-higher-homotopies open import univalent-combinatorics.involution-standard-finite-types open import univalent-combinatorics.standard-finite-types @@ -179,7 +179,7 @@ module _ (p : u = v) → eq-Eq-vec n u v (Eq-eq-vec n u v p) = p is-retraction-eq-Eq-vec zero-ℕ empty-vec empty-vec refl = refl is-retraction-eq-Eq-vec (succ-ℕ n) (x ∷ xs) .(x ∷ xs) refl = - ap² (x ∷_) (is-retraction-eq-Eq-vec n xs xs refl) + left-whisker-htpy² (x ∷_) (is-retraction-eq-Eq-vec n xs xs) refl square-Eq-eq-vec : (n : ℕ) (x : A) (u v : vec A n) (p : Id u v) → diff --git a/src/lists/universal-property-lists-wild-monoids.lagda.md b/src/lists/universal-property-lists-wild-monoids.lagda.md index f2b256b40e..b1fc25120b 100644 --- a/src/lists/universal-property-lists-wild-monoids.lagda.md +++ b/src/lists/universal-property-lists-wild-monoids.lagda.md @@ -7,12 +7,12 @@ module lists.universal-property-lists-wild-monoids where
Imports ```agda -open import foundation.action-on-higher-identifications-functions open import foundation.action-on-identifications-functions open import foundation.dependent-pair-types open import foundation.identity-types open import foundation.unit-type open import foundation.universe-levels +open import foundation.whiskering-higher-homotopies open import group-theory.homomorphisms-semigroups @@ -76,7 +76,10 @@ unit-law-101-associative-concat-list (cons x l) z = ( cons x) ( associative-concat-list l nil z) ( ap (concat-list l) (left-unit-law-concat-list z)))) ∙ - ( ap² (cons x) (unit-law-101-associative-concat-list l z))) ∙ + ( left-whisker-htpy² + ( cons x) + ( unit-law-101-associative-concat-list l) + ( z))) ∙ ( inv ( ap-comp (cons x) (concat-list' z) (right-unit-law-concat-list l)))) ∙ ( ap-comp (concat-list' z) (cons x) (right-unit-law-concat-list l)) @@ -100,7 +103,10 @@ unit-law-110-associative-concat-list (cons a x) y = ( cons a) ( associative-concat-list x y nil) ( ap (concat-list x) (right-unit-law-concat-list y)))) ∙ - ( ap² (cons a) (unit-law-110-associative-concat-list x y))) + ( left-whisker-htpy² + ( cons a) + ( unit-law-110-associative-concat-list x) + ( y))) list-Wild-Monoid : {l : Level} → UU l → Wild-Monoid l list-Wild-Monoid X = From 748f99e2d307ce4d153a7dda8a3fad953b4787a3 Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Tue, 30 Jan 2024 16:27:44 +0100 Subject: [PATCH 039/150] closing parenthesis --- src/foundation/action-on-equivalences-type-families.lagda.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/foundation/action-on-equivalences-type-families.lagda.md b/src/foundation/action-on-equivalences-type-families.lagda.md index 2125037c37..490f1208af 100644 --- a/src/foundation/action-on-equivalences-type-families.lagda.md +++ b/src/foundation/action-on-equivalences-type-families.lagda.md @@ -148,7 +148,7 @@ distributive-action-equiv-function-comp g f e = ( ap-comp g f (eq-equiv e)) ∙ ( left-whisker-htpy² g ( inv-htpy is-retraction-eq-equiv) - ( action-equiv-function f e) + ( action-equiv-function f e)) distributive-action-equiv-family-comp : {l1 l2 l3 : Level} (g : UU l2 → UU l3) (f : UU l1 → UU l2) From cfd18d2d0ec3048102f499c23846c413ce530a3f Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Tue, 30 Jan 2024 16:47:31 +0100 Subject: [PATCH 040/150] edits --- .../whiskering-homotopies.lagda.md | 30 +++++++++++-------- 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/src/foundation-core/whiskering-homotopies.lagda.md b/src/foundation-core/whiskering-homotopies.lagda.md index 15152e5b21..ca9d0b7a75 100644 --- a/src/foundation-core/whiskering-homotopies.lagda.md +++ b/src/foundation-core/whiskering-homotopies.lagda.md @@ -101,11 +101,10 @@ module _ ## Properties -### Unit laws for whiskering homotopies +### Unit laws and absorption 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. +The identity map is a _unit element_ for whiskerings from the function side, +and the reflexivity homotopy is an _absorbing element_ on the homotopy side for whiskerings. ```agda module _ @@ -120,19 +119,19 @@ module _ {l1 l2 l3 : Level} {A : UU l1} {B : A → UU l2} {C : A → UU l3} where - right-unit-law-left-whisker-htpy : + right-absorption-law-left-whisker-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-whisker-htpy g = refl-htpy + right-absorption-law-left-whisker-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-whisker-htpy : + left-absorption-law-right-whisker-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-whisker-htpy f = refl-htpy + left-absorption-law-right-whisker-htpy f = refl-htpy module _ {l1 l2 : Level} {A : UU l1} {B : A → UU l2} @@ -164,7 +163,7 @@ module _ right-whisker-inv-htpy = refl-htpy ``` -### Distributivity of whiskering over composition of homotopies +### Distributivity of whiskering over concatenation of homotopies ```agda module _ @@ -189,7 +188,9 @@ module _ distributive-right-whisker-concat-htpy = refl-htpy ``` -### Associativity of whiskering and function composition +### Whiskering preserves function composition. + +In other words, whiskering is an action of functions on homotopies. ```agda module _ @@ -218,6 +219,12 @@ module _ ### A coherence for homotopies to the identity function +Consider a function `f : A → A` and let `H : f ~ id` be a homotopy to the identity function. Then we have a homotopy + +```text + H ·r f ~ f ·l H. +``` + ```agda module _ {l : Level} {A : UU l} {f : A → A} (H : f ~ id) @@ -242,8 +249,7 @@ definitionally. ```agda module _ - {l1 l2 l3 l4 : Level} - {A : UU l1} {B : A → UU l2} + {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 From 6adf32cbe1c2646c2f66a67c70262bd951bf3d49 Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Tue, 30 Jan 2024 16:48:07 +0100 Subject: [PATCH 041/150] make pre-commit --- src/foundation-core/whiskering-homotopies.lagda.md | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/foundation-core/whiskering-homotopies.lagda.md b/src/foundation-core/whiskering-homotopies.lagda.md index ca9d0b7a75..aaf9dfc0dc 100644 --- a/src/foundation-core/whiskering-homotopies.lagda.md +++ b/src/foundation-core/whiskering-homotopies.lagda.md @@ -103,8 +103,9 @@ module _ ### Unit laws and absorption laws for whiskering homotopies -The identity map is a _unit element_ for whiskerings from the function side, -and the reflexivity homotopy is an _absorbing element_ on the homotopy side for whiskerings. +The identity map is a _unit element_ for whiskerings from the function side, and +the reflexivity homotopy is an _absorbing element_ on the homotopy side for +whiskerings. ```agda module _ @@ -188,7 +189,7 @@ module _ distributive-right-whisker-concat-htpy = refl-htpy ``` -### Whiskering preserves function composition. +### Whiskering preserves function composition In other words, whiskering is an action of functions on homotopies. @@ -219,7 +220,8 @@ module _ ### A coherence for homotopies to the identity function -Consider a function `f : A → A` and let `H : f ~ id` be a homotopy to the identity function. Then we have a homotopy +Consider a function `f : A → A` and let `H : f ~ id` be a homotopy to the +identity function. Then we have a homotopy ```text H ·r f ~ f ·l H. From c21d1992bc5dfdea24024b55003b0e3965610fad Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Tue, 30 Jan 2024 16:52:41 +0100 Subject: [PATCH 042/150] adding new files to the table about identity types --- tables/identity-types.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tables/identity-types.md b/tables/identity-types.md index 6019d92512..3faec0d494 100644 --- a/tables/identity-types.md +++ b/tables/identity-types.md @@ -1,10 +1,12 @@ | Concept | File | | --------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------- | +| Action on higher identifications of functions | [`foundation.action-on-higher-identifications-functions`](foundation.action-on-higher-identifications-functions.md) | | Action on identifications of binary functions | [`foundation.action-on-identifications-binary-functions`](foundation.action-on-identifications-binary-functions.md) | | Action on identifications of dependent functions | [`foundation.action-on-identifications-dependent-functions`](foundation.action-on-identifications-dependent-functions.md) | | Action on identifications of functions | [`foundation.action-on-identifications-functions`](foundation.action-on-identifications-functions.md) | | Binary transport | [`foundation.binary-transport`](foundation.binary-transport.md) | | Commuting hexagons of identifications | [`foundation.commuting-hexagons-of-identifications`](foundation.commuting-hexagons-of-identifications.md) | +| Commuting squares of identifications (foundation-core) | [`foundation-core.commuting-squares-of-identifications`](foundation-core.commuting-squares-of-identifications.md) | | Commuting squares of identifications | [`foundation.commuting-squares-of-identifications`](foundation.commuting-squares-of-identifications.md) | | Dependent identifications (foundation) | [`foundation.dependent-identifications`](foundation.dependent-identifications.md) | | Dependent identifications (foundation-core) | [`foundation-core.dependent-identifications`](foundation-core.dependent-identifications.md) | @@ -24,3 +26,4 @@ | Transport along identifications (foundation-core) | [`foundation-core.transport-along-identifications`](foundation-core.transport-along-identifications.md) | | The universal property of identity systems | [`foundation.universal-property-identity-systems`](foundation.universal-property-identity-systems.md) | | The universal property of identity types | [`foundation.universal-property-identity-types`](foundation.universal-property-identity-types.md) | +| Whiskering identifications | [`foundation.whiskering-identifications`](foundation.whiskering-identifications.md) | From fa752c2f5db5a48d49aaa1e95284683aae0b6182 Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Tue, 30 Jan 2024 17:32:19 +0100 Subject: [PATCH 043/150] unifying the duplicate entries for pastings of commuting squares of identifications --- .../commuting-squares-of-maps.lagda.md | 23 ++- ...muting-squares-of-identifications.lagda.md | 152 +++++++----------- .../commuting-squares-of-maps.lagda.md | 2 +- src/foundation/morphisms-arrows.lagda.md | 2 +- ...port-along-higher-identifications.lagda.md | 4 +- .../functoriality-suspensions.lagda.md | 4 +- 6 files changed, 84 insertions(+), 103 deletions(-) diff --git a/src/foundation-core/commuting-squares-of-maps.lagda.md b/src/foundation-core/commuting-squares-of-maps.lagda.md index e6834c6c95..89da2ea598 100644 --- a/src/foundation-core/commuting-squares-of-maps.lagda.md +++ b/src/foundation-core/commuting-squares-of-maps.lagda.md @@ -24,15 +24,24 @@ open import foundation-core.whiskering-homotopies A square of maps ```text - A ------> X - | | - | | - | | - V V - B ------> Y + top + A --------> X + | | + left | | right + ∨ ∨ + B --------> Y + bottom ``` -is said to commute if there is a homotopy between both composites. +is said to **commute** if there is a homotopy + +```text + bottom ∘ left ~ right ∘ top. +``` + +Such a homotopy is called the +{{#concept "coherence" Disambiguation="commuting square of maps" Agda=coherence-square-maps}} +of the commuting square. ## Definitions diff --git a/src/foundation/commuting-squares-of-identifications.lagda.md b/src/foundation/commuting-squares-of-identifications.lagda.md index 648933a078..3839aeb76f 100644 --- a/src/foundation/commuting-squares-of-identifications.lagda.md +++ b/src/foundation/commuting-squares-of-identifications.lagda.md @@ -53,21 +53,41 @@ module _ (bottom-left : d = e) (bottom-right : e = f) where - coherence-square-identifications-comp-horizontal : + horizontal-pasting-coherence-square-identifications : coherence-square-identifications top-left left middle bottom-left → coherence-square-identifications top-right middle right bottom-right → coherence-square-identifications (top-left ∙ top-right) left right (bottom-left ∙ bottom-right) - coherence-square-identifications-comp-horizontal p q = - ( ( ( ( inv (assoc left bottom-left bottom-right)) ∙ - ( ap-binary _∙_ p refl)) ∙ - ( assoc top-left middle bottom-right)) ∙ - ( ap-binary _∙_ (refl {x = top-left}) q)) ∙ - ( inv (assoc top-left top-right right)) + horizontal-pasting-coherence-square-identifications s t = + ( inv (assoc left bottom-left bottom-right)) ∙ + ( ( right-whisker-identification s bottom-right) ∙ + ( ( assoc top-left middle bottom-right) ∙ + ( ( left-whisker-identification top-left t) ∙ + ( inv (assoc top-left top-right right))))) ``` ### Vertically pasting squares of identifications +Consider two squares of identifications as in the diagram + +```text + top + a --------> b + | | + top-left | | top-right + ∨ middle ∨ + c --------> d + | | + bottom-left | | bottom-right + ∨ ∨ + e --------> f + bottom +``` + +with `s : top-left ∙ middle = top ∙ top-right` and +`t : bottom-left ∙ bottom = middle ∙ bottom-right`. Then the outer square +commutes. + ```agda module _ {l : Level} {A : UU l} {a b c d e f : A} @@ -76,93 +96,17 @@ module _ (bottom : e = f) where - coherence-square-identifications-comp-vertical : + vertical-pasting-coherence-square-identifications : coherence-square-identifications top top-left top-right middle → coherence-square-identifications middle bottom-left bottom-right bottom → coherence-square-identifications top (top-left ∙ bottom-left) (top-right ∙ bottom-right) bottom - coherence-square-identifications-comp-vertical p q = - ( ( assoc top-left bottom-left bottom) ∙ - ( ( ( ap-binary _∙_ (refl {x = top-left}) q) ∙ - ( inv (assoc top-left middle bottom-right))) ∙ - ( ap-binary _∙_ p (refl {x = bottom-right})))) ∙ - ( assoc top top-right bottom-right) -``` - -### Horizontal pasting of commuting squares of identifications - -Consider a commuting diagram of identifications - -```text - top-left top-right - a -------------> b -------------> c - | | | - left | | middle | right - ∨ ∨ ∨ - d -------------> e -------------> f - bottom-left bottom-right -``` - -in a type `A`. - -```agda -{- - (p-lleft : a = b) (p-lbottom : b = d) (p-rbottom : d = f) - (p-middle : c = d) (p-ltop : a = c) (p-rtop : c = e) (p-rright : e = f) --} - -module _ - {l : Level} {A : UU l} {a b c d e f : A} - (top-left : a = b) (top-right : b = c) - (left : a = d) (middle : b = e) (right : c = f) - (bottom-left : d = e) (bottom-right : e = f) - where - - horizontal-concat-square : - coherence-square-identifications top-left left middle bottom-left → - coherence-square-identifications top-right middle right bottom-right → - coherence-square-identifications - ( top-left ∙ top-right) - ( left) - ( right) - ( bottom-left ∙ bottom-right) - horizontal-concat-square s t = - ( inv (assoc left bottom-left bottom-right)) ∙ - ( ( ap (concat' a bottom-right) s) ∙ - ( ( assoc top-left middle bottom-right) ∙ - ( ( ap (concat top-left f) t) ∙ - ( inv (assoc top-left top-right right))))) - -module _ - {l : Level} {A : UU l} {a b c d : A} - where - - left-unit-law-horizontal-concat-square : - (top : a = b) (left : a = c) (right : b = d) (bottom : c = d) - (s : coherence-square-identifications top left right bottom) → - horizontal-concat-square refl top left left right refl bottom - ( horizontal-refl-coherence-square-identifications left) - ( s) = - s - left-unit-law-horizontal-concat-square top refl right bottom s = - right-unit ∙ ap-id s - -vertical-concat-square : - {l : Level} {A : UU l} {a b c d e f : A} - (p-tleft : a = b) (p-bleft : b = c) (p-bbottom : c = f) - (p-middle : b = e) (p-ttop : a = d) (p-tright : d = e) (p-bright : e = f) - (s-top : coherence-square-identifications p-ttop p-tleft p-tright p-middle) - (s-bottom : - coherence-square-identifications p-middle p-bleft p-bright p-bbottom) → - coherence-square-identifications - p-ttop (p-tleft ∙ p-bleft) (p-tright ∙ p-bright) p-bbottom -vertical-concat-square {a = a} {f = f} - p-tleft p-bleft p-bbottom p-middle p-ttop p-tright p-bright s-top s-bottom = - ( assoc p-tleft p-bleft p-bbottom) ∙ - ( ( ap (concat p-tleft f) s-bottom) ∙ - ( ( inv (assoc p-tleft p-middle p-bright)) ∙ - ( ( ap (concat' a p-bright) s-top) ∙ - ( assoc p-ttop p-tright p-bright)))) + vertical-pasting-coherence-square-identifications p q = + ( assoc top-left bottom-left bottom) ∙ + ( ( left-whisker-identification top-left q) ∙ + ( ( inv (assoc top-left middle bottom-right)) ∙ + ( ( right-whisker-identification p bottom-right) ∙ + ( assoc top top-right bottom-right)))) ``` ### Whiskering squares of identifications @@ -233,6 +177,34 @@ module _ ## Properties +### Unit law for horizontal pasting of identifications + +in a type `A`. + +```agda +module _ + {l : Level} {A : UU l} {a b c d : A} + where + + left-unit-law-horizontal-pasting-coherence-square-identifications : + (top : a = b) (left : a = c) (right : b = d) (bottom : c = d) + (s : coherence-square-identifications top left right bottom) → + horizontal-pasting-coherence-square-identifications + ( refl) + ( top) + ( left) + ( left) + ( right) + ( refl) + ( bottom) + ( horizontal-refl-coherence-square-identifications left) + ( s) = + s + left-unit-law-horizontal-pasting-coherence-square-identifications + top refl right bottom s = + right-unit ∙ ap-id s +``` + ### Whiskering of squares of identifications ```agda diff --git a/src/foundation/commuting-squares-of-maps.lagda.md b/src/foundation/commuting-squares-of-maps.lagda.md index cd397f40a9..e3bfda18d8 100644 --- a/src/foundation/commuting-squares-of-maps.lagda.md +++ b/src/foundation/commuting-squares-of-maps.lagda.md @@ -322,7 +322,7 @@ module _ ( right) ( inv (H (map-inv-equiv left (map-equiv left a))))) ( inv - ( coherence-square-identifications-comp-vertical + ( vertical-pasting-coherence-square-identifications ( ap ( map-inv-equiv right) ( ap diff --git a/src/foundation/morphisms-arrows.lagda.md b/src/foundation/morphisms-arrows.lagda.md index 4addaaf6bf..7a532d80f9 100644 --- a/src/foundation/morphisms-arrows.lagda.md +++ b/src/foundation/morphisms-arrows.lagda.md @@ -361,7 +361,7 @@ module _ ( ap-concat g ( htpy-domain-htpy-hom-arrow f g α β H a) ( htpy-domain-htpy-hom-arrow f g β γ K a))) ∙ - ( coherence-square-identifications-comp-horizontal + ( horizontal-pasting-coherence-square-identifications ( htpy-codomain-htpy-hom-arrow f g α β H (f a)) ( htpy-codomain-htpy-hom-arrow f g β γ K (f a)) ( coh-hom-arrow f g α a) diff --git a/src/foundation/transport-along-higher-identifications.lagda.md b/src/foundation/transport-along-higher-identifications.lagda.md index 3c9c97fdea..397f9d6ee5 100644 --- a/src/foundation/transport-along-higher-identifications.lagda.md +++ b/src/foundation/transport-along-higher-identifications.lagda.md @@ -109,7 +109,7 @@ module _ ( tr²-concat (left-whisker-identification p β) ( right-whisker-identification α q') b) ( tr-concat p' q' b)) ∙ - ( vertical-concat-square + ( vertical-pasting-coherence-square-identifications ( tr² B (left-whisker-identification p β) b) ( tr² B (right-whisker-identification α q') b) ( tr-concat p' q' b) @@ -133,7 +133,7 @@ module _ ( right-whisker-identification α q) ( left-whisker-identification p' β) b) ( tr-concat p' q' b)) ∙ - ( vertical-concat-square + ( vertical-pasting-coherence-square-identifications ( tr² B (right-whisker-identification α q) b) ( tr² B (left-whisker-identification p' β) b) ( tr-concat p' q' b) diff --git a/src/synthetic-homotopy-theory/functoriality-suspensions.lagda.md b/src/synthetic-homotopy-theory/functoriality-suspensions.lagda.md index 384807d29a..8a418d1346 100644 --- a/src/synthetic-homotopy-theory/functoriality-suspensions.lagda.md +++ b/src/synthetic-homotopy-theory/functoriality-suspensions.lagda.md @@ -138,7 +138,7 @@ module _ ( ap (map-suspension (g ∘ f)) (meridian-suspension a)) ( preserves-comp-map-suspension-south) coherence-square-identifications-comp-map-suspension a = - coherence-square-identifications-comp-horizontal _ _ + horizontal-pasting-coherence-square-identifications _ _ ( ap (map-suspension g ∘ map-suspension f) (meridian-suspension a)) ( ap (map-suspension g) (meridian-suspension (f a))) ( ap (map-suspension (g ∘ f)) (meridian-suspension a)) @@ -161,7 +161,7 @@ module _ ( meridian-suspension (f a)) ( compute-south-map-suspension f) ( compute-meridian-map-suspension f a))) - ( coherence-square-identifications-comp-horizontal _ _ + ( horizontal-pasting-coherence-square-identifications _ _ ( ap (map-suspension g) (meridian-suspension (f a))) ( meridian-suspension (g (f a))) ( ap (map-suspension (g ∘ f)) (meridian-suspension a)) From e49e5cea5821ef8050972ad75fa2f6ee08bc349d Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Tue, 30 Jan 2024 17:48:28 +0100 Subject: [PATCH 044/150] unifying the duplicate entries for pastings of commuting squares of identifications --- ...ansport-along-higher-identifications.lagda.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/foundation/transport-along-higher-identifications.lagda.md b/src/foundation/transport-along-higher-identifications.lagda.md index 397f9d6ee5..0d5c94ff08 100644 --- a/src/foundation/transport-along-higher-identifications.lagda.md +++ b/src/foundation/transport-along-higher-identifications.lagda.md @@ -110,13 +110,13 @@ module _ ( right-whisker-identification α q') b) ( tr-concat p' q' b)) ∙ ( vertical-pasting-coherence-square-identifications - ( tr² B (left-whisker-identification p β) b) - ( tr² B (right-whisker-identification α q') b) - ( tr-concat p' q' b) - ( tr-concat p q' b) ( tr-concat p q b) + ( tr² B (left-whisker-identification p β) b) ( right-whisker-htpy (tr² B β) (tr B p) b) + ( tr-concat p q' b) + ( tr² B (right-whisker-identification α q') b) ( left-whisker-htpy (tr B q') (tr² B α) b) + ( tr-concat p' q' b) ( tr²-left-whisker p β b) ( tr²-right-whisker α q' b))) ( right-whisker-identification @@ -134,13 +134,13 @@ module _ ( left-whisker-identification p' β) b) ( tr-concat p' q' b)) ∙ ( vertical-pasting-coherence-square-identifications - ( tr² B (right-whisker-identification α q) b) - ( tr² B (left-whisker-identification p' β) b) - ( tr-concat p' q' b) - ( tr-concat p' q b) ( tr-concat p q b) + ( tr² B (right-whisker-identification α q) b) ( left-whisker-htpy (tr B q) (tr² B α) b) + ( tr-concat p' q b) + ( tr² B (left-whisker-identification p' β) b) ( right-whisker-htpy (tr² B β) (tr B p') b) + ( tr-concat p' q' b) ( tr²-right-whisker α q b) ( tr²-left-whisker p' β b))) tr³-htpy-swap-path-swap {q = refl} refl {p = refl} refl b = refl From 4cc4a8ee408e8d16da671d2d0373f465fab3185e Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Tue, 30 Jan 2024 20:36:09 +0100 Subject: [PATCH 045/150] splicing commuting triangles of identifications --- ...ting-triangles-of-identifications.lagda.md | 222 ++++++++++++++---- src/foundation/morphisms-arrows.lagda.md | 2 +- 2 files changed, 171 insertions(+), 53 deletions(-) diff --git a/src/foundation/commuting-triangles-of-identifications.lagda.md b/src/foundation/commuting-triangles-of-identifications.lagda.md index 869d71a5e3..c4f4f165c9 100644 --- a/src/foundation/commuting-triangles-of-identifications.lagda.md +++ b/src/foundation/commuting-triangles-of-identifications.lagda.md @@ -131,8 +131,6 @@ we may consider three ways of attaching new identifications to it: (left = top ∙ right) → left = (top ∙ p⁻¹) ∙ (p ∙ right). ``` - This isn't formalized yet. - Because concatenation of identifications is an equivalence, it follows that all of these transformations are equivalences. @@ -143,92 +141,212 @@ with two maps: the forward direction states identification without needing to reassociate on the right, and the backwards direction conversely allows one to cancel out an identification in parentheses. +#### Left whiskering commuting squares of identifications + +There is an equivalence of commuting squares + +```text + top p ∙ top + x ----> y u ----> y + \ / \ / + left \ / right ≃ p ∙ left \ / right + ∨ ∨ ∨ ∨ + z z +``` + +for any identification `p : u = x`. + +```agda +module _ + {l : Level} {A : UU l} {x y z u : A} + (p : u = x) {left : x = z} {right : y = z} {top : x = y} + where + + equiv-left-whisker-coherence-triangle-identifications : + coherence-triangle-identifications left right top ≃ + coherence-triangle-identifications (p ∙ left) right (p ∙ top) + equiv-left-whisker-coherence-triangle-identifications = + ( inv-equiv (equiv-concat-assoc' (p ∙ left) p top right)) ∘e + ( equiv-left-whisker-identification p) + + left-whisker-coherence-triangle-identifications : + coherence-triangle-identifications left right top → + coherence-triangle-identifications (p ∙ left) right (p ∙ top) + left-whisker-coherence-triangle-identifications = + map-equiv equiv-left-whisker-coherence-triangle-identifications + + left-unwhisker-triangle-identifications : + coherence-triangle-identifications (p ∙ left) right (p ∙ top) → + coherence-triangle-identifications left right top + left-unwhisker-triangle-identifications = + map-inv-equiv equiv-left-whisker-coherence-triangle-identifications + + equiv-left-whisker-coherence-triangle-identifications' : + coherence-triangle-identifications' left right top ≃ + coherence-triangle-identifications' (p ∙ left) right (p ∙ top) + equiv-left-whisker-coherence-triangle-identifications' = + ( inv-equiv (equiv-concat-assoc p top right (p ∙ left))) ∘e + ( equiv-left-whisker-identification p) + + left-whisker-coherence-triangle-identifications' : + coherence-triangle-identifications' left right top → + coherence-triangle-identifications' (p ∙ left) right (p ∙ top) + left-whisker-coherence-triangle-identifications' = + map-equiv equiv-left-whisker-coherence-triangle-identifications' + + left-unwhisker-triangle-identifications' : + coherence-triangle-identifications' (p ∙ left) right (p ∙ top) → + coherence-triangle-identifications' left right top + left-unwhisker-triangle-identifications' = + map-inv-equiv equiv-left-whisker-coherence-triangle-identifications' +``` + +#### Right whiskering commuting squares of identifications + +There is an equivalence of commuting triangles of identifications + +```text + top top + x ----> y x ----> y + \ / \ / + left \ / right ≃ left ∙ p \ / right ∙ p + ∨ ∨ ∨ ∨ + z u +``` + +for any identification `p : z = u`. + ```agda module _ {l : Level} {A : UU l} {x y z u : A} (left : x = z) (top : x = y) {right : y = z} (p : z = u) where - equiv-right-whisker-triangle-identifications : - ( coherence-triangle-identifications left right top) ≃ - ( coherence-triangle-identifications (left ∙ p) (right ∙ p) top) - equiv-right-whisker-triangle-identifications = + equiv-right-whisker-coherence-triangle-identifications : + coherence-triangle-identifications left right top ≃ + coherence-triangle-identifications (left ∙ p) (right ∙ p) top + equiv-right-whisker-coherence-triangle-identifications = ( equiv-concat-assoc' (left ∙ p) top right p) ∘e ( equiv-right-whisker-identification p) - right-whisker-triangle-identifications : + right-whisker-coherence-triangle-identifications : coherence-triangle-identifications left right top → coherence-triangle-identifications (left ∙ p) (right ∙ p) top - right-whisker-triangle-identifications = - map-equiv equiv-right-whisker-triangle-identifications + right-whisker-coherence-triangle-identifications = + map-equiv equiv-right-whisker-coherence-triangle-identifications right-unwhisker-triangle-identifications : coherence-triangle-identifications (left ∙ p) (right ∙ p) top → coherence-triangle-identifications left right top right-unwhisker-triangle-identifications = - map-inv-equiv equiv-right-whisker-triangle-identifications + map-inv-equiv equiv-right-whisker-coherence-triangle-identifications - equiv-right-whisker-triangle-identifications' : - ( coherence-triangle-identifications' left right top) ≃ - ( coherence-triangle-identifications' (left ∙ p) (right ∙ p) top) - equiv-right-whisker-triangle-identifications' = + equiv-right-whisker-coherence-triangle-identifications' : + coherence-triangle-identifications' left right top ≃ + coherence-triangle-identifications' (left ∙ p) (right ∙ p) top + equiv-right-whisker-coherence-triangle-identifications' = ( equiv-concat-assoc top right p (left ∙ p)) ∘e ( equiv-right-whisker-identification p) - right-whisker-triangle-identifications' : + right-whisker-coherence-triangle-identifications' : coherence-triangle-identifications' left right top → coherence-triangle-identifications' (left ∙ p) (right ∙ p) top - right-whisker-triangle-identifications' = - map-equiv equiv-right-whisker-triangle-identifications' + right-whisker-coherence-triangle-identifications' = + map-equiv equiv-right-whisker-coherence-triangle-identifications' right-unwhisker-triangle-identifications' : coherence-triangle-identifications' (left ∙ p) (right ∙ p) top → coherence-triangle-identifications' left right top right-unwhisker-triangle-identifications' = - map-inv-equiv equiv-right-whisker-triangle-identifications' + map-inv-equiv equiv-right-whisker-coherence-triangle-identifications' +``` + +#### Splicing a pair of mutual inverse identifications in a commuting triangle of identifications + +Consider two identifications `p : y = u` and `q : u = y` equipped with an identification `α : inv p = q`. Then we have an equivalence of commuting triangles of identifications + +```text + top top ∙ p + x ----> y x ----> u + \ / \ / + left \ / right ≃ left \ / q ∙ right + ∨ ∨ ∨ ∨ + z z. +``` + +Note that we have formulated the equivalence in such a way that it gives us both +equivalences + +```text + (left = top ∙ right) ≃ (left = (top ∙ p) ∙ (p⁻¹ ∙ right)), +``` + +and + +```text + (left = top ∙ right) ≃ (left = (top ∙ p⁻¹) ∙ (p ∙ right)) +``` +without further ado. + +```agda module _ {l : Level} {A : UU l} {x y z u : A} - (p : u = x) {left : x = z} {right : y = z} {top : x = y} where - equiv-left-whisker-triangle-identifications : - ( coherence-triangle-identifications left right top) ≃ - ( coherence-triangle-identifications (p ∙ left) right (p ∙ top)) - equiv-left-whisker-triangle-identifications = - ( inv-equiv (equiv-concat-assoc' (p ∙ left) p top right)) ∘e - ( equiv-left-whisker-identification p) - - left-whisker-triangle-identifications : + equiv-splice-inverse-pair-coherence-triangle-identifications : + (p : y = u) (q : u = y) (α : inv p = q) → + (left : x = z) (right : y = z) (top : x = y) → + coherence-triangle-identifications left right top ≃ + coherence-triangle-identifications left (q ∙ right) (top ∙ p) + equiv-splice-inverse-pair-coherence-triangle-identifications refl .refl refl + left right top = + equiv-concat' left (right-whisker-identification (inv right-unit) right) + + splice-inverse-pair-coherence-triangle-identifications : + (p : y = u) (q : u = y) (α : inv p = q) → + (left : x = z) (right : y = z) (top : x = y) → coherence-triangle-identifications left right top → - coherence-triangle-identifications (p ∙ left) right (p ∙ top) - left-whisker-triangle-identifications = - map-equiv equiv-left-whisker-triangle-identifications - - left-unwhisker-triangle-identifications : - coherence-triangle-identifications (p ∙ left) right (p ∙ top) → + coherence-triangle-identifications left (q ∙ right) (top ∙ p) + splice-inverse-pair-coherence-triangle-identifications refl .refl refl + left right top t = + t ∙ inv (right-whisker-identification right-unit right) + + unsplice-inverse-pair-coherence-triangle-identifications : + (p : y = u) (q : u = y) (α : inv p = q) → + (left : x = z) (right : y = z) (top : x = y) → + coherence-triangle-identifications left (q ∙ right) (top ∙ p) → coherence-triangle-identifications left right top - left-unwhisker-triangle-identifications = - map-inv-equiv equiv-left-whisker-triangle-identifications - - equiv-left-whisker-triangle-identifications' : - ( coherence-triangle-identifications' left right top) ≃ - ( coherence-triangle-identifications' (p ∙ left) right (p ∙ top)) - equiv-left-whisker-triangle-identifications' = - ( inv-equiv (equiv-concat-assoc p top right (p ∙ left))) ∘e - ( equiv-left-whisker-identification p) - - left-whisker-triangle-identifications' : + unsplice-inverse-pair-coherence-triangle-identifications refl .refl refl + left right top t = + t ∙ right-whisker-identification right-unit right + + equiv-splice-inverse-pair-coherence-triangle-identifications' : + (p : y = u) (q : u = y) (α : inv p = q) → + (left : x = z) (right : y = z) (top : x = y) → + coherence-triangle-identifications' left right top ≃ + coherence-triangle-identifications' left (q ∙ right) (top ∙ p) + equiv-splice-inverse-pair-coherence-triangle-identifications' refl .refl refl + left right top = + equiv-concat (right-whisker-identification right-unit right) left + + splice-inverse-pair-coherence-triangle-identifications' : + (p : y = u) (q : u = y) (α : inv p = q) → + (left : x = z) (right : y = z) (top : x = y) → coherence-triangle-identifications' left right top → - coherence-triangle-identifications' (p ∙ left) right (p ∙ top) - left-whisker-triangle-identifications' = - map-equiv equiv-left-whisker-triangle-identifications' - - left-unwhisker-triangle-identifications' : - coherence-triangle-identifications' (p ∙ left) right (p ∙ top) → + coherence-triangle-identifications' left (q ∙ right) (top ∙ p) + splice-inverse-pair-coherence-triangle-identifications' refl .refl refl + left right top t = + right-whisker-identification right-unit right ∙ t + + unsplice-inverse-pair-coherence-triangle-identifications' : + (p : y = u) (q : u = y) (α : inv p = q) → + (left : x = z) (right : y = z) (top : x = y) → + coherence-triangle-identifications' left (q ∙ right) (top ∙ p) → coherence-triangle-identifications' left right top - left-unwhisker-triangle-identifications' = - map-inv-equiv equiv-left-whisker-triangle-identifications' + unsplice-inverse-pair-coherence-triangle-identifications' refl .refl refl + left right top t = + inv (right-whisker-identification right-unit right) ∙ t ``` ### The action of functions on commuting triangles of identifications diff --git a/src/foundation/morphisms-arrows.lagda.md b/src/foundation/morphisms-arrows.lagda.md index 7a532d80f9..afbeabc757 100644 --- a/src/foundation/morphisms-arrows.lagda.md +++ b/src/foundation/morphisms-arrows.lagda.md @@ -447,7 +447,7 @@ module _ ( htpy-domain-left-whisker-htpy-hom-arrow) ( htpy-codomain-left-whisker-htpy-hom-arrow) coh-left-whisker-htpy-hom-arrow a = - ( left-whisker-triangle-identifications' + ( left-whisker-coherence-triangle-identifications' ( ap (map-codomain-hom-arrow g h γ) (coh-hom-arrow f g α a)) ( ( ap ( coh-hom-arrow g h γ (map-domain-hom-arrow f g α a) ∙_) From 8cf9a28e5d15a67e677b591e6496edc12ae3d654 Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Tue, 30 Jan 2024 20:36:32 +0100 Subject: [PATCH 046/150] make pre-commit --- ...mmuting-triangles-of-identifications.lagda.md | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/src/foundation/commuting-triangles-of-identifications.lagda.md b/src/foundation/commuting-triangles-of-identifications.lagda.md index c4f4f165c9..ca0c2482fd 100644 --- a/src/foundation/commuting-triangles-of-identifications.lagda.md +++ b/src/foundation/commuting-triangles-of-identifications.lagda.md @@ -263,7 +263,9 @@ module _ #### Splicing a pair of mutual inverse identifications in a commuting triangle of identifications -Consider two identifications `p : y = u` and `q : u = y` equipped with an identification `α : inv p = q`. Then we have an equivalence of commuting triangles of identifications +Consider two identifications `p : y = u` and `q : u = y` equipped with an +identification `α : inv p = q`. Then we have an equivalence of commuting +triangles of identifications ```text top top ∙ p @@ -295,7 +297,7 @@ module _ where equiv-splice-inverse-pair-coherence-triangle-identifications : - (p : y = u) (q : u = y) (α : inv p = q) → + (p : y = u) (q : u = y) (α : inv p = q) → (left : x = z) (right : y = z) (top : x = y) → coherence-triangle-identifications left right top ≃ coherence-triangle-identifications left (q ∙ right) (top ∙ p) @@ -304,7 +306,7 @@ module _ equiv-concat' left (right-whisker-identification (inv right-unit) right) splice-inverse-pair-coherence-triangle-identifications : - (p : y = u) (q : u = y) (α : inv p = q) → + (p : y = u) (q : u = y) (α : inv p = q) → (left : x = z) (right : y = z) (top : x = y) → coherence-triangle-identifications left right top → coherence-triangle-identifications left (q ∙ right) (top ∙ p) @@ -313,7 +315,7 @@ module _ t ∙ inv (right-whisker-identification right-unit right) unsplice-inverse-pair-coherence-triangle-identifications : - (p : y = u) (q : u = y) (α : inv p = q) → + (p : y = u) (q : u = y) (α : inv p = q) → (left : x = z) (right : y = z) (top : x = y) → coherence-triangle-identifications left (q ∙ right) (top ∙ p) → coherence-triangle-identifications left right top @@ -322,7 +324,7 @@ module _ t ∙ right-whisker-identification right-unit right equiv-splice-inverse-pair-coherence-triangle-identifications' : - (p : y = u) (q : u = y) (α : inv p = q) → + (p : y = u) (q : u = y) (α : inv p = q) → (left : x = z) (right : y = z) (top : x = y) → coherence-triangle-identifications' left right top ≃ coherence-triangle-identifications' left (q ∙ right) (top ∙ p) @@ -331,7 +333,7 @@ module _ equiv-concat (right-whisker-identification right-unit right) left splice-inverse-pair-coherence-triangle-identifications' : - (p : y = u) (q : u = y) (α : inv p = q) → + (p : y = u) (q : u = y) (α : inv p = q) → (left : x = z) (right : y = z) (top : x = y) → coherence-triangle-identifications' left right top → coherence-triangle-identifications' left (q ∙ right) (top ∙ p) @@ -340,7 +342,7 @@ module _ right-whisker-identification right-unit right ∙ t unsplice-inverse-pair-coherence-triangle-identifications' : - (p : y = u) (q : u = y) (α : inv p = q) → + (p : y = u) (q : u = y) (α : inv p = q) → (left : x = z) (right : y = z) (top : x = y) → coherence-triangle-identifications' left (q ∙ right) (top ∙ p) → coherence-triangle-identifications' left right top From 65c4a23000edf4e79241b77809054088a5b6f67a Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Tue, 30 Jan 2024 21:50:42 +0100 Subject: [PATCH 047/150] removing a bunch of ap concats --- .../delooping-sign-homomorphism.lagda.md | 68 +++++++++---------- src/foundation-core/pullbacks.lagda.md | 7 +- .../commuting-squares-of-maps.lagda.md | 23 ++++--- ...commuting-triangles-of-homotopies.lagda.md | 6 +- src/foundation/path-algebra.lagda.md | 36 +++++----- src/foundation/pullbacks.lagda.md | 25 +++---- .../functoriality-higher-modalities.lagda.md | 12 ++-- .../lifting-squares.lagda.md | 30 ++++---- .../morphisms-h-spaces.lagda.md | 31 +++++---- .../dependent-coforks.lagda.md | 39 ++++++----- 10 files changed, 142 insertions(+), 135 deletions(-) diff --git a/src/finite-group-theory/delooping-sign-homomorphism.lagda.md b/src/finite-group-theory/delooping-sign-homomorphism.lagda.md index ad20f2ba3d..14b41430b4 100644 --- a/src/finite-group-theory/delooping-sign-homomorphism.lagda.md +++ b/src/finite-group-theory/delooping-sign-homomorphism.lagda.md @@ -58,6 +58,7 @@ open import foundation.unit-type open import foundation.univalence open import foundation.universal-property-set-quotients open import foundation.universe-levels +open import foundation.whiskering-identifications open import group-theory.concrete-groups open import group-theory.generating-sets-groups @@ -1112,8 +1113,7 @@ module _ ( inv-equiv ( compute-raise-Fin l4 2 ∘e inv-equiv (that-thing n)))) ( compute-raise-Fin l4 2 ∘e inv-equiv (that-thing n))) ∙ - ( ap - ( _∙ eq-counting-equivalence-class-R n) + ( right-whisker-identification ( inv ( compute-eq-equiv-comp-equiv ( inv-equiv @@ -1124,19 +1124,18 @@ module _ ( equivalence-class ∘ R (n +ℕ 2)) ( eq-pair-Σ p ( eq-is-prop is-prop-type-trunc-Prop)))))) ∙ - ( ap - ( _∙ - ( eq-equiv + ( right-whisker-identification + ( inv + ( commutativity-inv-eq-equiv + ( compute-raise-Fin l4 2 ∘e + inv-equiv (that-thing n)))) + ( ( eq-equiv ( equiv-eq ( inv ( ap ( equivalence-class ∘ R (n +ℕ 2)) ( eq-pair-Σ p - ( eq-is-prop is-prop-type-trunc-Prop))))))) - ( inv - ( commutativity-inv-eq-equiv - ( compute-raise-Fin l4 2 ∘e - inv-equiv (that-thing n)))) ∙ + ( eq-is-prop is-prop-type-trunc-Prop))))))) ∙ ( ap ( λ e → inv (eq-counting-equivalence-class-R n) ∙ @@ -1146,7 +1145,8 @@ module _ ( equivalence-class ∘ R (n +ℕ 2)) ( eq-pair-Σ p ( eq-is-prop is-prop-type-trunc-Prop)))))) - ( left-inverse-law-equiv equiv-univalence)))))) ∙ + ( left-inverse-law-equiv equiv-univalence)))) + ( eq-counting-equivalence-class-R n))) ∙ ( distributive-inv-concat ( inv (eq-counting-equivalence-class-R n) ∙ ( inv @@ -1154,26 +1154,26 @@ module _ ( equivalence-class ∘ R (n +ℕ 2)) ( eq-pair-Σ p (eq-is-prop is-prop-type-trunc-Prop))))) ( eq-counting-equivalence-class-R n) ∙ - ( ap - ( inv (eq-counting-equivalence-class-R n) ∙_) + ( left-whisker-identification + ( inv (eq-counting-equivalence-class-R n)) ( distributive-inv-concat ( inv (eq-counting-equivalence-class-R n)) ( inv ( ap ( equivalence-class ∘ R (n +ℕ 2)) ( eq-pair-Σ p (eq-is-prop is-prop-type-trunc-Prop)))) ∙ - ( ap - ( _∙ inv (inv (eq-counting-equivalence-class-R n))) + ( right-whisker-identification ( inv-inv ( ap ( equivalence-class ∘ R (n +ℕ 2)) ( eq-pair-Σ p - ( eq-is-prop is-prop-type-trunc-Prop)))) ∙ - ( ap + ( eq-is-prop is-prop-type-trunc-Prop)))) + ( inv (inv (eq-counting-equivalence-class-R n))) ∙ + ( left-whisker-identification ( ap ( equivalence-class ∘ R (n +ℕ 2)) ( eq-pair-Σ p - ( eq-is-prop is-prop-type-trunc-Prop)) ∙_) + ( eq-is-prop is-prop-type-trunc-Prop))) ( inv-inv (eq-counting-equivalence-class-R n)))))))) ∙ ( ( ap ( eq-pair-Σ @@ -1191,10 +1191,10 @@ module _ ( eq-counting-equivalence-class-R n)) ( eq-is-prop is-prop-type-trunc-Prop) ( _) ∙ - ( ap + ( left-whisker-identification ( eq-pair-Σ ( inv (eq-counting-equivalence-class-R n)) - ( eq-is-prop is-prop-type-trunc-Prop) ∙_) + ( eq-is-prop is-prop-type-trunc-Prop)) ( interchange-concat-eq-pair-Σ ( ap ( equivalence-class ∘ R (n +ℕ 2)) @@ -1202,13 +1202,7 @@ module _ ( eq-counting-equivalence-class-R n) ( eq-is-prop is-prop-type-trunc-Prop) ( eq-is-prop is-prop-type-trunc-Prop) ∙ - ( ap - ( _∙ - ( eq-pair-Σ - ( eq-equiv - ( compute-raise-Fin l4 2 ∘e - inv-equiv (that-thing n))) - ( eq-is-prop is-prop-type-trunc-Prop))) + ( right-whisker-identification ( ap ( λ w → eq-pair-Σ (pr1 w) (pr2 w)) { y = @@ -1234,20 +1228,24 @@ module _ ( ap ( map-quotient-delooping-sign (n +ℕ 2)) ( eq-pair-Σ p - ( eq-is-prop is-prop-type-trunc-Prop))))))))) ∙ - ( ap - ( _∙ - ( ap - ( map-quotient-delooping-sign (n +ℕ 2)) - ( eq-pair-Σ p (eq-is-prop is-prop-type-trunc-Prop)) ∙ + ( eq-is-prop is-prop-type-trunc-Prop)))) ( eq-pair-Σ - ( eq-counting-equivalence-class-R n) - ( eq-is-prop is-prop-type-trunc-Prop)))) + ( eq-equiv + ( compute-raise-Fin l4 2 ∘e + inv-equiv (that-thing n))) + ( eq-is-prop is-prop-type-trunc-Prop))))))) ∙ + ( right-whisker-identification ( ap ( eq-pair-Σ (inv (eq-counting-equivalence-class-R n))) ( eq-is-prop (is-trunc-Id (is-prop-type-trunc-Prop _ _))) ∙ ( inv ( distributive-inv-eq-pair-Σ + ( eq-counting-equivalence-class-R n) + ( eq-is-prop is-prop-type-trunc-Prop)))) + ( ( ap + ( map-quotient-delooping-sign (n +ℕ 2)) + ( eq-pair-Σ p (eq-is-prop is-prop-type-trunc-Prop)) ∙ + ( eq-pair-Σ ( eq-counting-equivalence-class-R n) ( eq-is-prop is-prop-type-trunc-Prop)))) ∙ ( inv diff --git a/src/foundation-core/pullbacks.lagda.md b/src/foundation-core/pullbacks.lagda.md index 8477c73acb..0401e6378f 100644 --- a/src/foundation-core/pullbacks.lagda.md +++ b/src/foundation-core/pullbacks.lagda.md @@ -17,6 +17,7 @@ open import foundation.identity-types open import foundation.structure-identity-principle open import foundation.type-arithmetic-dependent-pair-types open import foundation.universe-levels +open import foundation.whiskering-identifications open import foundation-core.cartesian-product-types open import foundation-core.commuting-squares-of-maps @@ -509,9 +510,9 @@ module _ ( inv ( ( ap ( concat' (f a) refl) - ( ( ap - ( _∙ inv (ap pr2 (eq-pair p refl))) - ( ap-pr1-eq-pair p refl)) ∙ + ( ( right-whisker-identification + ( ap-pr1-eq-pair p refl) + ( inv (ap pr2 (eq-pair p refl)))) ∙ ( ap (λ t → p ∙ inv t) (ap-pr2-eq-pair p refl)) ∙ ( right-unit))) ∙ ( right-unit))) diff --git a/src/foundation/commuting-squares-of-maps.lagda.md b/src/foundation/commuting-squares-of-maps.lagda.md index e3bfda18d8..128a00e096 100644 --- a/src/foundation/commuting-squares-of-maps.lagda.md +++ b/src/foundation/commuting-squares-of-maps.lagda.md @@ -24,6 +24,7 @@ open import foundation.precomposition-functions open import foundation.universe-levels open import foundation.whiskering-higher-homotopies open import foundation.whiskering-homotopies +open import foundation.whiskering-identifications open import foundation-core.commuting-prisms-of-maps open import foundation-core.function-extensionality @@ -95,7 +96,7 @@ module _ ( coherence-square-htpy-coherence-triangles-maps refl-htpy H K) ~ ( coherence-square-coherence-triangles-maps diagonal H K) compute-coherence-square-refl-htpy-coherence-triangles-maps diagonal H K x = - ap (_∙ K x) right-unit + right-whisker-identification right-unit (K x) ``` ### Inverting squares horizontally and vertically @@ -380,11 +381,11 @@ module _ ( nat-htpy ( is-retraction-map-inv-equiv right ·r top) ( is-retraction-map-inv-equiv left a)))))) ∙ - ( ap - ( _∙ ap top (is-retraction-map-inv-equiv left a)) + ( right-whisker-identification ( right-inverse-eq-transpose-equiv ( right) - ( H (map-inv-equiv left (map-equiv left a))))))) + ( H (map-inv-equiv left (map-equiv left a)))) + ( ap top (is-retraction-map-inv-equiv left a))))) right-inverse-law-pasting-vertical-coherence-square-maps : ( H : coherence-square-maps top (map-equiv left) (map-equiv right) bottom) → @@ -412,8 +413,8 @@ module _ ( map-equiv right) ( coherence-square-inv-vertical top left right bottom H a)) ( is-section-map-inv-equiv right (bottom a))) ∙ - ( ap - ( H (map-inv-equiv left a) ∙_) + ( left-whisker-identification + ( H (map-inv-equiv left a)) ( triangle-eq-transpose-equiv ( right) ( ( inv (H (map-inv-equiv left a))) ∙ @@ -1037,9 +1038,9 @@ module _ ( K) ( h) = ( compute-concat-htpy-precomp (H ∙h L) K W h) ∙ - ( ap - ( _∙ precomp-coherence-triangle-maps diagonal-right right top K W h) - ( compute-concat-htpy-precomp H L W h)) + ( right-whisker-identification + ( compute-concat-htpy-precomp H L W h) + ( precomp-coherence-triangle-maps diagonal-right right top K W h)) distributive-precomp-coherence-square-left-map-triangle-coherence-triangle-maps' : { diagonal-left diagonal-right : A → Y} → @@ -1075,8 +1076,8 @@ module _ ( K) ( h) = ( compute-concat-htpy-precomp H (L ∙h K) W h) ∙ - ( ap - ( precomp-coherence-triangle-maps' diagonal-left bottom left H W h ∙_) + ( left-whisker-identification + ( precomp-coherence-triangle-maps' diagonal-left bottom left H W h) ( compute-concat-htpy-precomp L K W h)) distributive-precomp-coherence-square-comp-coherence-triangles-maps : diff --git a/src/foundation/commuting-triangles-of-homotopies.lagda.md b/src/foundation/commuting-triangles-of-homotopies.lagda.md index a762019906..ca992c6498 100644 --- a/src/foundation/commuting-triangles-of-homotopies.lagda.md +++ b/src/foundation/commuting-triangles-of-homotopies.lagda.md @@ -10,6 +10,7 @@ module foundation.commuting-triangles-of-homotopies where open import foundation.action-on-identifications-functions open import foundation.commuting-triangles-of-identifications open import foundation.universe-levels +open import foundation.whiskering-identifications open import foundation-core.function-types open import foundation-core.homotopies @@ -84,7 +85,7 @@ module _ (H : h ~ i) (T : coherence-triangle-homotopies left right top) → coherence-triangle-homotopies {h = i} (left ∙h H) (right ∙h H) top left-whisker-htpy-coherence-triangle-homotopies H T = - (λ x → ap (_∙ H x) (T x)) ∙h assoc-htpy top right H + (λ x → right-whisker-identification (T x) (H x)) ∙h assoc-htpy top right H module _ {l1 l2 : Level} {A : UU l1} {B : UU l2} @@ -116,7 +117,8 @@ module _ (T : coherence-triangle-homotopies left right top) (H : i ~ f) → coherence-triangle-homotopies {f = i} (H ∙h left) right (H ∙h top) right-whisker-htpy-coherence-triangle-homotopies T H = - (λ x → ap (H x ∙_) (T x)) ∙h (inv-htpy-assoc-htpy H top right) + ( λ x → left-whisker-identification (H x) (T x)) ∙h + ( inv-htpy-assoc-htpy H top right) module _ {l1 l2 : Level} {A : UU l1} {B : UU l2} diff --git a/src/foundation/path-algebra.lagda.md b/src/foundation/path-algebra.lagda.md index 29ae52a134..929e624d45 100644 --- a/src/foundation/path-algebra.lagda.md +++ b/src/foundation/path-algebra.lagda.md @@ -81,12 +81,13 @@ module _ middle-unit-law-assoc : (p : x = y) (q : y = z) → - assoc p refl q = ap (_∙ q) (right-unit) + assoc p refl q = right-whisker-identification right-unit q middle-unit-law-assoc refl q = refl right-unit-law-assoc : (p : x = y) (q : y = z) → - assoc p q refl = (right-unit ∙ ap (p ∙_) (inv right-unit)) + assoc p q refl = + right-unit ∙ left-whisker-identification p (inv right-unit) right-unit-law-assoc refl refl = refl ``` @@ -110,22 +111,23 @@ module _ unit-law-assoc-101 : (p : x = y) (q : y = z) → - assoc p refl q = ap (_∙ q) (right-unit) + assoc p refl q = right-whisker-identification right-unit q unit-law-assoc-101 refl q = refl unit-law-assoc-101' : (p : x = y) (q : y = z) → - inv (assoc p refl q) = ap (_∙ q) (inv right-unit) + inv (assoc p refl q) = right-whisker-identification (inv right-unit) q unit-law-assoc-101' refl q = refl unit-law-assoc-110 : (p : x = y) (q : y = z) → - (assoc p q refl ∙ ap (p ∙_) right-unit) = right-unit + assoc p q refl ∙ left-whisker-identification p right-unit = right-unit unit-law-assoc-110 refl refl = refl unit-law-assoc-110' : (p : x = y) (q : y = z) → - (inv right-unit ∙ assoc p q refl) = ap (p ∙_) (inv right-unit) + inv right-unit ∙ assoc p q refl = + left-whisker-identification p (inv right-unit) unit-law-assoc-110' refl refl = refl ``` @@ -141,7 +143,7 @@ vertical-concat-Id² α β = α ∙ β horizontal-concat-Id² : {l : Level} {A : UU l} {x y z : A} {p q : x = y} {u v : y = z} → p = q → u = v → (p ∙ u) = (q ∙ v) -horizontal-concat-Id² α β = ap-binary (_∙_) α β +horizontal-concat-Id² α β = ap-binary _∙_ α β ``` ### Both horizontal and vertical concatenation of 2-paths are binary equivalences @@ -176,13 +178,13 @@ left-unit-law-horizontal-concat-Id² : {l : Level} {A : UU l} {x y z : A} {p : x = y} {u v : y = z} (γ : u = v) → horizontal-concat-Id² (refl {x = p}) γ = left-whisker-identification p γ -left-unit-law-horizontal-concat-Id² = left-unit-ap-binary (_∙_) +left-unit-law-horizontal-concat-Id² = left-unit-ap-binary _∙_ right-unit-law-horizontal-concat-Id² : {l : Level} {A : UU l} {x y z : A} {p q : x = y} (α : p = q) {u : y = z} → horizontal-concat-Id² α (refl {x = u}) = right-whisker-identification α u -right-unit-law-horizontal-concat-Id² = right-unit-ap-binary (_∙_) +right-unit-law-horizontal-concat-Id² = right-unit-ap-binary _∙_ ``` Horizontal concatination satisfies an additional "2-dimensional" unit law (on @@ -247,7 +249,7 @@ module _ ( ( ( horizontal-concat-Id² refl (inv (ap-const refl α))) ∙ ( nat-htpy right-inv α)) ∙ ( horizontal-concat-Id² - ( ap-binary-comp-diagonal (_∙_) id inv α) + ( ap-binary-comp-diagonal _∙_ id inv α) ( refl))) ∙ ( ap ( λ t → horizontal-concat-Id² t (horizontal-inv-Id² α) ∙ right-inv p') @@ -263,7 +265,7 @@ module _ ( ( ( horizontal-concat-Id² refl (inv (ap-const refl α))) ∙ ( nat-htpy left-inv α)) ∙ ( horizontal-concat-Id² - ( ap-binary-comp-diagonal (_∙_) inv id α) + ( ap-binary-comp-diagonal _∙_ inv id α) ( refl))) ∙ ( ap ( λ t → (horizontal-concat-Id² (horizontal-inv-Id² α) t) ∙ left-inv p') @@ -493,16 +495,16 @@ module _ p000̂ p00̂0 p0̂00 p00̂1 p0̂01 p010̂ p0̂10 p100̂ p10̂0 p0̂11 p10̂1 p110̂ p00̂0̂ p0̂00̂ p0̂0̂0 p0̂0̂1 p0̂10̂ p10̂0̂ = Id - ( ( ap (concat' x000 p0̂11) p00̂0̂) ∙ + ( ( right-whisker-identification p00̂0̂ p0̂11) ∙ ( ( assoc p00̂0 p010̂ p0̂11) ∙ - ( ( ap (concat p00̂0 x111) p0̂10̂) ∙ + ( ( left-whisker-identification p00̂0 p0̂10̂) ∙ ( ( inv (assoc p00̂0 p0̂10 p110̂)) ∙ - ( ( ap (concat' x000 p110̂) p0̂0̂0) ∙ + ( ( right-whisker-identification p0̂0̂0 p110̂) ∙ ( assoc p0̂00 p10̂0 p110̂)))))) ( ( assoc p000̂ p00̂1 p0̂11) ∙ - ( ( ap (concat p000̂ x111) p0̂0̂1) ∙ + ( ( left-whisker-identification p000̂ p0̂0̂1) ∙ ( ( inv (assoc p000̂ p0̂01 p10̂1)) ∙ - ( ( ap (concat' x000 p10̂1) p0̂00̂) ∙ + ( ( right-whisker-identification p0̂00̂ p10̂1) ∙ ( ( assoc p0̂00 p100̂ p10̂1) ∙ - ( ( ap (concat p0̂00 x111) p10̂0̂))))))) + ( ( left-whisker-identification p0̂00 p10̂0̂))))))) ``` diff --git a/src/foundation/pullbacks.lagda.md b/src/foundation/pullbacks.lagda.md index 59e31653bc..c429ba2ebc 100644 --- a/src/foundation/pullbacks.lagda.md +++ b/src/foundation/pullbacks.lagda.md @@ -27,6 +27,7 @@ open import foundation.identity-types open import foundation.multivariable-homotopies open import foundation.unit-type open import foundation.universe-levels +open import foundation.whiskering-identifications open import foundation-core.cartesian-product-types open import foundation-core.constant-maps @@ -416,9 +417,9 @@ module _ ( ap-concat-htpy' H' inv-htpy-right-unit-htpy)) ( is-equiv-concat-htpy' ( H ∙h (g ·l L)) - ( λ x → ap (_∙ H' x) (inv right-unit))) + ( λ x → right-whisker-identification (inv right-unit) (H' x))) ( is-equiv-concat-htpy - ( λ x → ap (H x ∙_) right-unit) + ( λ x → left-whisker-identification (H x) right-unit) ( (f ·l K) ∙h refl-htpy ∙h H')))) abstract @@ -1080,12 +1081,12 @@ module _ pr1 (cone-ap c1 c2) = ap (vertical-map-cone f g c) pr1 (pr2 (cone-ap c1 c2)) = ap (horizontal-map-cone f g c) pr2 (pr2 (cone-ap c1 c2)) γ = - ( ap - ( _∙ coherence-square-cone f g c c2) - ( inv (ap-comp f (vertical-map-cone f g c) γ))) ∙ + ( right-whisker-identification + ( inv (ap-comp f (vertical-map-cone f g c) γ)) + ( coherence-square-cone f g c c2)) ∙ ( ( inv-nat-htpy (coherence-square-cone f g c) γ) ∙ - ( ap - ( coherence-square-cone f g c c1 ∙_) + ( left-whisker-identification + ( coherence-square-cone f g c c1) ( ap-comp g (horizontal-map-cone f g c) γ))) cone-ap' : @@ -1105,12 +1106,12 @@ module _ ( tr-Id-right ( coherence-square-cone f g c c2) ( ap f (ap (vertical-map-cone f g c) γ))) ∙ - ( ( ap - ( _∙ coherence-square-cone f g c c2) - ( inv (ap-comp f (vertical-map-cone f g c) γ))) ∙ + ( ( right-whisker-identification + ( inv (ap-comp f (vertical-map-cone f g c) γ)) + ( coherence-square-cone f g c c2)) ∙ ( ( inv-nat-htpy (coherence-square-cone f g c) γ) ∙ - ( ap - ( coherence-square-cone f g c c1 ∙_) + ( left-whisker-identification + ( coherence-square-cone f g c c1) ( ap-comp g (horizontal-map-cone f g c) γ)))) is-pullback-cone-ap : diff --git a/src/orthogonal-factorization-systems/functoriality-higher-modalities.lagda.md b/src/orthogonal-factorization-systems/functoriality-higher-modalities.lagda.md index 93863bc8ea..809cfe5f1c 100644 --- a/src/orthogonal-factorization-systems/functoriality-higher-modalities.lagda.md +++ b/src/orthogonal-factorization-systems/functoriality-higher-modalities.lagda.md @@ -18,6 +18,7 @@ open import foundation.small-types open import foundation.transport-along-identifications open import foundation.univalence open import foundation.universe-levels +open import foundation.whiskering-identifications open import orthogonal-factorization-systems.higher-modalities open import orthogonal-factorization-systems.modal-induction @@ -145,14 +146,13 @@ module _ ( naturality-unit-higher-modality m f x)) ∙ ( naturality-unit-higher-modality m g (f x))) compute-naturality-unit-ind-modality g f x = - ( ap - ( _∙ - compute-rec-higher-modality m (unit-higher-modality m ∘ (g ∘ f)) x) + ( right-whisker-identification ( compute-ind-subuniverse-Id-higher-modality m ( ap-map-higher-modality m g ∘ ap-map-higher-modality m f) ( ap-map-higher-modality m (g ∘ f)) ( _) - ( x))) ∙ + ( x)) + ( compute-rec-higher-modality m (unit-higher-modality m ∘ (g ∘ f)) x)) ∙ ( assoc ( ap ( ap-map-higher-modality m g) @@ -161,10 +161,10 @@ module _ ( inv ( compute-rec-higher-modality m (unit-higher-modality m ∘ g ∘ f) x))) ( compute-rec-higher-modality m (unit-higher-modality m ∘ g ∘ f) x)) ∙ - ( ap + ( left-whisker-identification ( ap ( ap-map-higher-modality m g) - ( compute-rec-higher-modality m (unit-higher-modality m ∘ f) x) ∙_) + ( compute-rec-higher-modality m (unit-higher-modality m ∘ f) x)) ( is-section-inv-concat' _ ( compute-rec-higher-modality m (unit-higher-modality m ∘ g ∘ f) x) ( compute-rec-higher-modality m (unit-higher-modality m ∘ g) (f x)))) diff --git a/src/orthogonal-factorization-systems/lifting-squares.lagda.md b/src/orthogonal-factorization-systems/lifting-squares.lagda.md index aba39b7c20..dc55b122c4 100644 --- a/src/orthogonal-factorization-systems/lifting-squares.lagda.md +++ b/src/orthogonal-factorization-systems/lifting-squares.lagda.md @@ -184,10 +184,9 @@ module _ pr1 (pr2 (pr2 (refl-htpy-lifting-square l))) = inv-htpy-right-unit-htpy pr2 (pr2 (pr2 (refl-htpy-lifting-square l))) x = ( inv (assoc (inv right-unit) (β) (α))) ∙ - ( ( ap - ( _∙ α) - ( ( ap - ( inv right-unit ∙_) + ( ( right-whisker-identification + ( ( left-whisker-identification + ( inv right-unit) ( ( right-transpose-eq-concat _ _ _ ( inv ( compute-refl-right-whisker-identification @@ -199,36 +198,39 @@ module _ ( is-retraction-inv-concat ( right-unit) ( _) - ( coherence-lifting-square l x ∙ inv right-unit)))) ∙ + ( coherence-lifting-square l x ∙ inv right-unit))) + ( α)) ∙ ( ( assoc (coherence-lifting-square l x) (inv right-unit) (α)) ∙ - ( ( ap - ( coherence-lifting-square l x ∙_) - ( ( ap - ( inv right-unit ∙_) + ( ( left-whisker-identification + ( coherence-lifting-square l x) + ( ( left-whisker-identification + ( inv right-unit) ( right-unit-law-assoc ( H x) ( ap g (is-extension-lifting-square l x)))) ∙ ( ( is-retraction-inv-concat ( right-unit) ( _) - ( ap (H x ∙_) (inv right-unit))) ∙ + ( left-whisker-identification (H x) (inv right-unit))) ∙ ( inv ( is-section-inv-concat' _ α - ( ap (H x ∙_) (inv right-unit))))))) ∙ + ( left-whisker-identification (H x) (inv right-unit))))))) ∙ ( ( inv ( assoc ( coherence-lifting-square l x) - ( ap (H x ∙_) (inv right-unit) ∙ inv α) + ( left-whisker-identification (H x) (inv right-unit) ∙ inv α) ( α))) ∙ ( ap ( λ r → - ( coherence-lifting-square l x ∙ (ap (H x ∙_) r ∙ inv α)) ∙ α) + ( ( coherence-lifting-square l x) ∙ + ( left-whisker-identification (H x) r ∙ inv α)) ∙ + ( α)) ( compute-refl-right-map-coherence-triangle-identifications ( g) ( is-extension-lifting-square l x))))))) where α = assoc (H x) (ap g (is-extension-lifting-square l x)) refl - β = ap (_∙ refl) (coherence-lifting-square l x) + β = right-whisker-identification (coherence-lifting-square l x) refl htpy-eq-lifting-square : (l l' : lifting-square h f g i H) → l = l' → htpy-lifting-square l l' diff --git a/src/structured-types/morphisms-h-spaces.lagda.md b/src/structured-types/morphisms-h-spaces.lagda.md index bb1e60deef..7f6bf64dbb 100644 --- a/src/structured-types/morphisms-h-spaces.lagda.md +++ b/src/structured-types/morphisms-h-spaces.lagda.md @@ -16,6 +16,7 @@ open import foundation.homotopies open import foundation.identity-types open import foundation.path-algebra open import foundation.universe-levels +open import foundation.whiskering-identifications open import group-theory.homomorphisms-semigroups @@ -114,19 +115,19 @@ preserves-coh-unit-laws-mul' M N f μf lf rf = { A = Id (ap (pr1 f) (lM eM) ∙ ef) ((μf ∙ ap-binary μN ef ef) ∙ rN eN)} ( ( horizontal-concat-Id² (lf eM) (inv (ap-id ef))) ∙ - ( ( ap - ( _∙ (ap id ef)) + ( ( right-whisker-identification ( inv ( assoc ( μf) ( ap (mul-H-Space' N (pr1 f eM)) ef) - ( lN (pr1 f eM))))) ∙ + ( lN (pr1 f eM)))) + ( ap id ef)) ∙ ( ( assoc ( μf ∙ ap (mul-H-Space' N (pr1 f eM)) ef) ( lN (pr1 f eM)) ( ap id ef)) ∙ - ( ( ap - ( ( μf ∙ ap (mul-H-Space' N (pr1 f eM)) ef) ∙_) + ( ( left-whisker-identification + ( μf ∙ ap (mul-H-Space' N (pr1 f eM)) ef) ( nat-htpy lN ef)) ∙ ( ( inv ( assoc @@ -140,23 +141,23 @@ preserves-coh-unit-laws-mul' M N f μf lf rf = ( ap (mul-H-Space' N (pr1 f eM)) ef) ( ap (μN eN) ef))) ∙ ( horizontal-concat-Id² - ( ap - ( μf ∙_) + ( left-whisker-identification + ( μf) ( inv (triangle-ap-binary μN ef ef))) ( cN)))))))) - ( ( ap (_∙ ef) (ap² (pr1 f) cM)) ∙ + ( ( right-whisker-identification (ap² (pr1 f) cM) ef) ∙ ( ( horizontal-concat-Id² (rf eM) (inv (ap-id ef))) ∙ - ( ( ap - ( _∙ ap id ef) + ( ( right-whisker-identification ( inv ( assoc - ( μf) (ap (μN (pr1 f eM)) ef) (rN (pr1 f eM))))) ∙ + ( μf) (ap (μN (pr1 f eM)) ef) (rN (pr1 f eM)))) + ( ap id ef)) ∙ ( ( assoc ( μf ∙ ap (μN (pr1 f eM)) ef) ( rN (pr1 f eM)) ( ap id ef)) ∙ - ( ( ap - ( ( μf ∙ ap (μN (pr1 f eM)) ef) ∙_) + ( ( left-whisker-identification + ( μf ∙ ap (μN (pr1 f eM)) ef) ( nat-htpy rN ef)) ∙ ( ( inv ( assoc @@ -169,8 +170,8 @@ preserves-coh-unit-laws-mul' M N f μf lf rf = ( μf) ( ap (μN (pr1 f eM)) ef) ( ap (mul-H-Space' N eN) ef)) ∙ - ( ap - ( μf ∙_) + ( left-whisker-identification + ( μf) ( inv (triangle-ap-binary' μN ef ef))))))))))) where eM = unit-H-Space M diff --git a/src/synthetic-homotopy-theory/dependent-coforks.lagda.md b/src/synthetic-homotopy-theory/dependent-coforks.lagda.md index b967f286f3..90eae5b067 100644 --- a/src/synthetic-homotopy-theory/dependent-coforks.lagda.md +++ b/src/synthetic-homotopy-theory/dependent-coforks.lagda.md @@ -26,6 +26,7 @@ open import foundation.structure-identity-principle open import foundation.torsorial-type-families open import foundation.transport-along-identifications open import foundation.universe-levels +open import foundation.whiskering-identifications open import synthetic-homotopy-theory.coforks open import synthetic-homotopy-theory.dependent-cocones-under-spans @@ -341,15 +342,7 @@ module _ ( λ where ( inl a) → inv - ( ( ap - ( _∙ - coherence-square-dependent-cocone - ( vertical-map-span-cocone-cofork f g) - ( horizontal-map-span-cocone-cofork f g) - ( cocone-codiagonal-cofork f g e) - ( P) - ( d) - ( inl a)) + ( ( right-whisker-identification ( ap-id ( inv ( coherence-square-dependent-cocone @@ -358,7 +351,14 @@ module _ ( cocone-codiagonal-cofork f g e) ( P) ( d) - ( inl a))))) ∙ + ( inl a)))) + ( coherence-square-dependent-cocone + ( vertical-map-span-cocone-cofork f g) + ( horizontal-map-span-cocone-cofork f g) + ( cocone-codiagonal-cofork f g e) + ( P) + ( d) + ( inl a))) ∙ ( left-inv ( coherence-square-dependent-cocone ( vertical-map-span-cocone-cofork f g) @@ -368,15 +368,7 @@ module _ ( d) ( inl a)))) ( inr a) → - ap - ( _∙ - coherence-square-dependent-cocone - ( vertical-map-span-cocone-cofork f g) - ( horizontal-map-span-cocone-cofork f g) - ( cocone-codiagonal-cofork f g e) - ( P) - ( d) - ( inr a)) + right-whisker-identification ( inv ( ap-inv ( tr P (coherence-cofork f g e a)) @@ -386,7 +378,14 @@ module _ ( cocone-codiagonal-cofork f g e) ( P) ( d) - ( inl a))))))) + ( inl a)))) + ( coherence-square-dependent-cocone + ( vertical-map-span-cocone-cofork f g) + ( horizontal-map-span-cocone-cofork f g) + ( cocone-codiagonal-cofork f g e) + ( P) + ( d) + ( inr a))))) is-equiv-dependent-cofork-dependent-cocone-codiagonal : is-equiv dependent-cofork-dependent-cocone-codiagonal From eaf7af344081a38648a67327b39246fbc2a2ab82 Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Wed, 31 Jan 2024 01:15:36 +0100 Subject: [PATCH 048/150] formatting --- .../delooping-sign-homomorphism.lagda.md | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/src/finite-group-theory/delooping-sign-homomorphism.lagda.md b/src/finite-group-theory/delooping-sign-homomorphism.lagda.md index 14b41430b4..de852ee6e7 100644 --- a/src/finite-group-theory/delooping-sign-homomorphism.lagda.md +++ b/src/finite-group-theory/delooping-sign-homomorphism.lagda.md @@ -1129,13 +1129,13 @@ module _ ( commutativity-inv-eq-equiv ( compute-raise-Fin l4 2 ∘e inv-equiv (that-thing n)))) - ( ( eq-equiv - ( equiv-eq - ( inv - ( ap - ( equivalence-class ∘ R (n +ℕ 2)) - ( eq-pair-Σ p - ( eq-is-prop is-prop-type-trunc-Prop))))))) ∙ + ( eq-equiv + ( equiv-eq + ( inv + ( ap + ( equivalence-class ∘ R (n +ℕ 2)) + ( eq-pair-Σ p + ( eq-is-prop is-prop-type-trunc-Prop)))))) ∙ ( ap ( λ e → inv (eq-counting-equivalence-class-R n) ∙ @@ -1244,10 +1244,10 @@ module _ ( eq-is-prop is-prop-type-trunc-Prop)))) ( ( ap ( map-quotient-delooping-sign (n +ℕ 2)) - ( eq-pair-Σ p (eq-is-prop is-prop-type-trunc-Prop)) ∙ - ( eq-pair-Σ - ( eq-counting-equivalence-class-R n) - ( eq-is-prop is-prop-type-trunc-Prop)))) ∙ + ( eq-pair-Σ p (eq-is-prop is-prop-type-trunc-Prop))) ∙ + ( eq-pair-Σ + ( eq-counting-equivalence-class-R n) + ( eq-is-prop is-prop-type-trunc-Prop))) ∙ ( inv ( eq-tr-type-Ω ( eq-pair-Σ From edc4c3ac4e12448c25800915c8c9c5982357f119 Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Wed, 31 Jan 2024 01:23:18 +0100 Subject: [PATCH 049/150] fix import --- src/univalent-combinatorics/standard-finite-types.lagda.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/univalent-combinatorics/standard-finite-types.lagda.md b/src/univalent-combinatorics/standard-finite-types.lagda.md index 9103b85ba3..e3e433ee7a 100644 --- a/src/univalent-combinatorics/standard-finite-types.lagda.md +++ b/src/univalent-combinatorics/standard-finite-types.lagda.md @@ -12,6 +12,7 @@ open import elementary-number-theory.inequality-natural-numbers open import elementary-number-theory.natural-numbers open import elementary-number-theory.strict-inequality-natural-numbers +open import foundation.action-on-higher-identifications-functions open import foundation.action-on-identifications-functions open import foundation.contractible-types open import foundation.coproduct-types @@ -30,7 +31,6 @@ open import foundation.injective-maps open import foundation.negated-equality open import foundation.negation open import foundation.noncontractible-types -open import foundation.path-algebra open import foundation.preunivalent-type-families open import foundation.raising-universe-levels open import foundation.retractions From 1e9de32ec5d3d975c51eaf3a5afa655da335c24f Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Wed, 31 Jan 2024 11:18:17 +0100 Subject: [PATCH 050/150] setup for whiskering of commuting squares of identifications --- .../coherently-invertible-maps.lagda.md | 2 +- ...muting-squares-of-identifications.lagda.md | 258 +++++++++++++++++- ...muting-squares-of-identifications.lagda.md | 66 ----- .../commuting-squares-of-maps.lagda.md | 4 +- ...ting-triangles-of-identifications.lagda.md | 2 +- .../functoriality-suspensions.lagda.md | 4 +- 6 files changed, 256 insertions(+), 80 deletions(-) diff --git a/src/foundation-core/coherently-invertible-maps.lagda.md b/src/foundation-core/coherently-invertible-maps.lagda.md index a09054618e..56b9b45089 100644 --- a/src/foundation-core/coherently-invertible-maps.lagda.md +++ b/src/foundation-core/coherently-invertible-maps.lagda.md @@ -139,7 +139,7 @@ module _ ( ( ap f ( is-section-is-invertible H (map-inv-is-invertible H (f x)))) ∙ ( is-retraction-is-invertible H (f x))) - ( top-concat-identification-coherence-square-identification + ( top-concat-identification-coherence-square-identifications ( ap ( f ∘ (map-inv-is-invertible H ∘ f)) ( is-section-is-invertible H x)) diff --git a/src/foundation-core/commuting-squares-of-identifications.lagda.md b/src/foundation-core/commuting-squares-of-identifications.lagda.md index e9aea44f1d..a9d4fffdd2 100644 --- a/src/foundation-core/commuting-squares-of-identifications.lagda.md +++ b/src/foundation-core/commuting-squares-of-identifications.lagda.md @@ -251,27 +251,269 @@ module _ (top : x = y) (left : x = z) (right : y = w) (bottom : z = w) where - left-concat-identification-coherence-square-identification : + left-concat-identification-coherence-square-identifications : {left' : x = z} (s : left = left') → coherence-square-identifications top left right bottom → coherence-square-identifications top left' right bottom - left-concat-identification-coherence-square-identification refl sq = sq + left-concat-identification-coherence-square-identifications refl sq = sq - bottom-concat-identification-coherence-square-identification : + bottom-concat-identification-coherence-square-identifications : {bottom' : z = w} (s : bottom = bottom') → coherence-square-identifications top left right bottom → coherence-square-identifications top left right bottom' - bottom-concat-identification-coherence-square-identification refl sq = sq + bottom-concat-identification-coherence-square-identifications refl sq = sq - top-concat-identification-coherence-square-identification : + top-concat-identification-coherence-square-identifications : {top' : x = y} (s : top = top') → coherence-square-identifications top left right bottom → coherence-square-identifications top' left right bottom - top-concat-identification-coherence-square-identification refl sq = sq + top-concat-identification-coherence-square-identifications refl sq = sq - right-concat-identification-coherence-square-identification : + right-concat-identification-coherence-square-identifications : {right' : y = w} (s : right = right') → coherence-square-identifications top left right bottom → coherence-square-identifications top left right' bottom - right-concat-identification-coherence-square-identification refl sq = sq + right-concat-identification-coherence-square-identifications refl sq = sq +``` + +### Whiskering squares of identifications + +Given a commuting square of identifications + +```text + top + x -------> y + | | + left | | right + ∨ ∨ + z -------> w, + bottom +``` + +we may consider four ways of attaching new identifications to it: + +1. Prepending `p : u = x` to the left gives us a commuting square + + ```text + p ∙ top + u -------> y + | | + p ∙ left | | right + ∨ ∨ + z -------> w. + bottom + ``` + + More precisely, we have an equivalence + + ```text + (left ∙ bottom = top ∙ right) ≃ ((p ∙ left) ∙ bottom = (p ∙ top) ∙ right). + ``` + +2. Appending an identification `p : w = u` to the right gives a commuting + square of identifications + + ```text + top + x ------------> y + | | + left | | right ∙ p + ∨ ∨ + z ------------> u. + bottom ∙ p + ``` + + More precisely, we have an equivalence + + ```text + (left ∙ bottom = top ∙ right) ≃ (left ∙ (bottom ∙ p) = top ∙ (right ∙ p)). + ``` + +3. Splicing an identification `p : z = u` and its inverse into the middle gives + a commuting square of identifications + + ```text + top + x --------------> y + | | + left ∙ p | | right + ∨ ∨ + u --------------> w. + p⁻¹ ∙ bottom + ``` + + More precisely, we have an equivalence + + ```text + (left ∙ bottom = top ∙ right) ≃ ((left ∙ p) ∙ (p⁻¹ ∙ bottom) = top ∙ right). + ``` + + Similarly, we have an equivalence + + ```text + (left ∙ bottom = top ∙ right) ≃ ((left ∙ p⁻¹) ∙ (p ∙ bottom) = top ∙ right). + ``` + +4. Splicing an identification `p : y = u` and its inverse into the middle gives + a commuting square of identifications + + ```text + top ∙ p + x --------> u + | | + left | | p⁻¹ ∙ right + ∨ ∨ + z --------> w. + bottom + ``` + + More precisely, we have an equivalence + + ```text + (left ∙ bottom = top ∙ right) ≃ (left ∙ bottom = (top ∙ p) ∙ (p⁻¹ ∙ right)). + ``` + + Similarly, we have an equivalence + + ```text + (left ∙ bottom = top ∙ right) ≃ (left ∙ bottom = (top ∙ p⁻¹) ∙ (p ∙ right)). + ``` + +These operations are useful in proofs involving path algebra, because taking +`equiv-right-whisker-square-identicications` as an example, it provides us with +two maps: the forward direction states +`(p ∙ r = q ∙ s) → (p ∙ (r ∙ t)) = q ∙ (s ∙ t))`, which allows one to append +an identification without needing to reassociate on the right, and the backwards +direction conversely allows one to cancel out an identification in parentheses. + +#### Left whiskering coherences of commuting squares of identifications + +For any identification `p : u = x` we obtain an equivalence + +```text + top p ∙ top + x -------> y u -------> y + | | | | + left | | right ≃ p ∙ left | | right + ∨ ∨ ∨ ∨ + z -------> w z -------> w + bottom bottom + +``` + +of coherences of commuting squares of identifications. + +#### Right whiskering coherences of commuting squares of identifications + +For any identification `p : w = u` we obtain an equivalence + +```text + top top + x -------> y x ------------> y + | | | | + left | | right ≃ left | | right ∙ p + ∨ ∨ ∨ ∨ + z -------> w z ------------> w + bottom bottom ∙ p + +``` + +of coherences of commuting squares of identifications. + +#### Left splicing coherences of commuting squares of identifications + +For inverse pair of identifications `p : y = u` and `q : u = y` equipped with +`α : inv p = q` we obtain an equivalence + +```text + top top + x -------> y x -----------> y + | | | | + left | | right ≃ left ∙ p | | right + ∨ ∨ ∨ ∨ + z -------> w u -----------> w + bottom q ∙ bottom + +``` + +of coherences of commuting squares of identifications. + +#### Right splicing coherences of commuting squares of identifications + +For inverse pair of identifications `p : y = u` and `q : u = y` equipped with +`α : inv p = q` we obtain an equivalence + +```text + top top ∙ p + x -------> y x --------> u + | | | | + left | | right ≃ left | | q ∙ right + ∨ ∨ ∨ ∨ + z -------> w z --------> w + bottom bottom + +``` + +of coherences of commuting squares of identifications. + +```agda +module _ + {l : Level} {A : UU l} {x y z w : A} +-- (left : x = z) (bottom : z = w) (top : x = y) (right : y = w) + (top : x = y) (left : x = z) (right : y = w) (bottom : z = w) + where + + coherence-square-identifications-top-left-whisker' : + {x' : A} (p : x' = x) → + coherence-square-identifications top left right bottom → + coherence-square-identifications (p ∙ top) (p ∙ left) right bottom + coherence-square-identifications-top-left-whisker' refl sq = sq + + coherence-square-identifications-top-left-whisker : + {x' : A} (p : x = x') → + coherence-square-identifications top left right bottom → + coherence-square-identifications (inv p ∙ top) (inv p ∙ left) right bottom + coherence-square-identifications-top-left-whisker refl sq = sq + + coherence-square-identifications-top-right-whisker : + {y' : A} (p : y = y') → + coherence-square-identifications top left right bottom → + coherence-square-identifications (top ∙ p) left (inv p ∙ right) bottom + coherence-square-identifications-top-right-whisker refl = + top-concat-identification-coherence-square-identifications + ( top) + ( left) + ( right) + ( bottom) + ( inv right-unit) + + coherence-square-identifications-bottom-left-whisker : + {z' : A} (p : z = z') → + coherence-square-identifications top left right bottom → + coherence-square-identifications top (left ∙ p) right (inv p ∙ bottom) + coherence-square-identifications-bottom-left-whisker refl = + left-concat-identification-coherence-square-identifications + ( top) + ( left) + ( right) + ( bottom) + ( inv right-unit) + + coherence-square-identifications-bottom-right-whisker : + {w' : A} (p : w = w') → + coherence-square-identifications top left right bottom → + coherence-square-identifications top left (right ∙ p) (bottom ∙ p) + coherence-square-identifications-bottom-right-whisker refl = + ( bottom-concat-identification-coherence-square-identifications + ( top) + ( left) + ( right ∙ refl) + ( bottom) + ( inv right-unit)) ∘ + ( right-concat-identification-coherence-square-identifications + ( top) + ( left) + ( right) + ( bottom) + ( inv right-unit)) ``` diff --git a/src/foundation/commuting-squares-of-identifications.lagda.md b/src/foundation/commuting-squares-of-identifications.lagda.md index 3839aeb76f..6389cb0571 100644 --- a/src/foundation/commuting-squares-of-identifications.lagda.md +++ b/src/foundation/commuting-squares-of-identifications.lagda.md @@ -109,72 +109,6 @@ module _ ( assoc top top-right bottom-right)))) ``` -### Whiskering squares of identifications - -Given an identification at one the vertices of a coherence square, then we may -whisker the square by that identification. - -```agda -module _ - {l : Level} {A : UU l} {x y z w : A} - (left : x = z) (bottom : z = w) (top : x = y) (right : y = w) - where - - coherence-square-identifications-top-left-whisker' : - {x' : A} (p : x' = x) → - coherence-square-identifications top left right bottom → - coherence-square-identifications (p ∙ top) (p ∙ left) right bottom - coherence-square-identifications-top-left-whisker' refl sq = sq - - coherence-square-identifications-top-left-whisker : - {x' : A} (p : x = x') → - coherence-square-identifications top left right bottom → - coherence-square-identifications (inv p ∙ top) (inv p ∙ left) right bottom - coherence-square-identifications-top-left-whisker refl sq = sq - - coherence-square-identifications-top-right-whisker : - {y' : A} (p : y = y') → - coherence-square-identifications top left right bottom → - coherence-square-identifications (top ∙ p) left (inv p ∙ right) bottom - coherence-square-identifications-top-right-whisker refl = - top-concat-identification-coherence-square-identification - ( top) - ( left) - ( right) - ( bottom) - ( inv right-unit) - - coherence-square-identifications-bottom-left-whisker : - {z' : A} (p : z = z') → - coherence-square-identifications top left right bottom → - coherence-square-identifications top (left ∙ p) right (inv p ∙ bottom) - coherence-square-identifications-bottom-left-whisker refl = - left-concat-identification-coherence-square-identification - ( top) - ( left) - ( right) - ( bottom) - ( inv right-unit) - - coherence-square-identifications-bottom-right-whisker : - {w' : A} (p : w = w') → - coherence-square-identifications top left right bottom → - coherence-square-identifications top left (right ∙ p) (bottom ∙ p) - coherence-square-identifications-bottom-right-whisker refl = - ( bottom-concat-identification-coherence-square-identification - ( top) - ( left) - ( right ∙ refl) - ( bottom) - ( inv right-unit)) ∘ - ( right-concat-identification-coherence-square-identification - ( top) - ( left) - ( right) - ( bottom) - ( inv right-unit)) -``` - ## Properties ### Unit law for horizontal pasting of identifications diff --git a/src/foundation/commuting-squares-of-maps.lagda.md b/src/foundation/commuting-squares-of-maps.lagda.md index 128a00e096..b7a0824da4 100644 --- a/src/foundation/commuting-squares-of-maps.lagda.md +++ b/src/foundation/commuting-squares-of-maps.lagda.md @@ -342,7 +342,7 @@ module _ ( top (map-inv-equiv left (map-equiv left a)))) ( is-retraction-map-inv-equiv right (top a)) ( ap top (is-retraction-map-inv-equiv left a)) - ( top-concat-identification-coherence-square-identification + ( top-concat-identification-coherence-square-identifications ( _) ( ap ( map-inv-equiv right) @@ -372,7 +372,7 @@ module _ ( map-equiv right ∘ top) ( is-retraction-map-inv-equiv left a)) ( nat-htpy H (is-retraction-map-inv-equiv left a)))) - ( top-concat-identification-coherence-square-identification _ _ _ + ( top-concat-identification-coherence-square-identifications _ _ _ ( ap top (is-retraction-map-inv-equiv left a)) ( ap-comp ( map-inv-equiv right) diff --git a/src/foundation/commuting-triangles-of-identifications.lagda.md b/src/foundation/commuting-triangles-of-identifications.lagda.md index ca0c2482fd..892b3d4886 100644 --- a/src/foundation/commuting-triangles-of-identifications.lagda.md +++ b/src/foundation/commuting-triangles-of-identifications.lagda.md @@ -66,7 +66,7 @@ Given a commuting triangle of identifications \ / left \ / right ∨ ∨ - z , + z, ``` we may consider three ways of attaching new identifications to it: diff --git a/src/synthetic-homotopy-theory/functoriality-suspensions.lagda.md b/src/synthetic-homotopy-theory/functoriality-suspensions.lagda.md index 8a418d1346..a83e79c024 100644 --- a/src/synthetic-homotopy-theory/functoriality-suspensions.lagda.md +++ b/src/synthetic-homotopy-theory/functoriality-suspensions.lagda.md @@ -90,7 +90,7 @@ module _ pr1 (pr2 htpy-function-out-of-suspension-id-map-suspension) = compute-south-map-suspension id pr2 (pr2 htpy-function-out-of-suspension-id-map-suspension) a = - right-concat-identification-coherence-square-identification + right-concat-identification-coherence-square-identifications ( compute-north-map-suspension id) ( ap (map-suspension id) (meridian-suspension a)) ( meridian-suspension a) @@ -144,7 +144,7 @@ module _ ( ap (map-suspension (g ∘ f)) (meridian-suspension a)) ( _) ( _) - ( left-concat-identification-coherence-square-identification + ( left-concat-identification-coherence-square-identifications ( ap (map-suspension g) (compute-north-map-suspension f)) ( ap (map-suspension g) (ap (map-suspension f) (meridian-suspension a))) ( ap (map-suspension g) (meridian-suspension (f a))) From fa5aba5735d3964fe9a099d6b539d69c4dcc519b Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Wed, 31 Jan 2024 11:19:19 +0100 Subject: [PATCH 051/150] make pre-commit --- .../commuting-squares-of-identifications.lagda.md | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/foundation-core/commuting-squares-of-identifications.lagda.md b/src/foundation-core/commuting-squares-of-identifications.lagda.md index a9d4fffdd2..716712fa72 100644 --- a/src/foundation-core/commuting-squares-of-identifications.lagda.md +++ b/src/foundation-core/commuting-squares-of-identifications.lagda.md @@ -398,7 +398,6 @@ For any identification `p : u = x` we obtain an equivalence ∨ ∨ ∨ ∨ z -------> w z -------> w bottom bottom - ``` of coherences of commuting squares of identifications. @@ -415,7 +414,6 @@ For any identification `p : w = u` we obtain an equivalence ∨ ∨ ∨ ∨ z -------> w z ------------> w bottom bottom ∙ p - ``` of coherences of commuting squares of identifications. @@ -433,7 +431,6 @@ For inverse pair of identifications `p : y = u` and `q : u = y` equipped wit ∨ ∨ ∨ ∨ z -------> w u -----------> w bottom q ∙ bottom - ``` of coherences of commuting squares of identifications. @@ -451,7 +448,6 @@ For inverse pair of identifications `p : y = u` and `q : u = y` equipped wit ∨ ∨ ∨ ∨ z -------> w z --------> w bottom bottom - ``` of coherences of commuting squares of identifications. From 110c1111fdd35e16119d164810b84704557fa62d Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Wed, 31 Jan 2024 11:34:20 +0100 Subject: [PATCH 052/150] edits --- ...muting-squares-of-identifications.lagda.md | 110 +++++++++++------- 1 file changed, 65 insertions(+), 45 deletions(-) diff --git a/src/foundation-core/commuting-squares-of-identifications.lagda.md b/src/foundation-core/commuting-squares-of-identifications.lagda.md index 716712fa72..37f5643ef3 100644 --- a/src/foundation-core/commuting-squares-of-identifications.lagda.md +++ b/src/foundation-core/commuting-squares-of-identifications.lagda.md @@ -276,7 +276,7 @@ module _ right-concat-identification-coherence-square-identifications refl sq = sq ``` -### Whiskering squares of identifications +### Whiskering and splicing coherences of commuting squares of identifications Given a commuting square of identifications @@ -402,6 +402,25 @@ For any identification `p : u = x` we obtain an equivalence of coherences of commuting squares of identifications. +```agda +module _ + {l : Level} {A : UU l} {x y z w : A} + (top : x = y) (left : x = z) (right : y = w) (bottom : z = w) + where + + coherence-square-identifications-top-left-whisker' : + {u : A} (p : u = x) → + coherence-square-identifications top left right bottom → + coherence-square-identifications (p ∙ top) (p ∙ left) right bottom + coherence-square-identifications-top-left-whisker' refl sq = sq + + coherence-square-identifications-top-left-whisker : + {u : A} (p : x = u) → + coherence-square-identifications top left right bottom → + coherence-square-identifications (inv p ∙ top) (inv p ∙ left) right bottom + coherence-square-identifications-top-left-whisker refl sq = sq +``` + #### Right whiskering coherences of commuting squares of identifications For any identification `p : w = u` we obtain an equivalence @@ -418,6 +437,31 @@ For any identification `p : w = u` we obtain an equivalence of coherences of commuting squares of identifications. +```agda +module _ + {l : Level} {A : UU l} {x y z w : A} + (top : x = y) (left : x = z) (right : y = w) (bottom : z = w) + where + + coherence-square-identifications-bottom-right-whisker : + {u : A} (p : w = u) → + coherence-square-identifications top left right bottom → + coherence-square-identifications top left (right ∙ p) (bottom ∙ p) + coherence-square-identifications-bottom-right-whisker refl = + ( bottom-concat-identification-coherence-square-identifications + ( top) + ( left) + ( right ∙ refl) + ( bottom) + ( inv right-unit)) ∘ + ( right-concat-identification-coherence-square-identifications + ( top) + ( left) + ( right) + ( bottom) + ( inv right-unit)) +``` + #### Left splicing coherences of commuting squares of identifications For inverse pair of identifications `p : y = u` and `q : u = y` equipped with @@ -435,6 +479,25 @@ For inverse pair of identifications `p : y = u` and `q : u = y` equipped wit of coherences of commuting squares of identifications. +```agda +module _ + {l : Level} {A : UU l} {x y z w : A} + (top : x = y) (left : x = z) (right : y = w) (bottom : z = w) + where + + coherence-square-identifications-bottom-left-whisker : + {u : A} (p : z = u) → + coherence-square-identifications top left right bottom → + coherence-square-identifications top (left ∙ p) right (inv p ∙ bottom) + coherence-square-identifications-bottom-left-whisker refl = + left-concat-identification-coherence-square-identifications + ( top) + ( left) + ( right) + ( bottom) + ( inv right-unit) +``` + #### Right splicing coherences of commuting squares of identifications For inverse pair of identifications `p : y = u` and `q : u = y` equipped with @@ -455,24 +518,11 @@ of coherences of commuting squares of identifications. ```agda module _ {l : Level} {A : UU l} {x y z w : A} --- (left : x = z) (bottom : z = w) (top : x = y) (right : y = w) (top : x = y) (left : x = z) (right : y = w) (bottom : z = w) where - coherence-square-identifications-top-left-whisker' : - {x' : A} (p : x' = x) → - coherence-square-identifications top left right bottom → - coherence-square-identifications (p ∙ top) (p ∙ left) right bottom - coherence-square-identifications-top-left-whisker' refl sq = sq - - coherence-square-identifications-top-left-whisker : - {x' : A} (p : x = x') → - coherence-square-identifications top left right bottom → - coherence-square-identifications (inv p ∙ top) (inv p ∙ left) right bottom - coherence-square-identifications-top-left-whisker refl sq = sq - coherence-square-identifications-top-right-whisker : - {y' : A} (p : y = y') → + {u : A} (p : y = u) → coherence-square-identifications top left right bottom → coherence-square-identifications (top ∙ p) left (inv p ∙ right) bottom coherence-square-identifications-top-right-whisker refl = @@ -482,34 +532,4 @@ module _ ( right) ( bottom) ( inv right-unit) - - coherence-square-identifications-bottom-left-whisker : - {z' : A} (p : z = z') → - coherence-square-identifications top left right bottom → - coherence-square-identifications top (left ∙ p) right (inv p ∙ bottom) - coherence-square-identifications-bottom-left-whisker refl = - left-concat-identification-coherence-square-identifications - ( top) - ( left) - ( right) - ( bottom) - ( inv right-unit) - - coherence-square-identifications-bottom-right-whisker : - {w' : A} (p : w = w') → - coherence-square-identifications top left right bottom → - coherence-square-identifications top left (right ∙ p) (bottom ∙ p) - coherence-square-identifications-bottom-right-whisker refl = - ( bottom-concat-identification-coherence-square-identifications - ( top) - ( left) - ( right ∙ refl) - ( bottom) - ( inv right-unit)) ∘ - ( right-concat-identification-coherence-square-identifications - ( top) - ( left) - ( right) - ( bottom) - ( inv right-unit)) ``` From 87ee1903acc1badebf089509605aee036c610e79 Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Wed, 31 Jan 2024 13:38:04 +0100 Subject: [PATCH 053/150] implementing whiskering in many files --- ...niversal-property-natural-numbers.lagda.md | 5 +- src/foundation-core/pullbacks.lagda.md | 11 +++-- .../commuting-cubes-of-maps.lagda.md | 47 ++++++++++--------- .../descent-coproduct-types.lagda.md | 9 +++- src/foundation/equivalences.lagda.md | 20 ++++---- src/foundation/path-algebra.lagda.md | 10 ++-- .../unital-binary-operations.lagda.md | 3 +- ...ersal-property-lists-wild-monoids.lagda.md | 2 +- .../double-loop-spaces.lagda.md | 9 +++- .../powers-of-loops.lagda.md | 17 ++++--- .../dependent-type-theories.lagda.md | 3 +- 11 files changed, 79 insertions(+), 57 deletions(-) diff --git a/src/elementary-number-theory/universal-property-natural-numbers.lagda.md b/src/elementary-number-theory/universal-property-natural-numbers.lagda.md index 9044063f8b..961fd0662c 100644 --- a/src/elementary-number-theory/universal-property-natural-numbers.lagda.md +++ b/src/elementary-number-theory/universal-property-natural-numbers.lagda.md @@ -22,6 +22,7 @@ open import foundation.identity-types open import foundation.structure-identity-principle open import foundation.torsorial-type-families open import foundation.universe-levels +open import foundation.whiskering-identifications ```
@@ -112,7 +113,9 @@ module _ ( pr2 (pr2 center-structure-preserving-map-ℕ) n ∙ ap f (α n)) = ( α (succ-ℕ n) ∙ pr2 (pr2 h) n) γ n = ( ( inv right-unit) ∙ - ( ap (λ q → (ap f (α n) ∙ q)) (inv (left-inv (pr2 (pr2 h) n))))) ∙ + ( left-whisker-identification + ( ap f (α n)) + ( inv (left-inv (pr2 (pr2 h) n))))) ∙ ( inv ( assoc (ap f (α n)) (inv (pr2 (pr2 h) n)) (pr2 (pr2 h) n))) diff --git a/src/foundation-core/pullbacks.lagda.md b/src/foundation-core/pullbacks.lagda.md index 0401e6378f..25e303171a 100644 --- a/src/foundation-core/pullbacks.lagda.md +++ b/src/foundation-core/pullbacks.lagda.md @@ -489,7 +489,10 @@ module _ ( ap ( λ t → eq-pair t (ap pr2 α)) ( ( inv right-unit) ∙ - ( inv (ap (concat (ap pr1 α) x) (left-inv (ap pr2 α)))) ∙ + ( inv + ( left-whisker-identification + ( ap pr1 α) + ( left-inv (ap pr2 α)))) ∙ ( inv (assoc (ap pr1 α) (inv (ap pr2 α)) (ap pr2 α))))) ∙ ( eq-pair-concat ( ap pr1 α ∙ inv (ap pr2 α)) @@ -508,13 +511,13 @@ module _ ( refl) ( refl) ( inv - ( ( ap - ( concat' (f a) refl) + ( ( right-whisker-identification ( ( right-whisker-identification ( ap-pr1-eq-pair p refl) ( inv (ap pr2 (eq-pair p refl)))) ∙ ( ap (λ t → p ∙ inv t) (ap-pr2-eq-pair p refl)) ∙ - ( right-unit))) ∙ + ( right-unit)) + ( refl)) ∙ ( right-unit))) abstract diff --git a/src/foundation/commuting-cubes-of-maps.lagda.md b/src/foundation/commuting-cubes-of-maps.lagda.md index d8f6c6deb7..26429c9402 100644 --- a/src/foundation/commuting-cubes-of-maps.lagda.md +++ b/src/foundation/commuting-cubes-of-maps.lagda.md @@ -14,6 +14,7 @@ open import foundation.cones-over-cospan-diagrams open import foundation.dependent-pair-types open import foundation.homotopies open import foundation.universe-levels +open import foundation.whiskering-identifications open import foundation-core.function-extensionality open import foundation-core.function-types @@ -124,9 +125,11 @@ module _ ( inv-htpy front-left) ( front-right) coherence-cube-maps-rotate-120 a' = - ( ap (λ t → t ∙ (ap h (back-left a'))) - ( ap (λ t' → t' ∙ inv (bottom (hA a'))) - ( ap-inv k (back-right a')))) ∙ + ( right-whisker-identification + ( right-whisker-identification + ( ap-inv k (back-right a')) + ( inv (bottom (hA a')))) + ( ap h (back-left a'))) ∙ ( ( hexagon-rotate-120 ( ap h (back-left a')) ( front-left (f' a')) @@ -136,9 +139,11 @@ module _ ( front-right (g' a')) ( c a')) ∙ ( inv - ( ap (λ t → (front-right (g' a')) ∙ t) - ( ap (λ t' → t' ∙ inv (front-left (f' a'))) - ( ap-inv hD (top a')))))) + ( left-whisker-identification + ( front-right (g' a')) + ( right-whisker-identification + ( ap-inv hD (top a')) + ( inv (front-left (f' a'))))))) coherence-cube-maps-rotate-240 : coherence-cube-maps h' hB hD h g' hA hC g f' k' f k @@ -149,7 +154,7 @@ module _ ( bottom) ( inv-htpy front-left) coherence-cube-maps-rotate-240 a' = - ( ap (λ t → _ ∙ t) (ap-inv k (back-right a'))) ∙ + ( left-whisker-identification _ (ap-inv k (back-right a'))) ∙ ( ( hexagon-rotate-240 ( ap h (back-left a')) ( front-left (f' a')) @@ -159,9 +164,9 @@ module _ ( front-right (g' a')) ( c a')) ∙ ( inv - ( ap - ( λ t → inv (front-left (f' a')) ∙ t) - ( ap (λ t' → t' ∙ _) (ap-inv h (back-left a')))))) + ( left-whisker-identification + ( inv (front-left (f' a'))) + ( right-whisker-identification (ap-inv h (back-left a')) _)))) coherence-cube-maps-mirror-A : coherence-cube-maps g f k h g' f' k' h' hA hC hB hD @@ -172,7 +177,7 @@ module _ ( front-left) ( inv-htpy bottom) coherence-cube-maps-mirror-A a' = - ( ap (λ t → _ ∙ t) (ap-inv hD (top a'))) ∙ + ( left-whisker-identification _ (ap-inv hD (top a'))) ∙ ( hexagon-mirror-A ( ap h (back-left a')) ( front-left (f' a')) @@ -191,8 +196,9 @@ module _ ( inv-htpy front-right) ( front-left) coherence-cube-maps-mirror-B a' = - ( ap (λ t → t ∙ (ap k (back-right a'))) - ( ap (λ t → t ∙ _) (ap-inv h (back-left a')))) ∙ + ( right-whisker-identification + ( right-whisker-identification (ap-inv h (back-left a')) _) + ( ap k (back-right a'))) ∙ ( hexagon-mirror-B ( ap h (back-left a')) ( front-left (f' a')) @@ -214,7 +220,7 @@ module _ ( ap ( λ t → (t ∙ inv (front-left (f' a'))) ∙ (ap h (inv (back-left a')))) ( ap-inv hD (top a'))) ∙ - ( ( ap (λ t → _ ∙ t) (ap-inv h (back-left a'))) ∙ + ( ( left-whisker-identification _ (ap-inv h (back-left a'))) ∙ ( ( hexagon-mirror-C ( ap h (back-left a')) ( front-left (f' a')) @@ -224,9 +230,9 @@ module _ ( front-right (g' a')) ( c a')) ∙ ( inv - ( ap - ( λ t → inv (front-right (g' a')) ∙ t) - ( ap (λ t' → t' ∙ _) (ap-inv k (back-right a'))))))) + ( left-whisker-identification + ( inv (front-right (g' a'))) + ( right-whisker-identification (ap-inv k (back-right a')) _))))) ``` ### Rectangles in commuting cubes @@ -270,12 +276,7 @@ module _ ( refl-htpy' hA) ( top) coherence-htpy-parallel-cone-rectangle-left-rectangle-right-cube c = - ( λ a' → - ( ap - ( concat - ( rectangle-left-cube a') - ( hD (k' (g' a')))) - ( right-unit))) ∙h + ( λ a' → left-whisker-identification (rectangle-left-cube a') right-unit) ∙h ( c) rectangle-top-front-left-cube : diff --git a/src/foundation/descent-coproduct-types.lagda.md b/src/foundation/descent-coproduct-types.lagda.md index d0c3880ffc..d749bb8574 100644 --- a/src/foundation/descent-coproduct-types.lagda.md +++ b/src/foundation/descent-coproduct-types.lagda.md @@ -13,6 +13,7 @@ open import foundation.dependent-pair-types open import foundation.functoriality-coproduct-types open import foundation.functoriality-fibers-of-maps open import foundation.universe-levels +open import foundation.whiskering-identifications open import foundation-core.coproduct-types open import foundation-core.equality-dependent-pair-types @@ -47,7 +48,9 @@ module _ ( fiber-map-coprod-inl-fiber f g x) triangle-descent-square-fiber-map-coprod-inl-fiber x (a' , p) = eq-pair-eq-pr2 - ( ap (concat (inv (HA a')) (αA x)) (ap-comp (ind-coprod _ αA αB) inl p)) + ( left-whisker-identification + ( inv (HA a')) + ( ap-comp (ind-coprod _ αA αB) inl p)) triangle-descent-square-fiber-map-coprod-inr-fiber : (y : B) → @@ -58,7 +61,9 @@ module _ ( fiber-map-coprod-inr-fiber f g y) triangle-descent-square-fiber-map-coprod-inr-fiber y (b' , p) = eq-pair-eq-pr2 - ( ap (concat (inv (HB b')) (αB y)) (ap-comp (ind-coprod _ αA αB) inr p)) + ( left-whisker-identification + ( inv (HB b')) + ( ap-comp (ind-coprod _ αA αB) inr p)) module _ {l1 l2 l3 l1' l2' l3' : Level} diff --git a/src/foundation/equivalences.lagda.md b/src/foundation/equivalences.lagda.md index e80767e3ce..60646de818 100644 --- a/src/foundation/equivalences.lagda.md +++ b/src/foundation/equivalences.lagda.md @@ -19,6 +19,7 @@ open import foundation.path-algebra open import foundation.truncated-maps open import foundation.universal-property-equivalences open import foundation.universe-levels +open import foundation.whiskering-identifications open import foundation-core.commuting-triangles-of-maps open import foundation-core.contractible-maps @@ -182,16 +183,17 @@ the original identifications. ( is-section-map-inv-equiv e y)) = ( p) triangle-eq-transpose-equiv {x} {y} p = - ( ap - ( concat' (map-equiv e x) (is-section-map-inv-equiv e y)) + ( right-whisker-identification ( is-section-map-inv-equiv ( equiv-ap e x (map-inv-equiv e y)) - ( p ∙ inv (is-section-map-inv-equiv e y)))) ∙ + ( p ∙ inv (is-section-map-inv-equiv e y))) + ( is-section-map-inv-equiv e y)) ∙ ( ( assoc ( p) ( inv (is-section-map-inv-equiv e y)) ( is-section-map-inv-equiv e y)) ∙ - ( ( ap (concat p y) (left-inv (is-section-map-inv-equiv e y))) ∙ + ( ( left-whisker-identification p + ( left-inv (is-section-map-inv-equiv e y))) ∙ ( right-unit))) triangle-eq-transpose-equiv-inv : @@ -210,15 +212,15 @@ the original identifications. ( ap (map-equiv e) (inv (map-eq-transpose-equiv-inv e p))) ( is-section-map-inv-equiv e y) ( inv p) - ( ( ap - ( concat' (map-equiv e x) (is-section-map-inv-equiv e y)) + ( ( right-whisker-identification ( ap ( ap (map-equiv e)) ( inv-inv ( map-inv-equiv ( equiv-ap e x (map-inv-equiv e y)) ( ( inv p) ∙ - ( inv (is-section-map-inv-equiv e y))))))) ∙ + ( inv (is-section-map-inv-equiv e y)))))) + ( is-section-map-inv-equiv e y)) ∙ ( triangle-eq-transpose-equiv (inv p))))) ∙ ( ap-inv (map-equiv e) (map-eq-transpose-equiv-inv e p)))) @@ -227,8 +229,8 @@ the original identifications. ( is-retraction-map-inv-equiv e x ∙ map-eq-transpose-equiv e p) = ( ap (map-inv-equiv e) p) triangle-eq-transpose-equiv' {x} refl = - ( ap - ( is-retraction-map-inv-equiv e x ∙_) + ( left-whisker-identification + ( is-retraction-map-inv-equiv e x) ( htpy-map-eq-transpose-equiv refl)) ∙ ( is-section-inv-concat (is-retraction-map-inv-equiv e x) _ refl) diff --git a/src/foundation/path-algebra.lagda.md b/src/foundation/path-algebra.lagda.md index 929e624d45..5d9e51972e 100644 --- a/src/foundation/path-algebra.lagda.md +++ b/src/foundation/path-algebra.lagda.md @@ -291,7 +291,7 @@ unit-law-α-interchange-Id² : ( ( interchange-Id² α refl (refl {x = u}) refl) ∙ ( right-unit ∙ right-unit-law-horizontal-concat-Id² α)) = ( ( right-unit-law-horizontal-concat-Id² (α ∙ refl)) ∙ - ( ap (ap (concat' x u)) right-unit)) + ( ap (λ s → right-whisker-identification s u) right-unit)) unit-law-α-interchange-Id² refl u = refl unit-law-β-interchange-Id² : @@ -304,7 +304,7 @@ unit-law-γ-interchange-Id² : ( ( interchange-Id² (refl {x = p}) refl γ refl) ∙ ( right-unit ∙ left-unit-law-horizontal-concat-Id² γ)) = ( ( left-unit-law-horizontal-concat-Id² (γ ∙ refl)) ∙ - ( ap (ap (concat p z)) right-unit)) + ( ap (left-whisker-identification p) right-unit)) unit-law-γ-interchange-Id² p refl = refl unit-law-δ-interchange-Id² : @@ -373,12 +373,14 @@ right-unit-law-x-concat-Id³ = right-unit-law-vertical-concat-Id² left-unit-law-y-concat-Id³ : {l : Level} {A : UU l} {x y : A} {p q r : x = y} {α : p = q} {γ δ : q = r} - {τ : γ = δ} → y-concat-Id³ (refl {x = α}) τ = ap (concat α r) τ + {τ : γ = δ} → + y-concat-Id³ (refl {x = α}) τ = left-whisker-identification α τ left-unit-law-y-concat-Id³ {τ = τ} = left-unit-law-horizontal-concat-Id² τ right-unit-law-y-concat-Id³ : {l : Level} {A : UU l} {x y : A} {p q r : x = y} {α β : p = q} {γ : q = r} - {σ : α = β} → y-concat-Id³ σ (refl {x = γ}) = ap (concat' p γ) σ + {σ : α = β} → + y-concat-Id³ σ (refl {x = γ}) = right-whisker-identification σ γ right-unit-law-y-concat-Id³ {σ = σ} = right-unit-law-horizontal-concat-Id² σ left-unit-law-z-concat-Id³ : diff --git a/src/foundation/unital-binary-operations.lagda.md b/src/foundation/unital-binary-operations.lagda.md index 77cb258584..4382d38090 100644 --- a/src/foundation/unital-binary-operations.lagda.md +++ b/src/foundation/unital-binary-operations.lagda.md @@ -10,6 +10,7 @@ module foundation.unital-binary-operations where open import foundation.action-on-identifications-functions open import foundation.dependent-pair-types open import foundation.universe-levels +open import foundation.whiskering-identifications open import foundation-core.cartesian-product-types open import foundation-core.homotopies @@ -85,7 +86,7 @@ module _ ( H e) ( (ap (μ e) (H e)) ∙ (K e)) ( ( inv-nat-htpy-id (H) (K e)) ∙ - ( ap (concat' (μ e (μ e e)) (K e)) (coh-htpy-id (H) e))) + ( right-whisker-identification (coh-htpy-id (H) e) (K e))) module _ {l : Level} {A : UU l} {μ : A → A → A} diff --git a/src/lists/universal-property-lists-wild-monoids.lagda.md b/src/lists/universal-property-lists-wild-monoids.lagda.md index b1fc25120b..b7952e586a 100644 --- a/src/lists/universal-property-lists-wild-monoids.lagda.md +++ b/src/lists/universal-property-lists-wild-monoids.lagda.md @@ -337,6 +337,6 @@ htpy-elim-list-Wild-Monoid {X = X} M g h H = γ : Id (pr2 g) (α nil ∙ pr2 h) γ = ( inv right-unit) ∙ - ( ( ap (concat (pr2 g) (pr1 (pr2 M))) (inv (left-inv (pr2 h)))) ∙ + ( ( left-whisker-identification (pr2 g) (inv (left-inv (pr2 h)))) ∙ ( inv (assoc (pr2 g) (inv (pr2 h)) (pr2 h)))) ``` diff --git a/src/synthetic-homotopy-theory/double-loop-spaces.lagda.md b/src/synthetic-homotopy-theory/double-loop-spaces.lagda.md index aa74e3c917..81e4a3ac74 100644 --- a/src/synthetic-homotopy-theory/double-loop-spaces.lagda.md +++ b/src/synthetic-homotopy-theory/double-loop-spaces.lagda.md @@ -8,6 +8,7 @@ module synthetic-homotopy-theory.double-loop-spaces where ```agda open import foundation.action-on-identifications-functions +open import foundation.commuting-squares-of-identifications open import foundation.dependent-pair-types open import foundation.identity-types open import foundation.path-algebra @@ -82,12 +83,16 @@ left-unit-law-horizontal-concat-Ω² {α = α} = naturality-right-unit : {l : Level} {A : UU l} {x y : A} {p q : Id x y} (α : Id p q) → - Id (ap (concat' x refl) α ∙ right-unit) (right-unit ∙ α) + coherence-square-identifications + ( right-unit) + ( right-whisker-identification α refl) + ( α) + ( right-unit) naturality-right-unit {p = refl} refl = refl naturality-right-unit-Ω² : {l : Level} {A : UU l} {x : A} (α : type-Ω² x) → - Id (ap (concat' x refl) α) α + right-whisker-identification α refl = α naturality-right-unit-Ω² α = inv right-unit ∙ naturality-right-unit α right-unit-law-horizontal-concat-Ω² : diff --git a/src/synthetic-homotopy-theory/powers-of-loops.lagda.md b/src/synthetic-homotopy-theory/powers-of-loops.lagda.md index 1b562cf416..708aba34cc 100644 --- a/src/synthetic-homotopy-theory/powers-of-loops.lagda.md +++ b/src/synthetic-homotopy-theory/powers-of-loops.lagda.md @@ -18,6 +18,7 @@ open import foundation.identity-types open import foundation.iterating-automorphisms open import foundation.iterating-functions open import foundation.universe-levels +open import foundation.whiskering-identifications open import structured-types.pointed-maps open import structured-types.pointed-types @@ -67,7 +68,7 @@ power-nat-refl-Ω : power-nat-Ω n A refl = refl power-nat-refl-Ω zero-ℕ A = refl power-nat-refl-Ω (succ-ℕ n) A = - ap (concat' (point-Pointed-Type A) refl) (power-nat-refl-Ω n A) + right-whisker-identification (power-nat-refl-Ω n A) refl ``` ### `ωⁿ⁺¹ = ωⁿ ∙ ω` @@ -83,7 +84,7 @@ power-nat-succ-Ω' : power-nat-Ω (succ-ℕ n) A ω = (ω ∙ power-nat-Ω n A ω) power-nat-succ-Ω' zero-ℕ A ω = inv right-unit power-nat-succ-Ω' (succ-ℕ n) A ω = - ( ap (concat' (point-Pointed-Type A) ω) (power-nat-succ-Ω' n A ω)) ∙ + ( right-whisker-identification (power-nat-succ-Ω' n A ω) ω) ∙ ( assoc ω (power-nat-Ω n A ω) ω) ``` @@ -95,7 +96,7 @@ power-nat-add-Ω : power-nat-Ω (m +ℕ n) A ω = (power-nat-Ω m A ω ∙ power-nat-Ω n A ω) power-nat-add-Ω m zero-ℕ A ω = inv right-unit power-nat-add-Ω m (succ-ℕ n) A ω = - ( ap (concat' (point-Pointed-Type A) ω) (power-nat-add-Ω m n A ω)) ∙ + ( right-whisker-identification (power-nat-add-Ω m n A ω) ω) ∙ ( assoc (power-nat-Ω m A ω) (power-nat-Ω n A ω) ω) ``` @@ -108,9 +109,9 @@ power-nat-mul-Ω : power-nat-mul-Ω zero-ℕ n A ω = refl power-nat-mul-Ω (succ-ℕ m) n A ω = ( power-nat-add-Ω (m *ℕ n) n A ω) ∙ - ( ( ap - ( concat' (point-Pointed-Type A) (power-nat-Ω n A ω)) - ( power-nat-mul-Ω m n A ω))) + ( ( right-whisker-identification + ( power-nat-mul-Ω m n A ω) + ( power-nat-Ω n A ω))) power-nat-mul-Ω' : {l : Level} (m n : ℕ) (A : Pointed-Type l) (ω : type-Ω A) → @@ -130,7 +131,5 @@ map-power-nat-Ω : map-power-nat-Ω zero-ℕ {A} {B} f ω = preserves-refl-map-Ω f map-power-nat-Ω (succ-ℕ n) {A} {B} f ω = ( preserves-mul-map-Ω f) ∙ - ( ap - ( concat' (point-Pointed-Type B) (map-Ω f ω)) - ( map-power-nat-Ω n f ω)) + ( right-whisker-identification (map-power-nat-Ω n f ω) (map-Ω f ω)) ``` diff --git a/src/type-theories/dependent-type-theories.lagda.md b/src/type-theories/dependent-type-theories.lagda.md index 2a52b04827..0ce64f26d1 100644 --- a/src/type-theories/dependent-type-theories.lagda.md +++ b/src/type-theories/dependent-type-theories.lagda.md @@ -19,6 +19,7 @@ open import foundation.identity-types open import foundation.propositions open import foundation.transport-along-identifications open import foundation.universe-levels +open import foundation.whiskering-identifications ```
@@ -1056,7 +1057,7 @@ We introduce the slice of a dependent type theory. ( section-system.element ( section-system.slice (comp-hom-system g f) X) ( generic-element.type δA X))) - ( ap (α ∙_) (right-unit))) ∙ + ( left-whisker-identification α right-unit)) ∙ ( ( tr-concat { B = system.element From d239ab27b464806b69046b2311f3006142e4e76d Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Wed, 31 Jan 2024 15:25:38 +0100 Subject: [PATCH 054/150] renaming --- ...muting-squares-of-identifications.lagda.md | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/foundation-core/commuting-squares-of-identifications.lagda.md b/src/foundation-core/commuting-squares-of-identifications.lagda.md index 37f5643ef3..0c9f06ae64 100644 --- a/src/foundation-core/commuting-squares-of-identifications.lagda.md +++ b/src/foundation-core/commuting-squares-of-identifications.lagda.md @@ -408,17 +408,17 @@ module _ (top : x = y) (left : x = z) (right : y = w) (bottom : z = w) where - coherence-square-identifications-top-left-whisker' : + left-whisker-coherence-square-identifications' : {u : A} (p : u = x) → coherence-square-identifications top left right bottom → coherence-square-identifications (p ∙ top) (p ∙ left) right bottom - coherence-square-identifications-top-left-whisker' refl sq = sq + left-whisker-coherence-square-identifications' refl sq = sq - coherence-square-identifications-top-left-whisker : + left-whisker-coherence-square-identifications : {u : A} (p : x = u) → coherence-square-identifications top left right bottom → coherence-square-identifications (inv p ∙ top) (inv p ∙ left) right bottom - coherence-square-identifications-top-left-whisker refl sq = sq + left-whisker-coherence-square-identifications refl sq = sq ``` #### Right whiskering coherences of commuting squares of identifications @@ -443,11 +443,11 @@ module _ (top : x = y) (left : x = z) (right : y = w) (bottom : z = w) where - coherence-square-identifications-bottom-right-whisker : + right-whisker-coherence-square-identifications : {u : A} (p : w = u) → coherence-square-identifications top left right bottom → coherence-square-identifications top left (right ∙ p) (bottom ∙ p) - coherence-square-identifications-bottom-right-whisker refl = + right-whisker-coherence-square-identifications refl = ( bottom-concat-identification-coherence-square-identifications ( top) ( left) @@ -485,11 +485,11 @@ module _ (top : x = y) (left : x = z) (right : y = w) (bottom : z = w) where - coherence-square-identifications-bottom-left-whisker : + left-splice-coherence-square-identifications : {u : A} (p : z = u) → coherence-square-identifications top left right bottom → coherence-square-identifications top (left ∙ p) right (inv p ∙ bottom) - coherence-square-identifications-bottom-left-whisker refl = + left-splice-coherence-square-identifications refl = left-concat-identification-coherence-square-identifications ( top) ( left) @@ -521,11 +521,11 @@ module _ (top : x = y) (left : x = z) (right : y = w) (bottom : z = w) where - coherence-square-identifications-top-right-whisker : + right-splice-coherence-square-identifications : {u : A} (p : y = u) → coherence-square-identifications top left right bottom → coherence-square-identifications (top ∙ p) left (inv p ∙ right) bottom - coherence-square-identifications-top-right-whisker refl = + right-splice-coherence-square-identifications refl = top-concat-identification-coherence-square-identifications ( top) ( left) From 16b60994a1d1158ec4ddf2762b3e5a94dfc00e3f Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Wed, 31 Jan 2024 15:58:55 +0100 Subject: [PATCH 055/150] in the middle of some work --- .../coherently-invertible-maps.lagda.md | 30 ++++++++----------- ...muting-squares-of-identifications.lagda.md | 26 ++++++++++------ 2 files changed, 29 insertions(+), 27 deletions(-) diff --git a/src/foundation-core/coherently-invertible-maps.lagda.md b/src/foundation-core/coherently-invertible-maps.lagda.md index 56b9b45089..59953c63c3 100644 --- a/src/foundation-core/coherently-invertible-maps.lagda.md +++ b/src/foundation-core/coherently-invertible-maps.lagda.md @@ -11,7 +11,6 @@ open import foundation.action-on-identifications-functions open import foundation.dependent-pair-types open import foundation.universe-levels -open import foundation-core.commuting-squares-of-identifications open import foundation-core.function-types open import foundation-core.homotopies open import foundation-core.identity-types @@ -139,24 +138,19 @@ module _ ( ( ap f ( is-section-is-invertible H (map-inv-is-invertible H (f x)))) ∙ ( is-retraction-is-invertible H (f x))) - ( top-concat-identification-coherence-square-identifications - ( ap - ( f ∘ (map-inv-is-invertible H ∘ f)) - ( is-section-is-invertible H x)) - ( is-retraction-is-invertible H (f (map-inv-is-invertible H (f x)))) - ( is-retraction-is-invertible H (f x)) - ( ap f (is-section-is-invertible H x)) - ( ( ap-comp f - ( map-inv-is-invertible H ∘ f) - ( is-section-is-invertible H x)) ∙ - ( inv - ( ap - ( ap f) - ( coh-is-coherently-invertible-id - ( is-section-is-invertible H) x)))) - ( nat-htpy + ( ( nat-htpy ( right-whisker-htpy (is-retraction-is-invertible H) f) - ( is-section-is-invertible H x)))) + ( is-section-is-invertible H x)) ∙ + ( ap + ( concat' _ (is-retraction-is-invertible H (f x))) + ( ( ap-comp f + ( map-inv-is-invertible H ∘ f) + ( is-section-is-invertible H x)) ∙ + ( inv + ( ap + ( ap f) + ( coh-is-coherently-invertible-id + ( is-section-is-invertible H) x))))))) abstract is-coherently-invertible-is-invertible : diff --git a/src/foundation-core/commuting-squares-of-identifications.lagda.md b/src/foundation-core/commuting-squares-of-identifications.lagda.md index 0c9f06ae64..7a5c7bf382 100644 --- a/src/foundation-core/commuting-squares-of-identifications.lagda.md +++ b/src/foundation-core/commuting-squares-of-identifications.lagda.md @@ -10,6 +10,7 @@ module foundation-core.commuting-squares-of-identifications where open import foundation.action-on-identifications-functions open import foundation.universe-levels +open import foundation-core.equivalences open import foundation-core.function-types open import foundation-core.identity-types ``` @@ -261,13 +262,15 @@ module _ {bottom' : z = w} (s : bottom = bottom') → coherence-square-identifications top left right bottom → coherence-square-identifications top left right bottom' - bottom-concat-identification-coherence-square-identifications refl sq = sq + bottom-concat-identification-coherence-square-identifications s sq = + {!!} top-concat-identification-coherence-square-identifications : {top' : x = y} (s : top = top') → coherence-square-identifications top left right bottom → coherence-square-identifications top' left right bottom - top-concat-identification-coherence-square-identifications refl sq = sq + top-concat-identification-coherence-square-identifications s sq = + sq ∙ ap (concat' _ right) s right-concat-identification-coherence-square-identifications : {right' : y = w} (s : right = right') → @@ -404,21 +407,26 @@ of coherences of commuting squares of identifications. ```agda module _ - {l : Level} {A : UU l} {x y z w : A} + {l : Level} {A : UU l} {x y z w u : A} + (p : u = x) (top : x = y) (left : x = z) (right : y = w) (bottom : z = w) where - left-whisker-coherence-square-identifications' : - {u : A} (p : u = x) → + equiv-left-whisker-coherence-square-identifications : + (p : u = x) + (top : x = y) (left : x = z) (right : y = w) (bottom : z = w) → coherence-square-identifications top left right bottom → coherence-square-identifications (p ∙ top) (p ∙ left) right bottom - left-whisker-coherence-square-identifications' refl sq = sq + equiv-left-whisker-coherence-square-identifications refl + top left right bottom = {!!} -- id-equiv left-whisker-coherence-square-identifications : - {u : A} (p : x = u) → + (p : u = x) + (top : x = y) (left : x = z) (right : y = w) (bottom : z = w) → coherence-square-identifications top left right bottom → - coherence-square-identifications (inv p ∙ top) (inv p ∙ left) right bottom - left-whisker-coherence-square-identifications refl sq = sq + coherence-square-identifications (p ∙ top) (p ∙ left) right bottom + left-whisker-coherence-square-identifications refl top left right bottom = + id ``` #### Right whiskering coherences of commuting squares of identifications From a4c7267bbb96befbd5462be101c5446a6674b27e Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Wed, 31 Jan 2024 16:50:56 +0100 Subject: [PATCH 056/150] edits --- ...muting-squares-of-identifications.lagda.md | 57 ++++++++++++++----- 1 file changed, 43 insertions(+), 14 deletions(-) diff --git a/src/foundation-core/commuting-squares-of-identifications.lagda.md b/src/foundation-core/commuting-squares-of-identifications.lagda.md index 7a5c7bf382..99162fb3bf 100644 --- a/src/foundation-core/commuting-squares-of-identifications.lagda.md +++ b/src/foundation-core/commuting-squares-of-identifications.lagda.md @@ -1,4 +1,4 @@ -# Commuting squares of identifications +l# Commuting squares of identifications ```agda module foundation-core.commuting-squares-of-identifications where @@ -227,7 +227,7 @@ module _ map-coherence-square-identifications refl refl right refl coh = ap (ap f) coh ``` -### Pasting of identifications along edges of squares of identifications +### Concatenating identifications of edges and coherences of commuting squares of identifications Consider a commuting square of identifications and an identification of one of the four sides with another identification, as for example in the diagram below: @@ -246,6 +246,24 @@ Then any identification witnessing that the square commutes can be concatenated with the identification on the side, to obtain a new commuting square of identifications. +#### Concatenating identifications of the top edge with a coherence of a commuting square of identifications + +```agda +module _ + {l : Level} {A : UU l} {x y z w : A} + (top : x = y) (left : x = z) (right : y = w) (bottom : z = w) + where + + top-concat-identification-coherence-square-identifications : + {top' : x = y} (s : top = top') → + coherence-square-identifications top left right bottom → + coherence-square-identifications top' left right bottom + top-concat-identification-coherence-square-identifications s sq = + sq ∙ ap (concat' _ right) s +``` + +#### Concatenating identifications of the left edge with a coherence of a commuting square of identifications + ```agda module _ {l : Level} {A : UU l} {x y z w : A} @@ -257,20 +275,15 @@ module _ coherence-square-identifications top left right bottom → coherence-square-identifications top left' right bottom left-concat-identification-coherence-square-identifications refl sq = sq +``` - bottom-concat-identification-coherence-square-identifications : - {bottom' : z = w} (s : bottom = bottom') → - coherence-square-identifications top left right bottom → - coherence-square-identifications top left right bottom' - bottom-concat-identification-coherence-square-identifications s sq = - {!!} +#### Concatenating identifications of the right edge with a coherence of a commuting square of identifications - top-concat-identification-coherence-square-identifications : - {top' : x = y} (s : top = top') → - coherence-square-identifications top left right bottom → - coherence-square-identifications top' left right bottom - top-concat-identification-coherence-square-identifications s sq = - sq ∙ ap (concat' _ right) s +```agda +module _ + {l : Level} {A : UU l} {x y z w : A} + (top : x = y) (left : x = z) (right : y = w) (bottom : z = w) + where right-concat-identification-coherence-square-identifications : {right' : y = w} (s : right = right') → @@ -279,6 +292,22 @@ module _ right-concat-identification-coherence-square-identifications refl sq = sq ``` +#### Concatenating identifications of the bottom edge with a coherence of a commuting square of identifications + +```agda +module _ + {l : Level} {A : UU l} {x y z w : A} + (top : x = y) (left : x = z) (right : y = w) (bottom : z = w) + where + + bottom-concat-identification-coherence-square-identifications : + {bottom' : z = w} (s : bottom = bottom') → + coherence-square-identifications top left right bottom → + coherence-square-identifications top left right bottom' + bottom-concat-identification-coherence-square-identifications s sq = + {!!} +``` + ### Whiskering and splicing coherences of commuting squares of identifications Given a commuting square of identifications From 9c3121c4f466dbb23f81315fc412e4986df8f034 Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Wed, 31 Jan 2024 18:29:52 +0100 Subject: [PATCH 057/150] refactoring identity types --- ...muting-squares-of-identifications.lagda.md | 22 ++- src/foundation-core/identity-types.lagda.md | 148 ++++++++++++++++-- .../commuting-squares-of-maps.lagda.md | 5 +- src/foundation/equivalences.lagda.md | 2 +- src/foundation/homotopies.lagda.md | 4 +- src/foundation/identity-types.lagda.md | 30 +--- src/foundation/surjective-maps.lagda.md | 2 +- .../functoriality-higher-modalities.lagda.md | 2 +- .../lifting-squares.lagda.md | 4 +- src/synthetic-homotopy-theory/circle.lagda.md | 2 +- 10 files changed, 171 insertions(+), 50 deletions(-) diff --git a/src/foundation-core/commuting-squares-of-identifications.lagda.md b/src/foundation-core/commuting-squares-of-identifications.lagda.md index 99162fb3bf..a2fe9607fa 100644 --- a/src/foundation-core/commuting-squares-of-identifications.lagda.md +++ b/src/foundation-core/commuting-squares-of-identifications.lagda.md @@ -1,6 +1,8 @@ l# Commuting squares of identifications ```agda +{-# OPTIONS --allow-unsolved-metas #-} + module foundation-core.commuting-squares-of-identifications where ``` @@ -254,12 +256,26 @@ module _ (top : x = y) (left : x = z) (right : y = w) (bottom : z = w) where - top-concat-identification-coherence-square-identifications : + concat-top-identification-coherence-square-identifications : {top' : x = y} (s : top = top') → coherence-square-identifications top left right bottom → coherence-square-identifications top' left right bottom - top-concat-identification-coherence-square-identifications s sq = + concat-top-identification-coherence-square-identifications s sq = sq ∙ ap (concat' _ right) s + + inv-concat-top-identification-coherence-square-identifications : + {top' : x = y} (s : top = top') → + coherence-square-identifications top' left right bottom → + coherence-square-identifications top left right bottom + inv-concat-top-identification-coherence-square-identifications s t = + t ∙ inv (ap (concat' _ right) s) + + equiv-concat-top-identification-coherence-square-identifications : + {top' : x = y} (s : top = top') → + coherence-square-identifications top left right bottom ≃ + coherence-square-identifications top' left right bottom + equiv-concat-top-identification-coherence-square-identifications s = + {!equiv-concat'!} ``` #### Concatenating identifications of the left edge with a coherence of a commuting square of identifications @@ -563,7 +579,7 @@ module _ coherence-square-identifications top left right bottom → coherence-square-identifications (top ∙ p) left (inv p ∙ right) bottom right-splice-coherence-square-identifications refl = - top-concat-identification-coherence-square-identifications + concat-top-identification-coherence-square-identifications ( top) ( left) ( right) diff --git a/src/foundation-core/identity-types.lagda.md b/src/foundation-core/identity-types.lagda.md index 7e0f483ba4..2ef537c07b 100644 --- a/src/foundation-core/identity-types.lagda.md +++ b/src/foundation-core/identity-types.lagda.md @@ -14,11 +14,27 @@ open import foundation.universe-levels ## Idea -The equality relation on a type is a reflexive relation, with the universal -property that it maps uniquely into any other reflexive relation. In type -theory, we introduce the identity type as an inductive family of types, where -the induction principle can be understood as expressing that the identity type -is the least reflexive relation. +The equality relation on a type is introduced as binary family of types + +```text + Id : A → A → 𝒰 +``` + +equipped with a proof of reflexivity + +```text + refl : (x : A) → Id x x. +``` + +In other words, the identity type is a reflexive +[type valued relation](foundation.binary-relations.md) on `A`. Furthermore, the +identity type on `A` satisfies the +[universal property](foundation.universal-property-identity-types.md) that it +maps uniquely into any other reflexive relation. + +In type theory, we introduce the identity type as an inductive family of types, +where the induction principle can be understood as expressing that the identity +type is the least reflexive relation. ### Notation of the identity type @@ -53,6 +69,14 @@ identifications in arbitrary types. ## Definition +### Identity types + +We introduce identity types as a `data` type. This is Agda's mechanism of introducing types equipped with induction principles. The only constructor of the identity type `Id x : A → 𝒰` is the reflexivity identification + +```text + refl : Id x x. +``` + ```agda module _ {l : Level} {A : UU l} @@ -68,7 +92,11 @@ module _ {-# BUILTIN EQUALITY Id #-} ``` -### The induction principle +We marked `refl` as an `instance` to enable Agda to automatically insert `refl` in definitions that make use of Agda's [instance search mechanism](https://agda.readthedocs.io/en/latest/language/instance-arguments.html). + +Furthermore, we marked the identity type as [`BUILTIN`](https://agda.readthedocs.io/en/latest/language/built-ins.html) in order to support faster type checking. + +### The induction principle of identity types The induction principle of identity types states that given a base point `x : A` and a family of types over the identity types based at `x`, @@ -87,9 +115,11 @@ ind-Id : ind-Id x B b y refl = b ``` -## Structure +## Operations on the identity type -The identity types form a weak groupoidal structure on types. +The identity types form a weak groupoidal structure on types. Thus they come equipped with **concatenation** `(x = y) → (y = z) → (x = z)` and an **inverse operation** `(x = y) → (y = x)`. + +There are many more operations on identity types. Some of them are defined in [path algebra](foundation.path-algebra.md) and [whiskering of identifications](foundation.whiskering-identifications.md). For a complete reference to all the files about general identity types, see the table given above. ### Concatenation of identifications @@ -120,7 +150,33 @@ module _ inv refl = refl ``` -### The groupoidal laws for types +### Concatenating with inverse identifications + +```agda +module _ + {l : Level} {A : UU l} + where + + inv-concat : {x y : A} (p : x = y) (z : A) → x = z → y = z + inv-concat p = concat (inv p) + + inv-concat' : (x : A) {y z : A} → y = z → x = z → x = y + inv-concat' x q = concat' x (inv q) +``` + +## Properties + +### Associativity of concatenation + +For any three identifications `p : x = y`, `q : y = z`, and `r : z = w`, we have an identification + +```text + assoc p q r : ((p ∙ q) ∙ r) = (p ∙ (q ∙ r)). +``` + +The identification `assoc p q r` is also called the {{#concept "associator" Disambiguation="identification" Agda=assoc}}. + +Note that the associator `assoc p q r` is an identification in the type `x = w`, i.e., it is an identification of identifications. Here we make crucial use of the fact that the identity types are defined _for all types_. In other words, since identity types are themselves types, we can consider identity types of identity types, and so on. ```agda module _ @@ -131,21 +187,67 @@ module _ {x y z w : A} (p : x = y) (q : y = z) (r : z = w) → ((p ∙ q) ∙ r) = (p ∙ (q ∙ r)) assoc refl q r = refl +``` + +### The unit laws for concatenation + +For any identification `p : x = y` there is an identification + +```text + left-unit : (refl ∙ p) = p. +``` + +Similarly, there is an identification + +```text + right-unit : (p ∙ refl) = p. +``` + +In other words, the reflexivity identification is a unit element for concatenation of identifications. + +```agda +module _ + {l : Level} {A : UU l} + where left-unit : {x y : A} {p : x = y} → refl ∙ p = p left-unit = refl right-unit : {x y : A} {p : x = y} → p ∙ refl = p right-unit {p = refl} = refl +``` + +### The inverse laws for concatenation + +```agda +module _ + {l : Level} {A : UU l} + where left-inv : {x y : A} (p : x = y) → inv p ∙ p = refl left-inv refl = refl right-inv : {x y : A} (p : x = y) → p ∙ (inv p) = refl right-inv refl = refl +``` + +### Inverting identifications is an involution + +```agda +module _ + {l : Level} {A : UU l} + where inv-inv : {x y : A} (p : x = y) → inv (inv p) = p inv-inv refl = refl +``` + +### Inverting identifications distributes over concatenation + +```agda +module _ + {l : Level} {A : UU l} + where distributive-inv-concat : {x y : A} (p : x = y) {z : A} (q : y = z) → @@ -153,6 +255,30 @@ module _ distributive-inv-concat refl refl = refl ``` +### Concatenating with an inverse is inverse to concatenating + +```agda +module _ + {l : Level} {A : UU l} + where + + is-retraction-inv-concat : + {x y z : A} (p : x = y) (q : y = z) → (inv p ∙ (p ∙ q)) = q + is-retraction-inv-concat refl q = refl + + is-section-inv-concat : + {x y z : A} (p : x = y) (r : x = z) → (p ∙ (inv p ∙ r)) = r + is-section-inv-concat refl refl = refl + + is-retraction-inv-concat' : + {x y z : A} (q : y = z) (p : x = y) → (p ∙ q) ∙ inv q = p + is-retraction-inv-concat' refl refl = refl + + is-section-inv-concat' : + {x y z : A} (q : y = z) (r : x = z) → (r ∙ inv q) ∙ q = r + is-section-inv-concat' refl refl = refl +``` + ### Transposing inverses ```agda @@ -234,6 +360,10 @@ step-equational-reasoning p z q = p ∙ q syntax step-equational-reasoning p z q = p = z by q ``` +**Note.** Equational reasoning is a convenient way to construct identifications. However, in some situations it may not be the fastest or cleanest mechanism to construct an identification. Some constructions of identifications naturally involve computations that are more deeply nested in the terms. Furthermore, proofs by equational reasoning tend to require a lot of reassociation. + +Some tools that allow us to perform faster comutations are the transpositions defined above, the transpositions and splicing operations defined in [commuting squares of identifications](foundation.commuting-squares-identifications.md) and [commuting triangles of identifications](foundation.commuting-triangles-of-identifications.md), and the higher concatenation operations defined in [path algebra](foundation.path-algebra.md). Each of these operations has good computational behavior, so there is infrastructure for reasoning about identifications that are constructed using them. + ## References Our setup of equational reasoning is derived from the following sources: diff --git a/src/foundation/commuting-squares-of-maps.lagda.md b/src/foundation/commuting-squares-of-maps.lagda.md index b7a0824da4..d5b240a547 100644 --- a/src/foundation/commuting-squares-of-maps.lagda.md +++ b/src/foundation/commuting-squares-of-maps.lagda.md @@ -342,7 +342,7 @@ module _ ( top (map-inv-equiv left (map-equiv left a)))) ( is-retraction-map-inv-equiv right (top a)) ( ap top (is-retraction-map-inv-equiv left a)) - ( top-concat-identification-coherence-square-identifications + ( concat-top-identification-coherence-square-identifications ( _) ( ap ( map-inv-equiv right) @@ -372,7 +372,7 @@ module _ ( map-equiv right ∘ top) ( is-retraction-map-inv-equiv left a)) ( nat-htpy H (is-retraction-map-inv-equiv left a)))) - ( top-concat-identification-coherence-square-identifications _ _ _ + ( concat-top-identification-coherence-square-identifications _ _ _ ( ap top (is-retraction-map-inv-equiv left a)) ( ap-comp ( map-inv-equiv right) @@ -421,7 +421,6 @@ module _ ( ap bottom (is-section-map-inv-equiv left a))))) ∙ ( is-section-inv-concat ( H (map-inv-equiv left a)) - ( _) ( ap bottom (is-section-map-inv-equiv left a))))) ``` diff --git a/src/foundation/equivalences.lagda.md b/src/foundation/equivalences.lagda.md index 60646de818..1411773d43 100644 --- a/src/foundation/equivalences.lagda.md +++ b/src/foundation/equivalences.lagda.md @@ -232,7 +232,7 @@ the original identifications. ( left-whisker-identification ( is-retraction-map-inv-equiv e x) ( htpy-map-eq-transpose-equiv refl)) ∙ - ( is-section-inv-concat (is-retraction-map-inv-equiv e x) _ refl) + ( is-section-inv-concat (is-retraction-map-inv-equiv e x) refl) triangle-eq-transpose-equiv-inv' : {x : A} {y : B} (p : y = map-equiv e x) → diff --git a/src/foundation/homotopies.lagda.md b/src/foundation/homotopies.lagda.md index b901892c53..96e37ef466 100644 --- a/src/foundation/homotopies.lagda.md +++ b/src/foundation/homotopies.lagda.md @@ -95,12 +95,12 @@ module _ is-section-concat-inv-htpy' : ((concat-htpy' f K) ∘ (concat-inv-htpy' f K)) ~ id is-section-concat-inv-htpy' L = - eq-htpy (λ x → is-section-inv-concat' (f x) (K x) (L x)) + eq-htpy (λ x → is-section-inv-concat' (K x) (L x)) is-retraction-concat-inv-htpy' : ((concat-inv-htpy' f K) ∘ (concat-htpy' f K)) ~ id is-retraction-concat-inv-htpy' L = - eq-htpy (λ x → is-retraction-inv-concat' (f x) (K x) (L x)) + eq-htpy (λ x → is-retraction-inv-concat' (K x) (L x)) is-equiv-concat-htpy' : is-equiv (concat-htpy' f K) is-equiv-concat-htpy' = diff --git a/src/foundation/identity-types.lagda.md b/src/foundation/identity-types.lagda.md index 25c31b5e1d..f6fe25e353 100644 --- a/src/foundation/identity-types.lagda.md +++ b/src/foundation/identity-types.lagda.md @@ -73,25 +73,14 @@ module _ pr1 (equiv-inv x y) = inv pr2 (equiv-inv x y) = is-equiv-inv x y - inv-concat : {x y : A} (p : x = y) (z : A) → x = z → y = z - inv-concat p = concat (inv p) - - is-retraction-inv-concat : - {x y : A} (p : x = y) (z : A) → (inv-concat p z ∘ concat p z) ~ id - is-retraction-inv-concat refl z q = refl - - is-section-inv-concat : - {x y : A} (p : x = y) (z : A) → (concat p z ∘ inv-concat p z) ~ id - is-section-inv-concat refl z refl = refl - abstract is-equiv-concat : {x y : A} (p : x = y) (z : A) → is-equiv (concat p z) is-equiv-concat p z = is-equiv-is-invertible ( inv-concat p z) - ( is-section-inv-concat p z) - ( is-retraction-inv-concat p z) + ( is-section-inv-concat p) + ( is-retraction-inv-concat p) equiv-concat : {x y : A} (p : x = y) (z : A) → (y = z) ≃ (x = z) @@ -126,25 +115,14 @@ module _ pr1 equiv-concat-equiv = map-equiv-concat-equiv pr2 equiv-concat-equiv = is-equiv-map-equiv-concat-equiv - inv-concat' : (x : A) {y z : A} → y = z → x = z → x = y - inv-concat' x q = concat' x (inv q) - - is-retraction-inv-concat' : - (x : A) {y z : A} (q : y = z) → (inv-concat' x q ∘ concat' x q) ~ id - is-retraction-inv-concat' x refl refl = refl - - is-section-inv-concat' : - (x : A) {y z : A} (q : y = z) → (concat' x q ∘ inv-concat' x q) ~ id - is-section-inv-concat' x refl refl = refl - abstract is-equiv-concat' : (x : A) {y z : A} (q : y = z) → is-equiv (concat' x q) is-equiv-concat' x q = is-equiv-is-invertible ( inv-concat' x q) - ( is-section-inv-concat' x q) - ( is-retraction-inv-concat' x q) + ( is-section-inv-concat' q) + ( is-retraction-inv-concat' q) equiv-concat' : (x : A) {y z : A} (q : y = z) → (x = y) ≃ (x = z) diff --git a/src/foundation/surjective-maps.lagda.md b/src/foundation/surjective-maps.lagda.md index d7bb55966b..986673a828 100644 --- a/src/foundation/surjective-maps.lagda.md +++ b/src/foundation/surjective-maps.lagda.md @@ -771,7 +771,7 @@ module _ ( is-section-map-inv-is-equiv ( K (i a) (j (f a))) ( L a ∙ inv (M (f a))))) ∙ - ( is-section-inv-concat' (g (i a)) (M (f a)) (L a))))) + ( is-section-inv-concat' (M (f a)) (L a))))) where J : (b : B) → fiber g (h b) diff --git a/src/orthogonal-factorization-systems/functoriality-higher-modalities.lagda.md b/src/orthogonal-factorization-systems/functoriality-higher-modalities.lagda.md index 809cfe5f1c..13a3b472ff 100644 --- a/src/orthogonal-factorization-systems/functoriality-higher-modalities.lagda.md +++ b/src/orthogonal-factorization-systems/functoriality-higher-modalities.lagda.md @@ -165,7 +165,7 @@ module _ ( ap ( ap-map-higher-modality m g) ( compute-rec-higher-modality m (unit-higher-modality m ∘ f) x)) - ( is-section-inv-concat' _ + ( is-section-inv-concat' ( compute-rec-higher-modality m (unit-higher-modality m ∘ g ∘ f) x) ( compute-rec-higher-modality m (unit-higher-modality m ∘ g) (f x)))) ``` diff --git a/src/orthogonal-factorization-systems/lifting-squares.lagda.md b/src/orthogonal-factorization-systems/lifting-squares.lagda.md index dc55b122c4..79a1aaecde 100644 --- a/src/orthogonal-factorization-systems/lifting-squares.lagda.md +++ b/src/orthogonal-factorization-systems/lifting-squares.lagda.md @@ -197,7 +197,6 @@ module _ ( inv right-unit)))) ∙ ( is-retraction-inv-concat ( right-unit) - ( _) ( coherence-lifting-square l x ∙ inv right-unit))) ( α)) ∙ ( ( assoc (coherence-lifting-square l x) (inv right-unit) (α)) ∙ @@ -210,10 +209,9 @@ module _ ( ap g (is-extension-lifting-square l x)))) ∙ ( ( is-retraction-inv-concat ( right-unit) - ( _) ( left-whisker-identification (H x) (inv right-unit))) ∙ ( inv - ( is-section-inv-concat' _ α + ( is-section-inv-concat' α ( left-whisker-identification (H x) (inv right-unit))))))) ∙ ( ( inv ( assoc diff --git a/src/synthetic-homotopy-theory/circle.lagda.md b/src/synthetic-homotopy-theory/circle.lagda.md index f93bdd6992..ba7b508fe6 100644 --- a/src/synthetic-homotopy-theory/circle.lagda.md +++ b/src/synthetic-homotopy-theory/circle.lagda.md @@ -352,7 +352,7 @@ apply-loop-universal-property-𝕊¹-sphere-1-circle-sphere-1 = ( meridian-sphere 0 (one-Fin 1))) ∙ ( left-whisker-identification ( sphere-1-circle-base-𝕊¹-eq-north-sphere-1) - ( is-section-inv-concat' _ + ( is-section-inv-concat' ( meridian-sphere 0 (one-Fin 1)) ( meridian-sphere 0 (zero-Fin 1)))) From 6ffcafff3dfc3752b9bcde17fe5749d11727fcf7 Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Wed, 31 Jan 2024 19:36:39 +0100 Subject: [PATCH 058/150] explanation --- src/foundation-core/identity-types.lagda.md | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/foundation-core/identity-types.lagda.md b/src/foundation-core/identity-types.lagda.md index 2ef537c07b..d01b60a98f 100644 --- a/src/foundation-core/identity-types.lagda.md +++ b/src/foundation-core/identity-types.lagda.md @@ -257,6 +257,22 @@ module _ ### Concatenating with an inverse is inverse to concatenating +We show that the operation `q ↦ inv p ∙ q` is inverse to the operation `q ↦ p ∙ q` by constructing identifications + +```text + inv p ∙ (p ∙ q) = q + p ∙ (inv p ∙ q) = q. +``` + +Similarly, we show that the operation `p ↦ p ∙ inv q` is inverse to the operation `p ↦ p ∙ q` by constructing identifications + +```text + (p ∙ q) ∙ inv q = p + (p ∙ inv q) ∙ q = p. +``` + +In [`foundation.identity-types`](foundation.identity-types.md)` we will use these families of identifications to conclude that `concat p z` and `concat' x q` are [equivalences](foundation-core.equivalences.md) with inverses `concat (inv p) z` and `concat' x (inv q)`, respectively. + ```agda module _ {l : Level} {A : UU l} From 8a034fae6cd58f8d3dbe0fcabb87eb3a50b76e38 Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Wed, 31 Jan 2024 19:36:58 +0100 Subject: [PATCH 059/150] make pre-commit --- src/foundation-core/identity-types.lagda.md | 67 ++++++++++++++++----- 1 file changed, 52 insertions(+), 15 deletions(-) diff --git a/src/foundation-core/identity-types.lagda.md b/src/foundation-core/identity-types.lagda.md index d01b60a98f..d84a7afa01 100644 --- a/src/foundation-core/identity-types.lagda.md +++ b/src/foundation-core/identity-types.lagda.md @@ -71,7 +71,9 @@ identifications in arbitrary types. ### Identity types -We introduce identity types as a `data` type. This is Agda's mechanism of introducing types equipped with induction principles. The only constructor of the identity type `Id x : A → 𝒰` is the reflexivity identification +We introduce identity types as a `data` type. This is Agda's mechanism of +introducing types equipped with induction principles. The only constructor of +the identity type `Id x : A → 𝒰` is the reflexivity identification ```text refl : Id x x. @@ -92,9 +94,13 @@ module _ {-# BUILTIN EQUALITY Id #-} ``` -We marked `refl` as an `instance` to enable Agda to automatically insert `refl` in definitions that make use of Agda's [instance search mechanism](https://agda.readthedocs.io/en/latest/language/instance-arguments.html). +We marked `refl` as an `instance` to enable Agda to automatically insert `refl` +in definitions that make use of Agda's +[instance search mechanism](https://agda.readthedocs.io/en/latest/language/instance-arguments.html). -Furthermore, we marked the identity type as [`BUILTIN`](https://agda.readthedocs.io/en/latest/language/built-ins.html) in order to support faster type checking. +Furthermore, we marked the identity type as +[`BUILTIN`](https://agda.readthedocs.io/en/latest/language/built-ins.html) in +order to support faster type checking. ### The induction principle of identity types @@ -117,9 +123,15 @@ ind-Id x B b y refl = b ## Operations on the identity type -The identity types form a weak groupoidal structure on types. Thus they come equipped with **concatenation** `(x = y) → (y = z) → (x = z)` and an **inverse operation** `(x = y) → (y = x)`. +The identity types form a weak groupoidal structure on types. Thus they come +equipped with **concatenation** `(x = y) → (y = z) → (x = z)` and an +**inverse operation** `(x = y) → (y = x)`. -There are many more operations on identity types. Some of them are defined in [path algebra](foundation.path-algebra.md) and [whiskering of identifications](foundation.whiskering-identifications.md). For a complete reference to all the files about general identity types, see the table given above. +There are many more operations on identity types. Some of them are defined in +[path algebra](foundation.path-algebra.md) and +[whiskering of identifications](foundation.whiskering-identifications.md). For a +complete reference to all the files about general identity types, see the table +given above. ### Concatenation of identifications @@ -168,15 +180,21 @@ module _ ### Associativity of concatenation -For any three identifications `p : x = y`, `q : y = z`, and `r : z = w`, we have an identification +For any three identifications `p : x = y`, `q : y = z`, and `r : z = w`, we +have an identification ```text assoc p q r : ((p ∙ q) ∙ r) = (p ∙ (q ∙ r)). ``` -The identification `assoc p q r` is also called the {{#concept "associator" Disambiguation="identification" Agda=assoc}}. +The identification `assoc p q r` is also called the +{{#concept "associator" Disambiguation="identification" Agda=assoc}}. -Note that the associator `assoc p q r` is an identification in the type `x = w`, i.e., it is an identification of identifications. Here we make crucial use of the fact that the identity types are defined _for all types_. In other words, since identity types are themselves types, we can consider identity types of identity types, and so on. +Note that the associator `assoc p q r` is an identification in the type +`x = w`, i.e., it is an identification of identifications. Here we make crucial +use of the fact that the identity types are defined _for all types_. In other +words, since identity types are themselves types, we can consider identity types +of identity types, and so on. ```agda module _ @@ -203,7 +221,8 @@ Similarly, there is an identification right-unit : (p ∙ refl) = p. ``` -In other words, the reflexivity identification is a unit element for concatenation of identifications. +In other words, the reflexivity identification is a unit element for +concatenation of identifications. ```agda module _ @@ -257,21 +276,27 @@ module _ ### Concatenating with an inverse is inverse to concatenating -We show that the operation `q ↦ inv p ∙ q` is inverse to the operation `q ↦ p ∙ q` by constructing identifications +We show that the operation `q ↦ inv p ∙ q` is inverse to the operation +`q ↦ p ∙ q` by constructing identifications ```text inv p ∙ (p ∙ q) = q p ∙ (inv p ∙ q) = q. ``` -Similarly, we show that the operation `p ↦ p ∙ inv q` is inverse to the operation `p ↦ p ∙ q` by constructing identifications +Similarly, we show that the operation `p ↦ p ∙ inv q` is inverse to the +operation `p ↦ p ∙ q` by constructing identifications ```text (p ∙ q) ∙ inv q = p (p ∙ inv q) ∙ q = p. ``` -In [`foundation.identity-types`](foundation.identity-types.md)` we will use these families of identifications to conclude that `concat p z` and `concat' x q` are [equivalences](foundation-core.equivalences.md) with inverses `concat (inv p) z` and `concat' x (inv q)`, respectively. +In +[`foundation.identity-types`](foundation.identity-types.md)`we will use these families of identifications to conclude that`concat +p z`and`concat' x +q`are [equivalences](foundation-core.equivalences.md) with inverses`concat (inv +p) z`and`concat' x (inv q)`, respectively. ```agda module _ @@ -376,9 +401,21 @@ step-equational-reasoning p z q = p ∙ q syntax step-equational-reasoning p z q = p = z by q ``` -**Note.** Equational reasoning is a convenient way to construct identifications. However, in some situations it may not be the fastest or cleanest mechanism to construct an identification. Some constructions of identifications naturally involve computations that are more deeply nested in the terms. Furthermore, proofs by equational reasoning tend to require a lot of reassociation. - -Some tools that allow us to perform faster comutations are the transpositions defined above, the transpositions and splicing operations defined in [commuting squares of identifications](foundation.commuting-squares-identifications.md) and [commuting triangles of identifications](foundation.commuting-triangles-of-identifications.md), and the higher concatenation operations defined in [path algebra](foundation.path-algebra.md). Each of these operations has good computational behavior, so there is infrastructure for reasoning about identifications that are constructed using them. +**Note.** Equational reasoning is a convenient way to construct identifications. +However, in some situations it may not be the fastest or cleanest mechanism to +construct an identification. Some constructions of identifications naturally +involve computations that are more deeply nested in the terms. Furthermore, +proofs by equational reasoning tend to require a lot of reassociation. + +Some tools that allow us to perform faster comutations are the transpositions +defined above, the transpositions and splicing operations defined in +[commuting squares of identifications](foundation.commuting-squares-identifications.md) +and +[commuting triangles of identifications](foundation.commuting-triangles-of-identifications.md), +and the higher concatenation operations defined in +[path algebra](foundation.path-algebra.md). Each of these operations has good +computational behavior, so there is infrastructure for reasoning about +identifications that are constructed using them. ## References From fe3fd1e038c45cbb220e8ec6546f6e2b36cfcacf Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Thu, 1 Feb 2024 00:30:08 +0100 Subject: [PATCH 060/150] concatenation lemmas for commuting squares of identifications --- ...muting-squares-of-identifications.lagda.md | 188 +++++++++++++++--- 1 file changed, 163 insertions(+), 25 deletions(-) diff --git a/src/foundation-core/commuting-squares-of-identifications.lagda.md b/src/foundation-core/commuting-squares-of-identifications.lagda.md index a2fe9607fa..c108bfcf33 100644 --- a/src/foundation-core/commuting-squares-of-identifications.lagda.md +++ b/src/foundation-core/commuting-squares-of-identifications.lagda.md @@ -1,8 +1,6 @@ l# Commuting squares of identifications ```agda -{-# OPTIONS --allow-unsolved-metas #-} - module foundation-core.commuting-squares-of-identifications where ``` @@ -10,11 +8,14 @@ module foundation-core.commuting-squares-of-identifications where ```agda open import foundation.action-on-identifications-functions +open import foundation.dependent-pair-types open import foundation.universe-levels open import foundation-core.equivalences open import foundation-core.function-types open import foundation-core.identity-types +open import foundation-core.retractions +open import foundation-core.sections ```
@@ -248,34 +249,60 @@ Then any identification witnessing that the square commutes can be concatenated with the identification on the side, to obtain a new commuting square of identifications. +**Note.** To avoid cyclic module dependencies we will give direct proofs that +concatenating identifications of edges of a square with the coherence of its commutativity is an equivalence. + #### Concatenating identifications of the top edge with a coherence of a commuting square of identifications ```agda module _ {l : Level} {A : UU l} {x y z w : A} (top : x = y) (left : x = z) (right : y = w) (bottom : z = w) + {top' : x = y} (s : top = top') where concat-top-identification-coherence-square-identifications : - {top' : x = y} (s : top = top') → coherence-square-identifications top left right bottom → coherence-square-identifications top' left right bottom - concat-top-identification-coherence-square-identifications s sq = - sq ∙ ap (concat' _ right) s + concat-top-identification-coherence-square-identifications t = + t ∙ ap (concat' _ right) s inv-concat-top-identification-coherence-square-identifications : - {top' : x = y} (s : top = top') → coherence-square-identifications top' left right bottom → coherence-square-identifications top left right bottom - inv-concat-top-identification-coherence-square-identifications s t = + inv-concat-top-identification-coherence-square-identifications t = t ∙ inv (ap (concat' _ right) s) + is-section-inv-concat-top-identification-coherence-square-identifications : + is-section + concat-top-identification-coherence-square-identifications + inv-concat-top-identification-coherence-square-identifications + is-section-inv-concat-top-identification-coherence-square-identifications = + is-section-inv-concat' (ap (concat' _ right) s) + + is-retraction-inv-concat-top-identification-coherence-square-identifications : + is-retraction + concat-top-identification-coherence-square-identifications + inv-concat-top-identification-coherence-square-identifications + is-retraction-inv-concat-top-identification-coherence-square-identifications = + is-retraction-inv-concat' (ap (concat' _ right) s) + + abstract + is-equiv-concat-top-identification-coherence-square-identifications : + is-equiv concat-top-identification-coherence-square-identifications + is-equiv-concat-top-identification-coherence-square-identifications = + is-equiv-is-invertible + inv-concat-top-identification-coherence-square-identifications + is-section-inv-concat-top-identification-coherence-square-identifications + is-retraction-inv-concat-top-identification-coherence-square-identifications + equiv-concat-top-identification-coherence-square-identifications : - {top' : x = y} (s : top = top') → coherence-square-identifications top left right bottom ≃ coherence-square-identifications top' left right bottom - equiv-concat-top-identification-coherence-square-identifications s = - {!equiv-concat'!} + pr1 equiv-concat-top-identification-coherence-square-identifications = + concat-top-identification-coherence-square-identifications + pr2 equiv-concat-top-identification-coherence-square-identifications = + is-equiv-concat-top-identification-coherence-square-identifications ``` #### Concatenating identifications of the left edge with a coherence of a commuting square of identifications @@ -284,13 +311,50 @@ module _ module _ {l : Level} {A : UU l} {x y z w : A} (top : x = y) (left : x = z) (right : y = w) (bottom : z = w) + {left' : x = z} (s : left = left') where - left-concat-identification-coherence-square-identifications : - {left' : x = z} (s : left = left') → + concat-left-identification-coherence-square-identifications : coherence-square-identifications top left right bottom → coherence-square-identifications top left' right bottom - left-concat-identification-coherence-square-identifications refl sq = sq + concat-left-identification-coherence-square-identifications t = + inv (ap (concat' _ bottom) s) ∙ t + + inv-concat-left-identification-coherence-square-identifications : + coherence-square-identifications top left' right bottom → + coherence-square-identifications top left right bottom + inv-concat-left-identification-coherence-square-identifications t = + ap (concat' _ bottom) s ∙ t + + is-section-inv-concat-left-identification-coherence-square-identifications : + is-section + concat-left-identification-coherence-square-identifications + inv-concat-left-identification-coherence-square-identifications + is-section-inv-concat-left-identification-coherence-square-identifications = + is-retraction-inv-concat (ap (concat' _ bottom) s) + + is-retraction-inv-concat-left-identification-coherence-square-identifications : + is-retraction + concat-left-identification-coherence-square-identifications + inv-concat-left-identification-coherence-square-identifications + is-retraction-inv-concat-left-identification-coherence-square-identifications = + is-section-inv-concat (ap (concat' _ bottom) s) + + is-equiv-concat-left-identification-coherence-square-identifications : + is-equiv concat-left-identification-coherence-square-identifications + is-equiv-concat-left-identification-coherence-square-identifications = + is-equiv-is-invertible + inv-concat-left-identification-coherence-square-identifications + is-section-inv-concat-left-identification-coherence-square-identifications + is-retraction-inv-concat-left-identification-coherence-square-identifications + + equiv-concat-left-identification-coherence-square-identifications : + coherence-square-identifications top left right bottom ≃ + coherence-square-identifications top left' right bottom + pr1 equiv-concat-left-identification-coherence-square-identifications = + concat-left-identification-coherence-square-identifications + pr2 equiv-concat-left-identification-coherence-square-identifications = + is-equiv-concat-left-identification-coherence-square-identifications ``` #### Concatenating identifications of the right edge with a coherence of a commuting square of identifications @@ -299,13 +363,51 @@ module _ module _ {l : Level} {A : UU l} {x y z w : A} (top : x = y) (left : x = z) (right : y = w) (bottom : z = w) + {right' : y = w} (s : right = right') where - right-concat-identification-coherence-square-identifications : - {right' : y = w} (s : right = right') → + concat-right-identification-coherence-square-identifications : coherence-square-identifications top left right bottom → coherence-square-identifications top left right' bottom - right-concat-identification-coherence-square-identifications refl sq = sq + concat-right-identification-coherence-square-identifications t = + t ∙ ap (concat top _) s + + inv-concat-right-identification-coherence-square-identifications : + coherence-square-identifications top left right' bottom → + coherence-square-identifications top left right bottom + inv-concat-right-identification-coherence-square-identifications t = + t ∙ inv (ap (concat top _) s) + + is-section-inv-concat-right-identification-coherence-square-identifications : + is-section + concat-right-identification-coherence-square-identifications + inv-concat-right-identification-coherence-square-identifications + is-section-inv-concat-right-identification-coherence-square-identifications = + is-section-inv-concat' (ap (concat top _) s) + + is-retraction-inv-concat-right-identification-coherence-square-identifications : + is-retraction + concat-right-identification-coherence-square-identifications + inv-concat-right-identification-coherence-square-identifications + is-retraction-inv-concat-right-identification-coherence-square-identifications = + is-retraction-inv-concat' (ap (concat top _) s) + + abstract + is-equiv-concat-right-identification-coherence-square-identifications : + is-equiv concat-right-identification-coherence-square-identifications + is-equiv-concat-right-identification-coherence-square-identifications = + is-equiv-is-invertible + inv-concat-right-identification-coherence-square-identifications + is-section-inv-concat-right-identification-coherence-square-identifications + is-retraction-inv-concat-right-identification-coherence-square-identifications + + equiv-concat-right-identification-coherence-square-identifications : + coherence-square-identifications top left right bottom ≃ + coherence-square-identifications top left right' bottom + pr1 equiv-concat-right-identification-coherence-square-identifications = + concat-right-identification-coherence-square-identifications + pr2 equiv-concat-right-identification-coherence-square-identifications = + is-equiv-concat-right-identification-coherence-square-identifications ``` #### Concatenating identifications of the bottom edge with a coherence of a commuting square of identifications @@ -314,14 +416,50 @@ module _ module _ {l : Level} {A : UU l} {x y z w : A} (top : x = y) (left : x = z) (right : y = w) (bottom : z = w) + {bottom' : z = w} (s : bottom = bottom') where - bottom-concat-identification-coherence-square-identifications : - {bottom' : z = w} (s : bottom = bottom') → + concat-bottom-identification-coherence-square-identifications : coherence-square-identifications top left right bottom → coherence-square-identifications top left right bottom' - bottom-concat-identification-coherence-square-identifications s sq = - {!!} + concat-bottom-identification-coherence-square-identifications t = + inv (ap (concat left _) s) ∙ t + + inv-concat-bottom-identification-coherence-square-identifications : + coherence-square-identifications top left right bottom' → + coherence-square-identifications top left right bottom + inv-concat-bottom-identification-coherence-square-identifications t = + ap (concat left _) s ∙ t + + is-section-inv-concat-bottom-identification-coherence-square-identifications : + is-section + concat-bottom-identification-coherence-square-identifications + inv-concat-bottom-identification-coherence-square-identifications + is-section-inv-concat-bottom-identification-coherence-square-identifications = + is-retraction-inv-concat (ap (concat left _) s) + + is-retraction-inv-concat-bottom-identification-coherence-square-identifications : + is-retraction + concat-bottom-identification-coherence-square-identifications + inv-concat-bottom-identification-coherence-square-identifications + is-retraction-inv-concat-bottom-identification-coherence-square-identifications = + is-section-inv-concat (ap (concat left _) s) + + is-equiv-concat-bottom-identification-coherence-square-identifications : + is-equiv concat-bottom-identification-coherence-square-identifications + is-equiv-concat-bottom-identification-coherence-square-identifications = + is-equiv-is-invertible + inv-concat-bottom-identification-coherence-square-identifications + is-section-inv-concat-bottom-identification-coherence-square-identifications + is-retraction-inv-concat-bottom-identification-coherence-square-identifications + + equiv-concat-bottom-identification-coherence-square-identifications : + coherence-square-identifications top left right bottom ≃ + coherence-square-identifications top left right bottom' + pr1 equiv-concat-bottom-identification-coherence-square-identifications = + concat-bottom-identification-coherence-square-identifications + pr2 equiv-concat-bottom-identification-coherence-square-identifications = + is-equiv-concat-bottom-identification-coherence-square-identifications ``` ### Whiskering and splicing coherences of commuting squares of identifications @@ -460,10 +598,10 @@ module _ equiv-left-whisker-coherence-square-identifications : (p : u = x) (top : x = y) (left : x = z) (right : y = w) (bottom : z = w) → - coherence-square-identifications top left right bottom → + coherence-square-identifications top left right bottom ≃ coherence-square-identifications (p ∙ top) (p ∙ left) right bottom equiv-left-whisker-coherence-square-identifications refl - top left right bottom = {!!} -- id-equiv + top left right bottom = id-equiv left-whisker-coherence-square-identifications : (p : u = x) @@ -501,13 +639,13 @@ module _ coherence-square-identifications top left right bottom → coherence-square-identifications top left (right ∙ p) (bottom ∙ p) right-whisker-coherence-square-identifications refl = - ( bottom-concat-identification-coherence-square-identifications + ( concat-bottom-identification-coherence-square-identifications ( top) ( left) ( right ∙ refl) ( bottom) ( inv right-unit)) ∘ - ( right-concat-identification-coherence-square-identifications + ( concat-right-identification-coherence-square-identifications ( top) ( left) ( right) @@ -543,7 +681,7 @@ module _ coherence-square-identifications top left right bottom → coherence-square-identifications top (left ∙ p) right (inv p ∙ bottom) left-splice-coherence-square-identifications refl = - left-concat-identification-coherence-square-identifications + concat-left-identification-coherence-square-identifications ( top) ( left) ( right) From 144a497fdc765489e1044175aa4b384b60a17ab9 Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Thu, 1 Feb 2024 00:32:28 +0100 Subject: [PATCH 061/150] make pre-commit --- .../commuting-squares-of-identifications.lagda.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/foundation-core/commuting-squares-of-identifications.lagda.md b/src/foundation-core/commuting-squares-of-identifications.lagda.md index c108bfcf33..b191cee709 100644 --- a/src/foundation-core/commuting-squares-of-identifications.lagda.md +++ b/src/foundation-core/commuting-squares-of-identifications.lagda.md @@ -1,4 +1,4 @@ -l# Commuting squares of identifications +# Commuting squares of identifications ```agda module foundation-core.commuting-squares-of-identifications where @@ -250,7 +250,8 @@ with the identification on the side, to obtain a new commuting square of identifications. **Note.** To avoid cyclic module dependencies we will give direct proofs that -concatenating identifications of edges of a square with the coherence of its commutativity is an equivalence. +concatenating identifications of edges of a square with the coherence of its +commutativity is an equivalence. #### Concatenating identifications of the top edge with a coherence of a commuting square of identifications From 5e0c38f7b87b68841f07e7fb07297a26f39db9a5 Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Thu, 1 Feb 2024 05:23:00 +0100 Subject: [PATCH 062/150] fix --- .../functoriality-suspensions.lagda.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/synthetic-homotopy-theory/functoriality-suspensions.lagda.md b/src/synthetic-homotopy-theory/functoriality-suspensions.lagda.md index a83e79c024..c5706895d6 100644 --- a/src/synthetic-homotopy-theory/functoriality-suspensions.lagda.md +++ b/src/synthetic-homotopy-theory/functoriality-suspensions.lagda.md @@ -90,7 +90,7 @@ module _ pr1 (pr2 htpy-function-out-of-suspension-id-map-suspension) = compute-south-map-suspension id pr2 (pr2 htpy-function-out-of-suspension-id-map-suspension) a = - right-concat-identification-coherence-square-identifications + concat-right-identification-coherence-square-identifications ( compute-north-map-suspension id) ( ap (map-suspension id) (meridian-suspension a)) ( meridian-suspension a) @@ -144,7 +144,7 @@ module _ ( ap (map-suspension (g ∘ f)) (meridian-suspension a)) ( _) ( _) - ( left-concat-identification-coherence-square-identifications + ( concat-left-identification-coherence-square-identifications ( ap (map-suspension g) (compute-north-map-suspension f)) ( ap (map-suspension g) (ap (map-suspension f) (meridian-suspension a))) ( ap (map-suspension g) (meridian-suspension (f a))) From c1ff686c5283307ec028318930beca50e1fd27e2 Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Thu, 1 Feb 2024 07:09:08 +0100 Subject: [PATCH 063/150] fix broken link --- src/foundation-core/identity-types.lagda.md | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/foundation-core/identity-types.lagda.md b/src/foundation-core/identity-types.lagda.md index d84a7afa01..68f6ddc2ca 100644 --- a/src/foundation-core/identity-types.lagda.md +++ b/src/foundation-core/identity-types.lagda.md @@ -322,6 +322,19 @@ module _ ### Transposing inverses +Consider a triangle of identifications + +```text + top + x ----> y + \ / + left \ / right + ∨ ∨ + z +``` + +in a type `A`. Then we can {{#concept "transpose"}} any identification `left = top ∙ right` to an identification + ```agda module _ {l : Level} {A : UU l} @@ -409,7 +422,7 @@ proofs by equational reasoning tend to require a lot of reassociation. Some tools that allow us to perform faster comutations are the transpositions defined above, the transpositions and splicing operations defined in -[commuting squares of identifications](foundation.commuting-squares-identifications.md) +[commuting squares of identifications](foundation.commuting-squares-of-identifications.md) and [commuting triangles of identifications](foundation.commuting-triangles-of-identifications.md), and the higher concatenation operations defined in From 0df50c5608c16d81497dfceac4a706bf18066f98 Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Thu, 1 Feb 2024 07:14:06 +0100 Subject: [PATCH 064/150] finish a sentence --- src/foundation-core/identity-types.lagda.md | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/src/foundation-core/identity-types.lagda.md b/src/foundation-core/identity-types.lagda.md index 68f6ddc2ca..9dcf5d7706 100644 --- a/src/foundation-core/identity-types.lagda.md +++ b/src/foundation-core/identity-types.lagda.md @@ -325,15 +325,22 @@ module _ Consider a triangle of identifications ```text - top - x ----> y - \ / - left \ / right - ∨ ∨ - z + p + x ----> y + \ / + r \ / q + ∨ ∨ + z ``` -in a type `A`. Then we can {{#concept "transpose"}} any identification `left = top ∙ right` to an identification +in a type `A`. Then we have maps + +```text + p ∙ q = r → q = inv p ∙ r + p ∙ q = r → p = r ∙ inv q. +``` + +In [`foundation.identity-types`](foundation.identity-types.md) we will show that these maps are equivalences. ```agda module _ From d1a6240a407286515b0d982d44497b6f6fbb4176 Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Thu, 1 Feb 2024 07:16:46 +0100 Subject: [PATCH 065/150] make pre-commit --- src/foundation-core/identity-types.lagda.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/foundation-core/identity-types.lagda.md b/src/foundation-core/identity-types.lagda.md index 9dcf5d7706..1b528f568b 100644 --- a/src/foundation-core/identity-types.lagda.md +++ b/src/foundation-core/identity-types.lagda.md @@ -340,7 +340,8 @@ in a type `A`. Then we have maps p ∙ q = r → p = r ∙ inv q. ``` -In [`foundation.identity-types`](foundation.identity-types.md) we will show that these maps are equivalences. +In [`foundation.identity-types`](foundation.identity-types.md) we will show that +these maps are equivalences. ```agda module _ From 993cc004250fbf772fbc536126ff43b7b54561cc Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Thu, 1 Feb 2024 07:19:00 +0100 Subject: [PATCH 066/150] removing a duplicate sentence --- src/foundation-core/identity-types.lagda.md | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/foundation-core/identity-types.lagda.md b/src/foundation-core/identity-types.lagda.md index 1b528f568b..fc62a66bf8 100644 --- a/src/foundation-core/identity-types.lagda.md +++ b/src/foundation-core/identity-types.lagda.md @@ -370,10 +370,6 @@ module _ double-transpose-eq-concat' r refl refl q α = right-unit ∙ (α ∙ right-unit) ``` -The fact that `left-transpose-eq-concat` and `right-transpose-eq-concat` are -equivalences is recorded in -[`foundation.identity-types`](foundation.identity-types.md). - ### Concatenation is injective ```agda From 11d5e70b9c020117b4bf95f901797e795ea7ccdc Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Thu, 1 Feb 2024 07:29:11 +0100 Subject: [PATCH 067/150] adding in some extra diagrams --- ...muting-squares-of-identifications.lagda.md | 98 +++++++++++++++++++ 1 file changed, 98 insertions(+) diff --git a/src/foundation-core/commuting-squares-of-identifications.lagda.md b/src/foundation-core/commuting-squares-of-identifications.lagda.md index b191cee709..249af52fb2 100644 --- a/src/foundation-core/commuting-squares-of-identifications.lagda.md +++ b/src/foundation-core/commuting-squares-of-identifications.lagda.md @@ -255,6 +255,31 @@ commutativity is an equivalence. #### Concatenating identifications of the top edge with a coherence of a commuting square of identifications +Consider a commuting diagram of identifications + +```text + top' + -------> + x -------> y + | top | + left | | right + ∨ ∨ + z -------> w. + bottom +``` + +with an identification `top = top'`. Then we get an equivalence + +```text + top top' + x -------> y x -------> y + | | | | + left | | right ≃ left | | right + ∨ ∨ ∨ ∨ + z -------> w z -------> w. + bottom bottom +``` + ```agda module _ {l : Level} {A : UU l} {x y z w : A} @@ -308,6 +333,30 @@ module _ #### Concatenating identifications of the left edge with a coherence of a commuting square of identifications +Consider a commuting diagram of identifications + +```text + top + x -------> y + | | | + left' | | left | right + ∨ ∨ ∨ + z -------> w. + bottom +``` + +with an identification `left = left'`. Then we get an equivalence + +```text + top top + x -------> y x -------> y + | | | | + left | | right ≃ left' | | right + ∨ ∨ ∨ ∨ + z -------> w z -------> w. + bottom bottom +``` + ```agda module _ {l : Level} {A : UU l} {x y z w : A} @@ -360,6 +409,30 @@ module _ #### Concatenating identifications of the right edge with a coherence of a commuting square of identifications +Consider a commuting diagram of identifications + +```text + top + x -------> y + | | | + left | right | | right' + ∨ ∨ ∨ + z -------> w. + bottom +``` + +with an identification `right = right'`. Then we get an equivalence + +```text + top top + x -------> y x -------> y + | | | | + left | | right ≃ left | | right' + ∨ ∨ ∨ ∨ + z -------> w z -------> w. + bottom bottom +``` + ```agda module _ {l : Level} {A : UU l} {x y z w : A} @@ -413,6 +486,31 @@ module _ #### Concatenating identifications of the bottom edge with a coherence of a commuting square of identifications +Consider a commuting diagram of identifications + +```text + top + x -------> y + | | + left | | right + ∨ bottom ∨ + z -------> w. + -------> + bottom' +``` + +with an identification `bottom = bottom'`. Then we get an equivalence + +```text + top top + x -------> y x -------> y + | | | | + left | | right ≃ left | | right + ∨ ∨ ∨ ∨ + z -------> w z -------> w. + bottom bottom' +``` + ```agda module _ {l : Level} {A : UU l} {x y z w : A} From eb4994d6d564d367d5b1f2caf9085e73ba4caad1 Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Thu, 1 Feb 2024 07:50:36 +0100 Subject: [PATCH 068/150] adding some extra corollaries --- ...muting-squares-of-identifications.lagda.md | 102 +++++++++++++++++- 1 file changed, 97 insertions(+), 5 deletions(-) diff --git a/src/foundation-core/commuting-squares-of-identifications.lagda.md b/src/foundation-core/commuting-squares-of-identifications.lagda.md index 249af52fb2..cb5b9cb2cc 100644 --- a/src/foundation-core/commuting-squares-of-identifications.lagda.md +++ b/src/foundation-core/commuting-squares-of-identifications.lagda.md @@ -709,6 +709,14 @@ module _ coherence-square-identifications (p ∙ top) (p ∙ left) right bottom left-whisker-coherence-square-identifications refl top left right bottom = id + + left-unwhisker-coherence-square-identifications : + (p : u = x) + (top : x = y) (left : x = z) (right : y = w) (bottom : z = w) → + coherence-square-identifications (p ∙ top) (p ∙ left) right bottom → + coherence-square-identifications top left right bottom + left-unwhisker-coherence-square-identifications refl top left right bottom = + id ``` #### Right whiskering coherences of commuting squares of identifications @@ -733,6 +741,24 @@ module _ (top : x = y) (left : x = z) (right : y = w) (bottom : z = w) where + equiv-right-whisker-coherence-square-identifications : + {u : A} (p : w = u) → + coherence-square-identifications top left right bottom ≃ + coherence-square-identifications top left (right ∙ p) (bottom ∙ p) + equiv-right-whisker-coherence-square-identifications refl = + ( equiv-concat-bottom-identification-coherence-square-identifications + ( top) + ( left) + ( right ∙ refl) + ( bottom) + ( inv right-unit)) ∘e + ( equiv-concat-right-identification-coherence-square-identifications + ( top) + ( left) + ( right) + ( bottom) + ( inv right-unit)) + right-whisker-coherence-square-identifications : {u : A} (p : w = u) → coherence-square-identifications top left right bottom → @@ -750,6 +776,24 @@ module _ ( right) ( bottom) ( inv right-unit)) + + right-unwhisker-cohernece-square-identifications : + {u : A} (p : w = u) → + coherence-square-identifications top left (right ∙ p) (bottom ∙ p) → + coherence-square-identifications top left right bottom + right-unwhisker-cohernece-square-identifications refl = + ( inv-concat-right-identification-coherence-square-identifications + ( top) + ( left) + ( right) + ( bottom) + ( inv right-unit)) ∘ + ( inv-concat-bottom-identification-coherence-square-identifications + ( top) + ( left) + ( right ∙ refl) + ( bottom) + ( inv right-unit)) ``` #### Left splicing coherences of commuting squares of identifications @@ -775,17 +819,41 @@ module _ (top : x = y) (left : x = z) (right : y = w) (bottom : z = w) where + equiv-left-splice-coherence-square-identifications : + {u : A} (p : z = u) (q : u = z) (α : inv p = q) → + coherence-square-identifications top left right bottom ≃ + coherence-square-identifications top (left ∙ p) right (q ∙ bottom) + equiv-left-splice-coherence-square-identifications refl .refl refl = + equiv-concat-left-identification-coherence-square-identifications + ( top) + ( left) + ( right) + ( bottom) + ( inv right-unit) + left-splice-coherence-square-identifications : - {u : A} (p : z = u) → + {u : A} (p : z = u) (q : u = z) (α : inv p = q) → coherence-square-identifications top left right bottom → - coherence-square-identifications top (left ∙ p) right (inv p ∙ bottom) - left-splice-coherence-square-identifications refl = + coherence-square-identifications top (left ∙ p) right (q ∙ bottom) + left-splice-coherence-square-identifications refl .refl refl = concat-left-identification-coherence-square-identifications ( top) ( left) ( right) ( bottom) ( inv right-unit) + + left-unsplice-coherence-square-identifications : + {u : A} (p : z = u) (q : u = z) (α : inv p = q) → + coherence-square-identifications top (left ∙ p) right (q ∙ bottom) → + coherence-square-identifications top left right bottom + left-unsplice-coherence-square-identifications refl .refl refl = + inv-concat-left-identification-coherence-square-identifications + ( top) + ( left) + ( right) + ( bottom) + ( inv right-unit) ``` #### Right splicing coherences of commuting squares of identifications @@ -811,15 +879,39 @@ module _ (top : x = y) (left : x = z) (right : y = w) (bottom : z = w) where + equiv-right-splice-coherence-square-identifications : + {u : A} (p : y = u) (q : u = y) (α : inv p = q) → + coherence-square-identifications top left right bottom ≃ + coherence-square-identifications (top ∙ p) left (inv p ∙ right) bottom + equiv-right-splice-coherence-square-identifications refl .refl refl = + equiv-concat-top-identification-coherence-square-identifications + ( top) + ( left) + ( right) + ( bottom) + ( inv right-unit) + right-splice-coherence-square-identifications : - {u : A} (p : y = u) → + {u : A} (p : y = u) (q : u = y) (α : inv p = q) → coherence-square-identifications top left right bottom → coherence-square-identifications (top ∙ p) left (inv p ∙ right) bottom - right-splice-coherence-square-identifications refl = + right-splice-coherence-square-identifications refl .refl refl = concat-top-identification-coherence-square-identifications ( top) ( left) ( right) ( bottom) ( inv right-unit) + + right-unsplice-coherence-square-identifications : + {u : A} (p : y = u) (q : u = y) (α : inv p = q) → + coherence-square-identifications (top ∙ p) left (inv p ∙ right) bottom → + coherence-square-identifications top left right bottom + right-unsplice-coherence-square-identifications refl .refl refl = + inv-concat-top-identification-coherence-square-identifications + ( top) + ( left) + ( right) + ( bottom) + ( inv right-unit) ``` From ac6ab178d8287d07996145f103a78efcf22a5c88 Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Thu, 1 Feb 2024 08:07:42 +0100 Subject: [PATCH 069/150] typos --- .../commuting-squares-of-identifications.lagda.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/foundation-core/commuting-squares-of-identifications.lagda.md b/src/foundation-core/commuting-squares-of-identifications.lagda.md index cb5b9cb2cc..3f89f7643e 100644 --- a/src/foundation-core/commuting-squares-of-identifications.lagda.md +++ b/src/foundation-core/commuting-squares-of-identifications.lagda.md @@ -798,8 +798,8 @@ module _ #### Left splicing coherences of commuting squares of identifications -For inverse pair of identifications `p : y = u` and `q : u = y` equipped with -`α : inv p = q` we obtain an equivalence +For any inverse pair of identifications `p : y = u` and `q : u = y` equipped +with `α : inv p = q` we obtain an equivalence ```text top top @@ -858,8 +858,8 @@ module _ #### Right splicing coherences of commuting squares of identifications -For inverse pair of identifications `p : y = u` and `q : u = y` equipped with -`α : inv p = q` we obtain an equivalence +For any inverse pair of identifications `p : y = u` and `q : u = y` equipped +with `α : inv p = q` we obtain an equivalence ```text top top ∙ p From 3c95ce3138c627710dbea7ef32e7e51a121d9d41 Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Thu, 1 Feb 2024 10:26:36 +0100 Subject: [PATCH 070/150] shortening proofs of pasting lemmas of commuting squares of identifications --- ...muting-squares-of-identifications.lagda.md | 2 - ...muting-squares-of-identifications.lagda.md | 43 +++++++++++++------ 2 files changed, 31 insertions(+), 14 deletions(-) diff --git a/src/foundation-core/commuting-squares-of-identifications.lagda.md b/src/foundation-core/commuting-squares-of-identifications.lagda.md index 3f89f7643e..0b84870dfe 100644 --- a/src/foundation-core/commuting-squares-of-identifications.lagda.md +++ b/src/foundation-core/commuting-squares-of-identifications.lagda.md @@ -690,8 +690,6 @@ of coherences of commuting squares of identifications. ```agda module _ {l : Level} {A : UU l} {x y z w u : A} - (p : u = x) - (top : x = y) (left : x = z) (right : y = w) (bottom : z = w) where equiv-left-whisker-coherence-square-identifications : diff --git a/src/foundation/commuting-squares-of-identifications.lagda.md b/src/foundation/commuting-squares-of-identifications.lagda.md index 6389cb0571..8274939d57 100644 --- a/src/foundation/commuting-squares-of-identifications.lagda.md +++ b/src/foundation/commuting-squares-of-identifications.lagda.md @@ -59,11 +59,21 @@ module _ coherence-square-identifications (top-left ∙ top-right) left right (bottom-left ∙ bottom-right) horizontal-pasting-coherence-square-identifications s t = - ( inv (assoc left bottom-left bottom-right)) ∙ - ( ( right-whisker-identification s bottom-right) ∙ - ( ( assoc top-left middle bottom-right) ∙ - ( ( left-whisker-identification top-left t) ∙ - ( inv (assoc top-left top-right right))))) + ( right-whisker-coherence-square-identifications + ( top-left) + ( left) + ( middle) + ( bottom-left) + ( bottom-right) + ( s)) ∙ + ( ( inv (assoc top-left middle bottom-right)) ∙ + ( left-whisker-coherence-square-identifications + ( top-left) + ( top-right) + ( middle) + ( right) + ( bottom-right) + ( t))) ``` ### Vertically pasting squares of identifications @@ -102,11 +112,21 @@ module _ coherence-square-identifications top (top-left ∙ bottom-left) (top-right ∙ bottom-right) bottom vertical-pasting-coherence-square-identifications p q = - ( assoc top-left bottom-left bottom) ∙ - ( ( left-whisker-identification top-left q) ∙ - ( ( inv (assoc top-left middle bottom-right)) ∙ - ( ( right-whisker-identification p bottom-right) ∙ - ( assoc top top-right bottom-right)))) + ( left-whisker-coherence-square-identifications + ( top-left) + ( middle) + ( bottom-left) + ( bottom-right) + ( bottom) + ( q)) ∙ + ( ( assoc top-left middle bottom-right) ∙ + ( right-whisker-coherence-square-identifications + ( top) + ( top-left) + ( top-right) + ( middle) + ( bottom-right) + ( p))) ``` ## Properties @@ -135,8 +155,7 @@ module _ ( s) = s left-unit-law-horizontal-pasting-coherence-square-identifications - top refl right bottom s = - right-unit ∙ ap-id s + refl refl right refl s = refl ``` ### Whiskering of squares of identifications From 79c35d3a61d83de172563ba8089327ab64f01656 Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Thu, 1 Feb 2024 11:01:57 +0100 Subject: [PATCH 071/150] removing more duplicates --- ...muting-squares-of-identifications.lagda.md | 24 +++++++ ...muting-squares-of-identifications.lagda.md | 67 ------------------- .../commuting-squares-of-maps.lagda.md | 8 ++- src/foundation/morphisms-arrows.lagda.md | 6 +- src/foundation/whiskering-homotopies.lagda.md | 37 +++++++--- 5 files changed, 63 insertions(+), 79 deletions(-) diff --git a/src/foundation-core/commuting-squares-of-identifications.lagda.md b/src/foundation-core/commuting-squares-of-identifications.lagda.md index 0b84870dfe..d310a4c459 100644 --- a/src/foundation-core/commuting-squares-of-identifications.lagda.md +++ b/src/foundation-core/commuting-squares-of-identifications.lagda.md @@ -913,3 +913,27 @@ module _ ( bottom) ( inv right-unit) ``` + +### Double whiskering of commuting squares of identifications + +```agda +module _ + {l : Level} {A : UU l} {x y z u v w : A} + where + + equiv-double-whisker-square-identifications : + (p : x = y) + (top : y = u) (left : y = z) (right : u = v) (bottom : z = v) + (s : v = w) → + coherence-square-identifications top left right bottom ≃ + coherence-square-identifications + ( p ∙ top) + ( p ∙ left) + ( right ∙ s) + ( bottom ∙ s) + equiv-double-whisker-square-identifications p top left right bottom q = + equiv-left-whisker-coherence-square-identifications p top left + ( right ∙ q) + ( bottom ∙ q) ∘e + equiv-right-whisker-coherence-square-identifications top left right bottom q +``` diff --git a/src/foundation/commuting-squares-of-identifications.lagda.md b/src/foundation/commuting-squares-of-identifications.lagda.md index 8274939d57..b71dd5dccb 100644 --- a/src/foundation/commuting-squares-of-identifications.lagda.md +++ b/src/foundation/commuting-squares-of-identifications.lagda.md @@ -157,70 +157,3 @@ module _ left-unit-law-horizontal-pasting-coherence-square-identifications refl refl right refl s = refl ``` - -### Whiskering of squares of identifications - -```agda -module _ - {l : Level} {A : UU l} {x y z u v : A} - (p : x = y) (p' : x = z) {q : y = u} {q' : z = u} (r : u = v) - where - - equiv-right-whisker-square-identification : - ( coherence-square-identifications p p' q q') ≃ - ( coherence-square-identifications p p' (q ∙ r) (q' ∙ r)) - equiv-right-whisker-square-identification = - ( equiv-concat-assoc' (p' ∙ (q' ∙ r)) p q r) ∘e - ( equiv-concat-assoc p' q' r (p ∙ q ∙ r)) ∘e - ( equiv-right-whisker-identification r) - - right-whisker-square-identification : - coherence-square-identifications p p' q q' → - coherence-square-identifications p p' (q ∙ r) (q' ∙ r) - right-whisker-square-identification = - map-equiv equiv-right-whisker-square-identification - - right-unwhisker-square-identifications : - coherence-square-identifications p p' (q ∙ r) (q' ∙ r) → - coherence-square-identifications p p' q q' - right-unwhisker-square-identifications = - map-inv-equiv equiv-right-whisker-square-identification - -module _ - {l : Level} {A : UU l} {x y z u v : A} - (p : v = x) {q : x = y} {q' : x = z} {r : y = u} {r' : z = u} - where - - equiv-left-whisker-square-identification : - ( coherence-square-identifications q q' r r') ≃ - ( coherence-square-identifications (p ∙ q) (p ∙ q') r r') - equiv-left-whisker-square-identification = - ( inv-equiv (equiv-concat-assoc p q' r' (p ∙ q ∙ r))) ∘e - ( inv-equiv (equiv-concat-assoc' (p ∙ (q' ∙ r')) p q r)) ∘e - ( equiv-left-whisker-identification p) - - left-whisker-square-identification : - coherence-square-identifications q q' r r' → - coherence-square-identifications (p ∙ q) (p ∙ q') r r' - left-whisker-square-identification = - map-equiv equiv-left-whisker-square-identification - - left-unwhisker-square-identification : - coherence-square-identifications (p ∙ q) (p ∙ q') r r' → - coherence-square-identifications q q' r r' - left-unwhisker-square-identification = - map-inv-equiv equiv-left-whisker-square-identification - -module _ - {l : Level} {A : UU l} {x y z u v w : A} - where - - equiv-both-whisker-square-identifications : - (p : x = y) {q : y = z} {q' : y = u} {r : z = v} {r' : u = v} → - (s : v = w) → - ( coherence-square-identifications q q' r r') ≃ - ( coherence-square-identifications (p ∙ q) (p ∙ q') (r ∙ s) (r' ∙ s)) - equiv-both-whisker-square-identifications p {q} {q'} s = - ( equiv-left-whisker-square-identification p) ∘e - ( equiv-right-whisker-square-identification q q' s) -``` diff --git a/src/foundation/commuting-squares-of-maps.lagda.md b/src/foundation/commuting-squares-of-maps.lagda.md index d5b240a547..aa6155e1ab 100644 --- a/src/foundation/commuting-squares-of-maps.lagda.md +++ b/src/foundation/commuting-squares-of-maps.lagda.md @@ -318,10 +318,14 @@ module _ ( ap bottom (is-section-map-inv-equiv left (map-equiv left a))))) ( ap (map-inv-equiv right) (H a)) ( is-retraction-map-inv-equiv right (top a))) ∙ - ( left-whisker-square-identification + ( left-whisker-coherence-square-identifications ( map-eq-transpose-equiv ( right) ( inv (H (map-inv-equiv left (map-equiv left a))))) + ( _) + ( _) + ( _) + ( _) ( inv ( vertical-pasting-coherence-square-identifications ( ap @@ -683,7 +687,7 @@ module _ ( bottom-right) ( sq-left-bottom ·r left-top) ( mid-bottom ·l sq-left-top)) ∙h - ( both-whisker-square-htpy + ( double-whisker-square-htpy ( bottom-right ·l (sq-left-bottom ·r left-top)) ( right-bottom ·l (sq-right-top ·r top-left)) ( inv-htpy diff --git a/src/foundation/morphisms-arrows.lagda.md b/src/foundation/morphisms-arrows.lagda.md index afbeabc757..32e66d6262 100644 --- a/src/foundation/morphisms-arrows.lagda.md +++ b/src/foundation/morphisms-arrows.lagda.md @@ -458,11 +458,15 @@ module _ ( nat-htpy ( coh-hom-arrow g h γ) ( htpy-domain-htpy-hom-arrow f g α β H a)))) ∙ - ( right-whisker-square-identification + ( right-whisker-coherence-square-identifications ( ap ( map-codomain-hom-arrow g h γ) ( htpy-codomain-htpy-hom-arrow f g α β H (f a))) ( ap (map-codomain-hom-arrow g h γ) (coh-hom-arrow f g α a)) + ( ap (map-codomain-hom-arrow g h γ) (coh-hom-arrow f g β a)) + ( ap + ( map-codomain-hom-arrow g h γ ∘ g) + ( htpy-domain-htpy-hom-arrow f g α β H a)) ( coh-hom-arrow g h γ (map-domain-hom-arrow f g β a)) ( ( ap ( ap (map-codomain-hom-arrow g h γ) (coh-hom-arrow f g α a) ∙_) diff --git a/src/foundation/whiskering-homotopies.lagda.md b/src/foundation/whiskering-homotopies.lagda.md index 20fdea9ebc..6ad291cdad 100644 --- a/src/foundation/whiskering-homotopies.lagda.md +++ b/src/foundation/whiskering-homotopies.lagda.md @@ -157,7 +157,13 @@ module _ ( coherence-square-homotopies H H' (K ∙h L) (K' ∙h L)) equiv-right-whisker-square-htpy = equiv-Π-equiv-family - ( λ a → equiv-right-whisker-square-identification (H a) (H' a) (L a)) + ( λ a → + equiv-right-whisker-coherence-square-identifications + ( H a) + ( H' a) + ( K a) + ( K' a) + ( L a)) right-whisker-square-htpy : coherence-square-homotopies H H' K K' → @@ -178,7 +184,13 @@ module _ ( coherence-square-homotopies (L ∙h H) (L ∙h H') K K') equiv-left-whisker-square-htpy = equiv-Π-equiv-family - ( λ a → equiv-left-whisker-square-identification (L a)) + ( λ a → + equiv-left-whisker-coherence-square-identifications + ( L a) + ( H a) + ( H' a) + ( K a) + ( K' a)) left-whisker-square-htpy : coherence-square-homotopies H H' K K' → @@ -196,22 +208,29 @@ module _ ( H : f ~ g) {K : g ~ h} {K' : g ~ h'} {L : h ~ k} {L' : h' ~ k} (M : k ~ m) where - equiv-both-whisker-square-htpy : + equiv-double-whisker-square-htpy : ( coherence-square-homotopies K K' L L') ≃ ( coherence-square-homotopies (H ∙h K) (H ∙h K') (L ∙h M) (L' ∙h M)) - equiv-both-whisker-square-htpy = + equiv-double-whisker-square-htpy = equiv-Π-equiv-family - ( λ a → equiv-both-whisker-square-identifications (H a) (M a)) - - both-whisker-square-htpy : + ( λ a → + equiv-double-whisker-square-identifications + ( H a) + ( K a) + ( K' a) + ( L a) + ( L' a) + ( M a)) + + double-whisker-square-htpy : ( coherence-square-homotopies K K' L L') → ( coherence-square-homotopies (H ∙h K) (H ∙h K') (L ∙h M) (L' ∙h M)) - both-whisker-square-htpy = map-equiv equiv-both-whisker-square-htpy + double-whisker-square-htpy = map-equiv equiv-double-whisker-square-htpy both-unwhisker-square-htpy : ( coherence-square-homotopies (H ∙h K) (H ∙h K') (L ∙h M) (L' ∙h M)) → ( coherence-square-homotopies K K' L L') - both-unwhisker-square-htpy = map-inv-equiv equiv-both-whisker-square-htpy + both-unwhisker-square-htpy = map-inv-equiv equiv-double-whisker-square-htpy ``` ### Whiskering a square of homotopies by a map From 15a48acb8481329e33e2ea22b99d125810ad5ece Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Thu, 1 Feb 2024 11:07:43 +0100 Subject: [PATCH 072/150] merging foundation-core and foundation files of commuting squares of identifications --- src/foundation-core.lagda.md | 2 +- ...muting-squares-of-identifications.lagda.md | 939 ------------------ ...-higher-identifications-functions.lagda.md | 2 +- ...muting-squares-of-identifications.lagda.md | 924 ++++++++++++++++- src/foundation/homotopies.lagda.md | 2 +- src/foundation/path-algebra.lagda.md | 2 +- tables/identity-types.md | 1 - 7 files changed, 921 insertions(+), 951 deletions(-) delete mode 100644 src/foundation-core/commuting-squares-of-identifications.lagda.md diff --git a/src/foundation-core.lagda.md b/src/foundation-core.lagda.md index 2f12ba23d9..d4279545f0 100644 --- a/src/foundation-core.lagda.md +++ b/src/foundation-core.lagda.md @@ -9,7 +9,7 @@ open import foundation-core.1-types public open import foundation-core.cartesian-product-types public open import foundation-core.coherently-invertible-maps public open import foundation-core.commuting-prisms-of-maps public -open import foundation-core.commuting-squares-of-identifications public +open import foundation.commuting-squares-of-identifications public open import foundation-core.commuting-squares-of-maps public open import foundation-core.commuting-triangles-of-maps public open import foundation-core.constant-maps public diff --git a/src/foundation-core/commuting-squares-of-identifications.lagda.md b/src/foundation-core/commuting-squares-of-identifications.lagda.md deleted file mode 100644 index d310a4c459..0000000000 --- a/src/foundation-core/commuting-squares-of-identifications.lagda.md +++ /dev/null @@ -1,939 +0,0 @@ -# Commuting squares of identifications - -```agda -module foundation-core.commuting-squares-of-identifications where -``` - -
Imports - -```agda -open import foundation.action-on-identifications-functions -open import foundation.dependent-pair-types -open import foundation.universe-levels - -open import foundation-core.equivalences -open import foundation-core.function-types -open import foundation-core.identity-types -open import foundation-core.retractions -open import foundation-core.sections -``` - -
- -## Idea - -A square of [identifications](foundation-core.identity-types.md) - -```text - top - x -------> y - | | - left | | right - ∨ ∨ - z -------> w - bottom -``` - -is said to **commute** if there is an identification -`left ∙ bottom = top ∙ right`. Such an identification is called a -{{#concept "coherence" Disambiguation="commuting square of identifications" Agda=coherence-square-identifications}} -of the square. - -## Definitions - -### Commuting squares of identifications - -```agda -module _ - {l : Level} {A : UU l} {x y z w : A} - (top : x = y) (left : x = z) (right : y = w) (bottom : z = w) - where - - coherence-square-identifications : UU l - coherence-square-identifications = left ∙ bottom = top ∙ right -``` - -### Horizontally constant squares - -{{#concept "Horizontally constant squares" Disambiguation="identifications" Agda=horizontal-refl-coherence-square-identifications}} -are commuting squares of identifications of the form - -```text - refl - a -----> a - | | - p | | p - ∨ ∨ - b -----> b. - refl -``` - -```agda -module _ - {l : Level} {A : UU l} {a b : A} (p : a = b) - where - - horizontal-refl-coherence-square-identifications : - coherence-square-identifications refl p p refl - horizontal-refl-coherence-square-identifications = right-unit -``` - -### Vertically constant squares - -{{#concept "Vertically constant squares" Disambiguation="identifications" Agda=vertical-refl-coherence-square-identifications}} -are commuting squares of identifications of the form - -```text - p - a -----> b - | | - refl | | refl - ∨ ∨ - a -----> b. - p -``` - -```agda -module _ - {l : Level} {A : UU l} {a b : A} (p : a = b) - where - - vertical-refl-coherence-square-identifications : - coherence-square-identifications p refl refl p - vertical-refl-coherence-square-identifications = inv right-unit -``` - -## Operations - -### Inverting squares of identifications horizontally - -Given a commuting square of identifications - -```text - top - x -------> y - | | - left | | right - ∨ ∨ - z -------> w, - bottom -``` - -the square of identifications - -```text - inv top - y ------------> x - | | - right | | left - ∨ ∨ - w ------------> z - inv bottom -``` - -commutes. - -```agda -module _ - {l : Level} {A : UU l} {x y z w : A} - where - - horizontal-inv-coherence-square-identifications : - (top : x = y) (left : x = z) (right : y = w) (bottom : z = w) → - coherence-square-identifications top left right bottom → - coherence-square-identifications (inv top) right left (inv bottom) - horizontal-inv-coherence-square-identifications refl refl right refl coh = - right-unit ∙ inv coh -``` - -### Inverting squares of identifications vertically - -Given a commuting square of identifications - -```text - top - x -------> y - | | - left | | right - ∨ ∨ - z -------> w, - bottom -``` - -the square of identifications - -```text - bottom - z -------> w - | | - inv left | | inv right - ∨ ∨ - x -------> y - top -``` - -commutes. - -```agda -module _ - {l : Level} {A : UU l} {x y z w : A} - where - - vertical-inv-coherence-square-identifications : - (top : x = y) (left : x = z) (right : y = w) (bottom : z = w) → - coherence-square-identifications top left right bottom → - coherence-square-identifications bottom (inv left) (inv right) top - vertical-inv-coherence-square-identifications refl refl refl refl refl = refl -``` - -### Functions acting on squares of identifications - -Given a commuting square of identifications - -```text - top - x -------> y - | | - left | | right - ∨ ∨ - z -------> w - bottom -``` - -in a type `A`, and given a map `f : A → B`, the square of identifications - -```text - ap f top - f x -----------> f y - | | - ap f left | | ap f right - ∨ ∨ - z -------------> w - ap f bottom -``` - -commutes. - -```agda -module _ - {l1 l2 : Level} {A : UU l1} {B : UU l2} {x y z w : A} (f : A → B) - where - - map-coherence-square-identifications : - (top : x = y) (left : x = z) (right : y = w) (bottom : z = w) → - coherence-square-identifications top left right bottom → - coherence-square-identifications - ( ap f top) - ( ap f left) - ( ap f right) - ( ap f bottom) - map-coherence-square-identifications refl refl right refl coh = ap (ap f) coh -``` - -### Concatenating identifications of edges and coherences of commuting squares of identifications - -Consider a commuting square of identifications and an identification of one of -the four sides with another identification, as for example in the diagram below: - -```text - top - a ---------> b - | | | - left | right |=| right' - ∨ ∨ ∨ - c ---------> d. - bottom -``` - -Then any identification witnessing that the square commutes can be concatenated -with the identification on the side, to obtain a new commuting square of -identifications. - -**Note.** To avoid cyclic module dependencies we will give direct proofs that -concatenating identifications of edges of a square with the coherence of its -commutativity is an equivalence. - -#### Concatenating identifications of the top edge with a coherence of a commuting square of identifications - -Consider a commuting diagram of identifications - -```text - top' - -------> - x -------> y - | top | - left | | right - ∨ ∨ - z -------> w. - bottom -``` - -with an identification `top = top'`. Then we get an equivalence - -```text - top top' - x -------> y x -------> y - | | | | - left | | right ≃ left | | right - ∨ ∨ ∨ ∨ - z -------> w z -------> w. - bottom bottom -``` - -```agda -module _ - {l : Level} {A : UU l} {x y z w : A} - (top : x = y) (left : x = z) (right : y = w) (bottom : z = w) - {top' : x = y} (s : top = top') - where - - concat-top-identification-coherence-square-identifications : - coherence-square-identifications top left right bottom → - coherence-square-identifications top' left right bottom - concat-top-identification-coherence-square-identifications t = - t ∙ ap (concat' _ right) s - - inv-concat-top-identification-coherence-square-identifications : - coherence-square-identifications top' left right bottom → - coherence-square-identifications top left right bottom - inv-concat-top-identification-coherence-square-identifications t = - t ∙ inv (ap (concat' _ right) s) - - is-section-inv-concat-top-identification-coherence-square-identifications : - is-section - concat-top-identification-coherence-square-identifications - inv-concat-top-identification-coherence-square-identifications - is-section-inv-concat-top-identification-coherence-square-identifications = - is-section-inv-concat' (ap (concat' _ right) s) - - is-retraction-inv-concat-top-identification-coherence-square-identifications : - is-retraction - concat-top-identification-coherence-square-identifications - inv-concat-top-identification-coherence-square-identifications - is-retraction-inv-concat-top-identification-coherence-square-identifications = - is-retraction-inv-concat' (ap (concat' _ right) s) - - abstract - is-equiv-concat-top-identification-coherence-square-identifications : - is-equiv concat-top-identification-coherence-square-identifications - is-equiv-concat-top-identification-coherence-square-identifications = - is-equiv-is-invertible - inv-concat-top-identification-coherence-square-identifications - is-section-inv-concat-top-identification-coherence-square-identifications - is-retraction-inv-concat-top-identification-coherence-square-identifications - - equiv-concat-top-identification-coherence-square-identifications : - coherence-square-identifications top left right bottom ≃ - coherence-square-identifications top' left right bottom - pr1 equiv-concat-top-identification-coherence-square-identifications = - concat-top-identification-coherence-square-identifications - pr2 equiv-concat-top-identification-coherence-square-identifications = - is-equiv-concat-top-identification-coherence-square-identifications -``` - -#### Concatenating identifications of the left edge with a coherence of a commuting square of identifications - -Consider a commuting diagram of identifications - -```text - top - x -------> y - | | | - left' | | left | right - ∨ ∨ ∨ - z -------> w. - bottom -``` - -with an identification `left = left'`. Then we get an equivalence - -```text - top top - x -------> y x -------> y - | | | | - left | | right ≃ left' | | right - ∨ ∨ ∨ ∨ - z -------> w z -------> w. - bottom bottom -``` - -```agda -module _ - {l : Level} {A : UU l} {x y z w : A} - (top : x = y) (left : x = z) (right : y = w) (bottom : z = w) - {left' : x = z} (s : left = left') - where - - concat-left-identification-coherence-square-identifications : - coherence-square-identifications top left right bottom → - coherence-square-identifications top left' right bottom - concat-left-identification-coherence-square-identifications t = - inv (ap (concat' _ bottom) s) ∙ t - - inv-concat-left-identification-coherence-square-identifications : - coherence-square-identifications top left' right bottom → - coherence-square-identifications top left right bottom - inv-concat-left-identification-coherence-square-identifications t = - ap (concat' _ bottom) s ∙ t - - is-section-inv-concat-left-identification-coherence-square-identifications : - is-section - concat-left-identification-coherence-square-identifications - inv-concat-left-identification-coherence-square-identifications - is-section-inv-concat-left-identification-coherence-square-identifications = - is-retraction-inv-concat (ap (concat' _ bottom) s) - - is-retraction-inv-concat-left-identification-coherence-square-identifications : - is-retraction - concat-left-identification-coherence-square-identifications - inv-concat-left-identification-coherence-square-identifications - is-retraction-inv-concat-left-identification-coherence-square-identifications = - is-section-inv-concat (ap (concat' _ bottom) s) - - is-equiv-concat-left-identification-coherence-square-identifications : - is-equiv concat-left-identification-coherence-square-identifications - is-equiv-concat-left-identification-coherence-square-identifications = - is-equiv-is-invertible - inv-concat-left-identification-coherence-square-identifications - is-section-inv-concat-left-identification-coherence-square-identifications - is-retraction-inv-concat-left-identification-coherence-square-identifications - - equiv-concat-left-identification-coherence-square-identifications : - coherence-square-identifications top left right bottom ≃ - coherence-square-identifications top left' right bottom - pr1 equiv-concat-left-identification-coherence-square-identifications = - concat-left-identification-coherence-square-identifications - pr2 equiv-concat-left-identification-coherence-square-identifications = - is-equiv-concat-left-identification-coherence-square-identifications -``` - -#### Concatenating identifications of the right edge with a coherence of a commuting square of identifications - -Consider a commuting diagram of identifications - -```text - top - x -------> y - | | | - left | right | | right' - ∨ ∨ ∨ - z -------> w. - bottom -``` - -with an identification `right = right'`. Then we get an equivalence - -```text - top top - x -------> y x -------> y - | | | | - left | | right ≃ left | | right' - ∨ ∨ ∨ ∨ - z -------> w z -------> w. - bottom bottom -``` - -```agda -module _ - {l : Level} {A : UU l} {x y z w : A} - (top : x = y) (left : x = z) (right : y = w) (bottom : z = w) - {right' : y = w} (s : right = right') - where - - concat-right-identification-coherence-square-identifications : - coherence-square-identifications top left right bottom → - coherence-square-identifications top left right' bottom - concat-right-identification-coherence-square-identifications t = - t ∙ ap (concat top _) s - - inv-concat-right-identification-coherence-square-identifications : - coherence-square-identifications top left right' bottom → - coherence-square-identifications top left right bottom - inv-concat-right-identification-coherence-square-identifications t = - t ∙ inv (ap (concat top _) s) - - is-section-inv-concat-right-identification-coherence-square-identifications : - is-section - concat-right-identification-coherence-square-identifications - inv-concat-right-identification-coherence-square-identifications - is-section-inv-concat-right-identification-coherence-square-identifications = - is-section-inv-concat' (ap (concat top _) s) - - is-retraction-inv-concat-right-identification-coherence-square-identifications : - is-retraction - concat-right-identification-coherence-square-identifications - inv-concat-right-identification-coherence-square-identifications - is-retraction-inv-concat-right-identification-coherence-square-identifications = - is-retraction-inv-concat' (ap (concat top _) s) - - abstract - is-equiv-concat-right-identification-coherence-square-identifications : - is-equiv concat-right-identification-coherence-square-identifications - is-equiv-concat-right-identification-coherence-square-identifications = - is-equiv-is-invertible - inv-concat-right-identification-coherence-square-identifications - is-section-inv-concat-right-identification-coherence-square-identifications - is-retraction-inv-concat-right-identification-coherence-square-identifications - - equiv-concat-right-identification-coherence-square-identifications : - coherence-square-identifications top left right bottom ≃ - coherence-square-identifications top left right' bottom - pr1 equiv-concat-right-identification-coherence-square-identifications = - concat-right-identification-coherence-square-identifications - pr2 equiv-concat-right-identification-coherence-square-identifications = - is-equiv-concat-right-identification-coherence-square-identifications -``` - -#### Concatenating identifications of the bottom edge with a coherence of a commuting square of identifications - -Consider a commuting diagram of identifications - -```text - top - x -------> y - | | - left | | right - ∨ bottom ∨ - z -------> w. - -------> - bottom' -``` - -with an identification `bottom = bottom'`. Then we get an equivalence - -```text - top top - x -------> y x -------> y - | | | | - left | | right ≃ left | | right - ∨ ∨ ∨ ∨ - z -------> w z -------> w. - bottom bottom' -``` - -```agda -module _ - {l : Level} {A : UU l} {x y z w : A} - (top : x = y) (left : x = z) (right : y = w) (bottom : z = w) - {bottom' : z = w} (s : bottom = bottom') - where - - concat-bottom-identification-coherence-square-identifications : - coherence-square-identifications top left right bottom → - coherence-square-identifications top left right bottom' - concat-bottom-identification-coherence-square-identifications t = - inv (ap (concat left _) s) ∙ t - - inv-concat-bottom-identification-coherence-square-identifications : - coherence-square-identifications top left right bottom' → - coherence-square-identifications top left right bottom - inv-concat-bottom-identification-coherence-square-identifications t = - ap (concat left _) s ∙ t - - is-section-inv-concat-bottom-identification-coherence-square-identifications : - is-section - concat-bottom-identification-coherence-square-identifications - inv-concat-bottom-identification-coherence-square-identifications - is-section-inv-concat-bottom-identification-coherence-square-identifications = - is-retraction-inv-concat (ap (concat left _) s) - - is-retraction-inv-concat-bottom-identification-coherence-square-identifications : - is-retraction - concat-bottom-identification-coherence-square-identifications - inv-concat-bottom-identification-coherence-square-identifications - is-retraction-inv-concat-bottom-identification-coherence-square-identifications = - is-section-inv-concat (ap (concat left _) s) - - is-equiv-concat-bottom-identification-coherence-square-identifications : - is-equiv concat-bottom-identification-coherence-square-identifications - is-equiv-concat-bottom-identification-coherence-square-identifications = - is-equiv-is-invertible - inv-concat-bottom-identification-coherence-square-identifications - is-section-inv-concat-bottom-identification-coherence-square-identifications - is-retraction-inv-concat-bottom-identification-coherence-square-identifications - - equiv-concat-bottom-identification-coherence-square-identifications : - coherence-square-identifications top left right bottom ≃ - coherence-square-identifications top left right bottom' - pr1 equiv-concat-bottom-identification-coherence-square-identifications = - concat-bottom-identification-coherence-square-identifications - pr2 equiv-concat-bottom-identification-coherence-square-identifications = - is-equiv-concat-bottom-identification-coherence-square-identifications -``` - -### Whiskering and splicing coherences of commuting squares of identifications - -Given a commuting square of identifications - -```text - top - x -------> y - | | - left | | right - ∨ ∨ - z -------> w, - bottom -``` - -we may consider four ways of attaching new identifications to it: - -1. Prepending `p : u = x` to the left gives us a commuting square - - ```text - p ∙ top - u -------> y - | | - p ∙ left | | right - ∨ ∨ - z -------> w. - bottom - ``` - - More precisely, we have an equivalence - - ```text - (left ∙ bottom = top ∙ right) ≃ ((p ∙ left) ∙ bottom = (p ∙ top) ∙ right). - ``` - -2. Appending an identification `p : w = u` to the right gives a commuting - square of identifications - - ```text - top - x ------------> y - | | - left | | right ∙ p - ∨ ∨ - z ------------> u. - bottom ∙ p - ``` - - More precisely, we have an equivalence - - ```text - (left ∙ bottom = top ∙ right) ≃ (left ∙ (bottom ∙ p) = top ∙ (right ∙ p)). - ``` - -3. Splicing an identification `p : z = u` and its inverse into the middle gives - a commuting square of identifications - - ```text - top - x --------------> y - | | - left ∙ p | | right - ∨ ∨ - u --------------> w. - p⁻¹ ∙ bottom - ``` - - More precisely, we have an equivalence - - ```text - (left ∙ bottom = top ∙ right) ≃ ((left ∙ p) ∙ (p⁻¹ ∙ bottom) = top ∙ right). - ``` - - Similarly, we have an equivalence - - ```text - (left ∙ bottom = top ∙ right) ≃ ((left ∙ p⁻¹) ∙ (p ∙ bottom) = top ∙ right). - ``` - -4. Splicing an identification `p : y = u` and its inverse into the middle gives - a commuting square of identifications - - ```text - top ∙ p - x --------> u - | | - left | | p⁻¹ ∙ right - ∨ ∨ - z --------> w. - bottom - ``` - - More precisely, we have an equivalence - - ```text - (left ∙ bottom = top ∙ right) ≃ (left ∙ bottom = (top ∙ p) ∙ (p⁻¹ ∙ right)). - ``` - - Similarly, we have an equivalence - - ```text - (left ∙ bottom = top ∙ right) ≃ (left ∙ bottom = (top ∙ p⁻¹) ∙ (p ∙ right)). - ``` - -These operations are useful in proofs involving path algebra, because taking -`equiv-right-whisker-square-identicications` as an example, it provides us with -two maps: the forward direction states -`(p ∙ r = q ∙ s) → (p ∙ (r ∙ t)) = q ∙ (s ∙ t))`, which allows one to append -an identification without needing to reassociate on the right, and the backwards -direction conversely allows one to cancel out an identification in parentheses. - -#### Left whiskering coherences of commuting squares of identifications - -For any identification `p : u = x` we obtain an equivalence - -```text - top p ∙ top - x -------> y u -------> y - | | | | - left | | right ≃ p ∙ left | | right - ∨ ∨ ∨ ∨ - z -------> w z -------> w - bottom bottom -``` - -of coherences of commuting squares of identifications. - -```agda -module _ - {l : Level} {A : UU l} {x y z w u : A} - where - - equiv-left-whisker-coherence-square-identifications : - (p : u = x) - (top : x = y) (left : x = z) (right : y = w) (bottom : z = w) → - coherence-square-identifications top left right bottom ≃ - coherence-square-identifications (p ∙ top) (p ∙ left) right bottom - equiv-left-whisker-coherence-square-identifications refl - top left right bottom = id-equiv - - left-whisker-coherence-square-identifications : - (p : u = x) - (top : x = y) (left : x = z) (right : y = w) (bottom : z = w) → - coherence-square-identifications top left right bottom → - coherence-square-identifications (p ∙ top) (p ∙ left) right bottom - left-whisker-coherence-square-identifications refl top left right bottom = - id - - left-unwhisker-coherence-square-identifications : - (p : u = x) - (top : x = y) (left : x = z) (right : y = w) (bottom : z = w) → - coherence-square-identifications (p ∙ top) (p ∙ left) right bottom → - coherence-square-identifications top left right bottom - left-unwhisker-coherence-square-identifications refl top left right bottom = - id -``` - -#### Right whiskering coherences of commuting squares of identifications - -For any identification `p : w = u` we obtain an equivalence - -```text - top top - x -------> y x ------------> y - | | | | - left | | right ≃ left | | right ∙ p - ∨ ∨ ∨ ∨ - z -------> w z ------------> w - bottom bottom ∙ p -``` - -of coherences of commuting squares of identifications. - -```agda -module _ - {l : Level} {A : UU l} {x y z w : A} - (top : x = y) (left : x = z) (right : y = w) (bottom : z = w) - where - - equiv-right-whisker-coherence-square-identifications : - {u : A} (p : w = u) → - coherence-square-identifications top left right bottom ≃ - coherence-square-identifications top left (right ∙ p) (bottom ∙ p) - equiv-right-whisker-coherence-square-identifications refl = - ( equiv-concat-bottom-identification-coherence-square-identifications - ( top) - ( left) - ( right ∙ refl) - ( bottom) - ( inv right-unit)) ∘e - ( equiv-concat-right-identification-coherence-square-identifications - ( top) - ( left) - ( right) - ( bottom) - ( inv right-unit)) - - right-whisker-coherence-square-identifications : - {u : A} (p : w = u) → - coherence-square-identifications top left right bottom → - coherence-square-identifications top left (right ∙ p) (bottom ∙ p) - right-whisker-coherence-square-identifications refl = - ( concat-bottom-identification-coherence-square-identifications - ( top) - ( left) - ( right ∙ refl) - ( bottom) - ( inv right-unit)) ∘ - ( concat-right-identification-coherence-square-identifications - ( top) - ( left) - ( right) - ( bottom) - ( inv right-unit)) - - right-unwhisker-cohernece-square-identifications : - {u : A} (p : w = u) → - coherence-square-identifications top left (right ∙ p) (bottom ∙ p) → - coherence-square-identifications top left right bottom - right-unwhisker-cohernece-square-identifications refl = - ( inv-concat-right-identification-coherence-square-identifications - ( top) - ( left) - ( right) - ( bottom) - ( inv right-unit)) ∘ - ( inv-concat-bottom-identification-coherence-square-identifications - ( top) - ( left) - ( right ∙ refl) - ( bottom) - ( inv right-unit)) -``` - -#### Left splicing coherences of commuting squares of identifications - -For any inverse pair of identifications `p : y = u` and `q : u = y` equipped -with `α : inv p = q` we obtain an equivalence - -```text - top top - x -------> y x -----------> y - | | | | - left | | right ≃ left ∙ p | | right - ∨ ∨ ∨ ∨ - z -------> w u -----------> w - bottom q ∙ bottom -``` - -of coherences of commuting squares of identifications. - -```agda -module _ - {l : Level} {A : UU l} {x y z w : A} - (top : x = y) (left : x = z) (right : y = w) (bottom : z = w) - where - - equiv-left-splice-coherence-square-identifications : - {u : A} (p : z = u) (q : u = z) (α : inv p = q) → - coherence-square-identifications top left right bottom ≃ - coherence-square-identifications top (left ∙ p) right (q ∙ bottom) - equiv-left-splice-coherence-square-identifications refl .refl refl = - equiv-concat-left-identification-coherence-square-identifications - ( top) - ( left) - ( right) - ( bottom) - ( inv right-unit) - - left-splice-coherence-square-identifications : - {u : A} (p : z = u) (q : u = z) (α : inv p = q) → - coherence-square-identifications top left right bottom → - coherence-square-identifications top (left ∙ p) right (q ∙ bottom) - left-splice-coherence-square-identifications refl .refl refl = - concat-left-identification-coherence-square-identifications - ( top) - ( left) - ( right) - ( bottom) - ( inv right-unit) - - left-unsplice-coherence-square-identifications : - {u : A} (p : z = u) (q : u = z) (α : inv p = q) → - coherence-square-identifications top (left ∙ p) right (q ∙ bottom) → - coherence-square-identifications top left right bottom - left-unsplice-coherence-square-identifications refl .refl refl = - inv-concat-left-identification-coherence-square-identifications - ( top) - ( left) - ( right) - ( bottom) - ( inv right-unit) -``` - -#### Right splicing coherences of commuting squares of identifications - -For any inverse pair of identifications `p : y = u` and `q : u = y` equipped -with `α : inv p = q` we obtain an equivalence - -```text - top top ∙ p - x -------> y x --------> u - | | | | - left | | right ≃ left | | q ∙ right - ∨ ∨ ∨ ∨ - z -------> w z --------> w - bottom bottom -``` - -of coherences of commuting squares of identifications. - -```agda -module _ - {l : Level} {A : UU l} {x y z w : A} - (top : x = y) (left : x = z) (right : y = w) (bottom : z = w) - where - - equiv-right-splice-coherence-square-identifications : - {u : A} (p : y = u) (q : u = y) (α : inv p = q) → - coherence-square-identifications top left right bottom ≃ - coherence-square-identifications (top ∙ p) left (inv p ∙ right) bottom - equiv-right-splice-coherence-square-identifications refl .refl refl = - equiv-concat-top-identification-coherence-square-identifications - ( top) - ( left) - ( right) - ( bottom) - ( inv right-unit) - - right-splice-coherence-square-identifications : - {u : A} (p : y = u) (q : u = y) (α : inv p = q) → - coherence-square-identifications top left right bottom → - coherence-square-identifications (top ∙ p) left (inv p ∙ right) bottom - right-splice-coherence-square-identifications refl .refl refl = - concat-top-identification-coherence-square-identifications - ( top) - ( left) - ( right) - ( bottom) - ( inv right-unit) - - right-unsplice-coherence-square-identifications : - {u : A} (p : y = u) (q : u = y) (α : inv p = q) → - coherence-square-identifications (top ∙ p) left (inv p ∙ right) bottom → - coherence-square-identifications top left right bottom - right-unsplice-coherence-square-identifications refl .refl refl = - inv-concat-top-identification-coherence-square-identifications - ( top) - ( left) - ( right) - ( bottom) - ( inv right-unit) -``` - -### Double whiskering of commuting squares of identifications - -```agda -module _ - {l : Level} {A : UU l} {x y z u v w : A} - where - - equiv-double-whisker-square-identifications : - (p : x = y) - (top : y = u) (left : y = z) (right : u = v) (bottom : z = v) - (s : v = w) → - coherence-square-identifications top left right bottom ≃ - coherence-square-identifications - ( p ∙ top) - ( p ∙ left) - ( right ∙ s) - ( bottom ∙ s) - equiv-double-whisker-square-identifications p top left right bottom q = - equiv-left-whisker-coherence-square-identifications p top left - ( right ∙ q) - ( bottom ∙ q) ∘e - equiv-right-whisker-coherence-square-identifications top left right bottom q -``` diff --git a/src/foundation/action-on-higher-identifications-functions.lagda.md b/src/foundation/action-on-higher-identifications-functions.lagda.md index db4aa34ffb..9bc1c2ed14 100644 --- a/src/foundation/action-on-higher-identifications-functions.lagda.md +++ b/src/foundation/action-on-higher-identifications-functions.lagda.md @@ -11,7 +11,7 @@ open import foundation.action-on-identifications-functions open import foundation.path-algebra open import foundation.universe-levels -open import foundation-core.commuting-squares-of-identifications +open import foundation.commuting-squares-of-identifications open import foundation-core.constant-maps open import foundation-core.function-types open import foundation-core.homotopies diff --git a/src/foundation/commuting-squares-of-identifications.lagda.md b/src/foundation/commuting-squares-of-identifications.lagda.md index b71dd5dccb..44c215bafc 100644 --- a/src/foundation/commuting-squares-of-identifications.lagda.md +++ b/src/foundation/commuting-squares-of-identifications.lagda.md @@ -2,32 +2,942 @@ ```agda module foundation.commuting-squares-of-identifications where - -open import foundation-core.commuting-squares-of-identifications public ```
Imports ```agda -open import foundation.action-on-identifications-binary-functions open import foundation.action-on-identifications-functions -open import foundation.identity-types +open import foundation.dependent-pair-types open import foundation.universe-levels -open import foundation.whiskering-identifications open import foundation-core.equivalences open import foundation-core.function-types +open import foundation-core.identity-types +open import foundation-core.retractions +open import foundation-core.sections ```
## Idea -In this file we develop some further properties of -[commuting squares of identifications](foundation-core.commuting-squares-of-identifications.md). +A square of [identifications](foundation-core.identity-types.md) + +```text + top + x -------> y + | | + left | | right + ∨ ∨ + z -------> w + bottom +``` + +is said to **commute** if there is an identification +`left ∙ bottom = top ∙ right`. Such an identification is called a +{{#concept "coherence" Disambiguation="commuting square of identifications" Agda=coherence-square-identifications}} +of the square. + +## Definitions + +### Commuting squares of identifications + +```agda +module _ + {l : Level} {A : UU l} {x y z w : A} + (top : x = y) (left : x = z) (right : y = w) (bottom : z = w) + where + + coherence-square-identifications : UU l + coherence-square-identifications = left ∙ bottom = top ∙ right +``` + +### Horizontally constant squares + +{{#concept "Horizontally constant squares" Disambiguation="identifications" Agda=horizontal-refl-coherence-square-identifications}} +are commuting squares of identifications of the form + +```text + refl + a -----> a + | | + p | | p + ∨ ∨ + b -----> b. + refl +``` + +```agda +module _ + {l : Level} {A : UU l} {a b : A} (p : a = b) + where + + horizontal-refl-coherence-square-identifications : + coherence-square-identifications refl p p refl + horizontal-refl-coherence-square-identifications = right-unit +``` + +### Vertically constant squares + +{{#concept "Vertically constant squares" Disambiguation="identifications" Agda=vertical-refl-coherence-square-identifications}} +are commuting squares of identifications of the form + +```text + p + a -----> b + | | + refl | | refl + ∨ ∨ + a -----> b. + p +``` + +```agda +module _ + {l : Level} {A : UU l} {a b : A} (p : a = b) + where + + vertical-refl-coherence-square-identifications : + coherence-square-identifications p refl refl p + vertical-refl-coherence-square-identifications = inv right-unit +``` ## Operations +### Inverting squares of identifications horizontally + +Given a commuting square of identifications + +```text + top + x -------> y + | | + left | | right + ∨ ∨ + z -------> w, + bottom +``` + +the square of identifications + +```text + inv top + y ------------> x + | | + right | | left + ∨ ∨ + w ------------> z + inv bottom +``` + +commutes. + +```agda +module _ + {l : Level} {A : UU l} {x y z w : A} + where + + horizontal-inv-coherence-square-identifications : + (top : x = y) (left : x = z) (right : y = w) (bottom : z = w) → + coherence-square-identifications top left right bottom → + coherence-square-identifications (inv top) right left (inv bottom) + horizontal-inv-coherence-square-identifications refl refl right refl coh = + right-unit ∙ inv coh +``` + +### Inverting squares of identifications vertically + +Given a commuting square of identifications + +```text + top + x -------> y + | | + left | | right + ∨ ∨ + z -------> w, + bottom +``` + +the square of identifications + +```text + bottom + z -------> w + | | + inv left | | inv right + ∨ ∨ + x -------> y + top +``` + +commutes. + +```agda +module _ + {l : Level} {A : UU l} {x y z w : A} + where + + vertical-inv-coherence-square-identifications : + (top : x = y) (left : x = z) (right : y = w) (bottom : z = w) → + coherence-square-identifications top left right bottom → + coherence-square-identifications bottom (inv left) (inv right) top + vertical-inv-coherence-square-identifications refl refl refl refl refl = refl +``` + +### Functions acting on squares of identifications + +Given a commuting square of identifications + +```text + top + x -------> y + | | + left | | right + ∨ ∨ + z -------> w + bottom +``` + +in a type `A`, and given a map `f : A → B`, the square of identifications + +```text + ap f top + f x -----------> f y + | | + ap f left | | ap f right + ∨ ∨ + z -------------> w + ap f bottom +``` + +commutes. + +```agda +module _ + {l1 l2 : Level} {A : UU l1} {B : UU l2} {x y z w : A} (f : A → B) + where + + map-coherence-square-identifications : + (top : x = y) (left : x = z) (right : y = w) (bottom : z = w) → + coherence-square-identifications top left right bottom → + coherence-square-identifications + ( ap f top) + ( ap f left) + ( ap f right) + ( ap f bottom) + map-coherence-square-identifications refl refl right refl coh = ap (ap f) coh +``` + +### Concatenating identifications of edges and coherences of commuting squares of identifications + +Consider a commuting square of identifications and an identification of one of +the four sides with another identification, as for example in the diagram below: + +```text + top + a ---------> b + | | | + left | right |=| right' + ∨ ∨ ∨ + c ---------> d. + bottom +``` + +Then any identification witnessing that the square commutes can be concatenated +with the identification on the side, to obtain a new commuting square of +identifications. + +**Note.** To avoid cyclic module dependencies we will give direct proofs that +concatenating identifications of edges of a square with the coherence of its +commutativity is an equivalence. + +#### Concatenating identifications of the top edge with a coherence of a commuting square of identifications + +Consider a commuting diagram of identifications + +```text + top' + -------> + x -------> y + | top | + left | | right + ∨ ∨ + z -------> w. + bottom +``` + +with an identification `top = top'`. Then we get an equivalence + +```text + top top' + x -------> y x -------> y + | | | | + left | | right ≃ left | | right + ∨ ∨ ∨ ∨ + z -------> w z -------> w. + bottom bottom +``` + +```agda +module _ + {l : Level} {A : UU l} {x y z w : A} + (top : x = y) (left : x = z) (right : y = w) (bottom : z = w) + {top' : x = y} (s : top = top') + where + + concat-top-identification-coherence-square-identifications : + coherence-square-identifications top left right bottom → + coherence-square-identifications top' left right bottom + concat-top-identification-coherence-square-identifications t = + t ∙ ap (concat' _ right) s + + inv-concat-top-identification-coherence-square-identifications : + coherence-square-identifications top' left right bottom → + coherence-square-identifications top left right bottom + inv-concat-top-identification-coherence-square-identifications t = + t ∙ inv (ap (concat' _ right) s) + + is-section-inv-concat-top-identification-coherence-square-identifications : + is-section + concat-top-identification-coherence-square-identifications + inv-concat-top-identification-coherence-square-identifications + is-section-inv-concat-top-identification-coherence-square-identifications = + is-section-inv-concat' (ap (concat' _ right) s) + + is-retraction-inv-concat-top-identification-coherence-square-identifications : + is-retraction + concat-top-identification-coherence-square-identifications + inv-concat-top-identification-coherence-square-identifications + is-retraction-inv-concat-top-identification-coherence-square-identifications = + is-retraction-inv-concat' (ap (concat' _ right) s) + + abstract + is-equiv-concat-top-identification-coherence-square-identifications : + is-equiv concat-top-identification-coherence-square-identifications + is-equiv-concat-top-identification-coherence-square-identifications = + is-equiv-is-invertible + inv-concat-top-identification-coherence-square-identifications + is-section-inv-concat-top-identification-coherence-square-identifications + is-retraction-inv-concat-top-identification-coherence-square-identifications + + equiv-concat-top-identification-coherence-square-identifications : + coherence-square-identifications top left right bottom ≃ + coherence-square-identifications top' left right bottom + pr1 equiv-concat-top-identification-coherence-square-identifications = + concat-top-identification-coherence-square-identifications + pr2 equiv-concat-top-identification-coherence-square-identifications = + is-equiv-concat-top-identification-coherence-square-identifications +``` + +#### Concatenating identifications of the left edge with a coherence of a commuting square of identifications + +Consider a commuting diagram of identifications + +```text + top + x -------> y + | | | + left' | | left | right + ∨ ∨ ∨ + z -------> w. + bottom +``` + +with an identification `left = left'`. Then we get an equivalence + +```text + top top + x -------> y x -------> y + | | | | + left | | right ≃ left' | | right + ∨ ∨ ∨ ∨ + z -------> w z -------> w. + bottom bottom +``` + +```agda +module _ + {l : Level} {A : UU l} {x y z w : A} + (top : x = y) (left : x = z) (right : y = w) (bottom : z = w) + {left' : x = z} (s : left = left') + where + + concat-left-identification-coherence-square-identifications : + coherence-square-identifications top left right bottom → + coherence-square-identifications top left' right bottom + concat-left-identification-coherence-square-identifications t = + inv (ap (concat' _ bottom) s) ∙ t + + inv-concat-left-identification-coherence-square-identifications : + coherence-square-identifications top left' right bottom → + coherence-square-identifications top left right bottom + inv-concat-left-identification-coherence-square-identifications t = + ap (concat' _ bottom) s ∙ t + + is-section-inv-concat-left-identification-coherence-square-identifications : + is-section + concat-left-identification-coherence-square-identifications + inv-concat-left-identification-coherence-square-identifications + is-section-inv-concat-left-identification-coherence-square-identifications = + is-retraction-inv-concat (ap (concat' _ bottom) s) + + is-retraction-inv-concat-left-identification-coherence-square-identifications : + is-retraction + concat-left-identification-coherence-square-identifications + inv-concat-left-identification-coherence-square-identifications + is-retraction-inv-concat-left-identification-coherence-square-identifications = + is-section-inv-concat (ap (concat' _ bottom) s) + + is-equiv-concat-left-identification-coherence-square-identifications : + is-equiv concat-left-identification-coherence-square-identifications + is-equiv-concat-left-identification-coherence-square-identifications = + is-equiv-is-invertible + inv-concat-left-identification-coherence-square-identifications + is-section-inv-concat-left-identification-coherence-square-identifications + is-retraction-inv-concat-left-identification-coherence-square-identifications + + equiv-concat-left-identification-coherence-square-identifications : + coherence-square-identifications top left right bottom ≃ + coherence-square-identifications top left' right bottom + pr1 equiv-concat-left-identification-coherence-square-identifications = + concat-left-identification-coherence-square-identifications + pr2 equiv-concat-left-identification-coherence-square-identifications = + is-equiv-concat-left-identification-coherence-square-identifications +``` + +#### Concatenating identifications of the right edge with a coherence of a commuting square of identifications + +Consider a commuting diagram of identifications + +```text + top + x -------> y + | | | + left | right | | right' + ∨ ∨ ∨ + z -------> w. + bottom +``` + +with an identification `right = right'`. Then we get an equivalence + +```text + top top + x -------> y x -------> y + | | | | + left | | right ≃ left | | right' + ∨ ∨ ∨ ∨ + z -------> w z -------> w. + bottom bottom +``` + +```agda +module _ + {l : Level} {A : UU l} {x y z w : A} + (top : x = y) (left : x = z) (right : y = w) (bottom : z = w) + {right' : y = w} (s : right = right') + where + + concat-right-identification-coherence-square-identifications : + coherence-square-identifications top left right bottom → + coherence-square-identifications top left right' bottom + concat-right-identification-coherence-square-identifications t = + t ∙ ap (concat top _) s + + inv-concat-right-identification-coherence-square-identifications : + coherence-square-identifications top left right' bottom → + coherence-square-identifications top left right bottom + inv-concat-right-identification-coherence-square-identifications t = + t ∙ inv (ap (concat top _) s) + + is-section-inv-concat-right-identification-coherence-square-identifications : + is-section + concat-right-identification-coherence-square-identifications + inv-concat-right-identification-coherence-square-identifications + is-section-inv-concat-right-identification-coherence-square-identifications = + is-section-inv-concat' (ap (concat top _) s) + + is-retraction-inv-concat-right-identification-coherence-square-identifications : + is-retraction + concat-right-identification-coherence-square-identifications + inv-concat-right-identification-coherence-square-identifications + is-retraction-inv-concat-right-identification-coherence-square-identifications = + is-retraction-inv-concat' (ap (concat top _) s) + + abstract + is-equiv-concat-right-identification-coherence-square-identifications : + is-equiv concat-right-identification-coherence-square-identifications + is-equiv-concat-right-identification-coherence-square-identifications = + is-equiv-is-invertible + inv-concat-right-identification-coherence-square-identifications + is-section-inv-concat-right-identification-coherence-square-identifications + is-retraction-inv-concat-right-identification-coherence-square-identifications + + equiv-concat-right-identification-coherence-square-identifications : + coherence-square-identifications top left right bottom ≃ + coherence-square-identifications top left right' bottom + pr1 equiv-concat-right-identification-coherence-square-identifications = + concat-right-identification-coherence-square-identifications + pr2 equiv-concat-right-identification-coherence-square-identifications = + is-equiv-concat-right-identification-coherence-square-identifications +``` + +#### Concatenating identifications of the bottom edge with a coherence of a commuting square of identifications + +Consider a commuting diagram of identifications + +```text + top + x -------> y + | | + left | | right + ∨ bottom ∨ + z -------> w. + -------> + bottom' +``` + +with an identification `bottom = bottom'`. Then we get an equivalence + +```text + top top + x -------> y x -------> y + | | | | + left | | right ≃ left | | right + ∨ ∨ ∨ ∨ + z -------> w z -------> w. + bottom bottom' +``` + +```agda +module _ + {l : Level} {A : UU l} {x y z w : A} + (top : x = y) (left : x = z) (right : y = w) (bottom : z = w) + {bottom' : z = w} (s : bottom = bottom') + where + + concat-bottom-identification-coherence-square-identifications : + coherence-square-identifications top left right bottom → + coherence-square-identifications top left right bottom' + concat-bottom-identification-coherence-square-identifications t = + inv (ap (concat left _) s) ∙ t + + inv-concat-bottom-identification-coherence-square-identifications : + coherence-square-identifications top left right bottom' → + coherence-square-identifications top left right bottom + inv-concat-bottom-identification-coherence-square-identifications t = + ap (concat left _) s ∙ t + + is-section-inv-concat-bottom-identification-coherence-square-identifications : + is-section + concat-bottom-identification-coherence-square-identifications + inv-concat-bottom-identification-coherence-square-identifications + is-section-inv-concat-bottom-identification-coherence-square-identifications = + is-retraction-inv-concat (ap (concat left _) s) + + is-retraction-inv-concat-bottom-identification-coherence-square-identifications : + is-retraction + concat-bottom-identification-coherence-square-identifications + inv-concat-bottom-identification-coherence-square-identifications + is-retraction-inv-concat-bottom-identification-coherence-square-identifications = + is-section-inv-concat (ap (concat left _) s) + + is-equiv-concat-bottom-identification-coherence-square-identifications : + is-equiv concat-bottom-identification-coherence-square-identifications + is-equiv-concat-bottom-identification-coherence-square-identifications = + is-equiv-is-invertible + inv-concat-bottom-identification-coherence-square-identifications + is-section-inv-concat-bottom-identification-coherence-square-identifications + is-retraction-inv-concat-bottom-identification-coherence-square-identifications + + equiv-concat-bottom-identification-coherence-square-identifications : + coherence-square-identifications top left right bottom ≃ + coherence-square-identifications top left right bottom' + pr1 equiv-concat-bottom-identification-coherence-square-identifications = + concat-bottom-identification-coherence-square-identifications + pr2 equiv-concat-bottom-identification-coherence-square-identifications = + is-equiv-concat-bottom-identification-coherence-square-identifications +``` + +### Whiskering and splicing coherences of commuting squares of identifications + +Given a commuting square of identifications + +```text + top + x -------> y + | | + left | | right + ∨ ∨ + z -------> w, + bottom +``` + +we may consider four ways of attaching new identifications to it: + +1. Prepending `p : u = x` to the left gives us a commuting square + + ```text + p ∙ top + u -------> y + | | + p ∙ left | | right + ∨ ∨ + z -------> w. + bottom + ``` + + More precisely, we have an equivalence + + ```text + (left ∙ bottom = top ∙ right) ≃ ((p ∙ left) ∙ bottom = (p ∙ top) ∙ right). + ``` + +2. Appending an identification `p : w = u` to the right gives a commuting + square of identifications + + ```text + top + x ------------> y + | | + left | | right ∙ p + ∨ ∨ + z ------------> u. + bottom ∙ p + ``` + + More precisely, we have an equivalence + + ```text + (left ∙ bottom = top ∙ right) ≃ (left ∙ (bottom ∙ p) = top ∙ (right ∙ p)). + ``` + +3. Splicing an identification `p : z = u` and its inverse into the middle gives + a commuting square of identifications + + ```text + top + x --------------> y + | | + left ∙ p | | right + ∨ ∨ + u --------------> w. + p⁻¹ ∙ bottom + ``` + + More precisely, we have an equivalence + + ```text + (left ∙ bottom = top ∙ right) ≃ ((left ∙ p) ∙ (p⁻¹ ∙ bottom) = top ∙ right). + ``` + + Similarly, we have an equivalence + + ```text + (left ∙ bottom = top ∙ right) ≃ ((left ∙ p⁻¹) ∙ (p ∙ bottom) = top ∙ right). + ``` + +4. Splicing an identification `p : y = u` and its inverse into the middle gives + a commuting square of identifications + + ```text + top ∙ p + x --------> u + | | + left | | p⁻¹ ∙ right + ∨ ∨ + z --------> w. + bottom + ``` + + More precisely, we have an equivalence + + ```text + (left ∙ bottom = top ∙ right) ≃ (left ∙ bottom = (top ∙ p) ∙ (p⁻¹ ∙ right)). + ``` + + Similarly, we have an equivalence + + ```text + (left ∙ bottom = top ∙ right) ≃ (left ∙ bottom = (top ∙ p⁻¹) ∙ (p ∙ right)). + ``` + +These operations are useful in proofs involving path algebra, because taking +`equiv-right-whisker-square-identicications` as an example, it provides us with +two maps: the forward direction states +`(p ∙ r = q ∙ s) → (p ∙ (r ∙ t)) = q ∙ (s ∙ t))`, which allows one to append +an identification without needing to reassociate on the right, and the backwards +direction conversely allows one to cancel out an identification in parentheses. + +#### Left whiskering coherences of commuting squares of identifications + +For any identification `p : u = x` we obtain an equivalence + +```text + top p ∙ top + x -------> y u -------> y + | | | | + left | | right ≃ p ∙ left | | right + ∨ ∨ ∨ ∨ + z -------> w z -------> w + bottom bottom +``` + +of coherences of commuting squares of identifications. + +```agda +module _ + {l : Level} {A : UU l} {x y z w u : A} + where + + equiv-left-whisker-coherence-square-identifications : + (p : u = x) + (top : x = y) (left : x = z) (right : y = w) (bottom : z = w) → + coherence-square-identifications top left right bottom ≃ + coherence-square-identifications (p ∙ top) (p ∙ left) right bottom + equiv-left-whisker-coherence-square-identifications refl + top left right bottom = id-equiv + + left-whisker-coherence-square-identifications : + (p : u = x) + (top : x = y) (left : x = z) (right : y = w) (bottom : z = w) → + coherence-square-identifications top left right bottom → + coherence-square-identifications (p ∙ top) (p ∙ left) right bottom + left-whisker-coherence-square-identifications refl top left right bottom = + id + + left-unwhisker-coherence-square-identifications : + (p : u = x) + (top : x = y) (left : x = z) (right : y = w) (bottom : z = w) → + coherence-square-identifications (p ∙ top) (p ∙ left) right bottom → + coherence-square-identifications top left right bottom + left-unwhisker-coherence-square-identifications refl top left right bottom = + id +``` + +#### Right whiskering coherences of commuting squares of identifications + +For any identification `p : w = u` we obtain an equivalence + +```text + top top + x -------> y x ------------> y + | | | | + left | | right ≃ left | | right ∙ p + ∨ ∨ ∨ ∨ + z -------> w z ------------> w + bottom bottom ∙ p +``` + +of coherences of commuting squares of identifications. + +```agda +module _ + {l : Level} {A : UU l} {x y z w : A} + (top : x = y) (left : x = z) (right : y = w) (bottom : z = w) + where + + equiv-right-whisker-coherence-square-identifications : + {u : A} (p : w = u) → + coherence-square-identifications top left right bottom ≃ + coherence-square-identifications top left (right ∙ p) (bottom ∙ p) + equiv-right-whisker-coherence-square-identifications refl = + ( equiv-concat-bottom-identification-coherence-square-identifications + ( top) + ( left) + ( right ∙ refl) + ( bottom) + ( inv right-unit)) ∘e + ( equiv-concat-right-identification-coherence-square-identifications + ( top) + ( left) + ( right) + ( bottom) + ( inv right-unit)) + + right-whisker-coherence-square-identifications : + {u : A} (p : w = u) → + coherence-square-identifications top left right bottom → + coherence-square-identifications top left (right ∙ p) (bottom ∙ p) + right-whisker-coherence-square-identifications refl = + ( concat-bottom-identification-coherence-square-identifications + ( top) + ( left) + ( right ∙ refl) + ( bottom) + ( inv right-unit)) ∘ + ( concat-right-identification-coherence-square-identifications + ( top) + ( left) + ( right) + ( bottom) + ( inv right-unit)) + + right-unwhisker-cohernece-square-identifications : + {u : A} (p : w = u) → + coherence-square-identifications top left (right ∙ p) (bottom ∙ p) → + coherence-square-identifications top left right bottom + right-unwhisker-cohernece-square-identifications refl = + ( inv-concat-right-identification-coherence-square-identifications + ( top) + ( left) + ( right) + ( bottom) + ( inv right-unit)) ∘ + ( inv-concat-bottom-identification-coherence-square-identifications + ( top) + ( left) + ( right ∙ refl) + ( bottom) + ( inv right-unit)) +``` + +#### Left splicing coherences of commuting squares of identifications + +For any inverse pair of identifications `p : y = u` and `q : u = y` equipped +with `α : inv p = q` we obtain an equivalence + +```text + top top + x -------> y x -----------> y + | | | | + left | | right ≃ left ∙ p | | right + ∨ ∨ ∨ ∨ + z -------> w u -----------> w + bottom q ∙ bottom +``` + +of coherences of commuting squares of identifications. + +```agda +module _ + {l : Level} {A : UU l} {x y z w : A} + (top : x = y) (left : x = z) (right : y = w) (bottom : z = w) + where + + equiv-left-splice-coherence-square-identifications : + {u : A} (p : z = u) (q : u = z) (α : inv p = q) → + coherence-square-identifications top left right bottom ≃ + coherence-square-identifications top (left ∙ p) right (q ∙ bottom) + equiv-left-splice-coherence-square-identifications refl .refl refl = + equiv-concat-left-identification-coherence-square-identifications + ( top) + ( left) + ( right) + ( bottom) + ( inv right-unit) + + left-splice-coherence-square-identifications : + {u : A} (p : z = u) (q : u = z) (α : inv p = q) → + coherence-square-identifications top left right bottom → + coherence-square-identifications top (left ∙ p) right (q ∙ bottom) + left-splice-coherence-square-identifications refl .refl refl = + concat-left-identification-coherence-square-identifications + ( top) + ( left) + ( right) + ( bottom) + ( inv right-unit) + + left-unsplice-coherence-square-identifications : + {u : A} (p : z = u) (q : u = z) (α : inv p = q) → + coherence-square-identifications top (left ∙ p) right (q ∙ bottom) → + coherence-square-identifications top left right bottom + left-unsplice-coherence-square-identifications refl .refl refl = + inv-concat-left-identification-coherence-square-identifications + ( top) + ( left) + ( right) + ( bottom) + ( inv right-unit) +``` + +#### Right splicing coherences of commuting squares of identifications + +For any inverse pair of identifications `p : y = u` and `q : u = y` equipped +with `α : inv p = q` we obtain an equivalence + +```text + top top ∙ p + x -------> y x --------> u + | | | | + left | | right ≃ left | | q ∙ right + ∨ ∨ ∨ ∨ + z -------> w z --------> w + bottom bottom +``` + +of coherences of commuting squares of identifications. + +```agda +module _ + {l : Level} {A : UU l} {x y z w : A} + (top : x = y) (left : x = z) (right : y = w) (bottom : z = w) + where + + equiv-right-splice-coherence-square-identifications : + {u : A} (p : y = u) (q : u = y) (α : inv p = q) → + coherence-square-identifications top left right bottom ≃ + coherence-square-identifications (top ∙ p) left (inv p ∙ right) bottom + equiv-right-splice-coherence-square-identifications refl .refl refl = + equiv-concat-top-identification-coherence-square-identifications + ( top) + ( left) + ( right) + ( bottom) + ( inv right-unit) + + right-splice-coherence-square-identifications : + {u : A} (p : y = u) (q : u = y) (α : inv p = q) → + coherence-square-identifications top left right bottom → + coherence-square-identifications (top ∙ p) left (inv p ∙ right) bottom + right-splice-coherence-square-identifications refl .refl refl = + concat-top-identification-coherence-square-identifications + ( top) + ( left) + ( right) + ( bottom) + ( inv right-unit) + + right-unsplice-coherence-square-identifications : + {u : A} (p : y = u) (q : u = y) (α : inv p = q) → + coherence-square-identifications (top ∙ p) left (inv p ∙ right) bottom → + coherence-square-identifications top left right bottom + right-unsplice-coherence-square-identifications refl .refl refl = + inv-concat-top-identification-coherence-square-identifications + ( top) + ( left) + ( right) + ( bottom) + ( inv right-unit) +``` + +### Double whiskering of commuting squares of identifications + +```agda +module _ + {l : Level} {A : UU l} {x y z u v w : A} + where + + equiv-double-whisker-square-identifications : + (p : x = y) + (top : y = u) (left : y = z) (right : u = v) (bottom : z = v) + (s : v = w) → + coherence-square-identifications top left right bottom ≃ + coherence-square-identifications + ( p ∙ top) + ( p ∙ left) + ( right ∙ s) + ( bottom ∙ s) + equiv-double-whisker-square-identifications p top left right bottom q = + equiv-left-whisker-coherence-square-identifications p top left + ( right ∙ q) + ( bottom ∙ q) ∘e + equiv-right-whisker-coherence-square-identifications top left right bottom q +``` + ### Horizontally pasting squares of identifications Consider two squares of identifications as in the diagram diff --git a/src/foundation/homotopies.lagda.md b/src/foundation/homotopies.lagda.md index 96e37ef466..fafe498220 100644 --- a/src/foundation/homotopies.lagda.md +++ b/src/foundation/homotopies.lagda.md @@ -20,7 +20,7 @@ open import foundation.path-algebra open import foundation.universe-levels open import foundation.whiskering-identifications -open import foundation-core.commuting-squares-of-identifications +open import foundation.commuting-squares-of-identifications open import foundation-core.dependent-identifications open import foundation-core.equivalences open import foundation-core.function-extensionality diff --git a/src/foundation/path-algebra.lagda.md b/src/foundation/path-algebra.lagda.md index 5d9e51972e..f0f60bf052 100644 --- a/src/foundation/path-algebra.lagda.md +++ b/src/foundation/path-algebra.lagda.md @@ -16,7 +16,7 @@ open import foundation.identity-types open import foundation.universe-levels open import foundation.whiskering-identifications -open import foundation-core.commuting-squares-of-identifications +open import foundation.commuting-squares-of-identifications open import foundation-core.constant-maps open import foundation-core.equivalences open import foundation-core.function-types diff --git a/tables/identity-types.md b/tables/identity-types.md index 3faec0d494..ac06ca2af4 100644 --- a/tables/identity-types.md +++ b/tables/identity-types.md @@ -6,7 +6,6 @@ | Action on identifications of functions | [`foundation.action-on-identifications-functions`](foundation.action-on-identifications-functions.md) | | Binary transport | [`foundation.binary-transport`](foundation.binary-transport.md) | | Commuting hexagons of identifications | [`foundation.commuting-hexagons-of-identifications`](foundation.commuting-hexagons-of-identifications.md) | -| Commuting squares of identifications (foundation-core) | [`foundation-core.commuting-squares-of-identifications`](foundation-core.commuting-squares-of-identifications.md) | | Commuting squares of identifications | [`foundation.commuting-squares-of-identifications`](foundation.commuting-squares-of-identifications.md) | | Dependent identifications (foundation) | [`foundation.dependent-identifications`](foundation.dependent-identifications.md) | | Dependent identifications (foundation-core) | [`foundation-core.dependent-identifications`](foundation-core.dependent-identifications.md) | From 0a3f52f557c9fe83e6e4822d4b27a31b55a82fda Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Thu, 1 Feb 2024 11:08:11 +0100 Subject: [PATCH 073/150] make pre-commit --- src/foundation-core.lagda.md | 1 - .../action-on-higher-identifications-functions.lagda.md | 2 +- src/foundation/homotopies.lagda.md | 2 +- src/foundation/path-algebra.lagda.md | 2 +- 4 files changed, 3 insertions(+), 4 deletions(-) diff --git a/src/foundation-core.lagda.md b/src/foundation-core.lagda.md index d4279545f0..803e7912e1 100644 --- a/src/foundation-core.lagda.md +++ b/src/foundation-core.lagda.md @@ -9,7 +9,6 @@ open import foundation-core.1-types public open import foundation-core.cartesian-product-types public open import foundation-core.coherently-invertible-maps public open import foundation-core.commuting-prisms-of-maps public -open import foundation.commuting-squares-of-identifications public open import foundation-core.commuting-squares-of-maps public open import foundation-core.commuting-triangles-of-maps public open import foundation-core.constant-maps public diff --git a/src/foundation/action-on-higher-identifications-functions.lagda.md b/src/foundation/action-on-higher-identifications-functions.lagda.md index 9bc1c2ed14..1d6f68c923 100644 --- a/src/foundation/action-on-higher-identifications-functions.lagda.md +++ b/src/foundation/action-on-higher-identifications-functions.lagda.md @@ -8,10 +8,10 @@ module foundation.action-on-higher-identifications-functions where ```agda open import foundation.action-on-identifications-functions +open import foundation.commuting-squares-of-identifications open import foundation.path-algebra open import foundation.universe-levels -open import foundation.commuting-squares-of-identifications open import foundation-core.constant-maps open import foundation-core.function-types open import foundation-core.homotopies diff --git a/src/foundation/homotopies.lagda.md b/src/foundation/homotopies.lagda.md index fafe498220..cd0654b8a9 100644 --- a/src/foundation/homotopies.lagda.md +++ b/src/foundation/homotopies.lagda.md @@ -13,6 +13,7 @@ open import foundation.action-on-higher-identifications-functions open import foundation.action-on-identifications-dependent-functions open import foundation.action-on-identifications-functions open import foundation.binary-equivalences +open import foundation.commuting-squares-of-identifications open import foundation.dependent-pair-types open import foundation.homotopy-induction open import foundation.identity-types @@ -20,7 +21,6 @@ open import foundation.path-algebra open import foundation.universe-levels open import foundation.whiskering-identifications -open import foundation.commuting-squares-of-identifications open import foundation-core.dependent-identifications open import foundation-core.equivalences open import foundation-core.function-extensionality diff --git a/src/foundation/path-algebra.lagda.md b/src/foundation/path-algebra.lagda.md index f0f60bf052..da52dd2586 100644 --- a/src/foundation/path-algebra.lagda.md +++ b/src/foundation/path-algebra.lagda.md @@ -11,12 +11,12 @@ open import foundation.action-on-identifications-binary-functions open import foundation.action-on-identifications-functions open import foundation.binary-embeddings open import foundation.binary-equivalences +open import foundation.commuting-squares-of-identifications open import foundation.dependent-pair-types open import foundation.identity-types open import foundation.universe-levels open import foundation.whiskering-identifications -open import foundation.commuting-squares-of-identifications open import foundation-core.constant-maps open import foundation-core.equivalences open import foundation-core.function-types From 16b9877c6b7c9b567cee48ec52da43c1456abd21 Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Thu, 1 Feb 2024 11:30:42 +0100 Subject: [PATCH 074/150] renaming horizontal concatenation of homotopies --- .../commuting-triangles-of-maps.lagda.md | 2 +- .../whiskering-homotopies.lagda.md | 15 ++++++----- src/foundation/invertible-maps.lagda.md | 4 +-- src/foundation/involutions.lagda.md | 2 +- src/foundation/whiskering-homotopies.lagda.md | 26 +++++++++---------- .../factorizations-of-maps.lagda.md | 2 +- .../descent-circle-function-types.lagda.md | 2 +- 7 files changed, 27 insertions(+), 26 deletions(-) diff --git a/src/foundation-core/commuting-triangles-of-maps.lagda.md b/src/foundation-core/commuting-triangles-of-maps.lagda.md index 7fc72b5cb7..a383ed939c 100644 --- a/src/foundation-core/commuting-triangles-of-maps.lagda.md +++ b/src/foundation-core/commuting-triangles-of-maps.lagda.md @@ -89,7 +89,7 @@ module _ coherence-htpy-triangle-maps : left ~ left' → right ~ right' → top ~ top' → UU (l1 ⊔ l2) coherence-htpy-triangle-maps L R T = - c ∙h htpy-comp-horizontal T R ~ L ∙h c' + c ∙h horizontal-concat-htpy T R ~ L ∙h c' ``` ## Properties diff --git a/src/foundation-core/whiskering-homotopies.lagda.md b/src/foundation-core/whiskering-homotopies.lagda.md index aaf9dfc0dc..53c8e4fac2 100644 --- a/src/foundation-core/whiskering-homotopies.lagda.md +++ b/src/foundation-core/whiskering-homotopies.lagda.md @@ -84,7 +84,7 @@ module _ _·r_ = right-whisker-htpy ``` -### Horizontal composition of homotopies +### Horizontal concatenation of homotopies ```agda module _ @@ -92,11 +92,12 @@ module _ {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') + horizontal-concat-htpy : f ~ f' → ({x : A} → g {x} ~ g' {x}) → g ∘ f ~ g' ∘ f' + horizontal-concat-htpy 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) + horizontal-concat-htpy' : + f ~ f' → ({x : A} → g {x} ~ g' {x}) → g ∘ f ~ g' ∘ f' + horizontal-concat-htpy' F G = (G ·r f) ∙h (g' ·l F) ``` ## Properties @@ -256,12 +257,12 @@ module _ {f g : {x : A} (y : B x) → C y} where - coherence-left-right-whisker-htpy : + coherence-double-whisker-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-whisker-htpy h H h' = refl-htpy + coherence-double-whisker-htpy h H h' = refl-htpy ``` ## See also diff --git a/src/foundation/invertible-maps.lagda.md b/src/foundation/invertible-maps.lagda.md index 7c0cd4ede1..4fb62d4049 100644 --- a/src/foundation/invertible-maps.lagda.md +++ b/src/foundation/invertible-maps.lagda.md @@ -145,11 +145,11 @@ module _ ( coherence-triangle-homotopies ( is-retraction-map-invertible-map s) ( is-retraction-map-invertible-map t) - ( htpy-comp-horizontal I H)) × + ( horizontal-concat-htpy I H)) × ( coherence-triangle-homotopies ( is-section-map-invertible-map s) ( is-section-map-invertible-map t) - ( htpy-comp-horizontal H I)) + ( horizontal-concat-htpy H I)) htpy-invertible-map : (s t : invertible-map A B) → UU (l1 ⊔ l2) htpy-invertible-map s t = diff --git a/src/foundation/involutions.lagda.md b/src/foundation/involutions.lagda.md index 95839414db..c2ddd37532 100644 --- a/src/foundation/involutions.lagda.md +++ b/src/foundation/involutions.lagda.md @@ -121,7 +121,7 @@ module _ (s t : involution A) → map-involution s ~ map-involution t → UU l coherence-htpy-involution s t H = ( is-involution-map-involution s) ~ - ( htpy-comp-horizontal H H ∙h is-involution-map-involution t) + ( horizontal-concat-htpy H H ∙h is-involution-map-involution t) htpy-involution : (s t : involution A) → UU l htpy-involution s t = diff --git a/src/foundation/whiskering-homotopies.lagda.md b/src/foundation/whiskering-homotopies.lagda.md index 6ad291cdad..7ec9cb5ae0 100644 --- a/src/foundation/whiskering-homotopies.lagda.md +++ b/src/foundation/whiskering-homotopies.lagda.md @@ -294,28 +294,28 @@ module _ {l1 l2 l3 : Level} {A : UU l1} {B : A → UU l2} {C : A → UU l3} where - coh-left-unit-htpy-comp-horizontal : + coh-left-unit-horizontal-concat-htpy : {f : (x : A) → B x} {g g' : {x : A} → B x → C x} (G : {x : A} → g {x} ~ g' {x}) → - htpy-comp-horizontal (refl-htpy' f) G ~ - htpy-comp-horizontal' (refl-htpy' f) G - coh-left-unit-htpy-comp-horizontal G = inv-htpy-right-unit-htpy + horizontal-concat-htpy (refl-htpy' f) G ~ + horizontal-concat-htpy' (refl-htpy' f) G + coh-left-unit-horizontal-concat-htpy G = inv-htpy-right-unit-htpy - coh-right-unit-htpy-comp-horizontal : + coh-right-unit-horizontal-concat-htpy : {f f' : (x : A) → B x} {g : {x : A} → B x → C x} (F : f ~ f') → - htpy-comp-horizontal F (refl-htpy' g) ~ - htpy-comp-horizontal' F (refl-htpy' g) - coh-right-unit-htpy-comp-horizontal F = right-unit-htpy + horizontal-concat-htpy F (refl-htpy' g) ~ + horizontal-concat-htpy' F (refl-htpy' g) + coh-right-unit-horizontal-concat-htpy F = right-unit-htpy - coh-htpy-comp-horizontal : + coh-horizontal-concat-htpy : {f f' : (x : A) → B x} {g g' : {x : A} → B x → C x} (F : f ~ f') (G : {x : A} → g {x} ~ g' {x}) → - htpy-comp-horizontal F G ~ htpy-comp-horizontal' F G - coh-htpy-comp-horizontal {f} F G = + horizontal-concat-htpy F G ~ horizontal-concat-htpy' F G + coh-horizontal-concat-htpy {f} F G = ind-htpy f - ( λ f' F → htpy-comp-horizontal F G ~ htpy-comp-horizontal' F G) - ( coh-left-unit-htpy-comp-horizontal G) + ( λ f' F → horizontal-concat-htpy F G ~ horizontal-concat-htpy' F G) + ( coh-left-unit-horizontal-concat-htpy G) ( F) ``` diff --git a/src/orthogonal-factorization-systems/factorizations-of-maps.lagda.md b/src/orthogonal-factorization-systems/factorizations-of-maps.lagda.md index 6ce6c158b2..4cde80c885 100644 --- a/src/orthogonal-factorization-systems/factorizations-of-maps.lagda.md +++ b/src/orthogonal-factorization-systems/factorizations-of-maps.lagda.md @@ -160,7 +160,7 @@ module _ UU (l1 ⊔ l2) coherence-htpy-factorization-through F E R L = ( is-factorization-factorization-through F) ~ - ( htpy-comp-horizontal L R ∙h is-factorization-factorization-through E) + ( horizontal-concat-htpy L R ∙h is-factorization-factorization-through E) htpy-factorization-through : (F E : factorization-through f X) → UU (l1 ⊔ l2 ⊔ l3) diff --git a/src/synthetic-homotopy-theory/descent-circle-function-types.lagda.md b/src/synthetic-homotopy-theory/descent-circle-function-types.lagda.md index 85f8165fb3..85b3fe7ce6 100644 --- a/src/synthetic-homotopy-theory/descent-circle-function-types.lagda.md +++ b/src/synthetic-homotopy-theory/descent-circle-function-types.lagda.md @@ -98,7 +98,7 @@ module _ ( type-family-with-descent-data-circle B)) pr2 eq-descent-data-circle-function-type h = ( eq-htpy - ( htpy-comp-horizontal + ( horizontal-concat-htpy ( h ·l inv-htpy ( coherence-square-inv-all From 059ec252b052a1ef43421ad7fafca2e65c081e5e Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Thu, 1 Feb 2024 11:42:21 +0100 Subject: [PATCH 075/150] fix name whisker-square-htpy to whisker-coherence-square-htpy --- .../commuting-prisms-of-maps.lagda.md | 2 +- .../commuting-squares-of-maps.lagda.md | 2 +- src/foundation/whiskering-homotopies.lagda.md | 36 +++++++++---------- ...functoriality-sequential-colimits.lagda.md | 2 +- 4 files changed, 21 insertions(+), 21 deletions(-) diff --git a/src/foundation/commuting-prisms-of-maps.lagda.md b/src/foundation/commuting-prisms-of-maps.lagda.md index 31fcf3b462..7820091efa 100644 --- a/src/foundation/commuting-prisms-of-maps.lagda.md +++ b/src/foundation/commuting-prisms-of-maps.lagda.md @@ -92,7 +92,7 @@ module _ ( right-top) ( left-bottom) ( right-bottom))) ∙h - ( right-whisker-square-htpy + ( right-whisker-coherence-square-htpy ( front-bottom ·r hA) ( bottom ·r hA' ·r hA) ( hC' ·l ((g' ·l left-top) ∙h (right-top ·r h))) diff --git a/src/foundation/commuting-squares-of-maps.lagda.md b/src/foundation/commuting-squares-of-maps.lagda.md index aa6155e1ab..b4408cd66d 100644 --- a/src/foundation/commuting-squares-of-maps.lagda.md +++ b/src/foundation/commuting-squares-of-maps.lagda.md @@ -687,7 +687,7 @@ module _ ( bottom-right) ( sq-left-bottom ·r left-top) ( mid-bottom ·l sq-left-top)) ∙h - ( double-whisker-square-htpy + ( double-whisker-coherence-square-htpy ( bottom-right ·l (sq-left-bottom ·r left-top)) ( right-bottom ·l (sq-right-top ·r top-left)) ( inv-htpy diff --git a/src/foundation/whiskering-homotopies.lagda.md b/src/foundation/whiskering-homotopies.lagda.md index 7ec9cb5ae0..37a792316d 100644 --- a/src/foundation/whiskering-homotopies.lagda.md +++ b/src/foundation/whiskering-homotopies.lagda.md @@ -152,10 +152,10 @@ module _ ( H : f ~ g) (H' : f ~ g') {K : g ~ h} {K' : g' ~ h} (L : h ~ k) where - equiv-right-whisker-square-htpy : + equiv-right-whisker-coherence-square-htpy : ( coherence-square-homotopies H H' K K') ≃ ( coherence-square-homotopies H H' (K ∙h L) (K' ∙h L)) - equiv-right-whisker-square-htpy = + equiv-right-whisker-coherence-square-htpy = equiv-Π-equiv-family ( λ a → equiv-right-whisker-coherence-square-identifications @@ -165,24 +165,24 @@ module _ ( K' a) ( L a)) - right-whisker-square-htpy : + right-whisker-coherence-square-htpy : coherence-square-homotopies H H' K K' → coherence-square-homotopies H H' (K ∙h L) (K' ∙h L) - right-whisker-square-htpy = map-equiv equiv-right-whisker-square-htpy + right-whisker-coherence-square-htpy = map-equiv equiv-right-whisker-coherence-square-htpy - right-unwhisker-square-htpy : + right-unwhisker-coherence-square-htpy : coherence-square-homotopies H H' (K ∙h L) (K' ∙h L) → coherence-square-homotopies H H' K K' - right-unwhisker-square-htpy = map-inv-equiv equiv-right-whisker-square-htpy + right-unwhisker-coherence-square-htpy = map-inv-equiv equiv-right-whisker-coherence-square-htpy module _ ( L : k ~ f) {H : f ~ g} {H' : f ~ g'} {K : g ~ h} {K' : g' ~ h} where - equiv-left-whisker-square-htpy : + equiv-left-whisker-coherence-square-htpy : ( coherence-square-homotopies H H' K K') ≃ ( coherence-square-homotopies (L ∙h H) (L ∙h H') K K') - equiv-left-whisker-square-htpy = + equiv-left-whisker-coherence-square-htpy = equiv-Π-equiv-family ( λ a → equiv-left-whisker-coherence-square-identifications @@ -192,15 +192,15 @@ module _ ( K a) ( K' a)) - left-whisker-square-htpy : + left-whisker-coherence-square-htpy : coherence-square-homotopies H H' K K' → coherence-square-homotopies (L ∙h H) (L ∙h H') K K' - left-whisker-square-htpy = map-equiv equiv-left-whisker-square-htpy + left-whisker-coherence-square-htpy = map-equiv equiv-left-whisker-coherence-square-htpy - left-unwhisker-square-htpy : + left-unwhisker-coherence-square-htpy : coherence-square-homotopies (L ∙h H) (L ∙h H') K K' → coherence-square-homotopies H H' K K' - left-unwhisker-square-htpy = map-inv-equiv equiv-left-whisker-square-htpy + left-unwhisker-coherence-square-htpy = map-inv-equiv equiv-left-whisker-coherence-square-htpy module _ { l1 l2 : Level} {A : UU l1} {B : UU l2} @@ -208,10 +208,10 @@ module _ ( H : f ~ g) {K : g ~ h} {K' : g ~ h'} {L : h ~ k} {L' : h' ~ k} (M : k ~ m) where - equiv-double-whisker-square-htpy : + equiv-double-whisker-coherence-square-htpy : ( coherence-square-homotopies K K' L L') ≃ ( coherence-square-homotopies (H ∙h K) (H ∙h K') (L ∙h M) (L' ∙h M)) - equiv-double-whisker-square-htpy = + equiv-double-whisker-coherence-square-htpy = equiv-Π-equiv-family ( λ a → equiv-double-whisker-square-identifications @@ -222,15 +222,15 @@ module _ ( L' a) ( M a)) - double-whisker-square-htpy : + double-whisker-coherence-square-htpy : ( coherence-square-homotopies K K' L L') → ( coherence-square-homotopies (H ∙h K) (H ∙h K') (L ∙h M) (L' ∙h M)) - double-whisker-square-htpy = map-equiv equiv-double-whisker-square-htpy + double-whisker-coherence-square-htpy = map-equiv equiv-double-whisker-coherence-square-htpy - both-unwhisker-square-htpy : + both-unwhisker-coherence-square-htpy : ( coherence-square-homotopies (H ∙h K) (H ∙h K') (L ∙h M) (L' ∙h M)) → ( coherence-square-homotopies K K' L L') - both-unwhisker-square-htpy = map-inv-equiv equiv-double-whisker-square-htpy + both-unwhisker-coherence-square-htpy = map-inv-equiv equiv-double-whisker-coherence-square-htpy ``` ### Whiskering a square of homotopies by a map diff --git a/src/synthetic-homotopy-theory/functoriality-sequential-colimits.lagda.md b/src/synthetic-homotopy-theory/functoriality-sequential-colimits.lagda.md index f5255da870..9e058e992c 100644 --- a/src/synthetic-homotopy-theory/functoriality-sequential-colimits.lagda.md +++ b/src/synthetic-homotopy-theory/functoriality-sequential-colimits.lagda.md @@ -329,7 +329,7 @@ module _ ( g) ( n)))) pr2 htpy-preserves-comp-map-sequential-colimit-hom-sequential-diagram n = - ( right-whisker-square-htpy + ( right-whisker-coherence-square-htpy ( htpy-htpy-cocone-map-sequential-colimit-hom-sequential-diagram up-c c'' ( comp-hom-sequential-diagram A B C g f) ( n)) From d6ffa28d54c7b7f64d4c06f950a4bb0f263dfb9d Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Thu, 1 Feb 2024 11:46:25 +0100 Subject: [PATCH 076/150] rename comp-htpy to concat-htpy --- src/foundation/action-on-homotopies-functions.lagda.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/foundation/action-on-homotopies-functions.lagda.md b/src/foundation/action-on-homotopies-functions.lagda.md index e7f46ce6ae..cd4c2023db 100644 --- a/src/foundation/action-on-homotopies-functions.lagda.md +++ b/src/foundation/action-on-homotopies-functions.lagda.md @@ -117,11 +117,11 @@ module _ {f g h : (x : A) → B x} where - distributive-action-htpy-function-comp-htpy : + distributive-action-htpy-function-concat-htpy : (H : f ~ g) (H' : g ~ h) → action-htpy-function F (H ∙h H') = action-htpy-function F H ∙ action-htpy-function F H' - distributive-action-htpy-function-comp-htpy H H' = + distributive-action-htpy-function-concat-htpy H H' = ap² F (eq-htpy-concat-htpy H H') ∙ ap-concat F (eq-htpy H) (eq-htpy H') ``` From 8a9dafe6561c20038264c4619db9b7fc9b6e3beb Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Thu, 1 Feb 2024 11:47:01 +0100 Subject: [PATCH 077/150] make pre-commit --- src/foundation/whiskering-homotopies.lagda.md | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/src/foundation/whiskering-homotopies.lagda.md b/src/foundation/whiskering-homotopies.lagda.md index 37a792316d..7c4667f9a7 100644 --- a/src/foundation/whiskering-homotopies.lagda.md +++ b/src/foundation/whiskering-homotopies.lagda.md @@ -168,12 +168,14 @@ module _ right-whisker-coherence-square-htpy : coherence-square-homotopies H H' K K' → coherence-square-homotopies H H' (K ∙h L) (K' ∙h L) - right-whisker-coherence-square-htpy = map-equiv equiv-right-whisker-coherence-square-htpy + right-whisker-coherence-square-htpy = + map-equiv equiv-right-whisker-coherence-square-htpy right-unwhisker-coherence-square-htpy : coherence-square-homotopies H H' (K ∙h L) (K' ∙h L) → coherence-square-homotopies H H' K K' - right-unwhisker-coherence-square-htpy = map-inv-equiv equiv-right-whisker-coherence-square-htpy + right-unwhisker-coherence-square-htpy = + map-inv-equiv equiv-right-whisker-coherence-square-htpy module _ ( L : k ~ f) {H : f ~ g} {H' : f ~ g'} {K : g ~ h} {K' : g' ~ h} @@ -195,12 +197,14 @@ module _ left-whisker-coherence-square-htpy : coherence-square-homotopies H H' K K' → coherence-square-homotopies (L ∙h H) (L ∙h H') K K' - left-whisker-coherence-square-htpy = map-equiv equiv-left-whisker-coherence-square-htpy + left-whisker-coherence-square-htpy = + map-equiv equiv-left-whisker-coherence-square-htpy left-unwhisker-coherence-square-htpy : coherence-square-homotopies (L ∙h H) (L ∙h H') K K' → coherence-square-homotopies H H' K K' - left-unwhisker-coherence-square-htpy = map-inv-equiv equiv-left-whisker-coherence-square-htpy + left-unwhisker-coherence-square-htpy = + map-inv-equiv equiv-left-whisker-coherence-square-htpy module _ { l1 l2 : Level} {A : UU l1} {B : UU l2} @@ -225,12 +229,14 @@ module _ double-whisker-coherence-square-htpy : ( coherence-square-homotopies K K' L L') → ( coherence-square-homotopies (H ∙h K) (H ∙h K') (L ∙h M) (L' ∙h M)) - double-whisker-coherence-square-htpy = map-equiv equiv-double-whisker-coherence-square-htpy + double-whisker-coherence-square-htpy = + map-equiv equiv-double-whisker-coherence-square-htpy both-unwhisker-coherence-square-htpy : ( coherence-square-homotopies (H ∙h K) (H ∙h K') (L ∙h M) (L' ∙h M)) → ( coherence-square-homotopies K K' L L') - both-unwhisker-coherence-square-htpy = map-inv-equiv equiv-double-whisker-coherence-square-htpy + both-unwhisker-coherence-square-htpy = + map-inv-equiv equiv-double-whisker-coherence-square-htpy ``` ### Whiskering a square of homotopies by a map From 8d4e2a869e61a83706d62298c40658035d0e50d3 Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Thu, 1 Feb 2024 12:01:15 +0100 Subject: [PATCH 078/150] remove lossy-unification --- src/foundation/commuting-squares-of-maps.lagda.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/foundation/commuting-squares-of-maps.lagda.md b/src/foundation/commuting-squares-of-maps.lagda.md index b4408cd66d..8c3dd951b6 100644 --- a/src/foundation/commuting-squares-of-maps.lagda.md +++ b/src/foundation/commuting-squares-of-maps.lagda.md @@ -1,8 +1,6 @@ # Commuting squares of maps ```agda -{-# OPTIONS --lossy-unification #-} - module foundation.commuting-squares-of-maps where open import foundation-core.commuting-squares-of-maps public From 4e47643e1c4e81b9db5931a1146821726adb41da Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Thu, 1 Feb 2024 12:04:38 +0100 Subject: [PATCH 079/150] uniform naming --- .../function-extensionality.lagda.md | 18 +++---- .../commuting-prisms-of-maps.lagda.md | 2 +- .../commuting-squares-of-maps.lagda.md | 20 ++++---- ...ommuting-tetrahedra-of-homotopies.lagda.md | 8 ++-- ...commuting-triangles-of-homotopies.lagda.md | 8 ++-- .../function-extensionality.lagda.md | 6 +-- ...recomposition-dependent-functions.lagda.md | 2 +- src/foundation/whiskering-homotopies.lagda.md | 48 +++++++++---------- .../dependent-cocones-under-spans.lagda.md | 4 +- ...ndent-universal-property-pushouts.lagda.md | 2 +- ...functoriality-sequential-colimits.lagda.md | 2 +- 11 files changed, 60 insertions(+), 60 deletions(-) diff --git a/src/foundation-core/function-extensionality.lagda.md b/src/foundation-core/function-extensionality.lagda.md index 97e7973ab6..e8c84a49d3 100644 --- a/src/foundation-core/function-extensionality.lagda.md +++ b/src/foundation-core/function-extensionality.lagda.md @@ -186,7 +186,7 @@ Then the square [commutes](foundation-core.commuting-squares-of-maps.md). ```agda -coherence-square-htpy-eq-ap-precomp-Π : +coherence-square-homotopies-eq-ap-precomp-Π : {l1 l2 l3 : Level} {A : UU l1} {B : UU l2} (f : A → B) {C : B → UU l3} (g h : (b : B) → C b) → coherence-square-maps @@ -194,7 +194,7 @@ coherence-square-htpy-eq-ap-precomp-Π : ( htpy-eq) ( htpy-eq) ( precomp-Π f (eq-value g h)) -coherence-square-htpy-eq-ap-precomp-Π f g .g refl = refl +coherence-square-homotopies-eq-ap-precomp-Π f g .g refl = refl ``` #### Naturality of `htpy-eq` with respect to precomposition of ordinary functions @@ -214,7 +214,7 @@ Consider a map `f : A → B` and two functions `g h : B → C`. Then the square commutes. ```agda -coherence-square-htpy-eq-ap-precomp : +coherence-square-homotopies-eq-ap-precomp : {l1 l2 l3 : Level} {A : UU l1} {B : UU l2} {C : UU l3} (f : A → B) → (g h : B → C) → coherence-square-maps @@ -222,7 +222,7 @@ coherence-square-htpy-eq-ap-precomp : ( htpy-eq) ( htpy-eq) ( precomp-Π f (eq-value g h)) -coherence-square-htpy-eq-ap-precomp f = coherence-square-htpy-eq-ap-precomp-Π f +coherence-square-homotopies-eq-ap-precomp f = coherence-square-homotopies-eq-ap-precomp-Π f ``` #### Naturality of `htpy-eq` with respect to postcomposition of dependent functions @@ -243,7 +243,7 @@ Consider a map `f : {x : A} → B x → C x` and two functions commutes. ```agda -coherence-square-htpy-eq-ap-postcomp-Π : +coherence-square-homotopies-eq-ap-postcomp-Π : {l1 l2 l3 : Level} {A : UU l1} {B : A → UU l2} {C : A → UU l3} (f : {x : A} → B x → C x) (g h : (x : A) → B x) → coherence-square-maps @@ -251,7 +251,7 @@ coherence-square-htpy-eq-ap-postcomp-Π : ( htpy-eq) ( htpy-eq) ( f ·l_) -coherence-square-htpy-eq-ap-postcomp-Π f g .g refl = refl +coherence-square-homotopies-eq-ap-postcomp-Π f g .g refl = refl ``` #### Naturality of `htpy-eq` with respect to postcomposition of ordinary functions @@ -271,7 +271,7 @@ Consider a map `f : B → C` and two functions `g h : A → B`. Then the square commutes. ```agda -coherence-square-htpy-eq-ap-postcomp : +coherence-square-homotopies-eq-ap-postcomp : {l1 l2 l3 : Level} {A : UU l1} {B : UU l2} {C : UU l3} (f : B → C) → (g h : A → B) → coherence-square-maps @@ -279,8 +279,8 @@ coherence-square-htpy-eq-ap-postcomp : ( htpy-eq) ( htpy-eq) ( f ·l_) -coherence-square-htpy-eq-ap-postcomp f = - coherence-square-htpy-eq-ap-postcomp-Π f +coherence-square-homotopies-eq-ap-postcomp f = + coherence-square-homotopies-eq-ap-postcomp-Π f ``` ### Computing the action on paths of an evaluation map diff --git a/src/foundation/commuting-prisms-of-maps.lagda.md b/src/foundation/commuting-prisms-of-maps.lagda.md index 7820091efa..898265fda0 100644 --- a/src/foundation/commuting-prisms-of-maps.lagda.md +++ b/src/foundation/commuting-prisms-of-maps.lagda.md @@ -92,7 +92,7 @@ module _ ( right-top) ( left-bottom) ( right-bottom))) ∙h - ( right-whisker-coherence-square-htpy + ( right-whisker-coherence-square-homotopies ( front-bottom ·r hA) ( bottom ·r hA' ·r hA) ( hC' ·l ((g' ·l left-top) ∙h (right-top ·r h))) diff --git a/src/foundation/commuting-squares-of-maps.lagda.md b/src/foundation/commuting-squares-of-maps.lagda.md index 8c3dd951b6..bc333fe930 100644 --- a/src/foundation/commuting-squares-of-maps.lagda.md +++ b/src/foundation/commuting-squares-of-maps.lagda.md @@ -64,21 +64,21 @@ module _ ( top : A → X) (left : A → B) (right : X → Y) (bottom : B → Y) where - coherence-square-htpy-coherence-triangles-maps : + coherence-square-homotopies-coherence-triangles-maps : { diagonal-left diagonal-right : A → Y} → diagonal-left ~ diagonal-right → coherence-triangle-maps' diagonal-left bottom left → coherence-triangle-maps diagonal-right right top → coherence-square-maps top left right bottom - coherence-square-htpy-coherence-triangles-maps L H K = (H ∙h L) ∙h K + coherence-square-homotopies-coherence-triangles-maps L H K = (H ∙h L) ∙h K - coherence-square-htpy-coherence-triangles-maps' : + coherence-square-homotopies-coherence-triangles-maps' : { diagonal-left diagonal-right : A → Y} → diagonal-left ~ diagonal-right → coherence-triangle-maps' diagonal-left bottom left → coherence-triangle-maps diagonal-right right top → coherence-square-maps top left right bottom - coherence-square-htpy-coherence-triangles-maps' L H K = H ∙h (L ∙h K) + coherence-square-homotopies-coherence-triangles-maps' L H K = H ∙h (L ∙h K) coherence-square-coherence-triangles-maps : ( diagonal : A → Y) → @@ -91,7 +91,7 @@ module _ ( diagonal : A → Y) → ( H : coherence-triangle-maps' diagonal bottom left) → ( K : coherence-triangle-maps diagonal right top) → - ( coherence-square-htpy-coherence-triangles-maps refl-htpy H K) ~ + ( coherence-square-homotopies-coherence-triangles-maps refl-htpy H K) ~ ( coherence-square-coherence-triangles-maps diagonal H K) compute-coherence-square-refl-htpy-coherence-triangles-maps diagonal H K x = right-whisker-identification right-unit (K x) @@ -685,7 +685,7 @@ module _ ( bottom-right) ( sq-left-bottom ·r left-top) ( mid-bottom ·l sq-left-top)) ∙h - ( double-whisker-coherence-square-htpy + ( double-whisker-coherence-square-homotopies ( bottom-right ·l (sq-left-bottom ·r left-top)) ( right-bottom ·l (sq-right-top ·r top-left)) ( inv-htpy @@ -1015,7 +1015,7 @@ module _ ( left) ( right) ( bottom) - ( coherence-square-htpy-coherence-triangles-maps + ( coherence-square-homotopies-coherence-triangles-maps ( top) ( left) ( right) @@ -1024,7 +1024,7 @@ module _ ( H) ( K)) ( W)) ~ - ( coherence-square-htpy-coherence-triangles-maps + ( coherence-square-homotopies-coherence-triangles-maps ( precomp right W) ( precomp bottom W) ( precomp top W) @@ -1053,7 +1053,7 @@ module _ ( left) ( right) ( bottom) - ( coherence-square-htpy-coherence-triangles-maps' + ( coherence-square-homotopies-coherence-triangles-maps' ( top) ( left) ( right) @@ -1062,7 +1062,7 @@ module _ ( H) ( K)) ( W)) ~ - ( coherence-square-htpy-coherence-triangles-maps' + ( coherence-square-homotopies-coherence-triangles-maps' ( precomp right W) ( precomp bottom W) ( precomp top W) diff --git a/src/foundation/commuting-tetrahedra-of-homotopies.lagda.md b/src/foundation/commuting-tetrahedra-of-homotopies.lagda.md index 89daa21d5b..f926a54a8c 100644 --- a/src/foundation/commuting-tetrahedra-of-homotopies.lagda.md +++ b/src/foundation/commuting-tetrahedra-of-homotopies.lagda.md @@ -50,12 +50,12 @@ module _ coherence-tetrahedron-homotopies : UU (l1 ⊔ l2) coherence-tetrahedron-homotopies = ( ( upper-right) ∙h - ( left-whisker-htpy-coherence-triangle-homotopies + ( left-whisker-coherence-triangle-homotopies ( diagonal-up) ( right) ( upper-left))) ~ ( ( lower-left) ∙h - ( right-whisker-htpy-coherence-triangle-homotopies + ( right-whisker-coherence-triangle-homotopies ( right) ( lower-right) ( left)) ∙h @@ -64,13 +64,13 @@ module _ coherence-tetrahedron-homotopies' : UU (l1 ⊔ l2) coherence-tetrahedron-homotopies' = ( ( lower-left) ∙h - ( right-whisker-htpy-coherence-triangle-homotopies + ( right-whisker-coherence-triangle-homotopies ( right) ( lower-right) ( left)) ∙h ( assoc-htpy left diagonal-up right)) ~ ( ( upper-right) ∙h - ( left-whisker-htpy-coherence-triangle-homotopies + ( left-whisker-coherence-triangle-homotopies ( diagonal-up) ( right) ( upper-left))) diff --git a/src/foundation/commuting-triangles-of-homotopies.lagda.md b/src/foundation/commuting-triangles-of-homotopies.lagda.md index ca992c6498..802400aa0e 100644 --- a/src/foundation/commuting-triangles-of-homotopies.lagda.md +++ b/src/foundation/commuting-triangles-of-homotopies.lagda.md @@ -80,11 +80,11 @@ module _ {left : f ~ h} (right : g ~ h) {top : f ~ g} where - left-whisker-htpy-coherence-triangle-homotopies : + left-whisker-coherence-triangle-homotopies : {i : (x : A) → B x} (H : h ~ i) (T : coherence-triangle-homotopies left right top) → coherence-triangle-homotopies {h = i} (left ∙h H) (right ∙h H) top - left-whisker-htpy-coherence-triangle-homotopies H T = + left-whisker-coherence-triangle-homotopies H T = (λ x → right-whisker-identification (T x) (H x)) ∙h assoc-htpy top right H module _ @@ -112,11 +112,11 @@ module _ {left : f ~ h} (right : g ~ h) {top : f ~ g} where - right-whisker-htpy-coherence-triangle-homotopies : + right-whisker-coherence-triangle-homotopies : {i : (x : A) → B x} (T : coherence-triangle-homotopies left right top) (H : i ~ f) → coherence-triangle-homotopies {f = i} (H ∙h left) right (H ∙h top) - right-whisker-htpy-coherence-triangle-homotopies T H = + right-whisker-coherence-triangle-homotopies T H = ( λ x → left-whisker-identification (H x) (T x)) ∙h ( inv-htpy-assoc-htpy H top right) diff --git a/src/foundation/function-extensionality.lagda.md b/src/foundation/function-extensionality.lagda.md index 910709f6f4..a3fea5579d 100644 --- a/src/foundation/function-extensionality.lagda.md +++ b/src/foundation/function-extensionality.lagda.md @@ -69,7 +69,7 @@ coherence-square-eq-htpy-ap-precomp-Π f {C = C} g h = ( equiv-funext) ( equiv-funext) ( precomp-Π f (eq-value g h)) - ( coherence-square-htpy-eq-ap-precomp-Π f g h) + ( coherence-square-homotopies-eq-ap-precomp-Π f g h) ``` #### Naturality of `eq-htpy` with respect to precomposition of ordinary functions @@ -103,7 +103,7 @@ coherence-square-eq-htpy-ap-precomp {C = C} f g h = ( equiv-funext) ( equiv-funext) ( precomp-Π f (eq-value g h)) - ( coherence-square-htpy-eq-ap-precomp f g h) + ( coherence-square-homotopies-eq-ap-precomp f g h) ``` #### Naturality of `eq-htpy` with respect to postcomposition of dependent functions @@ -138,7 +138,7 @@ coherence-square-eq-htpy-ap-postcomp-Π {A = A} f g h = ( equiv-funext) ( equiv-funext) ( f ·l_) - ( coherence-square-htpy-eq-ap-postcomp-Π f g h) + ( coherence-square-homotopies-eq-ap-postcomp-Π f g h) ``` #### Naturality of `eq-htpy` with respect to postcomposition of ordinary functions diff --git a/src/foundation/precomposition-dependent-functions.lagda.md b/src/foundation/precomposition-dependent-functions.lagda.md index af37867b25..12d6f0d876 100644 --- a/src/foundation/precomposition-dependent-functions.lagda.md +++ b/src/foundation/precomposition-dependent-functions.lagda.md @@ -55,7 +55,7 @@ is-trunc-map-succ-precomp-Π {k = k} {f = f} {C = C} H = ( htpy-eq) ( htpy-eq) ( precomp-Π f (eq-value g h)) - ( coherence-square-htpy-eq-ap-precomp-Π f g h) + ( coherence-square-homotopies-eq-ap-precomp-Π f g h) ( funext g h) ( funext (g ∘ f) (h ∘ f)) ( H g h)) diff --git a/src/foundation/whiskering-homotopies.lagda.md b/src/foundation/whiskering-homotopies.lagda.md index 7c4667f9a7..4f101e181e 100644 --- a/src/foundation/whiskering-homotopies.lagda.md +++ b/src/foundation/whiskering-homotopies.lagda.md @@ -152,10 +152,10 @@ module _ ( H : f ~ g) (H' : f ~ g') {K : g ~ h} {K' : g' ~ h} (L : h ~ k) where - equiv-right-whisker-coherence-square-htpy : + equiv-right-whisker-coherence-square-homotopies : ( coherence-square-homotopies H H' K K') ≃ ( coherence-square-homotopies H H' (K ∙h L) (K' ∙h L)) - equiv-right-whisker-coherence-square-htpy = + equiv-right-whisker-coherence-square-homotopies = equiv-Π-equiv-family ( λ a → equiv-right-whisker-coherence-square-identifications @@ -165,26 +165,26 @@ module _ ( K' a) ( L a)) - right-whisker-coherence-square-htpy : + right-whisker-coherence-square-homotopies : coherence-square-homotopies H H' K K' → coherence-square-homotopies H H' (K ∙h L) (K' ∙h L) - right-whisker-coherence-square-htpy = - map-equiv equiv-right-whisker-coherence-square-htpy + right-whisker-coherence-square-homotopies = + map-equiv equiv-right-whisker-coherence-square-homotopies - right-unwhisker-coherence-square-htpy : + right-unwhisker-coherence-square-homotopies : coherence-square-homotopies H H' (K ∙h L) (K' ∙h L) → coherence-square-homotopies H H' K K' - right-unwhisker-coherence-square-htpy = - map-inv-equiv equiv-right-whisker-coherence-square-htpy + right-unwhisker-coherence-square-homotopies = + map-inv-equiv equiv-right-whisker-coherence-square-homotopies module _ ( L : k ~ f) {H : f ~ g} {H' : f ~ g'} {K : g ~ h} {K' : g' ~ h} where - equiv-left-whisker-coherence-square-htpy : + equiv-left-whisker-coherence-square-homotopies : ( coherence-square-homotopies H H' K K') ≃ ( coherence-square-homotopies (L ∙h H) (L ∙h H') K K') - equiv-left-whisker-coherence-square-htpy = + equiv-left-whisker-coherence-square-homotopies = equiv-Π-equiv-family ( λ a → equiv-left-whisker-coherence-square-identifications @@ -194,17 +194,17 @@ module _ ( K a) ( K' a)) - left-whisker-coherence-square-htpy : + left-whisker-coherence-square-homotopies : coherence-square-homotopies H H' K K' → coherence-square-homotopies (L ∙h H) (L ∙h H') K K' - left-whisker-coherence-square-htpy = - map-equiv equiv-left-whisker-coherence-square-htpy + left-whisker-coherence-square-homotopies = + map-equiv equiv-left-whisker-coherence-square-homotopies - left-unwhisker-coherence-square-htpy : + left-unwhisker-coherence-square-homotopies : coherence-square-homotopies (L ∙h H) (L ∙h H') K K' → coherence-square-homotopies H H' K K' - left-unwhisker-coherence-square-htpy = - map-inv-equiv equiv-left-whisker-coherence-square-htpy + left-unwhisker-coherence-square-homotopies = + map-inv-equiv equiv-left-whisker-coherence-square-homotopies module _ { l1 l2 : Level} {A : UU l1} {B : UU l2} @@ -212,10 +212,10 @@ module _ ( H : f ~ g) {K : g ~ h} {K' : g ~ h'} {L : h ~ k} {L' : h' ~ k} (M : k ~ m) where - equiv-double-whisker-coherence-square-htpy : + equiv-double-whisker-coherence-square-homotopies : ( coherence-square-homotopies K K' L L') ≃ ( coherence-square-homotopies (H ∙h K) (H ∙h K') (L ∙h M) (L' ∙h M)) - equiv-double-whisker-coherence-square-htpy = + equiv-double-whisker-coherence-square-homotopies = equiv-Π-equiv-family ( λ a → equiv-double-whisker-square-identifications @@ -226,17 +226,17 @@ module _ ( L' a) ( M a)) - double-whisker-coherence-square-htpy : + double-whisker-coherence-square-homotopies : ( coherence-square-homotopies K K' L L') → ( coherence-square-homotopies (H ∙h K) (H ∙h K') (L ∙h M) (L' ∙h M)) - double-whisker-coherence-square-htpy = - map-equiv equiv-double-whisker-coherence-square-htpy + double-whisker-coherence-square-homotopies = + map-equiv equiv-double-whisker-coherence-square-homotopies - both-unwhisker-coherence-square-htpy : + both-unwhisker-coherence-square-homotopies : ( coherence-square-homotopies (H ∙h K) (H ∙h K') (L ∙h M) (L' ∙h M)) → ( coherence-square-homotopies K K' L L') - both-unwhisker-coherence-square-htpy = - map-inv-equiv equiv-double-whisker-coherence-square-htpy + both-unwhisker-coherence-square-homotopies = + map-inv-equiv equiv-double-whisker-coherence-square-homotopies ``` ### Whiskering a square of homotopies by a map diff --git a/src/synthetic-homotopy-theory/dependent-cocones-under-spans.lagda.md b/src/synthetic-homotopy-theory/dependent-cocones-under-spans.lagda.md index 9d8e684cbb..b7cb6575fc 100644 --- a/src/synthetic-homotopy-theory/dependent-cocones-under-spans.lagda.md +++ b/src/synthetic-homotopy-theory/dependent-cocones-under-spans.lagda.md @@ -173,11 +173,11 @@ module _ vertical-htpy-eq-dependent-cocone = pr1 (pr2 (htpy-eq-dependent-cocone d' p)) - coherence-square-htpy-eq-dependent-cocone : + coherence-square-homotopies-eq-dependent-cocone : coherence-htpy-dependent-cocone d' ( horizontal-htpy-eq-dependent-cocone) ( vertical-htpy-eq-dependent-cocone) - coherence-square-htpy-eq-dependent-cocone = + coherence-square-homotopies-eq-dependent-cocone = pr2 (pr2 (htpy-eq-dependent-cocone d' p)) abstract diff --git a/src/synthetic-homotopy-theory/dependent-universal-property-pushouts.lagda.md b/src/synthetic-homotopy-theory/dependent-universal-property-pushouts.lagda.md index 23a340bb74..470d587bfe 100644 --- a/src/synthetic-homotopy-theory/dependent-universal-property-pushouts.lagda.md +++ b/src/synthetic-homotopy-theory/dependent-universal-property-pushouts.lagda.md @@ -120,7 +120,7 @@ htpy-eq-dependent-cocone-map f g c ind-c {P} h h' p = ( dependent-cocone-map f g c P h') ( p) ( g s)) - ( coherence-square-htpy-eq-dependent-cocone f g c P + ( coherence-square-homotopies-eq-dependent-cocone f g c P ( dependent-cocone-map f g c P h) ( dependent-cocone-map f g c P h') ( p) diff --git a/src/synthetic-homotopy-theory/functoriality-sequential-colimits.lagda.md b/src/synthetic-homotopy-theory/functoriality-sequential-colimits.lagda.md index 9e058e992c..4a37741db3 100644 --- a/src/synthetic-homotopy-theory/functoriality-sequential-colimits.lagda.md +++ b/src/synthetic-homotopy-theory/functoriality-sequential-colimits.lagda.md @@ -329,7 +329,7 @@ module _ ( g) ( n)))) pr2 htpy-preserves-comp-map-sequential-colimit-hom-sequential-diagram n = - ( right-whisker-coherence-square-htpy + ( right-whisker-coherence-square-homotopies ( htpy-htpy-cocone-map-sequential-colimit-hom-sequential-diagram up-c c'' ( comp-hom-sequential-diagram A B C g f) ( n)) From 2cf53300fb8b0698a18baba40fca7a97f9945ebe Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Thu, 1 Feb 2024 12:07:45 +0100 Subject: [PATCH 080/150] make pre-commit --- src/foundation-core/function-extensionality.lagda.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/foundation-core/function-extensionality.lagda.md b/src/foundation-core/function-extensionality.lagda.md index e8c84a49d3..b22870c63f 100644 --- a/src/foundation-core/function-extensionality.lagda.md +++ b/src/foundation-core/function-extensionality.lagda.md @@ -222,7 +222,8 @@ coherence-square-homotopies-eq-ap-precomp : ( htpy-eq) ( htpy-eq) ( precomp-Π f (eq-value g h)) -coherence-square-homotopies-eq-ap-precomp f = coherence-square-homotopies-eq-ap-precomp-Π f +coherence-square-homotopies-eq-ap-precomp f = + coherence-square-homotopies-eq-ap-precomp-Π f ``` #### Naturality of `htpy-eq` with respect to postcomposition of dependent functions From f65af3142f2670da31f5cbd07c25edf65034c9c9 Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Thu, 1 Feb 2024 16:38:06 +0100 Subject: [PATCH 081/150] wip --- .../whiskering-homotopies.lagda.md | 4 +- ...ommuting-tetrahedra-of-homotopies.lagda.md | 42 +-- ...commuting-triangles-of-homotopies.lagda.md | 76 +++--- ...ting-triangles-of-identifications.lagda.md | 4 +- src/foundation/morphisms-arrows.lagda.md | 3 + src/foundation/whiskering-homotopies.lagda.md | 4 +- .../lifting-squares.lagda.md | 245 +++++++++--------- 7 files changed, 205 insertions(+), 173 deletions(-) diff --git a/src/foundation-core/whiskering-homotopies.lagda.md b/src/foundation-core/whiskering-homotopies.lagda.md index 53c8e4fac2..4e1cd9dd45 100644 --- a/src/foundation-core/whiskering-homotopies.lagda.md +++ b/src/foundation-core/whiskering-homotopies.lagda.md @@ -30,7 +30,7 @@ assumes a diagram of the form g ``` -and is defined to be a function `h ·l_ : (f ~ g) → (h ∘ f ~ h ∘ g)`. The **right +and is defined to be a function `H ↦ h ·l H : (f ~ g) → (h ∘ f ~ h ∘ g)`. The **right whiskering** operation assumes a diagram of the form ```text @@ -40,7 +40,7 @@ whiskering** operation assumes a diagram of the form h ``` -and is defined to be a function `_·r f : (g ~ h) → (g ∘ f ~ h ∘ f)`. +and is defined to be a function `H ↦ H ·r f : (g ~ h) → (g ∘ f ~ h ∘ f)`. **Note**: The infix whiskering operators `_·l_` and `_·r_` use the [middle dot](https://codepoints.net/U+00B7) `·` (agda-input: `\cdot` diff --git a/src/foundation/commuting-tetrahedra-of-homotopies.lagda.md b/src/foundation/commuting-tetrahedra-of-homotopies.lagda.md index f926a54a8c..96cf5e9289 100644 --- a/src/foundation/commuting-tetrahedra-of-homotopies.lagda.md +++ b/src/foundation/commuting-tetrahedra-of-homotopies.lagda.md @@ -22,13 +22,15 @@ A is a commuting diagram of the form ```text - f ----------> g - | \ ^ | - | \ / | - | / | - | / \ | - V / v V - h ----------> i. + top + f ----------> g + | \ ∧ | + | \ / | + left | / | right + | / \ | + ∨ / ∨ ∨ + h ----------> i. + bottom ``` where `f`, `g`, `h`, and `i` are functions. @@ -50,28 +52,36 @@ module _ coherence-tetrahedron-homotopies : UU (l1 ⊔ l2) coherence-tetrahedron-homotopies = ( ( upper-right) ∙h - ( left-whisker-coherence-triangle-homotopies + ( right-whisker-coherence-triangle-homotopies + ( top) ( diagonal-up) + ( left) ( right) ( upper-left))) ~ ( ( lower-left) ∙h - ( right-whisker-coherence-triangle-homotopies + ( left-whisker-coherence-triangle-homotopies + ( left) + ( bottom) ( right) - ( lower-right) - ( left)) ∙h + ( diagonal-up) + ( lower-right)) ∙h ( assoc-htpy left diagonal-up right)) coherence-tetrahedron-homotopies' : UU (l1 ⊔ l2) coherence-tetrahedron-homotopies' = ( ( lower-left) ∙h - ( right-whisker-coherence-triangle-homotopies - ( right) - ( lower-right) - ( left)) ∙h + ( left-whisker-coherence-triangle-homotopies + ( left) + ( bottom) + ( right) + ( diagonal-up) + ( lower-right)) ∙h ( assoc-htpy left diagonal-up right)) ~ ( ( upper-right) ∙h - ( left-whisker-coherence-triangle-homotopies + ( right-whisker-coherence-triangle-homotopies + ( top) ( diagonal-up) + ( left) ( right) ( upper-left))) ``` diff --git a/src/foundation/commuting-triangles-of-homotopies.lagda.md b/src/foundation/commuting-triangles-of-homotopies.lagda.md index 802400aa0e..ecd79e334a 100644 --- a/src/foundation/commuting-triangles-of-homotopies.lagda.md +++ b/src/foundation/commuting-triangles-of-homotopies.lagda.md @@ -22,20 +22,22 @@ open import foundation-core.whiskering-homotopies ## Idea -A triangle of homotopies of maps +A triangle of [homotopies](foundation-core.homotopies.md) of dependent functions ```text - f ----> g - \ / - \ / - V V - h + top + f ----> g + \ / + left \ / right + ∨ ∨ + h ``` -is said to commute if there is a homotopy between the homotopy on the left -`f ~ h` and the composite homotopy `f ~ g ~ h`. +is said to commute if there is a homotopy `left ~ top ∙h right`. -## Definition +## Definitions + +### Coherences of commuting triangles of homotopies ```agda module _ @@ -45,11 +47,11 @@ module _ coherence-triangle-homotopies : (left : f ~ h) (right : g ~ h) (top : f ~ g) → UU (l1 ⊔ l2) - coherence-triangle-homotopies left right top = left ~ (top ∙h right) + coherence-triangle-homotopies left right top = left ~ top ∙h right coherence-triangle-homotopies' : (left : f ~ h) (right : g ~ h) (top : f ~ g) → UU (l1 ⊔ l2) - coherence-triangle-homotopies' left right top = (top ∙h right) ~ left + coherence-triangle-homotopies' left right top = top ∙h right ~ left ``` ## Properties @@ -74,18 +76,25 @@ module _ ### Left whiskering triangles of homotopies ```agda +{- module _ {l1 l2 : Level} {A : UU l1} {B : A → UU l2} {f g h : (x : A) → B x} - {left : f ~ h} (right : g ~ h) {top : f ~ g} + (left : f ~ h) (right : g ~ h) (top : f ~ g) where - left-whisker-coherence-triangle-homotopies : - {i : (x : A) → B x} - (H : h ~ i) (T : coherence-triangle-homotopies left right top) → - coherence-triangle-homotopies {h = i} (left ∙h H) (right ∙h H) top - left-whisker-coherence-triangle-homotopies H T = - (λ x → right-whisker-identification (T x) (H x)) ∙h assoc-htpy top right H + right-whisker-coherence-triangle-homotopies : + {i : (x : A) → B x} (H : h ~ i) → + coherence-triangle-homotopies left right top → + coherence-triangle-homotopies (left ∙h H) (right ∙h H) top + right-whisker-coherence-triangle-homotopies H T x = + right-whisker-coherence-triangle-identifications + ( left x) + ( right x) + ( top x) + ( H x) + ( T x) +-} module _ {l1 l2 : Level} {A : UU l1} {B : UU l2} @@ -93,13 +102,13 @@ module _ {left : f ~ h} (right : g ~ h) {top : f ~ g} where - left-whisker-coherence-triangle-homotopies : + right-whisker-coherence-triangle-homotopies : {l3 : Level} {X : UU l3} (i : B → X) (T : coherence-triangle-homotopies left right top) → coherence-triangle-homotopies {f = i ∘ f} {i ∘ g} {i ∘ h} (i ·l left) (i ·l right) (i ·l top) - left-whisker-coherence-triangle-homotopies i = + right-whisker-coherence-triangle-homotopies i = distributivity-left-whisker i left right top ``` @@ -108,29 +117,34 @@ module _ ```agda module _ {l1 l2 : Level} {A : UU l1} {B : A → UU l2} - {f g h : (x : A) → B x} - {left : f ~ h} (right : g ~ h) {top : f ~ g} + {f g h i : (x : A) → B x} (H : i ~ f) + (left : f ~ h) (right : g ~ h) (top : f ~ g) where - right-whisker-coherence-triangle-homotopies : - {i : (x : A) → B x} - (T : coherence-triangle-homotopies left right top) (H : i ~ f) → + left-whisker-coherence-triangle-homotopies : + (T : coherence-triangle-homotopies left right top)→ coherence-triangle-homotopies {f = i} (H ∙h left) right (H ∙h top) - right-whisker-coherence-triangle-homotopies T H = - ( λ x → left-whisker-identification (H x) (T x)) ∙h - ( inv-htpy-assoc-htpy H top right) - + left-whisker-coherence-triangle-homotopies T x = + left-whisker-coherence-triangle-identifications + ( H x) + ( left x) + ( right x) + ( top x) + ( T x) + +{- module _ {l1 l2 : Level} {A : UU l1} {B : UU l2} {f g h : A → B} {left : f ~ h} (right : g ~ h) {top : f ~ g} where - right-whisker-coherence-triangle-homotopies : + left-whisker-coherence-triangle-homotopies : {l3 : Level} {X : UU l3} (T : coherence-triangle-homotopies left right top) (i : X → A) → coherence-triangle-homotopies {f = f ∘ i} {g ∘ i} {h ∘ i} (left ·r i) (right ·r i) (top ·r i) - right-whisker-coherence-triangle-homotopies T i = T ∘ i + left-whisker-coherence-triangle-homotopies T i = T ∘ i +-} ``` diff --git a/src/foundation/commuting-triangles-of-identifications.lagda.md b/src/foundation/commuting-triangles-of-identifications.lagda.md index 892b3d4886..4884f03ece 100644 --- a/src/foundation/commuting-triangles-of-identifications.lagda.md +++ b/src/foundation/commuting-triangles-of-identifications.lagda.md @@ -159,7 +159,7 @@ for any identification `p : u = x`. ```agda module _ {l : Level} {A : UU l} {x y z u : A} - (p : u = x) {left : x = z} {right : y = z} {top : x = y} + (p : u = x) (left : x = z) (right : y = z) (top : x = y) where equiv-left-whisker-coherence-triangle-identifications : @@ -219,7 +219,7 @@ for any identification `p : z = u`. ```agda module _ {l : Level} {A : UU l} {x y z u : A} - (left : x = z) (top : x = y) {right : y = z} (p : z = u) + (left : x = z) (right : y = z) (top : x = y) (p : z = u) where equiv-right-whisker-coherence-triangle-identifications : diff --git a/src/foundation/morphisms-arrows.lagda.md b/src/foundation/morphisms-arrows.lagda.md index 32e66d6262..6e922c8dc2 100644 --- a/src/foundation/morphisms-arrows.lagda.md +++ b/src/foundation/morphisms-arrows.lagda.md @@ -449,6 +449,9 @@ module _ coh-left-whisker-htpy-hom-arrow a = ( left-whisker-coherence-triangle-identifications' ( ap (map-codomain-hom-arrow g h γ) (coh-hom-arrow f g α a)) + ( _) + ( _) + ( _) ( ( ap ( coh-hom-arrow g h γ (map-domain-hom-arrow f g α a) ∙_) ( inv diff --git a/src/foundation/whiskering-homotopies.lagda.md b/src/foundation/whiskering-homotopies.lagda.md index 4f101e181e..68fa29e8f1 100644 --- a/src/foundation/whiskering-homotopies.lagda.md +++ b/src/foundation/whiskering-homotopies.lagda.md @@ -42,7 +42,7 @@ assumes a diagram of the form g ``` -and is defined to be a function `h ·l_ : (f ~ g) → (h ∘ f ~ h ∘ g)`. The **right +and is defined to be a function `H ↦ h ·l H : (f ~ g) → (h ∘ f ~ h ∘ g)`. The **right whiskering** operation assumes a diagram of the form ```text @@ -52,7 +52,7 @@ whiskering** operation assumes a diagram of the form h ``` -and is defined to be a function `_·r f : (g ~ h) → (g ∘ f ~ h ∘ f)`. +and is defined to be a function `H ↦ H ·r f : (g ~ h) → (g ∘ f ~ h ∘ f)`. **Note**: The infix whiskering operators `_·l_` and `_·r_` use the [middle dot](https://codepoints.net/U+00B7) `·` (agda-input: `\cdot` diff --git a/src/orthogonal-factorization-systems/lifting-squares.lagda.md b/src/orthogonal-factorization-systems/lifting-squares.lagda.md index 79a1aaecde..0ebfe2be24 100644 --- a/src/orthogonal-factorization-systems/lifting-squares.lagda.md +++ b/src/orthogonal-factorization-systems/lifting-squares.lagda.md @@ -160,8 +160,13 @@ module _ ( g ·l is-extension-lifting-square l) ( is-lift-lifting-square l' ·r f) ( coherence-lifting-square l) - ( left-whisker-coherence-triangle-homotopies (K ·r f) g E) - ( right-whisker-coherence-triangle-homotopies (g ·l K) L f) + ( left-whisker-coherence-triangle-homotopies + {!!} + {!!} + {!!} + {!g ·l K!} + {!coherence-lifting-square l!}) --(K ·r f) g E) + ( -whisker-coherence-triangle-homotopies {!!} {!!} {!!} {!!} {!!}) --(g ·l K) L f) ( coherence-lifting-square l') htpy-lifting-square : @@ -177,121 +182,121 @@ module _ ( is-lift-lifting-square l ∙h (g ·l K))) ( coherence-htpy-lifting-square l l' K E))) - refl-htpy-lifting-square : - (l : lifting-square h f g i H) → htpy-lifting-square l l - pr1 (refl-htpy-lifting-square l) = refl-htpy - pr1 (pr2 (refl-htpy-lifting-square l)) = inv-htpy-right-unit-htpy - pr1 (pr2 (pr2 (refl-htpy-lifting-square l))) = inv-htpy-right-unit-htpy - pr2 (pr2 (pr2 (refl-htpy-lifting-square l))) x = - ( inv (assoc (inv right-unit) (β) (α))) ∙ - ( ( right-whisker-identification - ( ( left-whisker-identification - ( inv right-unit) - ( ( right-transpose-eq-concat _ _ _ - ( inv - ( compute-refl-right-whisker-identification - ( coherence-lifting-square l x)))) ∙ - ( assoc - ( right-unit) - ( coherence-lifting-square l x) - ( inv right-unit)))) ∙ - ( is-retraction-inv-concat - ( right-unit) - ( coherence-lifting-square l x ∙ inv right-unit))) - ( α)) ∙ - ( ( assoc (coherence-lifting-square l x) (inv right-unit) (α)) ∙ - ( ( left-whisker-identification - ( coherence-lifting-square l x) - ( ( left-whisker-identification - ( inv right-unit) - ( right-unit-law-assoc - ( H x) - ( ap g (is-extension-lifting-square l x)))) ∙ - ( ( is-retraction-inv-concat - ( right-unit) - ( left-whisker-identification (H x) (inv right-unit))) ∙ - ( inv - ( is-section-inv-concat' α - ( left-whisker-identification (H x) (inv right-unit))))))) ∙ - ( ( inv - ( assoc - ( coherence-lifting-square l x) - ( left-whisker-identification (H x) (inv right-unit) ∙ inv α) - ( α))) ∙ - ( ap - ( λ r → - ( ( coherence-lifting-square l x) ∙ - ( left-whisker-identification (H x) r ∙ inv α)) ∙ - ( α)) - ( compute-refl-right-map-coherence-triangle-identifications - ( g) - ( is-extension-lifting-square l x))))))) - where - α = assoc (H x) (ap g (is-extension-lifting-square l x)) refl - β = right-whisker-identification (coherence-lifting-square l x) refl - - htpy-eq-lifting-square : - (l l' : lifting-square h f g i H) → l = l' → htpy-lifting-square l l' - htpy-eq-lifting-square l .l refl = refl-htpy-lifting-square l -``` - -It remains to show that `coherence-htpy-lifting-square` indeed is a -characterization of identifications of lifting squares. - -### Diagonal maps give lifting squares - -The diagram - -```text - A B - | ^ | - f| j / |g - | / | - V / V - X Y -``` - -gives rise to a lifting square - -```text - j ∘ f - A ------> B - | ^ | - f| j / |g - | / | - V / V - X ------> Y - g ∘ j -``` - -```agda -module _ - {l1 l2 l3 l4 : Level} {A : UU l1} {B : UU l2} {X : UU l3} {Y : UU l4} - (f : A → X) (g : B → Y) - where - - is-lifting-square-diagonal : - (j : X → B) → is-lifting-square (j ∘ f) f g (g ∘ j) refl-htpy j - pr1 (is-lifting-square-diagonal j) = refl-htpy - pr1 (pr2 (is-lifting-square-diagonal j)) = refl-htpy - pr2 (pr2 (is-lifting-square-diagonal j)) = refl-htpy -``` - -### The lifting square associated to a fibered map - -```agda -module _ - {l1 l2 l3 l4 : Level} {A : UU l1} {B : UU l2} {X : UU l3} {Y : UU l4} - (f : A → B) (g : X → Y) - where - - lifting-square-fibered-map : - (h : fibered-map f g) → UU (l1 ⊔ l2 ⊔ l3 ⊔ l4) - lifting-square-fibered-map h = - lifting-square - ( map-total-fibered-map f g h) - ( f) - ( g) - ( map-base-fibered-map f g h) - ( is-map-over-map-total-fibered-map f g h) -``` +-- refl-htpy-lifting-square : +-- (l : lifting-square h f g i H) → htpy-lifting-square l l +-- pr1 (refl-htpy-lifting-square l) = refl-htpy +-- pr1 (pr2 (refl-htpy-lifting-square l)) = inv-htpy-right-unit-htpy +-- pr1 (pr2 (pr2 (refl-htpy-lifting-square l))) = inv-htpy-right-unit-htpy +-- pr2 (pr2 (pr2 (refl-htpy-lifting-square l))) x = +-- ( inv (assoc (inv right-unit) (β) (α))) ∙ +-- ( ( right-whisker-identification +-- ( ( left-whisker-identification +-- ( inv right-unit) +-- ( ( right-transpose-eq-concat _ _ _ +-- ( inv +-- ( compute-refl-right-whisker-identification +-- ( coherence-lifting-square l x)))) ∙ +-- ( assoc +-- ( right-unit) +-- ( coherence-lifting-square l x) +-- ( inv right-unit)))) ∙ +-- ( is-retraction-inv-concat +-- ( right-unit) +-- ( coherence-lifting-square l x ∙ inv right-unit))) +-- ( α)) ∙ +-- ( ( assoc (coherence-lifting-square l x) (inv right-unit) (α)) ∙ +-- ( ( left-whisker-identification +-- ( coherence-lifting-square l x) +-- ( ( left-whisker-identification +-- ( inv right-unit) +-- ( right-unit-law-assoc +-- ( H x) +-- ( ap g (is-extension-lifting-square l x)))) ∙ +-- ( ( is-retraction-inv-concat +-- ( right-unit) +-- ( left-whisker-identification (H x) (inv right-unit))) ∙ +-- ( inv +-- ( is-section-inv-concat' α +-- ( left-whisker-identification (H x) (inv right-unit))))))) ∙ +-- ( ( inv +-- ( assoc +-- ( coherence-lifting-square l x) +-- ( left-whisker-identification (H x) (inv right-unit) ∙ inv α) +-- ( α))) ∙ +-- ( ap +-- ( λ r → +-- ( ( coherence-lifting-square l x) ∙ +-- ( left-whisker-identification (H x) r ∙ inv α)) ∙ +-- ( α)) +-- ( compute-refl-right-map-coherence-triangle-identifications +-- ( g) +-- ( is-extension-lifting-square l x))))))) +-- where +-- α = assoc (H x) (ap g (is-extension-lifting-square l x)) refl +-- β = right-whisker-identification (coherence-lifting-square l x) refl + +-- htpy-eq-lifting-square : +-- (l l' : lifting-square h f g i H) → l = l' → htpy-lifting-square l l' +-- htpy-eq-lifting-square l .l refl = refl-htpy-lifting-square l +-- ``` + +-- It remains to show that `coherence-htpy-lifting-square` indeed is a +-- characterization of identifications of lifting squares. + +-- ### Diagonal maps give lifting squares + +-- The diagram + +-- ```text +-- A B +-- | ^ | +-- f| j / |g +-- | / | +-- V / V +-- X Y +-- ``` + +-- gives rise to a lifting square + +-- ```text +-- j ∘ f +-- A ------> B +-- | ^ | +-- f| j / |g +-- | / | +-- V / V +-- X ------> Y +-- g ∘ j +-- ``` + +-- ```agda +-- module _ +-- {l1 l2 l3 l4 : Level} {A : UU l1} {B : UU l2} {X : UU l3} {Y : UU l4} +-- (f : A → X) (g : B → Y) +-- where + +-- is-lifting-square-diagonal : +-- (j : X → B) → is-lifting-square (j ∘ f) f g (g ∘ j) refl-htpy j +-- pr1 (is-lifting-square-diagonal j) = refl-htpy +-- pr1 (pr2 (is-lifting-square-diagonal j)) = refl-htpy +-- pr2 (pr2 (is-lifting-square-diagonal j)) = refl-htpy +-- ``` + +-- ### The lifting square associated to a fibered map + +-- ```agda +-- module _ +-- {l1 l2 l3 l4 : Level} {A : UU l1} {B : UU l2} {X : UU l3} {Y : UU l4} +-- (f : A → B) (g : X → Y) +-- where + +-- lifting-square-fibered-map : +-- (h : fibered-map f g) → UU (l1 ⊔ l2 ⊔ l3 ⊔ l4) +-- lifting-square-fibered-map h = +-- lifting-square +-- ( map-total-fibered-map f g h) +-- ( f) +-- ( g) +-- ( map-base-fibered-map f g h) +-- ( is-map-over-map-total-fibered-map f g h) +-- ``` From f779897d4ad59970d4e54a432819c9effd1dc9f2 Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Thu, 1 Feb 2024 20:32:47 +0100 Subject: [PATCH 082/150] general whiskering operations --- src/foundation/whiskering-operations.lagda.md | 110 ++++++++++++++++++ 1 file changed, 110 insertions(+) create mode 100644 src/foundation/whiskering-operations.lagda.md diff --git a/src/foundation/whiskering-operations.lagda.md b/src/foundation/whiskering-operations.lagda.md new file mode 100644 index 0000000000..2f5dd50700 --- /dev/null +++ b/src/foundation/whiskering-operations.lagda.md @@ -0,0 +1,110 @@ +# Whiskering operations + +```agda +module foundation.whiskering-operations where +``` + +
Imports + +```agda +open import foundation.universe-levels +``` + +
+ +## Idea + +Consider a type `A` with a [binary relation](foundation.binary-relations.md) `R : A → A → 𝒰`, which comes equipped with a multiplicative operation + +```text + μ : (x y z : A) → R x y → R y z → R x z. +``` + +Furthermore, assume that each `R x y` comes equipped with a further binary relation `E : R x y → R x y → 𝒰`. A {{#concept "left whiskering operation" Agda=whiskering}} on `E` with respect to `μ` is an operation + +```text + (f : R x y) {g h : R y z} → E g h → E (μ f g) (μ f h). +``` + +Similarly, a {{#concept "right whiskering operation" Agda=right-whiskering}} on `E` with respect to `μ` is an operation + +```text + {g h : R x y} → E g h → (f : R y z) → E (μ g f) (μ h f). +``` + +The general notion of whiskering is introduced in order to establish a clear naming scheme for all the variations of whiskering that exist in the `agda-unimath` library: + +1. In [whiskering identifications with respect to concatenation](foundation.whiskering-identifications-concatenation.md) we define a whiskering operation + + ```text + (p : x = y) {q r : y = z} → q = r → p ∙ q = p ∙ r + ``` + + with respect to concatenation of identifications. + +2. In [whiskering homotopies with respect to composition](foundation.whiskering-homotopies-composition.md) we define a whiskering operation + + ```text + (f : B → C) {g h : A → B} → g ~ h → f ∘ g ~ f ∘ h + ``` + + of homotopies with respect to composition of functions. + +3. In [whiskering homotopies with respect to concatenation](foundation.whiskering-homotopies-concatenation.md) we define a whiskering operation + + ```text + (H : f ~ g) {K L : g ~ h} → K ~ L → H ∙h K ~ H ∙h L + ``` + + of homotopies with respect to concatenation of homotopies. + +4. In [whsikering higher homotopies with respect to composition](foundation.whiskering-higher-homotopies-composition.md) we define a whiskering operation + + ```text + (f : B → C) {g h : A → B} {H K : g ~ h} → H ~ K → f ·l H ~ f ·l K + ``` + + of higher homotopies with respect to composition of functions. + +## Definitions + +### Left whiskering operations + +```agda +module _ + {l1 l2 l3 : Level} {A : UU l1} {R : A → A → UU l2} + + where + + left-whiskering-operation : + (μ : {x y z : A} → R x y → R y z → R x z) → + ({x y : A} → R x y → R x y → UU l3) → UU (l1 ⊔ l2 ⊔ l3) + left-whiskering-operation μ E = + {x y z : A} (f : R x y) {g h : R y z} → E g h → E (μ f g) (μ f h) + + left-whiskering-operation' : + (μ : {x y z : A} → R y z → R x y → R x z) → + ({x y : A} → R x y → R x y → UU l3) → UU (l1 ⊔ l2 ⊔ l3) + left-whiskering-operation' μ E = + {x y z : A} (f : R y z) {g h : R x y} → E g h → E (μ f g) (μ f h) +``` + +### Right whiskering operations + +```agda +module _ + {l1 l2 l3 : Level} {A : UU l1} {R : A → A → UU l2} + where + + right-whiskering-operation : + (μ : {x y z : A} → R x y → R y z → R x z) → + ({x y : A} → R x y → R x y → UU l3) → UU (l1 ⊔ l2 ⊔ l3) + right-whiskering-operation μ E = + {x y z : A} {f g : R x y} → E f g → (h : R y z) → E (μ f h) (μ g h) + + right-whiskering-operation' : + (μ : {x y z : A} → R y z → R x y → R x z) → + ({x y : A} → R x y → R x y → UU l3) → UU (l1 ⊔ l2 ⊔ l3) + right-whiskering-operation' μ E = + {x y z : A} {f g : R y z} → E f g → (h : R x y) → E (μ f h) (μ g h) +``` From e4481f7da8a842bdc172c0585c8fdc51859f0e7c Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Thu, 1 Feb 2024 20:54:10 +0100 Subject: [PATCH 083/150] new scheme --- .../sums-of-natural-numbers.lagda.md | 2 +- ...niversal-property-natural-numbers.lagda.md | 4 +- .../delooping-sign-homomorphism.lagda.md | 18 +-- ...ermutations-standard-finite-types.lagda.md | 2 +- ...nspositions-standard-finite-types.lagda.md | 2 +- src/foundation-core.lagda.md | 2 +- .../coherently-invertible-maps.lagda.md | 4 +- .../commuting-prisms-of-maps.lagda.md | 2 +- .../commuting-squares-of-maps.lagda.md | 2 +- .../commuting-triangles-of-maps.lagda.md | 2 +- src/foundation-core/equivalences.lagda.md | 4 +- .../function-extensionality.lagda.md | 2 +- src/foundation-core/homotopies.lagda.md | 4 +- src/foundation-core/identity-types.lagda.md | 6 +- src/foundation-core/pullbacks.lagda.md | 8 +- src/foundation-core/retractions.lagda.md | 2 +- src/foundation-core/sections.lagda.md | 2 +- ...hiskering-homotopies-composition.lagda.md} | 55 +++++---- src/foundation.lagda.md | 6 +- ...ion-on-equivalences-type-families.lagda.md | 4 +- src/foundation/axiom-of-choice.lagda.md | 2 +- .../coherently-invertible-maps.lagda.md | 10 +- .../commuting-cubes-of-maps.lagda.md | 32 ++--- .../commuting-prisms-of-maps.lagda.md | 4 +- .../commuting-squares-of-maps.lagda.md | 30 ++--- .../commuting-tetrahedra-of-maps.lagda.md | 2 +- ...commuting-triangles-of-homotopies.lagda.md | 6 +- ...ting-triangles-of-identifications.lagda.md | 22 ++-- src/foundation/composition-algebra.lagda.md | 18 +-- .../cones-over-cospan-diagrams.lagda.md | 2 +- ...-over-inverse-sequential-diagrams.lagda.md | 2 +- .../coproduct-decompositions.lagda.md | 4 +- src/foundation/coslice.lagda.md | 2 +- .../descent-coproduct-types.lagda.md | 6 +- src/foundation/equivalences.lagda.md | 10 +- .../exponents-set-quotients.lagda.md | 2 +- src/foundation/fibered-maps.lagda.md | 2 +- .../function-extensionality.lagda.md | 2 +- ...oriality-dependent-function-types.lagda.md | 2 +- .../functoriality-fibers-of-maps.lagda.md | 2 +- ...oriality-propositional-truncation.lagda.md | 2 +- .../functoriality-set-truncation.lagda.md | 2 +- .../functoriality-truncation.lagda.md | 2 +- src/foundation/homotopies.lagda.md | 16 +-- src/foundation/invertible-maps.lagda.md | 2 +- src/foundation/involutions.lagda.md | 2 +- .../iterating-automorphisms.lagda.md | 2 +- src/foundation/monomorphisms.lagda.md | 2 +- src/foundation/morphisms-arrows.lagda.md | 34 +++--- ...hisms-inverse-sequential-diagrams.lagda.md | 2 +- ...morphisms-spans-families-of-types.lagda.md | 2 +- src/foundation/path-algebra.lagda.md | 38 +++--- src/foundation/pi-decompositions.lagda.md | 2 +- .../postcomposition-functions.lagda.md | 6 +- .../precomposition-functions.lagda.md | 2 +- .../precomposition-type-families.lagda.md | 2 +- src/foundation/pullbacks.lagda.md | 20 ++-- src/foundation/retractions.lagda.md | 2 +- src/foundation/retracts-of-maps.lagda.md | 4 +- src/foundation/retracts-of-types.lagda.md | 2 +- src/foundation/sections.lagda.md | 2 +- src/foundation/set-quotients.lagda.md | 2 +- src/foundation/slice.lagda.md | 2 +- ...port-along-higher-identifications.lagda.md | 48 ++++---- src/foundation/truncations.lagda.md | 2 +- src/foundation/uniqueness-image.lagda.md | 2 +- .../uniqueness-set-quotients.lagda.md | 2 +- .../unital-binary-operations.lagda.md | 6 +- .../universal-property-image.lagda.md | 2 +- .../universal-property-set-quotients.lagda.md | 2 +- src/foundation/unordered-pairs.lagda.md | 2 +- src/foundation/unordered-tuples.lagda.md | 2 +- ...ng-higher-homotopies-composition.lagda.md} | 14 +-- ...hiskering-homotopies-composition.lagda.md} | 20 ++-- ...ng-identifications-concatenation.lagda.md} | 110 +++++++++--------- src/foundation/whiskering-operations.lagda.md | 87 ++++++++++---- .../abelianization-groups.lagda.md | 2 +- .../functoriality-vectors.lagda.md | 2 +- src/linear-algebra/vectors.lagda.md | 4 +- ...ersal-property-lists-wild-monoids.lagda.md | 8 +- .../extensions-of-maps.lagda.md | 2 +- ...ation-operations-function-classes.lagda.md | 2 +- ...izations-of-maps-function-classes.lagda.md | 2 +- ...s-of-maps-global-function-classes.lagda.md | 2 +- .../factorizations-of-maps.lagda.md | 2 +- .../functoriality-higher-modalities.lagda.md | 6 +- .../lifting-squares.lagda.md | 27 ++--- .../lifts-of-maps.lagda.md | 2 +- .../orthogonal-factorization-systems.lagda.md | 2 +- .../orthogonal-maps.lagda.md | 2 +- ...sition-lifts-families-of-elements.lagda.md | 10 +- .../pullback-hom.lagda.md | 2 +- src/ring-theory/sums-semirings.lagda.md | 2 +- .../morphisms-h-spaces.lagda.md | 16 +-- ...types-equipped-with-endomorphisms.lagda.md | 2 +- .../pointed-equivalences.lagda.md | 12 +- .../pointed-homotopies.lagda.md | 10 +- .../26-descent.lagda.md | 2 +- .../26-id-pushout.lagda.md | 2 +- src/synthetic-homotopy-theory/circle.lagda.md | 30 ++--- ...cocones-under-sequential-diagrams.lagda.md | 2 +- .../cocones-under-spans.lagda.md | 2 +- .../coforks.lagda.md | 2 +- .../dependent-coforks.lagda.md | 6 +- ...endent-pullback-property-pushouts.lagda.md | 2 +- .../descent-circle-function-types.lagda.md | 2 +- .../double-loop-spaces.lagda.md | 14 +-- .../eckmann-hilton-argument.lagda.md | 55 +++++---- ...functoriality-sequential-colimits.lagda.md | 4 +- .../joins-of-types.lagda.md | 2 +- .../morphisms-sequential-diagrams.lagda.md | 2 +- .../powers-of-loops.lagda.md | 12 +- .../smash-products-of-pointed-types.lagda.md | 16 +-- .../suspension-structures.lagda.md | 18 +-- .../suspensions-of-types.lagda.md | 2 +- .../universal-property-pushouts.lagda.md | 2 +- .../universal-property-suspensions.lagda.md | 2 +- ...-algebras-polynomial-endofunctors.lagda.md | 2 +- ...oalgebras-polynomial-endofunctors.lagda.md | 2 +- ...morphisms-enriched-directed-trees.lagda.md | 2 +- src/trees/polynomial-endofunctors.lagda.md | 2 +- src/trees/w-types.lagda.md | 2 +- .../dependent-type-theories.lagda.md | 44 +++---- .../pi-finite-types.lagda.md | 2 +- .../pigeonhole-principle.lagda.md | 2 +- tables/identity-types.md | 2 +- 126 files changed, 578 insertions(+), 526 deletions(-) rename src/foundation-core/{whiskering-homotopies.lagda.md => whiskering-homotopies-composition.lagda.md} (81%) rename src/foundation/{whiskering-higher-homotopies.lagda.md => whiskering-higher-homotopies-composition.lagda.md} (81%) rename src/foundation/{whiskering-homotopies.lagda.md => whiskering-homotopies-composition.lagda.md} (95%) rename src/foundation/{whiskering-identifications.lagda.md => whiskering-identifications-concatenation.lagda.md} (61%) diff --git a/src/elementary-number-theory/sums-of-natural-numbers.lagda.md b/src/elementary-number-theory/sums-of-natural-numbers.lagda.md index 5527762dea..494f4bbae3 100644 --- a/src/elementary-number-theory/sums-of-natural-numbers.lagda.md +++ b/src/elementary-number-theory/sums-of-natural-numbers.lagda.md @@ -22,7 +22,7 @@ open import foundation.homotopies open import foundation.identity-types open import foundation.unit-type open import foundation.universe-levels -open import foundation.whiskering-homotopies +open import foundation.whiskering-homotopies-composition open import lists.lists diff --git a/src/elementary-number-theory/universal-property-natural-numbers.lagda.md b/src/elementary-number-theory/universal-property-natural-numbers.lagda.md index 45edc283b5..69460d3015 100644 --- a/src/elementary-number-theory/universal-property-natural-numbers.lagda.md +++ b/src/elementary-number-theory/universal-property-natural-numbers.lagda.md @@ -22,7 +22,7 @@ open import foundation.identity-types open import foundation.structure-identity-principle open import foundation.torsorial-type-families open import foundation.universe-levels -open import foundation.whiskering-identifications +open import foundation.whiskering-identifications-concatenation ```
@@ -113,7 +113,7 @@ module _ ( pr2 (pr2 center-structure-preserving-map-ℕ) n ∙ ap f (α n)) = ( α (succ-ℕ n) ∙ pr2 (pr2 h) n) γ n = ( ( inv right-unit) ∙ - ( left-whisker-identification + ( left-whisker-concat ( ap f (α n)) ( inv (left-inv (pr2 (pr2 h) n))))) ∙ ( inv diff --git a/src/finite-group-theory/delooping-sign-homomorphism.lagda.md b/src/finite-group-theory/delooping-sign-homomorphism.lagda.md index de852ee6e7..a6c658baf2 100644 --- a/src/finite-group-theory/delooping-sign-homomorphism.lagda.md +++ b/src/finite-group-theory/delooping-sign-homomorphism.lagda.md @@ -58,7 +58,7 @@ open import foundation.unit-type open import foundation.univalence open import foundation.universal-property-set-quotients open import foundation.universe-levels -open import foundation.whiskering-identifications +open import foundation.whiskering-identifications-concatenation open import group-theory.concrete-groups open import group-theory.generating-sets-groups @@ -1113,7 +1113,7 @@ module _ ( inv-equiv ( compute-raise-Fin l4 2 ∘e inv-equiv (that-thing n)))) ( compute-raise-Fin l4 2 ∘e inv-equiv (that-thing n))) ∙ - ( right-whisker-identification + ( right-whisker-concat ( inv ( compute-eq-equiv-comp-equiv ( inv-equiv @@ -1124,7 +1124,7 @@ module _ ( equivalence-class ∘ R (n +ℕ 2)) ( eq-pair-Σ p ( eq-is-prop is-prop-type-trunc-Prop)))))) ∙ - ( right-whisker-identification + ( right-whisker-concat ( inv ( commutativity-inv-eq-equiv ( compute-raise-Fin l4 2 ∘e @@ -1154,7 +1154,7 @@ module _ ( equivalence-class ∘ R (n +ℕ 2)) ( eq-pair-Σ p (eq-is-prop is-prop-type-trunc-Prop))))) ( eq-counting-equivalence-class-R n) ∙ - ( left-whisker-identification + ( left-whisker-concat ( inv (eq-counting-equivalence-class-R n)) ( distributive-inv-concat ( inv (eq-counting-equivalence-class-R n)) @@ -1162,14 +1162,14 @@ module _ ( ap ( equivalence-class ∘ R (n +ℕ 2)) ( eq-pair-Σ p (eq-is-prop is-prop-type-trunc-Prop)))) ∙ - ( right-whisker-identification + ( right-whisker-concat ( inv-inv ( ap ( equivalence-class ∘ R (n +ℕ 2)) ( eq-pair-Σ p ( eq-is-prop is-prop-type-trunc-Prop)))) ( inv (inv (eq-counting-equivalence-class-R n))) ∙ - ( left-whisker-identification + ( left-whisker-concat ( ap ( equivalence-class ∘ R (n +ℕ 2)) ( eq-pair-Σ p @@ -1191,7 +1191,7 @@ module _ ( eq-counting-equivalence-class-R n)) ( eq-is-prop is-prop-type-trunc-Prop) ( _) ∙ - ( left-whisker-identification + ( left-whisker-concat ( eq-pair-Σ ( inv (eq-counting-equivalence-class-R n)) ( eq-is-prop is-prop-type-trunc-Prop)) @@ -1202,7 +1202,7 @@ module _ ( eq-counting-equivalence-class-R n) ( eq-is-prop is-prop-type-trunc-Prop) ( eq-is-prop is-prop-type-trunc-Prop) ∙ - ( right-whisker-identification + ( right-whisker-concat ( ap ( λ w → eq-pair-Σ (pr1 w) (pr2 w)) { y = @@ -1234,7 +1234,7 @@ module _ ( compute-raise-Fin l4 2 ∘e inv-equiv (that-thing n))) ( eq-is-prop is-prop-type-trunc-Prop))))))) ∙ - ( right-whisker-identification + ( right-whisker-concat ( ap ( eq-pair-Σ (inv (eq-counting-equivalence-class-R n))) ( eq-is-prop (is-trunc-Id (is-prop-type-trunc-Prop _ _))) ∙ diff --git a/src/finite-group-theory/permutations-standard-finite-types.lagda.md b/src/finite-group-theory/permutations-standard-finite-types.lagda.md index fe19ae1757..38918a9857 100644 --- a/src/finite-group-theory/permutations-standard-finite-types.lagda.md +++ b/src/finite-group-theory/permutations-standard-finite-types.lagda.md @@ -33,7 +33,7 @@ open import foundation.propositions open import foundation.sets open import foundation.unit-type open import foundation.universe-levels -open import foundation.whiskering-homotopies +open import foundation.whiskering-homotopies-composition open import lists.functoriality-lists open import lists.lists diff --git a/src/finite-group-theory/transpositions-standard-finite-types.lagda.md b/src/finite-group-theory/transpositions-standard-finite-types.lagda.md index 725921e7d7..4631a7953e 100644 --- a/src/finite-group-theory/transpositions-standard-finite-types.lagda.md +++ b/src/finite-group-theory/transpositions-standard-finite-types.lagda.md @@ -29,7 +29,7 @@ open import foundation.negation open import foundation.propositions open import foundation.unit-type open import foundation.universe-levels -open import foundation.whiskering-homotopies +open import foundation.whiskering-homotopies-composition open import lists.functoriality-lists open import lists.lists diff --git a/src/foundation-core.lagda.md b/src/foundation-core.lagda.md index 803e7912e1..3d0ba2929a 100644 --- a/src/foundation-core.lagda.md +++ b/src/foundation-core.lagda.md @@ -59,5 +59,5 @@ open import foundation-core.type-theoretic-principle-of-choice public open import foundation-core.univalence public open import foundation-core.universal-property-pullbacks public open import foundation-core.universal-property-truncation public -open import foundation-core.whiskering-homotopies public +open import foundation-core.whiskering-homotopies-composition public ``` diff --git a/src/foundation-core/coherently-invertible-maps.lagda.md b/src/foundation-core/coherently-invertible-maps.lagda.md index 59953c63c3..6ea12a61d4 100644 --- a/src/foundation-core/coherently-invertible-maps.lagda.md +++ b/src/foundation-core/coherently-invertible-maps.lagda.md @@ -17,7 +17,7 @@ open import foundation-core.identity-types open import foundation-core.invertible-maps open import foundation-core.retractions open import foundation-core.sections -open import foundation-core.whiskering-homotopies +open import foundation-core.whiskering-homotopies-composition ```
@@ -139,7 +139,7 @@ module _ ( is-section-is-invertible H (map-inv-is-invertible H (f x)))) ∙ ( is-retraction-is-invertible H (f x))) ( ( nat-htpy - ( right-whisker-htpy (is-retraction-is-invertible H) f) + ( right-whisker-comp (is-retraction-is-invertible H) f) ( is-section-is-invertible H x)) ∙ ( ap ( concat' _ (is-retraction-is-invertible H (f x))) diff --git a/src/foundation-core/commuting-prisms-of-maps.lagda.md b/src/foundation-core/commuting-prisms-of-maps.lagda.md index cba5ea41e9..3fe87c81e9 100644 --- a/src/foundation-core/commuting-prisms-of-maps.lagda.md +++ b/src/foundation-core/commuting-prisms-of-maps.lagda.md @@ -12,7 +12,7 @@ open import foundation.universe-levels open import foundation-core.commuting-squares-of-maps open import foundation-core.commuting-triangles-of-maps open import foundation-core.homotopies -open import foundation-core.whiskering-homotopies +open import foundation-core.whiskering-homotopies-composition ```
diff --git a/src/foundation-core/commuting-squares-of-maps.lagda.md b/src/foundation-core/commuting-squares-of-maps.lagda.md index 89da2ea598..32979d4ffc 100644 --- a/src/foundation-core/commuting-squares-of-maps.lagda.md +++ b/src/foundation-core/commuting-squares-of-maps.lagda.md @@ -14,7 +14,7 @@ open import foundation-core.commuting-triangles-of-maps open import foundation-core.function-types open import foundation-core.homotopies open import foundation-core.identity-types -open import foundation-core.whiskering-homotopies +open import foundation-core.whiskering-homotopies-composition ```
diff --git a/src/foundation-core/commuting-triangles-of-maps.lagda.md b/src/foundation-core/commuting-triangles-of-maps.lagda.md index a383ed939c..dbb5496971 100644 --- a/src/foundation-core/commuting-triangles-of-maps.lagda.md +++ b/src/foundation-core/commuting-triangles-of-maps.lagda.md @@ -13,7 +13,7 @@ open import foundation-core.function-types open import foundation-core.homotopies open import foundation-core.retractions open import foundation-core.sections -open import foundation-core.whiskering-homotopies +open import foundation-core.whiskering-homotopies-composition ```
diff --git a/src/foundation-core/equivalences.lagda.md b/src/foundation-core/equivalences.lagda.md index a3358a0d4b..c731530fc7 100644 --- a/src/foundation-core/equivalences.lagda.md +++ b/src/foundation-core/equivalences.lagda.md @@ -21,7 +21,7 @@ open import foundation-core.identity-types open import foundation-core.invertible-maps open import foundation-core.retractions open import foundation-core.sections -open import foundation-core.whiskering-homotopies +open import foundation-core.whiskering-homotopies-composition ```
@@ -523,7 +523,7 @@ module _ is-equiv-section-is-equiv (g , is-section-g) is-equiv-section-f = is-equiv-htpy h ( ( f ·l (inv-htpy (is-section-map-inv-is-equiv is-equiv-section-f))) ∙h - ( right-whisker-htpy is-section-g h)) + ( right-whisker-comp is-section-g h)) ( is-equiv-map-inv-is-equiv is-equiv-section-f) where h : A → B diff --git a/src/foundation-core/function-extensionality.lagda.md b/src/foundation-core/function-extensionality.lagda.md index b22870c63f..bef193187e 100644 --- a/src/foundation-core/function-extensionality.lagda.md +++ b/src/foundation-core/function-extensionality.lagda.md @@ -22,7 +22,7 @@ open import foundation-core.identity-types open import foundation-core.postcomposition-functions open import foundation-core.precomposition-dependent-functions open import foundation-core.precomposition-functions -open import foundation-core.whiskering-homotopies +open import foundation-core.whiskering-homotopies-composition ```
diff --git a/src/foundation-core/homotopies.lagda.md b/src/foundation-core/homotopies.lagda.md index c01b1724a3..fc6b8eb7de 100644 --- a/src/foundation-core/homotopies.lagda.md +++ b/src/foundation-core/homotopies.lagda.md @@ -340,5 +340,5 @@ syntax step-homotopy-reasoning p h q = p ~ h by q functions in the file [`foundation.function-extensionality`](foundation.function-extensionality.md). - [Multivariable homotopies](foundation.multivariable-homotopies.md). -- The [whiskering operations](foundation.whiskering-homotopies.md) on - homotopies. +- The [whiskering operations](foundation.whiskering-homotopies-composition.md) + on homotopies. diff --git a/src/foundation-core/identity-types.lagda.md b/src/foundation-core/identity-types.lagda.md index fc62a66bf8..8faea91eb2 100644 --- a/src/foundation-core/identity-types.lagda.md +++ b/src/foundation-core/identity-types.lagda.md @@ -129,9 +129,9 @@ equipped with **concatenation** `(x = y) → (y = z) → (x = z)` and an There are many more operations on identity types. Some of them are defined in [path algebra](foundation.path-algebra.md) and -[whiskering of identifications](foundation.whiskering-identifications.md). For a -complete reference to all the files about general identity types, see the table -given above. +[whiskering of identifications](foundation.whiskering-identifications-concatenation.md). +For a complete reference to all the files about general identity types, see the +table given above. ### Concatenation of identifications diff --git a/src/foundation-core/pullbacks.lagda.md b/src/foundation-core/pullbacks.lagda.md index 25e303171a..5fecb0248b 100644 --- a/src/foundation-core/pullbacks.lagda.md +++ b/src/foundation-core/pullbacks.lagda.md @@ -17,7 +17,7 @@ open import foundation.identity-types open import foundation.structure-identity-principle open import foundation.type-arithmetic-dependent-pair-types open import foundation.universe-levels -open import foundation.whiskering-identifications +open import foundation.whiskering-identifications-concatenation open import foundation-core.cartesian-product-types open import foundation-core.commuting-squares-of-maps @@ -490,7 +490,7 @@ module _ ( λ t → eq-pair t (ap pr2 α)) ( ( inv right-unit) ∙ ( inv - ( left-whisker-identification + ( left-whisker-concat ( ap pr1 α) ( left-inv (ap pr2 α)))) ∙ ( inv (assoc (ap pr1 α) (inv (ap pr2 α)) (ap pr2 α))))) ∙ @@ -511,8 +511,8 @@ module _ ( refl) ( refl) ( inv - ( ( right-whisker-identification - ( ( right-whisker-identification + ( ( right-whisker-concat + ( ( right-whisker-concat ( ap-pr1-eq-pair p refl) ( inv (ap pr2 (eq-pair p refl)))) ∙ ( ap (λ t → p ∙ inv t) (ap-pr2-eq-pair p refl)) ∙ diff --git a/src/foundation-core/retractions.lagda.md b/src/foundation-core/retractions.lagda.md index f7a0e78d67..e301073afb 100644 --- a/src/foundation-core/retractions.lagda.md +++ b/src/foundation-core/retractions.lagda.md @@ -14,7 +14,7 @@ open import foundation.universe-levels open import foundation-core.function-types open import foundation-core.homotopies open import foundation-core.identity-types -open import foundation-core.whiskering-homotopies +open import foundation-core.whiskering-homotopies-composition ```
diff --git a/src/foundation-core/sections.lagda.md b/src/foundation-core/sections.lagda.md index 61cb11dcd9..532f03418c 100644 --- a/src/foundation-core/sections.lagda.md +++ b/src/foundation-core/sections.lagda.md @@ -12,7 +12,7 @@ open import foundation.universe-levels open import foundation-core.function-types open import foundation-core.homotopies -open import foundation-core.whiskering-homotopies +open import foundation-core.whiskering-homotopies-composition ```
diff --git a/src/foundation-core/whiskering-homotopies.lagda.md b/src/foundation-core/whiskering-homotopies-composition.lagda.md similarity index 81% rename from src/foundation-core/whiskering-homotopies.lagda.md rename to src/foundation-core/whiskering-homotopies-composition.lagda.md index 4e1cd9dd45..2600486b1d 100644 --- a/src/foundation-core/whiskering-homotopies.lagda.md +++ b/src/foundation-core/whiskering-homotopies-composition.lagda.md @@ -1,7 +1,7 @@ -# Whiskering homotopies +# Whiskering homotopies with respect to composition ```agda -module foundation-core.whiskering-homotopies where +module foundation-core.whiskering-homotopies-composition where ```
Imports @@ -30,8 +30,8 @@ assumes a diagram of the form g ``` -and is defined to be a function `H ↦ h ·l H : (f ~ g) → (h ∘ f ~ h ∘ g)`. The **right -whiskering** operation assumes a diagram of the form +and is defined to be a function `H ↦ h ·l H : (f ~ g) → (h ∘ f ~ h ∘ g)`. The +**right whiskering** operation assumes a diagram of the form ```text g @@ -42,13 +42,18 @@ whiskering** operation assumes a diagram of the form and is defined to be a function `H ↦ H ·r f : (g ~ h) → (g ∘ f ~ h ∘ f)`. -**Note**: The infix whiskering operators `_·l_` and `_·r_` use the +**Note.** The infix whiskering operators `_·l_` and `_·r_` use the [middle dot](https://codepoints.net/U+00B7) `·` (agda-input: `\cdot` `\centerdot`), as opposed to the infix homotopy concatenation operator `_∙h_` which uses the [bullet operator](https://codepoints.net/U+2219) `∙` (agda-input: `\.`). If these look the same in your editor, we suggest that you change your font. For more details, see [How to install](HOWTO-INSTALL.md). +**Note.** We will define the whiskering operations with respect to function +composition for dependent functions. The definition of `whiskering-operations` +in [whiskering operations](foundation.whiskering-operations.md) does not support +this level of generality, so we will not be able to use it here. + ## Definitions ### Left whiskering of homotopies @@ -58,13 +63,13 @@ module _ {l1 l2 l3 : Level} {A : UU l1} {B : A → UU l2} {C : A → UU l3} where - left-whisker-htpy : + left-whisker-comp : (h : {x : A} → B x → C x) {f g : (x : A) → B x} → f ~ g → h ∘ f ~ h ∘ g - left-whisker-htpy h H x = ap h (H x) + left-whisker-comp h H x = ap h (H x) infixr 17 _·l_ - _·l_ = left-whisker-htpy + _·l_ = left-whisker-comp ``` ### Right whiskering of homotopies @@ -74,14 +79,14 @@ module _ {l1 l2 l3 : Level} {A : UU l1} {B : A → UU l2} {C : (x : A) → B x → UU l3} where - right-whisker-htpy : + right-whisker-comp : {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 - right-whisker-htpy H f x = H (f x) + right-whisker-comp H f x = H (f x) infixl 16 _·r_ - _·r_ = right-whisker-htpy + _·r_ = right-whisker-comp ``` ### Horizontal concatenation of homotopies @@ -113,35 +118,35 @@ module _ {l1 l2 : Level} {A : UU l1} {B : A → UU l2} where - left-unit-law-left-whisker-htpy : + left-unit-law-left-whisker-comp : {f f' : (x : A) → B x} → (H : f ~ f') → id ·l H ~ H - left-unit-law-left-whisker-htpy H x = ap-id (H x) + left-unit-law-left-whisker-comp H x = ap-id (H x) module _ {l1 l2 l3 : Level} {A : UU l1} {B : A → UU l2} {C : A → UU l3} where - right-absorption-law-left-whisker-htpy : + right-absorption-law-left-whisker-comp : {f : (x : A) → B x} (g : {x : A} → B x → C x) → g ·l refl-htpy {f = f} ~ refl-htpy - right-absorption-law-left-whisker-htpy g = refl-htpy + right-absorption-law-left-whisker-comp g = refl-htpy module _ {l1 l2 l3 : Level} {A : UU l1} {B : A → UU l2} {C : (x : A) → B x → UU l3} where - left-absorption-law-right-whisker-htpy : + left-absorption-law-right-whisker-comp : {g : {x : A} (y : B x) → C x y} (f : (x : A) → B x) → refl-htpy {f = g} ·r f ~ refl-htpy - left-absorption-law-right-whisker-htpy f = refl-htpy + left-absorption-law-right-whisker-comp f = refl-htpy module _ {l1 l2 : Level} {A : UU l1} {B : A → UU l2} where - right-unit-law-right-whisker-htpy : + right-unit-law-right-whisker-comp : {f f' : (x : A) → B x} → (H : f ~ f') → H ·r id ~ H - right-unit-law-right-whisker-htpy H = refl-htpy + right-unit-law-right-whisker-comp H = refl-htpy ``` ### Laws for whiskering an inverted homotopy @@ -200,11 +205,11 @@ module _ {A : UU l1} {B : A → UU l2} {C : A → UU l3} {D : A → UU l4} where - preserves-comp-left-whisker-htpy : + preserves-comp-left-whisker-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 - preserves-comp-left-whisker-htpy k h H x = inv (ap-comp k h (H x)) + preserves-comp-left-whisker-comp k h H x = inv (ap-comp k h (H x)) module _ { l1 l2 l3 l4 : Level} @@ -215,8 +220,8 @@ module _ ( H : {x : A} {y : B x} → f {x} {y} ~ g {x} {y}) where - preserves-comp-right-whisker-htpy : (H ·r h) ·r k ~ H ·r (h ∘ k) - preserves-comp-right-whisker-htpy = refl-htpy + preserves-comp-right-whisker-comp : (H ·r h) ·r k ~ H ·r (h ∘ k) + preserves-comp-right-whisker-comp = refl-htpy ``` ### A coherence for homotopies to the identity function @@ -257,12 +262,12 @@ module _ {f g : {x : A} (y : B x) → C y} where - coherence-double-whisker-htpy : + coherence-double-whisker-comp : (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-double-whisker-htpy h H h' = refl-htpy + coherence-double-whisker-comp h H h' = refl-htpy ``` ## See also diff --git a/src/foundation.lagda.md b/src/foundation.lagda.md index 9bf70b96da..6460e116f8 100644 --- a/src/foundation.lagda.md +++ b/src/foundation.lagda.md @@ -418,7 +418,7 @@ open import foundation.vectors-set-quotients public open import foundation.weak-function-extensionality public open import foundation.weak-limited-principle-of-omniscience public open import foundation.weakly-constant-maps public -open import foundation.whiskering-higher-homotopies public -open import foundation.whiskering-homotopies public -open import foundation.whiskering-identifications public +open import foundation.whiskering-higher-homotopies-composition public +open import foundation.whiskering-homotopies-composition public +open import foundation.whiskering-identifications-concatenation public ``` diff --git a/src/foundation/action-on-equivalences-type-families.lagda.md b/src/foundation/action-on-equivalences-type-families.lagda.md index 490f1208af..30f598d5fb 100644 --- a/src/foundation/action-on-equivalences-type-families.lagda.md +++ b/src/foundation/action-on-equivalences-type-families.lagda.md @@ -12,7 +12,7 @@ open import foundation.action-on-identifications-functions open import foundation.equivalence-induction open import foundation.univalence open import foundation.universe-levels -open import foundation.whiskering-higher-homotopies +open import foundation.whiskering-higher-homotopies-composition open import foundation-core.commuting-squares-of-maps open import foundation-core.constant-maps @@ -146,7 +146,7 @@ distributive-action-equiv-function-comp : action-equiv-function g ∘ action-equiv-family f distributive-action-equiv-function-comp g f e = ( ap-comp g f (eq-equiv e)) ∙ - ( left-whisker-htpy² g + ( left-whisker-comp² g ( inv-htpy is-retraction-eq-equiv) ( action-equiv-function f e)) diff --git a/src/foundation/axiom-of-choice.lagda.md b/src/foundation/axiom-of-choice.lagda.md index 5c7ddfae1a..fe517ce355 100644 --- a/src/foundation/axiom-of-choice.lagda.md +++ b/src/foundation/axiom-of-choice.lagda.md @@ -25,7 +25,7 @@ open import foundation-core.functoriality-dependent-pair-types open import foundation-core.identity-types open import foundation-core.precomposition-functions open import foundation-core.sets -open import foundation-core.whiskering-homotopies +open import foundation-core.whiskering-homotopies-composition ```
diff --git a/src/foundation/coherently-invertible-maps.lagda.md b/src/foundation/coherently-invertible-maps.lagda.md index f0c684e6da..b36c0eb72c 100644 --- a/src/foundation/coherently-invertible-maps.lagda.md +++ b/src/foundation/coherently-invertible-maps.lagda.md @@ -25,7 +25,7 @@ open import foundation-core.homotopies open import foundation-core.propositions open import foundation-core.sections open import foundation-core.type-theoretic-principle-of-choice -open import foundation-core.whiskering-homotopies +open import foundation-core.whiskering-homotopies-composition ``` @@ -47,16 +47,16 @@ abstract ( λ s → Σ ( ( map-section f s ∘ f) ~ id) ( λ H → - ( right-whisker-htpy (is-section-map-section f s) f) ~ - ( left-whisker-htpy f H)))) + ( right-whisker-comp (is-section-map-section f s) f) ~ + ( left-whisker-comp f H)))) ( associative-Σ ( B → A) ( λ g → (f ∘ g) ~ id) ( λ s → Σ ( ( map-section f s ∘ f) ~ id) ( λ H → - ( right-whisker-htpy (is-section-map-section f s) f) ~ - ( left-whisker-htpy f H)))) + ( right-whisker-comp (is-section-map-section f s) f) ~ + ( left-whisker-comp f H)))) ( is-contr-Σ ( is-contr-section-is-equiv (is-equiv-is-coherently-invertible H)) ( section-is-coherently-invertible H) diff --git a/src/foundation/commuting-cubes-of-maps.lagda.md b/src/foundation/commuting-cubes-of-maps.lagda.md index 26429c9402..a89f76cec7 100644 --- a/src/foundation/commuting-cubes-of-maps.lagda.md +++ b/src/foundation/commuting-cubes-of-maps.lagda.md @@ -14,13 +14,13 @@ open import foundation.cones-over-cospan-diagrams open import foundation.dependent-pair-types open import foundation.homotopies open import foundation.universe-levels -open import foundation.whiskering-identifications +open import foundation.whiskering-identifications-concatenation open import foundation-core.function-extensionality open import foundation-core.function-types open import foundation-core.identity-types open import foundation-core.precomposition-functions -open import foundation-core.whiskering-homotopies +open import foundation-core.whiskering-homotopies-composition ``` @@ -125,8 +125,8 @@ module _ ( inv-htpy front-left) ( front-right) coherence-cube-maps-rotate-120 a' = - ( right-whisker-identification - ( right-whisker-identification + ( right-whisker-concat + ( right-whisker-concat ( ap-inv k (back-right a')) ( inv (bottom (hA a')))) ( ap h (back-left a'))) ∙ @@ -139,9 +139,9 @@ module _ ( front-right (g' a')) ( c a')) ∙ ( inv - ( left-whisker-identification + ( left-whisker-concat ( front-right (g' a')) - ( right-whisker-identification + ( right-whisker-concat ( ap-inv hD (top a')) ( inv (front-left (f' a'))))))) @@ -154,7 +154,7 @@ module _ ( bottom) ( inv-htpy front-left) coherence-cube-maps-rotate-240 a' = - ( left-whisker-identification _ (ap-inv k (back-right a'))) ∙ + ( left-whisker-concat _ (ap-inv k (back-right a'))) ∙ ( ( hexagon-rotate-240 ( ap h (back-left a')) ( front-left (f' a')) @@ -164,9 +164,9 @@ module _ ( front-right (g' a')) ( c a')) ∙ ( inv - ( left-whisker-identification + ( left-whisker-concat ( inv (front-left (f' a'))) - ( right-whisker-identification (ap-inv h (back-left a')) _)))) + ( right-whisker-concat (ap-inv h (back-left a')) _)))) coherence-cube-maps-mirror-A : coherence-cube-maps g f k h g' f' k' h' hA hC hB hD @@ -177,7 +177,7 @@ module _ ( front-left) ( inv-htpy bottom) coherence-cube-maps-mirror-A a' = - ( left-whisker-identification _ (ap-inv hD (top a'))) ∙ + ( left-whisker-concat _ (ap-inv hD (top a'))) ∙ ( hexagon-mirror-A ( ap h (back-left a')) ( front-left (f' a')) @@ -196,8 +196,8 @@ module _ ( inv-htpy front-right) ( front-left) coherence-cube-maps-mirror-B a' = - ( right-whisker-identification - ( right-whisker-identification (ap-inv h (back-left a')) _) + ( right-whisker-concat + ( right-whisker-concat (ap-inv h (back-left a')) _) ( ap k (back-right a'))) ∙ ( hexagon-mirror-B ( ap h (back-left a')) @@ -220,7 +220,7 @@ module _ ( ap ( λ t → (t ∙ inv (front-left (f' a'))) ∙ (ap h (inv (back-left a')))) ( ap-inv hD (top a'))) ∙ - ( ( left-whisker-identification _ (ap-inv h (back-left a'))) ∙ + ( ( left-whisker-concat _ (ap-inv h (back-left a'))) ∙ ( ( hexagon-mirror-C ( ap h (back-left a')) ( front-left (f' a')) @@ -230,9 +230,9 @@ module _ ( front-right (g' a')) ( c a')) ∙ ( inv - ( left-whisker-identification + ( left-whisker-concat ( inv (front-right (g' a'))) - ( right-whisker-identification (ap-inv k (back-right a')) _))))) + ( right-whisker-concat (ap-inv k (back-right a')) _))))) ``` ### Rectangles in commuting cubes @@ -276,7 +276,7 @@ module _ ( refl-htpy' hA) ( top) coherence-htpy-parallel-cone-rectangle-left-rectangle-right-cube c = - ( λ a' → left-whisker-identification (rectangle-left-cube a') right-unit) ∙h + ( λ a' → left-whisker-concat (rectangle-left-cube a') right-unit) ∙h ( c) rectangle-top-front-left-cube : diff --git a/src/foundation/commuting-prisms-of-maps.lagda.md b/src/foundation/commuting-prisms-of-maps.lagda.md index 898265fda0..91375781cd 100644 --- a/src/foundation/commuting-prisms-of-maps.lagda.md +++ b/src/foundation/commuting-prisms-of-maps.lagda.md @@ -18,7 +18,7 @@ open import foundation.path-algebra open import foundation.postcomposition-functions open import foundation.precomposition-functions open import foundation.universe-levels -open import foundation.whiskering-homotopies +open import foundation.whiskering-homotopies-composition open import foundation-core.equivalences open import foundation-core.function-extensionality @@ -105,7 +105,7 @@ module _ ( prism-top)) ∙h ( ap-concat-htpy ( hC' ·l front-top) - ( preserves-comp-left-whisker-htpy hC' hC top)))) ∙h + ( preserves-comp-left-whisker-comp hC' hC top)))) ∙h ( inv-htpy-assoc-htpy ( front-bottom ·r hA) ( hC' ·l front-top) diff --git a/src/foundation/commuting-squares-of-maps.lagda.md b/src/foundation/commuting-squares-of-maps.lagda.md index bc333fe930..2a98ed7866 100644 --- a/src/foundation/commuting-squares-of-maps.lagda.md +++ b/src/foundation/commuting-squares-of-maps.lagda.md @@ -20,9 +20,9 @@ open import foundation.identity-types open import foundation.postcomposition-functions open import foundation.precomposition-functions open import foundation.universe-levels -open import foundation.whiskering-higher-homotopies -open import foundation.whiskering-homotopies -open import foundation.whiskering-identifications +open import foundation.whiskering-higher-homotopies-composition +open import foundation.whiskering-homotopies-composition +open import foundation.whiskering-identifications-concatenation open import foundation-core.commuting-prisms-of-maps open import foundation-core.function-extensionality @@ -94,7 +94,7 @@ module _ ( coherence-square-homotopies-coherence-triangles-maps refl-htpy H K) ~ ( coherence-square-coherence-triangles-maps diagonal H K) compute-coherence-square-refl-htpy-coherence-triangles-maps diagonal H K x = - right-whisker-identification right-unit (K x) + right-whisker-concat right-unit (K x) ``` ### Inverting squares horizontally and vertically @@ -354,7 +354,7 @@ module _ ( inv ( ap ( ap (map-inv-equiv right)) - ( ( left-whisker-htpy² + ( ( left-whisker-comp² ( bottom) ( coherence-map-inv-equiv left) ( a)) ∙ @@ -383,7 +383,7 @@ module _ ( nat-htpy ( is-retraction-map-inv-equiv right ·r top) ( is-retraction-map-inv-equiv left a)))))) ∙ - ( right-whisker-identification + ( right-whisker-concat ( right-inverse-eq-transpose-equiv ( right) ( H (map-inv-equiv left (map-equiv left a)))) @@ -415,7 +415,7 @@ module _ ( map-equiv right) ( coherence-square-inv-vertical top left right bottom H a)) ( is-section-map-inv-equiv right (bottom a))) ∙ - ( left-whisker-identification + ( left-whisker-concat ( H (map-inv-equiv left a)) ( triangle-eq-transpose-equiv ( right) @@ -493,7 +493,7 @@ module _ ( mid-right ·l sq-top)) ∙h ( ap-concat-htpy ( bottom-right ·l (sq-mid ·r top-left)) - ( preserves-comp-left-whisker-htpy + ( preserves-comp-left-whisker-comp ( bottom-right) ( mid-right) ( sq-top))))) ∙h @@ -835,8 +835,8 @@ module _ by ap-binary ( λ L q → eq-htpy L ∙ q) - ( eq-htpy (preserves-comp-left-whisker-htpy h bottom-right H)) - ( compute-eq-right-whisker-htpy + ( eq-htpy (preserves-comp-left-whisker-comp h bottom-right H)) + ( compute-eq-right-whisker-comp ( top-left) ( h ·l K)) @@ -923,8 +923,8 @@ module _ by ap-binary ( λ p L → p ∙ eq-htpy L) - ( compute-eq-right-whisker-htpy left-top (h ·l K)) - ( eq-htpy (preserves-comp-left-whisker-htpy h right-bottom H)) + ( compute-eq-right-whisker-comp left-top (h ·l K)) + ( eq-htpy (preserves-comp-left-whisker-comp h right-bottom H)) ``` ### Transposing by precomposition of whiskered squares @@ -974,7 +974,7 @@ module _ ( ( precomp f W) ·l ( precomp-coherence-square-maps top left right bottom H W)) distributive-precomp-right-whisker-coherence-square-maps f g = - compute-eq-right-whisker-htpy f (g ·l H) + compute-eq-right-whisker-comp f (g ·l H) ``` Similarly, we can calculate transpositions of left-whiskered squares with the @@ -1039,7 +1039,7 @@ module _ ( K) ( h) = ( compute-concat-htpy-precomp (H ∙h L) K W h) ∙ - ( right-whisker-identification + ( right-whisker-concat ( compute-concat-htpy-precomp H L W h) ( precomp-coherence-triangle-maps diagonal-right right top K W h)) @@ -1077,7 +1077,7 @@ module _ ( K) ( h) = ( compute-concat-htpy-precomp H (L ∙h K) W h) ∙ - ( left-whisker-identification + ( left-whisker-concat ( precomp-coherence-triangle-maps' diagonal-left bottom left H W h) ( compute-concat-htpy-precomp L K W h)) diff --git a/src/foundation/commuting-tetrahedra-of-maps.lagda.md b/src/foundation/commuting-tetrahedra-of-maps.lagda.md index 1396dfc5bb..a89ec62fac 100644 --- a/src/foundation/commuting-tetrahedra-of-maps.lagda.md +++ b/src/foundation/commuting-tetrahedra-of-maps.lagda.md @@ -11,7 +11,7 @@ open import foundation.universe-levels open import foundation-core.commuting-triangles-of-maps open import foundation-core.homotopies -open import foundation-core.whiskering-homotopies +open import foundation-core.whiskering-homotopies-composition ``` diff --git a/src/foundation/commuting-triangles-of-homotopies.lagda.md b/src/foundation/commuting-triangles-of-homotopies.lagda.md index ecd79e334a..7232f0c84f 100644 --- a/src/foundation/commuting-triangles-of-homotopies.lagda.md +++ b/src/foundation/commuting-triangles-of-homotopies.lagda.md @@ -10,12 +10,12 @@ module foundation.commuting-triangles-of-homotopies where open import foundation.action-on-identifications-functions open import foundation.commuting-triangles-of-identifications open import foundation.universe-levels -open import foundation.whiskering-identifications +open import foundation.whiskering-identifications-concatenation open import foundation-core.function-types open import foundation-core.homotopies open import foundation-core.identity-types -open import foundation-core.whiskering-homotopies +open import foundation-core.whiskering-homotopies-composition ``` @@ -117,7 +117,7 @@ module _ ```agda module _ {l1 l2 : Level} {A : UU l1} {B : A → UU l2} - {f g h i : (x : A) → B x} (H : i ~ f) + {f g h i : (x : A) → B x} (H : i ~ f) (left : f ~ h) (right : g ~ h) (top : f ~ g) where diff --git a/src/foundation/commuting-triangles-of-identifications.lagda.md b/src/foundation/commuting-triangles-of-identifications.lagda.md index 4884f03ece..07bb74d454 100644 --- a/src/foundation/commuting-triangles-of-identifications.lagda.md +++ b/src/foundation/commuting-triangles-of-identifications.lagda.md @@ -11,7 +11,7 @@ open import foundation.action-on-identifications-functions open import foundation.identity-types open import foundation.path-algebra open import foundation.universe-levels -open import foundation.whiskering-identifications +open import foundation.whiskering-identifications-concatenation open import foundation-core.equivalences open import foundation-core.function-types @@ -167,7 +167,7 @@ module _ coherence-triangle-identifications (p ∙ left) right (p ∙ top) equiv-left-whisker-coherence-triangle-identifications = ( inv-equiv (equiv-concat-assoc' (p ∙ left) p top right)) ∘e - ( equiv-left-whisker-identification p) + ( equiv-left-whisker-concat p) left-whisker-coherence-triangle-identifications : coherence-triangle-identifications left right top → @@ -186,7 +186,7 @@ module _ coherence-triangle-identifications' (p ∙ left) right (p ∙ top) equiv-left-whisker-coherence-triangle-identifications' = ( inv-equiv (equiv-concat-assoc p top right (p ∙ left))) ∘e - ( equiv-left-whisker-identification p) + ( equiv-left-whisker-concat p) left-whisker-coherence-triangle-identifications' : coherence-triangle-identifications' left right top → @@ -227,7 +227,7 @@ module _ coherence-triangle-identifications (left ∙ p) (right ∙ p) top equiv-right-whisker-coherence-triangle-identifications = ( equiv-concat-assoc' (left ∙ p) top right p) ∘e - ( equiv-right-whisker-identification p) + ( equiv-right-whisker-concat p) right-whisker-coherence-triangle-identifications : coherence-triangle-identifications left right top → @@ -246,7 +246,7 @@ module _ coherence-triangle-identifications' (left ∙ p) (right ∙ p) top equiv-right-whisker-coherence-triangle-identifications' = ( equiv-concat-assoc top right p (left ∙ p)) ∘e - ( equiv-right-whisker-identification p) + ( equiv-right-whisker-concat p) right-whisker-coherence-triangle-identifications' : coherence-triangle-identifications' left right top → @@ -303,7 +303,7 @@ module _ coherence-triangle-identifications left (q ∙ right) (top ∙ p) equiv-splice-inverse-pair-coherence-triangle-identifications refl .refl refl left right top = - equiv-concat' left (right-whisker-identification (inv right-unit) right) + equiv-concat' left (right-whisker-concat (inv right-unit) right) splice-inverse-pair-coherence-triangle-identifications : (p : y = u) (q : u = y) (α : inv p = q) → @@ -312,7 +312,7 @@ module _ coherence-triangle-identifications left (q ∙ right) (top ∙ p) splice-inverse-pair-coherence-triangle-identifications refl .refl refl left right top t = - t ∙ inv (right-whisker-identification right-unit right) + t ∙ inv (right-whisker-concat right-unit right) unsplice-inverse-pair-coherence-triangle-identifications : (p : y = u) (q : u = y) (α : inv p = q) → @@ -321,7 +321,7 @@ module _ coherence-triangle-identifications left right top unsplice-inverse-pair-coherence-triangle-identifications refl .refl refl left right top t = - t ∙ right-whisker-identification right-unit right + t ∙ right-whisker-concat right-unit right equiv-splice-inverse-pair-coherence-triangle-identifications' : (p : y = u) (q : u = y) (α : inv p = q) → @@ -330,7 +330,7 @@ module _ coherence-triangle-identifications' left (q ∙ right) (top ∙ p) equiv-splice-inverse-pair-coherence-triangle-identifications' refl .refl refl left right top = - equiv-concat (right-whisker-identification right-unit right) left + equiv-concat (right-whisker-concat right-unit right) left splice-inverse-pair-coherence-triangle-identifications' : (p : y = u) (q : u = y) (α : inv p = q) → @@ -339,7 +339,7 @@ module _ coherence-triangle-identifications' left (q ∙ right) (top ∙ p) splice-inverse-pair-coherence-triangle-identifications' refl .refl refl left right top t = - right-whisker-identification right-unit right ∙ t + right-whisker-concat right-unit right ∙ t unsplice-inverse-pair-coherence-triangle-identifications' : (p : y = u) (q : u = y) (α : inv p = q) → @@ -348,7 +348,7 @@ module _ coherence-triangle-identifications' left right top unsplice-inverse-pair-coherence-triangle-identifications' refl .refl refl left right top t = - inv (right-whisker-identification right-unit right) ∙ t + inv (right-whisker-concat right-unit right) ∙ t ``` ### The action of functions on commuting triangles of identifications diff --git a/src/foundation/composition-algebra.lagda.md b/src/foundation/composition-algebra.lagda.md index 318bbfec29..d20309d99c 100644 --- a/src/foundation/composition-algebra.lagda.md +++ b/src/foundation/composition-algebra.lagda.md @@ -13,12 +13,12 @@ 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 +open import foundation.whiskering-higher-homotopies-composition open import foundation-core.function-types open import foundation-core.homotopies open import foundation-core.identity-types -open import foundation-core.whiskering-homotopies +open import foundation-core.whiskering-homotopies-composition ``` @@ -46,7 +46,7 @@ homotopies. ### Precomposition distributes over whiskerings of homotopies The operation `htpy-precomp` distributes over -[whiskerings of homotopies](foundation-core.whiskering-homotopies.md) +[whiskerings of homotopies](foundation-core.whiskering-homotopies-composition.md) contravariantly. Given a homotopy `H : f ~ g` and a suitable map `h` the homotopy constructed as the whiskering @@ -270,11 +270,11 @@ module _ ind-htpy f ( λ f' F → htpy-precomp F Y ·r postcomp B g ~ postcomp A g ·l htpy-precomp F X) - ( ( right-whisker-htpy² + ( ( right-whisker-comp² ( compute-htpy-precomp-refl-htpy f Y) ( postcomp B g)) ∙h ( inv-htpy - ( left-whisker-htpy² + ( left-whisker-comp² ( postcomp A g) ( compute-htpy-precomp-refl-htpy f X)))) @@ -285,11 +285,11 @@ module _ ind-htpy g ( λ g' G → htpy-postcomp A G ·r precomp f X ~ precomp f Y ·l htpy-postcomp B G) - ( ( right-whisker-htpy² + ( ( right-whisker-comp² ( compute-htpy-postcomp-refl-htpy A g) ( precomp f X)) ∙h ( inv-htpy - ( left-whisker-htpy² + ( left-whisker-comp² ( precomp f Y) ( compute-htpy-postcomp-refl-htpy B g)))) @@ -311,14 +311,14 @@ module _ htpy-precomp F Y ·r postcomp B g')) ( ( ap-concat-htpy ( postcomp A g ·l htpy-precomp F X) - ( right-whisker-htpy² + ( 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-htpy² + ( left-whisker-comp² ( precomp f Y) ( inv-htpy (compute-htpy-postcomp-refl-htpy B g))))) ``` diff --git a/src/foundation/cones-over-cospan-diagrams.lagda.md b/src/foundation/cones-over-cospan-diagrams.lagda.md index e7aadaf37b..3db2e15780 100644 --- a/src/foundation/cones-over-cospan-diagrams.lagda.md +++ b/src/foundation/cones-over-cospan-diagrams.lagda.md @@ -21,7 +21,7 @@ open import foundation-core.homotopies open import foundation-core.identity-types open import foundation-core.torsorial-type-families open import foundation-core.transport-along-identifications -open import foundation-core.whiskering-homotopies +open import foundation-core.whiskering-homotopies-composition ``` diff --git a/src/foundation/cones-over-inverse-sequential-diagrams.lagda.md b/src/foundation/cones-over-inverse-sequential-diagrams.lagda.md index e7cb636cbc..7eb8957425 100644 --- a/src/foundation/cones-over-inverse-sequential-diagrams.lagda.md +++ b/src/foundation/cones-over-inverse-sequential-diagrams.lagda.md @@ -24,7 +24,7 @@ open import foundation-core.function-extensionality open import foundation-core.homotopies open import foundation-core.identity-types open import foundation-core.torsorial-type-families -open import foundation-core.whiskering-homotopies +open import foundation-core.whiskering-homotopies-composition ``` diff --git a/src/foundation/coproduct-decompositions.lagda.md b/src/foundation/coproduct-decompositions.lagda.md index fbab92bf70..fd58c07806 100644 --- a/src/foundation/coproduct-decompositions.lagda.md +++ b/src/foundation/coproduct-decompositions.lagda.md @@ -34,7 +34,7 @@ open import foundation-core.identity-types open import foundation-core.propositions open import foundation-core.torsorial-type-families open import foundation-core.transport-along-identifications -open import foundation-core.whiskering-homotopies +open import foundation-core.whiskering-homotopies-composition open import univalent-combinatorics.equality-standard-finite-types open import univalent-combinatorics.standard-finite-types @@ -109,7 +109,7 @@ pr2 (equiv-coproduct-Decomposition-full-subuniverse X) = ( d) ( id-equiv , ( id-equiv , - right-whisker-htpy + right-whisker-comp ( id-map-coprod _ _) ( map-equiv ( matching-correspondence-binary-coproduct-Decomposition-subuniverse diff --git a/src/foundation/coslice.lagda.md b/src/foundation/coslice.lagda.md index 0fd207db2a..4763b95c9d 100644 --- a/src/foundation/coslice.lagda.md +++ b/src/foundation/coslice.lagda.md @@ -17,7 +17,7 @@ open import foundation-core.function-extensionality open import foundation-core.function-types open import foundation-core.homotopies open import foundation-core.identity-types -open import foundation-core.whiskering-homotopies +open import foundation-core.whiskering-homotopies-composition ``` diff --git a/src/foundation/descent-coproduct-types.lagda.md b/src/foundation/descent-coproduct-types.lagda.md index d749bb8574..3c6ba3f0b5 100644 --- a/src/foundation/descent-coproduct-types.lagda.md +++ b/src/foundation/descent-coproduct-types.lagda.md @@ -13,7 +13,7 @@ open import foundation.dependent-pair-types open import foundation.functoriality-coproduct-types open import foundation.functoriality-fibers-of-maps open import foundation.universe-levels -open import foundation.whiskering-identifications +open import foundation.whiskering-identifications-concatenation open import foundation-core.coproduct-types open import foundation-core.equality-dependent-pair-types @@ -48,7 +48,7 @@ module _ ( fiber-map-coprod-inl-fiber f g x) triangle-descent-square-fiber-map-coprod-inl-fiber x (a' , p) = eq-pair-eq-pr2 - ( left-whisker-identification + ( left-whisker-concat ( inv (HA a')) ( ap-comp (ind-coprod _ αA αB) inl p)) @@ -61,7 +61,7 @@ module _ ( fiber-map-coprod-inr-fiber f g y) triangle-descent-square-fiber-map-coprod-inr-fiber y (b' , p) = eq-pair-eq-pr2 - ( left-whisker-identification + ( left-whisker-concat ( inv (HB b')) ( ap-comp (ind-coprod _ αA αB) inr p)) diff --git a/src/foundation/equivalences.lagda.md b/src/foundation/equivalences.lagda.md index 1411773d43..6a127e78e9 100644 --- a/src/foundation/equivalences.lagda.md +++ b/src/foundation/equivalences.lagda.md @@ -19,7 +19,7 @@ open import foundation.path-algebra open import foundation.truncated-maps open import foundation.universal-property-equivalences open import foundation.universe-levels -open import foundation.whiskering-identifications +open import foundation.whiskering-identifications-concatenation open import foundation-core.commuting-triangles-of-maps open import foundation-core.contractible-maps @@ -183,7 +183,7 @@ the original identifications. ( is-section-map-inv-equiv e y)) = ( p) triangle-eq-transpose-equiv {x} {y} p = - ( right-whisker-identification + ( right-whisker-concat ( is-section-map-inv-equiv ( equiv-ap e x (map-inv-equiv e y)) ( p ∙ inv (is-section-map-inv-equiv e y))) @@ -192,7 +192,7 @@ the original identifications. ( p) ( inv (is-section-map-inv-equiv e y)) ( is-section-map-inv-equiv e y)) ∙ - ( ( left-whisker-identification p + ( ( left-whisker-concat p ( left-inv (is-section-map-inv-equiv e y))) ∙ ( right-unit))) @@ -212,7 +212,7 @@ the original identifications. ( ap (map-equiv e) (inv (map-eq-transpose-equiv-inv e p))) ( is-section-map-inv-equiv e y) ( inv p) - ( ( right-whisker-identification + ( ( right-whisker-concat ( ap ( ap (map-equiv e)) ( inv-inv @@ -229,7 +229,7 @@ the original identifications. ( is-retraction-map-inv-equiv e x ∙ map-eq-transpose-equiv e p) = ( ap (map-inv-equiv e) p) triangle-eq-transpose-equiv' {x} refl = - ( left-whisker-identification + ( left-whisker-concat ( is-retraction-map-inv-equiv e x) ( htpy-map-eq-transpose-equiv refl)) ∙ ( is-section-inv-concat (is-retraction-map-inv-equiv e x) refl) diff --git a/src/foundation/exponents-set-quotients.lagda.md b/src/foundation/exponents-set-quotients.lagda.md index bfa332f376..992d7476f9 100644 --- a/src/foundation/exponents-set-quotients.lagda.md +++ b/src/foundation/exponents-set-quotients.lagda.md @@ -27,7 +27,7 @@ open import foundation-core.function-types open import foundation-core.homotopies open import foundation-core.identity-types open import foundation-core.propositions -open import foundation-core.whiskering-homotopies +open import foundation-core.whiskering-homotopies-composition ``` diff --git a/src/foundation/fibered-maps.lagda.md b/src/foundation/fibered-maps.lagda.md index 986e91161f..6940e59a35 100644 --- a/src/foundation/fibered-maps.lagda.md +++ b/src/foundation/fibered-maps.lagda.md @@ -32,7 +32,7 @@ open import foundation-core.small-types open import foundation-core.torsorial-type-families open import foundation-core.truncated-types open import foundation-core.truncation-levels -open import foundation-core.whiskering-homotopies +open import foundation-core.whiskering-homotopies-composition ``` diff --git a/src/foundation/function-extensionality.lagda.md b/src/foundation/function-extensionality.lagda.md index a3fea5579d..4d90589263 100644 --- a/src/foundation/function-extensionality.lagda.md +++ b/src/foundation/function-extensionality.lagda.md @@ -20,7 +20,7 @@ open import foundation-core.identity-types open import foundation-core.postcomposition-functions open import foundation-core.precomposition-dependent-functions open import foundation-core.precomposition-functions -open import foundation-core.whiskering-homotopies +open import foundation-core.whiskering-homotopies-composition ``` diff --git a/src/foundation/functoriality-dependent-function-types.lagda.md b/src/foundation/functoriality-dependent-function-types.lagda.md index 279823fa82..bb3ec8768f 100644 --- a/src/foundation/functoriality-dependent-function-types.lagda.md +++ b/src/foundation/functoriality-dependent-function-types.lagda.md @@ -33,7 +33,7 @@ open import foundation-core.propositional-maps open import foundation-core.truncated-maps open import foundation-core.truncated-types open import foundation-core.truncation-levels -open import foundation-core.whiskering-homotopies +open import foundation-core.whiskering-homotopies-composition ``` diff --git a/src/foundation/functoriality-fibers-of-maps.lagda.md b/src/foundation/functoriality-fibers-of-maps.lagda.md index c35b0d467b..4c3c411b12 100644 --- a/src/foundation/functoriality-fibers-of-maps.lagda.md +++ b/src/foundation/functoriality-fibers-of-maps.lagda.md @@ -22,7 +22,7 @@ open import foundation-core.function-types open import foundation-core.functoriality-dependent-pair-types open import foundation-core.homotopies open import foundation-core.identity-types -open import foundation-core.whiskering-homotopies +open import foundation-core.whiskering-homotopies-composition ``` diff --git a/src/foundation/functoriality-propositional-truncation.lagda.md b/src/foundation/functoriality-propositional-truncation.lagda.md index 80eb4d34d1..cfe8f9358c 100644 --- a/src/foundation/functoriality-propositional-truncation.lagda.md +++ b/src/foundation/functoriality-propositional-truncation.lagda.md @@ -18,7 +18,7 @@ open import foundation-core.function-extensionality open import foundation-core.function-types open import foundation-core.homotopies open import foundation-core.propositions -open import foundation-core.whiskering-homotopies +open import foundation-core.whiskering-homotopies-composition ``` diff --git a/src/foundation/functoriality-set-truncation.lagda.md b/src/foundation/functoriality-set-truncation.lagda.md index 4f0f775d80..ef468c02d8 100644 --- a/src/foundation/functoriality-set-truncation.lagda.md +++ b/src/foundation/functoriality-set-truncation.lagda.md @@ -33,7 +33,7 @@ open import foundation-core.injective-maps open import foundation-core.propositions open import foundation-core.sets open import foundation-core.truncation-levels -open import foundation-core.whiskering-homotopies +open import foundation-core.whiskering-homotopies-composition ``` diff --git a/src/foundation/functoriality-truncation.lagda.md b/src/foundation/functoriality-truncation.lagda.md index b79c17127a..c2dafec791 100644 --- a/src/foundation/functoriality-truncation.lagda.md +++ b/src/foundation/functoriality-truncation.lagda.md @@ -22,7 +22,7 @@ open import foundation-core.homotopies open import foundation-core.retractions open import foundation-core.sections open import foundation-core.truncation-levels -open import foundation-core.whiskering-homotopies +open import foundation-core.whiskering-homotopies-composition ``` diff --git a/src/foundation/homotopies.lagda.md b/src/foundation/homotopies.lagda.md index cd0654b8a9..601d0b00d5 100644 --- a/src/foundation/homotopies.lagda.md +++ b/src/foundation/homotopies.lagda.md @@ -19,7 +19,7 @@ open import foundation.homotopy-induction open import foundation.identity-types open import foundation.path-algebra open import foundation.universe-levels -open import foundation.whiskering-identifications +open import foundation.whiskering-identifications-concatenation open import foundation-core.dependent-identifications open import foundation-core.equivalences @@ -27,7 +27,7 @@ open import foundation-core.function-extensionality open import foundation-core.function-types open import foundation-core.functoriality-dependent-function-types open import foundation-core.transport-along-identifications -open import foundation-core.whiskering-homotopies +open import foundation-core.whiskering-homotopies-composition ``` @@ -294,8 +294,8 @@ htpy-swap-nat-right-htpy : {l0 l1 l2 : Level} {X : UU l0} {Y : UU l1} {Z : UU l2} {f g : X → Y} {f' g' : Y → Z} (H' : f' ~ g') (H : f ~ g) → - (right-whisker-htpy H' f ∙h left-whisker-htpy g' H) ~ - (left-whisker-htpy f' H ∙h right-whisker-htpy H' g) + (right-whisker-comp H' f ∙h left-whisker-comp g' H) ~ + (left-whisker-comp f' H ∙h right-whisker-comp H' g) htpy-swap-nat-right-htpy H' H x = nat-htpy H' (H x) @@ -303,9 +303,9 @@ eckmann-hilton-htpy : {l : Level} {X : UU l} (H K : id {A = X} ~ id) → (H ∙h K) ~ (K ∙h H) eckmann-hilton-htpy H K x = - ( inv (left-whisker-identification (H x) (ap-id (K x))) ∙ + ( inv (left-whisker-concat (H x) (ap-id (K x))) ∙ ( htpy-swap-nat-right-htpy H K x)) ∙ - ( right-whisker-identification (ap-id (K x)) (H x)) + ( right-whisker-concat (ap-id (K x)) (H x)) ``` ### Action on identifications at `eq-htpy` @@ -331,5 +331,5 @@ module _ ## See also - [Multivariable homotopies](foundation.multivariable-homotopies.md). -- The [whiskering operations](foundation.whiskering-homotopies.md) on - homotopies. +- The [whiskering operations](foundation.whiskering-homotopies-composition.md) + on homotopies. diff --git a/src/foundation/invertible-maps.lagda.md b/src/foundation/invertible-maps.lagda.md index 4fb62d4049..99ccb0700a 100644 --- a/src/foundation/invertible-maps.lagda.md +++ b/src/foundation/invertible-maps.lagda.md @@ -35,7 +35,7 @@ open import foundation-core.identity-types open import foundation-core.torsorial-type-families open import foundation-core.truncated-types open import foundation-core.truncation-levels -open import foundation-core.whiskering-homotopies +open import foundation-core.whiskering-homotopies-composition open import synthetic-homotopy-theory.free-loops ``` diff --git a/src/foundation/involutions.lagda.md b/src/foundation/involutions.lagda.md index c2ddd37532..0f70e50d59 100644 --- a/src/foundation/involutions.lagda.md +++ b/src/foundation/involutions.lagda.md @@ -24,7 +24,7 @@ open import foundation-core.injective-maps open import foundation-core.torsorial-type-families open import foundation-core.truncated-types open import foundation-core.truncation-levels -open import foundation-core.whiskering-homotopies +open import foundation-core.whiskering-homotopies-composition open import structured-types.pointed-types ``` diff --git a/src/foundation/iterating-automorphisms.lagda.md b/src/foundation/iterating-automorphisms.lagda.md index 5595f9b69c..7bafe4a3d8 100644 --- a/src/foundation/iterating-automorphisms.lagda.md +++ b/src/foundation/iterating-automorphisms.lagda.md @@ -20,7 +20,7 @@ open import foundation-core.coproduct-types open import foundation-core.equivalences open import foundation-core.function-types open import foundation-core.homotopies -open import foundation-core.whiskering-homotopies +open import foundation-core.whiskering-homotopies-composition ``` diff --git a/src/foundation/monomorphisms.lagda.md b/src/foundation/monomorphisms.lagda.md index 497cc0c8a5..60304a22f9 100644 --- a/src/foundation/monomorphisms.lagda.md +++ b/src/foundation/monomorphisms.lagda.md @@ -22,7 +22,7 @@ open import foundation-core.identity-types open import foundation-core.propositional-maps open import foundation-core.propositions open import foundation-core.truncation-levels -open import foundation-core.whiskering-homotopies +open import foundation-core.whiskering-homotopies-composition ``` diff --git a/src/foundation/morphisms-arrows.lagda.md b/src/foundation/morphisms-arrows.lagda.md index 6e922c8dc2..437111ae13 100644 --- a/src/foundation/morphisms-arrows.lagda.md +++ b/src/foundation/morphisms-arrows.lagda.md @@ -17,7 +17,7 @@ open import foundation.homotopy-induction open import foundation.postcomposition-functions open import foundation.structure-identity-principle open import foundation.universe-levels -open import foundation.whiskering-identifications +open import foundation.whiskering-identifications-concatenation open import foundation-core.commuting-squares-of-maps open import foundation-core.equivalences @@ -27,7 +27,7 @@ open import foundation-core.homotopies open import foundation-core.identity-types open import foundation-core.precomposition-functions open import foundation-core.torsorial-type-families -open import foundation-core.whiskering-homotopies +open import foundation-core.whiskering-homotopies-composition ``` @@ -429,24 +429,24 @@ module _ (γ : hom-arrow g h) (α β : hom-arrow f g) (H : htpy-hom-arrow f g α β) where - htpy-domain-left-whisker-htpy-hom-arrow : + htpy-domain-left-whisker-comp-hom-arrow : map-domain-comp-hom-arrow f g h γ α ~ map-domain-comp-hom-arrow f g h γ β - htpy-domain-left-whisker-htpy-hom-arrow = + htpy-domain-left-whisker-comp-hom-arrow = map-domain-hom-arrow g h γ ·l htpy-domain-htpy-hom-arrow f g α β H - htpy-codomain-left-whisker-htpy-hom-arrow : + htpy-codomain-left-whisker-comp-hom-arrow : map-codomain-comp-hom-arrow f g h γ α ~ map-codomain-comp-hom-arrow f g h γ β - htpy-codomain-left-whisker-htpy-hom-arrow = + htpy-codomain-left-whisker-comp-hom-arrow = map-codomain-hom-arrow g h γ ·l htpy-codomain-htpy-hom-arrow f g α β H - coh-left-whisker-htpy-hom-arrow : + coh-left-whisker-comp-hom-arrow : coherence-htpy-hom-arrow f h ( comp-hom-arrow f g h γ α) ( comp-hom-arrow f g h γ β) - ( htpy-domain-left-whisker-htpy-hom-arrow) - ( htpy-codomain-left-whisker-htpy-hom-arrow) - coh-left-whisker-htpy-hom-arrow a = + ( htpy-domain-left-whisker-comp-hom-arrow) + ( htpy-codomain-left-whisker-comp-hom-arrow) + coh-left-whisker-comp-hom-arrow a = ( left-whisker-coherence-triangle-identifications' ( ap (map-codomain-hom-arrow g h γ) (coh-hom-arrow f g α a)) ( _) @@ -485,16 +485,16 @@ module _ ( ap g (htpy-domain-htpy-hom-arrow f g α β H a)) ( coh-htpy-hom-arrow f g α β H a)))) - left-whisker-htpy-hom-arrow : + left-whisker-comp-hom-arrow : htpy-hom-arrow f h ( comp-hom-arrow f g h γ α) ( comp-hom-arrow f g h γ β) - pr1 left-whisker-htpy-hom-arrow = - htpy-domain-left-whisker-htpy-hom-arrow - pr1 (pr2 left-whisker-htpy-hom-arrow) = - htpy-codomain-left-whisker-htpy-hom-arrow - pr2 (pr2 left-whisker-htpy-hom-arrow) = - coh-left-whisker-htpy-hom-arrow + pr1 left-whisker-comp-hom-arrow = + htpy-domain-left-whisker-comp-hom-arrow + pr1 (pr2 left-whisker-comp-hom-arrow) = + htpy-codomain-left-whisker-comp-hom-arrow + pr2 (pr2 left-whisker-comp-hom-arrow) = + coh-left-whisker-comp-hom-arrow ``` #### Right whiskering diff --git a/src/foundation/morphisms-inverse-sequential-diagrams.lagda.md b/src/foundation/morphisms-inverse-sequential-diagrams.lagda.md index 6d9c30d3a8..e567168183 100644 --- a/src/foundation/morphisms-inverse-sequential-diagrams.lagda.md +++ b/src/foundation/morphisms-inverse-sequential-diagrams.lagda.md @@ -25,7 +25,7 @@ open import foundation-core.function-types open import foundation-core.homotopies open import foundation-core.identity-types open import foundation-core.torsorial-type-families -open import foundation-core.whiskering-homotopies +open import foundation-core.whiskering-homotopies-composition ``` diff --git a/src/foundation/morphisms-spans-families-of-types.lagda.md b/src/foundation/morphisms-spans-families-of-types.lagda.md index e8de109012..8c372f1a61 100644 --- a/src/foundation/morphisms-spans-families-of-types.lagda.md +++ b/src/foundation/morphisms-spans-families-of-types.lagda.md @@ -15,7 +15,7 @@ open import foundation.homotopy-induction open import foundation.spans-families-of-types open import foundation.structure-identity-principle open import foundation.universe-levels -open import foundation.whiskering-homotopies +open import foundation.whiskering-homotopies-composition open import foundation-core.commuting-triangles-of-maps open import foundation-core.equivalences diff --git a/src/foundation/path-algebra.lagda.md b/src/foundation/path-algebra.lagda.md index da52dd2586..66ffb355a8 100644 --- a/src/foundation/path-algebra.lagda.md +++ b/src/foundation/path-algebra.lagda.md @@ -15,7 +15,7 @@ open import foundation.commuting-squares-of-identifications open import foundation.dependent-pair-types open import foundation.identity-types open import foundation.universe-levels -open import foundation.whiskering-identifications +open import foundation.whiskering-identifications-concatenation open import foundation-core.constant-maps open import foundation-core.equivalences @@ -81,13 +81,13 @@ module _ middle-unit-law-assoc : (p : x = y) (q : y = z) → - assoc p refl q = right-whisker-identification right-unit q + assoc p refl q = right-whisker-concat right-unit q middle-unit-law-assoc refl q = refl right-unit-law-assoc : (p : x = y) (q : y = z) → assoc p q refl = - right-unit ∙ left-whisker-identification p (inv right-unit) + right-unit ∙ left-whisker-concat p (inv right-unit) right-unit-law-assoc refl refl = refl ``` @@ -111,23 +111,23 @@ module _ unit-law-assoc-101 : (p : x = y) (q : y = z) → - assoc p refl q = right-whisker-identification right-unit q + assoc p refl q = right-whisker-concat right-unit q unit-law-assoc-101 refl q = refl unit-law-assoc-101' : (p : x = y) (q : y = z) → - inv (assoc p refl q) = right-whisker-identification (inv right-unit) q + inv (assoc p refl q) = right-whisker-concat (inv right-unit) q unit-law-assoc-101' refl q = refl unit-law-assoc-110 : (p : x = y) (q : y = z) → - assoc p q refl ∙ left-whisker-identification p right-unit = right-unit + assoc p q refl ∙ left-whisker-concat p right-unit = right-unit unit-law-assoc-110 refl refl = refl unit-law-assoc-110' : (p : x = y) (q : y = z) → inv right-unit ∙ assoc p q refl = - left-whisker-identification p (inv right-unit) + left-whisker-concat p (inv right-unit) unit-law-assoc-110' refl refl = refl ``` @@ -177,13 +177,13 @@ right-unit-law-vertical-concat-Id² = right-unit left-unit-law-horizontal-concat-Id² : {l : Level} {A : UU l} {x y z : A} {p : x = y} {u v : y = z} (γ : u = v) → horizontal-concat-Id² (refl {x = p}) γ = - left-whisker-identification p γ + left-whisker-concat p γ left-unit-law-horizontal-concat-Id² = left-unit-ap-binary _∙_ right-unit-law-horizontal-concat-Id² : {l : Level} {A : UU l} {x y z : A} {p q : x = y} (α : p = q) {u : y = z} → horizontal-concat-Id² α (refl {x = u}) = - right-whisker-identification α u + right-whisker-concat α u right-unit-law-horizontal-concat-Id² = right-unit-ap-binary _∙_ ``` @@ -291,7 +291,7 @@ unit-law-α-interchange-Id² : ( ( interchange-Id² α refl (refl {x = u}) refl) ∙ ( right-unit ∙ right-unit-law-horizontal-concat-Id² α)) = ( ( right-unit-law-horizontal-concat-Id² (α ∙ refl)) ∙ - ( ap (λ s → right-whisker-identification s u) right-unit)) + ( ap (λ s → right-whisker-concat s u) right-unit)) unit-law-α-interchange-Id² refl u = refl unit-law-β-interchange-Id² : @@ -304,7 +304,7 @@ unit-law-γ-interchange-Id² : ( ( interchange-Id² (refl {x = p}) refl γ refl) ∙ ( right-unit ∙ left-unit-law-horizontal-concat-Id² γ)) = ( ( left-unit-law-horizontal-concat-Id² (γ ∙ refl)) ∙ - ( ap (left-whisker-identification p) right-unit)) + ( ap (left-whisker-concat p) right-unit)) unit-law-γ-interchange-Id² p refl = refl unit-law-δ-interchange-Id² : @@ -374,13 +374,13 @@ right-unit-law-x-concat-Id³ = right-unit-law-vertical-concat-Id² left-unit-law-y-concat-Id³ : {l : Level} {A : UU l} {x y : A} {p q r : x = y} {α : p = q} {γ δ : q = r} {τ : γ = δ} → - y-concat-Id³ (refl {x = α}) τ = left-whisker-identification α τ + y-concat-Id³ (refl {x = α}) τ = left-whisker-concat α τ left-unit-law-y-concat-Id³ {τ = τ} = left-unit-law-horizontal-concat-Id² τ right-unit-law-y-concat-Id³ : {l : Level} {A : UU l} {x y : A} {p q r : x = y} {α β : p = q} {γ : q = r} {σ : α = β} → - y-concat-Id³ σ (refl {x = γ}) = right-whisker-identification σ γ + y-concat-Id³ σ (refl {x = γ}) = right-whisker-concat σ γ right-unit-law-y-concat-Id³ {σ = σ} = right-unit-law-horizontal-concat-Id² σ left-unit-law-z-concat-Id³ : @@ -497,16 +497,16 @@ module _ p000̂ p00̂0 p0̂00 p00̂1 p0̂01 p010̂ p0̂10 p100̂ p10̂0 p0̂11 p10̂1 p110̂ p00̂0̂ p0̂00̂ p0̂0̂0 p0̂0̂1 p0̂10̂ p10̂0̂ = Id - ( ( right-whisker-identification p00̂0̂ p0̂11) ∙ + ( ( right-whisker-concat p00̂0̂ p0̂11) ∙ ( ( assoc p00̂0 p010̂ p0̂11) ∙ - ( ( left-whisker-identification p00̂0 p0̂10̂) ∙ + ( ( left-whisker-concat p00̂0 p0̂10̂) ∙ ( ( inv (assoc p00̂0 p0̂10 p110̂)) ∙ - ( ( right-whisker-identification p0̂0̂0 p110̂) ∙ + ( ( right-whisker-concat p0̂0̂0 p110̂) ∙ ( assoc p0̂00 p10̂0 p110̂)))))) ( ( assoc p000̂ p00̂1 p0̂11) ∙ - ( ( left-whisker-identification p000̂ p0̂0̂1) ∙ + ( ( left-whisker-concat p000̂ p0̂0̂1) ∙ ( ( inv (assoc p000̂ p0̂01 p10̂1)) ∙ - ( ( right-whisker-identification p0̂00̂ p10̂1) ∙ + ( ( right-whisker-concat p0̂00̂ p10̂1) ∙ ( ( assoc p0̂00 p100̂ p10̂1) ∙ - ( ( left-whisker-identification p0̂00 p10̂0̂))))))) + ( ( left-whisker-concat p0̂00 p10̂0̂))))))) ``` diff --git a/src/foundation/pi-decompositions.lagda.md b/src/foundation/pi-decompositions.lagda.md index f9c2b38f18..3356f99726 100644 --- a/src/foundation/pi-decompositions.lagda.md +++ b/src/foundation/pi-decompositions.lagda.md @@ -25,7 +25,7 @@ open import foundation-core.homotopies open import foundation-core.identity-types open import foundation-core.torsorial-type-families open import foundation-core.type-theoretic-principle-of-choice -open import foundation-core.whiskering-homotopies +open import foundation-core.whiskering-homotopies-composition ``` diff --git a/src/foundation/postcomposition-functions.lagda.md b/src/foundation/postcomposition-functions.lagda.md index 5fcce0ba10..59122d74ea 100644 --- a/src/foundation/postcomposition-functions.lagda.md +++ b/src/foundation/postcomposition-functions.lagda.md @@ -26,7 +26,7 @@ open import foundation-core.functoriality-dependent-pair-types open import foundation-core.homotopies open import foundation-core.identity-types open import foundation-core.type-theoretic-principle-of-choice -open import foundation-core.whiskering-homotopies +open import foundation-core.whiskering-homotopies-composition ``` @@ -178,9 +178,9 @@ abstract is-equiv-is-invertible ( postcomp A (map-inv-is-equiv is-equiv-f)) ( eq-htpy ∘ - right-whisker-htpy (is-section-map-inv-is-equiv is-equiv-f)) + right-whisker-comp (is-section-map-inv-is-equiv is-equiv-f)) ( eq-htpy ∘ - right-whisker-htpy (is-retraction-map-inv-is-equiv is-equiv-f)) + right-whisker-comp (is-retraction-map-inv-is-equiv is-equiv-f)) is-equiv-postcomp-equiv : {l1 l2 : Level} {X : UU l1} {Y : UU l2} (f : X ≃ Y) → diff --git a/src/foundation/precomposition-functions.lagda.md b/src/foundation/precomposition-functions.lagda.md index 1dfe87fb4f..4696a20ef5 100644 --- a/src/foundation/precomposition-functions.lagda.md +++ b/src/foundation/precomposition-functions.lagda.md @@ -25,7 +25,7 @@ open import foundation-core.functoriality-dependent-pair-types open import foundation-core.homotopies open import foundation-core.identity-types open import foundation-core.retractions -open import foundation-core.whiskering-homotopies +open import foundation-core.whiskering-homotopies-composition ``` diff --git a/src/foundation/precomposition-type-families.lagda.md b/src/foundation/precomposition-type-families.lagda.md index ef459249cf..39ecd86481 100644 --- a/src/foundation/precomposition-type-families.lagda.md +++ b/src/foundation/precomposition-type-families.lagda.md @@ -14,7 +14,7 @@ open import foundation.universe-levels open import foundation-core.function-types open import foundation-core.homotopies open import foundation-core.identity-types -open import foundation-core.whiskering-homotopies +open import foundation-core.whiskering-homotopies-composition ``` diff --git a/src/foundation/pullbacks.lagda.md b/src/foundation/pullbacks.lagda.md index 7040e7cbfe..e088fa3359 100644 --- a/src/foundation/pullbacks.lagda.md +++ b/src/foundation/pullbacks.lagda.md @@ -27,7 +27,7 @@ open import foundation.identity-types open import foundation.multivariable-homotopies open import foundation.unit-type open import foundation.universe-levels -open import foundation.whiskering-identifications +open import foundation.whiskering-identifications-concatenation open import foundation-core.cartesian-product-types open import foundation-core.constant-maps @@ -43,7 +43,7 @@ open import foundation-core.retractions open import foundation-core.sections open import foundation-core.torsorial-type-families open import foundation-core.transport-along-identifications -open import foundation-core.whiskering-homotopies +open import foundation-core.whiskering-homotopies-composition ``` @@ -417,9 +417,9 @@ module _ ( ap-concat-htpy' H' inv-htpy-right-unit-htpy)) ( is-equiv-concat-htpy' ( H ∙h (g ·l L)) - ( λ x → right-whisker-identification (inv right-unit) (H' x))) + ( λ x → right-whisker-concat (inv right-unit) (H' x))) ( is-equiv-concat-htpy - ( λ x → left-whisker-identification (H x) right-unit) + ( λ x → left-whisker-concat (H x) right-unit) ( (f ·l K) ∙h refl-htpy ∙h H')))) abstract @@ -526,7 +526,7 @@ module _ ( concat (tr-tr-refl-htpy-cone c) c')) ~ ( htpy-eq-square c c') left-map-triangle-parallel-cone-eq' c c' = - ( right-whisker-htpy + ( right-whisker-comp ( multivariable-htpy-eq 3 ( compute-ind-htpy g ( λ g'' Hg' → @@ -569,7 +569,7 @@ module _ ( concat (tr-tr-refl-htpy-cone c) c') ~ ( htpy-eq-square c c') left-map-triangle-parallel-cone-eq c c' = - ( right-whisker-htpy + ( right-whisker-comp ( multivariable-htpy-eq 5 ( compute-ind-htpy f ( λ f'' Hf' → @@ -1081,11 +1081,11 @@ module _ pr1 (cone-ap c1 c2) = ap (vertical-map-cone f g c) pr1 (pr2 (cone-ap c1 c2)) = ap (horizontal-map-cone f g c) pr2 (pr2 (cone-ap c1 c2)) γ = - ( right-whisker-identification + ( right-whisker-concat ( inv (ap-comp f (vertical-map-cone f g c) γ)) ( coherence-square-cone f g c c2)) ∙ ( ( inv-nat-htpy (coherence-square-cone f g c) γ) ∙ - ( left-whisker-identification + ( left-whisker-concat ( coherence-square-cone f g c c1) ( ap-comp g (horizontal-map-cone f g c) γ))) @@ -1106,11 +1106,11 @@ module _ ( tr-Id-right ( coherence-square-cone f g c c2) ( ap f (ap (vertical-map-cone f g c) γ))) ∙ - ( ( right-whisker-identification + ( ( right-whisker-concat ( inv (ap-comp f (vertical-map-cone f g c) γ)) ( coherence-square-cone f g c c2)) ∙ ( ( inv-nat-htpy (coherence-square-cone f g c) γ) ∙ - ( left-whisker-identification + ( left-whisker-concat ( coherence-square-cone f g c c1) ( ap-comp g (horizontal-map-cone f g c) γ)))) diff --git a/src/foundation/retractions.lagda.md b/src/foundation/retractions.lagda.md index f248c0ad92..d9a5e0954b 100644 --- a/src/foundation/retractions.lagda.md +++ b/src/foundation/retractions.lagda.md @@ -20,7 +20,7 @@ open import foundation-core.function-types open import foundation-core.homotopies open import foundation-core.identity-types open import foundation-core.injective-maps -open import foundation-core.whiskering-homotopies +open import foundation-core.whiskering-homotopies-composition ``` diff --git a/src/foundation/retracts-of-maps.lagda.md b/src/foundation/retracts-of-maps.lagda.md index b0da218350..01b6d4e5cf 100644 --- a/src/foundation/retracts-of-maps.lagda.md +++ b/src/foundation/retracts-of-maps.lagda.md @@ -26,7 +26,7 @@ open import foundation-core.homotopies open import foundation-core.identity-types open import foundation-core.retractions open import foundation-core.sections -open import foundation-core.whiskering-homotopies +open import foundation-core.whiskering-homotopies-composition ``` @@ -608,7 +608,7 @@ module _ ( inclusion-retract-map f g R)) ( b))) ( id-hom-arrow) - ( left-whisker-htpy-hom-arrow + ( left-whisker-comp-hom-arrow ( inclusion-fiber f) ( inclusion-fiber f) ( inclusion-fiber f) diff --git a/src/foundation/retracts-of-types.lagda.md b/src/foundation/retracts-of-types.lagda.md index 7b92009a5e..71cc960892 100644 --- a/src/foundation/retracts-of-types.lagda.md +++ b/src/foundation/retracts-of-types.lagda.md @@ -16,7 +16,7 @@ open import foundation-core.identity-types open import foundation-core.precomposition-functions open import foundation-core.retractions open import foundation-core.sections -open import foundation-core.whiskering-homotopies +open import foundation-core.whiskering-homotopies-composition ``` diff --git a/src/foundation/sections.lagda.md b/src/foundation/sections.lagda.md index 86de6b12bb..2d7600f4af 100644 --- a/src/foundation/sections.lagda.md +++ b/src/foundation/sections.lagda.md @@ -26,7 +26,7 @@ open import foundation-core.homotopies open import foundation-core.identity-types open import foundation-core.injective-maps open import foundation-core.type-theoretic-principle-of-choice -open import foundation-core.whiskering-homotopies +open import foundation-core.whiskering-homotopies-composition ``` diff --git a/src/foundation/set-quotients.lagda.md b/src/foundation/set-quotients.lagda.md index a28d65e8ea..86700ca61a 100644 --- a/src/foundation/set-quotients.lagda.md +++ b/src/foundation/set-quotients.lagda.md @@ -32,7 +32,7 @@ open import foundation-core.homotopies open import foundation-core.propositions open import foundation-core.small-types open import foundation-core.subtypes -open import foundation-core.whiskering-homotopies +open import foundation-core.whiskering-homotopies-composition ``` diff --git a/src/foundation/slice.lagda.md b/src/foundation/slice.lagda.md index bfaefa890d..0456a11b13 100644 --- a/src/foundation/slice.lagda.md +++ b/src/foundation/slice.lagda.md @@ -31,7 +31,7 @@ open import foundation-core.propositional-maps open import foundation-core.propositions open import foundation-core.torsorial-type-families open import foundation-core.type-theoretic-principle-of-choice -open import foundation-core.whiskering-homotopies +open import foundation-core.whiskering-homotopies-composition open import trees.polynomial-endofunctors ``` diff --git a/src/foundation/transport-along-higher-identifications.lagda.md b/src/foundation/transport-along-higher-identifications.lagda.md index 0d5c94ff08..10ac2fe30c 100644 --- a/src/foundation/transport-along-higher-identifications.lagda.md +++ b/src/foundation/transport-along-higher-identifications.lagda.md @@ -11,11 +11,11 @@ open import foundation.action-on-identifications-functions open import foundation.commuting-squares-of-identifications open import foundation.homotopies open import foundation.universe-levels -open import foundation.whiskering-identifications +open import foundation.whiskering-identifications-concatenation open import foundation-core.identity-types open import foundation-core.transport-along-identifications -open import foundation-core.whiskering-homotopies +open import foundation-core.whiskering-homotopies-composition ``` @@ -51,7 +51,7 @@ module _ coherence-square-identifications ( tr-Id-right q p) ( tr² (Id a) α p) - ( left-whisker-identification p α) + ( left-whisker-concat p α) ( tr-Id-right q' p) tr²-Id-right α p = inv-nat-htpy (λ (t : b = c) → tr-Id-right t p) α @@ -79,8 +79,8 @@ module _ (p : x = y) {q q' : y = z} (β : q = q') (b : B x) → coherence-square-identifications ( tr-concat p q b) - ( tr² B (left-whisker-identification p β) b) - ( right-whisker-htpy (tr² B β) (tr B p) b) + ( tr² B (left-whisker-concat p β) b) + ( right-whisker-comp (tr² B β) (tr B p) b) ( tr-concat p q' b) tr²-left-whisker refl refl b = refl @@ -88,8 +88,8 @@ module _ {p p' : x = y} (α : p = p') (q : y = z) (b : B x) → coherence-square-identifications ( tr-concat p q b) - ( tr² B (right-whisker-identification α q) b) - ( left-whisker-htpy (tr B q) (tr² B α) b) + ( tr² B (right-whisker-concat α q) b) + ( left-whisker-comp (tr B q) (tr² B α) b) ( tr-concat p' q b) tr²-right-whisker refl refl b = inv right-unit ``` @@ -105,41 +105,41 @@ module _ tr³-htpy-swap-path-swap : {q q' : y = z} (β : q = q') {p p' : x = y} (α : p = p') (b : B x) → coherence-square-identifications - ( ( right-whisker-identification - ( tr²-concat (left-whisker-identification p β) - ( right-whisker-identification α q') b) + ( ( right-whisker-concat + ( tr²-concat (left-whisker-concat p β) + ( right-whisker-concat α q') b) ( tr-concat p' q' b)) ∙ ( vertical-pasting-coherence-square-identifications ( tr-concat p q b) - ( tr² B (left-whisker-identification p β) b) - ( right-whisker-htpy (tr² B β) (tr B p) b) + ( tr² B (left-whisker-concat p β) b) + ( right-whisker-comp (tr² B β) (tr B p) b) ( tr-concat p q' b) - ( tr² B (right-whisker-identification α q') b) - ( left-whisker-htpy (tr B q') (tr² B α) b) + ( tr² B (right-whisker-concat α q') b) + ( left-whisker-comp (tr B q') (tr² B α) b) ( tr-concat p' q' b) ( tr²-left-whisker p β b) ( tr²-right-whisker α q' b))) - ( right-whisker-identification + ( right-whisker-concat ( tr³ ( B) - ( commutative-left-whisker-right-whisker-identification β α) + ( commutative-left-whisker-right-whisker-concat β α) ( b)) ( tr-concat p' q' b)) - ( left-whisker-identification + ( left-whisker-concat ( tr-concat p q b) ( htpy-swap-nat-right-htpy (tr² B β) (tr² B α) b)) - ( ( right-whisker-identification + ( ( right-whisker-concat ( tr²-concat - ( right-whisker-identification α q) - ( left-whisker-identification p' β) b) + ( right-whisker-concat α q) + ( left-whisker-concat p' β) b) ( tr-concat p' q' b)) ∙ ( vertical-pasting-coherence-square-identifications ( tr-concat p q b) - ( tr² B (right-whisker-identification α q) b) - ( left-whisker-htpy (tr B q) (tr² B α) b) + ( tr² B (right-whisker-concat α q) b) + ( left-whisker-comp (tr B q) (tr² B α) b) ( tr-concat p' q b) - ( tr² B (left-whisker-identification p' β) b) - ( right-whisker-htpy (tr² B β) (tr B p') b) + ( tr² B (left-whisker-concat p' β) b) + ( right-whisker-comp (tr² B β) (tr B p') b) ( tr-concat p' q' b) ( tr²-right-whisker α q b) ( tr²-left-whisker p' β b))) diff --git a/src/foundation/truncations.lagda.md b/src/foundation/truncations.lagda.md index 66b95a3d55..e67256c102 100644 --- a/src/foundation/truncations.lagda.md +++ b/src/foundation/truncations.lagda.md @@ -29,7 +29,7 @@ open import foundation-core.propositions open import foundation-core.torsorial-type-families open import foundation-core.truncation-levels open import foundation-core.universal-property-truncation -open import foundation-core.whiskering-homotopies +open import foundation-core.whiskering-homotopies-composition ``` diff --git a/src/foundation/uniqueness-image.lagda.md b/src/foundation/uniqueness-image.lagda.md index 424eaaadbe..b222ae86a2 100644 --- a/src/foundation/uniqueness-image.lagda.md +++ b/src/foundation/uniqueness-image.lagda.md @@ -22,7 +22,7 @@ open import foundation-core.function-types open import foundation-core.functoriality-dependent-pair-types open import foundation-core.homotopies open import foundation-core.propositions -open import foundation-core.whiskering-homotopies +open import foundation-core.whiskering-homotopies-composition ``` diff --git a/src/foundation/uniqueness-set-quotients.lagda.md b/src/foundation/uniqueness-set-quotients.lagda.md index 485cfcc19a..9af8f792f6 100644 --- a/src/foundation/uniqueness-set-quotients.lagda.md +++ b/src/foundation/uniqueness-set-quotients.lagda.md @@ -25,7 +25,7 @@ open import foundation-core.homotopies open import foundation-core.identity-types open import foundation-core.injective-maps open import foundation-core.precomposition-functions -open import foundation-core.whiskering-homotopies +open import foundation-core.whiskering-homotopies-composition ``` diff --git a/src/foundation/unital-binary-operations.lagda.md b/src/foundation/unital-binary-operations.lagda.md index 4382d38090..2793293631 100644 --- a/src/foundation/unital-binary-operations.lagda.md +++ b/src/foundation/unital-binary-operations.lagda.md @@ -10,12 +10,12 @@ module foundation.unital-binary-operations where open import foundation.action-on-identifications-functions open import foundation.dependent-pair-types open import foundation.universe-levels -open import foundation.whiskering-identifications +open import foundation.whiskering-identifications-concatenation open import foundation-core.cartesian-product-types open import foundation-core.homotopies open import foundation-core.identity-types -open import foundation-core.whiskering-homotopies +open import foundation-core.whiskering-homotopies-composition ``` @@ -86,7 +86,7 @@ module _ ( H e) ( (ap (μ e) (H e)) ∙ (K e)) ( ( inv-nat-htpy-id (H) (K e)) ∙ - ( right-whisker-identification (coh-htpy-id (H) e) (K e))) + ( right-whisker-concat (coh-htpy-id (H) e) (K e))) module _ {l : Level} {A : UU l} {μ : A → A → A} diff --git a/src/foundation/universal-property-image.lagda.md b/src/foundation/universal-property-image.lagda.md index 2e78eabebf..09c68b2fd9 100644 --- a/src/foundation/universal-property-image.lagda.md +++ b/src/foundation/universal-property-image.lagda.md @@ -32,7 +32,7 @@ open import foundation-core.propositional-maps open import foundation-core.propositions open import foundation-core.sections open import foundation-core.subtypes -open import foundation-core.whiskering-homotopies +open import foundation-core.whiskering-homotopies-composition ``` diff --git a/src/foundation/universal-property-set-quotients.lagda.md b/src/foundation/universal-property-set-quotients.lagda.md index 6e2f0cc0ab..cc041bfc9a 100644 --- a/src/foundation/universal-property-set-quotients.lagda.md +++ b/src/foundation/universal-property-set-quotients.lagda.md @@ -50,7 +50,7 @@ open import foundation-core.subtypes open import foundation-core.torsorial-type-families open import foundation-core.type-theoretic-principle-of-choice open import foundation-core.univalence -open import foundation-core.whiskering-homotopies +open import foundation-core.whiskering-homotopies-composition ``` diff --git a/src/foundation/unordered-pairs.lagda.md b/src/foundation/unordered-pairs.lagda.md index a02c98b104..b981d8c78e 100644 --- a/src/foundation/unordered-pairs.lagda.md +++ b/src/foundation/unordered-pairs.lagda.md @@ -39,7 +39,7 @@ open import foundation-core.precomposition-dependent-functions open import foundation-core.propositions open import foundation-core.sets open import foundation-core.torsorial-type-families -open import foundation-core.whiskering-homotopies +open import foundation-core.whiskering-homotopies-composition open import univalent-combinatorics.2-element-types open import univalent-combinatorics.equality-standard-finite-types diff --git a/src/foundation/unordered-tuples.lagda.md b/src/foundation/unordered-tuples.lagda.md index 08044de61b..94b1125334 100644 --- a/src/foundation/unordered-tuples.lagda.md +++ b/src/foundation/unordered-tuples.lagda.md @@ -24,7 +24,7 @@ open import foundation-core.homotopies open import foundation-core.identity-types open import foundation-core.sets open import foundation-core.torsorial-type-families -open import foundation-core.whiskering-homotopies +open import foundation-core.whiskering-homotopies-composition open import univalent-combinatorics.complements-isolated-elements open import univalent-combinatorics.equality-finite-types diff --git a/src/foundation/whiskering-higher-homotopies.lagda.md b/src/foundation/whiskering-higher-homotopies-composition.lagda.md similarity index 81% rename from src/foundation/whiskering-higher-homotopies.lagda.md rename to src/foundation/whiskering-higher-homotopies-composition.lagda.md index 359507da3c..07af6540c4 100644 --- a/src/foundation/whiskering-higher-homotopies.lagda.md +++ b/src/foundation/whiskering-higher-homotopies-composition.lagda.md @@ -1,7 +1,7 @@ -# Whiskering higher homotopies +# Whiskering higher homotopies with respect to composition ```agda -module foundation.whiskering-higher-homotopies where +module foundation.whiskering-higher-homotopies-composition where ```
Imports @@ -11,7 +11,7 @@ open import foundation.action-on-identifications-functions open import foundation.universe-levels open import foundation-core.homotopies -open import foundation-core.whiskering-homotopies +open import foundation-core.whiskering-homotopies-composition ```
@@ -46,9 +46,9 @@ module _ {f g : (x : A) → B x} where - left-whisker-htpy² : + left-whisker-comp² : (h : {x : A} → B x → C x) {H H' : f ~ g} (α : H ~ H') → h ·l H ~ h ·l H' - left-whisker-htpy² h α = ap h ·l α + left-whisker-comp² h α = ap h ·l α ``` ### Right whiskering higher homotopies @@ -59,7 +59,7 @@ module _ {f g : {x : A} (y : B x) → C x y} {H H' : {x : A} → f {x} ~ g {x}} where - right-whisker-htpy² : + right-whisker-comp² : (α : {x : A} → H {x} ~ H' {x}) (h : (x : A) → B x) → H ·r h ~ H' ·r h - right-whisker-htpy² α h = α ·r h + right-whisker-comp² α h = α ·r h ``` diff --git a/src/foundation/whiskering-homotopies.lagda.md b/src/foundation/whiskering-homotopies-composition.lagda.md similarity index 95% rename from src/foundation/whiskering-homotopies.lagda.md rename to src/foundation/whiskering-homotopies-composition.lagda.md index 68fa29e8f1..14adcae27c 100644 --- a/src/foundation/whiskering-homotopies.lagda.md +++ b/src/foundation/whiskering-homotopies-composition.lagda.md @@ -1,9 +1,9 @@ -# Whiskering homotopies +# Whiskering homotopies with respect to composition ```agda -module foundation.whiskering-homotopies where +module foundation.whiskering-homotopies-composition where -open import foundation-core.whiskering-homotopies public +open import foundation-core.whiskering-homotopies-composition public ```
Imports @@ -15,7 +15,7 @@ open import foundation.commuting-squares-of-identifications open import foundation.homotopy-induction open import foundation.path-algebra open import foundation.universe-levels -open import foundation.whiskering-identifications +open import foundation.whiskering-identifications-concatenation open import foundation-core.equivalences open import foundation-core.function-extensionality @@ -42,8 +42,8 @@ assumes a diagram of the form g ``` -and is defined to be a function `H ↦ h ·l H : (f ~ g) → (h ∘ f ~ h ∘ g)`. The **right -whiskering** operation assumes a diagram of the form +and is defined to be a function `H ↦ h ·l H : (f ~ g) → (h ∘ f ~ h ∘ g)`. The +**right whiskering** operation assumes a diagram of the form ```text g @@ -77,10 +77,10 @@ module _ compute-eq-htpy-htpy-eq-right-whisker refl = eq-htpy-refl-htpy (f ∘ h) - compute-eq-right-whisker-htpy : + compute-eq-right-whisker-comp : ( H : f ~ g) → eq-htpy (H ·r h) = ap (precomp h C) (eq-htpy H) - compute-eq-right-whisker-htpy H = + compute-eq-right-whisker-comp H = ( ap ( λ K → eq-htpy (K ·r h)) ( inv (is-section-eq-htpy H))) ∙ @@ -98,10 +98,10 @@ module _ compute-eq-htpy-htpy-eq-left-whisker refl = eq-htpy-refl-htpy (h ∘ f) - compute-eq-left-whisker-htpy : + compute-eq-left-whisker-comp : (H : f ~ g) → eq-htpy (h ·l H) = ap (postcomp A h) (eq-htpy H) - compute-eq-left-whisker-htpy H = + compute-eq-left-whisker-comp H = ( ap ( λ K → eq-htpy (h ·l K)) ( inv (is-section-eq-htpy H))) ∙ diff --git a/src/foundation/whiskering-identifications.lagda.md b/src/foundation/whiskering-identifications-concatenation.lagda.md similarity index 61% rename from src/foundation/whiskering-identifications.lagda.md rename to src/foundation/whiskering-identifications-concatenation.lagda.md index bc91c97254..5a126cefb2 100644 --- a/src/foundation/whiskering-identifications.lagda.md +++ b/src/foundation/whiskering-identifications-concatenation.lagda.md @@ -1,7 +1,7 @@ -# Whiskering identifications +# Whiskering identifications with respect to concatenation ```agda -module foundation.whiskering-identifications where +module foundation.whiskering-identifications-concatenation where ```
Imports @@ -27,10 +27,10 @@ identifications `p = q` to identifications `r ∙ p = r ∙ q` or to identifications `p ∙ r = q ∙ r`. The -{{#concept "left whiskering" Disambiguation="identifcations" Agda=left-whisker-identification"}} +{{#concept "left whiskering" Disambiguation="identifcations" 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-identification"}} +{{#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`. @@ -49,9 +49,9 @@ module _ {l : Level} {A : UU l} {x y z : A} where - left-whisker-identification : + left-whisker-concat : (p : x = y) {q q' : y = z} → q = q' → (p ∙ q) = (p ∙ q') - left-whisker-identification p β = ap (p ∙_) β + left-whisker-concat p β = ap (p ∙_) β ``` ### Right whiskering of identifications @@ -61,9 +61,9 @@ module _ {l : Level} {A : UU l} {x y z : A} where - right-whisker-identification : + right-whisker-concat : {p p' : x = y} → p = p' → (q : y = z) → (p ∙ q) = (p' ∙ q) - right-whisker-identification α q = ap (_∙ q) α + right-whisker-concat α q = ap (_∙ q) α ``` ## Properties @@ -75,16 +75,16 @@ module _ {l : Level} {A : UU l} {x y z : A} (p : x = y) {q q' : y = z} where - is-equiv-left-whisker-identification : - is-equiv (left-whisker-identification p {q} {q'}) - is-equiv-left-whisker-identification = + 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-identification : (q = q') ≃ (p ∙ q = p ∙ q') - pr1 equiv-left-whisker-identification = - left-whisker-identification p - pr2 equiv-left-whisker-identification = - is-equiv-left-whisker-identification + 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 @@ -94,16 +94,16 @@ module _ {l : Level} {A : UU l} {x y z : A} {p p' : x = y} (q : y = z) where - is-equiv-right-whisker-identification : - is-equiv (λ (α : p = p') → right-whisker-identification α q) - is-equiv-right-whisker-identification = + 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-identification : (p = p') ≃ (p ∙ q = p' ∙ q) - pr1 equiv-right-whisker-identification α = - right-whisker-identification α q - pr2 equiv-right-whisker-identification = - is-equiv-right-whisker-identification + 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 ``` ### The unit and absorption laws for left whiskering of identifications @@ -113,15 +113,15 @@ module _ {l : Level} {A : UU l} where - left-unit-law-left-whisker-identification : + left-unit-law-left-whisker-concat : {x y : A} {p p' : x = y} (α : p = p') → - left-whisker-identification refl α = α - left-unit-law-left-whisker-identification refl = refl + left-whisker-concat refl α = α + left-unit-law-left-whisker-concat refl = refl - right-absorption-law-left-whisker-identification : + right-absorption-law-left-whisker-concat : {x y z : A} (p : x = y) (q : y = z) → - left-whisker-identification p (refl {x = q}) = refl - right-absorption-law-left-whisker-identification p q = refl + left-whisker-concat p (refl {x = q}) = refl + right-absorption-law-left-whisker-concat p q = refl ``` ### The unit and absorption laws for right whiskering of identifications @@ -131,16 +131,16 @@ module _ {l : Level} {A : UU l} where - right-unit-law-right-whisker-identification : + right-unit-law-right-whisker-concat : {x y : A} {p p' : x = y} (α : p = p') → - right-whisker-identification α refl = + right-whisker-concat α refl = right-unit ∙ α ∙ inv right-unit - right-unit-law-right-whisker-identification {p = refl} refl = refl + right-unit-law-right-whisker-concat {p = refl} refl = refl - left-absorption-law-right-whisker-identification : + left-absorption-law-right-whisker-concat : {x y z : A} (p : x = y) (q : y = z) → - right-whisker-identification (refl {x = p}) q = refl - left-absorption-law-right-whisker-identification p q = refl + right-whisker-concat (refl {x = p}) q = refl + left-absorption-law-right-whisker-concat p q = refl ``` ### Commutativity of left and right whiskering of identifications @@ -162,9 +162,9 @@ commutes. There are at least two natural ways in which this square is seen to commute: 1. The square commutes by naturality of the homotopy - `α ↦ left-whisker-identification α β`. + `α ↦ left-whisker-concat α β`. 2. The transposed square commutes by the naturality of the homotopy - `β ↦ right-whisker-identification α β`. + `β ↦ right-whisker-concat α β`. These two ways in which the square commutes are inverse to each other. @@ -178,25 +178,25 @@ module _ {l : Level} {A : UU l} {x y z : A} where - commutative-left-whisker-right-whisker-identification : + commutative-left-whisker-right-whisker-concat : {q q' : y = z} (β : q = q') {p p' : x = y} (α : p = p') → - left-whisker-identification p β ∙ right-whisker-identification α q' = - right-whisker-identification α q ∙ left-whisker-identification p' β - commutative-left-whisker-right-whisker-identification β = - nat-htpy (λ α → left-whisker-identification α β) + left-whisker-concat p β ∙ right-whisker-concat α q' = + right-whisker-concat α q ∙ left-whisker-concat p' β + commutative-left-whisker-right-whisker-concat β = + nat-htpy (λ α → left-whisker-concat α β) - commutative-right-whisker-left-whisker-identification : + commutative-right-whisker-left-whisker-concat : {p p' : x = y} (α : p = p') {q q' : y = z} (β : q = q') → - right-whisker-identification α q ∙ left-whisker-identification p' β = - left-whisker-identification p β ∙ right-whisker-identification α q' - commutative-right-whisker-left-whisker-identification α = - nat-htpy (right-whisker-identification α) + right-whisker-concat α q ∙ left-whisker-concat p' β = + left-whisker-concat p β ∙ right-whisker-concat α q' + commutative-right-whisker-left-whisker-concat α = + nat-htpy (right-whisker-concat α) - compute-inv-commutative-left-whisker-right-whisker-identification : + compute-inv-commutative-left-whisker-right-whisker-concat : {q q' : y = z} (β : q = q') {p p' : x = y} (α : p = p') → - inv (commutative-right-whisker-left-whisker-identification α β) = - commutative-left-whisker-right-whisker-identification β α - compute-inv-commutative-left-whisker-right-whisker-identification refl refl = + inv (commutative-right-whisker-left-whisker-concat α β) = + commutative-left-whisker-right-whisker-concat β α + compute-inv-commutative-left-whisker-right-whisker-concat refl refl = refl ``` @@ -222,8 +222,8 @@ module _ {l : Level} {A : UU l} {x y : A} {p q : x = y} where - compute-refl-right-whisker-identification : + compute-refl-right-whisker-concat : (r : p = q) → - right-unit ∙ r = right-whisker-identification r refl ∙ right-unit - compute-refl-right-whisker-identification refl = right-unit + right-unit ∙ r = right-whisker-concat r refl ∙ right-unit + compute-refl-right-whisker-concat refl = right-unit ``` diff --git a/src/foundation/whiskering-operations.lagda.md b/src/foundation/whiskering-operations.lagda.md index 2f5dd50700..b9a5d92a59 100644 --- a/src/foundation/whiskering-operations.lagda.md +++ b/src/foundation/whiskering-operations.lagda.md @@ -14,56 +14,103 @@ open import foundation.universe-levels ## Idea -Consider a type `A` with a [binary relation](foundation.binary-relations.md) `R : A → A → 𝒰`, which comes equipped with a multiplicative operation +Consider a type `A` with a [binary relation](foundation.binary-relations.md) +`R : A → A → 𝒰`, which comes equipped with a multiplicative operation ```text μ : (x y z : A) → R x y → R y z → R x z. ``` -Furthermore, assume that each `R x y` comes equipped with a further binary relation `E : R x y → R x y → 𝒰`. A {{#concept "left whiskering operation" Agda=whiskering}} on `E` with respect to `μ` is an operation +Furthermore, assume that each `R x y` comes equipped with a further binary +relation `E : R x y → R x y → 𝒰`. A +{{#concept "left whiskering operation" Agda=whiskering}} on `E` with respect to +`μ` is an operation ```text (f : R x y) {g h : R y z} → E g h → E (μ f g) (μ f h). ``` -Similarly, a {{#concept "right whiskering operation" Agda=right-whiskering}} on `E` with respect to `μ` is an operation +Similarly, a {{#concept "right whiskering operation" Agda=right-whiskering}} on +`E` with respect to `μ` is an operation ```text {g h : R x y} → E g h → (f : R y z) → E (μ g f) (μ h f). ``` -The general notion of whiskering is introduced in order to establish a clear naming scheme for all the variations of whiskering that exist in the `agda-unimath` library: +The general notion of whiskering is introduced in order to establish a clear +naming scheme for all the variations of whiskering that exist in the +`agda-unimath` library: -1. In [whiskering identifications with respect to concatenation](foundation.whiskering-identifications-concatenation.md) we define a whiskering operation +1. In + [whiskering identifications with respect to concatenation](foundation.whiskering-identifications-concatenation.md) + we define the whiskering operations ```text - (p : x = y) {q r : y = z} → q = r → p ∙ q = p ∙ r + left-whisker-concat : + (p : x = y) {q r : y = z} → q = r → p ∙ q = p ∙ r ``` - + + and + + ```text + right-whisker-concat : + {p q : x = y} → p = q → (r : y = z) → p ∙ r = q ∙ r + ``` + with respect to concatenation of identifications. - -2. In [whiskering homotopies with respect to composition](foundation.whiskering-homotopies-composition.md) we define a whiskering operation + +2. In + [whiskering homotopies with respect to composition](foundation.whiskering-homotopies-composition.md) + we define the whiskering operations ```text - (f : B → C) {g h : A → B} → g ~ h → f ∘ g ~ f ∘ h + left-whisker-comp : + (f : B → C) {g h : A → B} → g ~ h → f ∘ g ~ f ∘ h + ``` + + and + + ```text + right-whisker-comp : + {f g : B → C} → (f ~ g) → (h : A → B) → f ∘ h ~ g ∘ h ``` of homotopies with respect to composition of functions. - -3. In [whiskering homotopies with respect to concatenation](foundation.whiskering-homotopies-concatenation.md) we define a whiskering operation - + +3. In + [whiskering homotopies with respect to concatenation](foundation.whiskering-homotopies-composition-concatenation.md) + we define the whiskering operations + ```text - (H : f ~ g) {K L : g ~ h} → K ~ L → H ∙h K ~ H ∙h L + left-whisker-concat-htpy : + (H : f ~ g) {K L : g ~ h} → K ~ L → H ∙h K ~ H ∙h L ``` - + + and + + ```text + right-whisker-concat-htpy : + {H K : f ~ g} → H ~ K → (L : g ~ h) → H ∙h L ~ K ∙h L + ``` + of homotopies with respect to concatenation of homotopies. - -4. In [whsikering higher homotopies with respect to composition](foundation.whiskering-higher-homotopies-composition.md) we define a whiskering operation + +4. In + [whsikering higher homotopies with respect to composition](foundation.whiskering-higher-homotopies-composition.md) + we define the whiskering operations ```text - (f : B → C) {g h : A → B} {H K : g ~ h} → H ~ K → f ·l H ~ f ·l K + left-whisker-comp² : + (f : B → C) {g h : A → B} {H K : g ~ h} → H ~ K → f ·l H ~ f ·l K ``` - + + and + + ```text + rigth-whisker-comp² : + {f g : B → C} {H K : f ~ g} → H ~ K → (h : A → B) → H ·r h ~ K ·r h + ``` + of higher homotopies with respect to composition of functions. ## Definitions @@ -73,7 +120,7 @@ The general notion of whiskering is introduced in order to establish a clear nam ```agda module _ {l1 l2 l3 : Level} {A : UU l1} {R : A → A → UU l2} - + where left-whiskering-operation : diff --git a/src/group-theory/abelianization-groups.lagda.md b/src/group-theory/abelianization-groups.lagda.md index b32815303f..777127d7e1 100644 --- a/src/group-theory/abelianization-groups.lagda.md +++ b/src/group-theory/abelianization-groups.lagda.md @@ -24,7 +24,7 @@ open import foundation.identity-types open import foundation.set-quotients open import foundation.sets open import foundation.universe-levels -open import foundation.whiskering-homotopies +open import foundation.whiskering-homotopies-composition open import group-theory.abelian-groups open import group-theory.category-of-abelian-groups diff --git a/src/linear-algebra/functoriality-vectors.lagda.md b/src/linear-algebra/functoriality-vectors.lagda.md index 86333bca37..92dfaa93f4 100644 --- a/src/linear-algebra/functoriality-vectors.lagda.md +++ b/src/linear-algebra/functoriality-vectors.lagda.md @@ -17,7 +17,7 @@ open import foundation.homotopies open import foundation.identity-types open import foundation.postcomposition-functions open import foundation.universe-levels -open import foundation.whiskering-homotopies +open import foundation.whiskering-homotopies-composition open import linear-algebra.vectors diff --git a/src/linear-algebra/vectors.lagda.md b/src/linear-algebra/vectors.lagda.md index da98df6636..9328a6b5bd 100644 --- a/src/linear-algebra/vectors.lagda.md +++ b/src/linear-algebra/vectors.lagda.md @@ -26,7 +26,7 @@ open import foundation.truncated-types open import foundation.truncation-levels open import foundation.unit-type open import foundation.universe-levels -open import foundation.whiskering-higher-homotopies +open import foundation.whiskering-higher-homotopies-composition open import univalent-combinatorics.involution-standard-finite-types open import univalent-combinatorics.standard-finite-types @@ -179,7 +179,7 @@ module _ (p : u = v) → eq-Eq-vec n u v (Eq-eq-vec n u v p) = p is-retraction-eq-Eq-vec zero-ℕ empty-vec empty-vec refl = refl is-retraction-eq-Eq-vec (succ-ℕ n) (x ∷ xs) .(x ∷ xs) refl = - left-whisker-htpy² (x ∷_) (is-retraction-eq-Eq-vec n xs xs) refl + left-whisker-comp² (x ∷_) (is-retraction-eq-Eq-vec n xs xs) refl square-Eq-eq-vec : (n : ℕ) (x : A) (u v : vec A n) (p : Id u v) → diff --git a/src/lists/universal-property-lists-wild-monoids.lagda.md b/src/lists/universal-property-lists-wild-monoids.lagda.md index b7952e586a..9192fc3733 100644 --- a/src/lists/universal-property-lists-wild-monoids.lagda.md +++ b/src/lists/universal-property-lists-wild-monoids.lagda.md @@ -12,7 +12,7 @@ open import foundation.dependent-pair-types open import foundation.identity-types open import foundation.unit-type open import foundation.universe-levels -open import foundation.whiskering-higher-homotopies +open import foundation.whiskering-higher-homotopies-composition open import group-theory.homomorphisms-semigroups @@ -76,7 +76,7 @@ unit-law-101-associative-concat-list (cons x l) z = ( cons x) ( associative-concat-list l nil z) ( ap (concat-list l) (left-unit-law-concat-list z)))) ∙ - ( left-whisker-htpy² + ( left-whisker-comp² ( cons x) ( unit-law-101-associative-concat-list l) ( z))) ∙ @@ -103,7 +103,7 @@ unit-law-110-associative-concat-list (cons a x) y = ( cons a) ( associative-concat-list x y nil) ( ap (concat-list x) (right-unit-law-concat-list y)))) ∙ - ( left-whisker-htpy² + ( left-whisker-comp² ( cons a) ( unit-law-110-associative-concat-list x) ( y))) @@ -337,6 +337,6 @@ htpy-elim-list-Wild-Monoid {X = X} M g h H = γ : Id (pr2 g) (α nil ∙ pr2 h) γ = ( inv right-unit) ∙ - ( ( left-whisker-identification (pr2 g) (inv (left-inv (pr2 h)))) ∙ + ( ( left-whisker-concat (pr2 g) (inv (left-inv (pr2 h)))) ∙ ( inv (assoc (pr2 g) (inv (pr2 h)) (pr2 h)))) ``` diff --git a/src/orthogonal-factorization-systems/extensions-of-maps.lagda.md b/src/orthogonal-factorization-systems/extensions-of-maps.lagda.md index 8719be817a..440844254f 100644 --- a/src/orthogonal-factorization-systems/extensions-of-maps.lagda.md +++ b/src/orthogonal-factorization-systems/extensions-of-maps.lagda.md @@ -34,7 +34,7 @@ open import foundation.truncated-types open import foundation.truncation-levels open import foundation.type-arithmetic-dependent-pair-types open import foundation.universe-levels -open import foundation.whiskering-homotopies +open import foundation.whiskering-homotopies-composition open import foundation-core.torsorial-type-families diff --git a/src/orthogonal-factorization-systems/factorization-operations-function-classes.lagda.md b/src/orthogonal-factorization-systems/factorization-operations-function-classes.lagda.md index 94af58352c..0f77d93556 100644 --- a/src/orthogonal-factorization-systems/factorization-operations-function-classes.lagda.md +++ b/src/orthogonal-factorization-systems/factorization-operations-function-classes.lagda.md @@ -25,7 +25,7 @@ open import foundation.subtypes open import foundation.type-arithmetic-cartesian-product-types open import foundation.type-arithmetic-dependent-pair-types open import foundation.universe-levels -open import foundation.whiskering-homotopies +open import foundation.whiskering-homotopies-composition open import orthogonal-factorization-systems.factorizations-of-maps open import orthogonal-factorization-systems.factorizations-of-maps-function-classes diff --git a/src/orthogonal-factorization-systems/factorizations-of-maps-function-classes.lagda.md b/src/orthogonal-factorization-systems/factorizations-of-maps-function-classes.lagda.md index 0eeea6fbda..0a65bb2a43 100644 --- a/src/orthogonal-factorization-systems/factorizations-of-maps-function-classes.lagda.md +++ b/src/orthogonal-factorization-systems/factorizations-of-maps-function-classes.lagda.md @@ -25,7 +25,7 @@ open import foundation.subtype-identity-principle open import foundation.torsorial-type-families open import foundation.univalence open import foundation.universe-levels -open import foundation.whiskering-homotopies +open import foundation.whiskering-homotopies-composition open import orthogonal-factorization-systems.factorizations-of-maps open import orthogonal-factorization-systems.function-classes diff --git a/src/orthogonal-factorization-systems/factorizations-of-maps-global-function-classes.lagda.md b/src/orthogonal-factorization-systems/factorizations-of-maps-global-function-classes.lagda.md index 8dad20c3ba..d3c3e3b691 100644 --- a/src/orthogonal-factorization-systems/factorizations-of-maps-global-function-classes.lagda.md +++ b/src/orthogonal-factorization-systems/factorizations-of-maps-global-function-classes.lagda.md @@ -24,7 +24,7 @@ open import foundation.structure-identity-principle open import foundation.torsorial-type-families open import foundation.univalence open import foundation.universe-levels -open import foundation.whiskering-homotopies +open import foundation.whiskering-homotopies-composition open import orthogonal-factorization-systems.factorizations-of-maps open import orthogonal-factorization-systems.factorizations-of-maps-function-classes diff --git a/src/orthogonal-factorization-systems/factorizations-of-maps.lagda.md b/src/orthogonal-factorization-systems/factorizations-of-maps.lagda.md index 4cde80c885..94c813b263 100644 --- a/src/orthogonal-factorization-systems/factorizations-of-maps.lagda.md +++ b/src/orthogonal-factorization-systems/factorizations-of-maps.lagda.md @@ -19,7 +19,7 @@ open import foundation.structure-identity-principle open import foundation.torsorial-type-families open import foundation.univalence open import foundation.universe-levels -open import foundation.whiskering-homotopies +open import foundation.whiskering-homotopies-composition ```
diff --git a/src/orthogonal-factorization-systems/functoriality-higher-modalities.lagda.md b/src/orthogonal-factorization-systems/functoriality-higher-modalities.lagda.md index 13a3b472ff..de1aea3a8f 100644 --- a/src/orthogonal-factorization-systems/functoriality-higher-modalities.lagda.md +++ b/src/orthogonal-factorization-systems/functoriality-higher-modalities.lagda.md @@ -18,7 +18,7 @@ open import foundation.small-types open import foundation.transport-along-identifications open import foundation.univalence open import foundation.universe-levels -open import foundation.whiskering-identifications +open import foundation.whiskering-identifications-concatenation open import orthogonal-factorization-systems.higher-modalities open import orthogonal-factorization-systems.modal-induction @@ -146,7 +146,7 @@ module _ ( naturality-unit-higher-modality m f x)) ∙ ( naturality-unit-higher-modality m g (f x))) compute-naturality-unit-ind-modality g f x = - ( right-whisker-identification + ( right-whisker-concat ( compute-ind-subuniverse-Id-higher-modality m ( ap-map-higher-modality m g ∘ ap-map-higher-modality m f) ( ap-map-higher-modality m (g ∘ f)) @@ -161,7 +161,7 @@ module _ ( inv ( compute-rec-higher-modality m (unit-higher-modality m ∘ g ∘ f) x))) ( compute-rec-higher-modality m (unit-higher-modality m ∘ g ∘ f) x)) ∙ - ( left-whisker-identification + ( left-whisker-concat ( ap ( ap-map-higher-modality m g) ( compute-rec-higher-modality m (unit-higher-modality m ∘ f) x)) diff --git a/src/orthogonal-factorization-systems/lifting-squares.lagda.md b/src/orthogonal-factorization-systems/lifting-squares.lagda.md index 0ebfe2be24..f67ebcd933 100644 --- a/src/orthogonal-factorization-systems/lifting-squares.lagda.md +++ b/src/orthogonal-factorization-systems/lifting-squares.lagda.md @@ -19,8 +19,8 @@ open import foundation.homotopies open import foundation.identity-types open import foundation.path-algebra open import foundation.universe-levels -open import foundation.whiskering-homotopies -open import foundation.whiskering-identifications +open import foundation.whiskering-homotopies-composition +open import foundation.whiskering-identifications-concatenation open import orthogonal-factorization-systems.extensions-of-maps open import orthogonal-factorization-systems.lifts-of-maps @@ -131,7 +131,7 @@ module _ ### Characterization of identifications of lifting squares -```agda +````agda module _ {l1 l2 l3 l4 : Level} {A : UU l1} {B : UU l2} {X : UU l3} {Y : UU l4} @@ -189,12 +189,12 @@ module _ -- pr1 (pr2 (pr2 (refl-htpy-lifting-square l))) = inv-htpy-right-unit-htpy -- pr2 (pr2 (pr2 (refl-htpy-lifting-square l))) x = -- ( inv (assoc (inv right-unit) (β) (α))) ∙ --- ( ( right-whisker-identification --- ( ( left-whisker-identification +-- ( ( right-whisker-concat +-- ( ( left-whisker-concat -- ( inv right-unit) -- ( ( right-transpose-eq-concat _ _ _ -- ( inv --- ( compute-refl-right-whisker-identification +-- ( compute-refl-right-whisker-concat -- ( coherence-lifting-square l x)))) ∙ -- ( assoc -- ( right-unit) @@ -205,35 +205,35 @@ module _ -- ( coherence-lifting-square l x ∙ inv right-unit))) -- ( α)) ∙ -- ( ( assoc (coherence-lifting-square l x) (inv right-unit) (α)) ∙ --- ( ( left-whisker-identification +-- ( ( left-whisker-concat -- ( coherence-lifting-square l x) --- ( ( left-whisker-identification +-- ( ( left-whisker-concat -- ( inv right-unit) -- ( right-unit-law-assoc -- ( H x) -- ( ap g (is-extension-lifting-square l x)))) ∙ -- ( ( is-retraction-inv-concat -- ( right-unit) --- ( left-whisker-identification (H x) (inv right-unit))) ∙ +-- ( left-whisker-concat (H x) (inv right-unit))) ∙ -- ( inv -- ( is-section-inv-concat' α --- ( left-whisker-identification (H x) (inv right-unit))))))) ∙ +-- ( left-whisker-concat (H x) (inv right-unit))))))) ∙ -- ( ( inv -- ( assoc -- ( coherence-lifting-square l x) --- ( left-whisker-identification (H x) (inv right-unit) ∙ inv α) +-- ( left-whisker-concat (H x) (inv right-unit) ∙ inv α) -- ( α))) ∙ -- ( ap -- ( λ r → -- ( ( coherence-lifting-square l x) ∙ --- ( left-whisker-identification (H x) r ∙ inv α)) ∙ +-- ( left-whisker-concat (H x) r ∙ inv α)) ∙ -- ( α)) -- ( compute-refl-right-map-coherence-triangle-identifications -- ( g) -- ( is-extension-lifting-square l x))))))) -- where -- α = assoc (H x) (ap g (is-extension-lifting-square l x)) refl --- β = right-whisker-identification (coherence-lifting-square l x) refl +-- β = right-whisker-concat (coherence-lifting-square l x) refl -- htpy-eq-lifting-square : -- (l l' : lifting-square h f g i H) → l = l' → htpy-lifting-square l l' @@ -300,3 +300,4 @@ module _ -- ( map-base-fibered-map f g h) -- ( is-map-over-map-total-fibered-map f g h) -- ``` +```` diff --git a/src/orthogonal-factorization-systems/lifts-of-maps.lagda.md b/src/orthogonal-factorization-systems/lifts-of-maps.lagda.md index 7cda519d05..a8cc6f74dc 100644 --- a/src/orthogonal-factorization-systems/lifts-of-maps.lagda.md +++ b/src/orthogonal-factorization-systems/lifts-of-maps.lagda.md @@ -25,7 +25,7 @@ open import foundation.truncated-types open import foundation.truncation-levels open import foundation.type-arithmetic-dependent-pair-types open import foundation.universe-levels -open import foundation.whiskering-homotopies +open import foundation.whiskering-homotopies-composition ```
diff --git a/src/orthogonal-factorization-systems/orthogonal-factorization-systems.lagda.md b/src/orthogonal-factorization-systems/orthogonal-factorization-systems.lagda.md index e0caf5b421..2081e4dc56 100644 --- a/src/orthogonal-factorization-systems/orthogonal-factorization-systems.lagda.md +++ b/src/orthogonal-factorization-systems/orthogonal-factorization-systems.lagda.md @@ -18,7 +18,7 @@ open import foundation.identity-types open import foundation.iterated-dependent-product-types open import foundation.propositions open import foundation.universe-levels -open import foundation.whiskering-homotopies +open import foundation.whiskering-homotopies-composition open import orthogonal-factorization-systems.factorization-operations-function-classes open import orthogonal-factorization-systems.factorizations-of-maps diff --git a/src/orthogonal-factorization-systems/orthogonal-maps.lagda.md b/src/orthogonal-factorization-systems/orthogonal-maps.lagda.md index adf460f2b2..ed7800d987 100644 --- a/src/orthogonal-factorization-systems/orthogonal-maps.lagda.md +++ b/src/orthogonal-factorization-systems/orthogonal-maps.lagda.md @@ -36,7 +36,7 @@ open import foundation.universal-property-dependent-pair-types open import foundation.universal-property-equivalences open import foundation.universal-property-pullbacks open import foundation.universe-levels -open import foundation.whiskering-homotopies +open import foundation.whiskering-homotopies-composition open import orthogonal-factorization-systems.lifting-squares open import orthogonal-factorization-systems.local-types diff --git a/src/orthogonal-factorization-systems/precomposition-lifts-families-of-elements.lagda.md b/src/orthogonal-factorization-systems/precomposition-lifts-families-of-elements.lagda.md index 6fbe12d609..db85888742 100644 --- a/src/orthogonal-factorization-systems/precomposition-lifts-families-of-elements.lagda.md +++ b/src/orthogonal-factorization-systems/precomposition-lifts-families-of-elements.lagda.md @@ -22,9 +22,9 @@ open import foundation.precomposition-functions open import foundation.transport-along-identifications open import foundation.type-theoretic-principle-of-choice open import foundation.universe-levels -open import foundation.whiskering-higher-homotopies -open import foundation.whiskering-homotopies -open import foundation.whiskering-identifications +open import foundation.whiskering-higher-homotopies-composition +open import foundation.whiskering-homotopies-composition +open import foundation.whiskering-identifications-concatenation open import orthogonal-factorization-systems.lifts-families-of-elements ``` @@ -180,7 +180,7 @@ module _ coherence-triangle-precomp-lift-family-of-elements-refl-htpy b = ( htpy-eq (compute-triangle-precomp-lift-family-of-elements-htpy B a) b) ∙ ( inv right-unit) ∙ - ( left-whisker-identification + ( left-whisker-concat ( triangle-precomp-lift-family-of-elements-htpy-refl-htpy B a b) ( inv (eq-htpy-refl-htpy (b ∘ f)))) @@ -336,7 +336,7 @@ module _ statement-coherence-htpy-precomp-coherence-square-precomp-map-inv-distributive-Π-Σ ( refl-htpy) coherence-htpy-precomp-coherence-square-precomp-map-inv-distributive-Π-Σ-refl-htpy = - ( left-whisker-htpy² + ( left-whisker-comp² ( map-inv-distributive-Π-Σ) ( compute-htpy-precomp-lifted-family-of-elements B)) ∙h ( inv-htpy diff --git a/src/orthogonal-factorization-systems/pullback-hom.lagda.md b/src/orthogonal-factorization-systems/pullback-hom.lagda.md index ecfe81913b..362dd61ad8 100644 --- a/src/orthogonal-factorization-systems/pullback-hom.lagda.md +++ b/src/orthogonal-factorization-systems/pullback-hom.lagda.md @@ -24,7 +24,7 @@ open import foundation.pullbacks open import foundation.type-arithmetic-dependent-pair-types open import foundation.universal-property-pullbacks open import foundation.universe-levels -open import foundation.whiskering-homotopies +open import foundation.whiskering-homotopies-composition open import orthogonal-factorization-systems.lifting-squares ``` diff --git a/src/ring-theory/sums-semirings.lagda.md b/src/ring-theory/sums-semirings.lagda.md index c80c74b786..d6ff978880 100644 --- a/src/ring-theory/sums-semirings.lagda.md +++ b/src/ring-theory/sums-semirings.lagda.md @@ -17,7 +17,7 @@ open import foundation.homotopies open import foundation.identity-types open import foundation.unit-type open import foundation.universe-levels -open import foundation.whiskering-homotopies +open import foundation.whiskering-homotopies-composition open import linear-algebra.vectors open import linear-algebra.vectors-on-semirings diff --git a/src/structured-types/morphisms-h-spaces.lagda.md b/src/structured-types/morphisms-h-spaces.lagda.md index 7f6bf64dbb..58402af847 100644 --- a/src/structured-types/morphisms-h-spaces.lagda.md +++ b/src/structured-types/morphisms-h-spaces.lagda.md @@ -16,7 +16,7 @@ open import foundation.homotopies open import foundation.identity-types open import foundation.path-algebra open import foundation.universe-levels -open import foundation.whiskering-identifications +open import foundation.whiskering-identifications-concatenation open import group-theory.homomorphisms-semigroups @@ -115,7 +115,7 @@ preserves-coh-unit-laws-mul' M N f μf lf rf = { A = Id (ap (pr1 f) (lM eM) ∙ ef) ((μf ∙ ap-binary μN ef ef) ∙ rN eN)} ( ( horizontal-concat-Id² (lf eM) (inv (ap-id ef))) ∙ - ( ( right-whisker-identification + ( ( right-whisker-concat ( inv ( assoc ( μf) @@ -126,7 +126,7 @@ preserves-coh-unit-laws-mul' M N f μf lf rf = ( μf ∙ ap (mul-H-Space' N (pr1 f eM)) ef) ( lN (pr1 f eM)) ( ap id ef)) ∙ - ( ( left-whisker-identification + ( ( left-whisker-concat ( μf ∙ ap (mul-H-Space' N (pr1 f eM)) ef) ( nat-htpy lN ef)) ∙ ( ( inv @@ -141,13 +141,13 @@ preserves-coh-unit-laws-mul' M N f μf lf rf = ( ap (mul-H-Space' N (pr1 f eM)) ef) ( ap (μN eN) ef))) ∙ ( horizontal-concat-Id² - ( left-whisker-identification + ( left-whisker-concat ( μf) ( inv (triangle-ap-binary μN ef ef))) ( cN)))))))) - ( ( right-whisker-identification (ap² (pr1 f) cM) ef) ∙ + ( ( right-whisker-concat (ap² (pr1 f) cM) ef) ∙ ( ( horizontal-concat-Id² (rf eM) (inv (ap-id ef))) ∙ - ( ( right-whisker-identification + ( ( right-whisker-concat ( inv ( assoc ( μf) (ap (μN (pr1 f eM)) ef) (rN (pr1 f eM)))) @@ -156,7 +156,7 @@ preserves-coh-unit-laws-mul' M N f μf lf rf = ( μf ∙ ap (μN (pr1 f eM)) ef) ( rN (pr1 f eM)) ( ap id ef)) ∙ - ( ( left-whisker-identification + ( ( left-whisker-concat ( μf ∙ ap (μN (pr1 f eM)) ef) ( nat-htpy rN ef)) ∙ ( ( inv @@ -170,7 +170,7 @@ preserves-coh-unit-laws-mul' M N f μf lf rf = ( μf) ( ap (μN (pr1 f eM)) ef) ( ap (mul-H-Space' N eN) ef)) ∙ - ( left-whisker-identification + ( left-whisker-concat ( μf) ( inv (triangle-ap-binary' μN ef ef))))))))))) where diff --git a/src/structured-types/morphisms-types-equipped-with-endomorphisms.lagda.md b/src/structured-types/morphisms-types-equipped-with-endomorphisms.lagda.md index 3b1d9dff06..d5d0626781 100644 --- a/src/structured-types/morphisms-types-equipped-with-endomorphisms.lagda.md +++ b/src/structured-types/morphisms-types-equipped-with-endomorphisms.lagda.md @@ -19,7 +19,7 @@ open import foundation.identity-types open import foundation.structure-identity-principle open import foundation.torsorial-type-families open import foundation.universe-levels -open import foundation.whiskering-homotopies +open import foundation.whiskering-homotopies-composition open import structured-types.types-equipped-with-endomorphisms ``` diff --git a/src/structured-types/pointed-equivalences.lagda.md b/src/structured-types/pointed-equivalences.lagda.md index 80c212d416..bbfe2b5168 100644 --- a/src/structured-types/pointed-equivalences.lagda.md +++ b/src/structured-types/pointed-equivalences.lagda.md @@ -313,7 +313,7 @@ module _ ( f ∘∗ (g ∘∗ f)) ( f ∘∗ id-pointed-map) ( f) - ( left-whisker-htpy-pointed-map f + ( left-whisker-comp-pointed-map f ( g ∘∗ f) ( id-pointed-map) ( G)) @@ -355,7 +355,7 @@ module _ ( k ∘∗ (h ∘∗ f)) ( k ∘∗ id-pointed-map) ( k) - ( left-whisker-htpy-pointed-map k + ( left-whisker-comp-pointed-map k ( h ∘∗ f) ( id-pointed-map) ( H)) @@ -375,7 +375,7 @@ module _ ( k ∘∗ (f ∘∗ g)) ( k ∘∗ id-pointed-map) ( k) - ( left-whisker-htpy-pointed-map k + ( left-whisker-comp-pointed-map k ( f ∘∗ g) ( id-pointed-map) ( G)) @@ -437,7 +437,7 @@ module _ ( (f ∘∗ g) ∘∗ f) ( id-pointed-map ∘∗ f) ( f) - ( right-whisker-htpy-pointed-map + ( right-whisker-comp-pointed-map ( f ∘∗ g) ( id-pointed-map) ( G) @@ -479,7 +479,7 @@ module _ ( (f ∘∗ g) ∘∗ k) ( id-pointed-map ∘∗ k) ( k) - ( right-whisker-htpy-pointed-map + ( right-whisker-comp-pointed-map ( f ∘∗ g) ( id-pointed-map) ( G) @@ -500,7 +500,7 @@ module _ ( (h ∘∗ f) ∘∗ k) ( id-pointed-map ∘∗ k) ( k) - ( right-whisker-htpy-pointed-map + ( right-whisker-comp-pointed-map ( h ∘∗ f) ( id-pointed-map) ( H) diff --git a/src/structured-types/pointed-homotopies.lagda.md b/src/structured-types/pointed-homotopies.lagda.md index a1fd165868..c348c745b1 100644 --- a/src/structured-types/pointed-homotopies.lagda.md +++ b/src/structured-types/pointed-homotopies.lagda.md @@ -17,7 +17,7 @@ open import foundation.homotopies open import foundation.identity-types open import foundation.structure-identity-principle open import foundation.universe-levels -open import foundation.whiskering-homotopies +open import foundation.whiskering-homotopies-composition open import structured-types.pointed-dependent-functions open import structured-types.pointed-families-of-types @@ -214,12 +214,12 @@ module _ {A : Pointed-Type l1} {B : Pointed-Type l2} {C : Pointed-Type l3} where - left-whisker-htpy-pointed-map : + left-whisker-comp-pointed-map : (g : B →∗ C) (f1 f2 : A →∗ B) (H : htpy-pointed-map f1 f2) → htpy-pointed-map ( comp-pointed-map g f1) ( comp-pointed-map g f2) - left-whisker-htpy-pointed-map g f1 f2 H = + left-whisker-comp-pointed-map g f1 f2 H = pair ( map-pointed-map g ·l (pr1 H)) ( ( ( ( ap² (pr1 g) (pr2 H)) ∙ @@ -259,10 +259,10 @@ module _ {A : Pointed-Type l1} {B : Pointed-Type l2} {C : Pointed-Type l3} where - right-whisker-htpy-pointed-map : + right-whisker-comp-pointed-map : (g1 g2 : B →∗ C) (H : htpy-pointed-map g1 g2) (f : A →∗ B) → htpy-pointed-map (comp-pointed-map g1 f) (comp-pointed-map g2 f) - right-whisker-htpy-pointed-map g1 g2 H (pair f refl) = + right-whisker-comp-pointed-map g1 g2 H (pair f refl) = pair (pr1 H ·r f) (pr2 H) module _ diff --git a/src/synthetic-homotopy-theory/26-descent.lagda.md b/src/synthetic-homotopy-theory/26-descent.lagda.md index 5edcfe315e..9ad2767d41 100644 --- a/src/synthetic-homotopy-theory/26-descent.lagda.md +++ b/src/synthetic-homotopy-theory/26-descent.lagda.md @@ -36,7 +36,7 @@ open import foundation.transport-along-identifications open import foundation.type-theoretic-principle-of-choice open import foundation.univalence open import foundation.universe-levels -open import foundation.whiskering-homotopies +open import foundation.whiskering-homotopies-composition open import synthetic-homotopy-theory.cocones-under-spans open import synthetic-homotopy-theory.dependent-pullback-property-pushouts diff --git a/src/synthetic-homotopy-theory/26-id-pushout.lagda.md b/src/synthetic-homotopy-theory/26-id-pushout.lagda.md index 9666c7a2e3..4406d76df7 100644 --- a/src/synthetic-homotopy-theory/26-id-pushout.lagda.md +++ b/src/synthetic-homotopy-theory/26-id-pushout.lagda.md @@ -28,7 +28,7 @@ open import foundation.torsorial-type-families open import foundation.transport-along-identifications open import foundation.universal-property-identity-types open import foundation.universe-levels -open import foundation.whiskering-homotopies +open import foundation.whiskering-homotopies-composition open import synthetic-homotopy-theory.26-descent open import synthetic-homotopy-theory.cocones-under-spans diff --git a/src/synthetic-homotopy-theory/circle.lagda.md b/src/synthetic-homotopy-theory/circle.lagda.md index ba7b508fe6..c478ba65a6 100644 --- a/src/synthetic-homotopy-theory/circle.lagda.md +++ b/src/synthetic-homotopy-theory/circle.lagda.md @@ -25,7 +25,7 @@ open import foundation.retractions open import foundation.sections open import foundation.transport-along-identifications open import foundation.universe-levels -open import foundation.whiskering-identifications +open import foundation.whiskering-identifications-concatenation open import higher-group-theory.higher-groups @@ -314,7 +314,7 @@ apply-up-suspension-meridian-suspension-sphere-1-circle-sphere-1 ( ap sphere-1-circle (ap circle-sphere-1 (meridian-suspension n))) ( ap sphere-1-circle circle-sphere-1-south-sphere-1-eq-base-𝕊¹) ( sphere-1-circle-base-𝕊¹-eq-south-sphere-1))) ∙ - ( right-whisker-identification + ( right-whisker-concat ( inv ( ap-concat ( sphere-1-circle) @@ -341,7 +341,7 @@ apply-loop-universal-property-𝕊¹-sphere-1-circle-sphere-1 = ( ap sphere-1-circle loop-𝕊¹) ( sphere-1-circle-base-𝕊¹-eq-north-sphere-1) ( meridian-sphere 0 (one-Fin 1)))) ∙ - ( right-whisker-identification + ( right-whisker-concat ( loop-universal-property-𝕊¹ ( north-sphere 1) ( north-sphere-1-loop)) @@ -350,7 +350,7 @@ apply-loop-universal-property-𝕊¹-sphere-1-circle-sphere-1 = ( sphere-1-circle-base-𝕊¹-eq-north-sphere-1) ( north-sphere-1-loop) ( meridian-sphere 0 (one-Fin 1))) ∙ - ( left-whisker-identification + ( left-whisker-concat ( sphere-1-circle-base-𝕊¹-eq-north-sphere-1) ( is-section-inv-concat' ( meridian-sphere 0 (one-Fin 1)) @@ -374,7 +374,7 @@ map-sphere-1-circle-sphere-1-meridian (inl (inr n)) = ( sphere-1-circle-sphere-1-south-sphere-1) ( ( apply-up-suspension-meridian-suspension-sphere-1-circle-sphere-1 ( inl (inr n))) ∙ - ( right-whisker-identification + ( right-whisker-concat ( ap-concat ( sphere-1-circle) ( circle-sphere-1-north-sphere-1-eq-base-𝕊¹) @@ -384,7 +384,7 @@ map-sphere-1-circle-sphere-1-meridian (inl (inr n)) = ( ap sphere-1-circle (circle-sphere-1-north-sphere-1-eq-base-𝕊¹)) ( ap sphere-1-circle loop-𝕊¹) ( sphere-1-circle-base-𝕊¹-eq-south-sphere-1)) ∙ - ( left-whisker-identification + ( left-whisker-concat ( ap sphere-1-circle (circle-sphere-1-north-sphere-1-eq-base-𝕊¹)) ( apply-loop-universal-property-𝕊¹-sphere-1-circle-sphere-1)) ∙ ( inv @@ -450,7 +450,7 @@ apply-up-suspension-meridian-one-suspension-circle-sphere-1-circle : ( circle-sphere-1-south-sphere-1-eq-base-𝕊¹) ( circle-sphere-1-north-sphere-1-eq-base-𝕊¹) apply-up-suspension-meridian-one-suspension-circle-sphere-1-circle = - ( right-whisker-identification + ( right-whisker-concat ( ap-inv ( circle-sphere-1) ( meridian-suspension (one-Fin 1))) @@ -460,7 +460,7 @@ apply-up-suspension-meridian-one-suspension-circle-sphere-1-circle = ( inv (ap circle-sphere-1 (meridian-suspension (one-Fin 1)))) ( circle-sphere-1-north-sphere-1-eq-base-𝕊¹) ( refl)) ∙ - ( left-whisker-identification + ( left-whisker-concat ( inv (ap circle-sphere-1 (meridian-suspension (one-Fin 1)))) ( inv ( compute-meridian-cogap-suspension @@ -471,7 +471,7 @@ apply-up-suspension-meridian-one-suspension-circle-sphere-1-circle = ( inv (ap circle-sphere-1 (meridian-suspension (one-Fin 1)))) ( ap circle-sphere-1 (meridian-suspension (one-Fin 1))) ( circle-sphere-1-south-sphere-1-eq-base-𝕊¹))) ∙ - ( right-whisker-identification + ( right-whisker-concat ( left-inv (ap circle-sphere-1 (meridian-suspension (one-Fin 1)))) ( circle-sphere-1-south-sphere-1-eq-base-𝕊¹)) @@ -482,7 +482,7 @@ apply-up-suspension-meridian-zero-suspension-circle-sphere-1-circle : ( loop-𝕊¹) ( circle-sphere-1-north-sphere-1-eq-base-𝕊¹) apply-up-suspension-meridian-zero-suspension-circle-sphere-1-circle = - ( right-whisker-identification + ( right-whisker-concat ( ap-concat ( circle-sphere-1) ( meridian-sphere 0 (zero-Fin 1)) @@ -492,7 +492,7 @@ apply-up-suspension-meridian-zero-suspension-circle-sphere-1-circle = ( ap circle-sphere-1 (meridian-suspension (zero-Fin 1))) ( ap circle-sphere-1 (inv ( meridian-sphere 0 (one-Fin 1)))) ( circle-sphere-1-north-sphere-1-eq-base-𝕊¹)) ∙ - ( left-whisker-identification + ( left-whisker-concat ( ap circle-sphere-1 (meridian-suspension (zero-Fin 1))) ( apply-up-suspension-meridian-one-suspension-circle-sphere-1-circle)) ∙ ( compute-meridian-cogap-suspension @@ -513,21 +513,21 @@ circle-sphere-1-circle-loop-𝕊¹ = ( circle-sphere-1) ( sphere-1-circle-base-𝕊¹-eq-north-sphere-1)) ( circle-sphere-1-north-sphere-1-eq-base-𝕊¹)) ∙ - ( right-whisker-identification + ( right-whisker-concat ( inv ( ap-concat ( circle-sphere-1) ( ap sphere-1-circle loop-𝕊¹) ( sphere-1-circle-base-𝕊¹-eq-north-sphere-1))) ( circle-sphere-1-north-sphere-1-eq-base-𝕊¹)) ∙ - ( right-whisker-identification + ( right-whisker-concat ( ap ( ap circle-sphere-1) ( loop-universal-property-𝕊¹ ( north-sphere 1) ( north-sphere-1-loop))) ( circle-sphere-1-north-sphere-1-eq-base-𝕊¹)) ∙ - ( right-whisker-identification + ( right-whisker-concat ( ap-concat ( circle-sphere-1) ( sphere-1-circle-base-𝕊¹-eq-north-sphere-1) @@ -537,7 +537,7 @@ circle-sphere-1-circle-loop-𝕊¹ = ( ap circle-sphere-1 sphere-1-circle-base-𝕊¹-eq-north-sphere-1) ( ap circle-sphere-1 north-sphere-1-loop) ( circle-sphere-1-north-sphere-1-eq-base-𝕊¹)) ∙ - ( left-whisker-identification + ( left-whisker-concat ( ap circle-sphere-1 sphere-1-circle-base-𝕊¹-eq-north-sphere-1) ( apply-up-suspension-meridian-zero-suspension-circle-sphere-1-circle)) ∙ ( inv diff --git a/src/synthetic-homotopy-theory/cocones-under-sequential-diagrams.lagda.md b/src/synthetic-homotopy-theory/cocones-under-sequential-diagrams.lagda.md index 125edcfcaf..3f105a1c88 100644 --- a/src/synthetic-homotopy-theory/cocones-under-sequential-diagrams.lagda.md +++ b/src/synthetic-homotopy-theory/cocones-under-sequential-diagrams.lagda.md @@ -25,7 +25,7 @@ open import foundation.postcomposition-functions open import foundation.structure-identity-principle open import foundation.torsorial-type-families open import foundation.universe-levels -open import foundation.whiskering-homotopies +open import foundation.whiskering-homotopies-composition open import synthetic-homotopy-theory.coforks open import synthetic-homotopy-theory.sequential-diagrams diff --git a/src/synthetic-homotopy-theory/cocones-under-spans.lagda.md b/src/synthetic-homotopy-theory/cocones-under-spans.lagda.md index 7812d050c5..5f6769f53a 100644 --- a/src/synthetic-homotopy-theory/cocones-under-spans.lagda.md +++ b/src/synthetic-homotopy-theory/cocones-under-spans.lagda.md @@ -25,7 +25,7 @@ open import foundation-core.function-types open import foundation-core.functoriality-dependent-pair-types open import foundation-core.identity-types open import foundation-core.torsorial-type-families -open import foundation-core.whiskering-homotopies +open import foundation-core.whiskering-homotopies-composition ``` diff --git a/src/synthetic-homotopy-theory/coforks.lagda.md b/src/synthetic-homotopy-theory/coforks.lagda.md index f6ae926e21..fb37d09a33 100644 --- a/src/synthetic-homotopy-theory/coforks.lagda.md +++ b/src/synthetic-homotopy-theory/coforks.lagda.md @@ -24,7 +24,7 @@ open import foundation.identity-types open import foundation.structure-identity-principle open import foundation.torsorial-type-families open import foundation.universe-levels -open import foundation.whiskering-homotopies +open import foundation.whiskering-homotopies-composition open import synthetic-homotopy-theory.cocones-under-spans ``` diff --git a/src/synthetic-homotopy-theory/dependent-coforks.lagda.md b/src/synthetic-homotopy-theory/dependent-coforks.lagda.md index 90eae5b067..d03890bc62 100644 --- a/src/synthetic-homotopy-theory/dependent-coforks.lagda.md +++ b/src/synthetic-homotopy-theory/dependent-coforks.lagda.md @@ -26,7 +26,7 @@ open import foundation.structure-identity-principle open import foundation.torsorial-type-families open import foundation.transport-along-identifications open import foundation.universe-levels -open import foundation.whiskering-identifications +open import foundation.whiskering-identifications-concatenation open import synthetic-homotopy-theory.coforks open import synthetic-homotopy-theory.dependent-cocones-under-spans @@ -342,7 +342,7 @@ module _ ( λ where ( inl a) → inv - ( ( right-whisker-identification + ( ( right-whisker-concat ( ap-id ( inv ( coherence-square-dependent-cocone @@ -368,7 +368,7 @@ module _ ( d) ( inl a)))) ( inr a) → - right-whisker-identification + right-whisker-concat ( inv ( ap-inv ( tr P (coherence-cofork f g e a)) diff --git a/src/synthetic-homotopy-theory/dependent-pullback-property-pushouts.lagda.md b/src/synthetic-homotopy-theory/dependent-pullback-property-pushouts.lagda.md index dbf09337bb..4f78aedc39 100644 --- a/src/synthetic-homotopy-theory/dependent-pullback-property-pushouts.lagda.md +++ b/src/synthetic-homotopy-theory/dependent-pullback-property-pushouts.lagda.md @@ -22,7 +22,7 @@ open import foundation.pullbacks open import foundation.transport-along-identifications open import foundation.type-theoretic-principle-of-choice open import foundation.universe-levels -open import foundation.whiskering-homotopies +open import foundation.whiskering-homotopies-composition open import orthogonal-factorization-systems.lifts-families-of-elements open import orthogonal-factorization-systems.precomposition-lifts-families-of-elements diff --git a/src/synthetic-homotopy-theory/descent-circle-function-types.lagda.md b/src/synthetic-homotopy-theory/descent-circle-function-types.lagda.md index 85b3fe7ce6..1fab95ab93 100644 --- a/src/synthetic-homotopy-theory/descent-circle-function-types.lagda.md +++ b/src/synthetic-homotopy-theory/descent-circle-function-types.lagda.md @@ -21,7 +21,7 @@ open import foundation.postcomposition-functions open import foundation.transport-along-identifications open import foundation.universal-property-equivalences open import foundation.universe-levels -open import foundation.whiskering-homotopies +open import foundation.whiskering-homotopies-composition open import synthetic-homotopy-theory.descent-circle open import synthetic-homotopy-theory.free-loops diff --git a/src/synthetic-homotopy-theory/double-loop-spaces.lagda.md b/src/synthetic-homotopy-theory/double-loop-spaces.lagda.md index 81e4a3ac74..1bdfa8e639 100644 --- a/src/synthetic-homotopy-theory/double-loop-spaces.lagda.md +++ b/src/synthetic-homotopy-theory/double-loop-spaces.lagda.md @@ -13,7 +13,7 @@ open import foundation.dependent-pair-types open import foundation.identity-types open import foundation.path-algebra open import foundation.universe-levels -open import foundation.whiskering-identifications +open import foundation.whiskering-identifications-concatenation open import structured-types.pointed-equivalences open import structured-types.pointed-types @@ -85,14 +85,14 @@ naturality-right-unit : {l : Level} {A : UU l} {x y : A} {p q : Id x y} (α : Id p q) → coherence-square-identifications ( right-unit) - ( right-whisker-identification α refl) + ( right-whisker-concat α refl) ( α) ( right-unit) naturality-right-unit {p = refl} refl = refl naturality-right-unit-Ω² : {l : Level} {A : UU l} {x : A} (α : type-Ω² x) → - right-whisker-identification α refl = α + right-whisker-concat α refl = α naturality-right-unit-Ω² α = inv right-unit ∙ naturality-right-unit α right-unit-law-horizontal-concat-Ω² : @@ -103,15 +103,15 @@ right-unit-law-horizontal-concat-Ω² {α = α} = left-unit-law-left-whisker-Ω² : {l : Level} {A : UU l} {a : A} (α : type-Ω² a) → - left-whisker-identification (refl-Ω (pair A a)) α = α + left-whisker-concat (refl-Ω (pair A a)) α = α left-unit-law-left-whisker-Ω² α = - left-unit-law-left-whisker-identification α + left-unit-law-left-whisker-concat α right-unit-law-right-whisker-Ω² : {l : Level} {A : UU l} {a : A} (α : type-Ω² a) → - right-whisker-identification α (refl-Ω (pair A a)) = α + right-whisker-concat α (refl-Ω (pair A a)) = α right-unit-law-right-whisker-Ω² α = - (right-unit-law-right-whisker-identification α) ∙ right-unit + (right-unit-law-right-whisker-concat α) ∙ right-unit ``` ### The interchange law for double loop spaces diff --git a/src/synthetic-homotopy-theory/eckmann-hilton-argument.lagda.md b/src/synthetic-homotopy-theory/eckmann-hilton-argument.lagda.md index 3f295d0856..0a33bc7e2e 100644 --- a/src/synthetic-homotopy-theory/eckmann-hilton-argument.lagda.md +++ b/src/synthetic-homotopy-theory/eckmann-hilton-argument.lagda.md @@ -13,7 +13,7 @@ open import foundation.identity-types open import foundation.interchange-law open import foundation.path-algebra open import foundation.universe-levels -open import foundation.whiskering-identifications +open import foundation.whiskering-identifications-concatenation open import structured-types.pointed-equivalences open import structured-types.pointed-types @@ -115,12 +115,11 @@ Eckmann-Hilton argument is often depicted as follows: The first picture represents the vertical concatination of `α` and `β`. The notation ` | γ | δ |` represents the horizontal concatination of 2-dimensional identifications `γ` and `δ`. Then `| refl | α |` is just -[`left-whisker-identification refl-Ω² α`](https://unimath.github.io/agda-unimath/foundation.path-algebra.html#7697). +[`left-whisker-concat refl-Ω² α`](https://unimath.github.io/agda-unimath/foundation.path-algebra.html#7697). The first and last equality come from the unit laws of whiskering. And the middle equality can be recognized as -[`commutative-left-whisker-right-whisker-identification`](https://unimath.github.io/agda-unimath/foundation.path-algebra.html#9823), -which is the naturality condition of `left-whisker-identification - α` applied -to `β`. +[`commutative-left-whisker-right-whisker-concat`](https://unimath.github.io/agda-unimath/foundation.path-algebra.html#9823), +which is the naturality condition of `left-whisker-concat - α` applied to `β`. Since this version of the Eckmann-Hilton argument may seem more complicated than the algbraic version, the reader is entitled to wonder why we bother giving this @@ -133,10 +132,10 @@ induces an autoequivalence `Ω X ≃ Ω X` given by concatinating on the right b `l`. This is shown in [`tr-Id-right`](https://unimath.github.io/agda-unimath/foundation.identity-types.html#11216). A 2-loop `s` induces a homotpy `id {A = Ω X} ~ id` given by -[`left-whisker-identification`](foundation.whiskering-identifications.md). This -claim is shown in TODO (provide link). Thus, the 2-D descent data of `Id base` -is (up to equivalence) exactly the homotopy at the heart of this version of the -Eckmann-Hilton argument. +[`left-whisker-concat`](foundation.whiskering-identifications-concatenation.md). +This claim is shown in TODO (provide link). Thus, the 2-D descent data of +`Id base` is (up to equivalence) exactly the homotopy at the heart of this +version of the Eckmann-Hilton argument. Recall that homotpies of type `id ~ id` automatically commute with each other via @@ -173,15 +172,15 @@ module _ (α β : type-Ω² (point-Pointed-Type A)) → α ∙ β = β ∙ α eckmann-hilton-Ω² α β = equational-reasoning_ (α ∙ β) = - ( left-whisker-identification refl α) ∙ - ( right-whisker-identification β refl) + ( left-whisker-concat refl α) ∙ + ( right-whisker-concat β refl) by ( inv ( horizontal-concat-Id² ( left-unit-law-left-whisker-Ω² α) ( right-unit-law-right-whisker-Ω² β))) - = ( right-whisker-identification β refl) ∙ - ( left-whisker-identification refl α) - by ( commutative-left-whisker-right-whisker-identification α β) + = ( right-whisker-concat β refl) ∙ + ( left-whisker-concat refl α) + by ( commutative-left-whisker-right-whisker-concat α β) = β ∙ α by ( horizontal-concat-Id² ( right-unit-law-right-whisker-Ω² β) @@ -212,15 +211,15 @@ module _ (α β : type-Ω² (point-Pointed-Type A)) → α ∙ β = β ∙ α eckmann-hilton-inverse-Ω² α β = equational-reasoning_ (α ∙ β) - = ( right-whisker-identification α refl) ∙ - ( left-whisker-identification refl β) + = ( right-whisker-concat α refl) ∙ + ( left-whisker-concat refl β) by ( inv ( horizontal-concat-Id² ( right-unit-law-right-whisker-Ω² α) ( left-unit-law-left-whisker-Ω² β))) - = ( left-whisker-identification refl β) ∙ - ( right-whisker-identification α refl) - by commutative-right-whisker-left-whisker-identification α β + = ( left-whisker-concat refl β) ∙ + ( right-whisker-concat α refl) + by commutative-right-whisker-left-whisker-concat α β = β ∙ α by ( horizontal-concat-Id² ( left-unit-law-left-whisker-Ω² β)) @@ -265,7 +264,7 @@ module _ ( right-unit-law-right-whisker-Ω² β) ( left-unit-law-left-whisker-Ω² α))) ( _) - ( commutative-right-whisker-left-whisker-identification β α))) + ( commutative-right-whisker-left-whisker-concat β α))) by distributive-inv-concat ( concat ( inv @@ -273,7 +272,7 @@ module _ ( right-unit-law-right-whisker-Ω² β) ( left-unit-law-left-whisker-Ω² α))) ( _) - ( commutative-right-whisker-left-whisker-identification β α)) + ( commutative-right-whisker-left-whisker-concat β α)) ( horizontal-concat-Id² ( left-unit-law-left-whisker-Ω² α) ( right-unit-law-right-whisker-Ω² β)) @@ -284,14 +283,14 @@ module _ ( right-unit-law-right-whisker-Ω² β))) ( _) ( concat - ( inv (commutative-right-whisker-left-whisker-identification β α)) + ( inv (commutative-right-whisker-left-whisker-concat β α)) ( _) ( inv ( inv ( horizontal-concat-Id² ( right-unit-law-right-whisker-Ω² β) ( left-unit-law-left-whisker-Ω² α))))) - by left-whisker-identification + by left-whisker-concat ( inv ( horizontal-concat-Id² ( left-unit-law-left-whisker-Ω² α) @@ -301,7 +300,7 @@ module _ ( horizontal-concat-Id² ( right-unit-law-right-whisker-Ω² β) ( left-unit-law-left-whisker-Ω² α))) - ( commutative-right-whisker-left-whisker-identification β α)) + ( commutative-right-whisker-left-whisker-concat β α)) = concat ( inv ( horizontal-concat-Id² @@ -309,18 +308,18 @@ module _ ( right-unit-law-right-whisker-Ω² β))) ( _) ( concat - ( commutative-left-whisker-right-whisker-identification α β) + ( commutative-left-whisker-right-whisker-concat α β) ( _) ( horizontal-concat-Id² ( right-unit-law-right-whisker-Ω² β) ( left-unit-law-left-whisker-Ω² α))) - by left-whisker-identification + by left-whisker-concat ( inv ( horizontal-concat-Id² ( left-unit-law-left-whisker-Ω² α) ( right-unit-law-right-whisker-Ω² β))) ( horizontal-concat-Id² - ( compute-inv-commutative-left-whisker-right-whisker-identification α β) + ( compute-inv-commutative-left-whisker-right-whisker-concat α β) ( inv-inv ( horizontal-concat-Id² ( right-unit-law-right-whisker-Ω² β) @@ -332,7 +331,7 @@ module _ ( horizontal-concat-Id² ( left-unit-law-left-whisker-Ω² α) ( right-unit-law-right-whisker-Ω² β))) - ( commutative-left-whisker-right-whisker-identification α β) + ( commutative-left-whisker-right-whisker-concat α β) ( horizontal-concat-Id² ( right-unit-law-right-whisker-Ω² β) ( left-unit-law-left-whisker-Ω² α))) diff --git a/src/synthetic-homotopy-theory/functoriality-sequential-colimits.lagda.md b/src/synthetic-homotopy-theory/functoriality-sequential-colimits.lagda.md index 4a37741db3..abefff78d8 100644 --- a/src/synthetic-homotopy-theory/functoriality-sequential-colimits.lagda.md +++ b/src/synthetic-homotopy-theory/functoriality-sequential-colimits.lagda.md @@ -23,7 +23,7 @@ open import foundation.retractions open import foundation.retracts-of-types open import foundation.sections open import foundation.universe-levels -open import foundation.whiskering-homotopies +open import foundation.whiskering-homotopies-composition open import synthetic-homotopy-theory.cocones-under-sequential-diagrams open import synthetic-homotopy-theory.equivalences-sequential-diagrams @@ -274,7 +274,7 @@ module _ ( ap-concat-htpy _ ( ( right-unit-htpy) ∙h ( inv-htpy - ( left-unit-law-left-whisker-htpy + ( left-unit-law-left-whisker-comp ( coherence-cocone-sequential-diagram c n))))) preserves-id-map-sequential-colimit-hom-sequential-diagram : diff --git a/src/synthetic-homotopy-theory/joins-of-types.lagda.md b/src/synthetic-homotopy-theory/joins-of-types.lagda.md index 5ffaeaeef8..e5f8aa02db 100644 --- a/src/synthetic-homotopy-theory/joins-of-types.lagda.md +++ b/src/synthetic-homotopy-theory/joins-of-types.lagda.md @@ -24,7 +24,7 @@ open import foundation.type-arithmetic-empty-type open import foundation.type-arithmetic-unit-type open import foundation.unit-type open import foundation.universe-levels -open import foundation.whiskering-homotopies +open import foundation.whiskering-homotopies-composition open import synthetic-homotopy-theory.cocones-under-spans open import synthetic-homotopy-theory.pushouts diff --git a/src/synthetic-homotopy-theory/morphisms-sequential-diagrams.lagda.md b/src/synthetic-homotopy-theory/morphisms-sequential-diagrams.lagda.md index 6ca9d6998d..86c6950684 100644 --- a/src/synthetic-homotopy-theory/morphisms-sequential-diagrams.lagda.md +++ b/src/synthetic-homotopy-theory/morphisms-sequential-diagrams.lagda.md @@ -23,7 +23,7 @@ open import foundation.identity-types open import foundation.structure-identity-principle open import foundation.torsorial-type-families open import foundation.universe-levels -open import foundation.whiskering-homotopies +open import foundation.whiskering-homotopies-composition open import synthetic-homotopy-theory.dependent-sequential-diagrams open import synthetic-homotopy-theory.sequential-diagrams diff --git a/src/synthetic-homotopy-theory/powers-of-loops.lagda.md b/src/synthetic-homotopy-theory/powers-of-loops.lagda.md index 708aba34cc..37c127d6f1 100644 --- a/src/synthetic-homotopy-theory/powers-of-loops.lagda.md +++ b/src/synthetic-homotopy-theory/powers-of-loops.lagda.md @@ -18,7 +18,7 @@ open import foundation.identity-types open import foundation.iterating-automorphisms open import foundation.iterating-functions open import foundation.universe-levels -open import foundation.whiskering-identifications +open import foundation.whiskering-identifications-concatenation open import structured-types.pointed-maps open import structured-types.pointed-types @@ -68,7 +68,7 @@ power-nat-refl-Ω : power-nat-Ω n A refl = refl power-nat-refl-Ω zero-ℕ A = refl power-nat-refl-Ω (succ-ℕ n) A = - right-whisker-identification (power-nat-refl-Ω n A) refl + right-whisker-concat (power-nat-refl-Ω n A) refl ``` ### `ωⁿ⁺¹ = ωⁿ ∙ ω` @@ -84,7 +84,7 @@ power-nat-succ-Ω' : power-nat-Ω (succ-ℕ n) A ω = (ω ∙ power-nat-Ω n A ω) power-nat-succ-Ω' zero-ℕ A ω = inv right-unit power-nat-succ-Ω' (succ-ℕ n) A ω = - ( right-whisker-identification (power-nat-succ-Ω' n A ω) ω) ∙ + ( right-whisker-concat (power-nat-succ-Ω' n A ω) ω) ∙ ( assoc ω (power-nat-Ω n A ω) ω) ``` @@ -96,7 +96,7 @@ power-nat-add-Ω : power-nat-Ω (m +ℕ n) A ω = (power-nat-Ω m A ω ∙ power-nat-Ω n A ω) power-nat-add-Ω m zero-ℕ A ω = inv right-unit power-nat-add-Ω m (succ-ℕ n) A ω = - ( right-whisker-identification (power-nat-add-Ω m n A ω) ω) ∙ + ( right-whisker-concat (power-nat-add-Ω m n A ω) ω) ∙ ( assoc (power-nat-Ω m A ω) (power-nat-Ω n A ω) ω) ``` @@ -109,7 +109,7 @@ power-nat-mul-Ω : power-nat-mul-Ω zero-ℕ n A ω = refl power-nat-mul-Ω (succ-ℕ m) n A ω = ( power-nat-add-Ω (m *ℕ n) n A ω) ∙ - ( ( right-whisker-identification + ( ( right-whisker-concat ( power-nat-mul-Ω m n A ω) ( power-nat-Ω n A ω))) @@ -131,5 +131,5 @@ map-power-nat-Ω : map-power-nat-Ω zero-ℕ {A} {B} f ω = preserves-refl-map-Ω f map-power-nat-Ω (succ-ℕ n) {A} {B} f ω = ( preserves-mul-map-Ω f) ∙ - ( right-whisker-identification (map-power-nat-Ω n f ω) (map-Ω f ω)) + ( right-whisker-concat (map-power-nat-Ω n f ω) (map-Ω f ω)) ``` diff --git a/src/synthetic-homotopy-theory/smash-products-of-pointed-types.lagda.md b/src/synthetic-homotopy-theory/smash-products-of-pointed-types.lagda.md index a62a002b2a..c491e029c9 100644 --- a/src/synthetic-homotopy-theory/smash-products-of-pointed-types.lagda.md +++ b/src/synthetic-homotopy-theory/smash-products-of-pointed-types.lagda.md @@ -14,8 +14,8 @@ open import foundation.dependent-pair-types open import foundation.homotopies open import foundation.identity-types open import foundation.universe-levels -open import foundation.whiskering-homotopies -open import foundation.whiskering-identifications +open import foundation.whiskering-homotopies-composition +open import foundation.whiskering-identifications-concatenation open import structured-types.pointed-cartesian-product-types open import structured-types.pointed-homotopies @@ -163,7 +163,7 @@ module _ ( map-pointed-map {A = A ∨∗ B} {B = unit-Pointed-Type} ( terminal-pointed-map (A ∨∗ B))) ( x)) ∙ - ( right-whisker-htpy + ( right-whisker-comp ( htpy-pointed-htpy ( inr-pushout-Pointed-Type ( pointed-map-prod-wedge-Pointed-Type A B) @@ -200,7 +200,7 @@ module _ ( apd ( contraction-map-smash-prod-wedge-Pointed-Type) ( glue-wedge-Pointed-Type A B))) ∙ - ( left-whisker-identification + ( left-whisker-concat ( contraction-map-smash-prod-wedge-Pointed-Type ( map-inl-wedge-Pointed-Type A B (point-Pointed-Type A))) ( ap-const @@ -250,7 +250,7 @@ module _ inl-glue-smash-prod-Pointed-Type (point-Pointed-Type A) = inr-glue-smash-prod-Pointed-Type (point-Pointed-Type B) coh-glue-smash-prod-Pointed-Type = - ( left-whisker-identification + ( left-whisker-concat ( ap ( map-smash-prod-prod-Pointed-Type A B) ( inv (compute-inl-prod-wedge-Pointed-Type A B (point-Pointed-Type A)))) @@ -264,8 +264,8 @@ module _ ( glue-wedge-Pointed-Type A B)) ( contraction-map-smash-prod-wedge-Pointed-Type A B ( map-inr-wedge-Pointed-Type A B (point-Pointed-Type B))))) ∙ - ( right-whisker-identification - ( ( left-whisker-identification + ( right-whisker-concat + ( ( left-whisker-concat ( ap (map-smash-prod-prod-Pointed-Type A B) ( inv ( compute-inl-prod-wedge-Pointed-Type A B @@ -363,7 +363,7 @@ pr2 (universal-property-smash-prod-Pointed-Type A B C f) = ( map-pointed-map f) ( inr-glue-smash-prod-Pointed-Type A B y) ∙ ( preserves-point-pointed-map f))) , - ( ( right-whisker-identification + ( ( right-whisker-concat ( ap² ( map-pointed-map f) ( inv (coh-glue-smash-prod-Pointed-Type A B))) diff --git a/src/synthetic-homotopy-theory/suspension-structures.lagda.md b/src/synthetic-homotopy-theory/suspension-structures.lagda.md index 21a6adbfad..216a9eecbc 100644 --- a/src/synthetic-homotopy-theory/suspension-structures.lagda.md +++ b/src/synthetic-homotopy-theory/suspension-structures.lagda.md @@ -24,7 +24,7 @@ open import foundation.structure-identity-principle open import foundation.unit-type open import foundation.universal-property-unit-type open import foundation.universe-levels -open import foundation.whiskering-identifications +open import foundation.whiskering-identifications-concatenation open import synthetic-homotopy-theory.cocones-under-spans ``` @@ -324,10 +324,10 @@ module _ (x : X) → coherence-square-identifications ( h x) - ( left-whisker-identification + ( left-whisker-concat ( meridian-suspension-structure c x) ( q)) - ( right-whisker-identification + ( right-whisker-concat ( p) ( meridian-suspension-structure c' x)) ( h' x))) @@ -343,10 +343,10 @@ module _ (x : X) → coherence-square-identifications ( h x) - ( left-whisker-identification + ( left-whisker-concat ( meridian-suspension-structure c x) ( q)) - ( right-whisker-identification + ( right-whisker-concat ( p) ( meridian-suspension-structure c' x)) ( pr2 y x))) @@ -358,8 +358,8 @@ module _ (x : X) → coherence-square-identifications ( h x) - ( left-whisker-identification (meridian-suspension-structure c x) q) - ( right-whisker-identification + ( left-whisker-concat (meridian-suspension-structure c x) q) + ( right-whisker-concat ( refl) ( meridian-suspension-structure c' x)) ( h' x)) @@ -391,10 +391,10 @@ module _ (x : X) → coherence-square-identifications ( meridian-htpy-suspension-structure h x) - ( left-whisker-identification + ( left-whisker-concat ( meridian-suspension-structure c x) ( south-htpy-in-htpy-suspension-structure H)) - ( right-whisker-identification + ( right-whisker-concat ( north-htpy-in-htpy-suspension-structure H) ( meridian-suspension-structure c' x)) ( meridian-htpy-suspension-structure h' x) diff --git a/src/synthetic-homotopy-theory/suspensions-of-types.lagda.md b/src/synthetic-homotopy-theory/suspensions-of-types.lagda.md index ee62508671..31098b14ff 100644 --- a/src/synthetic-homotopy-theory/suspensions-of-types.lagda.md +++ b/src/synthetic-homotopy-theory/suspensions-of-types.lagda.md @@ -33,7 +33,7 @@ open import foundation.truncation-levels open import foundation.type-arithmetic-dependent-pair-types open import foundation.unit-type open import foundation.universe-levels -open import foundation.whiskering-homotopies +open import foundation.whiskering-homotopies-composition open import synthetic-homotopy-theory.cocones-under-spans open import synthetic-homotopy-theory.dependent-cocones-under-spans diff --git a/src/synthetic-homotopy-theory/universal-property-pushouts.lagda.md b/src/synthetic-homotopy-theory/universal-property-pushouts.lagda.md index 4211aa87a6..41dd74bd99 100644 --- a/src/synthetic-homotopy-theory/universal-property-pushouts.lagda.md +++ b/src/synthetic-homotopy-theory/universal-property-pushouts.lagda.md @@ -30,7 +30,7 @@ open import foundation.subtype-identity-principle open import foundation.transport-along-identifications open import foundation.universal-property-equivalences open import foundation.universe-levels -open import foundation.whiskering-homotopies +open import foundation.whiskering-homotopies-composition open import synthetic-homotopy-theory.cocones-under-spans open import synthetic-homotopy-theory.pullback-property-pushouts diff --git a/src/synthetic-homotopy-theory/universal-property-suspensions.lagda.md b/src/synthetic-homotopy-theory/universal-property-suspensions.lagda.md index 1e078d56e0..4a75f958ba 100644 --- a/src/synthetic-homotopy-theory/universal-property-suspensions.lagda.md +++ b/src/synthetic-homotopy-theory/universal-property-suspensions.lagda.md @@ -15,7 +15,7 @@ open import foundation.homotopies open import foundation.identity-types open import foundation.unit-type open import foundation.universe-levels -open import foundation.whiskering-homotopies +open import foundation.whiskering-homotopies-composition open import synthetic-homotopy-theory.cocones-under-spans open import synthetic-homotopy-theory.suspension-structures diff --git a/src/trees/morphisms-algebras-polynomial-endofunctors.lagda.md b/src/trees/morphisms-algebras-polynomial-endofunctors.lagda.md index 9681e7599f..d9c081ee38 100644 --- a/src/trees/morphisms-algebras-polynomial-endofunctors.lagda.md +++ b/src/trees/morphisms-algebras-polynomial-endofunctors.lagda.md @@ -20,7 +20,7 @@ open import foundation.identity-types open import foundation.structure-identity-principle open import foundation.torsorial-type-families open import foundation.universe-levels -open import foundation.whiskering-homotopies +open import foundation.whiskering-homotopies-composition open import trees.algebras-polynomial-endofunctors open import trees.polynomial-endofunctors diff --git a/src/trees/morphisms-coalgebras-polynomial-endofunctors.lagda.md b/src/trees/morphisms-coalgebras-polynomial-endofunctors.lagda.md index 1099b4385d..cf2affdfe0 100644 --- a/src/trees/morphisms-coalgebras-polynomial-endofunctors.lagda.md +++ b/src/trees/morphisms-coalgebras-polynomial-endofunctors.lagda.md @@ -20,7 +20,7 @@ open import foundation.identity-types open import foundation.structure-identity-principle open import foundation.torsorial-type-families open import foundation.universe-levels -open import foundation.whiskering-homotopies +open import foundation.whiskering-homotopies-composition open import trees.coalgebras-polynomial-endofunctors open import trees.polynomial-endofunctors diff --git a/src/trees/morphisms-enriched-directed-trees.lagda.md b/src/trees/morphisms-enriched-directed-trees.lagda.md index 1e06c262f9..968efd173c 100644 --- a/src/trees/morphisms-enriched-directed-trees.lagda.md +++ b/src/trees/morphisms-enriched-directed-trees.lagda.md @@ -16,7 +16,7 @@ open import foundation.homotopies open import foundation.identity-types open import foundation.transport-along-identifications open import foundation.universe-levels -open import foundation.whiskering-homotopies +open import foundation.whiskering-homotopies-composition open import trees.enriched-directed-trees open import trees.morphisms-directed-trees diff --git a/src/trees/polynomial-endofunctors.lagda.md b/src/trees/polynomial-endofunctors.lagda.md index 398d54325a..793fbf9b59 100644 --- a/src/trees/polynomial-endofunctors.lagda.md +++ b/src/trees/polynomial-endofunctors.lagda.md @@ -19,7 +19,7 @@ open import foundation.identity-types open import foundation.structure-identity-principle open import foundation.transport-along-identifications open import foundation.universe-levels -open import foundation.whiskering-homotopies +open import foundation.whiskering-homotopies-composition open import foundation-core.torsorial-type-families ``` diff --git a/src/trees/w-types.lagda.md b/src/trees/w-types.lagda.md index 31d1a29151..cf2df81dea 100644 --- a/src/trees/w-types.lagda.md +++ b/src/trees/w-types.lagda.md @@ -27,7 +27,7 @@ open import foundation.truncated-types open import foundation.truncation-levels open import foundation.type-theoretic-principle-of-choice open import foundation.universe-levels -open import foundation.whiskering-homotopies +open import foundation.whiskering-homotopies-composition open import trees.algebras-polynomial-endofunctors open import trees.coalgebras-polynomial-endofunctors diff --git a/src/type-theories/dependent-type-theories.lagda.md b/src/type-theories/dependent-type-theories.lagda.md index 0ce64f26d1..5f30fdaa46 100644 --- a/src/type-theories/dependent-type-theories.lagda.md +++ b/src/type-theories/dependent-type-theories.lagda.md @@ -19,7 +19,7 @@ open import foundation.identity-types open import foundation.propositions open import foundation.transport-along-identifications open import foundation.universe-levels -open import foundation.whiskering-identifications +open import foundation.whiskering-identifications-concatenation ``` @@ -334,7 +334,7 @@ We show that systems form a category. ( section-system.slice g ( section-system.type f X)) ( section-system.slice f X) - left-whisker-htpy-hom-system' : + left-whisker-comp-hom-system' : {l1 l2 l3 l4 l5 l6 : Level} {A : system l1 l2} {B B' : system l3 l4} {C C' : system l5 l6} {g : hom-system B C} {g' : hom-system B' C'} (p : Id B B') @@ -348,10 +348,10 @@ We show that systems form a category. htpy-section-system' p' f f' → htpy-section-system' q' (comp-hom-system g f) (comp-hom-system g' f') section-system.type - ( left-whisker-htpy-hom-system' {g = g} refl refl refl refl refl H) X = + ( left-whisker-comp-hom-system' {g = g} refl refl refl refl refl H) X = ap (section-system.type g) (section-system.type H X) section-system.element - ( left-whisker-htpy-hom-system' + ( left-whisker-comp-hom-system' {A = A} {B = B} {g = g} refl refl refl refl refl {f} {f'} H) {X} x = ( tr-ap ( section-system.type g) @@ -360,9 +360,9 @@ We show that systems form a category. ( section-system.element f x)) ∙ ( ap (section-system.element g) (section-system.element H x)) section-system.slice - ( left-whisker-htpy-hom-system' + ( left-whisker-comp-hom-system' {A = A} {B = B} {C = C} {g = g} refl refl refl refl refl H) X = - left-whisker-htpy-hom-system' + left-whisker-comp-hom-system' ( ap (system.slice B) (section-system.type H X)) ( inv ( ap-comp @@ -395,15 +395,15 @@ We show that systems form a category. ( section-system.slice g Y') γ refl = refl - left-whisker-htpy-hom-system : + left-whisker-comp-hom-system : {l1 l2 l3 l4 l5 l6 : Level} {A : system l1 l2} {B : system l3 l4} {C : system l5 l6} (g : hom-system B C) {f f' : hom-system A B} → htpy-hom-system f f' → htpy-hom-system (comp-hom-system g f) (comp-hom-system g f') - left-whisker-htpy-hom-system g H = - left-whisker-htpy-hom-system' refl refl refl refl refl H + left-whisker-comp-hom-system g H = + left-whisker-comp-hom-system' refl refl refl refl refl H - right-whisker-htpy-hom-system' : + right-whisker-comp-hom-system' : {l1 l2 l3 l4 l5 l6 : Level} {A : system l1 l2} {B : system l3 l4} {C C' : system l5 l6} (p : Id C C') {g : hom-system B C} {g' : hom-system B C'} @@ -414,15 +414,15 @@ We show that systems form a category. (H : htpy-section-system' p' g g') → (f : hom-system A B) → htpy-section-system' q' (comp-hom-system g f) (comp-hom-system g' f) - section-system.type (right-whisker-htpy-hom-system' refl refl refl H f) X = + section-system.type (right-whisker-comp-hom-system' refl refl refl H f) X = section-system.type H (section-system.type f X) section-system.element - ( right-whisker-htpy-hom-system' refl refl refl H f) x = + ( right-whisker-comp-hom-system' refl refl refl H f) x = section-system.element H (section-system.element f x) section-system.slice - ( right-whisker-htpy-hom-system' + ( right-whisker-comp-hom-system' {A = A} {B = B} {C = C} refl refl refl H f) X = - right-whisker-htpy-hom-system' + right-whisker-comp-hom-system' ( ap (system.slice C) (section-system.type H (section-system.type f X))) ( inv ( ap-comp @@ -437,14 +437,14 @@ We show that systems form a category. ( section-system.slice H (section-system.type f X)) ( section-system.slice f X) - right-whisker-htpy-hom-system : + right-whisker-comp-hom-system : {l1 l2 l3 l4 l5 l6 : Level} {A : system l1 l2} {B : system l3 l4} {C : system l5 l6} {g g' : hom-system B C} (H : htpy-section-system g g') → (f : hom-system A B) → htpy-section-system (comp-hom-system g f) (comp-hom-system g' f) - right-whisker-htpy-hom-system H f = - right-whisker-htpy-hom-system' refl refl refl H f + right-whisker-comp-hom-system H f = + right-whisker-comp-hom-system' refl refl refl H f ``` --- @@ -974,7 +974,7 @@ We introduce the slice of a dependent type theory. ( section-system.slice f X) ( weakening.type WA X)) ( concat-htpy-hom-system - ( left-whisker-htpy-hom-system + ( left-whisker-comp-hom-system ( section-system.slice g (section-system.type f X)) ( preserves-weakening.type Wf X)) ( concat-htpy-hom-system @@ -984,7 +984,7 @@ We introduce the slice of a dependent type theory. ( weakening.type WB (section-system.type f X)) ( f))) ( concat-htpy-hom-system - ( right-whisker-htpy-hom-system + ( right-whisker-comp-hom-system ( preserves-weakening.type Wg (section-system.type f X)) ( f)) ( associative-comp-hom-system @@ -1010,7 +1010,7 @@ We introduce the slice of a dependent type theory. concat-htpy-hom-system ( associative-comp-hom-system g f (substitution.type SA x)) ( concat-htpy-hom-system - ( left-whisker-htpy-hom-system g + ( left-whisker-comp-hom-system g ( preserves-substitution.type Sf x)) ( concat-htpy-hom-system ( inv-htpy-hom-system @@ -1019,7 +1019,7 @@ We introduce the slice of a dependent type theory. ( section-system.element f x)) ( section-system.slice f X))) ( concat-htpy-hom-system - ( right-whisker-htpy-hom-system + ( right-whisker-comp-hom-system ( preserves-substitution.type Sg ( section-system.element f x)) ( section-system.slice f X)) @@ -1057,7 +1057,7 @@ We introduce the slice of a dependent type theory. ( section-system.element ( section-system.slice (comp-hom-system g f) X) ( generic-element.type δA X))) - ( left-whisker-identification α right-unit)) ∙ + ( left-whisker-concat α right-unit)) ∙ ( ( tr-concat { B = system.element diff --git a/src/univalent-combinatorics/pi-finite-types.lagda.md b/src/univalent-combinatorics/pi-finite-types.lagda.md index 199c63f019..f5b219307f 100644 --- a/src/univalent-combinatorics/pi-finite-types.lagda.md +++ b/src/univalent-combinatorics/pi-finite-types.lagda.md @@ -56,7 +56,7 @@ open import foundation.universal-property-coproduct-types open import foundation.universal-property-empty-type open import foundation.universal-property-unit-type open import foundation.universe-levels -open import foundation.whiskering-homotopies +open import foundation.whiskering-homotopies-composition open import univalent-combinatorics.cartesian-product-types open import univalent-combinatorics.coproduct-types diff --git a/src/univalent-combinatorics/pigeonhole-principle.lagda.md b/src/univalent-combinatorics/pigeonhole-principle.lagda.md index f0c508f0e2..97927d8ab5 100644 --- a/src/univalent-combinatorics/pigeonhole-principle.lagda.md +++ b/src/univalent-combinatorics/pigeonhole-principle.lagda.md @@ -26,7 +26,7 @@ open import foundation.propositional-truncations open import foundation.propositions open import foundation.unit-type open import foundation.universe-levels -open import foundation.whiskering-homotopies +open import foundation.whiskering-homotopies-composition open import univalent-combinatorics.counting open import univalent-combinatorics.embeddings-standard-finite-types diff --git a/tables/identity-types.md b/tables/identity-types.md index ac06ca2af4..50f5794da1 100644 --- a/tables/identity-types.md +++ b/tables/identity-types.md @@ -25,4 +25,4 @@ | Transport along identifications (foundation-core) | [`foundation-core.transport-along-identifications`](foundation-core.transport-along-identifications.md) | | The universal property of identity systems | [`foundation.universal-property-identity-systems`](foundation.universal-property-identity-systems.md) | | The universal property of identity types | [`foundation.universal-property-identity-types`](foundation.universal-property-identity-types.md) | -| Whiskering identifications | [`foundation.whiskering-identifications`](foundation.whiskering-identifications.md) | +| Whiskering identifications | [`foundation.whiskering-identifications-concatenation`](foundation.whiskering-identifications-concatenation.md) | From 539b49107f6969bf4be7ce68e452c7a4707d09ef Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Thu, 1 Feb 2024 21:01:54 +0100 Subject: [PATCH 084/150] work --- .../whiskering-homotopies-composition.lagda.md | 8 ++++---- src/foundation.lagda.md | 1 + src/foundation/commuting-squares-of-maps.lagda.md | 10 +++++----- .../commuting-tetrahedra-of-homotopies.lagda.md | 2 +- .../commuting-triangles-of-homotopies.lagda.md | 2 +- src/foundation/composition-algebra.lagda.md | 4 ++-- src/foundation/precomposition-functions.lagda.md | 2 +- src/foundation/whiskering-operations.lagda.md | 5 ++--- 8 files changed, 17 insertions(+), 17 deletions(-) diff --git a/src/foundation-core/whiskering-homotopies-composition.lagda.md b/src/foundation-core/whiskering-homotopies-composition.lagda.md index 2600486b1d..1303a8d2c9 100644 --- a/src/foundation-core/whiskering-homotopies-composition.lagda.md +++ b/src/foundation-core/whiskering-homotopies-composition.lagda.md @@ -177,11 +177,11 @@ module _ {l1 l2 l3 : Level} {A : UU l1} {B : A → UU l2} {C : A → UU l3} where - distributive-left-whisker-concat-htpy : + distributive-left-whisker-comp-concat : { 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-whisker-concat-htpy k H K a = + distributive-left-whisker-comp-concat k H K a = ap-concat k (H a) (K a) module _ @@ -190,9 +190,9 @@ module _ (H : {x : A} → f {x} ~ g {x}) (K : {x : A} → g {x} ~ h {x}) where - distributive-right-whisker-concat-htpy : + distributive-right-whisker-comp-concat : (H ∙h K) ·r k ~ (H ·r k) ∙h (K ·r k) - distributive-right-whisker-concat-htpy = refl-htpy + distributive-right-whisker-comp-concat = refl-htpy ``` ### Whiskering preserves function composition diff --git a/src/foundation.lagda.md b/src/foundation.lagda.md index 6460e116f8..82166e8019 100644 --- a/src/foundation.lagda.md +++ b/src/foundation.lagda.md @@ -421,4 +421,5 @@ open import foundation.weakly-constant-maps public open import foundation.whiskering-higher-homotopies-composition public open import foundation.whiskering-homotopies-composition public open import foundation.whiskering-identifications-concatenation public +open import foundation.whiskering-operations public ``` diff --git a/src/foundation/commuting-squares-of-maps.lagda.md b/src/foundation/commuting-squares-of-maps.lagda.md index 2a98ed7866..19340b146a 100644 --- a/src/foundation/commuting-squares-of-maps.lagda.md +++ b/src/foundation/commuting-squares-of-maps.lagda.md @@ -487,7 +487,7 @@ module _ assoc-pasting-vertical-coherence-square-maps = ( ap-concat-htpy ( sq-bottom ·r mid-left ·r top-left) - ( ( distributive-left-whisker-concat-htpy + ( ( distributive-left-whisker-comp-concat ( bottom-right) ( sq-mid ·r top-left) ( mid-right ·l sq-top)) ∙h @@ -681,7 +681,7 @@ module _ ( sq-right-bottom))) commutative-pasting-vertical-pasting-horizontal-coherence-square-maps = ( ap-concat-htpy' _ - ( distributive-left-whisker-concat-htpy + ( distributive-left-whisker-comp-concat ( bottom-right) ( sq-left-bottom ·r left-top) ( mid-bottom ·l sq-left-top)) ∙h @@ -702,7 +702,7 @@ module _ ( sq-right-bottom))))) ∙h ( ap-concat-htpy _ ( inv-htpy - ( distributive-left-whisker-concat-htpy + ( distributive-left-whisker-comp-concat ( right-bottom) ( mid-right ·l sq-left-top) ( sq-right-top ·r top-left)))) @@ -815,7 +815,7 @@ module _ ap ( eq-htpy) ( eq-htpy - ( distributive-left-whisker-concat-htpy + ( distributive-left-whisker-comp-concat ( h) ( bottom-right ·l H) ( K ·r top-left))) @@ -903,7 +903,7 @@ module _ ap ( eq-htpy) ( eq-htpy - ( distributive-left-whisker-concat-htpy + ( distributive-left-whisker-comp-concat ( h) ( K ·r left-top) ( right-bottom ·l H))) diff --git a/src/foundation/commuting-tetrahedra-of-homotopies.lagda.md b/src/foundation/commuting-tetrahedra-of-homotopies.lagda.md index 96cf5e9289..da36dae5ab 100644 --- a/src/foundation/commuting-tetrahedra-of-homotopies.lagda.md +++ b/src/foundation/commuting-tetrahedra-of-homotopies.lagda.md @@ -30,7 +30,7 @@ is a commuting diagram of the form | / \ | ∨ / ∨ ∨ h ----------> i. - bottom + bottom ``` where `f`, `g`, `h`, and `i` are functions. diff --git a/src/foundation/commuting-triangles-of-homotopies.lagda.md b/src/foundation/commuting-triangles-of-homotopies.lagda.md index 7232f0c84f..7a65a8fbba 100644 --- a/src/foundation/commuting-triangles-of-homotopies.lagda.md +++ b/src/foundation/commuting-triangles-of-homotopies.lagda.md @@ -122,7 +122,7 @@ module _ where left-whisker-coherence-triangle-homotopies : - (T : coherence-triangle-homotopies left right top)→ + (T : coherence-triangle-homotopies left right top) → coherence-triangle-homotopies {f = i} (H ∙h left) right (H ∙h top) left-whisker-coherence-triangle-homotopies T x = left-whisker-coherence-triangle-identifications diff --git a/src/foundation/composition-algebra.lagda.md b/src/foundation/composition-algebra.lagda.md index d20309d99c..8b57a2e172 100644 --- a/src/foundation/composition-algebra.lagda.md +++ b/src/foundation/composition-algebra.lagda.md @@ -138,7 +138,7 @@ module _ (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-concat-htpy i H K))) ∙ + ( ap eq-htpy (eq-htpy (distributive-left-whisker-comp-concat i H K))) ∙ ( eq-htpy-concat-htpy (i ·l H) (i ·l K)) ``` @@ -235,7 +235,7 @@ module _ (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-concat-htpy i H K))) ∙ + ( ap eq-htpy (eq-htpy (distributive-right-whisker-comp-concat i H K))) ∙ ( eq-htpy-concat-htpy (H ·r i) (K ·r i)) ``` diff --git a/src/foundation/precomposition-functions.lagda.md b/src/foundation/precomposition-functions.lagda.md index 4696a20ef5..d061aa14af 100644 --- a/src/foundation/precomposition-functions.lagda.md +++ b/src/foundation/precomposition-functions.lagda.md @@ -72,7 +72,7 @@ compute-concat-htpy-precomp : compute-concat-htpy-precomp H K C k = ( ap ( eq-htpy) - ( eq-htpy (distributive-left-whisker-concat-htpy k H K))) ∙ + ( eq-htpy (distributive-left-whisker-comp-concat k H K))) ∙ ( eq-htpy-concat-htpy (k ·l H) (k ·l K)) ``` diff --git a/src/foundation/whiskering-operations.lagda.md b/src/foundation/whiskering-operations.lagda.md index b9a5d92a59..c7a170c58d 100644 --- a/src/foundation/whiskering-operations.lagda.md +++ b/src/foundation/whiskering-operations.lagda.md @@ -82,14 +82,14 @@ naming scheme for all the variations of whiskering that exist in the we define the whiskering operations ```text - left-whisker-concat-htpy : + left-whisker-comp-concat : (H : f ~ g) {K L : g ~ h} → K ~ L → H ∙h K ~ H ∙h L ``` and ```text - right-whisker-concat-htpy : + right-whisker-comp-concat : {H K : f ~ g} → H ~ K → (L : g ~ h) → H ∙h L ~ K ∙h L ``` @@ -120,7 +120,6 @@ naming scheme for all the variations of whiskering that exist in the ```agda module _ {l1 l2 l3 : Level} {A : UU l1} {R : A → A → UU l2} - where left-whiskering-operation : From 2c0be80aa4d372a91e73cb1c99bc9843d8d72fa6 Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Thu, 1 Feb 2024 23:59:15 +0100 Subject: [PATCH 085/150] work on lifting squares --- ...ommuting-tetrahedra-of-homotopies.lagda.md | 8 +- ...commuting-triangles-of-homotopies.lagda.md | 20 +- ...iskering-homotopies-concatenation.lagda.md | 5 + .../lifting-squares.lagda.md | 450 +++++++++++------- 4 files changed, 291 insertions(+), 192 deletions(-) create mode 100644 src/foundation/whiskering-homotopies-concatenation.lagda.md diff --git a/src/foundation/commuting-tetrahedra-of-homotopies.lagda.md b/src/foundation/commuting-tetrahedra-of-homotopies.lagda.md index da36dae5ab..49e156ade6 100644 --- a/src/foundation/commuting-tetrahedra-of-homotopies.lagda.md +++ b/src/foundation/commuting-tetrahedra-of-homotopies.lagda.md @@ -52,14 +52,14 @@ module _ coherence-tetrahedron-homotopies : UU (l1 ⊔ l2) coherence-tetrahedron-homotopies = ( ( upper-right) ∙h - ( right-whisker-coherence-triangle-homotopies + ( right-whisker-concat-coherence-triangle-homotopies ( top) ( diagonal-up) ( left) ( right) ( upper-left))) ~ ( ( lower-left) ∙h - ( left-whisker-coherence-triangle-homotopies + ( left-whisker-concat-coherence-triangle-homotopies ( left) ( bottom) ( right) @@ -70,7 +70,7 @@ module _ coherence-tetrahedron-homotopies' : UU (l1 ⊔ l2) coherence-tetrahedron-homotopies' = ( ( lower-left) ∙h - ( left-whisker-coherence-triangle-homotopies + ( left-whisker-concat-coherence-triangle-homotopies ( left) ( bottom) ( right) @@ -78,7 +78,7 @@ module _ ( lower-right)) ∙h ( assoc-htpy left diagonal-up right)) ~ ( ( upper-right) ∙h - ( right-whisker-coherence-triangle-homotopies + ( right-whisker-concat-coherence-triangle-homotopies ( top) ( diagonal-up) ( left) diff --git a/src/foundation/commuting-triangles-of-homotopies.lagda.md b/src/foundation/commuting-triangles-of-homotopies.lagda.md index 7a65a8fbba..6c085a7971 100644 --- a/src/foundation/commuting-triangles-of-homotopies.lagda.md +++ b/src/foundation/commuting-triangles-of-homotopies.lagda.md @@ -76,25 +76,23 @@ module _ ### Left whiskering triangles of homotopies ```agda -{- module _ {l1 l2 : Level} {A : UU l1} {B : A → UU l2} {f g h : (x : A) → B x} (left : f ~ h) (right : g ~ h) (top : f ~ g) where - right-whisker-coherence-triangle-homotopies : + right-whisker-concat-coherence-triangle-homotopies : {i : (x : A) → B x} (H : h ~ i) → coherence-triangle-homotopies left right top → coherence-triangle-homotopies (left ∙h H) (right ∙h H) top - right-whisker-coherence-triangle-homotopies H T x = + right-whisker-concat-coherence-triangle-homotopies H T x = right-whisker-coherence-triangle-identifications ( left x) ( right x) ( top x) ( H x) ( T x) --} module _ {l1 l2 : Level} {A : UU l1} {B : UU l2} @@ -102,13 +100,13 @@ module _ {left : f ~ h} (right : g ~ h) {top : f ~ g} where - right-whisker-coherence-triangle-homotopies : + right-whisker-comp-coherence-triangle-homotopies : {l3 : Level} {X : UU l3} (i : B → X) (T : coherence-triangle-homotopies left right top) → coherence-triangle-homotopies {f = i ∘ f} {i ∘ g} {i ∘ h} (i ·l left) (i ·l right) (i ·l top) - right-whisker-coherence-triangle-homotopies i = + right-whisker-comp-coherence-triangle-homotopies i = distributivity-left-whisker i left right top ``` @@ -121,10 +119,10 @@ module _ (left : f ~ h) (right : g ~ h) (top : f ~ g) where - left-whisker-coherence-triangle-homotopies : + left-whisker-concat-coherence-triangle-homotopies : (T : coherence-triangle-homotopies left right top) → coherence-triangle-homotopies {f = i} (H ∙h left) right (H ∙h top) - left-whisker-coherence-triangle-homotopies T x = + left-whisker-concat-coherence-triangle-homotopies T x = left-whisker-coherence-triangle-identifications ( H x) ( left x) @@ -132,19 +130,17 @@ module _ ( top x) ( T x) -{- module _ {l1 l2 : Level} {A : UU l1} {B : UU l2} {f g h : A → B} {left : f ~ h} (right : g ~ h) {top : f ~ g} where - left-whisker-coherence-triangle-homotopies : + left-whisker-comp-coherence-triangle-homotopies : {l3 : Level} {X : UU l3} (T : coherence-triangle-homotopies left right top) (i : X → A) → coherence-triangle-homotopies {f = f ∘ i} {g ∘ i} {h ∘ i} (left ·r i) (right ·r i) (top ·r i) - left-whisker-coherence-triangle-homotopies T i = T ∘ i --} + left-whisker-comp-coherence-triangle-homotopies T i = T ∘ i ``` diff --git a/src/foundation/whiskering-homotopies-concatenation.lagda.md b/src/foundation/whiskering-homotopies-concatenation.lagda.md new file mode 100644 index 0000000000..2dce7173af --- /dev/null +++ b/src/foundation/whiskering-homotopies-concatenation.lagda.md @@ -0,0 +1,5 @@ +# Whiskering homotopies with respect to concatenation + +```agda +module foundation.whiskering-homotopies-concatenation where +``` diff --git a/src/orthogonal-factorization-systems/lifting-squares.lagda.md b/src/orthogonal-factorization-systems/lifting-squares.lagda.md index f67ebcd933..a90b7e19e9 100644 --- a/src/orthogonal-factorization-systems/lifting-squares.lagda.md +++ b/src/orthogonal-factorization-systems/lifting-squares.lagda.md @@ -8,6 +8,7 @@ module orthogonal-factorization-systems.lifting-squares where ```agda open import foundation.action-on-identifications-functions +open import foundation.commuting-squares-of-homotopies open import foundation.commuting-squares-of-maps open import foundation.commuting-tetrahedra-of-homotopies open import foundation.commuting-triangles-of-homotopies @@ -17,6 +18,7 @@ open import foundation.fibered-maps open import foundation.function-types open import foundation.homotopies open import foundation.identity-types +open import foundation.morphisms-arrows open import foundation.path-algebra open import foundation.universe-levels open import foundation.whiskering-homotopies-composition @@ -30,112 +32,212 @@ open import orthogonal-factorization-systems.lifts-of-maps ## Idea -A **lifting square** is a commuting square +A **lifting square** of a commuting square ```text h - A ------> B + A ------> X | | f| |g | | - V V - X ------> Y + ∨ ∨ + B ------> Y i ``` -together with a diagonal map `j : X → B` such that the complete diagram +consists of a diagonal map `j : B → B` such that the complete diagram ```text h - A --------> B + A --------> X | ∧ | f| j / |g | / | - V / V - X --------> Y + ∨ / ∨ + B --------> Y i ``` -commutes. This we phrase as `j` being a simultaneous extension of `h` along `f` -and lift of `i` along `g`, satisfying a higher coherence with the original -commutativity proof. +commutes. We note that there is a canonical map -## Definition +```text + hom-arrow-map : (B → X) → hom-arrow f g. +``` + +Therefore we see that a lifting square consists of a morphism `α : hom-arrow f g` of arrows from `f` to `g`, a map `j : B → X`, and a homotopy of morphisms of arrow `hom-arrow-map f ~ α`. + +## Definitions + +### Morphisms of arrows obtained from maps ```agda module _ - {l1 l2 l3 l4 : Level} - {A : UU l1} {B : UU l2} {X : UU l3} {Y : UU l4} - (h : A → B) (f : A → X) (g : B → Y) (i : X → Y) - (H : coherence-square-maps h f g i) + {l1 l2 l3 l4 : Level} {A : UU l1} {X : UU l2} {B : UU l3} {Y : UU l4} + (f : A → B) (g : X → Y) where - is-lifting-square : (j : X → B) → UU (l1 ⊔ l2 ⊔ l3 ⊔ l4) - is-lifting-square j = - Σ ( is-extension f h j) - ( λ E → Σ (is-lift g i j) (λ L → (L ·r f) ~ (H ∙h (g ·l E)))) + map-domain-hom-arrow-map : (B → X) → A → X + map-domain-hom-arrow-map j = j ∘ f - lifting-square : UU (l1 ⊔ l2 ⊔ l3 ⊔ l4) - lifting-square = Σ (X → B) (is-lifting-square) + map-codomain-hom-arrow-map : (B → X) → B → Y + map-codomain-hom-arrow-map j = g ∘ j + + coh-hom-arrow-map : + (j : B → X) → + coherence-hom-arrow f g + ( map-domain-hom-arrow-map j) + ( map-codomain-hom-arrow-map j) + coh-hom-arrow-map j = refl-htpy + + hom-arrow-map : (B → X) → hom-arrow f g + pr1 (hom-arrow-map j) = map-domain-hom-arrow-map j + pr1 (pr2 (hom-arrow-map j)) = map-codomain-hom-arrow-map j + pr2 (pr2 (hom-arrow-map j)) = coh-hom-arrow-map j +``` +### The predicate of being a lifting square + +```agda module _ {l1 l2 l3 l4 : Level} - {A : UU l1} {B : UU l2} {X : UU l3} {Y : UU l4} - {h : A → B} {f : A → X} {g : B → Y} {i : X → Y} - {H : coherence-square-maps h f g i} + {A : UU l1} {X : UU l2} {B : UU l3} {Y : UU l4} + (f : A → B) (g : X → Y) (α : hom-arrow f g) (j : B → X) where - map-diagonal-lifting-square : lifting-square h f g i H → (X → B) - map-diagonal-lifting-square = pr1 + is-lifting-square : UU (l1 ⊔ l2 ⊔ l3 ⊔ l4) + is-lifting-square = htpy-hom-arrow f g α (hom-arrow-map f g j) is-extension-is-lifting-square : - {j : X → B} → is-lifting-square h f g i H j → is-extension f h j + is-lifting-square → + is-extension f (map-domain-hom-arrow f g α) j is-extension-is-lifting-square = pr1 + is-lift-is-lifting-square : + is-lifting-square → is-lift g (map-codomain-hom-arrow f g α) j + is-lift-is-lifting-square = pr1 ∘ pr2 + + coherence-is-lifting-square : + (l : is-lifting-square) → + coherence-square-homotopies + ( is-lift-is-lifting-square l ·r f) + ( coh-hom-arrow f g α) + ( coh-hom-arrow-map f g j) + ( g ·l is-extension-is-lifting-square l) + coherence-is-lifting-square = pr2 ∘ pr2 +``` + +### Lifting squares + +```agda +module _ + {l1 l2 l3 l4 : Level} + {A : UU l1} {X : UU l2} {B : UU l3} {Y : UU l4} + (f : A → B) (g : X → Y) (α : hom-arrow f g) + where + + lifting-square : UU (l1 ⊔ l2 ⊔ l3 ⊔ l4) + lifting-square = Σ (B → X) (is-lifting-square f g α) + + map-diagonal-lifting-square : lifting-square → (B → X) + map-diagonal-lifting-square = pr1 + is-extension-lifting-square : - (l : lifting-square h f g i H) → - is-extension f h (map-diagonal-lifting-square l) + (l : lifting-square) → + is-extension f (map-domain-hom-arrow f g α) (map-diagonal-lifting-square l) is-extension-lifting-square = pr1 ∘ pr2 - extension-lifting-square : lifting-square h f g i H → extension f h + extension-lifting-square : + lifting-square → extension f (map-domain-hom-arrow f g α) pr1 (extension-lifting-square L) = map-diagonal-lifting-square L pr2 (extension-lifting-square L) = is-extension-lifting-square L - is-lift-is-lifting-square : - {j : X → B} → is-lifting-square h f g i H j → is-lift g i j - is-lift-is-lifting-square = pr1 ∘ pr2 - is-lift-lifting-square : - (l : lifting-square h f g i H) → - is-lift g i (map-diagonal-lifting-square l) + (l : lifting-square) → + is-lift g (map-codomain-hom-arrow f g α) (map-diagonal-lifting-square l) is-lift-lifting-square = pr1 ∘ (pr2 ∘ pr2) - lift-lifting-square : lifting-square h f g i H → lift g i + lift-lifting-square : lifting-square → lift g (map-codomain-hom-arrow f g α) pr1 (lift-lifting-square L) = map-diagonal-lifting-square L pr2 (lift-lifting-square L) = is-lift-lifting-square L - coherence-is-lifting-square : - {j : X → B} → (l : is-lifting-square h f g i H j) → - ( is-lift-is-lifting-square l ·r f) ~ - ( H ∙h (g ·l is-extension-is-lifting-square l)) - coherence-is-lifting-square = pr2 ∘ pr2 - coherence-lifting-square : - (l : lifting-square h f g i H) → - (is-lift-lifting-square l ·r f) ~ - (H ∙h (g ·l is-extension-lifting-square l)) + (l : lifting-square) → + coherence-square-homotopies + ( is-lift-lifting-square l ·r f) + ( coh-hom-arrow f g α) + ( coh-hom-arrow-map f g (map-diagonal-lifting-square l)) + ( g ·l is-extension-lifting-square l) coherence-lifting-square = pr2 ∘ (pr2 ∘ pr2) ``` ## Properties +### Transporting the structure of being a lifting square along homotopies of diagonal maps + +```agda +module _ + {l1 l2 l3 l4 : Level} {A : UU l1} {B : UU l2} {X : UU l3} {Y : UU l4} + (f : A → B) (g : X → Y) (α : hom-arrow f g) + {j k : B → X} (H : j ~ k) (l : is-lifting-square f g α j) + where + + htpy-domain-tr-htpy-is-lifting-square : + map-domain-hom-arrow f g α ~ map-domain-hom-arrow-map f g k + htpy-domain-tr-htpy-is-lifting-square = + is-extension-is-lifting-square f g α j l ∙h H ·r f + + htpy-codomain-tr-htpy-is-lifting-square : + map-codomain-hom-arrow f g α ~ map-codomain-hom-arrow-map f g k + htpy-codomain-tr-htpy-is-lifting-square = + is-lift-is-lifting-square f g α j l ∙h g ·l H + + coh-tr-htpy-is-lifting-square : + coherence-htpy-hom-arrow f g α + ( hom-arrow-map f g k) + ( htpy-domain-tr-htpy-is-lifting-square) + ( htpy-codomain-tr-htpy-is-lifting-square) + coh-tr-htpy-is-lifting-square = ? + +{- + coherence-square-homotopies + ( (is-lift-is-lifting-square f g α j l ·r f) ∙h (g ·l H ·r f)) + ( coh-hom-arrow f g α) + ( g ·l (is-extension-is-lifting-square f g α j l ∙h H ·r f)) + + coherence-square-homotopies + ( (is-lift-is-lifting-square f g α j l ·r f) ∙h (g ·l H ·r f)) + ( coh-hom-arrow f g α) + ( coh-hom-arrow-map f g k) --refl-htpy + ( g ·l (is-extension-is-lifting-square f g α j l ∙h H ·r f)) + +-} + + tr-htpy-is-lifting-square : is-lifting-square f g α k + pr1 tr-htpy-is-lifting-square = htpy-domain-tr-htpy-is-lifting-square + pr1 (pr2 tr-htpy-is-lifting-square) = htpy-codomain-tr-htpy-is-lifting-square + pr2 (pr2 tr-htpy-is-lifting-square) = coh-tr-htpy-is-lifting-square +``` + ### Characterization of identifications of lifting squares -````agda +```agda +module _ + {l1 l2 l3 l4 : Level} + {A : UU l1} {X : UU l2} {B : UU l3} {Y : UU l4} + (f : A → B) (g : X → Y) (α : hom-arrow f g) + where + + coherence-htpy-lifting-square : + {j k : B → X} → j ~ k → UU {!!} + coherence-htpy-lifting-square = {!!} + +``` + +```text module _ {l1 l2 l3 l4 : Level} - {A : UU l1} {B : UU l2} {X : UU l3} {Y : UU l4} - (h : A → B) (f : A → X) (g : B → Y) (i : X → Y) + {A : UU l1} {X : UU l2} {B : UU l3} {Y : UU l4} + (h : A → X) (f : A → B) (g : X → Y) (i : B → Y) (H : coherence-square-maps h f g i) where @@ -160,13 +262,8 @@ module _ ( g ·l is-extension-lifting-square l) ( is-lift-lifting-square l' ·r f) ( coherence-lifting-square l) - ( left-whisker-coherence-triangle-homotopies - {!!} - {!!} - {!!} - {!g ·l K!} - {!coherence-lifting-square l!}) --(K ·r f) g E) - ( -whisker-coherence-triangle-homotopies {!!} {!!} {!!} {!!} {!!}) --(g ·l K) L f) + ( right-whisker-comp-coherence-triangle-homotopies (K ·r f) g E) + ( left-whisker-comp-coherence-triangle-homotopies (g ·l K) L f) ( coherence-lifting-square l') htpy-lifting-square : @@ -182,122 +279,123 @@ module _ ( is-lift-lifting-square l ∙h (g ·l K))) ( coherence-htpy-lifting-square l l' K E))) --- refl-htpy-lifting-square : --- (l : lifting-square h f g i H) → htpy-lifting-square l l --- pr1 (refl-htpy-lifting-square l) = refl-htpy --- pr1 (pr2 (refl-htpy-lifting-square l)) = inv-htpy-right-unit-htpy --- pr1 (pr2 (pr2 (refl-htpy-lifting-square l))) = inv-htpy-right-unit-htpy --- pr2 (pr2 (pr2 (refl-htpy-lifting-square l))) x = --- ( inv (assoc (inv right-unit) (β) (α))) ∙ --- ( ( right-whisker-concat --- ( ( left-whisker-concat --- ( inv right-unit) --- ( ( right-transpose-eq-concat _ _ _ --- ( inv --- ( compute-refl-right-whisker-concat --- ( coherence-lifting-square l x)))) ∙ --- ( assoc --- ( right-unit) --- ( coherence-lifting-square l x) --- ( inv right-unit)))) ∙ --- ( is-retraction-inv-concat --- ( right-unit) --- ( coherence-lifting-square l x ∙ inv right-unit))) --- ( α)) ∙ --- ( ( assoc (coherence-lifting-square l x) (inv right-unit) (α)) ∙ --- ( ( left-whisker-concat --- ( coherence-lifting-square l x) --- ( ( left-whisker-concat --- ( inv right-unit) --- ( right-unit-law-assoc --- ( H x) --- ( ap g (is-extension-lifting-square l x)))) ∙ --- ( ( is-retraction-inv-concat --- ( right-unit) --- ( left-whisker-concat (H x) (inv right-unit))) ∙ --- ( inv --- ( is-section-inv-concat' α --- ( left-whisker-concat (H x) (inv right-unit))))))) ∙ --- ( ( inv --- ( assoc --- ( coherence-lifting-square l x) --- ( left-whisker-concat (H x) (inv right-unit) ∙ inv α) --- ( α))) ∙ --- ( ap --- ( λ r → --- ( ( coherence-lifting-square l x) ∙ --- ( left-whisker-concat (H x) r ∙ inv α)) ∙ --- ( α)) --- ( compute-refl-right-map-coherence-triangle-identifications --- ( g) --- ( is-extension-lifting-square l x))))))) --- where --- α = assoc (H x) (ap g (is-extension-lifting-square l x)) refl --- β = right-whisker-concat (coherence-lifting-square l x) refl - --- htpy-eq-lifting-square : --- (l l' : lifting-square h f g i H) → l = l' → htpy-lifting-square l l' --- htpy-eq-lifting-square l .l refl = refl-htpy-lifting-square l --- ``` - --- It remains to show that `coherence-htpy-lifting-square` indeed is a --- characterization of identifications of lifting squares. - --- ### Diagonal maps give lifting squares - --- The diagram - --- ```text --- A B --- | ^ | --- f| j / |g --- | / | --- V / V --- X Y --- ``` - --- gives rise to a lifting square - --- ```text --- j ∘ f --- A ------> B --- | ^ | --- f| j / |g --- | / | --- V / V --- X ------> Y --- g ∘ j --- ``` - --- ```agda --- module _ --- {l1 l2 l3 l4 : Level} {A : UU l1} {B : UU l2} {X : UU l3} {Y : UU l4} --- (f : A → X) (g : B → Y) --- where - --- is-lifting-square-diagonal : --- (j : X → B) → is-lifting-square (j ∘ f) f g (g ∘ j) refl-htpy j --- pr1 (is-lifting-square-diagonal j) = refl-htpy --- pr1 (pr2 (is-lifting-square-diagonal j)) = refl-htpy --- pr2 (pr2 (is-lifting-square-diagonal j)) = refl-htpy --- ``` - --- ### The lifting square associated to a fibered map - --- ```agda --- module _ --- {l1 l2 l3 l4 : Level} {A : UU l1} {B : UU l2} {X : UU l3} {Y : UU l4} --- (f : A → B) (g : X → Y) --- where - --- lifting-square-fibered-map : --- (h : fibered-map f g) → UU (l1 ⊔ l2 ⊔ l3 ⊔ l4) --- lifting-square-fibered-map h = --- lifting-square --- ( map-total-fibered-map f g h) --- ( f) --- ( g) --- ( map-base-fibered-map f g h) --- ( is-map-over-map-total-fibered-map f g h) --- ``` -```` + refl-htpy-lifting-square : + (l : lifting-square h f g i H) → htpy-lifting-square l l + pr1 (refl-htpy-lifting-square l) = refl-htpy + pr1 (pr2 (refl-htpy-lifting-square l)) = inv-htpy-right-unit-htpy + pr1 (pr2 (pr2 (refl-htpy-lifting-square l))) = inv-htpy-right-unit-htpy + pr2 (pr2 (pr2 (refl-htpy-lifting-square l))) x = {!!} + {- + ( inv (assoc (inv right-unit) (β) (α))) ∙ + ( ( right-whisker-concat + ( ( left-whisker-concat + ( inv right-unit) + ( ( right-transpose-eq-concat _ _ _ + ( inv + ( compute-refl-right-whisker-concat + ( coherence-lifting-square l x)))) ∙ + ( assoc + ( right-unit) + ( coherence-lifting-square l x) + ( inv right-unit)))) ∙ + ( is-retraction-inv-concat + ( right-unit) + ( coherence-lifting-square l x ∙ inv right-unit))) + ( α)) ∙ + ( ( assoc (coherence-lifting-square l x) (inv right-unit) (α)) ∙ + ( ( left-whisker-concat + ( coherence-lifting-square l x) + ( ( left-whisker-concat + ( inv right-unit) + ( right-unit-law-assoc + ( H x) + ( ap g (is-extension-lifting-square l x)))) ∙ + ( ( is-retraction-inv-concat + ( right-unit) + ( left-whisker-concat (H x) (inv right-unit))) ∙ + ( inv + ( is-section-inv-concat' α + ( left-whisker-concat (H x) (inv right-unit))))))) ∙ + ( ( inv + ( assoc + ( coherence-lifting-square l x) + ( left-whisker-concat (H x) (inv right-unit) ∙ inv α) + ( α))) ∙ + ( ap + ( λ r → + ( ( coherence-lifting-square l x) ∙ + ( left-whisker-concat (H x) r ∙ inv α)) ∙ + ( α)) + ( compute-refl-right-map-coherence-triangle-identifications + ( g) + ( is-extension-lifting-square l x))))))) -} + where + α = assoc (H x) (ap g (is-extension-lifting-square l x)) refl + β = right-whisker-concat (coherence-lifting-square l x) refl + + htpy-eq-lifting-square : + (l l' : lifting-square h f g i H) → l = l' → htpy-lifting-square l l' + htpy-eq-lifting-square l .l refl = refl-htpy-lifting-square l +``` + +It remains to show that `coherence-htpy-lifting-square` indeed is a +characterization of identifications of lifting squares. + +### Diagonal maps give lifting squares + +The diagram + +```text + A X + | ^ | + f| j / |g + | / | + V / V + B Y +``` + +gives rise to a lifting square + +```text + j ∘ f + A ------> X + | ^ | + f| j / |g + | / | + V / V + B ------> Y + g ∘ j +``` + +```text +module _ + {l1 l2 l3 l4 : Level} {A : UU l1} {X : UU l2} {B : UU l3} {Y : UU l4} + (f : A → B) (g : X → Y) + where + + is-lifting-square-diagonal : + (j : B → X) → is-lifting-square (j ∘ f) f g (g ∘ j) refl-htpy j + pr1 (is-lifting-square-diagonal j) = refl-htpy + pr1 (pr2 (is-lifting-square-diagonal j)) = refl-htpy + pr2 (pr2 (is-lifting-square-diagonal j)) = refl-htpy +``` + +### The lifting square associated to a fibered map + +```text +module _ + {l1 l2 l3 l4 : Level} {A : UU l1} {X : UU l2} {B : UU l3} {Y : UU l4} + (f : A → X) (g : B → Y) + where + + lifting-square-fibered-map : + (h : fibered-map f g) → UU (l1 ⊔ l2 ⊔ l3 ⊔ l4) + lifting-square-fibered-map h = + lifting-square + ( map-total-fibered-map f g h) + ( f) + ( g) + ( map-base-fibered-map f g h) + ( is-map-over-map-total-fibered-map f g h) +``` + From a5a337b240088c753f0f27705381bbfa81723be7 Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Fri, 2 Feb 2024 17:54:04 +0100 Subject: [PATCH 086/150] work --- .../commuting-squares-of-homotopies.lagda.md | 46 +++++ .../function-extensionality.lagda.md | 6 +- .../commuting-squares-of-homotopies.lagda.md | 188 ++++++++++++++++- .../commuting-squares-of-maps.lagda.md | 2 +- .../function-extensionality.lagda.md | 2 +- .../functoriality-fibers-of-maps.lagda.md | 2 +- src/foundation/morphisms-arrows.lagda.md | 9 +- ...recomposition-dependent-functions.lagda.md | 2 +- src/foundation/sequential-limits.lagda.md | 2 +- ...whiskering-homotopies-composition.lagda.md | 191 +----------------- ...iskering-homotopies-concatenation.lagda.md | 86 ++++++++ ...ing-identifications-concatenation.lagda.md | 27 ++- src/foundation/whiskering-operations.lagda.md | 4 +- .../lifting-squares.lagda.md | 74 +------ ...rphisms-arrows-from-diagonal-maps.lagda.md | 105 ++++++++++ 15 files changed, 462 insertions(+), 284 deletions(-) create mode 100644 src/foundation-core/commuting-squares-of-homotopies.lagda.md create mode 100644 src/orthogonal-factorization-systems/morphisms-arrows-from-diagonal-maps.lagda.md diff --git a/src/foundation-core/commuting-squares-of-homotopies.lagda.md b/src/foundation-core/commuting-squares-of-homotopies.lagda.md new file mode 100644 index 0000000000..1aa30e7fd5 --- /dev/null +++ b/src/foundation-core/commuting-squares-of-homotopies.lagda.md @@ -0,0 +1,46 @@ +# Commuting squares of homotopies + +```agda +module foundation-core.commuting-squares-of-homotopies where +``` + +
Imports + +```agda +open import foundation.universe-levels + +open import foundation-core.equivalences +open import foundation-core.homotopies +``` + +
+ +## Idea + +A square of [homotopies](foundation-core.homotopies.md) + +```text + top + f ------> g + | | + left | | right + v v + h ------> i + bottom +``` + +is said to **commute** if there is a homotopy `left ∙h bottom ~ top ∙h right `. +Such a homotopy is called a **coherence** of the square. + +## Definition + +```agda +module _ + {l1 l2 : Level} {A : UU l1} {B : A → UU l2} {f g h i : (x : A) → B x} + where + + coherence-square-homotopies : + (top : f ~ g) (left : f ~ h) (right : g ~ i) (bottom : h ~ i) → UU (l1 ⊔ l2) + coherence-square-homotopies top left right bottom = + left ∙h bottom ~ top ∙h right +``` diff --git a/src/foundation-core/function-extensionality.lagda.md b/src/foundation-core/function-extensionality.lagda.md index bef193187e..13ff0474ea 100644 --- a/src/foundation-core/function-extensionality.lagda.md +++ b/src/foundation-core/function-extensionality.lagda.md @@ -186,7 +186,7 @@ Then the square [commutes](foundation-core.commuting-squares-of-maps.md). ```agda -coherence-square-homotopies-eq-ap-precomp-Π : +coherence-square-homotopies-htpy-eq-ap-precomp-Π : {l1 l2 l3 : Level} {A : UU l1} {B : UU l2} (f : A → B) {C : B → UU l3} (g h : (b : B) → C b) → coherence-square-maps @@ -194,7 +194,7 @@ coherence-square-homotopies-eq-ap-precomp-Π : ( htpy-eq) ( htpy-eq) ( precomp-Π f (eq-value g h)) -coherence-square-homotopies-eq-ap-precomp-Π f g .g refl = refl +coherence-square-homotopies-htpy-eq-ap-precomp-Π f g .g refl = refl ``` #### Naturality of `htpy-eq` with respect to precomposition of ordinary functions @@ -223,7 +223,7 @@ coherence-square-homotopies-eq-ap-precomp : ( htpy-eq) ( precomp-Π f (eq-value g h)) coherence-square-homotopies-eq-ap-precomp f = - coherence-square-homotopies-eq-ap-precomp-Π f + coherence-square-homotopies-htpy-eq-ap-precomp-Π f ``` #### Naturality of `htpy-eq` with respect to postcomposition of dependent functions diff --git a/src/foundation/commuting-squares-of-homotopies.lagda.md b/src/foundation/commuting-squares-of-homotopies.lagda.md index a6459cf3fa..83eef43acc 100644 --- a/src/foundation/commuting-squares-of-homotopies.lagda.md +++ b/src/foundation/commuting-squares-of-homotopies.lagda.md @@ -2,13 +2,17 @@ ```agda module foundation.commuting-squares-of-homotopies where + +open import foundation-core.commuting-squares-of-homotopies public ```
Imports ```agda +open import foundation.functoriality-dependent-function-types open import foundation.universe-levels +open import foundation-core.equivalences open import foundation-core.homotopies ``` @@ -31,15 +35,187 @@ A square of [homotopies](foundation-core.homotopies.md) is said to **commute** if there is a homotopy `left ∙h bottom ~ top ∙h right `. Such a homotopy is called a **coherence** of the square. -## Definition +### Whiskering a square of homotopies by a homotopy is an equivalence + +A +[commuting square of homotopies](foundation.commuting-squares-of-homotopies.md) +may be whiskered by a homotopy `L` on the left or right, which results in a +commuting square of homotopies with `L` appended or prepended to the two ways of +going around the square. + +Diagrammatically, we may turn the pasting diagram + +```text + H + f ----> g + | | + H' | ⇗ | K + ∨ ∨ + g' ----> h ----> k + K' L +``` + +into a commmuting square + +```text + H + f ---------> g + | | + H' | ⇗ | K ∙h L + ∨ ∨ + g' ---------> k, + K' ∙h L +``` + +and similarly for the other side. + +```agda +module _ + { l1 l2 : Level} {A : UU l1} {B : UU l2} + { f g g' h k : A → B} + where + + module _ + ( H : f ~ g) (H' : f ~ g') {K : g ~ h} {K' : g' ~ h} (L : h ~ k) + where + + equiv-right-whisker-coherence-square-homotopies : + ( coherence-square-homotopies H H' K K') ≃ + ( coherence-square-homotopies H H' (K ∙h L) (K' ∙h L)) + equiv-right-whisker-coherence-square-homotopies = + equiv-Π-equiv-family + ( λ a → + equiv-right-whisker-coherence-square-identifications + ( H a) + ( H' a) + ( K a) + ( K' a) + ( L a)) + + right-whisker-coherence-square-homotopies : + coherence-square-homotopies H H' K K' → + coherence-square-homotopies H H' (K ∙h L) (K' ∙h L) + right-whisker-coherence-square-homotopies = + map-equiv equiv-right-whisker-coherence-square-homotopies + + right-unwhisker-coherence-square-homotopies : + coherence-square-homotopies H H' (K ∙h L) (K' ∙h L) → + coherence-square-homotopies H H' K K' + right-unwhisker-coherence-square-homotopies = + map-inv-equiv equiv-right-whisker-coherence-square-homotopies + + module _ + ( L : k ~ f) {H : f ~ g} {H' : f ~ g'} {K : g ~ h} {K' : g' ~ h} + where + + equiv-left-whisker-coherence-square-homotopies : + ( coherence-square-homotopies H H' K K') ≃ + ( coherence-square-homotopies (L ∙h H) (L ∙h H') K K') + equiv-left-whisker-coherence-square-homotopies = + equiv-Π-equiv-family + ( λ a → + equiv-left-whisker-coherence-square-identifications + ( L a) + ( H a) + ( H' a) + ( K a) + ( K' a)) + + left-whisker-coherence-square-homotopies : + coherence-square-homotopies H H' K K' → + coherence-square-homotopies (L ∙h H) (L ∙h H') K K' + left-whisker-coherence-square-homotopies = + map-equiv equiv-left-whisker-coherence-square-homotopies + + left-unwhisker-coherence-square-homotopies : + coherence-square-homotopies (L ∙h H) (L ∙h H') K K' → + coherence-square-homotopies H H' K K' + left-unwhisker-coherence-square-homotopies = + map-inv-equiv equiv-left-whisker-coherence-square-homotopies + +module _ + { l1 l2 : Level} {A : UU l1} {B : UU l2} + { f g h h' k m : A → B} + ( H : f ~ g) {K : g ~ h} {K' : g ~ h'} {L : h ~ k} {L' : h' ~ k} (M : k ~ m) + where + + equiv-double-whisker-coherence-square-homotopies : + ( coherence-square-homotopies K K' L L') ≃ + ( coherence-square-homotopies (H ∙h K) (H ∙h K') (L ∙h M) (L' ∙h M)) + equiv-double-whisker-coherence-square-homotopies = + equiv-Π-equiv-family + ( λ a → + equiv-double-whisker-square-identifications + ( H a) + ( K a) + ( K' a) + ( L a) + ( L' a) + ( M a)) + + double-whisker-coherence-square-homotopies : + ( coherence-square-homotopies K K' L L') → + ( coherence-square-homotopies (H ∙h K) (H ∙h K') (L ∙h M) (L' ∙h M)) + double-whisker-coherence-square-homotopies = + map-equiv equiv-double-whisker-coherence-square-homotopies + + both-unwhisker-coherence-square-homotopies : + ( coherence-square-homotopies (H ∙h K) (H ∙h K') (L ∙h M) (L' ∙h M)) → + ( coherence-square-homotopies K K' L L') + both-unwhisker-coherence-square-homotopies = + map-inv-equiv equiv-double-whisker-coherence-square-homotopies +``` + +### Whiskering a square of homotopies by a map + +Given a square of homotopies + +```text + H + g ~~~~~ h + ︴ ︴ + H' ︴ ⇗ ︴ K + ︴ ︴ + h' ~~~~~ k + K' +``` + +and a map `f`, we may whisker it by a map on the left into a square of +homotopies + +```text + f ·l H + fg ~~~~~ fh + ︴ ︴ + f ·l H' ︴ ⇗ ︴f ·l K + ︴ ︴ + fh' ~~~~~ fk + f ·l K' , +``` + +and similarly we may whisker it on the right. ```agda module _ - {l1 l2 : Level} {A : UU l1} {B : A → UU l2} {f g h i : (x : A) → B x} + { l1 l2 l3 : Level} {A : UU l1} {B : UU l2} {C : UU l3} + ( f : B → C) {g h h' k : A → B} + ( H : g ~ h) (H' : g ~ h') {K : h ~ k} {K' : h' ~ k} + where + + ap-left-whisker-coherence-square-homotopies : + coherence-square-homotopies H H' K K' → + coherence-square-homotopies (f ·l H) (f ·l H') (f ·l K) (f ·l K') + ap-left-whisker-coherence-square-homotopies α a = + map-coherence-square-identifications f (H a) (H' a) (K a) (K' a) (α a) + +module _ + { l1 l2 l3 : Level} {A : UU l1} {B : UU l2} {C : UU l3} + { g h h' k : B → C} (H : g ~ h) (H' : g ~ h') {K : h ~ k} {K' : h' ~ k} + ( f : A → B) where - coherence-square-homotopies : - (top : f ~ g) (left : f ~ h) (right : g ~ i) (bottom : h ~ i) → UU (l1 ⊔ l2) - coherence-square-homotopies top left right bottom = - left ∙h bottom ~ top ∙h right + ap-right-whisker-coherence-square-homotopies : + coherence-square-homotopies H H' K K' → + coherence-square-homotopies (H ·r f) (H' ·r f) (K ·r f) (K' ·r f) + ap-right-whisker-coherence-square-homotopies α = α ·r f ``` diff --git a/src/foundation/commuting-squares-of-maps.lagda.md b/src/foundation/commuting-squares-of-maps.lagda.md index 19340b146a..ea3687a9fd 100644 --- a/src/foundation/commuting-squares-of-maps.lagda.md +++ b/src/foundation/commuting-squares-of-maps.lagda.md @@ -12,7 +12,7 @@ open import foundation-core.commuting-squares-of-maps public open import foundation.action-on-higher-identifications-functions open import foundation.action-on-identifications-binary-functions open import foundation.action-on-identifications-functions -open import foundation.commuting-squares-of-homotopies +open import foundation-core.commuting-squares-of-homotopies open import foundation.commuting-squares-of-identifications open import foundation.commuting-triangles-of-maps open import foundation.equivalences diff --git a/src/foundation/function-extensionality.lagda.md b/src/foundation/function-extensionality.lagda.md index 4d90589263..2208745e99 100644 --- a/src/foundation/function-extensionality.lagda.md +++ b/src/foundation/function-extensionality.lagda.md @@ -69,7 +69,7 @@ coherence-square-eq-htpy-ap-precomp-Π f {C = C} g h = ( equiv-funext) ( equiv-funext) ( precomp-Π f (eq-value g h)) - ( coherence-square-homotopies-eq-ap-precomp-Π f g h) + ( coherence-square-homotopies-htpy-eq-ap-precomp-Π f g h) ``` #### Naturality of `eq-htpy` with respect to precomposition of ordinary functions diff --git a/src/foundation/functoriality-fibers-of-maps.lagda.md b/src/foundation/functoriality-fibers-of-maps.lagda.md index 4c3c411b12..798179dc38 100644 --- a/src/foundation/functoriality-fibers-of-maps.lagda.md +++ b/src/foundation/functoriality-fibers-of-maps.lagda.md @@ -9,12 +9,12 @@ module foundation.functoriality-fibers-of-maps where ```agda open import foundation.action-on-higher-identifications-functions open import foundation.action-on-identifications-functions -open import foundation.commuting-squares-of-homotopies open import foundation.cones-over-cospan-diagrams open import foundation.dependent-pair-types open import foundation.morphisms-arrows open import foundation.universe-levels +open import foundation-core.commuting-squares-of-homotopies open import foundation-core.commuting-squares-of-maps open import foundation-core.equality-dependent-pair-types open import foundation-core.fibers-of-maps diff --git a/src/foundation/morphisms-arrows.lagda.md b/src/foundation/morphisms-arrows.lagda.md index 437111ae13..fc4a1e3cdd 100644 --- a/src/foundation/morphisms-arrows.lagda.md +++ b/src/foundation/morphisms-arrows.lagda.md @@ -8,7 +8,6 @@ module foundation.morphisms-arrows where ```agda open import foundation.action-on-identifications-functions -open import foundation.commuting-squares-of-homotopies open import foundation.commuting-squares-of-identifications open import foundation.commuting-triangles-of-identifications open import foundation.dependent-pair-types @@ -19,6 +18,7 @@ open import foundation.structure-identity-principle open import foundation.universe-levels open import foundation.whiskering-identifications-concatenation +open import foundation-core.commuting-squares-of-homotopies open import foundation-core.commuting-squares-of-maps open import foundation-core.equivalences open import foundation-core.function-extensionality @@ -501,6 +501,12 @@ module _ Exercise for Fredrik. +### Homotopies of homotopies of arrows + +```agda + +``` + ### Morphisms of arrows give morphisms of precomposition arrows A morphism of arrows `α : f → g` gives a morphism of precomposition arrows @@ -665,3 +671,4 @@ module _ - [Morphisms of twisted arrows](foundation.morphisms-twisted-arrows.md). - [Fibered maps](foundation.fibered-maps.md) for the same concept under a different name. +- [Morphisms of arrows obtained from diagonal maps](orthogonal-factorization-systems.morphisms-arrows-from-diagonal-maps.md) diff --git a/src/foundation/precomposition-dependent-functions.lagda.md b/src/foundation/precomposition-dependent-functions.lagda.md index 12d6f0d876..01cf118f9b 100644 --- a/src/foundation/precomposition-dependent-functions.lagda.md +++ b/src/foundation/precomposition-dependent-functions.lagda.md @@ -55,7 +55,7 @@ is-trunc-map-succ-precomp-Π {k = k} {f = f} {C = C} H = ( htpy-eq) ( htpy-eq) ( precomp-Π f (eq-value g h)) - ( coherence-square-homotopies-eq-ap-precomp-Π f g h) + ( coherence-square-homotopies-htpy-eq-ap-precomp-Π f g h) ( funext g h) ( funext (g ∘ f) (h ∘ f)) ( H g h)) diff --git a/src/foundation/sequential-limits.lagda.md b/src/foundation/sequential-limits.lagda.md index c01524227e..df449c56cb 100644 --- a/src/foundation/sequential-limits.lagda.md +++ b/src/foundation/sequential-limits.lagda.md @@ -10,7 +10,7 @@ module foundation.sequential-limits where open import elementary-number-theory.natural-numbers open import foundation.action-on-identifications-functions -open import foundation.commuting-squares-of-homotopies +open import foundation-core.commuting-squares-of-homotopies open import foundation.cones-over-inverse-sequential-diagrams open import foundation.dependent-pair-types open import foundation.equality-dependent-function-types diff --git a/src/foundation/whiskering-homotopies-composition.lagda.md b/src/foundation/whiskering-homotopies-composition.lagda.md index 14adcae27c..3723a41c78 100644 --- a/src/foundation/whiskering-homotopies-composition.lagda.md +++ b/src/foundation/whiskering-homotopies-composition.lagda.md @@ -10,7 +10,7 @@ open import foundation-core.whiskering-homotopies-composition public ```agda open import foundation.action-on-identifications-functions -open import foundation.commuting-squares-of-homotopies +open import foundation-core.commuting-squares-of-homotopies open import foundation.commuting-squares-of-identifications open import foundation.homotopy-induction open import foundation.path-algebra @@ -73,7 +73,7 @@ module _ compute-eq-htpy-htpy-eq-right-whisker : ( p : f = g) → - eq-htpy ((htpy-eq p) ·r h) = ap (precomp h C) p + eq-htpy (htpy-eq p ·r h) = ap (precomp h C) p compute-eq-htpy-htpy-eq-right-whisker refl = eq-htpy-refl-htpy (f ∘ h) @@ -94,7 +94,7 @@ module _ where compute-eq-htpy-htpy-eq-left-whisker : - ( p : f = g) → eq-htpy (h ·l (htpy-eq p)) = ap (postcomp A h) p + ( p : f = g) → eq-htpy (h ·l htpy-eq p) = ap (postcomp A h) p compute-eq-htpy-htpy-eq-left-whisker refl = eq-htpy-refl-htpy (h ∘ f) @@ -108,191 +108,6 @@ module _ ( compute-eq-htpy-htpy-eq-left-whisker (eq-htpy H)) ``` -### Whiskering a square of homotopies by a homotopy is an equivalence - -A -[commuting square of homotopies](foundation.commuting-squares-of-homotopies.md) -may be whiskered by a homotopy `L` on the left or right, which results in a -commuting square of homotopies with `L` appended or prepended to the two ways of -going around the square. - -Diagrammatically, we may turn the pasting diagram - -```text - H - f ~~~~~ g - ︴ ︴ - H' ︴ ⇗ ︴ K - ︴ ︴ - g' ~~~~~ h ~~~~~ k - K' L -``` - -into a commmuting square - -```text - H - f ~~~~~ g - ︴ ︴ - H' ︴ ⇗ ︴K ∙h L - ︴ ︴ - g' ~~~~~ k - K' ∙h L , -``` - -and similarly for the other side. - -```agda -module _ - { l1 l2 : Level} {A : UU l1} {B : UU l2} - { f g g' h k : A → B} - where - - module _ - ( H : f ~ g) (H' : f ~ g') {K : g ~ h} {K' : g' ~ h} (L : h ~ k) - where - - equiv-right-whisker-coherence-square-homotopies : - ( coherence-square-homotopies H H' K K') ≃ - ( coherence-square-homotopies H H' (K ∙h L) (K' ∙h L)) - equiv-right-whisker-coherence-square-homotopies = - equiv-Π-equiv-family - ( λ a → - equiv-right-whisker-coherence-square-identifications - ( H a) - ( H' a) - ( K a) - ( K' a) - ( L a)) - - right-whisker-coherence-square-homotopies : - coherence-square-homotopies H H' K K' → - coherence-square-homotopies H H' (K ∙h L) (K' ∙h L) - right-whisker-coherence-square-homotopies = - map-equiv equiv-right-whisker-coherence-square-homotopies - - right-unwhisker-coherence-square-homotopies : - coherence-square-homotopies H H' (K ∙h L) (K' ∙h L) → - coherence-square-homotopies H H' K K' - right-unwhisker-coherence-square-homotopies = - map-inv-equiv equiv-right-whisker-coherence-square-homotopies - - module _ - ( L : k ~ f) {H : f ~ g} {H' : f ~ g'} {K : g ~ h} {K' : g' ~ h} - where - - equiv-left-whisker-coherence-square-homotopies : - ( coherence-square-homotopies H H' K K') ≃ - ( coherence-square-homotopies (L ∙h H) (L ∙h H') K K') - equiv-left-whisker-coherence-square-homotopies = - equiv-Π-equiv-family - ( λ a → - equiv-left-whisker-coherence-square-identifications - ( L a) - ( H a) - ( H' a) - ( K a) - ( K' a)) - - left-whisker-coherence-square-homotopies : - coherence-square-homotopies H H' K K' → - coherence-square-homotopies (L ∙h H) (L ∙h H') K K' - left-whisker-coherence-square-homotopies = - map-equiv equiv-left-whisker-coherence-square-homotopies - - left-unwhisker-coherence-square-homotopies : - coherence-square-homotopies (L ∙h H) (L ∙h H') K K' → - coherence-square-homotopies H H' K K' - left-unwhisker-coherence-square-homotopies = - map-inv-equiv equiv-left-whisker-coherence-square-homotopies - -module _ - { l1 l2 : Level} {A : UU l1} {B : UU l2} - { f g h h' k m : A → B} - ( H : f ~ g) {K : g ~ h} {K' : g ~ h'} {L : h ~ k} {L' : h' ~ k} (M : k ~ m) - where - - equiv-double-whisker-coherence-square-homotopies : - ( coherence-square-homotopies K K' L L') ≃ - ( coherence-square-homotopies (H ∙h K) (H ∙h K') (L ∙h M) (L' ∙h M)) - equiv-double-whisker-coherence-square-homotopies = - equiv-Π-equiv-family - ( λ a → - equiv-double-whisker-square-identifications - ( H a) - ( K a) - ( K' a) - ( L a) - ( L' a) - ( M a)) - - double-whisker-coherence-square-homotopies : - ( coherence-square-homotopies K K' L L') → - ( coherence-square-homotopies (H ∙h K) (H ∙h K') (L ∙h M) (L' ∙h M)) - double-whisker-coherence-square-homotopies = - map-equiv equiv-double-whisker-coherence-square-homotopies - - both-unwhisker-coherence-square-homotopies : - ( coherence-square-homotopies (H ∙h K) (H ∙h K') (L ∙h M) (L' ∙h M)) → - ( coherence-square-homotopies K K' L L') - both-unwhisker-coherence-square-homotopies = - map-inv-equiv equiv-double-whisker-coherence-square-homotopies -``` - -### Whiskering a square of homotopies by a map - -Given a square of homotopies - -```text - H - g ~~~~~ h - ︴ ︴ - H' ︴ ⇗ ︴ K - ︴ ︴ - h' ~~~~~ k - K' -``` - -and a map `f`, we may whisker it by a map on the left into a square of -homotopies - -```text - f ·l H - fg ~~~~~ fh - ︴ ︴ - f ·l H' ︴ ⇗ ︴f ·l K - ︴ ︴ - fh' ~~~~~ fk - f ·l K' , -``` - -and similarly we may whisker it on the right. - -```agda -module _ - { l1 l2 l3 : Level} {A : UU l1} {B : UU l2} {C : UU l3} - ( f : B → C) {g h h' k : A → B} - ( H : g ~ h) (H' : g ~ h') {K : h ~ k} {K' : h' ~ k} - where - - ap-left-whisker-coherence-square-homotopies : - coherence-square-homotopies H H' K K' → - coherence-square-homotopies (f ·l H) (f ·l H') (f ·l K) (f ·l K') - ap-left-whisker-coherence-square-homotopies α a = - map-coherence-square-identifications f (H a) (H' a) (K a) (K' a) (α a) - -module _ - { l1 l2 l3 : Level} {A : UU l1} {B : UU l2} {C : UU l3} - { g h h' k : B → C} (H : g ~ h) (H' : g ~ h') {K : h ~ k} {K' : h' ~ k} - ( f : A → B) - where - - ap-right-whisker-coherence-square-homotopies : - coherence-square-homotopies H H' K K' → - coherence-square-homotopies (H ·r f) (H' ·r f) (K ·r f) (K' ·r f) - ap-right-whisker-coherence-square-homotopies α = α ·r f -``` - ### The two definitions of horizontal concatenation of homotopies agree ```agda diff --git a/src/foundation/whiskering-homotopies-concatenation.lagda.md b/src/foundation/whiskering-homotopies-concatenation.lagda.md index 2dce7173af..919dfe4abf 100644 --- a/src/foundation/whiskering-homotopies-concatenation.lagda.md +++ b/src/foundation/whiskering-homotopies-concatenation.lagda.md @@ -3,3 +3,89 @@ ```agda module foundation.whiskering-homotopies-concatenation where ``` + +
Imports + +```agda +open import foundation.functoriality-dependent-function-types +open import foundation.universe-levels +open import foundation.whiskering-identifications-concatenation +open import foundation.whiskering-operations + +open import foundation-core.equivalences +open import foundation-core.homotopies +``` + +
+ +## 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 ∙ I ~ 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 + +```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) +``` + +### Right whiskering of homotopies with respect to concatenation + +```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) +``` + +## Properties + +### Left whiskering of homotopies with respect to concatenation is an equivalence + +```agda +module _ + {l1 l2 : Level} {A : UU l1} {B : A → UU l2} + where + + is-equiv-left-whisker-concat-htpy : + {f g h : (x : A) → B x} (H : f ~ g) {I J : g ~ h} → + is-equiv (left-whisker-concat-htpy H {I} {J}) + is-equiv-left-whisker-concat-htpy H = + is-equiv-map-Π-is-fiberwise-equiv + ( λ x → is-equiv-left-whisker-concat (H x)) +``` + +### Right whiskering of homotopies with respect to concatenation is an equivalence + +```agda +module _ + {l1 l2 : Level} {A : UU l1} {B : A → UU l2} + where + + is-equiv-right-whisker-concat-htpy : + {f g h : (x : A) → B x} {H I : f ~ g} (J : g ~ h) → + is-equiv (λ (K : H ~ I) → right-whisker-concat-htpy K J) + is-equiv-right-whisker-concat-htpy J = + is-equiv-map-Π-is-fiberwise-equiv + ( λ x → is-equiv-right-whisker-concat (J x)) +``` diff --git a/src/foundation/whiskering-identifications-concatenation.lagda.md b/src/foundation/whiskering-identifications-concatenation.lagda.md index 5a126cefb2..aa97b2edf7 100644 --- a/src/foundation/whiskering-identifications-concatenation.lagda.md +++ b/src/foundation/whiskering-identifications-concatenation.lagda.md @@ -11,6 +11,7 @@ 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 @@ -44,25 +45,39 @@ operations are equivalences. ### Left whiskering of identifications +Left whiskering of identifications with respect to concatenation is an operation + +```text + (p : x = y) {q r : y = z} → q = r → p ∙ q = p ∙ r +``` + +on any type. + ```agda module _ - {l : Level} {A : UU l} {x y z : A} + {l : Level} {A : UU l} where - left-whisker-concat : - (p : x = y) {q q' : y = z} → q = q' → (p ∙ q) = (p ∙ q') + left-whisker-concat : left-whiskering-operation A _=_ _∙_ _=_ left-whisker-concat p β = ap (p ∙_) β ``` ### Right whiskering of identifications +Right whiskering of identifications with respect to concatenation is an operation + +```text + {p q : x = y} → p = q → (r : y = z) → p ∙ r = q ∙ r +``` + +on any type. + ```agda module _ - {l : Level} {A : UU l} {x y z : A} + {l : Level} {A : UU l} where - right-whisker-concat : - {p p' : x = y} → p = p' → (q : y = z) → (p ∙ q) = (p' ∙ q) + right-whisker-concat : right-whiskering-operation A _=_ _∙_ _=_ right-whisker-concat α q = ap (_∙ q) α ``` diff --git a/src/foundation/whiskering-operations.lagda.md b/src/foundation/whiskering-operations.lagda.md index c7a170c58d..bee7eecf9c 100644 --- a/src/foundation/whiskering-operations.lagda.md +++ b/src/foundation/whiskering-operations.lagda.md @@ -119,7 +119,7 @@ naming scheme for all the variations of whiskering that exist in the ```agda module _ - {l1 l2 l3 : Level} {A : UU l1} {R : A → A → UU l2} + {l1 l2 l3 : Level} (A : UU l1) (R : A → A → UU l2) where left-whiskering-operation : @@ -139,7 +139,7 @@ module _ ```agda module _ - {l1 l2 l3 : Level} {A : UU l1} {R : A → A → UU l2} + {l1 l2 l3 : Level} (A : UU l1) (R : A → A → UU l2) where right-whiskering-operation : diff --git a/src/orthogonal-factorization-systems/lifting-squares.lagda.md b/src/orthogonal-factorization-systems/lifting-squares.lagda.md index a90b7e19e9..dcca6592e2 100644 --- a/src/orthogonal-factorization-systems/lifting-squares.lagda.md +++ b/src/orthogonal-factorization-systems/lifting-squares.lagda.md @@ -26,6 +26,7 @@ open import foundation.whiskering-identifications-concatenation open import orthogonal-factorization-systems.extensions-of-maps open import orthogonal-factorization-systems.lifts-of-maps +open import orthogonal-factorization-systems.morphisms-arrows-from-diagonal-maps ```
@@ -68,33 +69,6 @@ Therefore we see that a lifting square consists of a morphism `α : hom-arrow f ## Definitions -### Morphisms of arrows obtained from maps - -```agda -module _ - {l1 l2 l3 l4 : Level} {A : UU l1} {X : UU l2} {B : UU l3} {Y : UU l4} - (f : A → B) (g : X → Y) - where - - map-domain-hom-arrow-map : (B → X) → A → X - map-domain-hom-arrow-map j = j ∘ f - - map-codomain-hom-arrow-map : (B → X) → B → Y - map-codomain-hom-arrow-map j = g ∘ j - - coh-hom-arrow-map : - (j : B → X) → - coherence-hom-arrow f g - ( map-domain-hom-arrow-map j) - ( map-codomain-hom-arrow-map j) - coh-hom-arrow-map j = refl-htpy - - hom-arrow-map : (B → X) → hom-arrow f g - pr1 (hom-arrow-map j) = map-domain-hom-arrow-map j - pr1 (pr2 (hom-arrow-map j)) = map-codomain-hom-arrow-map j - pr2 (pr2 (hom-arrow-map j)) = coh-hom-arrow-map j -``` - ### The predicate of being a lifting square ```agda @@ -172,52 +146,6 @@ module _ ## Properties -### Transporting the structure of being a lifting square along homotopies of diagonal maps - -```agda -module _ - {l1 l2 l3 l4 : Level} {A : UU l1} {B : UU l2} {X : UU l3} {Y : UU l4} - (f : A → B) (g : X → Y) (α : hom-arrow f g) - {j k : B → X} (H : j ~ k) (l : is-lifting-square f g α j) - where - - htpy-domain-tr-htpy-is-lifting-square : - map-domain-hom-arrow f g α ~ map-domain-hom-arrow-map f g k - htpy-domain-tr-htpy-is-lifting-square = - is-extension-is-lifting-square f g α j l ∙h H ·r f - - htpy-codomain-tr-htpy-is-lifting-square : - map-codomain-hom-arrow f g α ~ map-codomain-hom-arrow-map f g k - htpy-codomain-tr-htpy-is-lifting-square = - is-lift-is-lifting-square f g α j l ∙h g ·l H - - coh-tr-htpy-is-lifting-square : - coherence-htpy-hom-arrow f g α - ( hom-arrow-map f g k) - ( htpy-domain-tr-htpy-is-lifting-square) - ( htpy-codomain-tr-htpy-is-lifting-square) - coh-tr-htpy-is-lifting-square = ? - -{- - coherence-square-homotopies - ( (is-lift-is-lifting-square f g α j l ·r f) ∙h (g ·l H ·r f)) - ( coh-hom-arrow f g α) - ( g ·l (is-extension-is-lifting-square f g α j l ∙h H ·r f)) - - coherence-square-homotopies - ( (is-lift-is-lifting-square f g α j l ·r f) ∙h (g ·l H ·r f)) - ( coh-hom-arrow f g α) - ( coh-hom-arrow-map f g k) --refl-htpy - ( g ·l (is-extension-is-lifting-square f g α j l ∙h H ·r f)) - --} - - tr-htpy-is-lifting-square : is-lifting-square f g α k - pr1 tr-htpy-is-lifting-square = htpy-domain-tr-htpy-is-lifting-square - pr1 (pr2 tr-htpy-is-lifting-square) = htpy-codomain-tr-htpy-is-lifting-square - pr2 (pr2 tr-htpy-is-lifting-square) = coh-tr-htpy-is-lifting-square -``` - ### Characterization of identifications of lifting squares ```agda diff --git a/src/orthogonal-factorization-systems/morphisms-arrows-from-diagonal-maps.lagda.md b/src/orthogonal-factorization-systems/morphisms-arrows-from-diagonal-maps.lagda.md new file mode 100644 index 0000000000..45d3b4d946 --- /dev/null +++ b/src/orthogonal-factorization-systems/morphisms-arrows-from-diagonal-maps.lagda.md @@ -0,0 +1,105 @@ +# Morphisms of arrows obtained from diagonal maps + +```agda +module orthogonal-factorization-systems.morphisms-arrows-from-diagonal-maps where +``` + +
Imports + +```agda +open import foundation.dependent-pair-types +open import foundation.morphisms-arrows +open import foundation.universe-levels +open import foundation.whiskering-homotopies-composition + +open import foundation-core.function-types +open import foundation-core.homotopies +``` + +
+ +## Idea + +Consider a pair of maps `f : A → B` and `g : X → Y`. Then there is an operation `hom-arrow-map` that takes any `j : B → X` as in the diagram + +```text + A X + | ∧ | + f | j/ | g + ∨ / ∨ + B Y +``` + +to a [morphism of arrows](foundation.morphisms-arrows.md) from `f` to `g` as in the diagram + +```text + j ∘ f + A ----------> X + | | + f | refl-htpy | g + ∨ ∨ + B ----------> Y. + g ∘ j +``` + +This operation is studied in [Lifting squares](orthogonal-factorization-systems.lifting-squares.md). + +## Definitions + +### Morphisms of arrows obtained from diagonal maps + +```agda +module _ + {l1 l2 l3 l4 : Level} {A : UU l1} {X : UU l2} {B : UU l3} {Y : UU l4} + (f : A → B) (g : X → Y) + where + + map-domain-hom-arrow-map : (B → X) → A → X + map-domain-hom-arrow-map j = j ∘ f + + map-codomain-hom-arrow-map : (B → X) → B → Y + map-codomain-hom-arrow-map j = g ∘ j + + coh-hom-arrow-map : + (j : B → X) → + coherence-hom-arrow f g + ( map-domain-hom-arrow-map j) + ( map-codomain-hom-arrow-map j) + coh-hom-arrow-map j = refl-htpy + + hom-arrow-map : (B → X) → hom-arrow f g + pr1 (hom-arrow-map j) = map-domain-hom-arrow-map j + pr1 (pr2 (hom-arrow-map j)) = map-codomain-hom-arrow-map j + pr2 (pr2 (hom-arrow-map j)) = coh-hom-arrow-map j +``` + +### The action on homotopies of `hom-arrow-map` + +```agda +module _ + {l1 l2 l3 l4 : Level} {A : UU l1} {X : UU l2} {B : UU l3} {Y : UU l4} + (f : A → B) (g : X → Y) {j k : B → X} (H : j ~ k) + where + + htpy-domain-htpy-hom-arrow-htpy : + map-domain-hom-arrow-map f g j ~ map-domain-hom-arrow-map f g k + htpy-domain-htpy-hom-arrow-htpy = H ·r f + + htpy-codomain-htpy-hom-arrow-htpy : + map-codomain-hom-arrow-map f g j ~ map-codomain-hom-arrow-map f g k + htpy-codomain-htpy-hom-arrow-htpy = g ·l H + + coh-htpy-hom-arrow-htpy : + coherence-htpy-hom-arrow f g + ( hom-arrow-map f g j) + ( hom-arrow-map f g k) + ( htpy-domain-htpy-hom-arrow-htpy) + ( htpy-codomain-htpy-hom-arrow-htpy) + coh-htpy-hom-arrow-htpy = inv-htpy right-unit-htpy + + htpy-hom-arrow-htpy : + htpy-hom-arrow f g (hom-arrow-map f g j) (hom-arrow-map f g k) + pr1 htpy-hom-arrow-htpy = htpy-domain-htpy-hom-arrow-htpy + pr1 (pr2 htpy-hom-arrow-htpy) = htpy-codomain-htpy-hom-arrow-htpy + pr2 (pr2 htpy-hom-arrow-htpy) = coh-htpy-hom-arrow-htpy +``` From 9e4d1d8d00557e5666f0769e0c8bca7d5be51507 Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Fri, 2 Feb 2024 17:54:28 +0100 Subject: [PATCH 087/150] work --- src/foundation/whiskering-homotopies-concatenation.lagda.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/foundation/whiskering-homotopies-concatenation.lagda.md b/src/foundation/whiskering-homotopies-concatenation.lagda.md index 919dfe4abf..3176f7b6fa 100644 --- a/src/foundation/whiskering-homotopies-concatenation.lagda.md +++ b/src/foundation/whiskering-homotopies-concatenation.lagda.md @@ -89,3 +89,9 @@ module _ is-equiv-map-Π-is-fiberwise-equiv ( λ x → is-equiv-right-whisker-concat (J x)) ``` + +### The unit and absorption laws for left whiskering of homotopies with respect to concatenation + +```agda + +``` From 2177aa41ead3e9ac20be3158b866c93bea0774e6 Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Fri, 2 Feb 2024 17:54:40 +0100 Subject: [PATCH 088/150] work --- src/orthogonal-factorization-systems/lifting-squares.lagda.md | 1 - 1 file changed, 1 deletion(-) diff --git a/src/orthogonal-factorization-systems/lifting-squares.lagda.md b/src/orthogonal-factorization-systems/lifting-squares.lagda.md index dcca6592e2..2f4af80dd6 100644 --- a/src/orthogonal-factorization-systems/lifting-squares.lagda.md +++ b/src/orthogonal-factorization-systems/lifting-squares.lagda.md @@ -158,7 +158,6 @@ module _ coherence-htpy-lifting-square : {j k : B → X} → j ~ k → UU {!!} coherence-htpy-lifting-square = {!!} - ``` ```text From c82391b17b313fb9583a9b4ae719635cd9965a26 Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Sat, 3 Feb 2024 10:02:47 +0100 Subject: [PATCH 089/150] work --- src/foundation-core.lagda.md | 2 +- .../coherently-invertible-maps.lagda.md | 2 +- .../commuting-prisms-of-maps.lagda.md | 2 +- .../commuting-squares-of-maps.lagda.md | 2 +- .../commuting-triangles-of-maps.lagda.md | 22 +- src/foundation-core/equivalences.lagda.md | 15 +- .../function-extensionality.lagda.md | 2 +- src/foundation-core/retractions.lagda.md | 2 +- src/foundation-core/sections.lagda.md | 2 +- ...whiskering-homotopies-composition.lagda.md | 276 ------------------ src/foundation/axiom-of-choice.lagda.md | 2 +- .../coherently-invertible-maps.lagda.md | 2 +- .../commuting-cubes-of-maps.lagda.md | 2 +- .../commuting-prisms-of-maps.lagda.md | 1 + .../commuting-squares-of-homotopies.lagda.md | 216 +++++++++----- .../commuting-squares-of-maps.lagda.md | 8 +- .../commuting-tetrahedra-of-maps.lagda.md | 2 +- ...commuting-triangles-of-homotopies.lagda.md | 2 +- .../commuting-triangles-of-maps.lagda.md | 21 ++ src/foundation/composition-algebra.lagda.md | 4 +- .../cones-over-cospan-diagrams.lagda.md | 2 +- ...-over-inverse-sequential-diagrams.lagda.md | 2 +- .../coproduct-decompositions.lagda.md | 2 +- src/foundation/coslice.lagda.md | 2 +- .../exponents-set-quotients.lagda.md | 2 +- src/foundation/fibered-maps.lagda.md | 2 +- .../function-extensionality.lagda.md | 2 +- ...oriality-dependent-function-types.lagda.md | 2 +- .../functoriality-fibers-of-maps.lagda.md | 2 +- ...oriality-propositional-truncation.lagda.md | 2 +- .../functoriality-set-truncation.lagda.md | 2 +- .../functoriality-truncation.lagda.md | 2 +- src/foundation/homotopies.lagda.md | 2 +- src/foundation/homotopy-algebra.lagda.md | 77 +++++ src/foundation/invertible-maps.lagda.md | 2 +- src/foundation/involutions.lagda.md | 2 +- .../iterating-automorphisms.lagda.md | 2 +- src/foundation/monomorphisms.lagda.md | 2 +- src/foundation/morphisms-arrows.lagda.md | 2 +- ...hisms-inverse-sequential-diagrams.lagda.md | 2 +- src/foundation/pi-decompositions.lagda.md | 2 +- .../postcomposition-functions.lagda.md | 25 +- .../precomposition-functions.lagda.md | 26 +- .../precomposition-type-families.lagda.md | 2 +- src/foundation/pullbacks.lagda.md | 2 +- src/foundation/retractions.lagda.md | 2 +- src/foundation/retracts-of-maps.lagda.md | 2 +- src/foundation/retracts-of-types.lagda.md | 2 +- src/foundation/sections.lagda.md | 2 +- src/foundation/set-quotients.lagda.md | 2 +- src/foundation/slice.lagda.md | 2 +- ...port-along-higher-identifications.lagda.md | 2 +- src/foundation/truncations.lagda.md | 2 +- src/foundation/uniqueness-image.lagda.md | 2 +- .../uniqueness-set-quotients.lagda.md | 2 +- .../unital-binary-operations.lagda.md | 2 +- .../universal-property-image.lagda.md | 2 +- .../universal-property-set-quotients.lagda.md | 2 +- src/foundation/unordered-pairs.lagda.md | 2 +- src/foundation/unordered-tuples.lagda.md | 2 +- ...ing-higher-homotopies-composition.lagda.md | 2 +- ...whiskering-homotopies-composition.lagda.md | 266 ++++++++++++----- ...iskering-homotopies-concatenation.lagda.md | 52 ++++ ...ing-identifications-concatenation.lagda.md | 16 +- src/foundation/whiskering-operations.lagda.md | 26 ++ .../cocones-under-spans.lagda.md | 2 +- .../double-loop-spaces.lagda.md | 98 ++++--- 67 files changed, 694 insertions(+), 557 deletions(-) delete mode 100644 src/foundation-core/whiskering-homotopies-composition.lagda.md create mode 100644 src/foundation/homotopy-algebra.lagda.md diff --git a/src/foundation-core.lagda.md b/src/foundation-core.lagda.md index 3d0ba2929a..a38390e9d3 100644 --- a/src/foundation-core.lagda.md +++ b/src/foundation-core.lagda.md @@ -59,5 +59,5 @@ open import foundation-core.type-theoretic-principle-of-choice public open import foundation-core.univalence public open import foundation-core.universal-property-pullbacks public open import foundation-core.universal-property-truncation public -open import foundation-core.whiskering-homotopies-composition public +open import foundation.whiskering-homotopies-composition public ``` diff --git a/src/foundation-core/coherently-invertible-maps.lagda.md b/src/foundation-core/coherently-invertible-maps.lagda.md index 6ea12a61d4..6a1d574921 100644 --- a/src/foundation-core/coherently-invertible-maps.lagda.md +++ b/src/foundation-core/coherently-invertible-maps.lagda.md @@ -17,7 +17,7 @@ open import foundation-core.identity-types open import foundation-core.invertible-maps open import foundation-core.retractions open import foundation-core.sections -open import foundation-core.whiskering-homotopies-composition +open import foundation.whiskering-homotopies-composition ``` diff --git a/src/foundation-core/commuting-prisms-of-maps.lagda.md b/src/foundation-core/commuting-prisms-of-maps.lagda.md index 3fe87c81e9..ec3fe8a8a7 100644 --- a/src/foundation-core/commuting-prisms-of-maps.lagda.md +++ b/src/foundation-core/commuting-prisms-of-maps.lagda.md @@ -12,7 +12,7 @@ open import foundation.universe-levels open import foundation-core.commuting-squares-of-maps open import foundation-core.commuting-triangles-of-maps open import foundation-core.homotopies -open import foundation-core.whiskering-homotopies-composition +open import foundation.whiskering-homotopies-composition ``` diff --git a/src/foundation-core/commuting-squares-of-maps.lagda.md b/src/foundation-core/commuting-squares-of-maps.lagda.md index 32979d4ffc..7d14f6bfc3 100644 --- a/src/foundation-core/commuting-squares-of-maps.lagda.md +++ b/src/foundation-core/commuting-squares-of-maps.lagda.md @@ -14,7 +14,7 @@ open import foundation-core.commuting-triangles-of-maps open import foundation-core.function-types open import foundation-core.homotopies open import foundation-core.identity-types -open import foundation-core.whiskering-homotopies-composition +open import foundation.whiskering-homotopies-composition ``` diff --git a/src/foundation-core/commuting-triangles-of-maps.lagda.md b/src/foundation-core/commuting-triangles-of-maps.lagda.md index dbb5496971..85f29db050 100644 --- a/src/foundation-core/commuting-triangles-of-maps.lagda.md +++ b/src/foundation-core/commuting-triangles-of-maps.lagda.md @@ -13,7 +13,7 @@ open import foundation-core.function-types open import foundation-core.homotopies open import foundation-core.retractions open import foundation-core.sections -open import foundation-core.whiskering-homotopies-composition +open import foundation.whiskering-homotopies-composition ``` @@ -72,26 +72,6 @@ module _ H ∙h (K ·r i) ``` -### Coherences of commuting triangles of maps with fixed vertices - -This or its opposite should be the coherence in the characterization of -identifications of commuting triangles of maps with fixed end vertices. - -```agda -module _ - {l1 l2 l3 : Level} {X : UU l1} {A : UU l2} {B : UU l3} - (left : A → X) (right : B → X) (top : A → B) - (left' : A → X) (right' : B → X) (top' : A → B) - (c : coherence-triangle-maps left right top) - (c' : coherence-triangle-maps left' right' top') - where - - coherence-htpy-triangle-maps : - left ~ left' → right ~ right' → top ~ top' → UU (l1 ⊔ l2) - coherence-htpy-triangle-maps L R T = - c ∙h horizontal-concat-htpy T R ~ L ∙h c' -``` - ## Properties ### If the top map has a section, then the reversed triangle with the section on top commutes diff --git a/src/foundation-core/equivalences.lagda.md b/src/foundation-core/equivalences.lagda.md index c731530fc7..c8c0bcdb0f 100644 --- a/src/foundation-core/equivalences.lagda.md +++ b/src/foundation-core/equivalences.lagda.md @@ -14,14 +14,13 @@ open import foundation.universe-levels open import foundation-core.cartesian-product-types open import foundation-core.coherently-invertible-maps -open import foundation-core.commuting-triangles-of-maps open import foundation-core.function-types open import foundation-core.homotopies open import foundation-core.identity-types open import foundation-core.invertible-maps open import foundation-core.retractions open import foundation-core.sections -open import foundation-core.whiskering-homotopies-composition +open import foundation.whiskering-homotopies-composition ``` @@ -353,7 +352,9 @@ module _ ( pair ( section-right-map-triangle f g h H section-f) ( retraction-left-map-triangle g f sh - ( triangle-section f g h H (sh , is-section-sh)) + ( inv-htpy + ( ( H ·r map-section h (sh , is-section-sh)) ∙h + ( g ·l is-section-map-section h (sh , is-section-sh)))) ( retraction-f) ( h , is-section-sh))) ``` @@ -372,7 +373,9 @@ module _ section-left-map-triangle h ( map-retraction-is-equiv G) ( f) - ( triangle-retraction f g h H (retraction-is-equiv G)) + ( inv-htpy + ( ( map-retraction g (retraction-is-equiv G) ·l H) ∙h + ( is-retraction-map-retraction g (retraction-is-equiv G) ·r h))) ( section-is-equiv F) ( g , is-retraction-map-retraction-is-equiv G) @@ -389,7 +392,9 @@ module _ ( section-f , retraction-f) = ( pair ( section-left-map-triangle h rg f - ( triangle-retraction f g h H (rg , is-retraction-rg)) + ( inv-htpy + ( ( map-retraction g (rg , is-retraction-rg) ·l H) ∙h + ( is-retraction-map-retraction g (rg , is-retraction-rg) ·r h))) ( section-f) ( g , is-retraction-rg)) ( retraction-top-map-triangle f g h H retraction-f)) diff --git a/src/foundation-core/function-extensionality.lagda.md b/src/foundation-core/function-extensionality.lagda.md index 13ff0474ea..c2fff299f0 100644 --- a/src/foundation-core/function-extensionality.lagda.md +++ b/src/foundation-core/function-extensionality.lagda.md @@ -22,7 +22,7 @@ open import foundation-core.identity-types open import foundation-core.postcomposition-functions open import foundation-core.precomposition-dependent-functions open import foundation-core.precomposition-functions -open import foundation-core.whiskering-homotopies-composition +open import foundation.whiskering-homotopies-composition ``` diff --git a/src/foundation-core/retractions.lagda.md b/src/foundation-core/retractions.lagda.md index e301073afb..d217d1fe07 100644 --- a/src/foundation-core/retractions.lagda.md +++ b/src/foundation-core/retractions.lagda.md @@ -14,7 +14,7 @@ open import foundation.universe-levels open import foundation-core.function-types open import foundation-core.homotopies open import foundation-core.identity-types -open import foundation-core.whiskering-homotopies-composition +open import foundation.whiskering-homotopies-composition ``` diff --git a/src/foundation-core/sections.lagda.md b/src/foundation-core/sections.lagda.md index 532f03418c..a6d081d740 100644 --- a/src/foundation-core/sections.lagda.md +++ b/src/foundation-core/sections.lagda.md @@ -12,7 +12,7 @@ open import foundation.universe-levels open import foundation-core.function-types open import foundation-core.homotopies -open import foundation-core.whiskering-homotopies-composition +open import foundation.whiskering-homotopies-composition ``` diff --git a/src/foundation-core/whiskering-homotopies-composition.lagda.md b/src/foundation-core/whiskering-homotopies-composition.lagda.md deleted file mode 100644 index 1303a8d2c9..0000000000 --- a/src/foundation-core/whiskering-homotopies-composition.lagda.md +++ /dev/null @@ -1,276 +0,0 @@ -# Whiskering homotopies with respect to composition - -```agda -module foundation-core.whiskering-homotopies-composition where -``` - -
Imports - -```agda -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](foundation-core.homotopies.md). The **left whiskering** operation -assumes a diagram of the form - -```text - f - -----> h - A -----> B -----> C - g -``` - -and is defined to be a function `H ↦ h ·l H : (f ~ g) → (h ∘ f ~ h ∘ g)`. The -**right whiskering** operation assumes a diagram of the form - -```text - g - f -----> - A -----> B -----> C - h -``` - -and is defined to be a function `H ↦ H ·r f : (g ~ h) → (g ∘ f ~ h ∘ f)`. - -**Note.** The infix whiskering operators `_·l_` and `_·r_` use the -[middle dot](https://codepoints.net/U+00B7) `·` (agda-input: `\cdot` -`\centerdot`), as opposed to the infix homotopy concatenation operator `_∙h_` -which uses the [bullet operator](https://codepoints.net/U+2219) `∙` (agda-input: -`\.`). If these look the same in your editor, we suggest that you change your -font. For more details, see [How to install](HOWTO-INSTALL.md). - -**Note.** We will define the whiskering operations with respect to function -composition for dependent functions. The definition of `whiskering-operations` -in [whiskering operations](foundation.whiskering-operations.md) does not support -this level of generality, so we will not be able to use it here. - -## Definitions - -### Left whiskering of homotopies - -```agda -module _ - {l1 l2 l3 : Level} {A : UU l1} {B : A → UU l2} {C : A → UU l3} - where - - left-whisker-comp : - (h : {x : A} → B x → C x) - {f g : (x : A) → B x} → f ~ g → h ∘ f ~ h ∘ g - left-whisker-comp h H x = ap h (H x) - - infixr 17 _·l_ - _·l_ = left-whisker-comp -``` - -### Right whiskering of homotopies - -```agda -module _ - {l1 l2 l3 : Level} {A : UU l1} {B : A → UU l2} {C : (x : A) → B x → UU l3} - where - - right-whisker-comp : - {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 - right-whisker-comp H f x = H (f x) - - infixl 16 _·r_ - _·r_ = right-whisker-comp -``` - -### Horizontal concatenation of homotopies - -```agda -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 - - horizontal-concat-htpy : f ~ f' → ({x : A} → g {x} ~ g' {x}) → g ∘ f ~ g' ∘ f' - horizontal-concat-htpy F G = (g ·l F) ∙h (G ·r f') - - horizontal-concat-htpy' : - f ~ f' → ({x : A} → g {x} ~ g' {x}) → g ∘ f ~ g' ∘ f' - horizontal-concat-htpy' F G = (G ·r f) ∙h (g' ·l F) -``` - -## Properties - -### Unit laws and absorption laws for whiskering homotopies - -The identity map is a _unit element_ for whiskerings from the function side, and -the reflexivity homotopy is an _absorbing element_ on the homotopy side for -whiskerings. - -```agda -module _ - {l1 l2 : Level} {A : UU l1} {B : A → UU l2} - where - - left-unit-law-left-whisker-comp : - {f f' : (x : A) → B x} → (H : f ~ f') → id ·l H ~ H - left-unit-law-left-whisker-comp H x = ap-id (H x) - -module _ - {l1 l2 l3 : Level} {A : UU l1} {B : A → UU l2} {C : A → UU l3} - where - - right-absorption-law-left-whisker-comp : - {f : (x : A) → B x} (g : {x : A} → B x → C x) → - g ·l refl-htpy {f = f} ~ refl-htpy - right-absorption-law-left-whisker-comp g = refl-htpy - -module _ - {l1 l2 l3 : Level} {A : UU l1} {B : A → UU l2} {C : (x : A) → B x → UU l3} - where - - left-absorption-law-right-whisker-comp : - {g : {x : A} (y : B x) → C x y} (f : (x : A) → B x) → - refl-htpy {f = g} ·r f ~ refl-htpy - left-absorption-law-right-whisker-comp f = refl-htpy - -module _ - {l1 l2 : Level} {A : UU l1} {B : A → UU l2} - where - - right-unit-law-right-whisker-comp : - {f f' : (x : A) → B x} → (H : f ~ f') → H ·r id ~ H - right-unit-law-right-whisker-comp H = refl-htpy -``` - -### Laws for whiskering an inverted homotopy - -```agda -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-whisker-inv-htpy : g ·l (inv-htpy H) ~ inv-htpy (g ·l H) - left-whisker-inv-htpy x = ap-inv g (H x) - -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-whisker-inv-htpy : inv-htpy H ·r f ~ inv-htpy (H ·r f) - right-whisker-inv-htpy = refl-htpy -``` - -### Distributivity of whiskering over concatenation of homotopies - -```agda -module _ - {l1 l2 l3 : Level} {A : UU l1} {B : A → UU l2} {C : A → UU l3} - where - - distributive-left-whisker-comp-concat : - { 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-whisker-comp-concat 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-whisker-comp-concat : - (H ∙h K) ·r k ~ (H ·r k) ∙h (K ·r k) - distributive-right-whisker-comp-concat = refl-htpy -``` - -### Whiskering preserves function composition - -In other words, whiskering is an action of functions on homotopies. - -```agda -module _ - {l1 l2 l3 l4 : Level} - {A : UU l1} {B : A → UU l2} {C : A → UU l3} {D : A → UU l4} - where - - preserves-comp-left-whisker-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 - preserves-comp-left-whisker-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 - - preserves-comp-right-whisker-comp : (H ·r h) ·r k ~ H ·r (h ∘ k) - preserves-comp-right-whisker-comp = refl-htpy -``` - -### A coherence for homotopies to the identity function - -Consider a function `f : A → A` and let `H : f ~ id` be a homotopy to the -identity function. Then we have a homotopy - -```text - H ·r f ~ f ·l H. -``` - -```agda -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 -``` - -### The left and right whiskering operations commute - -We have the coherence - -```text - (h ·l H) ·r h' ~ h ·l (H ·r h') -``` - -definitionally. - -```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 y} - where - - coherence-double-whisker-comp : - (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-double-whisker-comp h H h' = refl-htpy -``` - -## See also - -- For interactions between whiskering and exponentiation, see - [`foundation.composition-algebra`](foundation.composition-algebra.md). diff --git a/src/foundation/axiom-of-choice.lagda.md b/src/foundation/axiom-of-choice.lagda.md index fe517ce355..b129a05d2f 100644 --- a/src/foundation/axiom-of-choice.lagda.md +++ b/src/foundation/axiom-of-choice.lagda.md @@ -25,7 +25,7 @@ open import foundation-core.functoriality-dependent-pair-types open import foundation-core.identity-types open import foundation-core.precomposition-functions open import foundation-core.sets -open import foundation-core.whiskering-homotopies-composition +open import foundation.whiskering-homotopies-composition ``` diff --git a/src/foundation/coherently-invertible-maps.lagda.md b/src/foundation/coherently-invertible-maps.lagda.md index b36c0eb72c..563b3e75c9 100644 --- a/src/foundation/coherently-invertible-maps.lagda.md +++ b/src/foundation/coherently-invertible-maps.lagda.md @@ -25,7 +25,7 @@ open import foundation-core.homotopies open import foundation-core.propositions open import foundation-core.sections open import foundation-core.type-theoretic-principle-of-choice -open import foundation-core.whiskering-homotopies-composition +open import foundation.whiskering-homotopies-composition ``` diff --git a/src/foundation/commuting-cubes-of-maps.lagda.md b/src/foundation/commuting-cubes-of-maps.lagda.md index a89f76cec7..0790d050bf 100644 --- a/src/foundation/commuting-cubes-of-maps.lagda.md +++ b/src/foundation/commuting-cubes-of-maps.lagda.md @@ -20,7 +20,7 @@ open import foundation-core.function-extensionality open import foundation-core.function-types open import foundation-core.identity-types open import foundation-core.precomposition-functions -open import foundation-core.whiskering-homotopies-composition +open import foundation.whiskering-homotopies-composition ``` diff --git a/src/foundation/commuting-prisms-of-maps.lagda.md b/src/foundation/commuting-prisms-of-maps.lagda.md index 91375781cd..90ca9472e7 100644 --- a/src/foundation/commuting-prisms-of-maps.lagda.md +++ b/src/foundation/commuting-prisms-of-maps.lagda.md @@ -10,6 +10,7 @@ open import foundation-core.commuting-prisms-of-maps public ```agda open import foundation.action-on-identifications-functions +open import foundation.commuting-squares-of-homotopies open import foundation.commuting-squares-of-maps open import foundation.commuting-triangles-of-maps open import foundation.composition-algebra diff --git a/src/foundation/commuting-squares-of-homotopies.lagda.md b/src/foundation/commuting-squares-of-homotopies.lagda.md index 83eef43acc..f39fb6512f 100644 --- a/src/foundation/commuting-squares-of-homotopies.lagda.md +++ b/src/foundation/commuting-squares-of-homotopies.lagda.md @@ -9,8 +9,10 @@ open import foundation-core.commuting-squares-of-homotopies public
Imports ```agda +open import foundation.commuting-squares-of-identifications open import foundation.functoriality-dependent-function-types open import foundation.universe-levels +open import foundation.whiskering-homotopies-composition open import foundation-core.equivalences open import foundation-core.homotopies @@ -35,104 +37,160 @@ A square of [homotopies](foundation-core.homotopies.md) is said to **commute** if there is a homotopy `left ∙h bottom ~ top ∙h right `. Such a homotopy is called a **coherence** of the square. -### Whiskering a square of homotopies by a homotopy is an equivalence +### Right whiskering a commuting square of homotopies with respect to concatenation of homotopies -A +Consider a [commuting square of homotopies](foundation.commuting-squares-of-homotopies.md) -may be whiskered by a homotopy `L` on the left or right, which results in a -commuting square of homotopies with `L` appended or prepended to the two ways of -going around the square. -Diagrammatically, we may turn the pasting diagram +```text + top + f ------> g + | | + left | | right + v v + h ------> i + bottom +``` + +and consider a homotopy `H : i ~ j`. Then there is an equivalence of commuting squares of homotopies ```text - H - f ----> g - | | - H' | ⇗ | K - ∨ ∨ - g' ----> h ----> k - K' L + top top + f ------> g f -------------> g + | | | | + left | | right ≃ left | | right ∙h H + ∨ ∨ ∨ ∨ + h ------> i h -------------> j + bottom bottom ∙h H +``` + +This is the {{#concept "right whiskering" Disambiguation="commuting squares of homotopies with respect to concatenation"}} operation of commuting squares of homotopies with respect to concatenation. + +```agda +module _ + { l1 l2 : Level} {A : UU l1} {B : UU l2} + { f g g' h k : A → B} + ( H : f ~ g) (H' : f ~ g') {K : g ~ h} {K' : g' ~ h} (L : h ~ k) + where + + equiv-right-whisker-coherence-square-homotopies : + coherence-square-homotopies H H' K K' ≃ + coherence-square-homotopies H H' (K ∙h L) (K' ∙h L) + equiv-right-whisker-coherence-square-homotopies = + equiv-Π-equiv-family + ( λ a → + equiv-right-whisker-coherence-square-identifications + ( H a) + ( H' a) + ( K a) + ( K' a) + ( L a)) + + right-whisker-coherence-square-homotopies : + coherence-square-homotopies H H' K K' → + coherence-square-homotopies H H' (K ∙h L) (K' ∙h L) + right-whisker-coherence-square-homotopies = + map-equiv equiv-right-whisker-coherence-square-homotopies + + right-unwhisker-coherence-square-homotopies : + coherence-square-homotopies H H' (K ∙h L) (K' ∙h L) → + coherence-square-homotopies H H' K K' + right-unwhisker-coherence-square-homotopies = + map-inv-equiv equiv-right-whisker-coherence-square-homotopies +``` + +### Left whiskering a commuting square of homotopies with respect to concatenation of homotopies + +Consider a +[commuting square of homotopies](foundation.commuting-squares-of-homotopies.md) + +```text + top + f ------> g + | | + left | | right + v v + h ------> i + bottom ``` -into a commmuting square +and consider a homotopy `H : e ~ f`. Then there is an equivalence of commuting squares of homotopies ```text - H - f ---------> g - | | - H' | ⇗ | K ∙h L - ∨ ∨ - g' ---------> k, - K' ∙h L + top H ∙h top + f ------> g e ----------> g + | | | | + left | | right ≃ H ∙h left | | right + ∨ ∨ ∨ ∨ + h ------> i h ----------> i + bottom bottom ``` -and similarly for the other side. +This is the {{#concept "left whiskering" Disambiguation="commuting squares of homotopies with respect to concatenation"}} operation of commuting squares of homotopies with respect to concatenation. ```agda module _ { l1 l2 : Level} {A : UU l1} {B : UU l2} { f g g' h k : A → B} + ( L : k ~ f) {H : f ~ g} {H' : f ~ g'} {K : g ~ h} {K' : g' ~ h} where - module _ - ( H : f ~ g) (H' : f ~ g') {K : g ~ h} {K' : g' ~ h} (L : h ~ k) - where - - equiv-right-whisker-coherence-square-homotopies : - ( coherence-square-homotopies H H' K K') ≃ - ( coherence-square-homotopies H H' (K ∙h L) (K' ∙h L)) - equiv-right-whisker-coherence-square-homotopies = - equiv-Π-equiv-family - ( λ a → - equiv-right-whisker-coherence-square-identifications - ( H a) - ( H' a) - ( K a) - ( K' a) - ( L a)) - - right-whisker-coherence-square-homotopies : - coherence-square-homotopies H H' K K' → - coherence-square-homotopies H H' (K ∙h L) (K' ∙h L) - right-whisker-coherence-square-homotopies = - map-equiv equiv-right-whisker-coherence-square-homotopies - - right-unwhisker-coherence-square-homotopies : - coherence-square-homotopies H H' (K ∙h L) (K' ∙h L) → - coherence-square-homotopies H H' K K' - right-unwhisker-coherence-square-homotopies = - map-inv-equiv equiv-right-whisker-coherence-square-homotopies - - module _ - ( L : k ~ f) {H : f ~ g} {H' : f ~ g'} {K : g ~ h} {K' : g' ~ h} - where - - equiv-left-whisker-coherence-square-homotopies : - ( coherence-square-homotopies H H' K K') ≃ - ( coherence-square-homotopies (L ∙h H) (L ∙h H') K K') - equiv-left-whisker-coherence-square-homotopies = - equiv-Π-equiv-family - ( λ a → - equiv-left-whisker-coherence-square-identifications - ( L a) - ( H a) - ( H' a) - ( K a) - ( K' a)) - - left-whisker-coherence-square-homotopies : - coherence-square-homotopies H H' K K' → - coherence-square-homotopies (L ∙h H) (L ∙h H') K K' - left-whisker-coherence-square-homotopies = - map-equiv equiv-left-whisker-coherence-square-homotopies - - left-unwhisker-coherence-square-homotopies : - coherence-square-homotopies (L ∙h H) (L ∙h H') K K' → - coherence-square-homotopies H H' K K' - left-unwhisker-coherence-square-homotopies = - map-inv-equiv equiv-left-whisker-coherence-square-homotopies + equiv-left-whisker-coherence-square-homotopies : + ( coherence-square-homotopies H H' K K') ≃ + ( coherence-square-homotopies (L ∙h H) (L ∙h H') K K') + equiv-left-whisker-coherence-square-homotopies = + equiv-Π-equiv-family + ( λ a → + equiv-left-whisker-coherence-square-identifications + ( L a) + ( H a) + ( H' a) + ( K a) + ( K' a)) + + left-whisker-coherence-square-homotopies : + coherence-square-homotopies H H' K K' → + coherence-square-homotopies (L ∙h H) (L ∙h H') K K' + left-whisker-coherence-square-homotopies = + map-equiv equiv-left-whisker-coherence-square-homotopies + + left-unwhisker-coherence-square-homotopies : + coherence-square-homotopies (L ∙h H) (L ∙h H') K K' → + coherence-square-homotopies H H' K K' + left-unwhisker-coherence-square-homotopies = + map-inv-equiv equiv-left-whisker-coherence-square-homotopies +``` + +### Left whiskering a commuting square of homotopies with respect to concatenation of homotopies + +Consider a +[commuting square of homotopies](foundation.commuting-squares-of-homotopies.md) +```text + top + f ------> g + | | + left | | right + v v + h ------> i + bottom +``` + +and consider a homotopy `H : e ~ f`. Then there is an equivalence of commuting squares of homotopies + +```text + top H ∙h top + f ------> g e ----------> g + | | | | + left | | right ≃ H ∙h left | | right + ∨ ∨ ∨ ∨ + h ------> i h ----------> i + bottom bottom +``` + +This is the {{#concept "left whiskering" Disambiguation="commuting squares of homotopies with respect to concatenation"}} operation of commuting squares of homotopies with respect to concatenation. + +```agda module _ { l1 l2 : Level} {A : UU l1} {B : UU l2} { f g h h' k m : A → B} diff --git a/src/foundation/commuting-squares-of-maps.lagda.md b/src/foundation/commuting-squares-of-maps.lagda.md index ea3687a9fd..ac31c876fd 100644 --- a/src/foundation/commuting-squares-of-maps.lagda.md +++ b/src/foundation/commuting-squares-of-maps.lagda.md @@ -12,7 +12,7 @@ open import foundation-core.commuting-squares-of-maps public open import foundation.action-on-higher-identifications-functions open import foundation.action-on-identifications-binary-functions open import foundation.action-on-identifications-functions -open import foundation-core.commuting-squares-of-homotopies +open import foundation.commuting-squares-of-homotopies open import foundation.commuting-squares-of-identifications open import foundation.commuting-triangles-of-maps open import foundation.equivalences @@ -836,7 +836,7 @@ module _ ap-binary ( λ L q → eq-htpy L ∙ q) ( eq-htpy (preserves-comp-left-whisker-comp h bottom-right H)) - ( compute-eq-right-whisker-comp + ( compute-ap-precomp-eq-htpy ( top-left) ( h ·l K)) @@ -923,7 +923,7 @@ module _ by ap-binary ( λ p L → p ∙ eq-htpy L) - ( compute-eq-right-whisker-comp left-top (h ·l K)) + ( compute-ap-precomp-eq-htpy left-top (h ·l K)) ( eq-htpy (preserves-comp-left-whisker-comp h right-bottom H)) ``` @@ -974,7 +974,7 @@ module _ ( ( precomp f W) ·l ( precomp-coherence-square-maps top left right bottom H W)) distributive-precomp-right-whisker-coherence-square-maps f g = - compute-eq-right-whisker-comp f (g ·l H) + compute-ap-precomp-eq-htpy f (g ·l H) ``` Similarly, we can calculate transpositions of left-whiskered squares with the diff --git a/src/foundation/commuting-tetrahedra-of-maps.lagda.md b/src/foundation/commuting-tetrahedra-of-maps.lagda.md index a89ec62fac..d43a756cf9 100644 --- a/src/foundation/commuting-tetrahedra-of-maps.lagda.md +++ b/src/foundation/commuting-tetrahedra-of-maps.lagda.md @@ -11,7 +11,7 @@ open import foundation.universe-levels open import foundation-core.commuting-triangles-of-maps open import foundation-core.homotopies -open import foundation-core.whiskering-homotopies-composition +open import foundation.whiskering-homotopies-composition ```
diff --git a/src/foundation/commuting-triangles-of-homotopies.lagda.md b/src/foundation/commuting-triangles-of-homotopies.lagda.md index 6c085a7971..f21e25c4d6 100644 --- a/src/foundation/commuting-triangles-of-homotopies.lagda.md +++ b/src/foundation/commuting-triangles-of-homotopies.lagda.md @@ -15,7 +15,7 @@ open import foundation.whiskering-identifications-concatenation open import foundation-core.function-types open import foundation-core.homotopies open import foundation-core.identity-types -open import foundation-core.whiskering-homotopies-composition +open import foundation.whiskering-homotopies-composition ``` diff --git a/src/foundation/commuting-triangles-of-maps.lagda.md b/src/foundation/commuting-triangles-of-maps.lagda.md index d505f10a0f..ba73fc2c5e 100644 --- a/src/foundation/commuting-triangles-of-maps.lagda.md +++ b/src/foundation/commuting-triangles-of-maps.lagda.md @@ -12,6 +12,7 @@ open import foundation-core.commuting-triangles-of-maps public open import foundation.action-on-identifications-functions open import foundation.functoriality-dependent-function-types open import foundation.homotopies +open import foundation.homotopy-algebra open import foundation.identity-types open import foundation.postcomposition-functions open import foundation.precomposition-functions @@ -175,3 +176,23 @@ module _ ( postcomp S top) postcomp-coherence-triangle-maps' S = htpy-postcomp S ``` + +### Coherences of commuting triangles of maps with fixed vertices + +This or its opposite should be the coherence in the characterization of +identifications of commuting triangles of maps with fixed end vertices. + +```agda +module _ + {l1 l2 l3 : Level} {X : UU l1} {A : UU l2} {B : UU l3} + (left : A → X) (right : B → X) (top : A → B) + (left' : A → X) (right' : B → X) (top' : A → B) + (c : coherence-triangle-maps left right top) + (c' : coherence-triangle-maps left' right' top') + where + + coherence-htpy-triangle-maps : + left ~ left' → right ~ right' → top ~ top' → UU (l1 ⊔ l2) + coherence-htpy-triangle-maps L R T = + c ∙h horizontal-concat-htpy T R ~ L ∙h c' +``` diff --git a/src/foundation/composition-algebra.lagda.md b/src/foundation/composition-algebra.lagda.md index 8b57a2e172..0c2cc5912b 100644 --- a/src/foundation/composition-algebra.lagda.md +++ b/src/foundation/composition-algebra.lagda.md @@ -18,7 +18,7 @@ open import foundation.whiskering-higher-homotopies-composition open import foundation-core.function-types open import foundation-core.homotopies open import foundation-core.identity-types -open import foundation-core.whiskering-homotopies-composition +open import foundation.whiskering-homotopies-composition ``` @@ -46,7 +46,7 @@ homotopies. ### Precomposition distributes over whiskerings of homotopies The operation `htpy-precomp` distributes over -[whiskerings of homotopies](foundation-core.whiskering-homotopies-composition.md) +[whiskerings of homotopies](foundation.whiskering-homotopies-composition.md) contravariantly. Given a homotopy `H : f ~ g` and a suitable map `h` the homotopy constructed as the whiskering diff --git a/src/foundation/cones-over-cospan-diagrams.lagda.md b/src/foundation/cones-over-cospan-diagrams.lagda.md index 3db2e15780..8e810274c1 100644 --- a/src/foundation/cones-over-cospan-diagrams.lagda.md +++ b/src/foundation/cones-over-cospan-diagrams.lagda.md @@ -21,7 +21,7 @@ open import foundation-core.homotopies open import foundation-core.identity-types open import foundation-core.torsorial-type-families open import foundation-core.transport-along-identifications -open import foundation-core.whiskering-homotopies-composition +open import foundation.whiskering-homotopies-composition ``` diff --git a/src/foundation/cones-over-inverse-sequential-diagrams.lagda.md b/src/foundation/cones-over-inverse-sequential-diagrams.lagda.md index 7eb8957425..eeb97d80ae 100644 --- a/src/foundation/cones-over-inverse-sequential-diagrams.lagda.md +++ b/src/foundation/cones-over-inverse-sequential-diagrams.lagda.md @@ -24,7 +24,7 @@ open import foundation-core.function-extensionality open import foundation-core.homotopies open import foundation-core.identity-types open import foundation-core.torsorial-type-families -open import foundation-core.whiskering-homotopies-composition +open import foundation.whiskering-homotopies-composition ``` diff --git a/src/foundation/coproduct-decompositions.lagda.md b/src/foundation/coproduct-decompositions.lagda.md index fd58c07806..d668ced78b 100644 --- a/src/foundation/coproduct-decompositions.lagda.md +++ b/src/foundation/coproduct-decompositions.lagda.md @@ -34,7 +34,7 @@ open import foundation-core.identity-types open import foundation-core.propositions open import foundation-core.torsorial-type-families open import foundation-core.transport-along-identifications -open import foundation-core.whiskering-homotopies-composition +open import foundation.whiskering-homotopies-composition open import univalent-combinatorics.equality-standard-finite-types open import univalent-combinatorics.standard-finite-types diff --git a/src/foundation/coslice.lagda.md b/src/foundation/coslice.lagda.md index 4763b95c9d..80faa986cf 100644 --- a/src/foundation/coslice.lagda.md +++ b/src/foundation/coslice.lagda.md @@ -17,7 +17,7 @@ open import foundation-core.function-extensionality open import foundation-core.function-types open import foundation-core.homotopies open import foundation-core.identity-types -open import foundation-core.whiskering-homotopies-composition +open import foundation.whiskering-homotopies-composition ``` diff --git a/src/foundation/exponents-set-quotients.lagda.md b/src/foundation/exponents-set-quotients.lagda.md index 992d7476f9..052d711a6a 100644 --- a/src/foundation/exponents-set-quotients.lagda.md +++ b/src/foundation/exponents-set-quotients.lagda.md @@ -27,7 +27,7 @@ open import foundation-core.function-types open import foundation-core.homotopies open import foundation-core.identity-types open import foundation-core.propositions -open import foundation-core.whiskering-homotopies-composition +open import foundation.whiskering-homotopies-composition ``` diff --git a/src/foundation/fibered-maps.lagda.md b/src/foundation/fibered-maps.lagda.md index 6940e59a35..136c51ac57 100644 --- a/src/foundation/fibered-maps.lagda.md +++ b/src/foundation/fibered-maps.lagda.md @@ -32,7 +32,7 @@ open import foundation-core.small-types open import foundation-core.torsorial-type-families open import foundation-core.truncated-types open import foundation-core.truncation-levels -open import foundation-core.whiskering-homotopies-composition +open import foundation.whiskering-homotopies-composition ``` diff --git a/src/foundation/function-extensionality.lagda.md b/src/foundation/function-extensionality.lagda.md index 2208745e99..71ef97ef00 100644 --- a/src/foundation/function-extensionality.lagda.md +++ b/src/foundation/function-extensionality.lagda.md @@ -20,7 +20,7 @@ open import foundation-core.identity-types open import foundation-core.postcomposition-functions open import foundation-core.precomposition-dependent-functions open import foundation-core.precomposition-functions -open import foundation-core.whiskering-homotopies-composition +open import foundation.whiskering-homotopies-composition ``` diff --git a/src/foundation/functoriality-dependent-function-types.lagda.md b/src/foundation/functoriality-dependent-function-types.lagda.md index bb3ec8768f..3b698e36f3 100644 --- a/src/foundation/functoriality-dependent-function-types.lagda.md +++ b/src/foundation/functoriality-dependent-function-types.lagda.md @@ -33,7 +33,7 @@ open import foundation-core.propositional-maps open import foundation-core.truncated-maps open import foundation-core.truncated-types open import foundation-core.truncation-levels -open import foundation-core.whiskering-homotopies-composition +open import foundation.whiskering-homotopies-composition ``` diff --git a/src/foundation/functoriality-fibers-of-maps.lagda.md b/src/foundation/functoriality-fibers-of-maps.lagda.md index 798179dc38..3a4cf5557a 100644 --- a/src/foundation/functoriality-fibers-of-maps.lagda.md +++ b/src/foundation/functoriality-fibers-of-maps.lagda.md @@ -22,7 +22,7 @@ open import foundation-core.function-types open import foundation-core.functoriality-dependent-pair-types open import foundation-core.homotopies open import foundation-core.identity-types -open import foundation-core.whiskering-homotopies-composition +open import foundation.whiskering-homotopies-composition ``` diff --git a/src/foundation/functoriality-propositional-truncation.lagda.md b/src/foundation/functoriality-propositional-truncation.lagda.md index cfe8f9358c..ec34914b6b 100644 --- a/src/foundation/functoriality-propositional-truncation.lagda.md +++ b/src/foundation/functoriality-propositional-truncation.lagda.md @@ -18,7 +18,7 @@ open import foundation-core.function-extensionality open import foundation-core.function-types open import foundation-core.homotopies open import foundation-core.propositions -open import foundation-core.whiskering-homotopies-composition +open import foundation.whiskering-homotopies-composition ``` diff --git a/src/foundation/functoriality-set-truncation.lagda.md b/src/foundation/functoriality-set-truncation.lagda.md index ef468c02d8..3ce513f17a 100644 --- a/src/foundation/functoriality-set-truncation.lagda.md +++ b/src/foundation/functoriality-set-truncation.lagda.md @@ -33,7 +33,7 @@ open import foundation-core.injective-maps open import foundation-core.propositions open import foundation-core.sets open import foundation-core.truncation-levels -open import foundation-core.whiskering-homotopies-composition +open import foundation.whiskering-homotopies-composition ``` diff --git a/src/foundation/functoriality-truncation.lagda.md b/src/foundation/functoriality-truncation.lagda.md index c2dafec791..a98572e90e 100644 --- a/src/foundation/functoriality-truncation.lagda.md +++ b/src/foundation/functoriality-truncation.lagda.md @@ -22,7 +22,7 @@ open import foundation-core.homotopies open import foundation-core.retractions open import foundation-core.sections open import foundation-core.truncation-levels -open import foundation-core.whiskering-homotopies-composition +open import foundation.whiskering-homotopies-composition ``` diff --git a/src/foundation/homotopies.lagda.md b/src/foundation/homotopies.lagda.md index 601d0b00d5..f8d639197d 100644 --- a/src/foundation/homotopies.lagda.md +++ b/src/foundation/homotopies.lagda.md @@ -27,7 +27,7 @@ open import foundation-core.function-extensionality open import foundation-core.function-types open import foundation-core.functoriality-dependent-function-types open import foundation-core.transport-along-identifications -open import foundation-core.whiskering-homotopies-composition +open import foundation.whiskering-homotopies-composition ``` diff --git a/src/foundation/homotopy-algebra.lagda.md b/src/foundation/homotopy-algebra.lagda.md new file mode 100644 index 0000000000..c5a80ca714 --- /dev/null +++ b/src/foundation/homotopy-algebra.lagda.md @@ -0,0 +1,77 @@ +# Homotopy algebra + +```agda +module foundation.homotopy-algebra where +``` + +
Imports + +```agda +open import foundation.homotopy-induction +open import foundation.universe-levels + +open import foundation-core.function-types +open import foundation-core.homotopies +open import foundation.whiskering-homotopies-composition +``` + +
+ +## Idea + +This file has been created to collect operations on and facts about higher +[homotopies](foundation-core.homotopies.md). The scope of this file is analogous +to the scope of the file [path algebra](foundation.path-algebra.md), which is +about higher identifications. + +## Definitions + +### Horizontal concatenation of homotopies + +```agda +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 + + horizontal-concat-htpy : f ~ f' → ({x : A} → g {x} ~ g' {x}) → g ∘ f ~ g' ∘ f' + horizontal-concat-htpy F G = (g ·l F) ∙h (G ·r f') + + horizontal-concat-htpy' : + f ~ f' → ({x : A} → g {x} ~ g' {x}) → g ∘ f ~ g' ∘ f' + horizontal-concat-htpy' F G = (G ·r f) ∙h (g' ·l F) +``` + +## Properties + +### The two definitions of horizontal concatenation of homotopies agree + +```agda +module _ + {l1 l2 l3 : Level} {A : UU l1} {B : A → UU l2} {C : A → UU l3} + where + + coh-left-unit-horizontal-concat-htpy : + {f : (x : A) → B x} {g g' : {x : A} → B x → C x} + (G : {x : A} → g {x} ~ g' {x}) → + horizontal-concat-htpy (refl-htpy' f) G ~ + horizontal-concat-htpy' (refl-htpy' f) G + coh-left-unit-horizontal-concat-htpy G = inv-htpy-right-unit-htpy + + coh-right-unit-horizontal-concat-htpy : + {f f' : (x : A) → B x} {g : {x : A} → B x → C x} + (F : f ~ f') → + horizontal-concat-htpy F (refl-htpy' g) ~ + horizontal-concat-htpy' F (refl-htpy' g) + coh-right-unit-horizontal-concat-htpy F = right-unit-htpy + + coh-horizontal-concat-htpy : + {f f' : (x : A) → B x} {g g' : {x : A} → B x → C x} + (F : f ~ f') (G : {x : A} → g {x} ~ g' {x}) → + horizontal-concat-htpy F G ~ horizontal-concat-htpy' F G + coh-horizontal-concat-htpy {f} F G = + ind-htpy f + ( λ f' F → horizontal-concat-htpy F G ~ horizontal-concat-htpy' F G) + ( coh-left-unit-horizontal-concat-htpy G) + ( F) +``` diff --git a/src/foundation/invertible-maps.lagda.md b/src/foundation/invertible-maps.lagda.md index 99ccb0700a..97d4838d5e 100644 --- a/src/foundation/invertible-maps.lagda.md +++ b/src/foundation/invertible-maps.lagda.md @@ -35,7 +35,7 @@ open import foundation-core.identity-types open import foundation-core.torsorial-type-families open import foundation-core.truncated-types open import foundation-core.truncation-levels -open import foundation-core.whiskering-homotopies-composition +open import foundation.whiskering-homotopies-composition open import synthetic-homotopy-theory.free-loops ``` diff --git a/src/foundation/involutions.lagda.md b/src/foundation/involutions.lagda.md index 0f70e50d59..9b50e38270 100644 --- a/src/foundation/involutions.lagda.md +++ b/src/foundation/involutions.lagda.md @@ -24,7 +24,7 @@ open import foundation-core.injective-maps open import foundation-core.torsorial-type-families open import foundation-core.truncated-types open import foundation-core.truncation-levels -open import foundation-core.whiskering-homotopies-composition +open import foundation.whiskering-homotopies-composition open import structured-types.pointed-types ``` diff --git a/src/foundation/iterating-automorphisms.lagda.md b/src/foundation/iterating-automorphisms.lagda.md index 7bafe4a3d8..ecf94e3f41 100644 --- a/src/foundation/iterating-automorphisms.lagda.md +++ b/src/foundation/iterating-automorphisms.lagda.md @@ -20,7 +20,7 @@ open import foundation-core.coproduct-types open import foundation-core.equivalences open import foundation-core.function-types open import foundation-core.homotopies -open import foundation-core.whiskering-homotopies-composition +open import foundation.whiskering-homotopies-composition ``` diff --git a/src/foundation/monomorphisms.lagda.md b/src/foundation/monomorphisms.lagda.md index 60304a22f9..9eccfd6361 100644 --- a/src/foundation/monomorphisms.lagda.md +++ b/src/foundation/monomorphisms.lagda.md @@ -22,7 +22,7 @@ open import foundation-core.identity-types open import foundation-core.propositional-maps open import foundation-core.propositions open import foundation-core.truncation-levels -open import foundation-core.whiskering-homotopies-composition +open import foundation.whiskering-homotopies-composition ``` diff --git a/src/foundation/morphisms-arrows.lagda.md b/src/foundation/morphisms-arrows.lagda.md index fc4a1e3cdd..119111d7ac 100644 --- a/src/foundation/morphisms-arrows.lagda.md +++ b/src/foundation/morphisms-arrows.lagda.md @@ -27,7 +27,7 @@ open import foundation-core.homotopies open import foundation-core.identity-types open import foundation-core.precomposition-functions open import foundation-core.torsorial-type-families -open import foundation-core.whiskering-homotopies-composition +open import foundation.whiskering-homotopies-composition ``` diff --git a/src/foundation/morphisms-inverse-sequential-diagrams.lagda.md b/src/foundation/morphisms-inverse-sequential-diagrams.lagda.md index e567168183..a97f2d08d1 100644 --- a/src/foundation/morphisms-inverse-sequential-diagrams.lagda.md +++ b/src/foundation/morphisms-inverse-sequential-diagrams.lagda.md @@ -25,7 +25,7 @@ open import foundation-core.function-types open import foundation-core.homotopies open import foundation-core.identity-types open import foundation-core.torsorial-type-families -open import foundation-core.whiskering-homotopies-composition +open import foundation.whiskering-homotopies-composition ``` diff --git a/src/foundation/pi-decompositions.lagda.md b/src/foundation/pi-decompositions.lagda.md index 3356f99726..be1139b438 100644 --- a/src/foundation/pi-decompositions.lagda.md +++ b/src/foundation/pi-decompositions.lagda.md @@ -25,7 +25,7 @@ open import foundation-core.homotopies open import foundation-core.identity-types open import foundation-core.torsorial-type-families open import foundation-core.type-theoretic-principle-of-choice -open import foundation-core.whiskering-homotopies-composition +open import foundation.whiskering-homotopies-composition ``` diff --git a/src/foundation/postcomposition-functions.lagda.md b/src/foundation/postcomposition-functions.lagda.md index 59122d74ea..34e1251b7d 100644 --- a/src/foundation/postcomposition-functions.lagda.md +++ b/src/foundation/postcomposition-functions.lagda.md @@ -26,7 +26,7 @@ open import foundation-core.functoriality-dependent-pair-types open import foundation-core.homotopies open import foundation-core.identity-types open import foundation-core.type-theoretic-principle-of-choice -open import foundation-core.whiskering-homotopies-composition +open import foundation.whiskering-homotopies-composition ``` @@ -208,3 +208,26 @@ module _ equiv-htpy-postcomp-htpy e f g = equiv-Π-equiv-family (λ a → equiv-ap e (f a) (g a)) ``` + +### Computing the action on identifications of postcomposition by a map + +```agda +module _ + { l1 l2 l3 : Level} {A : UU l1} {B : UU l2} {C : UU l3} + { f g : A → B} (h : B → C) + where + + compute-ap-postcomp-htpy-eq : + ( p : f = g) → eq-htpy (h ·l htpy-eq p) = ap (postcomp A h) p + compute-ap-postcomp-htpy-eq refl = + eq-htpy-refl-htpy (h ∘ f) + + compute-ap-postcomp-eq-htpy : + (H : f ~ g) → + eq-htpy (h ·l H) = ap (postcomp A h) (eq-htpy H) + compute-ap-postcomp-eq-htpy H = + ( ap + ( λ K → eq-htpy (h ·l K)) + ( inv (is-section-eq-htpy H))) ∙ + ( compute-ap-postcomp-htpy-eq (eq-htpy H)) +``` diff --git a/src/foundation/precomposition-functions.lagda.md b/src/foundation/precomposition-functions.lagda.md index d061aa14af..c9126b7b90 100644 --- a/src/foundation/precomposition-functions.lagda.md +++ b/src/foundation/precomposition-functions.lagda.md @@ -25,7 +25,7 @@ open import foundation-core.functoriality-dependent-pair-types open import foundation-core.homotopies open import foundation-core.identity-types open import foundation-core.retractions -open import foundation-core.whiskering-homotopies-composition +open import foundation.whiskering-homotopies-composition ``` @@ -151,3 +151,27 @@ module _ (B → X) → Σ (B → X) (λ g → fiber (precomp f X) (g ∘ f)) diagonal-into-fibers-precomp = map-section-family (λ g → g , refl) ``` + +### Computing the action on identifications of precomposition by a map + +```agda +module _ + { l1 l2 l3 : Level} {A : UU l1} {B : UU l2} {C : UU l3} + { f g : B → C} (h : A → B) + where + + compute-ap-precomp-htpy-eq : + ( p : f = g) → + eq-htpy (htpy-eq p ·r h) = ap (precomp h C) p + compute-ap-precomp-htpy-eq refl = + eq-htpy-refl-htpy (f ∘ h) + + compute-ap-precomp-eq-htpy : + ( H : f ~ g) → + eq-htpy (H ·r h) = ap (precomp h C) (eq-htpy H) + compute-ap-precomp-eq-htpy H = + ( ap + ( λ K → eq-htpy (K ·r h)) + ( inv (is-section-eq-htpy H))) ∙ + ( compute-ap-precomp-htpy-eq (eq-htpy H)) +``` diff --git a/src/foundation/precomposition-type-families.lagda.md b/src/foundation/precomposition-type-families.lagda.md index 39ecd86481..4209546f41 100644 --- a/src/foundation/precomposition-type-families.lagda.md +++ b/src/foundation/precomposition-type-families.lagda.md @@ -14,7 +14,7 @@ open import foundation.universe-levels open import foundation-core.function-types open import foundation-core.homotopies open import foundation-core.identity-types -open import foundation-core.whiskering-homotopies-composition +open import foundation.whiskering-homotopies-composition ``` diff --git a/src/foundation/pullbacks.lagda.md b/src/foundation/pullbacks.lagda.md index e088fa3359..b919efc751 100644 --- a/src/foundation/pullbacks.lagda.md +++ b/src/foundation/pullbacks.lagda.md @@ -43,7 +43,7 @@ open import foundation-core.retractions open import foundation-core.sections open import foundation-core.torsorial-type-families open import foundation-core.transport-along-identifications -open import foundation-core.whiskering-homotopies-composition +open import foundation.whiskering-homotopies-composition ``` diff --git a/src/foundation/retractions.lagda.md b/src/foundation/retractions.lagda.md index d9a5e0954b..f358001997 100644 --- a/src/foundation/retractions.lagda.md +++ b/src/foundation/retractions.lagda.md @@ -20,7 +20,7 @@ open import foundation-core.function-types open import foundation-core.homotopies open import foundation-core.identity-types open import foundation-core.injective-maps -open import foundation-core.whiskering-homotopies-composition +open import foundation.whiskering-homotopies-composition ``` diff --git a/src/foundation/retracts-of-maps.lagda.md b/src/foundation/retracts-of-maps.lagda.md index 01b6d4e5cf..19456192b3 100644 --- a/src/foundation/retracts-of-maps.lagda.md +++ b/src/foundation/retracts-of-maps.lagda.md @@ -26,7 +26,7 @@ open import foundation-core.homotopies open import foundation-core.identity-types open import foundation-core.retractions open import foundation-core.sections -open import foundation-core.whiskering-homotopies-composition +open import foundation.whiskering-homotopies-composition ``` diff --git a/src/foundation/retracts-of-types.lagda.md b/src/foundation/retracts-of-types.lagda.md index 71cc960892..3c86ffbd75 100644 --- a/src/foundation/retracts-of-types.lagda.md +++ b/src/foundation/retracts-of-types.lagda.md @@ -16,7 +16,7 @@ open import foundation-core.identity-types open import foundation-core.precomposition-functions open import foundation-core.retractions open import foundation-core.sections -open import foundation-core.whiskering-homotopies-composition +open import foundation.whiskering-homotopies-composition ``` diff --git a/src/foundation/sections.lagda.md b/src/foundation/sections.lagda.md index 2d7600f4af..bf9547f722 100644 --- a/src/foundation/sections.lagda.md +++ b/src/foundation/sections.lagda.md @@ -26,7 +26,7 @@ open import foundation-core.homotopies open import foundation-core.identity-types open import foundation-core.injective-maps open import foundation-core.type-theoretic-principle-of-choice -open import foundation-core.whiskering-homotopies-composition +open import foundation.whiskering-homotopies-composition ``` diff --git a/src/foundation/set-quotients.lagda.md b/src/foundation/set-quotients.lagda.md index 86700ca61a..c507beb1d2 100644 --- a/src/foundation/set-quotients.lagda.md +++ b/src/foundation/set-quotients.lagda.md @@ -32,7 +32,7 @@ open import foundation-core.homotopies open import foundation-core.propositions open import foundation-core.small-types open import foundation-core.subtypes -open import foundation-core.whiskering-homotopies-composition +open import foundation.whiskering-homotopies-composition ``` diff --git a/src/foundation/slice.lagda.md b/src/foundation/slice.lagda.md index 0456a11b13..407fcc5d69 100644 --- a/src/foundation/slice.lagda.md +++ b/src/foundation/slice.lagda.md @@ -31,7 +31,7 @@ open import foundation-core.propositional-maps open import foundation-core.propositions open import foundation-core.torsorial-type-families open import foundation-core.type-theoretic-principle-of-choice -open import foundation-core.whiskering-homotopies-composition +open import foundation.whiskering-homotopies-composition open import trees.polynomial-endofunctors ``` diff --git a/src/foundation/transport-along-higher-identifications.lagda.md b/src/foundation/transport-along-higher-identifications.lagda.md index 10ac2fe30c..15866027fa 100644 --- a/src/foundation/transport-along-higher-identifications.lagda.md +++ b/src/foundation/transport-along-higher-identifications.lagda.md @@ -15,7 +15,7 @@ open import foundation.whiskering-identifications-concatenation open import foundation-core.identity-types open import foundation-core.transport-along-identifications -open import foundation-core.whiskering-homotopies-composition +open import foundation.whiskering-homotopies-composition ``` diff --git a/src/foundation/truncations.lagda.md b/src/foundation/truncations.lagda.md index e67256c102..dec436b8e4 100644 --- a/src/foundation/truncations.lagda.md +++ b/src/foundation/truncations.lagda.md @@ -29,7 +29,7 @@ open import foundation-core.propositions open import foundation-core.torsorial-type-families open import foundation-core.truncation-levels open import foundation-core.universal-property-truncation -open import foundation-core.whiskering-homotopies-composition +open import foundation.whiskering-homotopies-composition ``` diff --git a/src/foundation/uniqueness-image.lagda.md b/src/foundation/uniqueness-image.lagda.md index b222ae86a2..f3f43dbc4e 100644 --- a/src/foundation/uniqueness-image.lagda.md +++ b/src/foundation/uniqueness-image.lagda.md @@ -22,7 +22,7 @@ open import foundation-core.function-types open import foundation-core.functoriality-dependent-pair-types open import foundation-core.homotopies open import foundation-core.propositions -open import foundation-core.whiskering-homotopies-composition +open import foundation.whiskering-homotopies-composition ``` diff --git a/src/foundation/uniqueness-set-quotients.lagda.md b/src/foundation/uniqueness-set-quotients.lagda.md index 9af8f792f6..edb603ab2f 100644 --- a/src/foundation/uniqueness-set-quotients.lagda.md +++ b/src/foundation/uniqueness-set-quotients.lagda.md @@ -25,7 +25,7 @@ open import foundation-core.homotopies open import foundation-core.identity-types open import foundation-core.injective-maps open import foundation-core.precomposition-functions -open import foundation-core.whiskering-homotopies-composition +open import foundation.whiskering-homotopies-composition ``` diff --git a/src/foundation/unital-binary-operations.lagda.md b/src/foundation/unital-binary-operations.lagda.md index 2793293631..b9a3db29d9 100644 --- a/src/foundation/unital-binary-operations.lagda.md +++ b/src/foundation/unital-binary-operations.lagda.md @@ -15,7 +15,7 @@ open import foundation.whiskering-identifications-concatenation open import foundation-core.cartesian-product-types open import foundation-core.homotopies open import foundation-core.identity-types -open import foundation-core.whiskering-homotopies-composition +open import foundation.whiskering-homotopies-composition ``` diff --git a/src/foundation/universal-property-image.lagda.md b/src/foundation/universal-property-image.lagda.md index 09c68b2fd9..3acbd8a172 100644 --- a/src/foundation/universal-property-image.lagda.md +++ b/src/foundation/universal-property-image.lagda.md @@ -32,7 +32,7 @@ open import foundation-core.propositional-maps open import foundation-core.propositions open import foundation-core.sections open import foundation-core.subtypes -open import foundation-core.whiskering-homotopies-composition +open import foundation.whiskering-homotopies-composition ``` diff --git a/src/foundation/universal-property-set-quotients.lagda.md b/src/foundation/universal-property-set-quotients.lagda.md index cc041bfc9a..37fbe61e38 100644 --- a/src/foundation/universal-property-set-quotients.lagda.md +++ b/src/foundation/universal-property-set-quotients.lagda.md @@ -50,7 +50,7 @@ open import foundation-core.subtypes open import foundation-core.torsorial-type-families open import foundation-core.type-theoretic-principle-of-choice open import foundation-core.univalence -open import foundation-core.whiskering-homotopies-composition +open import foundation.whiskering-homotopies-composition ``` diff --git a/src/foundation/unordered-pairs.lagda.md b/src/foundation/unordered-pairs.lagda.md index b981d8c78e..5f47d2b94a 100644 --- a/src/foundation/unordered-pairs.lagda.md +++ b/src/foundation/unordered-pairs.lagda.md @@ -39,7 +39,7 @@ open import foundation-core.precomposition-dependent-functions open import foundation-core.propositions open import foundation-core.sets open import foundation-core.torsorial-type-families -open import foundation-core.whiskering-homotopies-composition +open import foundation.whiskering-homotopies-composition open import univalent-combinatorics.2-element-types open import univalent-combinatorics.equality-standard-finite-types diff --git a/src/foundation/unordered-tuples.lagda.md b/src/foundation/unordered-tuples.lagda.md index 94b1125334..3c7917587e 100644 --- a/src/foundation/unordered-tuples.lagda.md +++ b/src/foundation/unordered-tuples.lagda.md @@ -24,7 +24,7 @@ open import foundation-core.homotopies open import foundation-core.identity-types open import foundation-core.sets open import foundation-core.torsorial-type-families -open import foundation-core.whiskering-homotopies-composition +open import foundation.whiskering-homotopies-composition open import univalent-combinatorics.complements-isolated-elements open import univalent-combinatorics.equality-finite-types diff --git a/src/foundation/whiskering-higher-homotopies-composition.lagda.md b/src/foundation/whiskering-higher-homotopies-composition.lagda.md index 07af6540c4..4fa67bec1b 100644 --- a/src/foundation/whiskering-higher-homotopies-composition.lagda.md +++ b/src/foundation/whiskering-higher-homotopies-composition.lagda.md @@ -11,7 +11,7 @@ open import foundation.action-on-identifications-functions open import foundation.universe-levels open import foundation-core.homotopies -open import foundation-core.whiskering-homotopies-composition +open import foundation.whiskering-homotopies-composition ``` diff --git a/src/foundation/whiskering-homotopies-composition.lagda.md b/src/foundation/whiskering-homotopies-composition.lagda.md index 3723a41c78..a007657c30 100644 --- a/src/foundation/whiskering-homotopies-composition.lagda.md +++ b/src/foundation/whiskering-homotopies-composition.lagda.md @@ -2,29 +2,17 @@ ```agda module foundation.whiskering-homotopies-composition where - -open import foundation-core.whiskering-homotopies-composition public ```
Imports ```agda open import foundation.action-on-identifications-functions -open import foundation-core.commuting-squares-of-homotopies -open import foundation.commuting-squares-of-identifications -open import foundation.homotopy-induction -open import foundation.path-algebra open import foundation.universe-levels -open import foundation.whiskering-identifications-concatenation -open import foundation-core.equivalences -open import foundation-core.function-extensionality open import foundation-core.function-types -open import foundation-core.functoriality-dependent-function-types open import foundation-core.homotopies open import foundation-core.identity-types -open import foundation-core.postcomposition-functions -open import foundation-core.precomposition-functions ```
@@ -54,90 +42,232 @@ and is defined to be a function `H ↦ h ·l H : (f ~ g) → (h ∘ f ~ h ∘ g) and is defined to be a function `H ↦ H ·r f : (g ~ h) → (g ∘ f ~ h ∘ f)`. -**Note**: The infix whiskering operators `_·l_` and `_·r_` use the +**Note.** The infix whiskering operators `_·l_` and `_·r_` use the [middle dot](https://codepoints.net/U+00B7) `·` (agda-input: `\cdot` `\centerdot`), as opposed to the infix homotopy concatenation operator `_∙h_` which uses the [bullet operator](https://codepoints.net/U+2219) `∙` (agda-input: `\.`). If these look the same in your editor, we suggest that you change your font. For more details, see [How to install](HOWTO-INSTALL.md). +**Note.** We will define the whiskering operations with respect to function +composition for dependent functions. The definition of `whiskering-operations` +in [whiskering operations](foundation.whiskering-operations.md) does not support +this level of generality, so we will not be able to use it here. + +## Definitions + +### Left whiskering of homotopies + +```agda +module _ + {l1 l2 l3 : Level} {A : UU l1} {B : A → UU l2} {C : A → UU l3} + where + + left-whisker-comp : + (h : {x : A} → B x → C x) + {f g : (x : A) → B x} → f ~ g → h ∘ f ~ h ∘ g + left-whisker-comp h H x = ap h (H x) + + infixr 17 _·l_ + _·l_ = left-whisker-comp +``` + +### Right whiskering of homotopies + +```agda +module _ + {l1 l2 l3 : Level} {A : UU l1} {B : A → UU l2} {C : (x : A) → B x → UU l3} + where + + right-whisker-comp : + {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 + right-whisker-comp H f x = H (f x) + + infixl 16 _·r_ + _·r_ = right-whisker-comp +``` + +### Double whiskering of 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} + where + + double-whisker-comp : + (left : {x : A} {y : B x} → C x y → D x y) + {g h : {x : A} (y : B x) → C x y} + (H : {x : A} → g {x} ~ h {x}) + (right : (x : A) → B x) → left ∘ g ∘ right ~ left ∘ h ∘ right + double-whisker-comp left H right = left ·l H ·r right +``` + ## Properties -### Computation of function extensionality on whiskerings +### The left and right whiskering operations commute + +We have the coherence + +```text + (h ·l H) ·r h' ~ h ·l (H ·r h') +``` + +definitionally. + +```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 y} + where + + coherence-double-whisker-comp : + (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-double-whisker-comp h H h' = refl-htpy +``` + +### Unit laws and absorption laws for whiskering homotopies + +The identity map is a _unit element_ for whiskerings from the function side, and +the reflexivity homotopy is an _absorbing element_ on the homotopy side for +whiskerings. ```agda module _ - { l1 l2 l3 : Level} {A : UU l1} {B : UU l2} {C : UU l3} - { f g : B → C} (h : A → B) + {l1 l2 : Level} {A : UU l1} {B : A → UU l2} where - compute-eq-htpy-htpy-eq-right-whisker : - ( p : f = g) → - eq-htpy (htpy-eq p ·r h) = ap (precomp h C) p - compute-eq-htpy-htpy-eq-right-whisker refl = - eq-htpy-refl-htpy (f ∘ h) + left-unit-law-left-whisker-comp : + {f f' : (x : A) → B x} → (H : f ~ f') → id ·l H ~ H + left-unit-law-left-whisker-comp H x = ap-id (H x) - compute-eq-right-whisker-comp : - ( H : f ~ g) → - eq-htpy (H ·r h) = ap (precomp h C) (eq-htpy H) - compute-eq-right-whisker-comp H = - ( ap - ( λ K → eq-htpy (K ·r h)) - ( inv (is-section-eq-htpy H))) ∙ - ( compute-eq-htpy-htpy-eq-right-whisker (eq-htpy H)) +module _ + {l1 l2 l3 : Level} {A : UU l1} {B : A → UU l2} {C : A → UU l3} + where + + right-absorption-law-left-whisker-comp : + {f : (x : A) → B x} (g : {x : A} → B x → C x) → + g ·l refl-htpy {f = f} ~ refl-htpy + right-absorption-law-left-whisker-comp g = refl-htpy + +module _ + {l1 l2 l3 : Level} {A : UU l1} {B : A → UU l2} {C : (x : A) → B x → UU l3} + where + + left-absorption-law-right-whisker-comp : + {g : {x : A} (y : B x) → C x y} (f : (x : A) → B x) → + refl-htpy {f = g} ·r f ~ refl-htpy + left-absorption-law-right-whisker-comp f = refl-htpy + +module _ + {l1 l2 : Level} {A : UU l1} {B : A → UU l2} + where + + right-unit-law-right-whisker-comp : + {f f' : (x : A) → B x} → (H : f ~ f') → H ·r id ~ H + right-unit-law-right-whisker-comp H = refl-htpy ``` +### Laws for whiskering an inverted homotopy + ```agda module _ - { l1 l2 l3 : Level} {A : UU l1} {B : UU l2} {C : UU l3} - { f g : A → B} (h : B → C) + {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-whisker-inv-htpy : g ·l (inv-htpy H) ~ inv-htpy (g ·l H) + left-whisker-inv-htpy x = ap-inv g (H x) + +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 - compute-eq-htpy-htpy-eq-left-whisker : - ( p : f = g) → eq-htpy (h ·l htpy-eq p) = ap (postcomp A h) p - compute-eq-htpy-htpy-eq-left-whisker refl = - eq-htpy-refl-htpy (h ∘ f) - - compute-eq-left-whisker-comp : - (H : f ~ g) → - eq-htpy (h ·l H) = ap (postcomp A h) (eq-htpy H) - compute-eq-left-whisker-comp H = - ( ap - ( λ K → eq-htpy (h ·l K)) - ( inv (is-section-eq-htpy H))) ∙ - ( compute-eq-htpy-htpy-eq-left-whisker (eq-htpy H)) + right-whisker-inv-htpy : inv-htpy H ·r f ~ inv-htpy (H ·r f) + right-whisker-inv-htpy = refl-htpy ``` -### The two definitions of horizontal concatenation of homotopies agree +### Distributivity of whiskering over concatenation of homotopies ```agda module _ {l1 l2 l3 : Level} {A : UU l1} {B : A → UU l2} {C : A → UU l3} where - coh-left-unit-horizontal-concat-htpy : - {f : (x : A) → B x} {g g' : {x : A} → B x → C x} - (G : {x : A} → g {x} ~ g' {x}) → - horizontal-concat-htpy (refl-htpy' f) G ~ - horizontal-concat-htpy' (refl-htpy' f) G - coh-left-unit-horizontal-concat-htpy G = inv-htpy-right-unit-htpy - - coh-right-unit-horizontal-concat-htpy : - {f f' : (x : A) → B x} {g : {x : A} → B x → C x} - (F : f ~ f') → - horizontal-concat-htpy F (refl-htpy' g) ~ - horizontal-concat-htpy' F (refl-htpy' g) - coh-right-unit-horizontal-concat-htpy F = right-unit-htpy - - coh-horizontal-concat-htpy : - {f f' : (x : A) → B x} {g g' : {x : A} → B x → C x} - (F : f ~ f') (G : {x : A} → g {x} ~ g' {x}) → - horizontal-concat-htpy F G ~ horizontal-concat-htpy' F G - coh-horizontal-concat-htpy {f} F G = - ind-htpy f - ( λ f' F → horizontal-concat-htpy F G ~ horizontal-concat-htpy' F G) - ( coh-left-unit-horizontal-concat-htpy G) - ( F) + distributive-left-whisker-comp-concat : + { 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-whisker-comp-concat 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-whisker-comp-concat : + (H ∙h K) ·r k ~ (H ·r k) ∙h (K ·r k) + distributive-right-whisker-comp-concat = refl-htpy +``` + +### Whiskering preserves function composition + +In other words, whiskering is an action of functions on homotopies. + +```agda +module _ + {l1 l2 l3 l4 : Level} + {A : UU l1} {B : A → UU l2} {C : A → UU l3} {D : A → UU l4} + where + + preserves-comp-left-whisker-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 + preserves-comp-left-whisker-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 + + preserves-comp-right-whisker-comp : (H ·r h) ·r k ~ H ·r (h ∘ k) + preserves-comp-right-whisker-comp = refl-htpy +``` + +### A coherence for homotopies to the identity function + +Consider a function `f : A → A` and let `H : f ~ id` be a homotopy to the +identity function. Then we have a homotopy + +```text + H ·r f ~ f ·l H. +``` + +```agda +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 ``` ## See also diff --git a/src/foundation/whiskering-homotopies-concatenation.lagda.md b/src/foundation/whiskering-homotopies-concatenation.lagda.md index 3176f7b6fa..b7fbfa588f 100644 --- a/src/foundation/whiskering-homotopies-concatenation.lagda.md +++ b/src/foundation/whiskering-homotopies-concatenation.lagda.md @@ -36,6 +36,14 @@ Similarly, we introduce {{#concept 'right whiskering" Disambiguation="homotopies ### 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 K. +``` + +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} @@ -48,6 +56,14 @@ module _ ### 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} @@ -93,5 +109,41 @@ module _ ### 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) ``` + diff --git a/src/foundation/whiskering-identifications-concatenation.lagda.md b/src/foundation/whiskering-identifications-concatenation.lagda.md index aa97b2edf7..b510f5f27f 100644 --- a/src/foundation/whiskering-identifications-concatenation.lagda.md +++ b/src/foundation/whiskering-identifications-concatenation.lagda.md @@ -141,6 +141,19 @@ module _ ### The unit and absorption laws for right whiskering of identifications +The right unit law for right whiskering of identifications with respect to concatenation asserts that the square of identifications + +```text + right-whisker-concat α refl + p ∙ refl -----------------------------> p' ∙ refl + | | + right-unit | | + ∨ ∨ + p -------------------------------------> p' +``` + +commutes for any `α : p = p'`. Note that this law is slightly more complicated, since concatenating with `refl` on the right does not compute to the identity function. + ```agda module _ {l : Level} {A : UU l} @@ -148,8 +161,7 @@ module _ right-unit-law-right-whisker-concat : {x y : A} {p p' : x = y} (α : p = p') → - right-whisker-concat α refl = - right-unit ∙ α ∙ inv right-unit + right-unit ∙ α = right-whisker-concat α refl ∙ right-unit right-unit-law-right-whisker-concat {p = refl} refl = refl left-absorption-law-right-whisker-concat : diff --git a/src/foundation/whiskering-operations.lagda.md b/src/foundation/whiskering-operations.lagda.md index bee7eecf9c..d2d4175b4e 100644 --- a/src/foundation/whiskering-operations.lagda.md +++ b/src/foundation/whiskering-operations.lagda.md @@ -154,3 +154,29 @@ module _ right-whiskering-operation' μ E = {x y z : A} {f g : R y z} → E f g → (h : R x y) → E (μ f h) (μ g h) ``` + +### Double whiskering operations + +Double whiskering operations are operations that simultaneously perform whiskering on the left and on the right. + +Note that double whiskering should not be confused with iterated whiskering on the left or with iterated whiskering on the right. + +```agda +module _ + {l1 l2 l3 : Level} (A : UU l1) (R : A → A → UU l2) + where + + double-whiskering-operation : + (μ : {x y z : A} → R x y → R y z → R x z) → + ({x y : A} → R x y → R x y → UU l3) → UU (l1 ⊔ l2 ⊔ l3) + double-whiskering-operation μ E = + {x' x y y' : A} (h : R x' x) {f g : R x y} (e : E f g) (k : R y y') → + E (μ (μ h f) k) (μ (μ h g) k) + + double-whiskering-operation' : + (μ : {x y z : A} → R y z → R x y → R x z) → + ({x y : A} → R x y → R x y → UU l3) → UU (l1 ⊔ l2 ⊔ l3) + double-whiskering-operation' μ E = + {x' x y y' : A} (h : R y y') {f g : R x y} (e : E f g) (k : R x' x) → + E (μ (μ h f) k) (μ (μ h g) k) +``` diff --git a/src/synthetic-homotopy-theory/cocones-under-spans.lagda.md b/src/synthetic-homotopy-theory/cocones-under-spans.lagda.md index 5f6769f53a..5a84bb4f61 100644 --- a/src/synthetic-homotopy-theory/cocones-under-spans.lagda.md +++ b/src/synthetic-homotopy-theory/cocones-under-spans.lagda.md @@ -25,7 +25,7 @@ open import foundation-core.function-types open import foundation-core.functoriality-dependent-pair-types open import foundation-core.identity-types open import foundation-core.torsorial-type-families -open import foundation-core.whiskering-homotopies-composition +open import foundation.whiskering-homotopies-composition ``` diff --git a/src/synthetic-homotopy-theory/double-loop-spaces.lagda.md b/src/synthetic-homotopy-theory/double-loop-spaces.lagda.md index 1bdfa8e639..8d5c126308 100644 --- a/src/synthetic-homotopy-theory/double-loop-spaces.lagda.md +++ b/src/synthetic-homotopy-theory/double-loop-spaces.lagda.md @@ -65,53 +65,57 @@ horizontal-concat-Ω² α β = horizontal-concat-Id² α β ### Unit laws horizontal, vertical concatination, and whiskering ```agda -left-unit-law-vertical-concat-Ω² : - {l : Level} {A : UU l} {a : A} {α : type-Ω² a} → - Id (vertical-concat-Ω² refl-Ω² α) α -left-unit-law-vertical-concat-Ω² = left-unit - -right-unit-law-vertical-concat-Ω² : - {l : Level} {A : UU l} {a : A} {α : type-Ω² a} → - Id (vertical-concat-Ω² α refl-Ω²) α -right-unit-law-vertical-concat-Ω² = right-unit - -left-unit-law-horizontal-concat-Ω² : - {l : Level} {A : UU l} {a : A} {α : type-Ω² a} → - Id (horizontal-concat-Ω² refl-Ω² α) α -left-unit-law-horizontal-concat-Ω² {α = α} = - ( left-unit-law-horizontal-concat-Id² α) ∙ (ap-id α) - -naturality-right-unit : - {l : Level} {A : UU l} {x y : A} {p q : Id x y} (α : Id p q) → - coherence-square-identifications - ( right-unit) - ( right-whisker-concat α refl) - ( α) - ( right-unit) -naturality-right-unit {p = refl} refl = refl - -naturality-right-unit-Ω² : - {l : Level} {A : UU l} {x : A} (α : type-Ω² x) → - right-whisker-concat α refl = α -naturality-right-unit-Ω² α = inv right-unit ∙ naturality-right-unit α - -right-unit-law-horizontal-concat-Ω² : - {l : Level} {A : UU l} {a : A} {α : type-Ω² a} → - Id (horizontal-concat-Ω² α refl-Ω²) α -right-unit-law-horizontal-concat-Ω² {α = α} = - ( right-unit-law-horizontal-concat-Id² α) ∙ (naturality-right-unit-Ω² α) - -left-unit-law-left-whisker-Ω² : - {l : Level} {A : UU l} {a : A} (α : type-Ω² a) → - left-whisker-concat (refl-Ω (pair A a)) α = α -left-unit-law-left-whisker-Ω² α = - left-unit-law-left-whisker-concat α - -right-unit-law-right-whisker-Ω² : - {l : Level} {A : UU l} {a : A} (α : type-Ω² a) → - right-whisker-concat α (refl-Ω (pair A a)) = α -right-unit-law-right-whisker-Ω² α = - (right-unit-law-right-whisker-concat α) ∙ right-unit +module _ + {l : Level} {A : UU l} + where + + left-unit-law-vertical-concat-Ω² : + {a : A} {α : type-Ω² a} → + Id (vertical-concat-Ω² refl-Ω² α) α + left-unit-law-vertical-concat-Ω² = left-unit + + right-unit-law-vertical-concat-Ω² : + {a : A} {α : type-Ω² a} → + Id (vertical-concat-Ω² α refl-Ω²) α + right-unit-law-vertical-concat-Ω² = right-unit + + left-unit-law-horizontal-concat-Ω² : + {a : A} {α : type-Ω² a} → + Id (horizontal-concat-Ω² refl-Ω² α) α + left-unit-law-horizontal-concat-Ω² {α = α} = + ( left-unit-law-horizontal-concat-Id² α) ∙ (ap-id α) + + naturality-right-unit : + {x y : A} {p q : Id x y} (α : Id p q) → + coherence-square-identifications + ( right-unit) + ( right-whisker-concat α refl) + ( α) + ( right-unit) + naturality-right-unit {p = refl} refl = refl + + naturality-right-unit-Ω² : + {x : A} (α : type-Ω² x) → + right-whisker-concat α refl = α + naturality-right-unit-Ω² α = inv right-unit ∙ naturality-right-unit α + + right-unit-law-horizontal-concat-Ω² : + {a : A} {α : type-Ω² a} → + Id (horizontal-concat-Ω² α refl-Ω²) α + right-unit-law-horizontal-concat-Ω² {α = α} = + ( right-unit-law-horizontal-concat-Id² α) ∙ (naturality-right-unit-Ω² α) + + left-unit-law-left-whisker-Ω² : + {a : A} (α : type-Ω² a) → + left-whisker-concat (refl-Ω (pair A a)) α = α + left-unit-law-left-whisker-Ω² α = + left-unit-law-left-whisker-concat α + + right-unit-law-right-whisker-Ω² : + {a : A} (α : type-Ω² a) → + right-whisker-concat α (refl-Ω (pair A a)) = α + right-unit-law-right-whisker-Ω² α = + inv (right-unit-law-right-whisker-concat α ∙ right-unit) ``` ### The interchange law for double loop spaces From 0e97f4f34bbf9286187cadb123ae351a9be23305 Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Sat, 3 Feb 2024 10:10:09 +0100 Subject: [PATCH 090/150] using double-whisker-comp --- ...nspositions-standard-finite-types.lagda.md | 20 +++++++++---------- src/foundation/involutions.lagda.md | 1 + 2 files changed, 10 insertions(+), 11 deletions(-) diff --git a/src/finite-group-theory/transpositions-standard-finite-types.lagda.md b/src/finite-group-theory/transpositions-standard-finite-types.lagda.md index 4631a7953e..657c42c800 100644 --- a/src/finite-group-theory/transpositions-standard-finite-types.lagda.md +++ b/src/finite-group-theory/transpositions-standard-finite-types.lagda.md @@ -451,11 +451,6 @@ private htpy-whisker-conjugate {f = f} {f' = f'} g H x = H (g ( f x)) ∙ ap (f' ∘ g) (H x) - htpy-whisker : - {l : Level} {A : UU l} (f : A → A) {g g' : A → A} → - g ~ g' → (f ∘ (g ∘ f)) ~ (f ∘ (g' ∘ f)) - htpy-whisker f H x = ap f (H (f x)) - htpy-conjugate-transposition-swap-two-last-elements-transposition-Fin : (n : ℕ) (x : Fin (succ-ℕ n)) (neq : x ≠ neg-one-Fin n) → htpy-equiv @@ -504,14 +499,15 @@ htpy-conjugate-transposition-swap-two-last-elements-transposition-Fin' : ( inl-Fin (succ-ℕ n) x) ( neq-inr-inl)) htpy-conjugate-transposition-swap-two-last-elements-transposition-Fin' n x neq = - ( ( htpy-whisker + ( ( double-whisker-comp ( map-swap-two-last-elements-transposition-Fin n) ( ( htpy-transposition-Fin-transposition-swap-Fin ( succ-ℕ (succ-ℕ n)) ( neg-two-Fin (succ-ℕ n)) ( inl-Fin (succ-ℕ n) x) ( neq ∘ (is-injective-inl-Fin (succ-ℕ n) ∘ inv))) ∙h - htpy-same-transposition-Fin)) ∙h + htpy-same-transposition-Fin) + ( map-swap-two-last-elements-transposition-Fin n)) ∙h ( ( htpy-conjugate-transposition-swap-two-last-elements-transposition-Fin ( n) ( x) @@ -662,7 +658,7 @@ htpy-permutation-list-adjacent-transpositions-transposition-Fin ( inl i) ( inr star))) ( inr star)) ∙h - ( ( htpy-whisker + ( ( double-whisker-comp ( map-swap-two-last-elements-transposition-Fin n) ( ( htpy-permutation-inl-list-adjacent-transpositions ( n) @@ -681,7 +677,8 @@ htpy-permutation-list-adjacent-transpositions-transposition-Fin ( succ-ℕ n) ( inl i) ( inr star) - ( neq-inl-inr)))) ∙h + ( neq-inl-inr))) + ( map-swap-two-last-elements-transposition-Fin n)) ∙h ( htpy-conjugate-transposition-swap-two-last-elements-transposition-Fin ( n) ( inl i) @@ -709,7 +706,7 @@ htpy-permutation-list-adjacent-transpositions-transposition-Fin ( inr star) ( inl j))) ( inr star)) ∙h - ( ( htpy-whisker + ( ( double-whisker-comp ( map-swap-two-last-elements-transposition-Fin n) ( ( htpy-permutation-inl-list-adjacent-transpositions ( n) @@ -729,7 +726,8 @@ htpy-permutation-list-adjacent-transpositions-transposition-Fin ( inr star) ( inl j) ( neq-inr-inl)) ∙h - ( htpy-same-transposition-Fin))))) ∙h + ( htpy-same-transposition-Fin)))) + ( map-swap-two-last-elements-transposition-Fin n)) ∙h ( ( htpy-conjugate-transposition-swap-two-last-elements-transposition-Fin' ( n) ( inl j) diff --git a/src/foundation/involutions.lagda.md b/src/foundation/involutions.lagda.md index 9b50e38270..34b23c9a60 100644 --- a/src/foundation/involutions.lagda.md +++ b/src/foundation/involutions.lagda.md @@ -12,6 +12,7 @@ open import foundation.dependent-pair-types open import foundation.equivalence-extensionality open import foundation.equivalences open import foundation.fundamental-theorem-of-identity-types +open import foundation.homotopy-algebra open import foundation.homotopy-induction open import foundation.structure-identity-principle open import foundation.universe-levels From a1d8f5ea8570eadd2efd76326c9edbc1fb54c022 Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Sat, 3 Feb 2024 12:34:32 +0100 Subject: [PATCH 091/150] higher homotopies of morphisms of arrows --- .../cones-over-cospan-diagrams.lagda.md | 23 - .../functoriality-fibers-of-maps.lagda.md | 1 + ...igher-homotopies-morphisms-arrows.lagda.md | 186 +++++++ .../homotopies-morphisms-arrows.lagda.md | 458 ++++++++++++++++++ src/foundation/morphisms-arrows.lagda.md | 440 ++--------------- src/foundation/retracts-of-maps.lagda.md | 1 + 6 files changed, 684 insertions(+), 425 deletions(-) create mode 100644 src/foundation/higher-homotopies-morphisms-arrows.lagda.md create mode 100644 src/foundation/homotopies-morphisms-arrows.lagda.md diff --git a/src/foundation/cones-over-cospan-diagrams.lagda.md b/src/foundation/cones-over-cospan-diagrams.lagda.md index 8e810274c1..27c07f78ef 100644 --- a/src/foundation/cones-over-cospan-diagrams.lagda.md +++ b/src/foundation/cones-over-cospan-diagrams.lagda.md @@ -10,7 +10,6 @@ module foundation.cones-over-cospan-diagrams where open import foundation.dependent-pair-types open import foundation.fundamental-theorem-of-identity-types open import foundation.homotopy-induction -open import foundation.morphisms-arrows open import foundation.structure-identity-principle open import foundation.universe-levels @@ -72,14 +71,6 @@ module _ coherence-square-cone : coherence-square-maps horizontal-map-cone vertical-map-cone g f coherence-square-cone = pr2 (pr2 c) - - hom-arrow-cone : hom-arrow vertical-map-cone g - pr1 hom-arrow-cone = horizontal-map-cone - pr1 (pr2 hom-arrow-cone) = f - pr2 (pr2 hom-arrow-cone) = coherence-square-cone - - hom-arrow-cone' : hom-arrow horizontal-map-cone f - hom-arrow-cone' = transpose-hom-arrow vertical-map-cone g hom-arrow-cone ``` ### Dependent cones over cospan diagrams @@ -220,20 +211,6 @@ module _ ( coherence-square-cone f g c) ``` -### Cones obtained from morphisms of arrows - -```agda -module _ - {l1 l2 l3 l4 : Level} {A : UU l1} {B : UU l2} {X : UU l3} {Y : UU l4} - (f : A → B) (g : X → Y) (h : hom-arrow f g) - where - - cone-hom-arrow : cone (map-codomain-hom-arrow f g h) g A - pr1 cone-hom-arrow = f - pr1 (pr2 cone-hom-arrow) = map-domain-hom-arrow f g h - pr2 (pr2 cone-hom-arrow) = coh-hom-arrow f g h -``` - ### The swapping function on cones over cospans ```agda diff --git a/src/foundation/functoriality-fibers-of-maps.lagda.md b/src/foundation/functoriality-fibers-of-maps.lagda.md index 3a4cf5557a..fd976e1834 100644 --- a/src/foundation/functoriality-fibers-of-maps.lagda.md +++ b/src/foundation/functoriality-fibers-of-maps.lagda.md @@ -11,6 +11,7 @@ open import foundation.action-on-higher-identifications-functions open import foundation.action-on-identifications-functions open import foundation.cones-over-cospan-diagrams open import foundation.dependent-pair-types +open import foundation.homotopies-morphisms-arrows open import foundation.morphisms-arrows open import foundation.universe-levels diff --git a/src/foundation/higher-homotopies-morphisms-arrows.lagda.md b/src/foundation/higher-homotopies-morphisms-arrows.lagda.md new file mode 100644 index 0000000000..97e276f982 --- /dev/null +++ b/src/foundation/higher-homotopies-morphisms-arrows.lagda.md @@ -0,0 +1,186 @@ +# Higher homotopies of morphisms of arrows + +```agda +module foundation.higher-homotopies-morphisms-arrows where +``` + +
Imports + +```agda +open import foundation.commuting-squares-of-homotopies +open import foundation.dependent-pair-types +open import foundation.fundamental-theorem-of-identity-types +open import foundation.homotopies-morphisms-arrows +open import foundation.homotopy-induction +open import foundation.morphisms-arrows +open import foundation.structure-identity-principle +open import foundation.torsorial-type-families +open import foundation.universe-levels +open import foundation.whiskering-higher-homotopies-composition +open import foundation.whiskering-homotopies-concatenation + +open import foundation-core.equivalences +open import foundation-core.homotopies +open import foundation-core.identity-types +``` + +
+ +## Idea + +Consider two [morphisms of arrows](foundation.morphisms-arrows.md) `α := (i , j , H)` and `α' := (i' , j' , H')` and two [homotopies of morphisms of arrows](foundation.homotopies-morphisms-arrows.md) `β := (I , J , K)` and `β' : (I' , J' , K')` between them. A {{#concept "2-homotopy of morphisms of arrows" Agda=htpy-htpy-hom-arrow}} is a triple `(γ₀, γ₁ , γ₂)` consisting of [homotopies](foundation-core.homotopies.md) + +```text + γ₀ : I ~ I' + γ₁ : J ~ J' +``` + +and a homotopy witnessing that the square of homotopies + +```text + left-whisker-concat-htpy H (g · γ₀) + H ∙ (g ·l I) ---------------------------------------> H ∙ (g · I') + | | + K | | K' + ∨ ∨ + (J · f) ∙ H' ---------------------------------------> (J' · f) ∙ H' + right-whisker-concat-htpy (γ₁ · f) H' +``` + +[commutes](foundation.commuting-squares-of-homotopies.md). + +## Definitions + +### Homotopies of homotopies of arrows + +```agda +module _ + {l1 l2 l3 l4 : Level} + {A : UU l1} {B : UU l2} {X : UU l3} {Y : UU l4} + (f : A → B) (g : X → Y) (α α' : hom-arrow f g) + (β β' : htpy-hom-arrow f g α α') + where + + coherence-htpy-htpy-hom-arrow : + htpy-domain-htpy-hom-arrow f g α α' β ~ + htpy-domain-htpy-hom-arrow f g α α' β' → + htpy-codomain-htpy-hom-arrow f g α α' β ~ + htpy-codomain-htpy-hom-arrow f g α α' β' → UU (l1 ⊔ l4) + coherence-htpy-htpy-hom-arrow γ₀ γ₁ = + coherence-square-homotopies + ( left-whisker-concat-htpy + ( coh-hom-arrow f g α) + ( left-whisker-comp² g γ₀)) + ( coh-htpy-hom-arrow f g α α' β) + ( coh-htpy-hom-arrow f g α α' β') + ( right-whisker-concat-htpy + ( right-whisker-comp² γ₁ f) + ( coh-hom-arrow f g α')) + + htpy-htpy-hom-arrow : UU (l1 ⊔ l2 ⊔ l3 ⊔ l4) + htpy-htpy-hom-arrow = + Σ ( htpy-domain-htpy-hom-arrow f g α α' β ~ + htpy-domain-htpy-hom-arrow f g α α' β') + ( λ γ₀ → + Σ ( htpy-codomain-htpy-hom-arrow f g α α' β ~ + htpy-codomain-htpy-hom-arrow f g α α' β') + ( coherence-htpy-htpy-hom-arrow γ₀)) + + module _ + (γ : htpy-htpy-hom-arrow) + where + + htpy-domain-htpy-htpy-hom-arrow : + htpy-domain-htpy-hom-arrow f g α α' β ~ + htpy-domain-htpy-hom-arrow f g α α' β' + htpy-domain-htpy-htpy-hom-arrow = pr1 γ + + htpy-codomain-htpy-htpy-hom-arrow : + htpy-codomain-htpy-hom-arrow f g α α' β ~ + htpy-codomain-htpy-hom-arrow f g α α' β' + htpy-codomain-htpy-htpy-hom-arrow = pr1 (pr2 γ) + + coh-htpy-htpy-hom-arrow : + coherence-htpy-htpy-hom-arrow + ( htpy-domain-htpy-htpy-hom-arrow) + ( htpy-codomain-htpy-htpy-hom-arrow) + coh-htpy-htpy-hom-arrow = pr2 (pr2 γ) +``` + +### The reflexivity homotopy of homotopies of morphisms of arrows + +```agda +module _ + {l1 l2 l3 l4 : Level} + {A : UU l1} {B : UU l2} {X : UU l3} {Y : UU l4} + (f : A → B) (g : X → Y) (α α' : hom-arrow f g) + (β : htpy-hom-arrow f g α α') + where + + htpy-domain-refl-htpy-htpy-hom-arrow : + htpy-domain-htpy-hom-arrow f g α α' β ~ + htpy-domain-htpy-hom-arrow f g α α' β + htpy-domain-refl-htpy-htpy-hom-arrow = refl-htpy + + htpy-codomain-refl-htpy-htpy-hom-arrow : + htpy-codomain-htpy-hom-arrow f g α α' β ~ + htpy-codomain-htpy-hom-arrow f g α α' β + htpy-codomain-refl-htpy-htpy-hom-arrow = refl-htpy + + coh-refl-htpy-htpy-hom-arrow : + coherence-htpy-htpy-hom-arrow f g α α' β β + ( htpy-domain-refl-htpy-htpy-hom-arrow) + ( htpy-codomain-refl-htpy-htpy-hom-arrow) + coh-refl-htpy-htpy-hom-arrow = right-unit-htpy + + refl-htpy-htpy-hom-arrow : htpy-htpy-hom-arrow f g α α' β β + pr1 refl-htpy-htpy-hom-arrow = htpy-domain-refl-htpy-htpy-hom-arrow + pr1 (pr2 refl-htpy-htpy-hom-arrow) = htpy-codomain-refl-htpy-htpy-hom-arrow + pr2 (pr2 refl-htpy-htpy-hom-arrow) = coh-refl-htpy-htpy-hom-arrow +``` + +## Properties + +### Homotopies of homotopies of morphisms of arrows characterize equality of homotopies of morphisms of arrows + +```agda +module _ + {l1 l2 l3 l4 : Level} + {A : UU l1} {B : UU l2} {X : UU l3} {Y : UU l4} + (f : A → B) (g : X → Y) (α α' : hom-arrow f g) + (β : htpy-hom-arrow f g α α') + where + + htpy-eq-htpy-hom-arrow : + (β' : htpy-hom-arrow f g α α') → β = β' → htpy-htpy-hom-arrow f g α α' β β' + htpy-eq-htpy-hom-arrow .β refl = refl-htpy-htpy-hom-arrow f g α α' β + + is-torsorial-htpy-htpy-hom-arrow : + is-torsorial (htpy-htpy-hom-arrow f g α α' β) + is-torsorial-htpy-htpy-hom-arrow = + is-torsorial-Eq-structure + ( is-torsorial-htpy _) + ( htpy-domain-htpy-hom-arrow f g α α' β , refl-htpy) + ( is-torsorial-Eq-structure + ( is-torsorial-htpy _) + ( htpy-codomain-htpy-hom-arrow f g α α' β , refl-htpy) + ( is-torsorial-htpy _)) + + is-equiv-htpy-eq-htpy-hom-arrow : + (β' : htpy-hom-arrow f g α α') → is-equiv (htpy-eq-htpy-hom-arrow β') + is-equiv-htpy-eq-htpy-hom-arrow = + fundamental-theorem-id + ( is-torsorial-htpy-htpy-hom-arrow) + ( htpy-eq-htpy-hom-arrow) + + extensionality-htpy-hom-arrow : + (β' : htpy-hom-arrow f g α α') → + (β = β') ≃ htpy-htpy-hom-arrow f g α α' β β' + pr1 (extensionality-htpy-hom-arrow β') = htpy-eq-htpy-hom-arrow β' + pr2 (extensionality-htpy-hom-arrow β') = is-equiv-htpy-eq-htpy-hom-arrow β' + + eq-htpy-htpy-hom-arrow : + (β' : htpy-hom-arrow f g α α') → + htpy-htpy-hom-arrow f g α α' β β' → β = β' + eq-htpy-htpy-hom-arrow β' = map-inv-equiv (extensionality-htpy-hom-arrow β') +``` diff --git a/src/foundation/homotopies-morphisms-arrows.lagda.md b/src/foundation/homotopies-morphisms-arrows.lagda.md new file mode 100644 index 0000000000..2d9bba9d22 --- /dev/null +++ b/src/foundation/homotopies-morphisms-arrows.lagda.md @@ -0,0 +1,458 @@ +# Homotopies of morphisms of arrows + +```agda +module foundation.homotopies-morphisms-arrows where +``` + +
Imports + +```agda +open import foundation.action-on-identifications-functions +open import foundation.commuting-squares-of-identifications +open import foundation.commuting-triangles-of-identifications +open import foundation.cones-over-cospan-diagrams +open import foundation.dependent-pair-types +open import foundation.fundamental-theorem-of-identity-types +open import foundation.homotopy-induction +open import foundation.morphisms-arrows +open import foundation.postcomposition-functions +open import foundation.structure-identity-principle +open import foundation.universe-levels +open import foundation.whiskering-identifications-concatenation + +open import foundation-core.commuting-squares-of-homotopies +open import foundation-core.commuting-squares-of-maps +open import foundation-core.equivalences +open import foundation-core.function-extensionality +open import foundation-core.function-types +open import foundation-core.homotopies +open import foundation-core.identity-types +open import foundation-core.precomposition-functions +open import foundation-core.torsorial-type-families +open import foundation.whiskering-homotopies-composition +``` + +
+ +## Idea + +Consider two [morphisms of arrows](foundation.morphisms-arrows.md) `(i , j , H)` and `(i' , j' , H')` from `f` to `g`, as in the diagrams + +```text + i i' + A -----> X A -----> X + | | | | + f | | g f | | g + ∨ ∨ ∨ ∨ + B -----> Y B -----> Y. + j j' +``` + +A {{#concept "homotopy of morphisms of arrows"}} from `(i , j , H)` to +`(i' , j' , H')` is a triple `(I , J , K)` consisting of homotopies `I : i ~ i'` +and `J : j ~ j'` and a homotopy `K` witnessing that the +[square of homotopies](foundation.commuting-squares-of-homotopies.md) + +```text + J ·r f + (j ∘ f) --------> (j' ∘ f) + | | + H | | H' + V V + (g ∘ i) --------> (g ∘ i') + g ·l I +``` + +commutes. + +## Definitions + +### Homotopies of morphisms of arrows + +```agda +module _ + {l1 l2 l3 l4 : Level} {A : UU l1} {B : UU l2} {X : UU l3} {Y : UU l4} + (f : A → B) (g : X → Y) (α : hom-arrow f g) + where + + coherence-htpy-hom-arrow : + (β : hom-arrow f g) + (I : map-domain-hom-arrow f g α ~ map-domain-hom-arrow f g β) + (J : map-codomain-hom-arrow f g α ~ map-codomain-hom-arrow f g β) → + UU (l1 ⊔ l4) + coherence-htpy-hom-arrow β I J = + coherence-square-homotopies + ( J ·r f) + ( coh-hom-arrow f g α) + ( coh-hom-arrow f g β) + ( g ·l I) + + htpy-hom-arrow : + (β : hom-arrow f g) → UU (l1 ⊔ l2 ⊔ l3 ⊔ l4) + htpy-hom-arrow β = + Σ ( map-domain-hom-arrow f g α ~ map-domain-hom-arrow f g β) + ( λ I → + Σ ( map-codomain-hom-arrow f g α ~ map-codomain-hom-arrow f g β) + ( coherence-htpy-hom-arrow β I)) + + module _ + (β : hom-arrow f g) (η : htpy-hom-arrow β) + where + + htpy-domain-htpy-hom-arrow : + map-domain-hom-arrow f g α ~ map-domain-hom-arrow f g β + htpy-domain-htpy-hom-arrow = pr1 η + + htpy-codomain-htpy-hom-arrow : + map-codomain-hom-arrow f g α ~ map-codomain-hom-arrow f g β + htpy-codomain-htpy-hom-arrow = pr1 (pr2 η) + + coh-htpy-hom-arrow : + coherence-square-homotopies + ( htpy-codomain-htpy-hom-arrow ·r f) + ( coh-hom-arrow f g α) + ( coh-hom-arrow f g β) + ( g ·l htpy-domain-htpy-hom-arrow) + coh-htpy-hom-arrow = pr2 (pr2 η) +``` + +### The reflexivity homotopy of morphisms of arrows + +```agda +module _ + {l1 l2 l3 l4 : Level} {A : UU l1} {B : UU l2} {X : UU l3} {Y : UU l4} + (f : A → B) (g : X → Y) (α : hom-arrow f g) + where + + refl-htpy-hom-arrow : htpy-hom-arrow f g α α + pr1 refl-htpy-hom-arrow = refl-htpy + pr1 (pr2 refl-htpy-hom-arrow) = refl-htpy + pr2 (pr2 refl-htpy-hom-arrow) = right-unit-htpy +``` + +## Operations + +### Concatenation of homotopies of morphisms of arrows + +```agda +module _ + {l1 l2 l3 l4 : Level} {A : UU l1} {B : UU l2} {X : UU l3} {Y : UU l4} + (f : A → B) (g : X → Y) (α β γ : hom-arrow f g) + (H : htpy-hom-arrow f g α β) (K : htpy-hom-arrow f g β γ) + where + + htpy-domain-concat-htpy-hom-arrow : + map-domain-hom-arrow f g α ~ map-domain-hom-arrow f g γ + htpy-domain-concat-htpy-hom-arrow = + htpy-domain-htpy-hom-arrow f g α β H ∙h + htpy-domain-htpy-hom-arrow f g β γ K + + htpy-codomain-concat-htpy-hom-arrow : + map-codomain-hom-arrow f g α ~ map-codomain-hom-arrow f g γ + htpy-codomain-concat-htpy-hom-arrow = + htpy-codomain-htpy-hom-arrow f g α β H ∙h + htpy-codomain-htpy-hom-arrow f g β γ K + + coh-concat-htpy-hom-arrow : + coherence-htpy-hom-arrow f g α γ + ( htpy-domain-concat-htpy-hom-arrow) + ( htpy-codomain-concat-htpy-hom-arrow) + coh-concat-htpy-hom-arrow a = + ( ap + ( concat (coh-hom-arrow f g α a) (g (map-domain-hom-arrow f g γ a))) + ( ap-concat g + ( htpy-domain-htpy-hom-arrow f g α β H a) + ( htpy-domain-htpy-hom-arrow f g β γ K a))) ∙ + ( horizontal-pasting-coherence-square-identifications + ( htpy-codomain-htpy-hom-arrow f g α β H (f a)) + ( htpy-codomain-htpy-hom-arrow f g β γ K (f a)) + ( coh-hom-arrow f g α a) + ( coh-hom-arrow f g β a) + ( coh-hom-arrow f g γ a) + ( (g ·l htpy-domain-htpy-hom-arrow f g α β H) a) + ( (g ·l htpy-domain-htpy-hom-arrow f g β γ K) a) + ( coh-htpy-hom-arrow f g α β H a) + ( coh-htpy-hom-arrow f g β γ K a)) + + concat-htpy-hom-arrow : htpy-hom-arrow f g α γ + pr1 concat-htpy-hom-arrow = htpy-domain-concat-htpy-hom-arrow + pr1 (pr2 concat-htpy-hom-arrow) = htpy-codomain-concat-htpy-hom-arrow + pr2 (pr2 concat-htpy-hom-arrow) = coh-concat-htpy-hom-arrow +``` + +### Inverses of homotopies of morphisms of arrows + +```agda +module _ + {l1 l2 l3 l4 : Level} {A : UU l1} {B : UU l2} {X : UU l3} {Y : UU l4} + (f : A → B) (g : X → Y) (α β : hom-arrow f g) (H : htpy-hom-arrow f g α β) + where + + htpy-domain-inv-htpy-hom-arrow : + map-domain-hom-arrow f g β ~ map-domain-hom-arrow f g α + htpy-domain-inv-htpy-hom-arrow = + inv-htpy (htpy-domain-htpy-hom-arrow f g α β H) + + htpy-codomain-inv-htpy-hom-arrow : + map-codomain-hom-arrow f g β ~ map-codomain-hom-arrow f g α + htpy-codomain-inv-htpy-hom-arrow = + inv-htpy (htpy-codomain-htpy-hom-arrow f g α β H) + + coh-inv-htpy-hom-arrow : + coherence-htpy-hom-arrow f g β α + ( htpy-domain-inv-htpy-hom-arrow) + ( htpy-codomain-inv-htpy-hom-arrow) + coh-inv-htpy-hom-arrow a = + ( ap + ( concat (coh-hom-arrow f g β a) _) + ( ap-inv g (htpy-domain-htpy-hom-arrow f g α β H a))) ∙ + ( double-transpose-eq-concat' + ( coh-hom-arrow f g α a) + ( htpy-codomain-htpy-hom-arrow f g α β H (f a)) + ( ap g (htpy-domain-htpy-hom-arrow f g α β H a)) + ( coh-hom-arrow f g β a) + ( inv (coh-htpy-hom-arrow f g α β H a))) + + inv-htpy-hom-arrow : htpy-hom-arrow f g β α + pr1 inv-htpy-hom-arrow = htpy-domain-inv-htpy-hom-arrow + pr1 (pr2 inv-htpy-hom-arrow) = htpy-codomain-inv-htpy-hom-arrow + pr2 (pr2 inv-htpy-hom-arrow) = coh-inv-htpy-hom-arrow +``` + +### Whiskering of homotopies of morphisms of arrows + +#### Left whiskering + +```agda +module _ + {l1 l2 l3 l4 l5 l6 : Level} + {A : UU l1} {B : UU l2} {X : UU l3} {Y : UU l4} {U : UU l5} {V : UU l6} + (f : A → B) (g : X → Y) (h : U → V) + (γ : hom-arrow g h) (α β : hom-arrow f g) (H : htpy-hom-arrow f g α β) + where + + htpy-domain-left-whisker-comp-hom-arrow : + map-domain-comp-hom-arrow f g h γ α ~ map-domain-comp-hom-arrow f g h γ β + htpy-domain-left-whisker-comp-hom-arrow = + map-domain-hom-arrow g h γ ·l htpy-domain-htpy-hom-arrow f g α β H + + htpy-codomain-left-whisker-comp-hom-arrow : + map-codomain-comp-hom-arrow f g h γ α ~ + map-codomain-comp-hom-arrow f g h γ β + htpy-codomain-left-whisker-comp-hom-arrow = + map-codomain-hom-arrow g h γ ·l htpy-codomain-htpy-hom-arrow f g α β H + + coh-left-whisker-comp-hom-arrow : + coherence-htpy-hom-arrow f h + ( comp-hom-arrow f g h γ α) + ( comp-hom-arrow f g h γ β) + ( htpy-domain-left-whisker-comp-hom-arrow) + ( htpy-codomain-left-whisker-comp-hom-arrow) + coh-left-whisker-comp-hom-arrow a = + ( left-whisker-coherence-triangle-identifications' + ( ap (map-codomain-hom-arrow g h γ) (coh-hom-arrow f g α a)) + ( _) + ( _) + ( _) + ( ( ap + ( coh-hom-arrow g h γ (map-domain-hom-arrow f g α a) ∙_) + ( inv + ( ap-comp h + ( map-domain-hom-arrow g h γ) + ( htpy-domain-htpy-hom-arrow f g α β H a)))) ∙ + ( nat-htpy + ( coh-hom-arrow g h γ) + ( htpy-domain-htpy-hom-arrow f g α β H a)))) ∙ + ( right-whisker-coherence-square-identifications + ( ap + ( map-codomain-hom-arrow g h γ) + ( htpy-codomain-htpy-hom-arrow f g α β H (f a))) + ( ap (map-codomain-hom-arrow g h γ) (coh-hom-arrow f g α a)) + ( ap (map-codomain-hom-arrow g h γ) (coh-hom-arrow f g β a)) + ( ap + ( map-codomain-hom-arrow g h γ ∘ g) + ( htpy-domain-htpy-hom-arrow f g α β H a)) + ( coh-hom-arrow g h γ (map-domain-hom-arrow f g β a)) + ( ( ap + ( ap (map-codomain-hom-arrow g h γ) (coh-hom-arrow f g α a) ∙_) + ( ap-comp + ( map-codomain-hom-arrow g h γ) + ( g) + ( htpy-domain-htpy-hom-arrow f g α β H a))) ∙ + ( map-coherence-square-identifications + ( map-codomain-hom-arrow g h γ) + ( htpy-codomain-htpy-hom-arrow f g α β H (f a)) + ( coh-hom-arrow f g α a) + ( coh-hom-arrow f g β a) + ( ap g (htpy-domain-htpy-hom-arrow f g α β H a)) + ( coh-htpy-hom-arrow f g α β H a)))) + + left-whisker-comp-hom-arrow : + htpy-hom-arrow f h + ( comp-hom-arrow f g h γ α) + ( comp-hom-arrow f g h γ β) + pr1 left-whisker-comp-hom-arrow = + htpy-domain-left-whisker-comp-hom-arrow + pr1 (pr2 left-whisker-comp-hom-arrow) = + htpy-codomain-left-whisker-comp-hom-arrow + pr2 (pr2 left-whisker-comp-hom-arrow) = + coh-left-whisker-comp-hom-arrow +``` + +#### Right whiskering + +Exercise for Fredrik. + +## Properties + +### Homotopies of morphisms of arrows characterize equality of morphisms of arrows + +```agda +module _ + {l1 l2 l3 l4 : Level} {A : UU l1} {B : UU l2} {X : UU l3} {Y : UU l4} + (f : A → B) (g : X → Y) (α : hom-arrow f g) + where + + is-torsorial-htpy-hom-arrow : + is-torsorial (htpy-hom-arrow f g α) + is-torsorial-htpy-hom-arrow = + is-torsorial-Eq-structure + ( is-torsorial-htpy (map-domain-hom-arrow f g α)) + ( map-domain-hom-arrow f g α , refl-htpy) + ( is-torsorial-Eq-structure + ( is-torsorial-htpy (map-codomain-hom-arrow f g α)) + ( map-codomain-hom-arrow f g α , refl-htpy) + ( is-torsorial-htpy (coh-hom-arrow f g α ∙h refl-htpy))) + + htpy-eq-hom-arrow : (β : hom-arrow f g) → (α = β) → htpy-hom-arrow f g α β + htpy-eq-hom-arrow β refl = refl-htpy-hom-arrow f g α + + is-equiv-htpy-eq-hom-arrow : + (β : hom-arrow f g) → is-equiv (htpy-eq-hom-arrow β) + is-equiv-htpy-eq-hom-arrow = + fundamental-theorem-id is-torsorial-htpy-hom-arrow htpy-eq-hom-arrow + + extensionality-hom-arrow : + (β : hom-arrow f g) → (α = β) ≃ htpy-hom-arrow f g α β + pr1 (extensionality-hom-arrow β) = htpy-eq-hom-arrow β + pr2 (extensionality-hom-arrow β) = is-equiv-htpy-eq-hom-arrow β + + eq-htpy-hom-arrow : + (β : hom-arrow f g) → htpy-hom-arrow f g α β → α = β + eq-htpy-hom-arrow β = map-inv-equiv (extensionality-hom-arrow β) +``` + +### Associativity of composition of morphisms of arrows + +Consider a commuting diagram of the form + +```text + α₀ β₀ γ₀ + A -----> X -----> U -----> K + | | | | + f | α g | β h | γ | i + V V V V + B -----> Y -----> V -----> L + α₁ β₁ γ₁ +``` + +Then associativity of composition of morphisms of arrows follows directly from +associativity of horizontal pasting of commutative squares of maps. + +```agda +module _ + {l1 l2 l3 l4 l5 l6 l7 l8 : Level} + {A : UU l1} {B : UU l2} {X : UU l3} {Y : UU l4} {U : UU l5} {V : UU l6} + {K : UU l7} {L : UU l8} (f : A → B) (g : X → Y) (h : U → V) (i : K → L) + (γ : hom-arrow h i) (β : hom-arrow g h) (α : hom-arrow f g) + where + + assoc-comp-hom-arrow : + htpy-hom-arrow f i + ( comp-hom-arrow f g i (comp-hom-arrow g h i γ β) α) + ( comp-hom-arrow f h i γ (comp-hom-arrow f g h β α)) + pr1 assoc-comp-hom-arrow = refl-htpy + pr1 (pr2 assoc-comp-hom-arrow) = refl-htpy + pr2 (pr2 assoc-comp-hom-arrow) = + ( right-unit-htpy) ∙h + ( inv-htpy + ( assoc-pasting-horizontal-coherence-square-maps + ( map-domain-hom-arrow f g α) + ( map-domain-hom-arrow g h β) + ( map-domain-hom-arrow h i γ) + ( f) + ( g) + ( h) + ( i) + ( map-codomain-hom-arrow f g α) + ( map-codomain-hom-arrow g h β) + ( map-codomain-hom-arrow h i γ) + ( coh-hom-arrow f g α) + ( coh-hom-arrow g h β) + ( coh-hom-arrow h i γ))) + + inv-assoc-comp-hom-arrow : + htpy-hom-arrow f i + ( comp-hom-arrow f h i γ (comp-hom-arrow f g h β α)) + ( comp-hom-arrow f g i (comp-hom-arrow g h i γ β) α) + pr1 inv-assoc-comp-hom-arrow = refl-htpy + pr1 (pr2 inv-assoc-comp-hom-arrow) = refl-htpy + pr2 (pr2 inv-assoc-comp-hom-arrow) = + ( right-unit-htpy) ∙h + ( assoc-pasting-horizontal-coherence-square-maps + ( map-domain-hom-arrow f g α) + ( map-domain-hom-arrow g h β) + ( map-domain-hom-arrow h i γ) + ( f) + ( g) + ( h) + ( i) + ( map-codomain-hom-arrow f g α) + ( map-codomain-hom-arrow g h β) + ( map-codomain-hom-arrow h i γ) + ( coh-hom-arrow f g α) + ( coh-hom-arrow g h β) + ( coh-hom-arrow h i γ)) +``` + +### The left unit law for composition of morphisms of arrows + +```agda +module _ + {l1 l2 l3 l4 : Level} {A : UU l1} {B : UU l2} {X : UU l3} {Y : UU l4} + (f : A → B) (g : X → Y) (α : hom-arrow f g) + where + + left-unit-law-comp-hom-arrow : + htpy-hom-arrow f g + ( comp-hom-arrow f g g id-hom-arrow α) + ( α) + pr1 left-unit-law-comp-hom-arrow = refl-htpy + pr1 (pr2 left-unit-law-comp-hom-arrow) = refl-htpy + pr2 (pr2 left-unit-law-comp-hom-arrow) = + ( right-unit-htpy) ∙h + ( right-unit-law-pasting-horizontal-coherence-square-maps + ( map-domain-hom-arrow f g α) + ( f) + ( g) + ( map-codomain-hom-arrow f g α) + ( coh-hom-arrow f g α)) +``` + +### The right unit law for composition of morphisms of arrows + +```agda +module _ + {l1 l2 l3 l4 : Level} {A : UU l1} {B : UU l2} {X : UU l3} {Y : UU l4} + (f : A → B) (g : X → Y) (α : hom-arrow f g) + where + + right-unit-law-comp-hom-arrow : + htpy-hom-arrow f g + ( comp-hom-arrow f f g α id-hom-arrow) + ( α) + pr1 right-unit-law-comp-hom-arrow = refl-htpy + pr1 (pr2 right-unit-law-comp-hom-arrow) = refl-htpy + pr2 (pr2 right-unit-law-comp-hom-arrow) = right-unit-htpy +``` + diff --git a/src/foundation/morphisms-arrows.lagda.md b/src/foundation/morphisms-arrows.lagda.md index 119111d7ac..0316f8f639 100644 --- a/src/foundation/morphisms-arrows.lagda.md +++ b/src/foundation/morphisms-arrows.lagda.md @@ -7,27 +7,18 @@ module foundation.morphisms-arrows where
Imports ```agda -open import foundation.action-on-identifications-functions -open import foundation.commuting-squares-of-identifications -open import foundation.commuting-triangles-of-identifications +open import foundation.cones-over-cospan-diagrams open import foundation.dependent-pair-types -open import foundation.fundamental-theorem-of-identity-types -open import foundation.homotopy-induction -open import foundation.postcomposition-functions -open import foundation.structure-identity-principle open import foundation.universe-levels -open import foundation.whiskering-identifications-concatenation +open import foundation.whiskering-homotopies-composition -open import foundation-core.commuting-squares-of-homotopies open import foundation-core.commuting-squares-of-maps -open import foundation-core.equivalences open import foundation-core.function-extensionality open import foundation-core.function-types open import foundation-core.homotopies open import foundation-core.identity-types +open import foundation-core.postcomposition-functions open import foundation-core.precomposition-functions -open import foundation-core.torsorial-type-families -open import foundation.whiskering-homotopies-composition ```
@@ -136,6 +127,38 @@ module _ pr2 (pr2 transpose-hom-arrow) = coh-transpose-hom-arrow ``` +### Morphisms of arrows obtained from cones over cospans + +```agda +module _ + {l1 l2 l3 l4 : Level} {A : UU l1} {B : UU l2} {X : UU l3} {C : UU l4} + (f : A → X) (g : B → X) (c : cone f g C) + where + + hom-arrow-cone : hom-arrow (vertical-map-cone f g c) g + pr1 hom-arrow-cone = horizontal-map-cone f g c + pr1 (pr2 hom-arrow-cone) = f + pr2 (pr2 hom-arrow-cone) = coherence-square-cone f g c + + hom-arrow-cone' : hom-arrow (horizontal-map-cone f g c) f + hom-arrow-cone' = + transpose-hom-arrow (vertical-map-cone f g c) g hom-arrow-cone +``` + +### Cones over cospans obtained from morphisms of arrows + +```agda +module _ + {l1 l2 l3 l4 : Level} {A : UU l1} {B : UU l2} {X : UU l3} {Y : UU l4} + (f : A → B) (g : X → Y) (h : hom-arrow f g) + where + + cone-hom-arrow : cone (map-codomain-hom-arrow f g h) g A + pr1 cone-hom-arrow = f + pr1 (pr2 cone-hom-arrow) = map-domain-hom-arrow f g h + pr2 (pr2 cone-hom-arrow) = coh-hom-arrow f g h +``` + ### The identity morphism of arrows The identity morphism of arrows is defined as @@ -191,6 +214,8 @@ maps. The {{#concept "composition" Disambiguation="morphism of arrows"}} of β₁ ∘ α₁ ``` +**Note.** Associativity and the unit laws for composition of morphisms of arrows are proven in [Homotopies of morphisms of arrows](foundation.homotopies-morphisms-arrows.md). + ```agda module _ {l1 l2 l3 l4 l5 l6 : Level} @@ -231,282 +256,6 @@ module _ coh-comp-hom-arrow ``` -### Homotopies of morphisms of arrows - -A {{#concept "homotopy of morphisms of arrows"}} from `(i , j , H)` to -`(i' , j' , H')` is a triple `(I , J , K)` consisting of homotopies `I : i ~ i'` -and `J : j ~ j'` and a homotopy `K` witnessing that the -[square of homotopies](foundation.commuting-squares-of-homotopies.md) - -```text - J ·r f - (j ∘ f) --------> (j' ∘ f) - | | - H | | H' - V V - (g ∘ i) --------> (g ∘ i') - g ·l I -``` - -commutes. - -```agda -module _ - {l1 l2 l3 l4 : Level} {A : UU l1} {B : UU l2} {X : UU l3} {Y : UU l4} - (f : A → B) (g : X → Y) (α : hom-arrow f g) - where - - coherence-htpy-hom-arrow : - (β : hom-arrow f g) - (I : map-domain-hom-arrow f g α ~ map-domain-hom-arrow f g β) - (J : map-codomain-hom-arrow f g α ~ map-codomain-hom-arrow f g β) → - UU (l1 ⊔ l4) - coherence-htpy-hom-arrow β I J = - coherence-square-homotopies - ( J ·r f) - ( coh-hom-arrow f g α) - ( coh-hom-arrow f g β) - ( g ·l I) - - htpy-hom-arrow : - (β : hom-arrow f g) → UU (l1 ⊔ l2 ⊔ l3 ⊔ l4) - htpy-hom-arrow β = - Σ ( map-domain-hom-arrow f g α ~ map-domain-hom-arrow f g β) - ( λ I → - Σ ( map-codomain-hom-arrow f g α ~ map-codomain-hom-arrow f g β) - ( coherence-htpy-hom-arrow β I)) - - module _ - (β : hom-arrow f g) (η : htpy-hom-arrow β) - where - - htpy-domain-htpy-hom-arrow : - map-domain-hom-arrow f g α ~ map-domain-hom-arrow f g β - htpy-domain-htpy-hom-arrow = pr1 η - - htpy-codomain-htpy-hom-arrow : - map-codomain-hom-arrow f g α ~ map-codomain-hom-arrow f g β - htpy-codomain-htpy-hom-arrow = pr1 (pr2 η) - - coh-htpy-hom-arrow : - coherence-square-homotopies - ( htpy-codomain-htpy-hom-arrow ·r f) - ( coh-hom-arrow f g α) - ( coh-hom-arrow f g β) - ( g ·l htpy-domain-htpy-hom-arrow) - coh-htpy-hom-arrow = pr2 (pr2 η) - - refl-htpy-hom-arrow : htpy-hom-arrow α - pr1 refl-htpy-hom-arrow = refl-htpy - pr1 (pr2 refl-htpy-hom-arrow) = refl-htpy - pr2 (pr2 refl-htpy-hom-arrow) = right-unit-htpy - - is-torsorial-htpy-hom-arrow : - is-torsorial htpy-hom-arrow - is-torsorial-htpy-hom-arrow = - is-torsorial-Eq-structure - ( is-torsorial-htpy (map-domain-hom-arrow f g α)) - ( map-domain-hom-arrow f g α , refl-htpy) - ( is-torsorial-Eq-structure - ( is-torsorial-htpy (map-codomain-hom-arrow f g α)) - ( map-codomain-hom-arrow f g α , refl-htpy) - ( is-torsorial-htpy (coh-hom-arrow f g α ∙h refl-htpy))) - - htpy-eq-hom-arrow : (β : hom-arrow f g) → (α = β) → htpy-hom-arrow β - htpy-eq-hom-arrow β refl = refl-htpy-hom-arrow - - is-equiv-htpy-eq-hom-arrow : - (β : hom-arrow f g) → is-equiv (htpy-eq-hom-arrow β) - is-equiv-htpy-eq-hom-arrow = - fundamental-theorem-id is-torsorial-htpy-hom-arrow htpy-eq-hom-arrow - - extensionality-hom-arrow : - (β : hom-arrow f g) → (α = β) ≃ htpy-hom-arrow β - pr1 (extensionality-hom-arrow β) = htpy-eq-hom-arrow β - pr2 (extensionality-hom-arrow β) = is-equiv-htpy-eq-hom-arrow β - - eq-htpy-hom-arrow : - (β : hom-arrow f g) → htpy-hom-arrow β → α = β - eq-htpy-hom-arrow β = map-inv-equiv (extensionality-hom-arrow β) -``` - -### Concatenation of homotopies of morphisms of arrows - -```agda -module _ - {l1 l2 l3 l4 : Level} {A : UU l1} {B : UU l2} {X : UU l3} {Y : UU l4} - (f : A → B) (g : X → Y) (α β γ : hom-arrow f g) - (H : htpy-hom-arrow f g α β) (K : htpy-hom-arrow f g β γ) - where - - htpy-domain-concat-htpy-hom-arrow : - map-domain-hom-arrow f g α ~ map-domain-hom-arrow f g γ - htpy-domain-concat-htpy-hom-arrow = - htpy-domain-htpy-hom-arrow f g α β H ∙h - htpy-domain-htpy-hom-arrow f g β γ K - - htpy-codomain-concat-htpy-hom-arrow : - map-codomain-hom-arrow f g α ~ map-codomain-hom-arrow f g γ - htpy-codomain-concat-htpy-hom-arrow = - htpy-codomain-htpy-hom-arrow f g α β H ∙h - htpy-codomain-htpy-hom-arrow f g β γ K - - coh-concat-htpy-hom-arrow : - coherence-htpy-hom-arrow f g α γ - ( htpy-domain-concat-htpy-hom-arrow) - ( htpy-codomain-concat-htpy-hom-arrow) - coh-concat-htpy-hom-arrow a = - ( ap - ( concat (coh-hom-arrow f g α a) (g (map-domain-hom-arrow f g γ a))) - ( ap-concat g - ( htpy-domain-htpy-hom-arrow f g α β H a) - ( htpy-domain-htpy-hom-arrow f g β γ K a))) ∙ - ( horizontal-pasting-coherence-square-identifications - ( htpy-codomain-htpy-hom-arrow f g α β H (f a)) - ( htpy-codomain-htpy-hom-arrow f g β γ K (f a)) - ( coh-hom-arrow f g α a) - ( coh-hom-arrow f g β a) - ( coh-hom-arrow f g γ a) - ( (g ·l htpy-domain-htpy-hom-arrow f g α β H) a) - ( (g ·l htpy-domain-htpy-hom-arrow f g β γ K) a) - ( coh-htpy-hom-arrow f g α β H a) - ( coh-htpy-hom-arrow f g β γ K a)) - - concat-htpy-hom-arrow : htpy-hom-arrow f g α γ - pr1 concat-htpy-hom-arrow = htpy-domain-concat-htpy-hom-arrow - pr1 (pr2 concat-htpy-hom-arrow) = htpy-codomain-concat-htpy-hom-arrow - pr2 (pr2 concat-htpy-hom-arrow) = coh-concat-htpy-hom-arrow -``` - -### Inverses of homotopies of morphisms of arrows - -```agda -module _ - {l1 l2 l3 l4 : Level} {A : UU l1} {B : UU l2} {X : UU l3} {Y : UU l4} - (f : A → B) (g : X → Y) (α β : hom-arrow f g) (H : htpy-hom-arrow f g α β) - where - - htpy-domain-inv-htpy-hom-arrow : - map-domain-hom-arrow f g β ~ map-domain-hom-arrow f g α - htpy-domain-inv-htpy-hom-arrow = - inv-htpy (htpy-domain-htpy-hom-arrow f g α β H) - - htpy-codomain-inv-htpy-hom-arrow : - map-codomain-hom-arrow f g β ~ map-codomain-hom-arrow f g α - htpy-codomain-inv-htpy-hom-arrow = - inv-htpy (htpy-codomain-htpy-hom-arrow f g α β H) - - coh-inv-htpy-hom-arrow : - coherence-htpy-hom-arrow f g β α - ( htpy-domain-inv-htpy-hom-arrow) - ( htpy-codomain-inv-htpy-hom-arrow) - coh-inv-htpy-hom-arrow a = - ( ap - ( concat (coh-hom-arrow f g β a) _) - ( ap-inv g (htpy-domain-htpy-hom-arrow f g α β H a))) ∙ - ( double-transpose-eq-concat' - ( coh-hom-arrow f g α a) - ( htpy-codomain-htpy-hom-arrow f g α β H (f a)) - ( ap g (htpy-domain-htpy-hom-arrow f g α β H a)) - ( coh-hom-arrow f g β a) - ( inv (coh-htpy-hom-arrow f g α β H a))) - - inv-htpy-hom-arrow : htpy-hom-arrow f g β α - pr1 inv-htpy-hom-arrow = htpy-domain-inv-htpy-hom-arrow - pr1 (pr2 inv-htpy-hom-arrow) = htpy-codomain-inv-htpy-hom-arrow - pr2 (pr2 inv-htpy-hom-arrow) = coh-inv-htpy-hom-arrow -``` - -### Whiskering of homotopies of morphisms of arrows - -#### Left whiskering - -```agda -module _ - {l1 l2 l3 l4 l5 l6 : Level} - {A : UU l1} {B : UU l2} {X : UU l3} {Y : UU l4} {U : UU l5} {V : UU l6} - (f : A → B) (g : X → Y) (h : U → V) - (γ : hom-arrow g h) (α β : hom-arrow f g) (H : htpy-hom-arrow f g α β) - where - - htpy-domain-left-whisker-comp-hom-arrow : - map-domain-comp-hom-arrow f g h γ α ~ map-domain-comp-hom-arrow f g h γ β - htpy-domain-left-whisker-comp-hom-arrow = - map-domain-hom-arrow g h γ ·l htpy-domain-htpy-hom-arrow f g α β H - - htpy-codomain-left-whisker-comp-hom-arrow : - map-codomain-comp-hom-arrow f g h γ α ~ - map-codomain-comp-hom-arrow f g h γ β - htpy-codomain-left-whisker-comp-hom-arrow = - map-codomain-hom-arrow g h γ ·l htpy-codomain-htpy-hom-arrow f g α β H - - coh-left-whisker-comp-hom-arrow : - coherence-htpy-hom-arrow f h - ( comp-hom-arrow f g h γ α) - ( comp-hom-arrow f g h γ β) - ( htpy-domain-left-whisker-comp-hom-arrow) - ( htpy-codomain-left-whisker-comp-hom-arrow) - coh-left-whisker-comp-hom-arrow a = - ( left-whisker-coherence-triangle-identifications' - ( ap (map-codomain-hom-arrow g h γ) (coh-hom-arrow f g α a)) - ( _) - ( _) - ( _) - ( ( ap - ( coh-hom-arrow g h γ (map-domain-hom-arrow f g α a) ∙_) - ( inv - ( ap-comp h - ( map-domain-hom-arrow g h γ) - ( htpy-domain-htpy-hom-arrow f g α β H a)))) ∙ - ( nat-htpy - ( coh-hom-arrow g h γ) - ( htpy-domain-htpy-hom-arrow f g α β H a)))) ∙ - ( right-whisker-coherence-square-identifications - ( ap - ( map-codomain-hom-arrow g h γ) - ( htpy-codomain-htpy-hom-arrow f g α β H (f a))) - ( ap (map-codomain-hom-arrow g h γ) (coh-hom-arrow f g α a)) - ( ap (map-codomain-hom-arrow g h γ) (coh-hom-arrow f g β a)) - ( ap - ( map-codomain-hom-arrow g h γ ∘ g) - ( htpy-domain-htpy-hom-arrow f g α β H a)) - ( coh-hom-arrow g h γ (map-domain-hom-arrow f g β a)) - ( ( ap - ( ap (map-codomain-hom-arrow g h γ) (coh-hom-arrow f g α a) ∙_) - ( ap-comp - ( map-codomain-hom-arrow g h γ) - ( g) - ( htpy-domain-htpy-hom-arrow f g α β H a))) ∙ - ( map-coherence-square-identifications - ( map-codomain-hom-arrow g h γ) - ( htpy-codomain-htpy-hom-arrow f g α β H (f a)) - ( coh-hom-arrow f g α a) - ( coh-hom-arrow f g β a) - ( ap g (htpy-domain-htpy-hom-arrow f g α β H a)) - ( coh-htpy-hom-arrow f g α β H a)))) - - left-whisker-comp-hom-arrow : - htpy-hom-arrow f h - ( comp-hom-arrow f g h γ α) - ( comp-hom-arrow f g h γ β) - pr1 left-whisker-comp-hom-arrow = - htpy-domain-left-whisker-comp-hom-arrow - pr1 (pr2 left-whisker-comp-hom-arrow) = - htpy-codomain-left-whisker-comp-hom-arrow - pr2 (pr2 left-whisker-comp-hom-arrow) = - coh-left-whisker-comp-hom-arrow -``` - -#### Right whiskering - -Exercise for Fredrik. - -### Homotopies of homotopies of arrows - -```agda - -``` - ### Morphisms of arrows give morphisms of precomposition arrows A morphism of arrows `α : f → g` gives a morphism of precomposition arrows @@ -551,120 +300,6 @@ module _ eq-htpy (coh-hom-arrow f g α ·r h) ``` -### Associativity of composition of morphisms of arrows - -Consider a commuting diagram of the form - -```text - α₀ β₀ γ₀ - A -----> X -----> U -----> K - | | | | - f | α g | β h | γ | i - V V V V - B -----> Y -----> V -----> L - α₁ β₁ γ₁ -``` - -Then associativity of composition of morphisms of arrows follows directly from -associativity of horizontal pasting of commutative squares of maps. - -```agda -module _ - {l1 l2 l3 l4 l5 l6 l7 l8 : Level} - {A : UU l1} {B : UU l2} {X : UU l3} {Y : UU l4} {U : UU l5} {V : UU l6} - {K : UU l7} {L : UU l8} (f : A → B) (g : X → Y) (h : U → V) (i : K → L) - (γ : hom-arrow h i) (β : hom-arrow g h) (α : hom-arrow f g) - where - - assoc-comp-hom-arrow : - htpy-hom-arrow f i - ( comp-hom-arrow f g i (comp-hom-arrow g h i γ β) α) - ( comp-hom-arrow f h i γ (comp-hom-arrow f g h β α)) - pr1 assoc-comp-hom-arrow = refl-htpy - pr1 (pr2 assoc-comp-hom-arrow) = refl-htpy - pr2 (pr2 assoc-comp-hom-arrow) = - ( right-unit-htpy) ∙h - ( inv-htpy - ( assoc-pasting-horizontal-coherence-square-maps - ( map-domain-hom-arrow f g α) - ( map-domain-hom-arrow g h β) - ( map-domain-hom-arrow h i γ) - ( f) - ( g) - ( h) - ( i) - ( map-codomain-hom-arrow f g α) - ( map-codomain-hom-arrow g h β) - ( map-codomain-hom-arrow h i γ) - ( coh-hom-arrow f g α) - ( coh-hom-arrow g h β) - ( coh-hom-arrow h i γ))) - - inv-assoc-comp-hom-arrow : - htpy-hom-arrow f i - ( comp-hom-arrow f h i γ (comp-hom-arrow f g h β α)) - ( comp-hom-arrow f g i (comp-hom-arrow g h i γ β) α) - pr1 inv-assoc-comp-hom-arrow = refl-htpy - pr1 (pr2 inv-assoc-comp-hom-arrow) = refl-htpy - pr2 (pr2 inv-assoc-comp-hom-arrow) = - ( right-unit-htpy) ∙h - ( assoc-pasting-horizontal-coherence-square-maps - ( map-domain-hom-arrow f g α) - ( map-domain-hom-arrow g h β) - ( map-domain-hom-arrow h i γ) - ( f) - ( g) - ( h) - ( i) - ( map-codomain-hom-arrow f g α) - ( map-codomain-hom-arrow g h β) - ( map-codomain-hom-arrow h i γ) - ( coh-hom-arrow f g α) - ( coh-hom-arrow g h β) - ( coh-hom-arrow h i γ)) -``` - -### The left unit law for composition of morphisms of arrows - -```agda -module _ - {l1 l2 l3 l4 : Level} {A : UU l1} {B : UU l2} {X : UU l3} {Y : UU l4} - (f : A → B) (g : X → Y) (α : hom-arrow f g) - where - - left-unit-law-comp-hom-arrow : - htpy-hom-arrow f g - ( comp-hom-arrow f g g id-hom-arrow α) - ( α) - pr1 left-unit-law-comp-hom-arrow = refl-htpy - pr1 (pr2 left-unit-law-comp-hom-arrow) = refl-htpy - pr2 (pr2 left-unit-law-comp-hom-arrow) = - ( right-unit-htpy) ∙h - ( right-unit-law-pasting-horizontal-coherence-square-maps - ( map-domain-hom-arrow f g α) - ( f) - ( g) - ( map-codomain-hom-arrow f g α) - ( coh-hom-arrow f g α)) -``` - -### The right unit law for composition of morphisms of arrows - -```agda -module _ - {l1 l2 l3 l4 : Level} {A : UU l1} {B : UU l2} {X : UU l3} {Y : UU l4} - (f : A → B) (g : X → Y) (α : hom-arrow f g) - where - - right-unit-law-comp-hom-arrow : - htpy-hom-arrow f g - ( comp-hom-arrow f f g α id-hom-arrow) - ( α) - pr1 right-unit-law-comp-hom-arrow = refl-htpy - pr1 (pr2 right-unit-law-comp-hom-arrow) = refl-htpy - pr2 (pr2 right-unit-law-comp-hom-arrow) = right-unit-htpy -``` - ## See also - [Equivalences of arrows](foundation.equivalences-arrows.md) @@ -672,3 +307,4 @@ module _ - [Fibered maps](foundation.fibered-maps.md) for the same concept under a different name. - [Morphisms of arrows obtained from diagonal maps](orthogonal-factorization-systems.morphisms-arrows-from-diagonal-maps.md) +- [Homotopies of morphisms of arrows](foundation.homotopies-morphisms-arrows.md) diff --git a/src/foundation/retracts-of-maps.lagda.md b/src/foundation/retracts-of-maps.lagda.md index 19456192b3..8004b9b751 100644 --- a/src/foundation/retracts-of-maps.lagda.md +++ b/src/foundation/retracts-of-maps.lagda.md @@ -11,6 +11,7 @@ open import foundation.action-on-identifications-functions open import foundation.commuting-prisms-of-maps open import foundation.dependent-pair-types open import foundation.functoriality-fibers-of-maps +open import foundation.homotopies-morphisms-arrows open import foundation.morphisms-arrows open import foundation.postcomposition-functions open import foundation.precomposition-functions From d33dcbf4c16be9dc2d28c466b978805ae49c732c Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Sat, 3 Feb 2024 15:19:25 +0100 Subject: [PATCH 092/150] solving the exercise for fredrik --- .../homotopies-morphisms-arrows.lagda.md | 72 ++++++++++++++++++- 1 file changed, 69 insertions(+), 3 deletions(-) diff --git a/src/foundation/homotopies-morphisms-arrows.lagda.md b/src/foundation/homotopies-morphisms-arrows.lagda.md index 2d9bba9d22..136f1ec70f 100644 --- a/src/foundation/homotopies-morphisms-arrows.lagda.md +++ b/src/foundation/homotopies-morphisms-arrows.lagda.md @@ -1,6 +1,8 @@ # Homotopies of morphisms of arrows ```agda +{-# OPTIONS --allow-unsolved-metas #-} + module foundation.homotopies-morphisms-arrows where ``` @@ -219,9 +221,9 @@ module _ pr2 (pr2 inv-htpy-hom-arrow) = coh-inv-htpy-hom-arrow ``` -### Whiskering of homotopies of morphisms of arrows +### Whiskering of homotopies of morphisms of arrows with respect to composition -#### Left whiskering +#### Left whiskering of homotopies of homotopies of morphisms of arrows with respect to composition ```agda module _ @@ -301,7 +303,71 @@ module _ #### Right whiskering -Exercise for Fredrik. +```agda +module _ + {l1 l2 l3 l4 l5 l6 : Level} + {A : UU l1} {B : UU l2} {X : UU l3} {Y : UU l4} {U : UU l5} {V : UU l6} + (f : A → B) (g : X → Y) (h : U → V) + (β γ : hom-arrow g h) (H : htpy-hom-arrow g h β γ) (α : hom-arrow f g) + where + + htpy-domain-right-whisker-comp-hom-arrow : + map-domain-comp-hom-arrow f g h β α ~ map-domain-comp-hom-arrow f g h γ α + htpy-domain-right-whisker-comp-hom-arrow = + htpy-domain-htpy-hom-arrow g h β γ H ·r map-domain-hom-arrow f g α + + htpy-codomain-right-whisker-comp-hom-arrow : + map-codomain-comp-hom-arrow f g h β α ~ + map-codomain-comp-hom-arrow f g h γ α + htpy-codomain-right-whisker-comp-hom-arrow = + htpy-codomain-htpy-hom-arrow g h β γ H ·r map-codomain-hom-arrow f g α + + coh-right-whisker-comp-hom-arrow : + coherence-htpy-hom-arrow f h + ( comp-hom-arrow f g h β α) + ( comp-hom-arrow f g h γ α) + ( htpy-domain-right-whisker-comp-hom-arrow) + ( htpy-codomain-right-whisker-comp-hom-arrow) + coh-right-whisker-comp-hom-arrow a = + ( left-whisker-coherence-square-identifications + ( ap (map-codomain-hom-arrow g h β) (coh-hom-arrow f g α a)) + ( htpy-codomain-htpy-hom-arrow g h β γ H + ( g (map-domain-hom-arrow f g α a))) + ( coh-hom-arrow g h β (map-domain-hom-arrow f g α a)) + ( coh-hom-arrow g h γ (map-domain-hom-arrow f g α a)) + ( ap h + ( htpy-domain-htpy-hom-arrow g h β γ H + ( map-domain-hom-arrow f g α a))) + ( coh-htpy-hom-arrow g h β γ H (map-domain-hom-arrow f g α a))) ∙ + ( ( assoc + ( ap (map-codomain-hom-arrow g h β) (coh-hom-arrow f g α a)) + ( htpy-codomain-htpy-hom-arrow g h β γ H + ( g (map-domain-hom-arrow f g α a))) + ( coh-hom-arrow g h γ (map-domain-hom-arrow f g α a))) ∙ + ( right-whisker-coherence-square-identifications + ( htpy-codomain-htpy-hom-arrow g h β γ H + ( map-codomain-hom-arrow f g α (f a))) + ( ap (map-codomain-hom-arrow g h β) (coh-hom-arrow f g α a)) + ( ap (map-codomain-hom-arrow g h γ) (coh-hom-arrow f g α a)) + ( htpy-codomain-htpy-hom-arrow g h β γ H + ( g (map-domain-hom-arrow f g α a))) + ( coh-hom-arrow g h γ (map-domain-hom-arrow f g α a)) + ( inv + ( nat-htpy + ( htpy-codomain-htpy-hom-arrow g h β γ H) + ( coh-hom-arrow f g α a))))) + + right-whisker-comp-hom-arrow : + htpy-hom-arrow f h + ( comp-hom-arrow f g h β α) + ( comp-hom-arrow f g h γ α) + pr1 right-whisker-comp-hom-arrow = + htpy-domain-right-whisker-comp-hom-arrow + pr1 (pr2 right-whisker-comp-hom-arrow) = + htpy-codomain-right-whisker-comp-hom-arrow + pr2 (pr2 right-whisker-comp-hom-arrow) = + coh-right-whisker-comp-hom-arrow +``` ## Properties From 693d77185100f091f0bd40a1ecdad5ba46c09471 Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Sat, 3 Feb 2024 17:06:31 +0100 Subject: [PATCH 093/150] work --- .../commuting-cubes-of-maps.lagda.md | 12 +-- .../commuting-prisms-of-maps.lagda.md | 4 +- .../commuting-squares-of-homotopies.lagda.md | 65 +++++++------ ...muting-squares-of-identifications.lagda.md | 32 +++---- .../commuting-squares-of-maps.lagda.md | 10 +- ...igher-homotopies-morphisms-arrows.lagda.md | 64 ++++++++++++- .../homotopies-morphisms-arrows.lagda.md | 38 +++++--- src/foundation/whiskering-operations.lagda.md | 8 +- .../lifting-squares.lagda.md | 93 +++++++++++++++---- ...rphisms-arrows-from-diagonal-maps.lagda.md | 46 +++++++++ ...functoriality-sequential-colimits.lagda.md | 2 +- 11 files changed, 282 insertions(+), 92 deletions(-) diff --git a/src/foundation/commuting-cubes-of-maps.lagda.md b/src/foundation/commuting-cubes-of-maps.lagda.md index 0790d050bf..aea331b437 100644 --- a/src/foundation/commuting-cubes-of-maps.lagda.md +++ b/src/foundation/commuting-cubes-of-maps.lagda.md @@ -432,19 +432,19 @@ module _ inv-htpy ( horizontal-concat-htpy² ( horizontal-concat-htpy² - ( distributive-precomp-right-whisker-coherence-square-maps W hB + ( distributive-precomp-right-whisker-comp-coherence-square-maps W hB ( h') ( h) ( hD) ( inv-htpy front-left) ( f')) - ( distributive-precomp-left-whisker-coherence-square-maps W hA + ( distributive-precomp-left-whisker-comp-coherence-square-maps W hA ( f') ( f) ( hB) ( inv-htpy back-left) ( h))) - ( distributive-precomp-right-whisker-coherence-square-maps W g f k h + ( distributive-precomp-right-whisker-comp-coherence-square-maps W g f k h ( bottom) ( hA))) ~ precomp-coherence-square-maps hA @@ -516,7 +516,7 @@ module _ ( precomp-back-right-inv ·r (precomp k W))) by horizontal-concat-htpy² - ( distributive-precomp-left-whisker-coherence-square-maps W + ( distributive-precomp-left-whisker-comp-coherence-square-maps W ( g') ( f') ( k') @@ -524,11 +524,11 @@ module _ ( top) ( hD)) ( horizontal-concat-htpy² - ( distributive-precomp-right-whisker-coherence-square-maps W hC k' k + ( distributive-precomp-right-whisker-comp-coherence-square-maps W hC k' k ( hD) ( inv-htpy front-right) ( g')) - ( distributive-precomp-left-whisker-coherence-square-maps W hA + ( distributive-precomp-left-whisker-comp-coherence-square-maps W hA ( g') ( g) ( hC) diff --git a/src/foundation/commuting-prisms-of-maps.lagda.md b/src/foundation/commuting-prisms-of-maps.lagda.md index 90ca9472e7..3d87ce8f63 100644 --- a/src/foundation/commuting-prisms-of-maps.lagda.md +++ b/src/foundation/commuting-prisms-of-maps.lagda.md @@ -93,14 +93,14 @@ module _ ( right-top) ( left-bottom) ( right-bottom))) ∙h - ( right-whisker-coherence-square-homotopies + ( right-whisker-concat-coherence-square-homotopies ( front-bottom ·r hA) ( bottom ·r hA' ·r hA) ( hC' ·l ((g' ·l left-top) ∙h (right-top ·r h))) ( prism-bottom ·r hA)) ∙h ( ap-concat-htpy ( front-bottom ·r hA) - ( ( ap-left-whisker-coherence-square-homotopies hC' + ( ( ap-left-whisker-concat-coherence-square-homotopies hC' ( front-top) ( mid ·r hA) ( prism-top)) ∙h diff --git a/src/foundation/commuting-squares-of-homotopies.lagda.md b/src/foundation/commuting-squares-of-homotopies.lagda.md index f39fb6512f..71b76db533 100644 --- a/src/foundation/commuting-squares-of-homotopies.lagda.md +++ b/src/foundation/commuting-squares-of-homotopies.lagda.md @@ -52,7 +52,8 @@ Consider a bottom ``` -and consider a homotopy `H : i ~ j`. Then there is an equivalence of commuting squares of homotopies +and consider a homotopy `H : i ~ j`. Then there is an equivalence of commuting +squares of homotopies ```text top top @@ -64,7 +65,9 @@ and consider a homotopy `H : i ~ j`. Then there is an equivalence of commuting s bottom bottom ∙h H ``` -This is the {{#concept "right whiskering" Disambiguation="commuting squares of homotopies with respect to concatenation"}} operation of commuting squares of homotopies with respect to concatenation. +This is the +{{#concept "right whiskering" Disambiguation="commuting squares of homotopies with respect to concatenation"}} +operation of commuting squares of homotopies with respect to concatenation. ```agda module _ @@ -73,35 +76,35 @@ module _ ( H : f ~ g) (H' : f ~ g') {K : g ~ h} {K' : g' ~ h} (L : h ~ k) where - equiv-right-whisker-coherence-square-homotopies : + equiv-right-whisker-concat-coherence-square-homotopies : coherence-square-homotopies H H' K K' ≃ coherence-square-homotopies H H' (K ∙h L) (K' ∙h L) - equiv-right-whisker-coherence-square-homotopies = + equiv-right-whisker-concat-coherence-square-homotopies = equiv-Π-equiv-family ( λ a → - equiv-right-whisker-coherence-square-identifications + equiv-right-whisker-concat-coherence-square-identifications ( H a) ( H' a) ( K a) ( K' a) ( L a)) - - right-whisker-coherence-square-homotopies : + + right-whisker-concat-coherence-square-homotopies : coherence-square-homotopies H H' K K' → coherence-square-homotopies H H' (K ∙h L) (K' ∙h L) - right-whisker-coherence-square-homotopies = - map-equiv equiv-right-whisker-coherence-square-homotopies - + right-whisker-concat-coherence-square-homotopies = + map-equiv equiv-right-whisker-concat-coherence-square-homotopies + right-unwhisker-coherence-square-homotopies : coherence-square-homotopies H H' (K ∙h L) (K' ∙h L) → coherence-square-homotopies H H' K K' right-unwhisker-coherence-square-homotopies = - map-inv-equiv equiv-right-whisker-coherence-square-homotopies + map-inv-equiv equiv-right-whisker-concat-coherence-square-homotopies ``` ### Left whiskering a commuting square of homotopies with respect to concatenation of homotopies -Consider a +Consider a [commuting square of homotopies](foundation.commuting-squares-of-homotopies.md) ```text @@ -114,7 +117,8 @@ Consider a bottom ``` -and consider a homotopy `H : e ~ f`. Then there is an equivalence of commuting squares of homotopies +and consider a homotopy `H : e ~ f`. Then there is an equivalence of commuting +squares of homotopies ```text top H ∙h top @@ -126,7 +130,9 @@ and consider a homotopy `H : e ~ f`. Then there is an equivalence of commuting s bottom bottom ``` -This is the {{#concept "left whiskering" Disambiguation="commuting squares of homotopies with respect to concatenation"}} operation of commuting squares of homotopies with respect to concatenation. +This is the +{{#concept "left whiskering" Disambiguation="commuting squares of homotopies with respect to concatenation"}} +operation of commuting squares of homotopies with respect to concatenation. ```agda module _ @@ -135,35 +141,35 @@ module _ ( L : k ~ f) {H : f ~ g} {H' : f ~ g'} {K : g ~ h} {K' : g' ~ h} where - equiv-left-whisker-coherence-square-homotopies : + equiv-left-whisker-concat-coherence-square-homotopies : ( coherence-square-homotopies H H' K K') ≃ ( coherence-square-homotopies (L ∙h H) (L ∙h H') K K') - equiv-left-whisker-coherence-square-homotopies = + equiv-left-whisker-concat-coherence-square-homotopies = equiv-Π-equiv-family ( λ a → - equiv-left-whisker-coherence-square-identifications + equiv-left-whisker-concat-coherence-square-identifications ( L a) ( H a) ( H' a) ( K a) ( K' a)) - left-whisker-coherence-square-homotopies : + left-whisker-concat-coherence-square-homotopies : coherence-square-homotopies H H' K K' → coherence-square-homotopies (L ∙h H) (L ∙h H') K K' - left-whisker-coherence-square-homotopies = - map-equiv equiv-left-whisker-coherence-square-homotopies + left-whisker-concat-coherence-square-homotopies = + map-equiv equiv-left-whisker-concat-coherence-square-homotopies left-unwhisker-coherence-square-homotopies : coherence-square-homotopies (L ∙h H) (L ∙h H') K K' → coherence-square-homotopies H H' K K' left-unwhisker-coherence-square-homotopies = - map-inv-equiv equiv-left-whisker-coherence-square-homotopies + map-inv-equiv equiv-left-whisker-concat-coherence-square-homotopies ``` ### Left whiskering a commuting square of homotopies with respect to concatenation of homotopies -Consider a +Consider a [commuting square of homotopies](foundation.commuting-squares-of-homotopies.md) ```text @@ -176,7 +182,8 @@ Consider a bottom ``` -and consider a homotopy `H : e ~ f`. Then there is an equivalence of commuting squares of homotopies +and consider a homotopy `H : e ~ f`. Then there is an equivalence of commuting +squares of homotopies ```text top H ∙h top @@ -188,7 +195,9 @@ and consider a homotopy `H : e ~ f`. Then there is an equivalence of commuting s bottom bottom ``` -This is the {{#concept "left whiskering" Disambiguation="commuting squares of homotopies with respect to concatenation"}} operation of commuting squares of homotopies with respect to concatenation. +This is the +{{#concept "left whiskering" Disambiguation="commuting squares of homotopies with respect to concatenation"}} +operation of commuting squares of homotopies with respect to concatenation. ```agda module _ @@ -260,10 +269,10 @@ module _ ( H : g ~ h) (H' : g ~ h') {K : h ~ k} {K' : h' ~ k} where - ap-left-whisker-coherence-square-homotopies : + ap-left-whisker-concat-coherence-square-homotopies : coherence-square-homotopies H H' K K' → coherence-square-homotopies (f ·l H) (f ·l H') (f ·l K) (f ·l K') - ap-left-whisker-coherence-square-homotopies α a = + ap-left-whisker-concat-coherence-square-homotopies α a = map-coherence-square-identifications f (H a) (H' a) (K a) (K' a) (α a) module _ @@ -272,8 +281,8 @@ module _ ( f : A → B) where - ap-right-whisker-coherence-square-homotopies : + ap-right-whisker-concat-coherence-square-homotopies : coherence-square-homotopies H H' K K' → coherence-square-homotopies (H ·r f) (H' ·r f) (K ·r f) (K' ·r f) - ap-right-whisker-coherence-square-homotopies α = α ·r f + ap-right-whisker-concat-coherence-square-homotopies α = α ·r f ``` diff --git a/src/foundation/commuting-squares-of-identifications.lagda.md b/src/foundation/commuting-squares-of-identifications.lagda.md index 44c215bafc..0ed7f4e0f6 100644 --- a/src/foundation/commuting-squares-of-identifications.lagda.md +++ b/src/foundation/commuting-squares-of-identifications.lagda.md @@ -665,8 +665,8 @@ we may consider four ways of attaching new identifications to it: ``` These operations are useful in proofs involving path algebra, because taking -`equiv-right-whisker-square-identicications` as an example, it provides us with -two maps: the forward direction states +`equiv-right-whisker-concat-square-identicications` as an example, it provides +us with two maps: the forward direction states `(p ∙ r = q ∙ s) → (p ∙ (r ∙ t)) = q ∙ (s ∙ t))`, which allows one to append an identification without needing to reassociate on the right, and the backwards direction conversely allows one to cancel out an identification in parentheses. @@ -692,20 +692,20 @@ module _ {l : Level} {A : UU l} {x y z w u : A} where - equiv-left-whisker-coherence-square-identifications : + equiv-left-whisker-concat-coherence-square-identifications : (p : u = x) (top : x = y) (left : x = z) (right : y = w) (bottom : z = w) → coherence-square-identifications top left right bottom ≃ coherence-square-identifications (p ∙ top) (p ∙ left) right bottom - equiv-left-whisker-coherence-square-identifications refl + equiv-left-whisker-concat-coherence-square-identifications refl top left right bottom = id-equiv - left-whisker-coherence-square-identifications : + left-whisker-concat-coherence-square-identifications : (p : u = x) (top : x = y) (left : x = z) (right : y = w) (bottom : z = w) → coherence-square-identifications top left right bottom → coherence-square-identifications (p ∙ top) (p ∙ left) right bottom - left-whisker-coherence-square-identifications refl top left right bottom = + left-whisker-concat-coherence-square-identifications refl top left right bottom = id left-unwhisker-coherence-square-identifications : @@ -739,11 +739,11 @@ module _ (top : x = y) (left : x = z) (right : y = w) (bottom : z = w) where - equiv-right-whisker-coherence-square-identifications : + equiv-right-whisker-concat-coherence-square-identifications : {u : A} (p : w = u) → coherence-square-identifications top left right bottom ≃ coherence-square-identifications top left (right ∙ p) (bottom ∙ p) - equiv-right-whisker-coherence-square-identifications refl = + equiv-right-whisker-concat-coherence-square-identifications refl = ( equiv-concat-bottom-identification-coherence-square-identifications ( top) ( left) @@ -757,11 +757,11 @@ module _ ( bottom) ( inv right-unit)) - right-whisker-coherence-square-identifications : + right-whisker-concat-coherence-square-identifications : {u : A} (p : w = u) → coherence-square-identifications top left right bottom → coherence-square-identifications top left (right ∙ p) (bottom ∙ p) - right-whisker-coherence-square-identifications refl = + right-whisker-concat-coherence-square-identifications refl = ( concat-bottom-identification-coherence-square-identifications ( top) ( left) @@ -932,10 +932,10 @@ module _ ( right ∙ s) ( bottom ∙ s) equiv-double-whisker-square-identifications p top left right bottom q = - equiv-left-whisker-coherence-square-identifications p top left + equiv-left-whisker-concat-coherence-square-identifications p top left ( right ∙ q) ( bottom ∙ q) ∘e - equiv-right-whisker-coherence-square-identifications top left right bottom q + equiv-right-whisker-concat-coherence-square-identifications top left right bottom q ``` ### Horizontally pasting squares of identifications @@ -969,7 +969,7 @@ module _ coherence-square-identifications (top-left ∙ top-right) left right (bottom-left ∙ bottom-right) horizontal-pasting-coherence-square-identifications s t = - ( right-whisker-coherence-square-identifications + ( right-whisker-concat-coherence-square-identifications ( top-left) ( left) ( middle) @@ -977,7 +977,7 @@ module _ ( bottom-right) ( s)) ∙ ( ( inv (assoc top-left middle bottom-right)) ∙ - ( left-whisker-coherence-square-identifications + ( left-whisker-concat-coherence-square-identifications ( top-left) ( top-right) ( middle) @@ -1022,7 +1022,7 @@ module _ coherence-square-identifications top (top-left ∙ bottom-left) (top-right ∙ bottom-right) bottom vertical-pasting-coherence-square-identifications p q = - ( left-whisker-coherence-square-identifications + ( left-whisker-concat-coherence-square-identifications ( top-left) ( middle) ( bottom-left) @@ -1030,7 +1030,7 @@ module _ ( bottom) ( q)) ∙ ( ( assoc top-left middle bottom-right) ∙ - ( right-whisker-coherence-square-identifications + ( right-whisker-concat-coherence-square-identifications ( top) ( top-left) ( top-right) diff --git a/src/foundation/commuting-squares-of-maps.lagda.md b/src/foundation/commuting-squares-of-maps.lagda.md index ac31c876fd..2e475f920f 100644 --- a/src/foundation/commuting-squares-of-maps.lagda.md +++ b/src/foundation/commuting-squares-of-maps.lagda.md @@ -316,7 +316,7 @@ module _ ( ap bottom (is-section-map-inv-equiv left (map-equiv left a))))) ( ap (map-inv-equiv right) (H a)) ( is-retraction-map-inv-equiv right (top a))) ∙ - ( left-whisker-coherence-square-identifications + ( left-whisker-concat-coherence-square-identifications ( map-eq-transpose-equiv ( right) ( inv (H (map-inv-equiv left (map-equiv left a))))) @@ -962,7 +962,7 @@ module _ ( H : coherence-square-maps top left right bottom) where - distributive-precomp-right-whisker-coherence-square-maps : + distributive-precomp-right-whisker-comp-coherence-square-maps : ( f : X → A) → precomp-coherence-square-maps ( top ∘ f) @@ -973,7 +973,7 @@ module _ ( W) ~ ( ( precomp f W) ·l ( precomp-coherence-square-maps top left right bottom H W)) - distributive-precomp-right-whisker-coherence-square-maps f g = + distributive-precomp-right-whisker-comp-coherence-square-maps f g = compute-ap-precomp-eq-htpy f (g ·l H) ``` @@ -981,7 +981,7 @@ Similarly, we can calculate transpositions of left-whiskered squares with the formula `W^(f ·l H) = W^H ·r W^f`. ```agda - distributive-precomp-left-whisker-coherence-square-maps : + distributive-precomp-left-whisker-comp-coherence-square-maps : ( f : D → X) → precomp-coherence-square-maps ( top) @@ -992,7 +992,7 @@ formula `W^(f ·l H) = W^H ·r W^f`. ( W) ~ ( ( precomp-coherence-square-maps top left right bottom H W) ·r ( precomp f W)) - distributive-precomp-left-whisker-coherence-square-maps f g = + distributive-precomp-left-whisker-comp-coherence-square-maps f g = ap eq-htpy (eq-htpy (λ a → inv (ap-comp g f (H a)))) ``` diff --git a/src/foundation/higher-homotopies-morphisms-arrows.lagda.md b/src/foundation/higher-homotopies-morphisms-arrows.lagda.md index 97e276f982..fe8718fdc4 100644 --- a/src/foundation/higher-homotopies-morphisms-arrows.lagda.md +++ b/src/foundation/higher-homotopies-morphisms-arrows.lagda.md @@ -8,6 +8,7 @@ module foundation.higher-homotopies-morphisms-arrows where ```agda open import foundation.commuting-squares-of-homotopies +open import foundation.commuting-squares-of-identifications open import foundation.dependent-pair-types open import foundation.fundamental-theorem-of-identity-types open import foundation.homotopies-morphisms-arrows @@ -28,7 +29,12 @@ open import foundation-core.identity-types ## Idea -Consider two [morphisms of arrows](foundation.morphisms-arrows.md) `α := (i , j , H)` and `α' := (i' , j' , H')` and two [homotopies of morphisms of arrows](foundation.homotopies-morphisms-arrows.md) `β := (I , J , K)` and `β' : (I' , J' , K')` between them. A {{#concept "2-homotopy of morphisms of arrows" Agda=htpy-htpy-hom-arrow}} is a triple `(γ₀, γ₁ , γ₂)` consisting of [homotopies](foundation-core.homotopies.md) +Consider two [morphisms of arrows](foundation.morphisms-arrows.md) +`α := (i , j , H)` and `α' := (i' , j' , H')` and two +[homotopies of morphisms of arrows](foundation.homotopies-morphisms-arrows.md) +`β := (I , J , K)` and `β' : (I' , J' , K')` between them. A +{{#concept "2-homotopy of morphisms of arrows" Agda=htpy-htpy-hom-arrow}} is a +triple `(γ₀, γ₁ , γ₂)` consisting of [homotopies](foundation-core.homotopies.md) ```text γ₀ : I ~ I' @@ -184,3 +190,59 @@ module _ htpy-htpy-hom-arrow f g α α' β β' → β = β' eq-htpy-htpy-hom-arrow β' = map-inv-equiv (extensionality-htpy-hom-arrow β') ``` + +### Concatenation of homotopies of morphisms of arrows satisfies the left unit law + +```agda +module _ + {l1 l2 l3 l4 : Level} + {A : UU l1} {B : UU l2} {X : UU l3} {Y : UU l4} + (f : A → B) (g : X → Y) (α α' : hom-arrow f g) + (β : htpy-hom-arrow f g α α') + where + + htpy-domain-left-unit-law-concat-htpy-hom-arrow : + htpy-domain-concat-htpy-hom-arrow f g α α α' (refl-htpy-hom-arrow f g α) β ~ + htpy-domain-htpy-hom-arrow f g α α' β + htpy-domain-left-unit-law-concat-htpy-hom-arrow = refl-htpy + + htpy-codomain-left-unit-law-concat-htpy-hom-arrow : + htpy-codomain-concat-htpy-hom-arrow f g α α α' + ( refl-htpy-hom-arrow f g α) + ( β) ~ + htpy-codomain-htpy-hom-arrow f g α α' β + htpy-codomain-left-unit-law-concat-htpy-hom-arrow = refl-htpy + + coh-left-unit-law-concat-htpy-hom-arrow : + coherence-htpy-htpy-hom-arrow f g α α' + ( concat-htpy-hom-arrow f g α α α' (refl-htpy-hom-arrow f g α) β) + ( β) + ( htpy-domain-left-unit-law-concat-htpy-hom-arrow) + ( htpy-codomain-left-unit-law-concat-htpy-hom-arrow) + coh-left-unit-law-concat-htpy-hom-arrow = + ( right-unit-htpy) ∙h + {!!} + +{- +(x : A) → +Id +(right-whisker-concat-coherence-square-identifications refl + (pr2 (pr2 α) x) (pr2 (pr2 α) x) refl + (foundation.action-on-identifications-functions.ap g (pr1 β x)) + right-unit + ∙ pr2 (pr2 β) x) +(pr2 (pr2 β) x) +-} + + left-unit-law-concat-htpy-hom-arrow : + htpy-htpy-hom-arrow f g α α' + ( concat-htpy-hom-arrow f g α α α' (refl-htpy-hom-arrow f g α) β) + ( β) + pr1 left-unit-law-concat-htpy-hom-arrow = + htpy-domain-left-unit-law-concat-htpy-hom-arrow + pr1 (pr2 left-unit-law-concat-htpy-hom-arrow) = + htpy-codomain-left-unit-law-concat-htpy-hom-arrow + pr2 (pr2 left-unit-law-concat-htpy-hom-arrow) = + coh-left-unit-law-concat-htpy-hom-arrow + +``` diff --git a/src/foundation/homotopies-morphisms-arrows.lagda.md b/src/foundation/homotopies-morphisms-arrows.lagda.md index 136f1ec70f..4dfaaf0bd4 100644 --- a/src/foundation/homotopies-morphisms-arrows.lagda.md +++ b/src/foundation/homotopies-morphisms-arrows.lagda.md @@ -1,8 +1,6 @@ # Homotopies of morphisms of arrows ```agda -{-# OPTIONS --allow-unsolved-metas #-} - module foundation.homotopies-morphisms-arrows where ``` @@ -38,7 +36,8 @@ open import foundation.whiskering-homotopies-composition ## Idea -Consider two [morphisms of arrows](foundation.morphisms-arrows.md) `(i , j , H)` and `(i' , j' , H')` from `f` to `g`, as in the diagrams +Consider two [morphisms of arrows](foundation.morphisms-arrows.md) `(i , j , H)` +and `(i' , j' , H')` from `f` to `g`, as in the diagrams ```text i i' @@ -126,10 +125,26 @@ module _ (f : A → B) (g : X → Y) (α : hom-arrow f g) where + htpy-domain-refl-htpy-hom-arrow : + map-domain-hom-arrow f g α ~ map-domain-hom-arrow f g α + htpy-domain-refl-htpy-hom-arrow = refl-htpy + + htpy-codomain-refl-htpy-hom-arrow : + map-codomain-hom-arrow f g α ~ map-codomain-hom-arrow f g α + htpy-codomain-refl-htpy-hom-arrow = refl-htpy + + coh-refl-htpy-hom-arrow : + coherence-square-homotopies + ( htpy-codomain-refl-htpy-hom-arrow ·r f) + ( coh-hom-arrow f g α) + ( coh-hom-arrow f g α) + ( g ·l htpy-domain-refl-htpy-hom-arrow) + coh-refl-htpy-hom-arrow = right-unit-htpy + refl-htpy-hom-arrow : htpy-hom-arrow f g α α - pr1 refl-htpy-hom-arrow = refl-htpy - pr1 (pr2 refl-htpy-hom-arrow) = refl-htpy - pr2 (pr2 refl-htpy-hom-arrow) = right-unit-htpy + pr1 refl-htpy-hom-arrow = htpy-domain-refl-htpy-hom-arrow + pr1 (pr2 refl-htpy-hom-arrow) = htpy-codomain-refl-htpy-hom-arrow + pr2 (pr2 refl-htpy-hom-arrow) = coh-refl-htpy-hom-arrow ``` ## Operations @@ -265,7 +280,7 @@ module _ ( nat-htpy ( coh-hom-arrow g h γ) ( htpy-domain-htpy-hom-arrow f g α β H a)))) ∙ - ( right-whisker-coherence-square-identifications + ( right-whisker-concat-coherence-square-identifications ( ap ( map-codomain-hom-arrow g h γ) ( htpy-codomain-htpy-hom-arrow f g α β H (f a))) @@ -323,13 +338,13 @@ module _ htpy-codomain-htpy-hom-arrow g h β γ H ·r map-codomain-hom-arrow f g α coh-right-whisker-comp-hom-arrow : - coherence-htpy-hom-arrow f h + coherence-htpy-hom-arrow f h ( comp-hom-arrow f g h β α) ( comp-hom-arrow f g h γ α) ( htpy-domain-right-whisker-comp-hom-arrow) ( htpy-codomain-right-whisker-comp-hom-arrow) coh-right-whisker-comp-hom-arrow a = - ( left-whisker-coherence-square-identifications + ( left-whisker-concat-coherence-square-identifications ( ap (map-codomain-hom-arrow g h β) (coh-hom-arrow f g α a)) ( htpy-codomain-htpy-hom-arrow g h β γ H ( g (map-domain-hom-arrow f g α a))) @@ -344,7 +359,7 @@ module _ ( htpy-codomain-htpy-hom-arrow g h β γ H ( g (map-domain-hom-arrow f g α a))) ( coh-hom-arrow g h γ (map-domain-hom-arrow f g α a))) ∙ - ( right-whisker-coherence-square-identifications + ( right-whisker-concat-coherence-square-identifications ( htpy-codomain-htpy-hom-arrow g h β γ H ( map-codomain-hom-arrow f g α (f a))) ( ap (map-codomain-hom-arrow g h β) (coh-hom-arrow f g α a)) @@ -356,7 +371,7 @@ module _ ( nat-htpy ( htpy-codomain-htpy-hom-arrow g h β γ H) ( coh-hom-arrow f g α a))))) - + right-whisker-comp-hom-arrow : htpy-hom-arrow f h ( comp-hom-arrow f g h β α) @@ -521,4 +536,3 @@ module _ pr1 (pr2 right-unit-law-comp-hom-arrow) = refl-htpy pr2 (pr2 right-unit-law-comp-hom-arrow) = right-unit-htpy ``` - diff --git a/src/foundation/whiskering-operations.lagda.md b/src/foundation/whiskering-operations.lagda.md index d2d4175b4e..bdc709d993 100644 --- a/src/foundation/whiskering-operations.lagda.md +++ b/src/foundation/whiskering-operations.lagda.md @@ -107,7 +107,7 @@ naming scheme for all the variations of whiskering that exist in the and ```text - rigth-whisker-comp² : + right-whisker-comp² : {f g : B → C} {H K : f ~ g} → H ~ K → (h : A → B) → H ·r h ~ K ·r h ``` @@ -157,9 +157,11 @@ module _ ### Double whiskering operations -Double whiskering operations are operations that simultaneously perform whiskering on the left and on the right. +Double whiskering operations are operations that simultaneously perform +whiskering on the left and on the right. -Note that double whiskering should not be confused with iterated whiskering on the left or with iterated whiskering on the right. +Note that double whiskering should not be confused with iterated whiskering on +the left or with iterated whiskering on the right. ```agda module _ diff --git a/src/orthogonal-factorization-systems/lifting-squares.lagda.md b/src/orthogonal-factorization-systems/lifting-squares.lagda.md index 2f4af80dd6..ef811fff45 100644 --- a/src/orthogonal-factorization-systems/lifting-squares.lagda.md +++ b/src/orthogonal-factorization-systems/lifting-squares.lagda.md @@ -16,7 +16,9 @@ open import foundation.commuting-triangles-of-identifications open import foundation.dependent-pair-types open import foundation.fibered-maps open import foundation.function-types +open import foundation.higher-homotopies-morphisms-arrows open import foundation.homotopies +open import foundation.homotopies-morphisms-arrows open import foundation.identity-types open import foundation.morphisms-arrows open import foundation.path-algebra @@ -65,7 +67,9 @@ commutes. We note that there is a canonical map hom-arrow-map : (B → X) → hom-arrow f g. ``` -Therefore we see that a lifting square consists of a morphism `α : hom-arrow f g` of arrows from `f` to `g`, a map `j : B → X`, and a homotopy of morphisms of arrow `hom-arrow-map f ~ α`. +Therefore we see that a lifting square consists of a morphism +`α : hom-arrow f g` of arrows from `f` to `g`, a map `j : B → X`, and a homotopy +of morphisms of arrow `hom-arrow-map f ~ α`. ## Definitions @@ -112,26 +116,31 @@ module _ lifting-square : UU (l1 ⊔ l2 ⊔ l3 ⊔ l4) lifting-square = Σ (B → X) (is-lifting-square f g α) - map-diagonal-lifting-square : lifting-square → (B → X) - map-diagonal-lifting-square = pr1 + diagonal-map-lifting-square : lifting-square → (B → X) + diagonal-map-lifting-square = pr1 + + is-lifting-diagonal-map-lifting-square : + (l : lifting-square) → + is-lifting-square f g α (diagonal-map-lifting-square l) + is-lifting-diagonal-map-lifting-square = pr2 is-extension-lifting-square : (l : lifting-square) → - is-extension f (map-domain-hom-arrow f g α) (map-diagonal-lifting-square l) + is-extension f (map-domain-hom-arrow f g α) (diagonal-map-lifting-square l) is-extension-lifting-square = pr1 ∘ pr2 extension-lifting-square : lifting-square → extension f (map-domain-hom-arrow f g α) - pr1 (extension-lifting-square L) = map-diagonal-lifting-square L + pr1 (extension-lifting-square L) = diagonal-map-lifting-square L pr2 (extension-lifting-square L) = is-extension-lifting-square L is-lift-lifting-square : (l : lifting-square) → - is-lift g (map-codomain-hom-arrow f g α) (map-diagonal-lifting-square l) + is-lift g (map-codomain-hom-arrow f g α) (diagonal-map-lifting-square l) is-lift-lifting-square = pr1 ∘ (pr2 ∘ pr2) lift-lifting-square : lifting-square → lift g (map-codomain-hom-arrow f g α) - pr1 (lift-lifting-square L) = map-diagonal-lifting-square L + pr1 (lift-lifting-square L) = diagonal-map-lifting-square L pr2 (lift-lifting-square L) = is-lift-lifting-square L coherence-lifting-square : @@ -139,27 +148,76 @@ module _ coherence-square-homotopies ( is-lift-lifting-square l ·r f) ( coh-hom-arrow f g α) - ( coh-hom-arrow-map f g (map-diagonal-lifting-square l)) + ( coh-hom-arrow-map f g (diagonal-map-lifting-square l)) ( g ·l is-extension-lifting-square l) coherence-lifting-square = pr2 ∘ (pr2 ∘ pr2) ``` -## Properties - -### Characterization of identifications of lifting squares +### Homotopies of lifting squares ```agda module _ {l1 l2 l3 l4 : Level} {A : UU l1} {X : UU l2} {B : UU l3} {Y : UU l4} (f : A → B) (g : X → Y) (α : hom-arrow f g) + (k l : lifting-square f g α) where coherence-htpy-lifting-square : - {j k : B → X} → j ~ k → UU {!!} - coherence-htpy-lifting-square = {!!} + diagonal-map-lifting-square f g α k ~ diagonal-map-lifting-square f g α l → + UU (l1 ⊔ l2 ⊔ l3 ⊔ l4) + coherence-htpy-lifting-square H = + htpy-htpy-hom-arrow f g α + ( hom-arrow-map f g (diagonal-map-lifting-square f g α l)) + ( is-lifting-diagonal-map-lifting-square f g α l) + ( concat-htpy-hom-arrow f g α + ( hom-arrow-map f g (diagonal-map-lifting-square f g α k)) + ( hom-arrow-map f g (diagonal-map-lifting-square f g α l)) + ( is-lifting-diagonal-map-lifting-square f g α k) + ( htpy-hom-arrow-htpy f g H)) + + htpy-lifting-square : UU (l1 ⊔ l2 ⊔ l3 ⊔ l4) + htpy-lifting-square = + Σ ( diagonal-map-lifting-square f g α k ~ + diagonal-map-lifting-square f g α l) + ( coherence-htpy-lifting-square) + + module _ + (H : htpy-lifting-square) + where + + htpy-diagonal-map-htpy-lifting-square : + diagonal-map-lifting-square f g α k ~ diagonal-map-lifting-square f g α l + htpy-diagonal-map-htpy-lifting-square = pr1 H + + coh-htpy-lifting-square : + coherence-htpy-lifting-square htpy-diagonal-map-htpy-lifting-square + coh-htpy-lifting-square = pr2 H +``` + +### The reflexivity homotopy of a lifting square + +```agda +module _ + {l1 l2 l3 l4 : Level} + {A : UU l1} {X : UU l2} {B : UU l3} {Y : UU l4} + (f : A → B) (g : X → Y) (α : hom-arrow f g) + (k : lifting-square f g α) + where + + htpy-diagonal-map-refl-htpy-lifting-square : + diagonal-map-lifting-square f g α k ~ diagonal-map-lifting-square f g α k + htpy-diagonal-map-refl-htpy-lifting-square = refl-htpy + + refl-htpy-lifting-square : htpy-lifting-square f g α k k + pr1 refl-htpy-lifting-square = htpy-diagonal-map-refl-htpy-lifting-square + pr2 refl-htpy-lifting-square = {!!} ``` +## Properties + +### Characterization of identifications of lifting squares + ```text module _ {l1 l2 l3 l4 : Level} @@ -171,8 +229,8 @@ module _ coherence-htpy-lifting-square : (l l' : lifting-square h f g i H) (K : - ( map-diagonal-lifting-square l) ~ - ( map-diagonal-lifting-square l')) + ( diagonal-map-lifting-square l) ~ + ( diagonal-map-lifting-square l')) (E : ( is-extension-lifting-square l') ~ ( is-extension-lifting-square l ∙h (K ·r f))) @@ -196,8 +254,8 @@ module _ htpy-lifting-square : (l l' : lifting-square h f g i H) → UU (l1 ⊔ l2 ⊔ l3 ⊔ l4) htpy-lifting-square l l' = - Σ ( ( map-diagonal-lifting-square l) ~ - ( map-diagonal-lifting-square l')) + Σ ( ( diagonal-map-lifting-square l) ~ + ( diagonal-map-lifting-square l')) ( λ K → Σ ( ( is-extension-lifting-square l') ~ ( is-extension-lifting-square l ∙h (K ·r f))) @@ -325,4 +383,3 @@ module _ ( map-base-fibered-map f g h) ( is-map-over-map-total-fibered-map f g h) ``` - diff --git a/src/orthogonal-factorization-systems/morphisms-arrows-from-diagonal-maps.lagda.md b/src/orthogonal-factorization-systems/morphisms-arrows-from-diagonal-maps.lagda.md index 45d3b4d946..9878925e3a 100644 --- a/src/orthogonal-factorization-systems/morphisms-arrows-from-diagonal-maps.lagda.md +++ b/src/orthogonal-factorization-systems/morphisms-arrows-from-diagonal-maps.lagda.md @@ -8,6 +8,8 @@ module orthogonal-factorization-systems.morphisms-arrows-from-diagonal-maps wher ```agda open import foundation.dependent-pair-types +open import foundation.higher-homotopies-morphisms-arrows +open import foundation.homotopies-morphisms-arrows open import foundation.morphisms-arrows open import foundation.universe-levels open import foundation.whiskering-homotopies-composition @@ -103,3 +105,47 @@ module _ pr1 (pr2 htpy-hom-arrow-htpy) = htpy-codomain-htpy-hom-arrow-htpy pr2 (pr2 htpy-hom-arrow-htpy) = coh-htpy-hom-arrow-htpy ``` + +## Properties + +### The action on homotopies at `refl-htpy` is the reflexivity homotopy of morphisms of arrows + +```agda +module _ + {l1 l2 l3 l4 : Level} {A : UU l1} {X : UU l2} {B : UU l3} {Y : UU l4} + (f : A → B) (g : X → Y) {j : B → X} + where + + htpy-domain-compute-refl-htpy-hom-arrow-htpy : + htpy-domain-htpy-hom-arrow-htpy f g (refl-htpy' j) ~ + htpy-domain-refl-htpy-hom-arrow f g (hom-arrow-map f g j) + htpy-domain-compute-refl-htpy-hom-arrow-htpy = refl-htpy + + htpy-codomain-compute-refl-htpy-hom-arrow-htpy : + htpy-codomain-htpy-hom-arrow-htpy f g (refl-htpy' j) ~ + htpy-codomain-refl-htpy-hom-arrow f g (hom-arrow-map f g j) + htpy-codomain-compute-refl-htpy-hom-arrow-htpy = refl-htpy + + coh-compute-refl-htpy-hom-arrow-htpy : + coherence-htpy-htpy-hom-arrow f g + ( hom-arrow-map f g j) + ( hom-arrow-map f g j) + ( htpy-hom-arrow-htpy f g refl-htpy) + ( refl-htpy-hom-arrow f g (hom-arrow-map f g j)) + ( htpy-domain-compute-refl-htpy-hom-arrow-htpy) + ( htpy-codomain-compute-refl-htpy-hom-arrow-htpy) + coh-compute-refl-htpy-hom-arrow-htpy = refl-htpy + + compute-refl-htpy-hom-arrow-htpy : + htpy-htpy-hom-arrow f g + ( hom-arrow-map f g j) + ( hom-arrow-map f g j) + ( htpy-hom-arrow-htpy f g refl-htpy) + ( refl-htpy-hom-arrow f g (hom-arrow-map f g j)) + pr1 compute-refl-htpy-hom-arrow-htpy = + htpy-domain-compute-refl-htpy-hom-arrow-htpy + pr1 (pr2 compute-refl-htpy-hom-arrow-htpy) = + htpy-codomain-compute-refl-htpy-hom-arrow-htpy + pr2 (pr2 compute-refl-htpy-hom-arrow-htpy) = + coh-compute-refl-htpy-hom-arrow-htpy +``` diff --git a/src/synthetic-homotopy-theory/functoriality-sequential-colimits.lagda.md b/src/synthetic-homotopy-theory/functoriality-sequential-colimits.lagda.md index abefff78d8..ae8f4f9256 100644 --- a/src/synthetic-homotopy-theory/functoriality-sequential-colimits.lagda.md +++ b/src/synthetic-homotopy-theory/functoriality-sequential-colimits.lagda.md @@ -329,7 +329,7 @@ module _ ( g) ( n)))) pr2 htpy-preserves-comp-map-sequential-colimit-hom-sequential-diagram n = - ( right-whisker-coherence-square-homotopies + ( right-whisker-concat-coherence-square-homotopies ( htpy-htpy-cocone-map-sequential-colimit-hom-sequential-diagram up-c c'' ( comp-hom-sequential-diagram A B C g f) ( n)) From e3b0e7fe87133bbc40f708f7c1819c8ebc11a135 Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Sat, 3 Feb 2024 17:39:44 +0100 Subject: [PATCH 094/150] The left unit law of concatenation of homotopies of morphisms of arrows --- .../commuting-squares-of-homotopies.lagda.md | 12 +-- ...muting-squares-of-identifications.lagda.md | 90 ++++++++++++++++++- ...igher-homotopies-morphisms-arrows.lagda.md | 24 ++--- 3 files changed, 101 insertions(+), 25 deletions(-) diff --git a/src/foundation/commuting-squares-of-homotopies.lagda.md b/src/foundation/commuting-squares-of-homotopies.lagda.md index 71b76db533..bb632065b7 100644 --- a/src/foundation/commuting-squares-of-homotopies.lagda.md +++ b/src/foundation/commuting-squares-of-homotopies.lagda.md @@ -95,10 +95,10 @@ module _ right-whisker-concat-coherence-square-homotopies = map-equiv equiv-right-whisker-concat-coherence-square-homotopies - right-unwhisker-coherence-square-homotopies : + right-unwhisker-concat-htpy-coherence-square-homotopies : coherence-square-homotopies H H' (K ∙h L) (K' ∙h L) → coherence-square-homotopies H H' K K' - right-unwhisker-coherence-square-homotopies = + right-unwhisker-concat-htpy-coherence-square-homotopies = map-inv-equiv equiv-right-whisker-concat-coherence-square-homotopies ``` @@ -160,10 +160,10 @@ module _ left-whisker-concat-coherence-square-homotopies = map-equiv equiv-left-whisker-concat-coherence-square-homotopies - left-unwhisker-coherence-square-homotopies : + left-unwhisker-concat-htpy-coherence-square-homotopies : coherence-square-homotopies (L ∙h H) (L ∙h H') K K' → coherence-square-homotopies H H' K K' - left-unwhisker-coherence-square-homotopies = + left-unwhisker-concat-htpy-coherence-square-homotopies = map-inv-equiv equiv-left-whisker-concat-coherence-square-homotopies ``` @@ -226,10 +226,10 @@ module _ double-whisker-coherence-square-homotopies = map-equiv equiv-double-whisker-coherence-square-homotopies - both-unwhisker-coherence-square-homotopies : + double-unwhisker-concat-htpy-coherence-square-homotopies : ( coherence-square-homotopies (H ∙h K) (H ∙h K') (L ∙h M) (L' ∙h M)) → ( coherence-square-homotopies K K' L L') - both-unwhisker-coherence-square-homotopies = + double-unwhisker-concat-htpy-coherence-square-homotopies = map-inv-equiv equiv-double-whisker-coherence-square-homotopies ``` diff --git a/src/foundation/commuting-squares-of-identifications.lagda.md b/src/foundation/commuting-squares-of-identifications.lagda.md index 0ed7f4e0f6..bf33984f50 100644 --- a/src/foundation/commuting-squares-of-identifications.lagda.md +++ b/src/foundation/commuting-squares-of-identifications.lagda.md @@ -665,8 +665,8 @@ we may consider four ways of attaching new identifications to it: ``` These operations are useful in proofs involving path algebra, because taking -`equiv-right-whisker-concat-square-identicications` as an example, it provides -us with two maps: the forward direction states +`equiv-right-whisker-concat-coherence-square-identicications` as an example, it +provides us with two maps: the forward direction states `(p ∙ r = q ∙ s) → (p ∙ (r ∙ t)) = q ∙ (s ∙ t))`, which allows one to append an identification without needing to reassociate on the right, and the backwards direction conversely allows one to cancel out an identification in parentheses. @@ -708,12 +708,12 @@ module _ left-whisker-concat-coherence-square-identifications refl top left right bottom = id - left-unwhisker-coherence-square-identifications : + left-unwhisker-concat-coherence-square-identifications : (p : u = x) (top : x = y) (left : x = z) (right : y = w) (bottom : z = w) → coherence-square-identifications (p ∙ top) (p ∙ left) right bottom → coherence-square-identifications top left right bottom - left-unwhisker-coherence-square-identifications refl top left right bottom = + left-unwhisker-concat-coherence-square-identifications refl top left right bottom = id ``` @@ -1067,3 +1067,85 @@ module _ left-unit-law-horizontal-pasting-coherence-square-identifications refl refl right refl s = refl ``` + +### Computing the right whiskering of a vertically constant square with an identification + +Consider the vertically constant square of identifications + +```text + p + x -----> y + | | + refl | | refl + ∨ ∨ + x -----> y + p +``` + +at an identification `p : x = y`, and consider an identification `q : y = z`. Then the right whiskering of the above square with `q` is the commuting square of identifications + +```text + p + x -------> y + | | + refl | refl | q + ∨ ∨ + x -------> z + p ∙ q +``` + +```agda +module _ + {l1 : Level} {A : UU l1} + where + + right-whisker-concat-vertical-refl-coherence-square-identifications : + {x y z : A} (p : x = y) (q : y = z) → + right-whisker-concat-coherence-square-identifications p refl refl p q + ( vertical-refl-coherence-square-identifications p) = + refl + right-whisker-concat-vertical-refl-coherence-square-identifications + refl refl = + refl +``` + +### Computing the right whiskering of a horizontally constant square with an identification + +Consider a horizontally constant commuting square of identifications + +```text + refl + x -----> x + | | + p | | p + ∨ ∨ + y -----> y + refl +``` + +at an identification `p` and consider an identification `q : y = z`. Then the right whiskering of the above square with `q` is the square + +```text + refl + x -----> x + | | + p | refl | p ∙ q + ∨ ∨ + y -----> z. + q +``` + +```agda +module _ + {l1 : Level} {A : UU l1} + where + + right-whisker-concat-horizontal-refl-coherence-square-identifications : + {x y z : A} (p : x = y) (q : y = z) → + right-whisker-concat-coherence-square-identifications refl p p refl q + ( horizontal-refl-coherence-square-identifications p) = + refl + right-whisker-concat-horizontal-refl-coherence-square-identifications + refl refl = + refl +``` diff --git a/src/foundation/higher-homotopies-morphisms-arrows.lagda.md b/src/foundation/higher-homotopies-morphisms-arrows.lagda.md index fe8718fdc4..7d167279a0 100644 --- a/src/foundation/higher-homotopies-morphisms-arrows.lagda.md +++ b/src/foundation/higher-homotopies-morphisms-arrows.lagda.md @@ -7,6 +7,7 @@ module foundation.higher-homotopies-morphisms-arrows where
Imports ```agda +open import foundation.action-on-identifications-functions open import foundation.commuting-squares-of-homotopies open import foundation.commuting-squares-of-identifications open import foundation.dependent-pair-types @@ -19,6 +20,7 @@ open import foundation.torsorial-type-families open import foundation.universe-levels open import foundation.whiskering-higher-homotopies-composition open import foundation.whiskering-homotopies-concatenation +open import foundation.whiskering-identifications-concatenation open import foundation-core.equivalences open import foundation-core.homotopies @@ -219,20 +221,13 @@ module _ ( β) ( htpy-domain-left-unit-law-concat-htpy-hom-arrow) ( htpy-codomain-left-unit-law-concat-htpy-hom-arrow) - coh-left-unit-law-concat-htpy-hom-arrow = - ( right-unit-htpy) ∙h - {!!} - -{- -(x : A) → -Id -(right-whisker-concat-coherence-square-identifications refl - (pr2 (pr2 α) x) (pr2 (pr2 α) x) refl - (foundation.action-on-identifications-functions.ap g (pr1 β x)) - right-unit - ∙ pr2 (pr2 β) x) -(pr2 (pr2 β) x) --} + coh-left-unit-law-concat-htpy-hom-arrow a = + ( right-unit) ∙ + ( right-whisker-concat + ( right-whisker-concat-horizontal-refl-coherence-square-identifications + ( coh-hom-arrow f g α a) + ( ap g (htpy-domain-htpy-hom-arrow f g α α' β a))) + ( coh-htpy-hom-arrow f g α α' β a)) left-unit-law-concat-htpy-hom-arrow : htpy-htpy-hom-arrow f g α α' @@ -244,5 +239,4 @@ Id htpy-codomain-left-unit-law-concat-htpy-hom-arrow pr2 (pr2 left-unit-law-concat-htpy-hom-arrow) = coh-left-unit-law-concat-htpy-hom-arrow - ``` From ee511ce3ec90f95a23a3bf363d93ef2d145e3c4f Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Sun, 4 Feb 2024 00:36:32 +0100 Subject: [PATCH 095/150] work --- ...tion-on-identifications-functions.lagda.md | 16 +- ...muting-squares-of-identifications.lagda.md | 181 ++++++++++++++++++ ...igher-homotopies-morphisms-arrows.lagda.md | 76 +++++++- .../homotopies-morphisms-arrows.lagda.md | 4 +- 4 files changed, 270 insertions(+), 7 deletions(-) diff --git a/src/foundation/action-on-identifications-functions.lagda.md b/src/foundation/action-on-identifications-functions.lagda.md index a22b70e08c..1801ffe958 100644 --- a/src/foundation/action-on-identifications-functions.lagda.md +++ b/src/foundation/action-on-identifications-functions.lagda.md @@ -72,10 +72,18 @@ ap-refl f x = refl ### The action on identifications of any map preserves concatenation of identifications ```agda -ap-concat : - {l1 l2 : Level} {A : UU l1} {B : UU l2} (f : A → B) {x y z : A} - (p : x = y) (q : y = z) → ap f (p ∙ q) = ap f p ∙ ap f q -ap-concat f refl q = refl +module _ + {l1 l2 : Level} {A : UU l1} {B : UU l2} (f : A → B) + where + + ap-concat : + {x y z : A} (p : x = y) (q : y = z) → ap f (p ∙ q) = ap f p ∙ ap f q + ap-concat refl q = refl + + compute-right-refl-ap-concat : + {x y : A} (p : x = y) → + ap-concat p refl = ap (ap f) right-unit ∙ inv right-unit + compute-right-refl-ap-concat refl = refl ``` ### The action on identifications of any map preserves inverses diff --git a/src/foundation/commuting-squares-of-identifications.lagda.md b/src/foundation/commuting-squares-of-identifications.lagda.md index bf33984f50..ab0587484a 100644 --- a/src/foundation/commuting-squares-of-identifications.lagda.md +++ b/src/foundation/commuting-squares-of-identifications.lagda.md @@ -10,6 +10,7 @@ module foundation.commuting-squares-of-identifications where open import foundation.action-on-identifications-functions open import foundation.dependent-pair-types open import foundation.universe-levels +open import foundation.whiskering-identifications-concatenation open import foundation-core.equivalences open import foundation-core.function-types @@ -1149,3 +1150,183 @@ module _ refl refl = refl ``` + +### Computing the left whiskering of a horizontally constant square with an identification + +Consider an identification `p : x = y` and a horizontally constant commuting square of identifications + +```text + refl + y -----> y + | | + q | | q + ∨ ∨ + z -----> z + refl +``` + +at an identification `q : y = z`. The the left whiskering of the above square with `p` is the commuting square + +```text + q ∙ refl + x ------------------------------------------------------> y + | | + q ∙ p | right-unit ∙ inv (right-whisker-concat right-unit p) | p + ∨ ∨ + z ------------------------------------------------------> z. + refl +``` + +```agda +module _ + {l1 : Level} {A : UU l1} + where + + left-whisker-concat-horizontal-refl-coherence-square-identifications : + {x y z : A} (p : x = y) (q : y = z) → + left-whisker-concat-coherence-square-identifications p refl q q refl + ( horizontal-refl-coherence-square-identifications q) ∙ + right-whisker-concat right-unit q = + right-unit + left-whisker-concat-horizontal-refl-coherence-square-identifications + refl refl = + refl + + left-whisker-concat-horizontal-refl-coherence-square-identifications' : + {x y z : A} (p : x = y) (q : y = z) → + left-whisker-concat-coherence-square-identifications p refl q q refl + ( horizontal-refl-coherence-square-identifications q) = + right-unit ∙ inv (right-whisker-concat right-unit q) + left-whisker-concat-horizontal-refl-coherence-square-identifications' + refl refl = + refl +``` + +### Computing the left whiskering of a vertically constant square with an identification + +Consider the vertically constant square of identifications + +```text + q + y -----> z + | | + refl | | refl + ∨ ∨ + y -----> z + q +``` + +at an identification `q : y = z` and consider an identification `p : x = y`. Then the left whiskering of the above square with `p` is the square + +```text + p ∙ q + x ---------------------------------------------------> z + | | + p ∙ refl | right-whisker-concat right-unit q ∙ inv right-unit | refl + ∨ ∨ + y ---------------------------------------------------> z. + q +``` + +```agda +module _ + {l1 : Level} {A : UU l1} + where + + left-whisker-concat-vertical-refl-coherence-square-identifications : + {x y z : A} (p : x = y) (q : y = z) → + left-whisker-concat-coherence-square-identifications p q refl refl q + ( vertical-refl-coherence-square-identifications q) ∙ + right-unit = + right-whisker-concat right-unit q + left-whisker-concat-vertical-refl-coherence-square-identifications + refl refl = + refl + + left-whisker-concat-vertical-refl-coherence-square-identifications' : + {x y z : A} (p : x = y) (q : y = z) → + left-whisker-concat-coherence-square-identifications p q refl refl q + ( vertical-refl-coherence-square-identifications q) = + right-whisker-concat right-unit q ∙ inv right-unit + left-whisker-concat-vertical-refl-coherence-square-identifications' + refl refl = + refl +``` + +### Left whiskering horizontal concatenations of squares with identifications + +Consider a commuting diagram of identifications of the form + +```text + top-left top-right + a -------------> c -------------> e + | | | + left | | middle | right + ∨ ∨ ∨ + b -------------> d -------------> f + bottom-left bottom-right +``` + +and consider an identification `p : x = a`. Then the left whiskering of `p` and the horizontal concatenation of coherences of commuting squares is up to associativity the horizontal concatenation of the squares + +```text + p ∙ top-left top-right + x -------------> c -------------> e + | | | + p ∙ left | | middle | right + ∨ ∨ ∨ + b -------------> d -------------> f + bottom-left bottom-right +``` + +where the left square is the left whiskering of `p` and the original left square. + +```agda +module _ + {l1 : Level} {A : UU l1} + where + + left-whisker-concat-horizontal-pasting-coherence-square-identifications : + {x a b c d e f : A} (p : x = a) + (top-left : a = c) (top-right : c = e) + (left : a = b) (middle : c = d) (right : e = f) + (bottom-left : b = d) (bottom-right : d = f) + (l : coherence-square-identifications top-left left middle bottom-left) + (r : coherence-square-identifications top-right middle right bottom-right) → + left-whisker-concat-coherence-square-identifications p + ( top-left ∙ top-right) + ( left) + ( right) + ( bottom-left ∙ bottom-right) + ( horizontal-pasting-coherence-square-identifications + ( top-left) + ( top-right) + ( left) + ( middle) + ( right) + ( bottom-left) + ( bottom-right) + ( l) + ( r)) = + horizontal-pasting-coherence-square-identifications + ( p ∙ top-left) + ( top-right) + ( p ∙ left) + ( middle) + ( right) + ( bottom-left) + ( bottom-right) + ( left-whisker-concat-coherence-square-identifications p + ( top-left) + ( left) + ( middle) + ( bottom-left) + ( l)) + ( r) ∙ + right-whisker-concat + ( assoc p top-left top-right) + ( right) + left-whisker-concat-horizontal-pasting-coherence-square-identifications + refl top-left top-right left middle right bottom-left bottom-right l r = + inv right-unit +``` diff --git a/src/foundation/higher-homotopies-morphisms-arrows.lagda.md b/src/foundation/higher-homotopies-morphisms-arrows.lagda.md index 7d167279a0..ac79a5b704 100644 --- a/src/foundation/higher-homotopies-morphisms-arrows.lagda.md +++ b/src/foundation/higher-homotopies-morphisms-arrows.lagda.md @@ -193,7 +193,7 @@ module _ eq-htpy-htpy-hom-arrow β' = map-inv-equiv (extensionality-htpy-hom-arrow β') ``` -### Concatenation of homotopies of morphisms of arrows satisfies the left unit law +### The left unit law for concatenation of homotopies of morphisms of arrows ```agda module _ @@ -240,3 +240,77 @@ module _ pr2 (pr2 left-unit-law-concat-htpy-hom-arrow) = coh-left-unit-law-concat-htpy-hom-arrow ``` + +### The right unit law for concatenation of morphisms of arrows + +```agda +module _ + {l1 l2 l3 l4 : Level} + {A : UU l1} {B : UU l2} {X : UU l3} {Y : UU l4} + (f : A → B) (g : X → Y) (α α' : hom-arrow f g) + (β : htpy-hom-arrow f g α α') + where + + htpy-domain-right-unit-law-concat-htpy-hom-arrow : + htpy-domain-concat-htpy-hom-arrow f g α α' α' β + ( refl-htpy-hom-arrow f g α') ~ + htpy-domain-htpy-hom-arrow f g α α' β + htpy-domain-right-unit-law-concat-htpy-hom-arrow = right-unit-htpy + + htpy-codomain-right-unit-law-concat-htpy-hom-arrow : + htpy-codomain-concat-htpy-hom-arrow f g α α' α' β + ( refl-htpy-hom-arrow f g α') ~ + htpy-codomain-htpy-hom-arrow f g α α' β + htpy-codomain-right-unit-law-concat-htpy-hom-arrow = right-unit-htpy + + coh-right-unit-law-concat-htpy-hom-arrow : + coherence-htpy-htpy-hom-arrow f g α α' + ( concat-htpy-hom-arrow f g α α' α' β (refl-htpy-hom-arrow f g α')) + ( β) + ( htpy-domain-right-unit-law-concat-htpy-hom-arrow) + ( htpy-codomain-right-unit-law-concat-htpy-hom-arrow) + coh-right-unit-law-concat-htpy-hom-arrow a = {!!} + +{- +Id +( ( left-whisker-concat (α₂ a) (ap-concat g (β₀ a) refl)) ∙ + ( ( ( ( inv (left-whisker-concat (α₂ a) (inv right-unit))) ∙ + ( ( β₂ a) ∙ + ( left-whisker-concat (β₁ (f a)) (inv right-unit)))) ∙ + ( ( inv (assoc (β₁ (f a)) (α'₂ a) refl)) ∙ + ( left-whisker-concat-coherence-square-identifications + ( β₁ (f a)) + ( refl) -- top + ( α'₂ a) -- left + ( α'₂ a) -- right + ( refl) -- bottom + ( right-unit))))) ∙ + ( right-whisker-concat (α'₂ a) right-unit)) + +( ( left-whisker-concat (α₂ a) (ap (ap g) right-unit)) ∙ + ( β₂ a)) +-} + +{- + coherence-square-homotopies + ( left-whisker-concat-htpy + ( coh-hom-arrow f g α) + ( left-whisker-comp² g right-unit-htpy)) + ( coh-concat-htpy-hom-arrow f g α α' α' β (refl-htpy-hom-arrow f g α')) + ( coh-htpy-hom-arrow f g α α' β) + ( right-whisker-concat-htpy + ( right-whisker-comp² right-unit-htpy f) + ( coh-hom-arrow f g α')) +-} + + right-unit-law-concat-htpy-hom-arrow : + htpy-htpy-hom-arrow f g α α' + ( concat-htpy-hom-arrow f g α α' α' β (refl-htpy-hom-arrow f g α')) + ( β) + pr1 right-unit-law-concat-htpy-hom-arrow = + htpy-domain-right-unit-law-concat-htpy-hom-arrow + pr1 (pr2 right-unit-law-concat-htpy-hom-arrow) = + htpy-codomain-right-unit-law-concat-htpy-hom-arrow + pr2 (pr2 right-unit-law-concat-htpy-hom-arrow) = + coh-right-unit-law-concat-htpy-hom-arrow +``` diff --git a/src/foundation/homotopies-morphisms-arrows.lagda.md b/src/foundation/homotopies-morphisms-arrows.lagda.md index 4dfaaf0bd4..bb4dd5bac3 100644 --- a/src/foundation/homotopies-morphisms-arrows.lagda.md +++ b/src/foundation/homotopies-morphisms-arrows.lagda.md @@ -175,8 +175,8 @@ module _ ( htpy-domain-concat-htpy-hom-arrow) ( htpy-codomain-concat-htpy-hom-arrow) coh-concat-htpy-hom-arrow a = - ( ap - ( concat (coh-hom-arrow f g α a) (g (map-domain-hom-arrow f g γ a))) + ( left-whisker-concat + ( coh-hom-arrow f g α a) ( ap-concat g ( htpy-domain-htpy-hom-arrow f g α β H a) ( htpy-domain-htpy-hom-arrow f g β γ K a))) ∙ From 9f32284607d179f45ba6b4bbe4965a2df9f0e145 Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Sun, 4 Feb 2024 11:42:35 +0100 Subject: [PATCH 096/150] work --- ...muting-squares-of-identifications.lagda.md | 367 +++++++++++++++++- ...igher-homotopies-morphisms-arrows.lagda.md | 35 +- .../homotopies-morphisms-arrows.lagda.md | 12 +- ...ing-identifications-concatenation.lagda.md | 52 +++ 4 files changed, 435 insertions(+), 31 deletions(-) diff --git a/src/foundation/commuting-squares-of-identifications.lagda.md b/src/foundation/commuting-squares-of-identifications.lagda.md index ab0587484a..861c091af6 100644 --- a/src/foundation/commuting-squares-of-identifications.lagda.md +++ b/src/foundation/commuting-squares-of-identifications.lagda.md @@ -759,22 +759,23 @@ module _ ( inv right-unit)) right-whisker-concat-coherence-square-identifications : - {u : A} (p : w = u) → coherence-square-identifications top left right bottom → + {u : A} (p : w = u) → coherence-square-identifications top left (right ∙ p) (bottom ∙ p) - right-whisker-concat-coherence-square-identifications refl = - ( concat-bottom-identification-coherence-square-identifications + right-whisker-concat-coherence-square-identifications s refl = + concat-bottom-identification-coherence-square-identifications ( top) ( left) ( right ∙ refl) ( bottom) - ( inv right-unit)) ∘ - ( concat-right-identification-coherence-square-identifications - ( top) - ( left) - ( right) - ( bottom) - ( inv right-unit)) + ( inv right-unit) + ( concat-right-identification-coherence-square-identifications + ( top) + ( left) + ( right) + ( bottom) + ( inv right-unit) + ( s)) right-unwhisker-cohernece-square-identifications : {u : A} (p : w = u) → @@ -975,8 +976,8 @@ module _ ( left) ( middle) ( bottom-left) - ( bottom-right) - ( s)) ∙ + ( s) + ( bottom-right)) ∙ ( ( inv (assoc top-left middle bottom-right)) ∙ ( left-whisker-concat-coherence-square-identifications ( top-left) @@ -1036,15 +1037,13 @@ module _ ( top-left) ( top-right) ( middle) - ( bottom-right) - ( p))) + ( p) + ( bottom-right))) ``` ## Properties -### Unit law for horizontal pasting of identifications - -in a type `A`. +### Left unit law for horizontal pasting of commuting squares of identifications ```agda module _ @@ -1069,6 +1068,85 @@ module _ refl refl right refl s = refl ``` +### Right unit law for horizontal pasting of commuting squares of identifications + +```agda +module _ + {l : Level} {A : UU l} {a b c d : A} + where + + right-unit-law-horizontal-pasting-coherence-square-identifications : + (top : a = b) (left : a = c) (right : b = d) (bottom : c = d) + (s : coherence-square-identifications top left right bottom) → + horizontal-pasting-coherence-square-identifications + ( top) + ( refl) + ( left) + ( right) + ( right) + ( bottom) + ( refl) + ( s) + ( horizontal-refl-coherence-square-identifications right) ∙ + right-whisker-concat right-unit right = + left-whisker-concat left right-unit ∙ s + right-unit-law-horizontal-pasting-coherence-square-identifications + refl refl .refl refl refl = + refl +``` + +### Left unit law for vertical pasting of commuting squares of identifications + +```agda +module _ + {l : Level} {A : UU l} {a b c d : A} + where + + left-unit-law-vertical-pasting-coherence-square-identifications : + (top : a = b) (left : a = c) (right : b = d) (bottom : c = d) + (s : coherence-square-identifications top left right bottom) → + vertical-pasting-coherence-square-identifications + ( top) + ( refl) + ( refl) + ( top) + ( left) + ( right) + ( bottom) + ( vertical-refl-coherence-square-identifications top) + ( s) = + s + left-unit-law-vertical-pasting-coherence-square-identifications + refl refl .refl refl refl = refl +``` + +### Right unit law for vertical pasting of commuting squares of identifications + +```agda +module _ + {l : Level} {A : UU l} {a b c d : A} + where + + right-unit-law-vertical-pasting-coherence-square-identifications : + (top : a = b) (left : a = c) (right : b = d) (bottom : c = d) + (s : coherence-square-identifications top left right bottom) → + vertical-pasting-coherence-square-identifications + ( top) + ( left) + ( right) + ( bottom) + ( refl) + ( refl) + ( bottom) + ( s) + ( vertical-refl-coherence-square-identifications bottom) ∙ + left-whisker-concat top right-unit = + right-whisker-concat right-unit bottom ∙ s + right-unit-law-vertical-pasting-coherence-square-identifications + refl refl .(refl ∙ refl) refl refl = + refl +``` + ### Computing the right whiskering of a vertically constant square with an identification Consider the vertically constant square of identifications @@ -1102,8 +1180,9 @@ module _ right-whisker-concat-vertical-refl-coherence-square-identifications : {x y z : A} (p : x = y) (q : y = z) → - right-whisker-concat-coherence-square-identifications p refl refl p q - ( vertical-refl-coherence-square-identifications p) = + right-whisker-concat-coherence-square-identifications p refl refl p + ( vertical-refl-coherence-square-identifications p) + ( q) = refl right-whisker-concat-vertical-refl-coherence-square-identifications refl refl = @@ -1143,8 +1222,9 @@ module _ right-whisker-concat-horizontal-refl-coherence-square-identifications : {x y z : A} (p : x = y) (q : y = z) → - right-whisker-concat-coherence-square-identifications refl p p refl q - ( horizontal-refl-coherence-square-identifications p) = + right-whisker-concat-coherence-square-identifications refl p p refl + ( horizontal-refl-coherence-square-identifications p) + ( q) = refl right-whisker-concat-horizontal-refl-coherence-square-identifications refl refl = @@ -1330,3 +1410,248 @@ module _ refl top-left top-right left middle right bottom-left bottom-right l r = inv right-unit ``` + +### Left whiskering vertical concatenations of squares with identifications + +Consider two squares of identifications as in the diagram + +```text + top + a --------> b + | | + top-left | | top-right + ∨ middle ∨ + c --------> d + | | + bottom-left | | bottom-right + ∨ ∨ + e --------> f + bottom +``` + +and consider an identification `p : x = a`. Then the left whiskering of `p` with the vertical pasting of the two squares above is up to associativity the vertical pasting of the squares + +```text + p ∙ top + x --------> b + | | + p ∙ top-left | | top-right + ∨ middle ∨ + c --------> d + | | + bottom-left | | bottom-right + ∨ ∨ + e --------> f. + bottom +``` + +```agda +module _ + {l1 : Level} {A : UU l1} + where + + left-whisker-concat-vertical-concat-coherence-square-identifications : + {x a b c d e f : A} (p : x = a) → + (top : a = b) (top-left : a = c) (top-right : b = d) (middle : c = d) + (bottom-left : c = e) (bottom-right : d = f) (bottom : e = f) + (t : coherence-square-identifications top top-left top-right middle) → + (b : + coherence-square-identifications middle bottom-left bottom-right bottom) → + right-whisker-concat (assoc p top-left bottom-left) bottom ∙ + left-whisker-concat-coherence-square-identifications p + ( top) + ( top-left ∙ bottom-left) + ( top-right ∙ bottom-right) + ( bottom) + ( vertical-pasting-coherence-square-identifications + ( top) + ( top-left) + ( top-right) + ( middle) + ( bottom-left) + ( bottom-right) + ( bottom) + ( t) + ( b)) = + vertical-pasting-coherence-square-identifications + ( p ∙ top) + ( p ∙ top-left) + ( top-right) + ( middle) + ( bottom-left) + ( bottom-right) + ( bottom) + ( left-whisker-concat-coherence-square-identifications p + ( top) + ( top-left) + ( top-right) + ( middle) + ( t)) + ( b) + left-whisker-concat-vertical-concat-coherence-square-identifications + refl top top-left top-right middle bottom-left bottom-right bottom t b = + refl +``` + +### Right whiskering horizontal pastings of commuting squares of identifications + +Consider a commuting diagram of identifications of the form + +```text + top-left top-right + a -------------> c -------------> e + | | | + left | | middle | right + ∨ ∨ ∨ + b -------------> d -------------> f + bottom-left bottom-right +``` + +and consider an identification `q : f = y`. Then the right whiskering of the horizontal pasting of the squares above is up to associativity the horizontal pasting of the squares + +```text + top-left top-right + a -------------> c ------------------> e + | | | + left | | middle | right ∙ q + ∨ ∨ ∨ + b -------------> d ------------------> y + bottom-left bottom-right ∙ q +``` + +```agda +module _ + {l1 : Level} {A : UU l1} + where + + right-whisker-concat-horizontal-pasting-coherence-square-identifications : + {a b c d e f y : A} + (top-left : a = c) (top-right : c = e) + (left : a = b) (middle : c = d) (right : e = f) + (bottom-left : b = d) (bottom-right : d = f) + (l : coherence-square-identifications top-left left middle bottom-left) → + (r : coherence-square-identifications top-right middle right bottom-right) → + (q : f = y) → + right-whisker-concat-coherence-square-identifications + ( top-left ∙ top-right) + ( left) + ( right) + ( bottom-left ∙ bottom-right) + ( horizontal-pasting-coherence-square-identifications + ( top-left) + ( top-right) + ( left) + ( middle) + ( right) + ( bottom-left) + ( bottom-right) + ( l) + ( r)) + ( q) = + left-whisker-concat left (assoc bottom-left bottom-right q) ∙ + horizontal-pasting-coherence-square-identifications + ( top-left) + ( top-right) + ( left) + ( middle) + ( right ∙ q) + ( bottom-left) + ( bottom-right ∙ q) + ( l) + ( right-whisker-concat-coherence-square-identifications + ( top-right) + ( middle) + ( right) + ( bottom-right) + ( r) + ( q)) + right-whisker-concat-horizontal-pasting-coherence-square-identifications + refl refl refl .refl .refl refl refl refl refl refl = + refl +``` + + ### Right whiskering vertical concatenations of squares with identifications + +Consider two squares of identifications as in the diagram + +```text + top + a --------> b + | | + top-left | | top-right + ∨ middle ∨ + c --------> d + | | + bottom-left | | bottom-right + ∨ ∨ + e --------> f + bottom +``` + +and consider an identification `q : f = y`. Then the right whiskering of the vertical pasting of the two squares above with `q` is up to associativity the vertical pasting of the squares + +```text + top + a ------------> b + | | + top-left | | top-right + ∨ middle ∨ + c ------------> d + | | + bottom-left | | bottom-right ∙ q + ∨ ∨ + e ------------> y. + bottom ∙ q +``` + +```agda +module _ + {l1 : Level} {A : UU l1} + where + + right-whisker-concat-vertical-pasting-coherence-square-identifications : + {a b c d e f y : A} + (top : a = b) (top-left : a = c) (top-right : b = d) + (middle : c = d) + (bottom-left : c = e) (bottom-right : d = f) (bottom : e = f) + (t : coherence-square-identifications top top-left top-right middle) → + (b : + coherence-square-identifications middle bottom-left bottom-right bottom) → + (q : f = y) → + right-whisker-concat-coherence-square-identifications + ( top) + ( top-left ∙ bottom-left) + ( top-right ∙ bottom-right) + ( bottom) + ( vertical-pasting-coherence-square-identifications + ( top) + ( top-left) + ( top-right) + ( middle) + ( bottom-left) + ( bottom-right) + ( bottom) + ( t) + ( b)) + ( q)∙ + left-whisker-concat top (assoc top-right bottom-right q) = + vertical-pasting-coherence-square-identifications + ( top) + ( top-left) + ( top-right) + ( middle) + ( bottom-left) + ( bottom-right ∙ q) + ( bottom ∙ q) + ( t) + ( right-whisker-concat-coherence-square-identifications + ( middle) + ( bottom-left) + ( bottom-right) + ( bottom) + ( b) + ( q)) + right-whisker-concat-vertical-pasting-coherence-square-identifications + refl refl .refl refl refl .refl refl refl refl refl = + refl +``` diff --git a/src/foundation/higher-homotopies-morphisms-arrows.lagda.md b/src/foundation/higher-homotopies-morphisms-arrows.lagda.md index ac79a5b704..a3a81cf2a7 100644 --- a/src/foundation/higher-homotopies-morphisms-arrows.lagda.md +++ b/src/foundation/higher-homotopies-morphisms-arrows.lagda.md @@ -269,7 +269,8 @@ module _ ( β) ( htpy-domain-right-unit-law-concat-htpy-hom-arrow) ( htpy-codomain-right-unit-law-concat-htpy-hom-arrow) - coh-right-unit-law-concat-htpy-hom-arrow a = {!!} + coh-right-unit-law-concat-htpy-hom-arrow a = + {!!} {- Id @@ -294,13 +295,39 @@ Id {- coherence-square-homotopies ( left-whisker-concat-htpy - ( coh-hom-arrow f g α) + ( α₂) ( left-whisker-comp² g right-unit-htpy)) ( coh-concat-htpy-hom-arrow f g α α' α' β (refl-htpy-hom-arrow f g α')) - ( coh-htpy-hom-arrow f g α α' β) + ( β₂) ( right-whisker-concat-htpy ( right-whisker-comp² right-unit-htpy f) - ( coh-hom-arrow f g α')) + ( α₂')) + +where + + ( ( left-whisker-concat + ( α₂ a) + ( ap-concat g + ( β₀ a) + ( refl))) ∙ + ( horizontal-pasting-coherence-square-identifications + ( β₁ (f a)) + ( refl) + ( α₂ a) + ( α'₂ a) + ( α'₂ a) + ( (g ·l β₀) a) + ( refl) + ( β₂ a) + ( right-unit))) ∙ + ( right-whisker-concat-htpy + ( right-whisker-comp² right-unit-htpy f) + ( α₂') + ( a)) = + ( left-whisker-concat-htpy + ( α₂) + ( left-whisker-comp² g right-unit-htpy)) ∙ + ( β₂ a) -} right-unit-law-concat-htpy-hom-arrow : diff --git a/src/foundation/homotopies-morphisms-arrows.lagda.md b/src/foundation/homotopies-morphisms-arrows.lagda.md index bb4dd5bac3..0958884672 100644 --- a/src/foundation/homotopies-morphisms-arrows.lagda.md +++ b/src/foundation/homotopies-morphisms-arrows.lagda.md @@ -220,8 +220,8 @@ module _ ( htpy-domain-inv-htpy-hom-arrow) ( htpy-codomain-inv-htpy-hom-arrow) coh-inv-htpy-hom-arrow a = - ( ap - ( concat (coh-hom-arrow f g β a) _) + ( left-whisker-concat + ( coh-hom-arrow f g β a) ( ap-inv g (htpy-domain-htpy-hom-arrow f g α β H a))) ∙ ( double-transpose-eq-concat' ( coh-hom-arrow f g α a) @@ -289,7 +289,6 @@ module _ ( ap ( map-codomain-hom-arrow g h γ ∘ g) ( htpy-domain-htpy-hom-arrow f g α β H a)) - ( coh-hom-arrow g h γ (map-domain-hom-arrow f g β a)) ( ( ap ( ap (map-codomain-hom-arrow g h γ) (coh-hom-arrow f g α a) ∙_) ( ap-comp @@ -302,7 +301,8 @@ module _ ( coh-hom-arrow f g α a) ( coh-hom-arrow f g β a) ( ap g (htpy-domain-htpy-hom-arrow f g α β H a)) - ( coh-htpy-hom-arrow f g α β H a)))) + ( coh-htpy-hom-arrow f g α β H a))) + ( coh-hom-arrow g h γ (map-domain-hom-arrow f g β a))) left-whisker-comp-hom-arrow : htpy-hom-arrow f h @@ -366,11 +366,11 @@ module _ ( ap (map-codomain-hom-arrow g h γ) (coh-hom-arrow f g α a)) ( htpy-codomain-htpy-hom-arrow g h β γ H ( g (map-domain-hom-arrow f g α a))) - ( coh-hom-arrow g h γ (map-domain-hom-arrow f g α a)) ( inv ( nat-htpy ( htpy-codomain-htpy-hom-arrow g h β γ H) - ( coh-hom-arrow f g α a))))) + ( coh-hom-arrow f g α a))) + ( coh-hom-arrow g h γ (map-domain-hom-arrow f g α a)))) right-whisker-comp-hom-arrow : htpy-hom-arrow f h diff --git a/src/foundation/whiskering-identifications-concatenation.lagda.md b/src/foundation/whiskering-identifications-concatenation.lagda.md index b510f5f27f..c24f0ab8a4 100644 --- a/src/foundation/whiskering-identifications-concatenation.lagda.md +++ b/src/foundation/whiskering-identifications-concatenation.lagda.md @@ -81,6 +81,21 @@ module _ right-whisker-concat α q = ap (_∙ q) α ``` +### Double whiskering of identifications + +```agda +module _ + {l : Level} {A : UU l} + {a b c d : A} (p : a = b) {r s : b = c} (t : r = s) (q : c = d) + where + + double-whisker-concat : (p ∙ r) ∙ q = (p ∙ s) ∙ q + double-whisker-concat = right-whisker-concat (left-whisker-concat p t) q + + double-whisker-concat' : p ∙ (r ∙ q) = p ∙ (s ∙ q) + double-whisker-concat' = left-whisker-concat p (right-whisker-concat t q) +``` + ## Properties ### Left whiskering of identifications is an equivalence @@ -227,6 +242,43 @@ module _ refl ``` +### Swapping the order of left and right whiskering of identifications + +Consider a diagram of identifications + +```text + r + p -----> q + a -----> b -----> c -----> + s +``` + +with `t : r = s`. Then the square of identifications + +```text + assoc p r q + (p ∙ r) ∙ q -------------> p ∙ (r ∙ q) + | | + double-whisker p t q | | double-whisker' p t q + ∨ ∨ + (p ∙ s) ∙ q -------------> p ∙ (s ∙ q) + assoc p s q +``` + +commutes. + +```agda +module _ + {l1 : Level} {A : UU l1} + where + + swap-double-whisker-concat : + {a b c d : A} (p : a = b) {r s : b = c} (t : r = s) (q : c = d) → + double-whisker-concat p t q ∙ assoc p s q = + assoc p r q ∙ double-whisker-concat' p t q + swap-double-whisker-concat refl refl refl = refl +``` + ### The action on identifications of concatenating by `refl` on the right Consider an identification `r : p = q` between two identifications From 6ec3bacf9532b17f52d7f87fa5e7f2ad3d6f6e2f Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Sun, 4 Feb 2024 12:54:02 +0100 Subject: [PATCH 097/150] the right unit law for concatenation of homotopies of morphisms of arrows --- src/foundation-core/identity-types.lagda.md | 49 +++++++++++ ...igher-homotopies-morphisms-arrows.lagda.md | 83 ++++++------------- ...ing-identifications-concatenation.lagda.md | 54 ++++++++++++ 3 files changed, 127 insertions(+), 59 deletions(-) diff --git a/src/foundation-core/identity-types.lagda.md b/src/foundation-core/identity-types.lagda.md index 8faea91eb2..0c92315a27 100644 --- a/src/foundation-core/identity-types.lagda.md +++ b/src/foundation-core/identity-types.lagda.md @@ -370,6 +370,55 @@ module _ double-transpose-eq-concat' r refl refl q α = right-unit ∙ (α ∙ right-unit) ``` +### Splicing and unsplicing concatenations of identifications + +Consider two identifications `p : a = b` and `q : b = c`, and consider two further identifications `r : b = x` and `s : x = b` equipped with an identification `inv r = s`, as indicated in the diagram + +```text + x + ∧ | + r | | s + | ∨ + a -----> b -----> c. +``` + +Then we have identifications + +```text + splice-concat : p ∙ q = (p ∙ r) ∙ (s ∙ q) + unsplice-concat : (p ∙ r) ∙ (s ∙ q) = p ∙ q. +``` + +```agda +module _ + {l : Level} {A : UU l} + where + + splice-concat : + {a b c x : A} + (p : a = b) {r : b = x} {s : x = b} (α : inv r = s) (q : b = c) → + p ∙ q = (p ∙ r) ∙ (s ∙ q) + splice-concat refl {r} refl q = inv (is-section-inv-concat r q) + + splice-concat' : + {a b c x : A} + (p : a = b) {r : b = x} {s : x = b} (α : r = inv s) (q : b = c) → + p ∙ q = (p ∙ r) ∙ (s ∙ q) + splice-concat' refl {.(inv s)} {s} refl q = inv (is-retraction-inv-concat s q) + + unsplice-concat : + {a b c x : A} + (p : a = b) {r : b = x} {s : x = b} (α : inv r = s) (q : b = c) → + (p ∙ r) ∙ (s ∙ q) = p ∙ q + unsplice-concat p α q = inv (splice-concat p α q) + + unsplice-concat' : + {a b c x : A} + (p : a = b) {r : b = x} {s : x = b} (α : r = inv s) (q : b = c) → + (p ∙ r) ∙ (s ∙ q) = p ∙ q + unsplice-concat' p α q = inv (splice-concat' p α q) +``` + ### Concatenation is injective ```agda diff --git a/src/foundation/higher-homotopies-morphisms-arrows.lagda.md b/src/foundation/higher-homotopies-morphisms-arrows.lagda.md index a3a81cf2a7..ef383f8263 100644 --- a/src/foundation/higher-homotopies-morphisms-arrows.lagda.md +++ b/src/foundation/higher-homotopies-morphisms-arrows.lagda.md @@ -15,6 +15,7 @@ open import foundation.fundamental-theorem-of-identity-types open import foundation.homotopies-morphisms-arrows open import foundation.homotopy-induction open import foundation.morphisms-arrows +open import foundation.path-algebra open import foundation.structure-identity-principle open import foundation.torsorial-type-families open import foundation.universe-levels @@ -270,65 +271,29 @@ module _ ( htpy-domain-right-unit-law-concat-htpy-hom-arrow) ( htpy-codomain-right-unit-law-concat-htpy-hom-arrow) coh-right-unit-law-concat-htpy-hom-arrow a = - {!!} - -{- -Id -( ( left-whisker-concat (α₂ a) (ap-concat g (β₀ a) refl)) ∙ - ( ( ( ( inv (left-whisker-concat (α₂ a) (inv right-unit))) ∙ - ( ( β₂ a) ∙ - ( left-whisker-concat (β₁ (f a)) (inv right-unit)))) ∙ - ( ( inv (assoc (β₁ (f a)) (α'₂ a) refl)) ∙ - ( left-whisker-concat-coherence-square-identifications - ( β₁ (f a)) - ( refl) -- top - ( α'₂ a) -- left - ( α'₂ a) -- right - ( refl) -- bottom - ( right-unit))))) ∙ - ( right-whisker-concat (α'₂ a) right-unit)) - -( ( left-whisker-concat (α₂ a) (ap (ap g) right-unit)) ∙ - ( β₂ a)) --} - -{- - coherence-square-homotopies - ( left-whisker-concat-htpy - ( α₂) - ( left-whisker-comp² g right-unit-htpy)) - ( coh-concat-htpy-hom-arrow f g α α' α' β (refl-htpy-hom-arrow f g α')) - ( β₂) - ( right-whisker-concat-htpy - ( right-whisker-comp² right-unit-htpy f) - ( α₂')) - -where - - ( ( left-whisker-concat - ( α₂ a) - ( ap-concat g - ( β₀ a) - ( refl))) ∙ - ( horizontal-pasting-coherence-square-identifications - ( β₁ (f a)) - ( refl) - ( α₂ a) - ( α'₂ a) - ( α'₂ a) - ( (g ·l β₀) a) - ( refl) - ( β₂ a) - ( right-unit))) ∙ - ( right-whisker-concat-htpy - ( right-whisker-comp² right-unit-htpy f) - ( α₂') - ( a)) = - ( left-whisker-concat-htpy - ( α₂) - ( left-whisker-comp² g right-unit-htpy)) ∙ - ( β₂ a) --} + ( assoc + ( left-whisker-concat (coh-hom-arrow f g α a) (ap-concat g _ refl)) + ( _) + ( right-whisker-concat right-unit (coh-hom-arrow f g α' a))) ∙ + ( horizontal-concat-Id² + ( ( ap + ( left-whisker-concat (coh-hom-arrow f g α a)) + ( compute-right-refl-ap-concat g + ( htpy-domain-htpy-hom-arrow f g α α' β a))) ∙ + ( distributive-left-whisker-concat-concat + ( coh-hom-arrow f g α a) + ( ap (ap g) right-unit) + ( inv right-unit))) + ( right-unit-law-horizontal-pasting-coherence-square-identifications + ( htpy-codomain-htpy-hom-arrow f g α α' β (f a)) + ( coh-hom-arrow f g α a) + ( coh-hom-arrow f g α' a) + ( ap g (htpy-domain-htpy-hom-arrow f g α α' β a)) + ( coh-htpy-hom-arrow f g α α' β a)) ∙ + ( unsplice-concat' + ( left-whisker-concat (coh-hom-arrow f g α a) (ap (ap g) right-unit)) + ( compute-inv-left-whisker-concat (coh-hom-arrow f g α a) right-unit) + ( coh-htpy-hom-arrow f g α α' β a))) right-unit-law-concat-htpy-hom-arrow : htpy-htpy-hom-arrow f g α α' diff --git a/src/foundation/whiskering-identifications-concatenation.lagda.md b/src/foundation/whiskering-identifications-concatenation.lagda.md index c24f0ab8a4..81700811bc 100644 --- a/src/foundation/whiskering-identifications-concatenation.lagda.md +++ b/src/foundation/whiskering-identifications-concatenation.lagda.md @@ -306,3 +306,57 @@ module _ right-unit ∙ r = right-whisker-concat r refl ∙ right-unit compute-refl-right-whisker-concat refl = right-unit ``` + +### Left whiskering of identifications distributes over concatenation + +```agda +module _ + {l : Level} {A : UU l} + where + + distributive-left-whisker-concat-concat : + {a b c : A} (p : a = b) {q r s : b = c} (α : q = r) (β : r = s) → + left-whisker-concat p (α ∙ β) = + left-whisker-concat p α ∙ left-whisker-concat p β + distributive-left-whisker-concat-concat p refl β = refl +``` + +### Right whiskering of identifications distributes over concatenation + +```agda +module _ + {l : Level} {A : UU l} + where + + distributive-right-whisker-concat-concat : + {a b c : A} {p q r : a = b} (α : p = q) (β : q = r) (s : b = c) → + right-whisker-concat (α ∙ β) s = + right-whisker-concat α s ∙ right-whisker-concat β s + distributive-right-whisker-concat-concat refl β s = refl +``` + +### Left whiskering of identifications commutes with inverses of identifications + +```agda +module _ + {l : Level} {A : UU l} + where + + compute-inv-left-whisker-concat : + {a b c : A} (p : a = b) {q r : b = c} (s : q = r) → + left-whisker-concat p (inv s) = inv (left-whisker-concat p s) + compute-inv-left-whisker-concat p s = ap-inv (concat p _) s +``` + +### Right whiskering of identifications commutes with inverses of identifications + +```agda +module _ + {l : Level} {A : UU l} + where + + compute-inv-right-whisker-concat : + {a b c : A} {p q : a = b} (s : p = q) (r : b = c) → + right-whisker-concat (inv s) r = inv (right-whisker-concat s r) + compute-inv-right-whisker-concat s r = ap-inv (concat' _ r) s +``` From 47a6c7d153bde8710504943d1d04d664a82dd680 Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Sun, 4 Feb 2024 13:19:45 +0100 Subject: [PATCH 098/150] complete characterization of identity type of lifting squares --- .../lifting-squares.lagda.md | 150 ++++++------------ 1 file changed, 46 insertions(+), 104 deletions(-) diff --git a/src/orthogonal-factorization-systems/lifting-squares.lagda.md b/src/orthogonal-factorization-systems/lifting-squares.lagda.md index ef811fff45..4274c1f187 100644 --- a/src/orthogonal-factorization-systems/lifting-squares.lagda.md +++ b/src/orthogonal-factorization-systems/lifting-squares.lagda.md @@ -14,14 +14,19 @@ open import foundation.commuting-tetrahedra-of-homotopies open import foundation.commuting-triangles-of-homotopies open import foundation.commuting-triangles-of-identifications open import foundation.dependent-pair-types +open import foundation.equivalences open import foundation.fibered-maps open import foundation.function-types +open import foundation.fundamental-theorem-of-identity-types open import foundation.higher-homotopies-morphisms-arrows open import foundation.homotopies open import foundation.homotopies-morphisms-arrows +open import foundation.homotopy-induction open import foundation.identity-types open import foundation.morphisms-arrows open import foundation.path-algebra +open import foundation.structure-identity-principle +open import foundation.torsorial-type-families open import foundation.universe-levels open import foundation.whiskering-homotopies-composition open import foundation.whiskering-identifications-concatenation @@ -169,12 +174,12 @@ module _ coherence-htpy-lifting-square H = htpy-htpy-hom-arrow f g α ( hom-arrow-map f g (diagonal-map-lifting-square f g α l)) - ( is-lifting-diagonal-map-lifting-square f g α l) ( concat-htpy-hom-arrow f g α ( hom-arrow-map f g (diagonal-map-lifting-square f g α k)) ( hom-arrow-map f g (diagonal-map-lifting-square f g α l)) ( is-lifting-diagonal-map-lifting-square f g α k) ( htpy-hom-arrow-htpy f g H)) + ( is-lifting-diagonal-map-lifting-square f g α l) htpy-lifting-square : UU (l1 ⊔ l2 ⊔ l3 ⊔ l4) htpy-lifting-square = @@ -209,123 +214,60 @@ module _ diagonal-map-lifting-square f g α k ~ diagonal-map-lifting-square f g α k htpy-diagonal-map-refl-htpy-lifting-square = refl-htpy + coh-refl-htpy-lifting-square : + coherence-htpy-lifting-square f g α k k + ( htpy-diagonal-map-refl-htpy-lifting-square) + coh-refl-htpy-lifting-square = + right-unit-law-concat-htpy-hom-arrow f g α + ( hom-arrow-map f g (diagonal-map-lifting-square f g α k)) + ( is-lifting-diagonal-map-lifting-square f g α k) + refl-htpy-lifting-square : htpy-lifting-square f g α k k pr1 refl-htpy-lifting-square = htpy-diagonal-map-refl-htpy-lifting-square - pr2 refl-htpy-lifting-square = {!!} + pr2 refl-htpy-lifting-square = coh-refl-htpy-lifting-square ``` ## Properties ### Characterization of identifications of lifting squares -```text +```agda module _ - {l1 l2 l3 l4 : Level} - {A : UU l1} {X : UU l2} {B : UU l3} {Y : UU l4} - (h : A → X) (f : A → B) (g : X → Y) (i : B → Y) - (H : coherence-square-maps h f g i) + {l1 l2 l3 l4 : Level} {A : UU l1} {B : UU l2} {X : UU l3} {Y : UU l4} + (f : A → B) (g : X → Y) (α : hom-arrow f g) (l : lifting-square f g α) where - coherence-htpy-lifting-square : - (l l' : lifting-square h f g i H) - (K : - ( diagonal-map-lifting-square l) ~ - ( diagonal-map-lifting-square l')) - (E : - ( is-extension-lifting-square l') ~ - ( is-extension-lifting-square l ∙h (K ·r f))) - (L : - ( is-lift-lifting-square l') ~ - ( is-lift-lifting-square l ∙h (g ·l K))) → - UU (l1 ⊔ l4) - coherence-htpy-lifting-square l l' K E L = - coherence-tetrahedron-homotopies - ( is-lift-lifting-square l ·r f) - ( H) - ( g ·l (K ·r f)) - ( g ·l is-extension-lifting-square l') - ( g ·l is-extension-lifting-square l) - ( is-lift-lifting-square l' ·r f) - ( coherence-lifting-square l) - ( right-whisker-comp-coherence-triangle-homotopies (K ·r f) g E) - ( left-whisker-comp-coherence-triangle-homotopies (g ·l K) L f) - ( coherence-lifting-square l') - - htpy-lifting-square : - (l l' : lifting-square h f g i H) → UU (l1 ⊔ l2 ⊔ l3 ⊔ l4) - htpy-lifting-square l l' = - Σ ( ( diagonal-map-lifting-square l) ~ - ( diagonal-map-lifting-square l')) - ( λ K → - Σ ( ( is-extension-lifting-square l') ~ - ( is-extension-lifting-square l ∙h (K ·r f))) - ( λ E → - Σ ( ( is-lift-lifting-square l') ~ - ( is-lift-lifting-square l ∙h (g ·l K))) - ( coherence-htpy-lifting-square l l' K E))) - - refl-htpy-lifting-square : - (l : lifting-square h f g i H) → htpy-lifting-square l l - pr1 (refl-htpy-lifting-square l) = refl-htpy - pr1 (pr2 (refl-htpy-lifting-square l)) = inv-htpy-right-unit-htpy - pr1 (pr2 (pr2 (refl-htpy-lifting-square l))) = inv-htpy-right-unit-htpy - pr2 (pr2 (pr2 (refl-htpy-lifting-square l))) x = {!!} - {- - ( inv (assoc (inv right-unit) (β) (α))) ∙ - ( ( right-whisker-concat - ( ( left-whisker-concat - ( inv right-unit) - ( ( right-transpose-eq-concat _ _ _ - ( inv - ( compute-refl-right-whisker-concat - ( coherence-lifting-square l x)))) ∙ - ( assoc - ( right-unit) - ( coherence-lifting-square l x) - ( inv right-unit)))) ∙ - ( is-retraction-inv-concat - ( right-unit) - ( coherence-lifting-square l x ∙ inv right-unit))) - ( α)) ∙ - ( ( assoc (coherence-lifting-square l x) (inv right-unit) (α)) ∙ - ( ( left-whisker-concat - ( coherence-lifting-square l x) - ( ( left-whisker-concat - ( inv right-unit) - ( right-unit-law-assoc - ( H x) - ( ap g (is-extension-lifting-square l x)))) ∙ - ( ( is-retraction-inv-concat - ( right-unit) - ( left-whisker-concat (H x) (inv right-unit))) ∙ - ( inv - ( is-section-inv-concat' α - ( left-whisker-concat (H x) (inv right-unit))))))) ∙ - ( ( inv - ( assoc - ( coherence-lifting-square l x) - ( left-whisker-concat (H x) (inv right-unit) ∙ inv α) - ( α))) ∙ - ( ap - ( λ r → - ( ( coherence-lifting-square l x) ∙ - ( left-whisker-concat (H x) r ∙ inv α)) ∙ - ( α)) - ( compute-refl-right-map-coherence-triangle-identifications - ( g) - ( is-extension-lifting-square l x))))))) -} - where - α = assoc (H x) (ap g (is-extension-lifting-square l x)) refl - β = right-whisker-concat (coherence-lifting-square l x) refl - htpy-eq-lifting-square : - (l l' : lifting-square h f g i H) → l = l' → htpy-lifting-square l l' - htpy-eq-lifting-square l .l refl = refl-htpy-lifting-square l + (k : lifting-square f g α) → l = k → htpy-lifting-square f g α l k + htpy-eq-lifting-square .l refl = refl-htpy-lifting-square f g α l + + is-torsorial-htpy-lifting-square : + is-torsorial (htpy-lifting-square f g α l) + is-torsorial-htpy-lifting-square = + is-torsorial-Eq-structure + ( is-torsorial-htpy _) + ( diagonal-map-lifting-square f g α l , refl-htpy) + ( is-torsorial-htpy-htpy-hom-arrow f g α + ( hom-arrow-map f g (diagonal-map-lifting-square f g α l)) + ( _)) + + is-equiv-htpy-eq-lifting-square : + (k : lifting-square f g α) → is-equiv (htpy-eq-lifting-square k) + is-equiv-htpy-eq-lifting-square = + fundamental-theorem-id + ( is-torsorial-htpy-lifting-square) + ( htpy-eq-lifting-square) + + extensionality-lifting-square : + (k : lifting-square f g α) → (l = k) ≃ htpy-lifting-square f g α l k + pr1 (extensionality-lifting-square k) = htpy-eq-lifting-square k + pr2 (extensionality-lifting-square k) = is-equiv-htpy-eq-lifting-square k + + eq-htpy-lifting-square : + (k : lifting-square f g α) → htpy-lifting-square f g α l k → l = k + eq-htpy-lifting-square k = map-inv-equiv (extensionality-lifting-square k) ``` -It remains to show that `coherence-htpy-lifting-square` indeed is a -characterization of identifications of lifting squares. - ### Diagonal maps give lifting squares The diagram From 28b76a473ae6c30d592b88ebf04862320e7ce80b Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Sun, 4 Feb 2024 13:29:44 +0100 Subject: [PATCH 099/150] complete refactoring of lifting squares --- .../lifting-squares.lagda.md | 95 ++++++++----------- 1 file changed, 37 insertions(+), 58 deletions(-) diff --git a/src/orthogonal-factorization-systems/lifting-squares.lagda.md b/src/orthogonal-factorization-systems/lifting-squares.lagda.md index 4274c1f187..98fb92fa3e 100644 --- a/src/orthogonal-factorization-systems/lifting-squares.lagda.md +++ b/src/orthogonal-factorization-systems/lifting-squares.lagda.md @@ -227,6 +227,43 @@ module _ pr2 refl-htpy-lifting-square = coh-refl-htpy-lifting-square ``` +### Trivial lifting squares + +The diagram + +```text + A X + | ^ | + f| j / |g + | / | + V / V + B Y +``` + +gives rise to a lifting square + +```text + j ∘ f + A ------> X + | ∧ | + f | j / | g + | / | + ∨ / ∨ + B -------> Y + g ∘ j +``` + +```agda +module _ + {l1 l2 l3 l4 : Level} {A : UU l1} {X : UU l2} {B : UU l3} {Y : UU l4} + (f : A → B) (g : X → Y) + where + + is-lifting-square-hom-arrow-map : + (j : B → X) → is-lifting-square f g (hom-arrow-map f g j) j + is-lifting-square-hom-arrow-map j = refl-htpy-hom-arrow f g (hom-arrow-map f g j) +``` + ## Properties ### Characterization of identifications of lifting squares @@ -267,61 +304,3 @@ module _ (k : lifting-square f g α) → htpy-lifting-square f g α l k → l = k eq-htpy-lifting-square k = map-inv-equiv (extensionality-lifting-square k) ``` - -### Diagonal maps give lifting squares - -The diagram - -```text - A X - | ^ | - f| j / |g - | / | - V / V - B Y -``` - -gives rise to a lifting square - -```text - j ∘ f - A ------> X - | ^ | - f| j / |g - | / | - V / V - B ------> Y - g ∘ j -``` - -```text -module _ - {l1 l2 l3 l4 : Level} {A : UU l1} {X : UU l2} {B : UU l3} {Y : UU l4} - (f : A → B) (g : X → Y) - where - - is-lifting-square-diagonal : - (j : B → X) → is-lifting-square (j ∘ f) f g (g ∘ j) refl-htpy j - pr1 (is-lifting-square-diagonal j) = refl-htpy - pr1 (pr2 (is-lifting-square-diagonal j)) = refl-htpy - pr2 (pr2 (is-lifting-square-diagonal j)) = refl-htpy -``` - -### The lifting square associated to a fibered map - -```text -module _ - {l1 l2 l3 l4 : Level} {A : UU l1} {X : UU l2} {B : UU l3} {Y : UU l4} - (f : A → X) (g : B → Y) - where - - lifting-square-fibered-map : - (h : fibered-map f g) → UU (l1 ⊔ l2 ⊔ l3 ⊔ l4) - lifting-square-fibered-map h = - lifting-square - ( map-total-fibered-map f g h) - ( f) - ( g) - ( map-base-fibered-map f g h) - ( is-map-over-map-total-fibered-map f g h) -``` From f133d251a63cc1bf80368314d36a99bddc1514e5 Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Sun, 4 Feb 2024 19:23:25 +0100 Subject: [PATCH 100/150] refactoring pullback-hom --- src/foundation/invertible-maps.lagda.md | 1 + .../lifting-squares.lagda.md | 69 ++- .../pullback-hom.lagda.md | 498 ++++++++++++------ 3 files changed, 404 insertions(+), 164 deletions(-) diff --git a/src/foundation/invertible-maps.lagda.md b/src/foundation/invertible-maps.lagda.md index 97d4838d5e..65cc698f8f 100644 --- a/src/foundation/invertible-maps.lagda.md +++ b/src/foundation/invertible-maps.lagda.md @@ -18,6 +18,7 @@ open import foundation.full-subtypes open import foundation.functoriality-cartesian-product-types open import foundation.fundamental-theorem-of-identity-types open import foundation.homotopies +open import foundation.homotopy-algebra open import foundation.homotopy-induction open import foundation.postcomposition-functions open import foundation.propositions diff --git a/src/orthogonal-factorization-systems/lifting-squares.lagda.md b/src/orthogonal-factorization-systems/lifting-squares.lagda.md index 98fb92fa3e..769f7e7123 100644 --- a/src/orthogonal-factorization-systems/lifting-squares.lagda.md +++ b/src/orthogonal-factorization-systems/lifting-squares.lagda.md @@ -33,7 +33,7 @@ open import foundation.whiskering-identifications-concatenation open import orthogonal-factorization-systems.extensions-of-maps open import orthogonal-factorization-systems.lifts-of-maps -open import orthogonal-factorization-systems.morphisms-arrows-from-diagonal-maps +open import orthogonal-factorization-systems.pullback-hom ```
@@ -69,12 +69,12 @@ consists of a diagonal map `j : B → B` such that the complete diagram commutes. We note that there is a canonical map ```text - hom-arrow-map : (B → X) → hom-arrow f g. + pullback-hom : (B → X) → hom-arrow f g. ``` Therefore we see that a lifting square consists of a morphism `α : hom-arrow f g` of arrows from `f` to `g`, a map `j : B → X`, and a homotopy -of morphisms of arrow `hom-arrow-map f ~ α`. +of morphisms of arrow `pullback-hom f ~ α`. ## Definitions @@ -88,7 +88,7 @@ module _ where is-lifting-square : UU (l1 ⊔ l2 ⊔ l3 ⊔ l4) - is-lifting-square = htpy-hom-arrow f g α (hom-arrow-map f g j) + is-lifting-square = htpy-hom-arrow f g α (pullback-hom f g j) is-extension-is-lifting-square : is-lifting-square → @@ -104,7 +104,7 @@ module _ coherence-square-homotopies ( is-lift-is-lifting-square l ·r f) ( coh-hom-arrow f g α) - ( coh-hom-arrow-map f g j) + ( coh-pullback-hom f g j) ( g ·l is-extension-is-lifting-square l) coherence-is-lifting-square = pr2 ∘ pr2 ``` @@ -153,7 +153,7 @@ module _ coherence-square-homotopies ( is-lift-lifting-square l ·r f) ( coh-hom-arrow f g α) - ( coh-hom-arrow-map f g (diagonal-map-lifting-square l)) + ( coh-pullback-hom f g (diagonal-map-lifting-square l)) ( g ·l is-extension-lifting-square l) coherence-lifting-square = pr2 ∘ (pr2 ∘ pr2) ``` @@ -173,10 +173,10 @@ module _ UU (l1 ⊔ l2 ⊔ l3 ⊔ l4) coherence-htpy-lifting-square H = htpy-htpy-hom-arrow f g α - ( hom-arrow-map f g (diagonal-map-lifting-square f g α l)) + ( pullback-hom f g (diagonal-map-lifting-square f g α l)) ( concat-htpy-hom-arrow f g α - ( hom-arrow-map f g (diagonal-map-lifting-square f g α k)) - ( hom-arrow-map f g (diagonal-map-lifting-square f g α l)) + ( pullback-hom f g (diagonal-map-lifting-square f g α k)) + ( pullback-hom f g (diagonal-map-lifting-square f g α l)) ( is-lifting-diagonal-map-lifting-square f g α k) ( htpy-hom-arrow-htpy f g H)) ( is-lifting-diagonal-map-lifting-square f g α l) @@ -219,7 +219,7 @@ module _ ( htpy-diagonal-map-refl-htpy-lifting-square) coh-refl-htpy-lifting-square = right-unit-law-concat-htpy-hom-arrow f g α - ( hom-arrow-map f g (diagonal-map-lifting-square f g α k)) + ( pullback-hom f g (diagonal-map-lifting-square f g α k)) ( is-lifting-diagonal-map-lifting-square f g α k) refl-htpy-lifting-square : htpy-lifting-square f g α k k @@ -259,9 +259,9 @@ module _ (f : A → B) (g : X → Y) where - is-lifting-square-hom-arrow-map : - (j : B → X) → is-lifting-square f g (hom-arrow-map f g j) j - is-lifting-square-hom-arrow-map j = refl-htpy-hom-arrow f g (hom-arrow-map f g j) + is-lifting-square-pullback-hom : + (j : B → X) → is-lifting-square f g (pullback-hom f g j) j + is-lifting-square-pullback-hom j = refl-htpy-hom-arrow f g (pullback-hom f g j) ``` ## Properties @@ -285,7 +285,7 @@ module _ ( is-torsorial-htpy _) ( diagonal-map-lifting-square f g α l , refl-htpy) ( is-torsorial-htpy-htpy-hom-arrow f g α - ( hom-arrow-map f g (diagonal-map-lifting-square f g α l)) + ( pullback-hom f g (diagonal-map-lifting-square f g α l)) ( _)) is-equiv-htpy-eq-lifting-square : @@ -304,3 +304,44 @@ module _ (k : lifting-square f g α) → htpy-lifting-square f g α l k → l = k eq-htpy-lifting-square k = map-inv-equiv (extensionality-lifting-square k) ``` + +### The fibers of the pullback-hom-old + +```text +module _ + {l1 l2 l3 l4 : Level} {A : UU l1} {B : UU l2} {X : UU l3} {Y : UU l4} + (f : A → B) (g : X → Y) (h : hom-arrow f g) + where + + inv-compute-fiber-pullback-hom-old : + fiber (pullback-hom-old f g) h ≃ lifting-square f g h + inv-compute-fiber-pullback-hom-old = + equiv-tot + ( λ j → + ( equiv-Σ _ + ( equiv-inv-htpy (j ∘ f) (map-domain-hom-arrow f g h)) + ( λ E → + equiv-Σ _ + ( equiv-inv-htpy (g ∘ j) (map-codomain-hom-arrow f g h)) + ( λ L → + ( equiv-concat-htpy' + ( inv-htpy L ·r f) + ( λ x → + ap + ( coh-hom-arrow f g h x ∙_) + ( inv-htpy (left-whisker-inv-htpy g E) x))) ∘e + ( equiv-right-transpose-htpy-concat + ( inv-htpy (L ·r f)) + ( g ·l E) + ( coh-hom-arrow f g h)) ∘e + ( equiv-left-transpose-htpy-concat' + ( g ·l E) + ( L ·r f) + ( coh-hom-arrow f g h))))) ∘e + ( equiv-left-swap-Σ) ∘e + ( extensionality-hom-arrow f g (pullback-hom-old f g j) h)) + + compute-fiber-pullback-hom-old : + lifting-square f g h ≃ fiber (pullback-hom-old f g) h + compute-fiber-pullback-hom-old = inv-equiv inv-compute-fiber-pullback-hom-old +``` diff --git a/src/orthogonal-factorization-systems/pullback-hom.lagda.md b/src/orthogonal-factorization-systems/pullback-hom.lagda.md index 362dd61ad8..53516321ea 100644 --- a/src/orthogonal-factorization-systems/pullback-hom.lagda.md +++ b/src/orthogonal-factorization-systems/pullback-hom.lagda.md @@ -8,32 +8,39 @@ module orthogonal-factorization-systems.pullback-hom where ```agda open import foundation.action-on-identifications-functions +open import foundation.commuting-squares-of-maps +open import foundation.commuting-triangles-of-maps open import foundation.cones-over-cospan-diagrams +open import foundation.dependent-identifications open import foundation.dependent-pair-types +open import foundation.equality-dependent-pair-types open import foundation.equivalences -open import foundation.fibered-maps open import foundation.fibers-of-maps open import foundation.function-extensionality open import foundation.function-types open import foundation.functoriality-dependent-pair-types +open import foundation.higher-homotopies-morphisms-arrows open import foundation.homotopies +open import foundation.homotopies-morphisms-arrows open import foundation.identity-types +open import foundation.morphisms-arrows open import foundation.postcomposition-functions open import foundation.precomposition-functions open import foundation.pullbacks +open import foundation.retractions +open import foundation.sections +open import foundation.transport-along-identifications open import foundation.type-arithmetic-dependent-pair-types open import foundation.universal-property-pullbacks open import foundation.universe-levels open import foundation.whiskering-homotopies-composition - -open import orthogonal-factorization-systems.lifting-squares ``` ## Idea -The **pullback-hom** or **pullback-power** of two maps `f : A → B` and +The {{#concept "pullback-hom" Agda=pullback-hom}} or {{#concept "pullback-power" Agda=pullback-hom}} of two maps `f : A → B` and `g : X → Y`, is the [gap map](foundation.pullbacks.md) of the [commuting square](foundation-core.commuting-squares-of-maps.md): @@ -47,10 +54,38 @@ The **pullback-hom** or **pullback-power** of two maps `f : A → B` and - ∘ f ``` -The pullback of `- ∘ f` and `g ∘ -` can be understood as the type of +More explicitly, the pullback of `- ∘ f` and `g ∘ -` is the type of [morphisms of arrows](foundation.morphisms-arrows.md) from `f` to `g`, while the domain of the pullback-hom is the type `B → X` of diagonal fillers for morphisms -of arrows from `f` to `g`. The pullback-hom is therefore closely related to +of arrows from `f` to `g`. The pullback-hom can therefore be described as a map + +```text + pullback-hom f g : (B → X) → hom-arrow f g +``` + +This map takes a map `j : B → X` as in the diagram + +```text + A X + | ∧ | + f | j/ | g + ∨ / ∨ + B Y +``` + +to the [morphism of arrows](foundation.morphisms-arrows.md) from `f` to `g` as in the diagram + +```text + j ∘ f + A ----------> X + | | + f | refl-htpy | g + ∨ ∨ + B ----------> Y. + g ∘ j +``` + +The [fibers](foundation-core.fibers-of-maps.md) of the pullback-hom are [lifting squares](orthogonal-factorization-systems.lifting-squares.md). The pullback-hom is therefore a fundamental operation in the study of [lifting conditions](orthogonal-factorization-systems.mere-lifting-properties.md) and [orthogonality conditions](orthogonal-factorization-systems.orthogonal-maps.md): @@ -73,175 +108,305 @@ pushout-product: ⟨f □ g , h⟩ = ⟨f , ⟨g , h⟩⟩. ``` +## Idea + ## Definitions -### The codomain of the pullback-hom +### The pullback-hom ```agda -type-standard-pullback-hom : - {l1 l2 l3 l4 : Level} - {A : UU l1} {B : UU l2} {X : UU l3} {Y : UU l4} - (f : A → B) (g : X → Y) → - UU (l1 ⊔ l2 ⊔ l3 ⊔ l4) -type-standard-pullback-hom {A = A} {Y = Y} f g = - standard-pullback (precomp f Y) (postcomp A g) +module _ + {l1 l2 l3 l4 : Level} {A : UU l1} {X : UU l2} {B : UU l3} {Y : UU l4} + (f : A → B) (g : X → Y) + where + + map-domain-pullback-hom : (B → X) → A → X + map-domain-pullback-hom j = j ∘ f + + map-codomain-pullback-hom : (B → X) → B → Y + map-codomain-pullback-hom j = g ∘ j + + coh-pullback-hom : + (j : B → X) → + coherence-hom-arrow f g + ( map-domain-pullback-hom j) + ( map-codomain-pullback-hom j) + coh-pullback-hom j = refl-htpy + + pullback-hom : (B → X) → hom-arrow f g + pr1 (pullback-hom j) = map-domain-pullback-hom j + pr1 (pr2 (pullback-hom j)) = map-codomain-pullback-hom j + pr2 (pr2 (pullback-hom j)) = coh-pullback-hom j + + infix 30 _⋔_ + _⋔_ = pullback-hom ``` -#### The standard pullback-hom type is equivalent to the type of fibered maps +The symbol `⋔` is the [pitchfork](https://codepoints.net/U+22D4) (agda-input: +`\pitchfork`). -**Proof:** The equivalence is a single application of -[function extensionality](foundation.function-extensionality.md). +### The cone structure on the codomain of the pullback-hom ```agda module _ - {l1 l2 l3 l4 : Level} - {A : UU l1} {B : UU l2} {X : UU l3} {Y : UU l4} + {l1 l2 l3 l4 : Level} {A : UU l1} {X : UU l2} {B : UU l3} {Y : UU l4} (f : A → B) (g : X → Y) where - equiv-fibered-map-type-standard-pullback-hom : - type-standard-pullback-hom f g ≃ fibered-map f g - equiv-fibered-map-type-standard-pullback-hom = - equiv-tot (λ _ → equiv-tot (λ _ → equiv-funext)) - - equiv-type-standard-pullback-hom-fibered-map : - fibered-map f g ≃ type-standard-pullback-hom f g - equiv-type-standard-pullback-hom-fibered-map = - inv-equiv equiv-fibered-map-type-standard-pullback-hom - - map-fibered-map-type-standard-pullback-hom : - type-standard-pullback-hom f g → fibered-map f g - map-fibered-map-type-standard-pullback-hom = - map-equiv equiv-fibered-map-type-standard-pullback-hom - - map-type-standard-pullback-hom-fibered-map : - fibered-map f g → type-standard-pullback-hom f g - map-type-standard-pullback-hom-fibered-map = - map-equiv equiv-type-standard-pullback-hom-fibered-map -``` + left-projection-pullback-hom : hom-arrow f g → B → Y + left-projection-pullback-hom = map-codomain-hom-arrow f g -Below are basic definitions related to the pullback property of the type of -fibered maps. + right-projection-pullback-hom : hom-arrow f g → A → X + right-projection-pullback-hom = map-domain-hom-arrow f g -```agda - cone-standard-pullback-hom : - cone (precomp f Y) (postcomp A g) (type-standard-pullback-hom f g) - cone-standard-pullback-hom = - cone-standard-pullback (precomp f Y) (postcomp A g) - - cone-pullback-hom : - cone (precomp f Y) (postcomp A g) (fibered-map f g) - cone-pullback-hom = - cone-map - ( precomp f Y) + coherence-square-cone-pullback-hom : + coherence-square-maps + ( right-projection-pullback-hom) + ( left-projection-pullback-hom) ( postcomp A g) - ( cone-standard-pullback (precomp f Y) (postcomp A g)) - ( map-type-standard-pullback-hom-fibered-map) - - gap-standard-pullback-hom : - {l : Level} {C : UU l} → - cone (precomp f Y) (postcomp A g) C → C → type-standard-pullback-hom f g - gap-standard-pullback-hom = gap (precomp f Y) (postcomp A g) - - gap-pullback-hom : - {l : Level} {C : UU l} → - cone (precomp f Y) (postcomp A g) C → C → fibered-map f g - gap-pullback-hom c x = - map-fibered-map-type-standard-pullback-hom (gap-standard-pullback-hom c x) - - is-pullback-fibered-map : - is-pullback (precomp f Y) (postcomp A g) (cone-pullback-hom) - is-pullback-fibered-map = - is-equiv-map-equiv equiv-type-standard-pullback-hom-fibered-map - - universal-property-pullback-fibered-map : - universal-property-pullback (precomp f Y) (postcomp A g) (cone-pullback-hom) - universal-property-pullback-fibered-map = - universal-property-pullback-is-pullback ( precomp f Y) - ( postcomp A g) - ( cone-pullback-hom) - ( is-pullback-fibered-map) + coherence-square-cone-pullback-hom h = eq-htpy (coh-hom-arrow f g h) + + cone-pullback-hom : cone (precomp f Y) (postcomp A g) (hom-arrow f g) + pr1 cone-pullback-hom = left-projection-pullback-hom + pr1 (pr2 cone-pullback-hom) = right-projection-pullback-hom + pr2 (pr2 cone-pullback-hom) = coherence-square-cone-pullback-hom ``` -### The pullback-hom map +### The standard pullback of the defining cospan of the pullback-hom + +```agda +module _ + {l1 l2 l3 l4 : Level} {A : UU l1} {B : UU l2} {X : UU l3} {Y : UU l4} + (f : A → B) (g : X → Y) + where + + type-standard-pullback-hom : UU (l1 ⊔ l2 ⊔ l3 ⊔ l4) + type-standard-pullback-hom = + standard-pullback (precomp f Y) (postcomp A g) -The pullback-hom `f ⋔ g` is the map `(B → X) → fibered-map f g`, that takes a -diagonal map `j` from the codomain of `f` to the domain of `g` to the fibered -map + module _ + (h : type-standard-pullback-hom) + where -```text - j ∘ f - A --------> X - | | - f | refl-htpy | g - v v - B --------> Y. - g ∘ j + map-domain-standard-pullback-hom : A → X + map-domain-standard-pullback-hom = pr1 (pr2 h) + + map-codomain-standard-pullback-hom : B → Y + map-codomain-standard-pullback-hom = pr1 h + + eq-coh-standard-pullback-hom : + precomp f Y map-codomain-standard-pullback-hom = + postcomp A g map-domain-standard-pullback-hom + eq-coh-standard-pullback-hom = pr2 (pr2 h) + + coh-standard-pullback-hom : + precomp f Y map-codomain-standard-pullback-hom ~ + postcomp A g map-domain-standard-pullback-hom + coh-standard-pullback-hom = htpy-eq eq-coh-standard-pullback-hom ``` +### The equivalence of the codomain of the pullback-hom with the standard pullback + ```agda module _ - {l1 l2 l3 l4 : Level} {A : UU l1} {B : UU l2} {X : UU l3} {Y : UU l4} + {l1 l2 l3 l4 : Level} + {A : UU l1} {B : UU l2} {X : UU l3} {Y : UU l4} (f : A → B) (g : X → Y) where - cone-pullback-hom' : cone (precomp f Y) (postcomp A g) (B → X) - pr1 cone-pullback-hom' = postcomp B g - pr1 (pr2 cone-pullback-hom') = precomp f X - pr2 (pr2 cone-pullback-hom') = refl-htpy + map-compute-pullback-hom : + hom-arrow f g → type-standard-pullback-hom f g + pr1 (map-compute-pullback-hom h) = + map-codomain-hom-arrow f g h + pr1 (pr2 (map-compute-pullback-hom h)) = + map-domain-hom-arrow f g h + pr2 (pr2 (map-compute-pullback-hom h)) = + eq-htpy (coh-hom-arrow f g h) + + map-inv-compute-pullback-hom : + type-standard-pullback-hom f g → hom-arrow f g + pr1 (map-inv-compute-pullback-hom h) = + map-domain-standard-pullback-hom f g h + pr1 (pr2 (map-inv-compute-pullback-hom h)) = + map-codomain-standard-pullback-hom f g h + pr2 (pr2 (map-inv-compute-pullback-hom h)) = + coh-standard-pullback-hom f g h + + is-section-map-inv-compute-pullback-hom : + is-section map-compute-pullback-hom map-inv-compute-pullback-hom + is-section-map-inv-compute-pullback-hom h = + eq-pair-Σ refl + ( eq-pair-Σ refl + ( is-retraction-eq-htpy (eq-coh-standard-pullback-hom f g h))) + + is-retraction-map-inv-compute-pullback-hom : + is-retraction map-compute-pullback-hom map-inv-compute-pullback-hom + is-retraction-map-inv-compute-pullback-hom h = + eq-pair-Σ refl + ( eq-pair-Σ refl (is-section-eq-htpy (coh-hom-arrow f g h))) + + abstract + is-equiv-map-compute-pullback-hom : + is-equiv map-compute-pullback-hom + is-equiv-map-compute-pullback-hom = + is-equiv-is-invertible + ( map-inv-compute-pullback-hom) + ( is-section-map-inv-compute-pullback-hom) + ( is-retraction-map-inv-compute-pullback-hom) + + abstract + is-equiv-map-inv-compute-pullback-hom : + is-equiv map-inv-compute-pullback-hom + is-equiv-map-inv-compute-pullback-hom = + is-equiv-is-invertible + ( map-compute-pullback-hom) + ( is-retraction-map-inv-compute-pullback-hom) + ( is-section-map-inv-compute-pullback-hom) + + compute-pullback-hom : hom-arrow f g ≃ type-standard-pullback-hom f g + pr1 compute-pullback-hom = map-compute-pullback-hom + pr2 compute-pullback-hom = is-equiv-map-compute-pullback-hom + + inv-compute-pullback-hom : type-standard-pullback-hom f g ≃ hom-arrow f g + pr1 inv-compute-pullback-hom = map-inv-compute-pullback-hom + pr2 inv-compute-pullback-hom = is-equiv-map-inv-compute-pullback-hom +``` - pullback-hom : (B → X) → fibered-map f g - pullback-hom = gap-pullback-hom f g cone-pullback-hom' +### The commuting triangle of the pullback-hom and the gap map - infix 30 _⋔_ - _⋔_ = pullback-hom +We construct the homotopy witnessing that the triangle of maps + +```text + (B → X) + / \ + pullback-hom / \ gap + ∨ ∨ + hom-arrow f g -----> type-standard-pullback-hom f g ``` -The symbol `⋔` is the [pitchfork](https://codepoints.net/U+22D4) (agda-input: -`\pitchfork`). +commutes. The bottom map in this triangle is the underlying map of the equivalence `hom-arrow f g ≃ type-stanard-pullback-hom f g` constructed above. + +```agda +module _ + {l1 l2 l3 l4 : Level} + {A : UU l1} {B : UU l2} {X : UU l3} {Y : UU l4} + (f : A → B) (g : X → Y) + where + + gap-standard-pullback-hom : (B → X) → type-standard-pullback-hom f g + gap-standard-pullback-hom = + gap (precomp f Y) (postcomp A g) (postcomp B g , precomp f X , refl-htpy) + + triangle-pullback-hom : + coherence-triangle-maps' + ( gap-standard-pullback-hom) + ( map-compute-pullback-hom f g) + ( pullback-hom f g) + triangle-pullback-hom j = + eq-pair-Σ refl (eq-pair-Σ refl (is-retraction-eq-htpy refl)) +``` + +### The action on homotopies of the `pullback-hom` + +```agda +module _ + {l1 l2 l3 l4 : Level} {A : UU l1} {X : UU l2} {B : UU l3} {Y : UU l4} + (f : A → B) (g : X → Y) {j k : B → X} (H : j ~ k) + where + + htpy-domain-htpy-hom-arrow-htpy : + map-domain-pullback-hom f g j ~ map-domain-pullback-hom f g k + htpy-domain-htpy-hom-arrow-htpy = H ·r f + + htpy-codomain-htpy-hom-arrow-htpy : + map-codomain-pullback-hom f g j ~ map-codomain-pullback-hom f g k + htpy-codomain-htpy-hom-arrow-htpy = g ·l H + + coh-htpy-hom-arrow-htpy : + coherence-htpy-hom-arrow f g + ( pullback-hom f g j) + ( pullback-hom f g k) + ( htpy-domain-htpy-hom-arrow-htpy) + ( htpy-codomain-htpy-hom-arrow-htpy) + coh-htpy-hom-arrow-htpy = inv-htpy right-unit-htpy + + htpy-hom-arrow-htpy : + htpy-hom-arrow f g (pullback-hom f g j) (pullback-hom f g k) + pr1 htpy-hom-arrow-htpy = htpy-domain-htpy-hom-arrow-htpy + pr1 (pr2 htpy-hom-arrow-htpy) = htpy-codomain-htpy-hom-arrow-htpy + pr2 (pr2 htpy-hom-arrow-htpy) = coh-htpy-hom-arrow-htpy +``` ## Properties -### The fibers of the pullback-hom +### The cone of the pullback-hom is a pullback ```agda module _ - {l1 l2 l3 l4 : Level} {A : UU l1} {B : UU l2} {X : UU l3} {Y : UU l4} - (f : A → B) (g : X → Y) (h : fibered-map f g) + {l1 l2 l3 l4 : Level} + {A : UU l1} {B : UU l2} {X : UU l3} {Y : UU l4} + (f : A → B) (g : X → Y) + where + + is-pullback-cone-pullback-hom : + is-pullback (precomp f Y) (postcomp A g) (cone-pullback-hom f g) + is-pullback-cone-pullback-hom = + is-equiv-map-compute-pullback-hom f g + + universal-property-pullback-cone-pullback-hom : + universal-property-pullback + ( precomp f Y) + ( postcomp A g) + ( cone-pullback-hom f g) + universal-property-pullback-cone-pullback-hom = + universal-property-pullback-is-pullback + ( precomp f Y) + ( postcomp A g) + ( cone-pullback-hom f g) + ( is-pullback-cone-pullback-hom) +``` + +### The action on homotopies at `refl-htpy` is the reflexivity homotopy of morphisms of arrows + +```agda +module _ + {l1 l2 l3 l4 : Level} {A : UU l1} {X : UU l2} {B : UU l3} {Y : UU l4} + (f : A → B) (g : X → Y) {j : B → X} where - inv-compute-fiber-pullback-hom : - fiber (pullback-hom f g) h ≃ lifting-square-fibered-map f g h - inv-compute-fiber-pullback-hom = - equiv-tot - ( λ j → - ( equiv-Σ _ - ( equiv-inv-htpy (j ∘ f) (map-total-fibered-map f g h)) - ( λ E → - equiv-Σ _ - ( equiv-inv-htpy (g ∘ j) (map-base-fibered-map f g h)) - ( λ L → - ( equiv-concat-htpy' - ( inv-htpy L ·r f) - ( λ x → - ap - ( is-map-over-map-total-fibered-map f g h x ∙_) - ( inv-htpy (left-whisker-inv-htpy g E) x))) ∘e - ( equiv-right-transpose-htpy-concat - ( inv-htpy (L ·r f)) - ( g ·l E) - ( is-map-over-map-total-fibered-map f g h)) ∘e - ( equiv-left-transpose-htpy-concat' - ( g ·l E) - ( L ·r f) - ( is-map-over-map-total-fibered-map f g h))))) ∘e - ( equiv-left-swap-Σ) ∘e - ( extensionality-fibered-map f g (pullback-hom f g j) h)) - - compute-fiber-pullback-hom : - lifting-square-fibered-map f g h ≃ fiber (pullback-hom f g) h - compute-fiber-pullback-hom = inv-equiv inv-compute-fiber-pullback-hom + htpy-domain-compute-refl-htpy-hom-arrow-htpy : + htpy-domain-htpy-hom-arrow-htpy f g (refl-htpy' j) ~ + htpy-domain-refl-htpy-hom-arrow f g (pullback-hom f g j) + htpy-domain-compute-refl-htpy-hom-arrow-htpy = refl-htpy + + htpy-codomain-compute-refl-htpy-hom-arrow-htpy : + htpy-codomain-htpy-hom-arrow-htpy f g (refl-htpy' j) ~ + htpy-codomain-refl-htpy-hom-arrow f g (pullback-hom f g j) + htpy-codomain-compute-refl-htpy-hom-arrow-htpy = refl-htpy + + coh-compute-refl-htpy-hom-arrow-htpy : + coherence-htpy-htpy-hom-arrow f g + ( pullback-hom f g j) + ( pullback-hom f g j) + ( htpy-hom-arrow-htpy f g refl-htpy) + ( refl-htpy-hom-arrow f g (pullback-hom f g j)) + ( htpy-domain-compute-refl-htpy-hom-arrow-htpy) + ( htpy-codomain-compute-refl-htpy-hom-arrow-htpy) + coh-compute-refl-htpy-hom-arrow-htpy = refl-htpy + + compute-refl-htpy-hom-arrow-htpy : + htpy-htpy-hom-arrow f g + ( pullback-hom f g j) + ( pullback-hom f g j) + ( htpy-hom-arrow-htpy f g refl-htpy) + ( refl-htpy-hom-arrow f g (pullback-hom f g j)) + pr1 compute-refl-htpy-hom-arrow-htpy = + htpy-domain-compute-refl-htpy-hom-arrow-htpy + pr1 (pr2 compute-refl-htpy-hom-arrow-htpy) = + htpy-codomain-compute-refl-htpy-hom-arrow-htpy + pr2 (pr2 compute-refl-htpy-hom-arrow-htpy) = + coh-compute-refl-htpy-hom-arrow-htpy ``` ### Computing the pullback-hom of a composite @@ -253,15 +418,32 @@ module _ (f : A → B) (g : X → Y) (h : Y → S) where - map-fibered-map-comp-right-fibered-map : - fibered-map f g → fibered-map f (h ∘ g) - pr1 (map-fibered-map-comp-right-fibered-map (j , i , H)) = h ∘ j - pr1 (pr2 (map-fibered-map-comp-right-fibered-map (j , i , H))) = i - pr2 (pr2 (map-fibered-map-comp-right-fibered-map (j , i , H))) = h ·l H + map-domain-left-whisker-hom-arrow : hom-arrow f g → A → X + map-domain-left-whisker-hom-arrow α = map-domain-hom-arrow f g α + + map-codomain-left-whisker-hom-arrow : hom-arrow f g → B → S + map-codomain-left-whisker-hom-arrow α = h ∘ map-codomain-hom-arrow f g α + + coh-left-whisker-hom-arrow : + (α : hom-arrow f g) → + coherence-square-maps + ( map-domain-left-whisker-hom-arrow α) + ( f) + ( h ∘ g) + ( map-codomain-left-whisker-hom-arrow α) + coh-left-whisker-hom-arrow α = h ·l (coh-hom-arrow f g α) + + left-whisker-hom-arrow : + hom-arrow f g → hom-arrow f (h ∘ g) + pr1 (left-whisker-hom-arrow α) = map-domain-left-whisker-hom-arrow α + pr1 (pr2 (left-whisker-hom-arrow α)) = map-codomain-left-whisker-hom-arrow α + pr2 (pr2 (left-whisker-hom-arrow α)) = coh-left-whisker-hom-arrow α compute-pullback-hom-comp-right : - pullback-hom f (h ∘ g) ~ - map-fibered-map-comp-right-fibered-map ∘ pullback-hom f g + coherence-triangle-maps + ( pullback-hom f (h ∘ g)) + ( left-whisker-hom-arrow) + ( pullback-hom f g) compute-pullback-hom-comp-right = refl-htpy module _ @@ -270,15 +452,31 @@ module _ (f : A → B) (g : X → Y) (h : S → A) where - map-fibered-map-comp-left-fibered-map : - fibered-map f g → fibered-map (f ∘ h) g - pr1 (map-fibered-map-comp-left-fibered-map (j , i , H)) = j - pr1 (pr2 (map-fibered-map-comp-left-fibered-map (j , i , H))) = i ∘ h - pr2 (pr2 (map-fibered-map-comp-left-fibered-map (j , i , H))) = H ·r h - + map-domain-right-whisker-hom-arrow : hom-arrow f g → S → X + map-domain-right-whisker-hom-arrow α = map-domain-hom-arrow f g α ∘ h + + map-codomain-right-whisker-hom-arrow : hom-arrow f g → B → Y + map-codomain-right-whisker-hom-arrow α = map-codomain-hom-arrow f g α + + coh-right-whisker-hom-arrow : + (α : hom-arrow f g) → + coherence-hom-arrow (f ∘ h) g + ( map-domain-right-whisker-hom-arrow α) + ( map-codomain-right-whisker-hom-arrow α) + coh-right-whisker-hom-arrow α = + coh-hom-arrow f g α ·r h + + right-whisker-hom-arrow : + hom-arrow f g → hom-arrow (f ∘ h) g + pr1 (right-whisker-hom-arrow α) = map-domain-right-whisker-hom-arrow α + pr1 (pr2 (right-whisker-hom-arrow α)) = map-codomain-right-whisker-hom-arrow α + pr2 (pr2 (right-whisker-hom-arrow α)) = coh-right-whisker-hom-arrow α + compute-pullback-hom-comp-left : - pullback-hom (f ∘ h) g ~ - map-fibered-map-comp-left-fibered-map ∘ pullback-hom f g + coherence-triangle-maps + ( pullback-hom (f ∘ h) g) + ( right-whisker-hom-arrow) + ( pullback-hom f g) compute-pullback-hom-comp-left = refl-htpy ``` From 1a983aff22a1b20e625dbbebe4c63fc4dcdfbaf4 Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Sun, 4 Feb 2024 20:58:47 +0100 Subject: [PATCH 101/150] implementing changes in orthogonal maps --- .../factorizations-of-maps.lagda.md | 1 + .../lifting-squares.lagda.md | 66 +++----- ...rphisms-arrows-from-diagonal-maps.lagda.md | 151 ------------------ .../orthogonal-maps.lagda.md | 105 ++++++------ .../pullback-hom.lagda.md | 76 ++++++--- 5 files changed, 131 insertions(+), 268 deletions(-) delete mode 100644 src/orthogonal-factorization-systems/morphisms-arrows-from-diagonal-maps.lagda.md diff --git a/src/orthogonal-factorization-systems/factorizations-of-maps.lagda.md b/src/orthogonal-factorization-systems/factorizations-of-maps.lagda.md index 94c813b263..860b38a002 100644 --- a/src/orthogonal-factorization-systems/factorizations-of-maps.lagda.md +++ b/src/orthogonal-factorization-systems/factorizations-of-maps.lagda.md @@ -12,6 +12,7 @@ open import foundation.equivalences open import foundation.function-types open import foundation.fundamental-theorem-of-identity-types open import foundation.homotopies +open import foundation.homotopy-algebra open import foundation.homotopy-induction open import foundation.identity-types open import foundation.retracts-of-types diff --git a/src/orthogonal-factorization-systems/lifting-squares.lagda.md b/src/orthogonal-factorization-systems/lifting-squares.lagda.md index 769f7e7123..4e3a11a9a6 100644 --- a/src/orthogonal-factorization-systems/lifting-squares.lagda.md +++ b/src/orthogonal-factorization-systems/lifting-squares.lagda.md @@ -15,8 +15,9 @@ open import foundation.commuting-triangles-of-homotopies open import foundation.commuting-triangles-of-identifications open import foundation.dependent-pair-types open import foundation.equivalences -open import foundation.fibered-maps +open import foundation.fibers-of-maps open import foundation.function-types +open import foundation.functoriality-dependent-pair-types open import foundation.fundamental-theorem-of-identity-types open import foundation.higher-homotopies-morphisms-arrows open import foundation.homotopies @@ -27,6 +28,7 @@ open import foundation.morphisms-arrows open import foundation.path-algebra open import foundation.structure-identity-principle open import foundation.torsorial-type-families +open import foundation.type-arithmetic-dependent-pair-types open import foundation.universe-levels open import foundation.whiskering-homotopies-composition open import foundation.whiskering-identifications-concatenation @@ -266,6 +268,27 @@ module _ ## Properties +### The types of lifting squares are equivalent to the fibers of the pullback-hom + +```agda +module _ + {l1 l2 l3 l4 : Level} {A : UU l1} {B : UU l2} {X : UU l3} {Y : UU l4} + (f : A → B) (g : X → Y) (h : hom-arrow f g) + where + + inv-compute-fiber-pullback-hom : + fiber (pullback-hom f g) h ≃ lifting-square f g h + inv-compute-fiber-pullback-hom = + equiv-tot + ( λ j → + extensionality-hom-arrow f g _ _ ∘e + equiv-inv (pullback-hom f g j) h) + + compute-fiber-pullback-hom : + lifting-square f g h ≃ fiber (pullback-hom f g) h + compute-fiber-pullback-hom = inv-equiv inv-compute-fiber-pullback-hom +``` + ### Characterization of identifications of lifting squares ```agda @@ -304,44 +327,3 @@ module _ (k : lifting-square f g α) → htpy-lifting-square f g α l k → l = k eq-htpy-lifting-square k = map-inv-equiv (extensionality-lifting-square k) ``` - -### The fibers of the pullback-hom-old - -```text -module _ - {l1 l2 l3 l4 : Level} {A : UU l1} {B : UU l2} {X : UU l3} {Y : UU l4} - (f : A → B) (g : X → Y) (h : hom-arrow f g) - where - - inv-compute-fiber-pullback-hom-old : - fiber (pullback-hom-old f g) h ≃ lifting-square f g h - inv-compute-fiber-pullback-hom-old = - equiv-tot - ( λ j → - ( equiv-Σ _ - ( equiv-inv-htpy (j ∘ f) (map-domain-hom-arrow f g h)) - ( λ E → - equiv-Σ _ - ( equiv-inv-htpy (g ∘ j) (map-codomain-hom-arrow f g h)) - ( λ L → - ( equiv-concat-htpy' - ( inv-htpy L ·r f) - ( λ x → - ap - ( coh-hom-arrow f g h x ∙_) - ( inv-htpy (left-whisker-inv-htpy g E) x))) ∘e - ( equiv-right-transpose-htpy-concat - ( inv-htpy (L ·r f)) - ( g ·l E) - ( coh-hom-arrow f g h)) ∘e - ( equiv-left-transpose-htpy-concat' - ( g ·l E) - ( L ·r f) - ( coh-hom-arrow f g h))))) ∘e - ( equiv-left-swap-Σ) ∘e - ( extensionality-hom-arrow f g (pullback-hom-old f g j) h)) - - compute-fiber-pullback-hom-old : - lifting-square f g h ≃ fiber (pullback-hom-old f g) h - compute-fiber-pullback-hom-old = inv-equiv inv-compute-fiber-pullback-hom-old -``` diff --git a/src/orthogonal-factorization-systems/morphisms-arrows-from-diagonal-maps.lagda.md b/src/orthogonal-factorization-systems/morphisms-arrows-from-diagonal-maps.lagda.md deleted file mode 100644 index 9878925e3a..0000000000 --- a/src/orthogonal-factorization-systems/morphisms-arrows-from-diagonal-maps.lagda.md +++ /dev/null @@ -1,151 +0,0 @@ -# Morphisms of arrows obtained from diagonal maps - -```agda -module orthogonal-factorization-systems.morphisms-arrows-from-diagonal-maps where -``` - -
Imports - -```agda -open import foundation.dependent-pair-types -open import foundation.higher-homotopies-morphisms-arrows -open import foundation.homotopies-morphisms-arrows -open import foundation.morphisms-arrows -open import foundation.universe-levels -open import foundation.whiskering-homotopies-composition - -open import foundation-core.function-types -open import foundation-core.homotopies -``` - -
- -## Idea - -Consider a pair of maps `f : A → B` and `g : X → Y`. Then there is an operation `hom-arrow-map` that takes any `j : B → X` as in the diagram - -```text - A X - | ∧ | - f | j/ | g - ∨ / ∨ - B Y -``` - -to a [morphism of arrows](foundation.morphisms-arrows.md) from `f` to `g` as in the diagram - -```text - j ∘ f - A ----------> X - | | - f | refl-htpy | g - ∨ ∨ - B ----------> Y. - g ∘ j -``` - -This operation is studied in [Lifting squares](orthogonal-factorization-systems.lifting-squares.md). - -## Definitions - -### Morphisms of arrows obtained from diagonal maps - -```agda -module _ - {l1 l2 l3 l4 : Level} {A : UU l1} {X : UU l2} {B : UU l3} {Y : UU l4} - (f : A → B) (g : X → Y) - where - - map-domain-hom-arrow-map : (B → X) → A → X - map-domain-hom-arrow-map j = j ∘ f - - map-codomain-hom-arrow-map : (B → X) → B → Y - map-codomain-hom-arrow-map j = g ∘ j - - coh-hom-arrow-map : - (j : B → X) → - coherence-hom-arrow f g - ( map-domain-hom-arrow-map j) - ( map-codomain-hom-arrow-map j) - coh-hom-arrow-map j = refl-htpy - - hom-arrow-map : (B → X) → hom-arrow f g - pr1 (hom-arrow-map j) = map-domain-hom-arrow-map j - pr1 (pr2 (hom-arrow-map j)) = map-codomain-hom-arrow-map j - pr2 (pr2 (hom-arrow-map j)) = coh-hom-arrow-map j -``` - -### The action on homotopies of `hom-arrow-map` - -```agda -module _ - {l1 l2 l3 l4 : Level} {A : UU l1} {X : UU l2} {B : UU l3} {Y : UU l4} - (f : A → B) (g : X → Y) {j k : B → X} (H : j ~ k) - where - - htpy-domain-htpy-hom-arrow-htpy : - map-domain-hom-arrow-map f g j ~ map-domain-hom-arrow-map f g k - htpy-domain-htpy-hom-arrow-htpy = H ·r f - - htpy-codomain-htpy-hom-arrow-htpy : - map-codomain-hom-arrow-map f g j ~ map-codomain-hom-arrow-map f g k - htpy-codomain-htpy-hom-arrow-htpy = g ·l H - - coh-htpy-hom-arrow-htpy : - coherence-htpy-hom-arrow f g - ( hom-arrow-map f g j) - ( hom-arrow-map f g k) - ( htpy-domain-htpy-hom-arrow-htpy) - ( htpy-codomain-htpy-hom-arrow-htpy) - coh-htpy-hom-arrow-htpy = inv-htpy right-unit-htpy - - htpy-hom-arrow-htpy : - htpy-hom-arrow f g (hom-arrow-map f g j) (hom-arrow-map f g k) - pr1 htpy-hom-arrow-htpy = htpy-domain-htpy-hom-arrow-htpy - pr1 (pr2 htpy-hom-arrow-htpy) = htpy-codomain-htpy-hom-arrow-htpy - pr2 (pr2 htpy-hom-arrow-htpy) = coh-htpy-hom-arrow-htpy -``` - -## Properties - -### The action on homotopies at `refl-htpy` is the reflexivity homotopy of morphisms of arrows - -```agda -module _ - {l1 l2 l3 l4 : Level} {A : UU l1} {X : UU l2} {B : UU l3} {Y : UU l4} - (f : A → B) (g : X → Y) {j : B → X} - where - - htpy-domain-compute-refl-htpy-hom-arrow-htpy : - htpy-domain-htpy-hom-arrow-htpy f g (refl-htpy' j) ~ - htpy-domain-refl-htpy-hom-arrow f g (hom-arrow-map f g j) - htpy-domain-compute-refl-htpy-hom-arrow-htpy = refl-htpy - - htpy-codomain-compute-refl-htpy-hom-arrow-htpy : - htpy-codomain-htpy-hom-arrow-htpy f g (refl-htpy' j) ~ - htpy-codomain-refl-htpy-hom-arrow f g (hom-arrow-map f g j) - htpy-codomain-compute-refl-htpy-hom-arrow-htpy = refl-htpy - - coh-compute-refl-htpy-hom-arrow-htpy : - coherence-htpy-htpy-hom-arrow f g - ( hom-arrow-map f g j) - ( hom-arrow-map f g j) - ( htpy-hom-arrow-htpy f g refl-htpy) - ( refl-htpy-hom-arrow f g (hom-arrow-map f g j)) - ( htpy-domain-compute-refl-htpy-hom-arrow-htpy) - ( htpy-codomain-compute-refl-htpy-hom-arrow-htpy) - coh-compute-refl-htpy-hom-arrow-htpy = refl-htpy - - compute-refl-htpy-hom-arrow-htpy : - htpy-htpy-hom-arrow f g - ( hom-arrow-map f g j) - ( hom-arrow-map f g j) - ( htpy-hom-arrow-htpy f g refl-htpy) - ( refl-htpy-hom-arrow f g (hom-arrow-map f g j)) - pr1 compute-refl-htpy-hom-arrow-htpy = - htpy-domain-compute-refl-htpy-hom-arrow-htpy - pr1 (pr2 compute-refl-htpy-hom-arrow-htpy) = - htpy-codomain-compute-refl-htpy-hom-arrow-htpy - pr2 (pr2 compute-refl-htpy-hom-arrow-htpy) = - coh-compute-refl-htpy-hom-arrow-htpy -``` diff --git a/src/orthogonal-factorization-systems/orthogonal-maps.lagda.md b/src/orthogonal-factorization-systems/orthogonal-maps.lagda.md index ed7800d987..3ba2e1e337 100644 --- a/src/orthogonal-factorization-systems/orthogonal-maps.lagda.md +++ b/src/orthogonal-factorization-systems/orthogonal-maps.lagda.md @@ -24,6 +24,7 @@ open import foundation.functoriality-cartesian-product-types open import foundation.functoriality-coproduct-types open import foundation.functoriality-dependent-pair-types open import foundation.homotopies +open import foundation.morphisms-arrows open import foundation.postcomposition-functions open import foundation.precomposition-functions open import foundation.propositions @@ -149,19 +150,19 @@ module _ is-orthogonal-pullback-condition : UU (l1 ⊔ l2 ⊔ l3 ⊔ l4) is-orthogonal-pullback-condition = - is-pullback (precomp f Y) (postcomp A g) (cone-pullback-hom' f g) + is-pullback (precomp f Y) (postcomp A g) (cone-pullback-hom f g) is-orthogonal-pullback-condition-Prop : Prop (l1 ⊔ l2 ⊔ l3 ⊔ l4) is-orthogonal-pullback-condition-Prop = - is-pullback-Prop (precomp f Y) (postcomp A g) (cone-pullback-hom' f g) + is-pullback-Prop (precomp f Y) (postcomp A g) (cone-pullback-hom f g) is-prop-is-orthogonal-pullback-condition : is-prop is-orthogonal-pullback-condition is-prop-is-orthogonal-pullback-condition = - is-prop-is-pullback (precomp f Y) (postcomp A g) (cone-pullback-hom' f g) + is-prop-is-pullback (precomp f Y) (postcomp A g) (cone-pullback-hom f g) ``` -### The universal property of orthogonal maps +### The universal property of orthogonal pairs of maps The universal property of orthogonal maps is the universal property associated to the pullback condition, which, as opposed to the pullback condition itself, @@ -179,7 +180,7 @@ module _ universal-property-pullback ( precomp f Y) ( postcomp A g) - ( cone-pullback-hom' f g) + ( cone-pullback-hom f g) ``` ## Properties @@ -194,8 +195,8 @@ module _ unique-lifting-squares-is-orthogonal : is-orthogonal f g → - (h : fibered-map f g) → - is-contr (lifting-square-fibered-map f g h) + (h : hom-arrow f g) → + is-contr (lifting-square f g h) unique-lifting-squares-is-orthogonal H h = is-contr-equiv ( fiber (pullback-hom f g) h) @@ -203,13 +204,13 @@ module _ ( is-contr-map-is-equiv H h) is-orthogonal-unique-lifting-squares : - ( (h : fibered-map f g) → is-contr (lifting-square-fibered-map f g h)) → + ( (h : hom-arrow f g) → is-contr (lifting-square f g h)) → is-orthogonal f g is-orthogonal-unique-lifting-squares H = is-equiv-is-contr-map ( λ h → is-contr-equiv' - ( lifting-square-fibered-map f g h) + ( lifting-square f g h) ( compute-fiber-pullback-hom f g h) ( H h)) ``` @@ -224,20 +225,24 @@ module _ is-orthogonal-pullback-condition-is-orthogonal : is-orthogonal f g → is-orthogonal-pullback-condition f g - is-orthogonal-pullback-condition-is-orthogonal = - is-equiv-right-factor - ( map-fibered-map-type-standard-pullback-hom f g) - ( gap (precomp f Y) (postcomp A g) (cone-pullback-hom' f g)) - ( is-equiv-map-equiv (equiv-fibered-map-type-standard-pullback-hom f g)) + is-orthogonal-pullback-condition-is-orthogonal H = + is-equiv-left-map-triangle + ( gap-cone-pullback-hom f g) + ( map-compute-pullback-hom f g) + ( pullback-hom f g) + ( inv-htpy (triangle-pullback-hom f g)) + ( H) + ( is-equiv-map-compute-pullback-hom f g) is-orthogonal-is-orthogonal-pullback-condition : is-orthogonal-pullback-condition f g → is-orthogonal f g - is-orthogonal-is-orthogonal-pullback-condition H = - is-equiv-comp - ( map-fibered-map-type-standard-pullback-hom f g) - ( gap (precomp f Y) (postcomp A g) (cone-pullback-hom' f g)) - ( H) - ( is-equiv-map-equiv (equiv-fibered-map-type-standard-pullback-hom f g)) + is-orthogonal-is-orthogonal-pullback-condition = + is-equiv-top-map-triangle + ( gap-cone-pullback-hom f g) + ( map-compute-pullback-hom f g) + ( pullback-hom f g) + ( inv-htpy (triangle-pullback-hom f g)) + ( is-equiv-map-compute-pullback-hom f g) ``` ### Being orthogonal means satisfying the universal property of being orthogonal @@ -254,7 +259,7 @@ module _ universal-property-pullback-is-pullback ( precomp f Y) ( postcomp A g) - ( cone-pullback-hom' f g) + ( cone-pullback-hom f g) ( is-orthogonal-pullback-condition-is-orthogonal f g H) is-orthogonal-universal-property-orthogonal-maps : @@ -264,7 +269,7 @@ module _ ( is-pullback-universal-property-pullback ( precomp f Y) ( postcomp A g) - ( cone-pullback-hom' f g) + ( cone-pullback-hom f g) ( H)) ``` @@ -284,7 +289,7 @@ module _ is-pullback-htpy' ( htpy-precomp F Y) ( htpy-postcomp A G) - ( cone-pullback-hom' f g) + ( cone-pullback-hom f g) ( ( htpy-postcomp B G) , ( htpy-precomp F X) , ( ( commutative-htpy-postcomp-htpy-precomp F G) ∙h @@ -319,7 +324,7 @@ module _ is-pullback-is-equiv-horizontal-maps ( precomp f Y) ( postcomp A g) - ( cone-pullback-hom' f g) + ( cone-pullback-hom f g) ( is-equiv-precomp-is-equiv f is-equiv-f Y) ( is-equiv-precomp-is-equiv f is-equiv-f X) @@ -334,7 +339,7 @@ module _ is-pullback-is-equiv-vertical-maps ( precomp f Y) ( postcomp A g) - ( cone-pullback-hom' f g) + ( cone-pullback-hom f g) ( is-equiv-postcomp-is-equiv g is-equiv-g A) ( is-equiv-postcomp-is-equiv g is-equiv-g B) @@ -414,8 +419,8 @@ module _ ( precomp f Z) ( postcomp A h) ( postcomp A g) - ( cone-pullback-hom' f h) - ( cone-pullback-hom' f g) + ( cone-pullback-hom f h) + ( cone-pullback-hom f g) up-orthogonal-right-comp : universal-property-orthogonal-maps f h → @@ -426,8 +431,8 @@ module _ ( precomp f Z) ( postcomp A h) ( postcomp A g) - ( cone-pullback-hom' f h) - ( cone-pullback-hom' f g) + ( cone-pullback-hom f h) + ( cone-pullback-hom f g) is-orthogonal-right-comp : is-orthogonal f h → is-orthogonal f g → is-orthogonal f (h ∘ g) @@ -446,8 +451,8 @@ module _ ( precomp f Z) ( postcomp A h) ( postcomp A g) - ( cone-pullback-hom' f h) - ( cone-pullback-hom' f g) + ( cone-pullback-hom f h) + ( cone-pullback-hom f g) up-orthogonal-right-right-factor : universal-property-orthogonal-maps f h → @@ -458,8 +463,8 @@ module _ ( precomp f Z) ( postcomp A h) ( postcomp A g) - ( cone-pullback-hom' f h) - ( cone-pullback-hom' f g) + ( cone-pullback-hom f h) + ( cone-pullback-hom f g) is-orthogonal-right-right-factor : is-orthogonal f h → is-orthogonal f (h ∘ g) → is-orthogonal f g @@ -506,8 +511,8 @@ module _ ( precomp h Y) ( precomp f Y) ( postcomp A g) - ( cone-pullback-hom' f g) - ( cone-pullback-hom' h g) + ( cone-pullback-hom f g) + ( cone-pullback-hom h g) up-orthogonal-left-comp : universal-property-orthogonal-maps f g → @@ -518,8 +523,8 @@ module _ ( precomp h Y) ( precomp f Y) ( postcomp A g) - ( cone-pullback-hom' f g) - ( cone-pullback-hom' h g) + ( cone-pullback-hom f g) + ( cone-pullback-hom h g) is-orthogonal-left-comp : is-orthogonal f g → is-orthogonal h g → is-orthogonal (h ∘ f) g @@ -538,8 +543,8 @@ module _ ( precomp h Y) ( precomp f Y) ( postcomp A g) - ( cone-pullback-hom' f g) - ( cone-pullback-hom' h g) + ( cone-pullback-hom f g) + ( cone-pullback-hom h g) up-orthogonal-left-left-factor : universal-property-orthogonal-maps f g → @@ -550,8 +555,8 @@ module _ ( precomp h Y) ( precomp f Y) ( postcomp A g) - ( cone-pullback-hom' f g) - ( cone-pullback-hom' h g) + ( cone-pullback-hom f g) + ( cone-pullback-hom h g) is-orthogonal-left-left-factor : is-orthogonal f g → is-orthogonal (h ∘ f) g → is-orthogonal h g @@ -637,7 +642,7 @@ module _ ( is-pullback-Π ( λ i → precomp f (Y i)) ( λ i → postcomp A (g i)) - ( λ i → cone-pullback-hom' f (g i)) + ( λ i → cone-pullback-hom f (g i)) ( G)) is-orthogonal-right-Π : @@ -719,8 +724,8 @@ module _ ( postcomp A g) ( precomp f Y') ( postcomp A g') - ( cone-pullback-hom' f g) - ( cone-pullback-hom' f g') + ( cone-pullback-hom f g) + ( cone-pullback-hom f g') ( G) ( G')) @@ -812,7 +817,7 @@ module _ ( is-pullback-Π ( λ i → precomp (f i) Y) ( λ i → postcomp (A i) g) - ( λ i → cone-pullback-hom' (f i) g) + ( λ i → cone-pullback-hom (f i) g) ( F)) is-orthogonal-left-Σ : @@ -904,8 +909,8 @@ module _ ( postcomp A g) ( precomp f' Y) ( postcomp A' g) - ( cone-pullback-hom' f g) - ( cone-pullback-hom' f' g) + ( cone-pullback-hom f g) + ( cone-pullback-hom f' g) ( F) ( F')) @@ -1005,7 +1010,7 @@ module _ is-equiv-horizontal-map-is-pullback ( precomp f unit) ( postcomp A (terminal-map X)) - ( cone-pullback-hom' f (terminal-map X)) + ( cone-pullback-hom f (terminal-map X)) ( is-local-is-contr f unit is-contr-unit) is-local-is-orthogonal-terminal-map : @@ -1020,7 +1025,7 @@ module _ is-pullback-is-equiv-horizontal-maps ( precomp f unit) ( postcomp A (terminal-map X)) - ( cone-pullback-hom' f (terminal-map X)) + ( cone-pullback-hom f (terminal-map X)) ( is-local-is-contr f unit is-contr-unit) is-orthogonal-terminal-map-is-local : @@ -1044,7 +1049,7 @@ module _ is-pullback-is-equiv-horizontal-maps ( precomp f Y) ( postcomp A g) - ( cone-pullback-hom' f g) + ( cone-pullback-hom f g) is-orthogonal-is-local-domain-is-local-codomain : is-local f Y → is-local f X → is-orthogonal f g diff --git a/src/orthogonal-factorization-systems/pullback-hom.lagda.md b/src/orthogonal-factorization-systems/pullback-hom.lagda.md index 53516321ea..e760ae0a5a 100644 --- a/src/orthogonal-factorization-systems/pullback-hom.lagda.md +++ b/src/orthogonal-factorization-systems/pullback-hom.lagda.md @@ -114,6 +114,19 @@ pushout-product: ### The pullback-hom +The pullback-hom `f ⋔ g` is the map `(B → X) → hom-arrow f g`, that takes a +diagonal map `j` from the codomain of `f` to the domain of `g` to the morphism of arrows + +```text + j ∘ f + A ----------> X + | | + f | refl-htpy | g + ∨ ∨ + B ----------> Y. + g ∘ j +``` + ```agda module _ {l1 l2 l3 l4 : Level} {A : UU l1} {X : UU l2} {B : UU l3} {Y : UU l4} @@ -153,24 +166,24 @@ module _ (f : A → B) (g : X → Y) where - left-projection-pullback-hom : hom-arrow f g → B → Y - left-projection-pullback-hom = map-codomain-hom-arrow f g + left-projection-hom-arrow-pullback-hom : hom-arrow f g → B → Y + left-projection-hom-arrow-pullback-hom = map-codomain-hom-arrow f g - right-projection-pullback-hom : hom-arrow f g → A → X - right-projection-pullback-hom = map-domain-hom-arrow f g + right-projection-hom-arrow-pullback-hom : hom-arrow f g → A → X + right-projection-hom-arrow-pullback-hom = map-domain-hom-arrow f g - coherence-square-cone-pullback-hom : + coherence-square-cone-hom-arrow-pullback-hom : coherence-square-maps - ( right-projection-pullback-hom) - ( left-projection-pullback-hom) + ( right-projection-hom-arrow-pullback-hom) + ( left-projection-hom-arrow-pullback-hom) ( postcomp A g) ( precomp f Y) - coherence-square-cone-pullback-hom h = eq-htpy (coh-hom-arrow f g h) + coherence-square-cone-hom-arrow-pullback-hom h = eq-htpy (coh-hom-arrow f g h) - cone-pullback-hom : cone (precomp f Y) (postcomp A g) (hom-arrow f g) - pr1 cone-pullback-hom = left-projection-pullback-hom - pr1 (pr2 cone-pullback-hom) = right-projection-pullback-hom - pr2 (pr2 cone-pullback-hom) = coherence-square-cone-pullback-hom + cone-hom-arrow-pullback-hom : cone (precomp f Y) (postcomp A g) (hom-arrow f g) + pr1 cone-hom-arrow-pullback-hom = left-projection-hom-arrow-pullback-hom + pr1 (pr2 cone-hom-arrow-pullback-hom) = right-projection-hom-arrow-pullback-hom + pr2 (pr2 cone-hom-arrow-pullback-hom) = coherence-square-cone-hom-arrow-pullback-hom ``` ### The standard pullback of the defining cospan of the pullback-hom @@ -206,6 +219,23 @@ module _ coh-standard-pullback-hom = htpy-eq eq-coh-standard-pullback-hom ``` +### The cone of the diagram defining the pullback-hom + +```agda +module _ + {l1 l2 l3 l4 : Level} {A : UU l1} {B : UU l2} {X : UU l3} {Y : UU l4} + (f : A → B) (g : X → Y) + where + + cone-pullback-hom : cone (precomp f Y) (postcomp A g) (B → X) + pr1 cone-pullback-hom = postcomp B g + pr1 (pr2 cone-pullback-hom) = precomp f X + pr2 (pr2 cone-pullback-hom) = refl-htpy + + gap-cone-pullback-hom : (B → X) → type-standard-pullback-hom f g + gap-cone-pullback-hom = gap (precomp f Y) (postcomp A g) cone-pullback-hom +``` + ### The equivalence of the codomain of the pullback-hom with the standard pullback ```agda @@ -294,13 +324,9 @@ module _ (f : A → B) (g : X → Y) where - gap-standard-pullback-hom : (B → X) → type-standard-pullback-hom f g - gap-standard-pullback-hom = - gap (precomp f Y) (postcomp A g) (postcomp B g , precomp f X , refl-htpy) - triangle-pullback-hom : coherence-triangle-maps' - ( gap-standard-pullback-hom) + ( gap-cone-pullback-hom f g) ( map-compute-pullback-hom f g) ( pullback-hom f g) triangle-pullback-hom j = @@ -349,22 +375,22 @@ module _ (f : A → B) (g : X → Y) where - is-pullback-cone-pullback-hom : - is-pullback (precomp f Y) (postcomp A g) (cone-pullback-hom f g) - is-pullback-cone-pullback-hom = + is-pullback-cone-hom-arrow-pullback-hom : + is-pullback (precomp f Y) (postcomp A g) (cone-hom-arrow-pullback-hom f g) + is-pullback-cone-hom-arrow-pullback-hom = is-equiv-map-compute-pullback-hom f g - universal-property-pullback-cone-pullback-hom : + universal-property-pullback-cone-hom-arrow-pullback-hom : universal-property-pullback ( precomp f Y) ( postcomp A g) - ( cone-pullback-hom f g) - universal-property-pullback-cone-pullback-hom = + ( cone-hom-arrow-pullback-hom f g) + universal-property-pullback-cone-hom-arrow-pullback-hom = universal-property-pullback-is-pullback ( precomp f Y) ( postcomp A g) - ( cone-pullback-hom f g) - ( is-pullback-cone-pullback-hom) + ( cone-hom-arrow-pullback-hom f g) + ( is-pullback-cone-hom-arrow-pullback-hom) ``` ### The action on homotopies at `refl-htpy` is the reflexivity homotopy of morphisms of arrows From 7bf3cda55f73ad4074296dcd54ae23e5ab48aa0e Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Sun, 4 Feb 2024 21:05:32 +0100 Subject: [PATCH 102/150] It compiles again --- .../functoriality-pullback-hom.lagda.md | 12 ++++++------ .../lifting-operations.lagda.md | 4 ++-- .../descent-circle-function-types.lagda.md | 1 + .../universal-property-coequalizers.lagda.md | 1 + 4 files changed, 10 insertions(+), 8 deletions(-) diff --git a/src/orthogonal-factorization-systems/functoriality-pullback-hom.lagda.md b/src/orthogonal-factorization-systems/functoriality-pullback-hom.lagda.md index df19e9ca89..8e2b55acc3 100644 --- a/src/orthogonal-factorization-systems/functoriality-pullback-hom.lagda.md +++ b/src/orthogonal-factorization-systems/functoriality-pullback-hom.lagda.md @@ -7,9 +7,9 @@ module orthogonal-factorization-systems.functoriality-pullback-hom where
Imports ```agda -open import foundation.fibered-maps open import foundation.function-types open import foundation.functoriality-pullbacks +open import foundation.morphisms-arrows open import foundation.morphisms-cospan-diagrams open import foundation.postcomposition-functions open import foundation.precomposition-functions @@ -45,17 +45,17 @@ module _ ( postcomp A' g') ( precomp f Y) ( postcomp A g) → - fibered-map f' g' → fibered-map f g + hom-arrow f' g' → hom-arrow f g map-pullback-hom = map-is-pullback ( precomp f Y) ( postcomp A g) ( precomp f' Y') ( postcomp A' g') - ( cone-pullback-hom f g) - ( cone-pullback-hom f' g') - ( is-pullback-fibered-map f g) - ( is-pullback-fibered-map f' g') + ( cone-hom-arrow-pullback-hom f g) + ( cone-hom-arrow-pullback-hom f' g') + ( is-pullback-cone-hom-arrow-pullback-hom f g) + ( is-pullback-cone-hom-arrow-pullback-hom f' g') ``` ## Table of files about pullbacks diff --git a/src/orthogonal-factorization-systems/lifting-operations.lagda.md b/src/orthogonal-factorization-systems/lifting-operations.lagda.md index 616fa79eb0..6acf6a8485 100644 --- a/src/orthogonal-factorization-systems/lifting-operations.lagda.md +++ b/src/orthogonal-factorization-systems/lifting-operations.lagda.md @@ -8,9 +8,9 @@ module orthogonal-factorization-systems.lifting-operations where ```agda open import foundation.dependent-pair-types -open import foundation.fibered-maps open import foundation.function-types open import foundation.homotopies +open import foundation.morphisms-arrows open import foundation.sections open import foundation.universe-levels @@ -58,7 +58,7 @@ module _ _⧄_ = diagonal-lift - map-diagonal-lift : diagonal-lift → fibered-map f g → X → B + map-diagonal-lift : diagonal-lift → hom-arrow f g → X → B map-diagonal-lift = pr1 is-section-map-diagonal-lift : diff --git a/src/synthetic-homotopy-theory/descent-circle-function-types.lagda.md b/src/synthetic-homotopy-theory/descent-circle-function-types.lagda.md index 1fab95ab93..422142cf3f 100644 --- a/src/synthetic-homotopy-theory/descent-circle-function-types.lagda.md +++ b/src/synthetic-homotopy-theory/descent-circle-function-types.lagda.md @@ -16,6 +16,7 @@ open import foundation.function-types open import foundation.functoriality-dependent-pair-types open import foundation.functoriality-function-types open import foundation.homotopies +open import foundation.homotopy-algebra open import foundation.identity-types open import foundation.postcomposition-functions open import foundation.transport-along-identifications diff --git a/src/synthetic-homotopy-theory/universal-property-coequalizers.lagda.md b/src/synthetic-homotopy-theory/universal-property-coequalizers.lagda.md index db1a3035d3..f5620553e9 100644 --- a/src/synthetic-homotopy-theory/universal-property-coequalizers.lagda.md +++ b/src/synthetic-homotopy-theory/universal-property-coequalizers.lagda.md @@ -16,6 +16,7 @@ open import foundation.fibers-of-maps open import foundation.functoriality-coproduct-types open import foundation.functoriality-dependent-pair-types open import foundation.homotopies +open import foundation.homotopies-morphisms-arrows open import foundation.identity-types open import foundation.morphisms-arrows open import foundation.universe-levels From f7e785cdc14cc0ff3b75383465ed77be4dd4069f Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Sun, 4 Feb 2024 21:08:45 +0100 Subject: [PATCH 103/150] make pre-commit --- src/foundation-core.lagda.md | 2 +- .../coherently-invertible-maps.lagda.md | 2 +- .../commuting-prisms-of-maps.lagda.md | 2 +- .../commuting-squares-of-maps.lagda.md | 2 +- .../commuting-triangles-of-maps.lagda.md | 2 +- src/foundation-core/equivalences.lagda.md | 2 +- .../function-extensionality.lagda.md | 2 +- src/foundation-core/identity-types.lagda.md | 4 +- src/foundation-core/retractions.lagda.md | 2 +- src/foundation-core/sections.lagda.md | 2 +- src/foundation.lagda.md | 4 ++ ...tion-on-identifications-functions.lagda.md | 2 +- src/foundation/axiom-of-choice.lagda.md | 2 +- .../coherently-invertible-maps.lagda.md | 2 +- .../commuting-cubes-of-maps.lagda.md | 23 ++++++-- ...muting-squares-of-identifications.lagda.md | 56 +++++++++++++------ .../commuting-tetrahedra-of-maps.lagda.md | 2 +- ...commuting-triangles-of-homotopies.lagda.md | 2 +- src/foundation/composition-algebra.lagda.md | 2 +- .../cones-over-cospan-diagrams.lagda.md | 2 +- ...-over-inverse-sequential-diagrams.lagda.md | 2 +- .../coproduct-decompositions.lagda.md | 2 +- src/foundation/coslice.lagda.md | 2 +- .../exponents-set-quotients.lagda.md | 2 +- src/foundation/fibered-maps.lagda.md | 2 +- .../function-extensionality.lagda.md | 2 +- ...oriality-dependent-function-types.lagda.md | 2 +- .../functoriality-fibers-of-maps.lagda.md | 2 +- ...oriality-propositional-truncation.lagda.md | 2 +- .../functoriality-set-truncation.lagda.md | 2 +- .../functoriality-truncation.lagda.md | 2 +- .../homotopies-morphisms-arrows.lagda.md | 2 +- src/foundation/homotopies.lagda.md | 2 +- src/foundation/homotopy-algebra.lagda.md | 2 +- src/foundation/invertible-maps.lagda.md | 2 +- src/foundation/involutions.lagda.md | 2 +- .../iterating-automorphisms.lagda.md | 2 +- src/foundation/monomorphisms.lagda.md | 2 +- src/foundation/morphisms-arrows.lagda.md | 4 +- ...hisms-inverse-sequential-diagrams.lagda.md | 2 +- src/foundation/pi-decompositions.lagda.md | 2 +- .../postcomposition-functions.lagda.md | 2 +- .../precomposition-functions.lagda.md | 2 +- .../precomposition-type-families.lagda.md | 2 +- src/foundation/pullbacks.lagda.md | 2 +- src/foundation/retractions.lagda.md | 2 +- src/foundation/retracts-of-maps.lagda.md | 2 +- src/foundation/retracts-of-types.lagda.md | 2 +- src/foundation/sections.lagda.md | 2 +- src/foundation/sequential-limits.lagda.md | 2 +- src/foundation/set-quotients.lagda.md | 2 +- src/foundation/slice.lagda.md | 2 +- ...port-along-higher-identifications.lagda.md | 2 +- src/foundation/truncations.lagda.md | 2 +- src/foundation/uniqueness-image.lagda.md | 2 +- .../uniqueness-set-quotients.lagda.md | 2 +- .../unital-binary-operations.lagda.md | 2 +- .../universal-property-image.lagda.md | 2 +- .../universal-property-set-quotients.lagda.md | 2 +- src/foundation/unordered-pairs.lagda.md | 2 +- src/foundation/unordered-tuples.lagda.md | 2 +- ...ing-higher-homotopies-composition.lagda.md | 2 +- ...iskering-homotopies-concatenation.lagda.md | 18 ++++-- ...ing-identifications-concatenation.lagda.md | 10 +++- .../lifting-squares.lagda.md | 3 +- .../pullback-hom.lagda.md | 33 ++++++----- .../cocones-under-spans.lagda.md | 2 +- .../double-loop-spaces.lagda.md | 2 +- 68 files changed, 168 insertions(+), 105 deletions(-) diff --git a/src/foundation-core.lagda.md b/src/foundation-core.lagda.md index a38390e9d3..54910aea26 100644 --- a/src/foundation-core.lagda.md +++ b/src/foundation-core.lagda.md @@ -9,6 +9,7 @@ open import foundation-core.1-types public open import foundation-core.cartesian-product-types public open import foundation-core.coherently-invertible-maps public open import foundation-core.commuting-prisms-of-maps public +open import foundation-core.commuting-squares-of-homotopies public open import foundation-core.commuting-squares-of-maps public open import foundation-core.commuting-triangles-of-maps public open import foundation-core.constant-maps public @@ -59,5 +60,4 @@ open import foundation-core.type-theoretic-principle-of-choice public open import foundation-core.univalence public open import foundation-core.universal-property-pullbacks public open import foundation-core.universal-property-truncation public -open import foundation.whiskering-homotopies-composition public ``` diff --git a/src/foundation-core/coherently-invertible-maps.lagda.md b/src/foundation-core/coherently-invertible-maps.lagda.md index 6a1d574921..9bb05c465c 100644 --- a/src/foundation-core/coherently-invertible-maps.lagda.md +++ b/src/foundation-core/coherently-invertible-maps.lagda.md @@ -10,6 +10,7 @@ module foundation-core.coherently-invertible-maps where open import foundation.action-on-identifications-functions open import foundation.dependent-pair-types open import foundation.universe-levels +open import foundation.whiskering-homotopies-composition open import foundation-core.function-types open import foundation-core.homotopies @@ -17,7 +18,6 @@ open import foundation-core.identity-types open import foundation-core.invertible-maps open import foundation-core.retractions open import foundation-core.sections -open import foundation.whiskering-homotopies-composition ```
diff --git a/src/foundation-core/commuting-prisms-of-maps.lagda.md b/src/foundation-core/commuting-prisms-of-maps.lagda.md index ec3fe8a8a7..5a29a72f72 100644 --- a/src/foundation-core/commuting-prisms-of-maps.lagda.md +++ b/src/foundation-core/commuting-prisms-of-maps.lagda.md @@ -8,11 +8,11 @@ module foundation-core.commuting-prisms-of-maps where ```agda open import foundation.universe-levels +open import foundation.whiskering-homotopies-composition open import foundation-core.commuting-squares-of-maps open import foundation-core.commuting-triangles-of-maps open import foundation-core.homotopies -open import foundation.whiskering-homotopies-composition ``` diff --git a/src/foundation-core/commuting-squares-of-maps.lagda.md b/src/foundation-core/commuting-squares-of-maps.lagda.md index 7d14f6bfc3..90828cb3ce 100644 --- a/src/foundation-core/commuting-squares-of-maps.lagda.md +++ b/src/foundation-core/commuting-squares-of-maps.lagda.md @@ -9,12 +9,12 @@ module foundation-core.commuting-squares-of-maps where ```agda open import foundation.action-on-identifications-functions open import foundation.universe-levels +open import foundation.whiskering-homotopies-composition open import foundation-core.commuting-triangles-of-maps open import foundation-core.function-types open import foundation-core.homotopies open import foundation-core.identity-types -open import foundation.whiskering-homotopies-composition ``` diff --git a/src/foundation-core/commuting-triangles-of-maps.lagda.md b/src/foundation-core/commuting-triangles-of-maps.lagda.md index 85f29db050..610e4cd7c2 100644 --- a/src/foundation-core/commuting-triangles-of-maps.lagda.md +++ b/src/foundation-core/commuting-triangles-of-maps.lagda.md @@ -8,12 +8,12 @@ module foundation-core.commuting-triangles-of-maps where ```agda open import foundation.universe-levels +open import foundation.whiskering-homotopies-composition open import foundation-core.function-types open import foundation-core.homotopies open import foundation-core.retractions open import foundation-core.sections -open import foundation.whiskering-homotopies-composition ``` diff --git a/src/foundation-core/equivalences.lagda.md b/src/foundation-core/equivalences.lagda.md index c8c0bcdb0f..3d1af2c9bb 100644 --- a/src/foundation-core/equivalences.lagda.md +++ b/src/foundation-core/equivalences.lagda.md @@ -11,6 +11,7 @@ open import foundation.action-on-identifications-binary-functions open import foundation.action-on-identifications-functions open import foundation.dependent-pair-types open import foundation.universe-levels +open import foundation.whiskering-homotopies-composition open import foundation-core.cartesian-product-types open import foundation-core.coherently-invertible-maps @@ -20,7 +21,6 @@ open import foundation-core.identity-types open import foundation-core.invertible-maps open import foundation-core.retractions open import foundation-core.sections -open import foundation.whiskering-homotopies-composition ``` diff --git a/src/foundation-core/function-extensionality.lagda.md b/src/foundation-core/function-extensionality.lagda.md index c2fff299f0..9abe7a4808 100644 --- a/src/foundation-core/function-extensionality.lagda.md +++ b/src/foundation-core/function-extensionality.lagda.md @@ -13,6 +13,7 @@ open import foundation.dependent-pair-types open import foundation.implicit-function-types open import foundation.postcomposition-dependent-functions open import foundation.universe-levels +open import foundation.whiskering-homotopies-composition open import foundation-core.commuting-squares-of-maps open import foundation-core.equivalences @@ -22,7 +23,6 @@ open import foundation-core.identity-types open import foundation-core.postcomposition-functions open import foundation-core.precomposition-dependent-functions open import foundation-core.precomposition-functions -open import foundation.whiskering-homotopies-composition ``` diff --git a/src/foundation-core/identity-types.lagda.md b/src/foundation-core/identity-types.lagda.md index 0c92315a27..caf7bb75e2 100644 --- a/src/foundation-core/identity-types.lagda.md +++ b/src/foundation-core/identity-types.lagda.md @@ -372,7 +372,9 @@ module _ ### Splicing and unsplicing concatenations of identifications -Consider two identifications `p : a = b` and `q : b = c`, and consider two further identifications `r : b = x` and `s : x = b` equipped with an identification `inv r = s`, as indicated in the diagram +Consider two identifications `p : a = b` and `q : b = c`, and consider two +further identifications `r : b = x` and `s : x = b` equipped with an +identification `inv r = s`, as indicated in the diagram ```text x diff --git a/src/foundation-core/retractions.lagda.md b/src/foundation-core/retractions.lagda.md index d217d1fe07..749ef43a44 100644 --- a/src/foundation-core/retractions.lagda.md +++ b/src/foundation-core/retractions.lagda.md @@ -10,11 +10,11 @@ module foundation-core.retractions where open import foundation.action-on-identifications-functions open import foundation.dependent-pair-types open import foundation.universe-levels +open import foundation.whiskering-homotopies-composition open import foundation-core.function-types open import foundation-core.homotopies open import foundation-core.identity-types -open import foundation.whiskering-homotopies-composition ``` diff --git a/src/foundation-core/sections.lagda.md b/src/foundation-core/sections.lagda.md index a6d081d740..a661fbfc70 100644 --- a/src/foundation-core/sections.lagda.md +++ b/src/foundation-core/sections.lagda.md @@ -9,10 +9,10 @@ module foundation-core.sections where ```agda open import foundation.dependent-pair-types open import foundation.universe-levels +open import foundation.whiskering-homotopies-composition open import foundation-core.function-types open import foundation-core.homotopies -open import foundation.whiskering-homotopies-composition ``` diff --git a/src/foundation.lagda.md b/src/foundation.lagda.md index 82166e8019..ac1da1b851 100644 --- a/src/foundation.lagda.md +++ b/src/foundation.lagda.md @@ -178,8 +178,11 @@ open import foundation.functoriality-truncation public open import foundation.fundamental-theorem-of-identity-types public open import foundation.global-choice public open import foundation.global-subuniverses public +open import foundation.higher-homotopies-morphisms-arrows public open import foundation.hilberts-epsilon-operators public open import foundation.homotopies public +open import foundation.homotopies-morphisms-arrows public +open import foundation.homotopy-algebra public open import foundation.homotopy-induction public open import foundation.identity-systems public open import foundation.identity-truncated-types public @@ -420,6 +423,7 @@ open import foundation.weak-limited-principle-of-omniscience public open import foundation.weakly-constant-maps public open import foundation.whiskering-higher-homotopies-composition public open import foundation.whiskering-homotopies-composition public +open import foundation.whiskering-homotopies-concatenation public open import foundation.whiskering-identifications-concatenation public open import foundation.whiskering-operations public ``` diff --git a/src/foundation/action-on-identifications-functions.lagda.md b/src/foundation/action-on-identifications-functions.lagda.md index 1801ffe958..dde53b58a5 100644 --- a/src/foundation/action-on-identifications-functions.lagda.md +++ b/src/foundation/action-on-identifications-functions.lagda.md @@ -75,7 +75,7 @@ ap-refl f x = refl module _ {l1 l2 : Level} {A : UU l1} {B : UU l2} (f : A → B) where - + ap-concat : {x y z : A} (p : x = y) (q : y = z) → ap f (p ∙ q) = ap f p ∙ ap f q ap-concat refl q = refl diff --git a/src/foundation/axiom-of-choice.lagda.md b/src/foundation/axiom-of-choice.lagda.md index b129a05d2f..4ebd0ee3d0 100644 --- a/src/foundation/axiom-of-choice.lagda.md +++ b/src/foundation/axiom-of-choice.lagda.md @@ -16,6 +16,7 @@ open import foundation.sections open import foundation.split-surjective-maps open import foundation.surjective-maps open import foundation.universe-levels +open import foundation.whiskering-homotopies-composition open import foundation-core.equivalences open import foundation-core.fibers-of-maps @@ -25,7 +26,6 @@ open import foundation-core.functoriality-dependent-pair-types open import foundation-core.identity-types open import foundation-core.precomposition-functions open import foundation-core.sets -open import foundation.whiskering-homotopies-composition ``` diff --git a/src/foundation/coherently-invertible-maps.lagda.md b/src/foundation/coherently-invertible-maps.lagda.md index 563b3e75c9..9bc14bb139 100644 --- a/src/foundation/coherently-invertible-maps.lagda.md +++ b/src/foundation/coherently-invertible-maps.lagda.md @@ -15,6 +15,7 @@ open import foundation.equivalences open import foundation.identity-types open import foundation.type-arithmetic-dependent-pair-types open import foundation.universe-levels +open import foundation.whiskering-homotopies-composition open import foundation-core.contractible-maps open import foundation-core.contractible-types @@ -25,7 +26,6 @@ open import foundation-core.homotopies open import foundation-core.propositions open import foundation-core.sections open import foundation-core.type-theoretic-principle-of-choice -open import foundation.whiskering-homotopies-composition ``` diff --git a/src/foundation/commuting-cubes-of-maps.lagda.md b/src/foundation/commuting-cubes-of-maps.lagda.md index aea331b437..8206d52da9 100644 --- a/src/foundation/commuting-cubes-of-maps.lagda.md +++ b/src/foundation/commuting-cubes-of-maps.lagda.md @@ -14,13 +14,13 @@ open import foundation.cones-over-cospan-diagrams open import foundation.dependent-pair-types open import foundation.homotopies open import foundation.universe-levels +open import foundation.whiskering-homotopies-composition open import foundation.whiskering-identifications-concatenation open import foundation-core.function-extensionality open import foundation-core.function-types open import foundation-core.identity-types open import foundation-core.precomposition-functions -open import foundation.whiskering-homotopies-composition ``` @@ -432,19 +432,28 @@ module _ inv-htpy ( horizontal-concat-htpy² ( horizontal-concat-htpy² - ( distributive-precomp-right-whisker-comp-coherence-square-maps W hB + ( distributive-precomp-right-whisker-comp-coherence-square-maps + ( W) + ( hB) ( h') ( h) ( hD) ( inv-htpy front-left) ( f')) - ( distributive-precomp-left-whisker-comp-coherence-square-maps W hA + ( distributive-precomp-left-whisker-comp-coherence-square-maps + ( W) + ( hA) ( f') ( f) ( hB) ( inv-htpy back-left) ( h))) - ( distributive-precomp-right-whisker-comp-coherence-square-maps W g f k h + ( distributive-precomp-right-whisker-comp-coherence-square-maps + ( W) + ( g) + ( f) + ( k) + ( h) ( bottom) ( hA))) ~ precomp-coherence-square-maps hA @@ -524,7 +533,11 @@ module _ ( top) ( hD)) ( horizontal-concat-htpy² - ( distributive-precomp-right-whisker-comp-coherence-square-maps W hC k' k + ( distributive-precomp-right-whisker-comp-coherence-square-maps + ( W) + ( hC) + ( k') + ( k) ( hD) ( inv-htpy front-right) ( g')) diff --git a/src/foundation/commuting-squares-of-identifications.lagda.md b/src/foundation/commuting-squares-of-identifications.lagda.md index 861c091af6..449efa8d65 100644 --- a/src/foundation/commuting-squares-of-identifications.lagda.md +++ b/src/foundation/commuting-squares-of-identifications.lagda.md @@ -706,7 +706,8 @@ module _ (top : x = y) (left : x = z) (right : y = w) (bottom : z = w) → coherence-square-identifications top left right bottom → coherence-square-identifications (p ∙ top) (p ∙ left) right bottom - left-whisker-concat-coherence-square-identifications refl top left right bottom = + left-whisker-concat-coherence-square-identifications + refl top left right bottom = id left-unwhisker-concat-coherence-square-identifications : @@ -714,7 +715,8 @@ module _ (top : x = y) (left : x = z) (right : y = w) (bottom : z = w) → coherence-square-identifications (p ∙ top) (p ∙ left) right bottom → coherence-square-identifications top left right bottom - left-unwhisker-concat-coherence-square-identifications refl top left right bottom = + left-unwhisker-concat-coherence-square-identifications + refl top left right bottom = id ``` @@ -937,7 +939,12 @@ module _ equiv-left-whisker-concat-coherence-square-identifications p top left ( right ∙ q) ( bottom ∙ q) ∘e - equiv-right-whisker-concat-coherence-square-identifications top left right bottom q + equiv-right-whisker-concat-coherence-square-identifications + ( top) + ( left) + ( right) + ( bottom) + ( q) ``` ### Horizontally pasting squares of identifications @@ -1077,7 +1084,7 @@ module _ right-unit-law-horizontal-pasting-coherence-square-identifications : (top : a = b) (left : a = c) (right : b = d) (bottom : c = d) - (s : coherence-square-identifications top left right bottom) → + (s : coherence-square-identifications top left right bottom) → horizontal-pasting-coherence-square-identifications ( top) ( refl) @@ -1161,7 +1168,9 @@ Consider the vertically constant square of identifications p ``` -at an identification `p : x = y`, and consider an identification `q : y = z`. Then the right whiskering of the above square with `q` is the commuting square of identifications +at an identification `p : x = y`, and consider an identification `q : y = z`. +Then the right whiskering of the above square with `q` is the commuting square +of identifications ```text p @@ -1203,7 +1212,8 @@ Consider a horizontally constant commuting square of identifications refl ``` -at an identification `p` and consider an identification `q : y = z`. Then the right whiskering of the above square with `q` is the square +at an identification `p` and consider an identification `q : y = z`. Then the +right whiskering of the above square with `q` is the square ```text refl @@ -1233,7 +1243,8 @@ module _ ### Computing the left whiskering of a horizontally constant square with an identification -Consider an identification `p : x = y` and a horizontally constant commuting square of identifications +Consider an identification `p : x = y` and a horizontally constant commuting +square of identifications ```text refl @@ -1245,7 +1256,8 @@ Consider an identification `p : x = y` and a horizontally constant commuting s refl ``` -at an identification `q : y = z`. The the left whiskering of the above square with `p` is the commuting square +at an identification `q : y = z`. The the left whiskering of the above square +with `p` is the commuting square ```text q ∙ refl @@ -1296,7 +1308,8 @@ Consider the vertically constant square of identifications q ``` -at an identification `q : y = z` and consider an identification `p : x = y`. Then the left whiskering of the above square with `p` is the square +at an identification `q : y = z` and consider an identification `p : x = y`. +Then the left whiskering of the above square with `p` is the square ```text p ∙ q @@ -1347,7 +1360,9 @@ Consider a commuting diagram of identifications of the form bottom-left bottom-right ``` -and consider an identification `p : x = a`. Then the left whiskering of `p` and the horizontal concatenation of coherences of commuting squares is up to associativity the horizontal concatenation of the squares +and consider an identification `p : x = a`. Then the left whiskering of `p` and +the horizontal concatenation of coherences of commuting squares is up to +associativity the horizontal concatenation of the squares ```text p ∙ top-left top-right @@ -1359,7 +1374,8 @@ and consider an identification `p : x = a`. Then the left whiskering of `p` an bottom-left bottom-right ``` -where the left square is the left whiskering of `p` and the original left square. +where the left square is the left whiskering of `p` and the original left +square. ```agda module _ @@ -1408,7 +1424,7 @@ module _ ( right) left-whisker-concat-horizontal-pasting-coherence-square-identifications refl top-left top-right left middle right bottom-left bottom-right l r = - inv right-unit + inv right-unit ``` ### Left whiskering vertical concatenations of squares with identifications @@ -1429,7 +1445,9 @@ Consider two squares of identifications as in the diagram bottom ``` -and consider an identification `p : x = a`. Then the left whiskering of `p` with the vertical pasting of the two squares above is up to associativity the vertical pasting of the squares +and consider an identification `p : x = a`. Then the left whiskering of `p` +with the vertical pasting of the two squares above is up to associativity the +vertical pasting of the squares ```text p ∙ top @@ -1507,7 +1525,9 @@ Consider a commuting diagram of identifications of the form bottom-left bottom-right ``` -and consider an identification `q : f = y`. Then the right whiskering of the horizontal pasting of the squares above is up to associativity the horizontal pasting of the squares +and consider an identification `q : f = y`. Then the right whiskering of the +horizontal pasting of the squares above is up to associativity the horizontal +pasting of the squares ```text top-left top-right @@ -1570,7 +1590,7 @@ module _ refl ``` - ### Right whiskering vertical concatenations of squares with identifications +### Right whiskering vertical concatenations of squares with identifications Consider two squares of identifications as in the diagram @@ -1588,7 +1608,9 @@ Consider two squares of identifications as in the diagram bottom ``` -and consider an identification `q : f = y`. Then the right whiskering of the vertical pasting of the two squares above with `q` is up to associativity the vertical pasting of the squares +and consider an identification `q : f = y`. Then the right whiskering of the +vertical pasting of the two squares above with `q` is up to associativity the +vertical pasting of the squares ```text top @@ -1633,7 +1655,7 @@ module _ ( bottom) ( t) ( b)) - ( q)∙ + ( q) ∙ left-whisker-concat top (assoc top-right bottom-right q) = vertical-pasting-coherence-square-identifications ( top) diff --git a/src/foundation/commuting-tetrahedra-of-maps.lagda.md b/src/foundation/commuting-tetrahedra-of-maps.lagda.md index d43a756cf9..fe188d92cf 100644 --- a/src/foundation/commuting-tetrahedra-of-maps.lagda.md +++ b/src/foundation/commuting-tetrahedra-of-maps.lagda.md @@ -8,10 +8,10 @@ module foundation.commuting-tetrahedra-of-maps where ```agda open import foundation.universe-levels +open import foundation.whiskering-homotopies-composition open import foundation-core.commuting-triangles-of-maps open import foundation-core.homotopies -open import foundation.whiskering-homotopies-composition ``` diff --git a/src/foundation/commuting-triangles-of-homotopies.lagda.md b/src/foundation/commuting-triangles-of-homotopies.lagda.md index f21e25c4d6..b063408f04 100644 --- a/src/foundation/commuting-triangles-of-homotopies.lagda.md +++ b/src/foundation/commuting-triangles-of-homotopies.lagda.md @@ -10,12 +10,12 @@ module foundation.commuting-triangles-of-homotopies where open import foundation.action-on-identifications-functions open import foundation.commuting-triangles-of-identifications open import foundation.universe-levels +open import foundation.whiskering-homotopies-composition open import foundation.whiskering-identifications-concatenation open import foundation-core.function-types open import foundation-core.homotopies open import foundation-core.identity-types -open import foundation.whiskering-homotopies-composition ``` diff --git a/src/foundation/composition-algebra.lagda.md b/src/foundation/composition-algebra.lagda.md index 0c2cc5912b..aecfde78a5 100644 --- a/src/foundation/composition-algebra.lagda.md +++ b/src/foundation/composition-algebra.lagda.md @@ -14,11 +14,11 @@ 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 -open import foundation.whiskering-homotopies-composition ``` diff --git a/src/foundation/cones-over-cospan-diagrams.lagda.md b/src/foundation/cones-over-cospan-diagrams.lagda.md index 27c07f78ef..2745870250 100644 --- a/src/foundation/cones-over-cospan-diagrams.lagda.md +++ b/src/foundation/cones-over-cospan-diagrams.lagda.md @@ -12,6 +12,7 @@ open import foundation.fundamental-theorem-of-identity-types open import foundation.homotopy-induction open import foundation.structure-identity-principle open import foundation.universe-levels +open import foundation.whiskering-homotopies-composition open import foundation-core.commuting-squares-of-maps open import foundation-core.equivalences @@ -20,7 +21,6 @@ open import foundation-core.homotopies open import foundation-core.identity-types open import foundation-core.torsorial-type-families open import foundation-core.transport-along-identifications -open import foundation.whiskering-homotopies-composition ``` diff --git a/src/foundation/cones-over-inverse-sequential-diagrams.lagda.md b/src/foundation/cones-over-inverse-sequential-diagrams.lagda.md index eeb97d80ae..291b047892 100644 --- a/src/foundation/cones-over-inverse-sequential-diagrams.lagda.md +++ b/src/foundation/cones-over-inverse-sequential-diagrams.lagda.md @@ -17,6 +17,7 @@ open import foundation.homotopy-induction open import foundation.inverse-sequential-diagrams open import foundation.structure-identity-principle open import foundation.universe-levels +open import foundation.whiskering-homotopies-composition open import foundation-core.commuting-triangles-of-maps open import foundation-core.equivalences @@ -24,7 +25,6 @@ open import foundation-core.function-extensionality open import foundation-core.homotopies open import foundation-core.identity-types open import foundation-core.torsorial-type-families -open import foundation.whiskering-homotopies-composition ``` diff --git a/src/foundation/coproduct-decompositions.lagda.md b/src/foundation/coproduct-decompositions.lagda.md index d668ced78b..507595d667 100644 --- a/src/foundation/coproduct-decompositions.lagda.md +++ b/src/foundation/coproduct-decompositions.lagda.md @@ -21,6 +21,7 @@ open import foundation.type-arithmetic-empty-type open import foundation.unit-type open import foundation.univalence open import foundation.universe-levels +open import foundation.whiskering-homotopies-composition open import foundation-core.contractible-types open import foundation-core.coproduct-types @@ -34,7 +35,6 @@ open import foundation-core.identity-types open import foundation-core.propositions open import foundation-core.torsorial-type-families open import foundation-core.transport-along-identifications -open import foundation.whiskering-homotopies-composition open import univalent-combinatorics.equality-standard-finite-types open import univalent-combinatorics.standard-finite-types diff --git a/src/foundation/coslice.lagda.md b/src/foundation/coslice.lagda.md index 80faa986cf..8ed47fbac2 100644 --- a/src/foundation/coslice.lagda.md +++ b/src/foundation/coslice.lagda.md @@ -11,13 +11,13 @@ open import foundation.commuting-triangles-of-homotopies open import foundation.dependent-pair-types open import foundation.structure-identity-principle open import foundation.universe-levels +open import foundation.whiskering-homotopies-composition open import foundation-core.equivalences open import foundation-core.function-extensionality open import foundation-core.function-types open import foundation-core.homotopies open import foundation-core.identity-types -open import foundation.whiskering-homotopies-composition ``` diff --git a/src/foundation/exponents-set-quotients.lagda.md b/src/foundation/exponents-set-quotients.lagda.md index 052d711a6a..c4e3cc8617 100644 --- a/src/foundation/exponents-set-quotients.lagda.md +++ b/src/foundation/exponents-set-quotients.lagda.md @@ -18,6 +18,7 @@ open import foundation.set-quotients open import foundation.sets open import foundation.universal-property-set-quotients open import foundation.universe-levels +open import foundation.whiskering-homotopies-composition open import foundation-core.contractible-types open import foundation-core.embeddings @@ -27,7 +28,6 @@ open import foundation-core.function-types open import foundation-core.homotopies open import foundation-core.identity-types open import foundation-core.propositions -open import foundation.whiskering-homotopies-composition ``` diff --git a/src/foundation/fibered-maps.lagda.md b/src/foundation/fibered-maps.lagda.md index 136c51ac57..9547a00223 100644 --- a/src/foundation/fibered-maps.lagda.md +++ b/src/foundation/fibered-maps.lagda.md @@ -17,6 +17,7 @@ open import foundation.type-arithmetic-dependent-pair-types open import foundation.unit-type open import foundation.universal-property-empty-type open import foundation.universe-levels +open import foundation.whiskering-homotopies-composition open import foundation-core.commuting-squares-of-maps open import foundation-core.contractible-types @@ -32,7 +33,6 @@ open import foundation-core.small-types open import foundation-core.torsorial-type-families open import foundation-core.truncated-types open import foundation-core.truncation-levels -open import foundation.whiskering-homotopies-composition ``` diff --git a/src/foundation/function-extensionality.lagda.md b/src/foundation/function-extensionality.lagda.md index 71ef97ef00..4a59a93682 100644 --- a/src/foundation/function-extensionality.lagda.md +++ b/src/foundation/function-extensionality.lagda.md @@ -13,6 +13,7 @@ open import foundation.action-on-identifications-functions open import foundation.commuting-squares-of-maps open import foundation.postcomposition-dependent-functions open import foundation.universe-levels +open import foundation.whiskering-homotopies-composition open import foundation-core.function-types open import foundation-core.homotopies @@ -20,7 +21,6 @@ open import foundation-core.identity-types open import foundation-core.postcomposition-functions open import foundation-core.precomposition-dependent-functions open import foundation-core.precomposition-functions -open import foundation.whiskering-homotopies-composition ``` diff --git a/src/foundation/functoriality-dependent-function-types.lagda.md b/src/foundation/functoriality-dependent-function-types.lagda.md index 3b698e36f3..a43a3fc6b9 100644 --- a/src/foundation/functoriality-dependent-function-types.lagda.md +++ b/src/foundation/functoriality-dependent-function-types.lagda.md @@ -17,6 +17,7 @@ open import foundation.transport-along-identifications open import foundation.unit-type open import foundation.universal-property-unit-type open import foundation.universe-levels +open import foundation.whiskering-homotopies-composition open import foundation-core.constant-maps open import foundation-core.embeddings @@ -33,7 +34,6 @@ open import foundation-core.propositional-maps open import foundation-core.truncated-maps open import foundation-core.truncated-types open import foundation-core.truncation-levels -open import foundation.whiskering-homotopies-composition ``` diff --git a/src/foundation/functoriality-fibers-of-maps.lagda.md b/src/foundation/functoriality-fibers-of-maps.lagda.md index fd976e1834..1e3665b8d1 100644 --- a/src/foundation/functoriality-fibers-of-maps.lagda.md +++ b/src/foundation/functoriality-fibers-of-maps.lagda.md @@ -14,6 +14,7 @@ open import foundation.dependent-pair-types open import foundation.homotopies-morphisms-arrows open import foundation.morphisms-arrows open import foundation.universe-levels +open import foundation.whiskering-homotopies-composition open import foundation-core.commuting-squares-of-homotopies open import foundation-core.commuting-squares-of-maps @@ -23,7 +24,6 @@ open import foundation-core.function-types open import foundation-core.functoriality-dependent-pair-types open import foundation-core.homotopies open import foundation-core.identity-types -open import foundation.whiskering-homotopies-composition ``` diff --git a/src/foundation/functoriality-propositional-truncation.lagda.md b/src/foundation/functoriality-propositional-truncation.lagda.md index ec34914b6b..16b61b9d49 100644 --- a/src/foundation/functoriality-propositional-truncation.lagda.md +++ b/src/foundation/functoriality-propositional-truncation.lagda.md @@ -11,6 +11,7 @@ open import foundation.action-on-identifications-functions open import foundation.dependent-pair-types open import foundation.propositional-truncations open import foundation.universe-levels +open import foundation.whiskering-homotopies-composition open import foundation-core.contractible-types open import foundation-core.equivalences @@ -18,7 +19,6 @@ open import foundation-core.function-extensionality open import foundation-core.function-types open import foundation-core.homotopies open import foundation-core.propositions -open import foundation.whiskering-homotopies-composition ``` diff --git a/src/foundation/functoriality-set-truncation.lagda.md b/src/foundation/functoriality-set-truncation.lagda.md index 3ce513f17a..bfd69479ca 100644 --- a/src/foundation/functoriality-set-truncation.lagda.md +++ b/src/foundation/functoriality-set-truncation.lagda.md @@ -20,6 +20,7 @@ open import foundation.uniqueness-set-truncations open import foundation.universal-property-image open import foundation.universal-property-set-truncation open import foundation.universe-levels +open import foundation.whiskering-homotopies-composition open import foundation-core.contractible-types open import foundation-core.embeddings @@ -33,7 +34,6 @@ open import foundation-core.injective-maps open import foundation-core.propositions open import foundation-core.sets open import foundation-core.truncation-levels -open import foundation.whiskering-homotopies-composition ``` diff --git a/src/foundation/functoriality-truncation.lagda.md b/src/foundation/functoriality-truncation.lagda.md index a98572e90e..33978aa539 100644 --- a/src/foundation/functoriality-truncation.lagda.md +++ b/src/foundation/functoriality-truncation.lagda.md @@ -12,6 +12,7 @@ open import foundation.dependent-pair-types open import foundation.retracts-of-types open import foundation.truncations open import foundation.universe-levels +open import foundation.whiskering-homotopies-composition open import foundation-core.commuting-squares-of-maps open import foundation-core.contractible-types @@ -22,7 +23,6 @@ open import foundation-core.homotopies open import foundation-core.retractions open import foundation-core.sections open import foundation-core.truncation-levels -open import foundation.whiskering-homotopies-composition ``` diff --git a/src/foundation/homotopies-morphisms-arrows.lagda.md b/src/foundation/homotopies-morphisms-arrows.lagda.md index 0958884672..c65d839703 100644 --- a/src/foundation/homotopies-morphisms-arrows.lagda.md +++ b/src/foundation/homotopies-morphisms-arrows.lagda.md @@ -18,6 +18,7 @@ open import foundation.morphisms-arrows open import foundation.postcomposition-functions open import foundation.structure-identity-principle open import foundation.universe-levels +open import foundation.whiskering-homotopies-composition open import foundation.whiskering-identifications-concatenation open import foundation-core.commuting-squares-of-homotopies @@ -29,7 +30,6 @@ open import foundation-core.homotopies open import foundation-core.identity-types open import foundation-core.precomposition-functions open import foundation-core.torsorial-type-families -open import foundation.whiskering-homotopies-composition ``` diff --git a/src/foundation/homotopies.lagda.md b/src/foundation/homotopies.lagda.md index f8d639197d..bdb4b01b48 100644 --- a/src/foundation/homotopies.lagda.md +++ b/src/foundation/homotopies.lagda.md @@ -19,6 +19,7 @@ open import foundation.homotopy-induction open import foundation.identity-types open import foundation.path-algebra open import foundation.universe-levels +open import foundation.whiskering-homotopies-composition open import foundation.whiskering-identifications-concatenation open import foundation-core.dependent-identifications @@ -27,7 +28,6 @@ open import foundation-core.function-extensionality open import foundation-core.function-types open import foundation-core.functoriality-dependent-function-types open import foundation-core.transport-along-identifications -open import foundation.whiskering-homotopies-composition ``` diff --git a/src/foundation/homotopy-algebra.lagda.md b/src/foundation/homotopy-algebra.lagda.md index c5a80ca714..43a59baced 100644 --- a/src/foundation/homotopy-algebra.lagda.md +++ b/src/foundation/homotopy-algebra.lagda.md @@ -9,10 +9,10 @@ module foundation.homotopy-algebra where ```agda open import foundation.homotopy-induction open import foundation.universe-levels +open import foundation.whiskering-homotopies-composition open import foundation-core.function-types open import foundation-core.homotopies -open import foundation.whiskering-homotopies-composition ``` diff --git a/src/foundation/invertible-maps.lagda.md b/src/foundation/invertible-maps.lagda.md index 65cc698f8f..8c6cbe8bb2 100644 --- a/src/foundation/invertible-maps.lagda.md +++ b/src/foundation/invertible-maps.lagda.md @@ -27,6 +27,7 @@ open import foundation.sections open import foundation.structure-identity-principle open import foundation.type-arithmetic-dependent-pair-types open import foundation.universe-levels +open import foundation.whiskering-homotopies-composition open import foundation-core.cartesian-product-types open import foundation-core.function-extensionality @@ -36,7 +37,6 @@ open import foundation-core.identity-types open import foundation-core.torsorial-type-families open import foundation-core.truncated-types open import foundation-core.truncation-levels -open import foundation.whiskering-homotopies-composition open import synthetic-homotopy-theory.free-loops ``` diff --git a/src/foundation/involutions.lagda.md b/src/foundation/involutions.lagda.md index 34b23c9a60..1d45e2ea79 100644 --- a/src/foundation/involutions.lagda.md +++ b/src/foundation/involutions.lagda.md @@ -16,6 +16,7 @@ open import foundation.homotopy-algebra open import foundation.homotopy-induction open import foundation.structure-identity-principle open import foundation.universe-levels +open import foundation.whiskering-homotopies-composition open import foundation-core.function-extensionality open import foundation-core.function-types @@ -25,7 +26,6 @@ open import foundation-core.injective-maps open import foundation-core.torsorial-type-families open import foundation-core.truncated-types open import foundation-core.truncation-levels -open import foundation.whiskering-homotopies-composition open import structured-types.pointed-types ``` diff --git a/src/foundation/iterating-automorphisms.lagda.md b/src/foundation/iterating-automorphisms.lagda.md index ecf94e3f41..dfae65d2f3 100644 --- a/src/foundation/iterating-automorphisms.lagda.md +++ b/src/foundation/iterating-automorphisms.lagda.md @@ -15,12 +15,12 @@ open import foundation.automorphisms open import foundation.equivalence-extensionality open import foundation.iterating-functions open import foundation.universe-levels +open import foundation.whiskering-homotopies-composition open import foundation-core.coproduct-types open import foundation-core.equivalences open import foundation-core.function-types open import foundation-core.homotopies -open import foundation.whiskering-homotopies-composition ``` diff --git a/src/foundation/monomorphisms.lagda.md b/src/foundation/monomorphisms.lagda.md index 9eccfd6361..724f650881 100644 --- a/src/foundation/monomorphisms.lagda.md +++ b/src/foundation/monomorphisms.lagda.md @@ -13,6 +13,7 @@ open import foundation.embeddings open import foundation.functoriality-function-types open import foundation.postcomposition-functions open import foundation.universe-levels +open import foundation.whiskering-homotopies-composition open import foundation-core.equivalences open import foundation-core.function-extensionality @@ -22,7 +23,6 @@ open import foundation-core.identity-types open import foundation-core.propositional-maps open import foundation-core.propositions open import foundation-core.truncation-levels -open import foundation.whiskering-homotopies-composition ``` diff --git a/src/foundation/morphisms-arrows.lagda.md b/src/foundation/morphisms-arrows.lagda.md index 0316f8f639..1ee443c09c 100644 --- a/src/foundation/morphisms-arrows.lagda.md +++ b/src/foundation/morphisms-arrows.lagda.md @@ -214,7 +214,9 @@ maps. The {{#concept "composition" Disambiguation="morphism of arrows"}} of β₁ ∘ α₁ ``` -**Note.** Associativity and the unit laws for composition of morphisms of arrows are proven in [Homotopies of morphisms of arrows](foundation.homotopies-morphisms-arrows.md). +**Note.** Associativity and the unit laws for composition of morphisms of arrows +are proven in +[Homotopies of morphisms of arrows](foundation.homotopies-morphisms-arrows.md). ```agda module _ diff --git a/src/foundation/morphisms-inverse-sequential-diagrams.lagda.md b/src/foundation/morphisms-inverse-sequential-diagrams.lagda.md index a97f2d08d1..0f260a9039 100644 --- a/src/foundation/morphisms-inverse-sequential-diagrams.lagda.md +++ b/src/foundation/morphisms-inverse-sequential-diagrams.lagda.md @@ -19,13 +19,13 @@ open import foundation.homotopy-induction open import foundation.inverse-sequential-diagrams open import foundation.structure-identity-principle open import foundation.universe-levels +open import foundation.whiskering-homotopies-composition open import foundation-core.equivalences open import foundation-core.function-types open import foundation-core.homotopies open import foundation-core.identity-types open import foundation-core.torsorial-type-families -open import foundation.whiskering-homotopies-composition ``` diff --git a/src/foundation/pi-decompositions.lagda.md b/src/foundation/pi-decompositions.lagda.md index be1139b438..1d57a83088 100644 --- a/src/foundation/pi-decompositions.lagda.md +++ b/src/foundation/pi-decompositions.lagda.md @@ -17,6 +17,7 @@ open import foundation.fundamental-theorem-of-identity-types open import foundation.structure-identity-principle open import foundation.univalence open import foundation.universe-levels +open import foundation.whiskering-homotopies-composition open import foundation-core.contractible-types open import foundation-core.function-types @@ -25,7 +26,6 @@ open import foundation-core.homotopies open import foundation-core.identity-types open import foundation-core.torsorial-type-families open import foundation-core.type-theoretic-principle-of-choice -open import foundation.whiskering-homotopies-composition ``` diff --git a/src/foundation/postcomposition-functions.lagda.md b/src/foundation/postcomposition-functions.lagda.md index 34e1251b7d..e9962b1a8d 100644 --- a/src/foundation/postcomposition-functions.lagda.md +++ b/src/foundation/postcomposition-functions.lagda.md @@ -12,6 +12,7 @@ open import foundation-core.postcomposition-functions public open import foundation.action-on-identifications-functions open import foundation.dependent-pair-types open import foundation.universe-levels +open import foundation.whiskering-homotopies-composition open import foundation-core.commuting-squares-of-maps open import foundation-core.commuting-triangles-of-maps @@ -26,7 +27,6 @@ open import foundation-core.functoriality-dependent-pair-types open import foundation-core.homotopies open import foundation-core.identity-types open import foundation-core.type-theoretic-principle-of-choice -open import foundation.whiskering-homotopies-composition ``` diff --git a/src/foundation/precomposition-functions.lagda.md b/src/foundation/precomposition-functions.lagda.md index c9126b7b90..90bd8a047c 100644 --- a/src/foundation/precomposition-functions.lagda.md +++ b/src/foundation/precomposition-functions.lagda.md @@ -14,6 +14,7 @@ open import foundation.dependent-pair-types open import foundation.precomposition-dependent-functions open import foundation.sections open import foundation.universe-levels +open import foundation.whiskering-homotopies-composition open import foundation-core.commuting-squares-of-maps open import foundation-core.commuting-triangles-of-maps @@ -25,7 +26,6 @@ open import foundation-core.functoriality-dependent-pair-types open import foundation-core.homotopies open import foundation-core.identity-types open import foundation-core.retractions -open import foundation.whiskering-homotopies-composition ``` diff --git a/src/foundation/precomposition-type-families.lagda.md b/src/foundation/precomposition-type-families.lagda.md index 4209546f41..0d86dd8b97 100644 --- a/src/foundation/precomposition-type-families.lagda.md +++ b/src/foundation/precomposition-type-families.lagda.md @@ -10,11 +10,11 @@ module foundation.precomposition-type-families where open import foundation.homotopy-induction open import foundation.transport-along-homotopies open import foundation.universe-levels +open import foundation.whiskering-homotopies-composition open import foundation-core.function-types open import foundation-core.homotopies open import foundation-core.identity-types -open import foundation.whiskering-homotopies-composition ``` diff --git a/src/foundation/pullbacks.lagda.md b/src/foundation/pullbacks.lagda.md index b919efc751..c48026ca98 100644 --- a/src/foundation/pullbacks.lagda.md +++ b/src/foundation/pullbacks.lagda.md @@ -27,6 +27,7 @@ open import foundation.identity-types open import foundation.multivariable-homotopies open import foundation.unit-type open import foundation.universe-levels +open import foundation.whiskering-homotopies-composition open import foundation.whiskering-identifications-concatenation open import foundation-core.cartesian-product-types @@ -43,7 +44,6 @@ open import foundation-core.retractions open import foundation-core.sections open import foundation-core.torsorial-type-families open import foundation-core.transport-along-identifications -open import foundation.whiskering-homotopies-composition ``` diff --git a/src/foundation/retractions.lagda.md b/src/foundation/retractions.lagda.md index f358001997..a58a62b32d 100644 --- a/src/foundation/retractions.lagda.md +++ b/src/foundation/retractions.lagda.md @@ -14,13 +14,13 @@ open import foundation.coslice open import foundation.dependent-pair-types open import foundation.retracts-of-types open import foundation.universe-levels +open import foundation.whiskering-homotopies-composition open import foundation-core.equivalences open import foundation-core.function-types open import foundation-core.homotopies open import foundation-core.identity-types open import foundation-core.injective-maps -open import foundation.whiskering-homotopies-composition ``` diff --git a/src/foundation/retracts-of-maps.lagda.md b/src/foundation/retracts-of-maps.lagda.md index 8004b9b751..2a359dd83b 100644 --- a/src/foundation/retracts-of-maps.lagda.md +++ b/src/foundation/retracts-of-maps.lagda.md @@ -17,6 +17,7 @@ open import foundation.postcomposition-functions open import foundation.precomposition-functions open import foundation.retracts-of-types open import foundation.universe-levels +open import foundation.whiskering-homotopies-composition open import foundation-core.commuting-squares-of-maps open import foundation-core.equivalences @@ -27,7 +28,6 @@ open import foundation-core.homotopies open import foundation-core.identity-types open import foundation-core.retractions open import foundation-core.sections -open import foundation.whiskering-homotopies-composition ``` diff --git a/src/foundation/retracts-of-types.lagda.md b/src/foundation/retracts-of-types.lagda.md index 3c86ffbd75..2f2511823b 100644 --- a/src/foundation/retracts-of-types.lagda.md +++ b/src/foundation/retracts-of-types.lagda.md @@ -10,13 +10,13 @@ module foundation.retracts-of-types where open import foundation.action-on-identifications-functions open import foundation.dependent-pair-types open import foundation.universe-levels +open import foundation.whiskering-homotopies-composition open import foundation-core.function-extensionality open import foundation-core.identity-types open import foundation-core.precomposition-functions open import foundation-core.retractions open import foundation-core.sections -open import foundation.whiskering-homotopies-composition ``` diff --git a/src/foundation/sections.lagda.md b/src/foundation/sections.lagda.md index bf9547f722..f07762f578 100644 --- a/src/foundation/sections.lagda.md +++ b/src/foundation/sections.lagda.md @@ -16,6 +16,7 @@ open import foundation.retracts-of-types open import foundation.structure-identity-principle open import foundation.type-arithmetic-dependent-pair-types open import foundation.universe-levels +open import foundation.whiskering-homotopies-composition open import foundation-core.contractible-types open import foundation-core.equivalences @@ -26,7 +27,6 @@ open import foundation-core.homotopies open import foundation-core.identity-types open import foundation-core.injective-maps open import foundation-core.type-theoretic-principle-of-choice -open import foundation.whiskering-homotopies-composition ``` diff --git a/src/foundation/sequential-limits.lagda.md b/src/foundation/sequential-limits.lagda.md index df449c56cb..563afddf8e 100644 --- a/src/foundation/sequential-limits.lagda.md +++ b/src/foundation/sequential-limits.lagda.md @@ -10,7 +10,6 @@ module foundation.sequential-limits where open import elementary-number-theory.natural-numbers open import foundation.action-on-identifications-functions -open import foundation-core.commuting-squares-of-homotopies open import foundation.cones-over-inverse-sequential-diagrams open import foundation.dependent-pair-types open import foundation.equality-dependent-function-types @@ -22,6 +21,7 @@ open import foundation.structure-identity-principle open import foundation.universal-property-sequential-limits open import foundation.universe-levels +open import foundation-core.commuting-squares-of-homotopies open import foundation-core.contractible-types open import foundation-core.function-types open import foundation-core.homotopies diff --git a/src/foundation/set-quotients.lagda.md b/src/foundation/set-quotients.lagda.md index c507beb1d2..7e119b10c9 100644 --- a/src/foundation/set-quotients.lagda.md +++ b/src/foundation/set-quotients.lagda.md @@ -23,6 +23,7 @@ open import foundation.uniqueness-set-quotients open import foundation.universal-property-image open import foundation.universal-property-set-quotients open import foundation.universe-levels +open import foundation.whiskering-homotopies-composition open import foundation-core.equivalence-relations open import foundation-core.function-extensionality @@ -32,7 +33,6 @@ open import foundation-core.homotopies open import foundation-core.propositions open import foundation-core.small-types open import foundation-core.subtypes -open import foundation.whiskering-homotopies-composition ``` diff --git a/src/foundation/slice.lagda.md b/src/foundation/slice.lagda.md index 407fcc5d69..2fa14b916e 100644 --- a/src/foundation/slice.lagda.md +++ b/src/foundation/slice.lagda.md @@ -17,6 +17,7 @@ open import foundation.structure-identity-principle open import foundation.type-arithmetic-dependent-pair-types open import foundation.univalence open import foundation.universe-levels +open import foundation.whiskering-homotopies-composition open import foundation-core.embeddings open import foundation-core.equality-dependent-pair-types @@ -31,7 +32,6 @@ open import foundation-core.propositional-maps open import foundation-core.propositions open import foundation-core.torsorial-type-families open import foundation-core.type-theoretic-principle-of-choice -open import foundation.whiskering-homotopies-composition open import trees.polynomial-endofunctors ``` diff --git a/src/foundation/transport-along-higher-identifications.lagda.md b/src/foundation/transport-along-higher-identifications.lagda.md index 15866027fa..ad51dc848a 100644 --- a/src/foundation/transport-along-higher-identifications.lagda.md +++ b/src/foundation/transport-along-higher-identifications.lagda.md @@ -11,11 +11,11 @@ open import foundation.action-on-identifications-functions open import foundation.commuting-squares-of-identifications open import foundation.homotopies open import foundation.universe-levels +open import foundation.whiskering-homotopies-composition open import foundation.whiskering-identifications-concatenation open import foundation-core.identity-types open import foundation-core.transport-along-identifications -open import foundation.whiskering-homotopies-composition ``` diff --git a/src/foundation/truncations.lagda.md b/src/foundation/truncations.lagda.md index dec436b8e4..1fb55bfb55 100644 --- a/src/foundation/truncations.lagda.md +++ b/src/foundation/truncations.lagda.md @@ -16,6 +16,7 @@ open import foundation.identity-types open import foundation.truncated-types open import foundation.universal-property-dependent-pair-types open import foundation.universe-levels +open import foundation.whiskering-homotopies-composition open import foundation-core.contractible-maps open import foundation-core.equality-dependent-pair-types @@ -29,7 +30,6 @@ open import foundation-core.propositions open import foundation-core.torsorial-type-families open import foundation-core.truncation-levels open import foundation-core.universal-property-truncation -open import foundation.whiskering-homotopies-composition ``` diff --git a/src/foundation/uniqueness-image.lagda.md b/src/foundation/uniqueness-image.lagda.md index f3f43dbc4e..4711b5a4d1 100644 --- a/src/foundation/uniqueness-image.lagda.md +++ b/src/foundation/uniqueness-image.lagda.md @@ -14,6 +14,7 @@ open import foundation.slice open import foundation.type-arithmetic-dependent-pair-types open import foundation.universal-property-image open import foundation.universe-levels +open import foundation.whiskering-homotopies-composition open import foundation-core.commuting-triangles-of-maps open import foundation-core.contractible-types @@ -22,7 +23,6 @@ open import foundation-core.function-types open import foundation-core.functoriality-dependent-pair-types open import foundation-core.homotopies open import foundation-core.propositions -open import foundation.whiskering-homotopies-composition ``` diff --git a/src/foundation/uniqueness-set-quotients.lagda.md b/src/foundation/uniqueness-set-quotients.lagda.md index edb603ab2f..77767eab19 100644 --- a/src/foundation/uniqueness-set-quotients.lagda.md +++ b/src/foundation/uniqueness-set-quotients.lagda.md @@ -16,6 +16,7 @@ open import foundation.subtype-identity-principle open import foundation.universal-property-equivalences open import foundation.universal-property-set-quotients open import foundation.universe-levels +open import foundation.whiskering-homotopies-composition open import foundation-core.contractible-types open import foundation-core.equivalence-relations @@ -25,7 +26,6 @@ open import foundation-core.homotopies open import foundation-core.identity-types open import foundation-core.injective-maps open import foundation-core.precomposition-functions -open import foundation.whiskering-homotopies-composition ``` diff --git a/src/foundation/unital-binary-operations.lagda.md b/src/foundation/unital-binary-operations.lagda.md index b9a3db29d9..5c343797cf 100644 --- a/src/foundation/unital-binary-operations.lagda.md +++ b/src/foundation/unital-binary-operations.lagda.md @@ -10,12 +10,12 @@ module foundation.unital-binary-operations where open import foundation.action-on-identifications-functions open import foundation.dependent-pair-types open import foundation.universe-levels +open import foundation.whiskering-homotopies-composition open import foundation.whiskering-identifications-concatenation open import foundation-core.cartesian-product-types open import foundation-core.homotopies open import foundation-core.identity-types -open import foundation.whiskering-homotopies-composition ``` diff --git a/src/foundation/universal-property-image.lagda.md b/src/foundation/universal-property-image.lagda.md index 3acbd8a172..1e1636519d 100644 --- a/src/foundation/universal-property-image.lagda.md +++ b/src/foundation/universal-property-image.lagda.md @@ -17,6 +17,7 @@ open import foundation.surjective-maps open import foundation.transport-along-identifications open import foundation.universal-property-family-of-fibers-of-maps open import foundation.universe-levels +open import foundation.whiskering-homotopies-composition open import foundation-core.contractible-maps open import foundation-core.contractible-types @@ -32,7 +33,6 @@ open import foundation-core.propositional-maps open import foundation-core.propositions open import foundation-core.sections open import foundation-core.subtypes -open import foundation.whiskering-homotopies-composition ``` diff --git a/src/foundation/universal-property-set-quotients.lagda.md b/src/foundation/universal-property-set-quotients.lagda.md index 37fbe61e38..665b172d75 100644 --- a/src/foundation/universal-property-set-quotients.lagda.md +++ b/src/foundation/universal-property-set-quotients.lagda.md @@ -29,6 +29,7 @@ open import foundation.transport-along-identifications open import foundation.universal-property-dependent-pair-types open import foundation.universal-property-image open import foundation.universe-levels +open import foundation.whiskering-homotopies-composition open import foundation-core.cartesian-product-types open import foundation-core.commuting-triangles-of-maps @@ -50,7 +51,6 @@ open import foundation-core.subtypes open import foundation-core.torsorial-type-families open import foundation-core.type-theoretic-principle-of-choice open import foundation-core.univalence -open import foundation.whiskering-homotopies-composition ``` diff --git a/src/foundation/unordered-pairs.lagda.md b/src/foundation/unordered-pairs.lagda.md index 5f47d2b94a..2fa7deddbc 100644 --- a/src/foundation/unordered-pairs.lagda.md +++ b/src/foundation/unordered-pairs.lagda.md @@ -24,6 +24,7 @@ open import foundation.type-arithmetic-dependent-function-types open import foundation.universal-property-contractible-types open import foundation.universal-property-dependent-pair-types open import foundation.universe-levels +open import foundation.whiskering-homotopies-composition open import foundation-core.contractible-maps open import foundation-core.coproduct-types @@ -39,7 +40,6 @@ open import foundation-core.precomposition-dependent-functions open import foundation-core.propositions open import foundation-core.sets open import foundation-core.torsorial-type-families -open import foundation.whiskering-homotopies-composition open import univalent-combinatorics.2-element-types open import univalent-combinatorics.equality-standard-finite-types diff --git a/src/foundation/unordered-tuples.lagda.md b/src/foundation/unordered-tuples.lagda.md index 3c7917587e..03fa22fab0 100644 --- a/src/foundation/unordered-tuples.lagda.md +++ b/src/foundation/unordered-tuples.lagda.md @@ -16,6 +16,7 @@ open import foundation.homotopy-induction open import foundation.postcomposition-functions open import foundation.structure-identity-principle open import foundation.universe-levels +open import foundation.whiskering-homotopies-composition open import foundation-core.equivalences open import foundation-core.function-types @@ -24,7 +25,6 @@ open import foundation-core.homotopies open import foundation-core.identity-types open import foundation-core.sets open import foundation-core.torsorial-type-families -open import foundation.whiskering-homotopies-composition open import univalent-combinatorics.complements-isolated-elements open import univalent-combinatorics.equality-finite-types diff --git a/src/foundation/whiskering-higher-homotopies-composition.lagda.md b/src/foundation/whiskering-higher-homotopies-composition.lagda.md index 4fa67bec1b..8403f4dc71 100644 --- a/src/foundation/whiskering-higher-homotopies-composition.lagda.md +++ b/src/foundation/whiskering-higher-homotopies-composition.lagda.md @@ -9,9 +9,9 @@ module foundation.whiskering-higher-homotopies-composition where ```agda open import foundation.action-on-identifications-functions open import foundation.universe-levels +open import foundation.whiskering-homotopies-composition open import foundation-core.homotopies -open import foundation.whiskering-homotopies-composition ``` diff --git a/src/foundation/whiskering-homotopies-concatenation.lagda.md b/src/foundation/whiskering-homotopies-concatenation.lagda.md index b7fbfa588f..aa4f5ac842 100644 --- a/src/foundation/whiskering-homotopies-concatenation.lagda.md +++ b/src/foundation/whiskering-homotopies-concatenation.lagda.md @@ -20,13 +20,20 @@ open import foundation-core.homotopies ## 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 ∙ I ~ H ∙ J`. In other words, left whiskering of homotopies with respect to concatenation is a [whiskering operation](foundation.whiskering-operations.md) +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 ∙ I ~ 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 +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. @@ -42,7 +49,8 @@ Left whiskering of homotopies with respect to concatenation is an operation (H : f ~ g) {I J : g ~ h} → I ~ J → H ∙h I ~ H ∙h K. ``` -We implement the left whiskering operation of homotopies with respect to concatenation as an instance of a general left whiskering operation. +We implement the left whiskering operation of homotopies with respect to +concatenation as an instance of a general left whiskering operation. ```agda module _ @@ -62,7 +70,8 @@ Right whiskering of homotopies with respect to concatenation is an operation {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. +We implement the right whiskering operation of homotopies with respect to +concatenation as an instance of a general right whiskering operation. ```agda module _ @@ -146,4 +155,3 @@ module _ right-unit-law-right-whisker-concat-htpy K x = right-unit-law-right-whisker-concat (K x) ``` - diff --git a/src/foundation/whiskering-identifications-concatenation.lagda.md b/src/foundation/whiskering-identifications-concatenation.lagda.md index 81700811bc..8e19547236 100644 --- a/src/foundation/whiskering-identifications-concatenation.lagda.md +++ b/src/foundation/whiskering-identifications-concatenation.lagda.md @@ -64,7 +64,8 @@ module _ ### Right whiskering of identifications -Right whiskering of identifications with respect to concatenation is an operation +Right whiskering of identifications with respect to concatenation is an +operation ```text {p q : x = y} → p = q → (r : y = z) → p ∙ r = q ∙ r @@ -156,7 +157,8 @@ module _ ### The unit and absorption laws for right whiskering of identifications -The right unit law for right whiskering of identifications with respect to concatenation asserts that the square of identifications +The right unit law for right whiskering of identifications with respect to +concatenation asserts that the square of identifications ```text right-whisker-concat α refl @@ -167,7 +169,9 @@ The right unit law for right whiskering of identifications with respect to conca p -------------------------------------> p' ``` -commutes for any `α : p = p'`. Note that this law is slightly more complicated, since concatenating with `refl` on the right does not compute to the identity function. +commutes for any `α : p = p'`. Note that this law is slightly more complicated, +since concatenating with `refl` on the right does not compute to the identity +function. ```agda module _ diff --git a/src/orthogonal-factorization-systems/lifting-squares.lagda.md b/src/orthogonal-factorization-systems/lifting-squares.lagda.md index 4e3a11a9a6..4d942ffdee 100644 --- a/src/orthogonal-factorization-systems/lifting-squares.lagda.md +++ b/src/orthogonal-factorization-systems/lifting-squares.lagda.md @@ -263,7 +263,8 @@ module _ is-lifting-square-pullback-hom : (j : B → X) → is-lifting-square f g (pullback-hom f g j) j - is-lifting-square-pullback-hom j = refl-htpy-hom-arrow f g (pullback-hom f g j) + is-lifting-square-pullback-hom j = + refl-htpy-hom-arrow f g (pullback-hom f g j) ``` ## Properties diff --git a/src/orthogonal-factorization-systems/pullback-hom.lagda.md b/src/orthogonal-factorization-systems/pullback-hom.lagda.md index e760ae0a5a..427a177297 100644 --- a/src/orthogonal-factorization-systems/pullback-hom.lagda.md +++ b/src/orthogonal-factorization-systems/pullback-hom.lagda.md @@ -40,7 +40,8 @@ open import foundation.whiskering-homotopies-composition ## Idea -The {{#concept "pullback-hom" Agda=pullback-hom}} or {{#concept "pullback-power" Agda=pullback-hom}} of two maps `f : A → B` and +The {{#concept "pullback-hom" Agda=pullback-hom}} or +{{#concept "pullback-power" Agda=pullback-hom}} of two maps `f : A → B` and `g : X → Y`, is the [gap map](foundation.pullbacks.md) of the [commuting square](foundation-core.commuting-squares-of-maps.md): @@ -73,7 +74,8 @@ This map takes a map `j : B → X` as in the diagram B Y ``` -to the [morphism of arrows](foundation.morphisms-arrows.md) from `f` to `g` as in the diagram +to the [morphism of arrows](foundation.morphisms-arrows.md) from `f` to `g` as +in the diagram ```text j ∘ f @@ -85,7 +87,9 @@ to the [morphism of arrows](foundation.morphisms-arrows.md) from `f` to `g` as i g ∘ j ``` -The [fibers](foundation-core.fibers-of-maps.md) of the pullback-hom are [lifting squares](orthogonal-factorization-systems.lifting-squares.md). The pullback-hom is therefore a fundamental operation in the study of +The [fibers](foundation-core.fibers-of-maps.md) of the pullback-hom are +[lifting squares](orthogonal-factorization-systems.lifting-squares.md). The +pullback-hom is therefore a fundamental operation in the study of [lifting conditions](orthogonal-factorization-systems.mere-lifting-properties.md) and [orthogonality conditions](orthogonal-factorization-systems.orthogonal-maps.md): @@ -108,14 +112,13 @@ pushout-product: ⟨f □ g , h⟩ = ⟨f , ⟨g , h⟩⟩. ``` -## Idea - ## Definitions ### The pullback-hom The pullback-hom `f ⋔ g` is the map `(B → X) → hom-arrow f g`, that takes a -diagonal map `j` from the codomain of `f` to the domain of `g` to the morphism of arrows +diagonal map `j` from the codomain of `f` to the domain of `g` to the morphism +of arrows ```text j ∘ f @@ -180,10 +183,13 @@ module _ ( precomp f Y) coherence-square-cone-hom-arrow-pullback-hom h = eq-htpy (coh-hom-arrow f g h) - cone-hom-arrow-pullback-hom : cone (precomp f Y) (postcomp A g) (hom-arrow f g) + cone-hom-arrow-pullback-hom : + cone (precomp f Y) (postcomp A g) (hom-arrow f g) pr1 cone-hom-arrow-pullback-hom = left-projection-hom-arrow-pullback-hom - pr1 (pr2 cone-hom-arrow-pullback-hom) = right-projection-hom-arrow-pullback-hom - pr2 (pr2 cone-hom-arrow-pullback-hom) = coherence-square-cone-hom-arrow-pullback-hom + pr1 (pr2 cone-hom-arrow-pullback-hom) = + right-projection-hom-arrow-pullback-hom + pr2 (pr2 cone-hom-arrow-pullback-hom) = + coherence-square-cone-hom-arrow-pullback-hom ``` ### The standard pullback of the defining cospan of the pullback-hom @@ -315,7 +321,8 @@ We construct the homotopy witnessing that the triangle of maps hom-arrow f g -----> type-standard-pullback-hom f g ``` -commutes. The bottom map in this triangle is the underlying map of the equivalence `hom-arrow f g ≃ type-stanard-pullback-hom f g` constructed above. +commutes. The bottom map in this triangle is the underlying map of the +equivalence `hom-arrow f g ≃ type-stanard-pullback-hom f g` constructed above. ```agda module _ @@ -451,7 +458,7 @@ module _ map-codomain-left-whisker-hom-arrow α = h ∘ map-codomain-hom-arrow f g α coh-left-whisker-hom-arrow : - (α : hom-arrow f g) → + (α : hom-arrow f g) → coherence-square-maps ( map-domain-left-whisker-hom-arrow α) ( f) @@ -491,13 +498,13 @@ module _ ( map-codomain-right-whisker-hom-arrow α) coh-right-whisker-hom-arrow α = coh-hom-arrow f g α ·r h - + right-whisker-hom-arrow : hom-arrow f g → hom-arrow (f ∘ h) g pr1 (right-whisker-hom-arrow α) = map-domain-right-whisker-hom-arrow α pr1 (pr2 (right-whisker-hom-arrow α)) = map-codomain-right-whisker-hom-arrow α pr2 (pr2 (right-whisker-hom-arrow α)) = coh-right-whisker-hom-arrow α - + compute-pullback-hom-comp-left : coherence-triangle-maps ( pullback-hom (f ∘ h) g) diff --git a/src/synthetic-homotopy-theory/cocones-under-spans.lagda.md b/src/synthetic-homotopy-theory/cocones-under-spans.lagda.md index 5a84bb4f61..af13fee3e9 100644 --- a/src/synthetic-homotopy-theory/cocones-under-spans.lagda.md +++ b/src/synthetic-homotopy-theory/cocones-under-spans.lagda.md @@ -15,6 +15,7 @@ open import foundation.homotopy-induction open import foundation.morphisms-arrows open import foundation.structure-identity-principle open import foundation.universe-levels +open import foundation.whiskering-homotopies-composition open import foundation-core.commuting-squares-of-maps open import foundation-core.contractible-types @@ -25,7 +26,6 @@ open import foundation-core.function-types open import foundation-core.functoriality-dependent-pair-types open import foundation-core.identity-types open import foundation-core.torsorial-type-families -open import foundation.whiskering-homotopies-composition ``` diff --git a/src/synthetic-homotopy-theory/double-loop-spaces.lagda.md b/src/synthetic-homotopy-theory/double-loop-spaces.lagda.md index 8d5c126308..9d75d749c2 100644 --- a/src/synthetic-homotopy-theory/double-loop-spaces.lagda.md +++ b/src/synthetic-homotopy-theory/double-loop-spaces.lagda.md @@ -68,7 +68,7 @@ horizontal-concat-Ω² α β = horizontal-concat-Id² α β module _ {l : Level} {A : UU l} where - + left-unit-law-vertical-concat-Ω² : {a : A} {α : type-Ω² a} → Id (vertical-concat-Ω² refl-Ω² α) α From 60c5912fe0f72e54e6ed41552ede46504d2b17cf Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Sun, 4 Feb 2024 21:21:22 +0100 Subject: [PATCH 104/150] fix broken links --- src/foundation/morphisms-arrows.lagda.md | 2 +- src/foundation/whiskering-operations.lagda.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/foundation/morphisms-arrows.lagda.md b/src/foundation/morphisms-arrows.lagda.md index 1ee443c09c..70e8522e9e 100644 --- a/src/foundation/morphisms-arrows.lagda.md +++ b/src/foundation/morphisms-arrows.lagda.md @@ -308,5 +308,5 @@ module _ - [Morphisms of twisted arrows](foundation.morphisms-twisted-arrows.md). - [Fibered maps](foundation.fibered-maps.md) for the same concept under a different name. -- [Morphisms of arrows obtained from diagonal maps](orthogonal-factorization-systems.morphisms-arrows-from-diagonal-maps.md) +- [The pullback-hom](orthogonal-factorization-systems.pullback-hom.md) is an operation that returns a morphism of arrows from a diagonal map. - [Homotopies of morphisms of arrows](foundation.homotopies-morphisms-arrows.md) diff --git a/src/foundation/whiskering-operations.lagda.md b/src/foundation/whiskering-operations.lagda.md index bdc709d993..991896c30d 100644 --- a/src/foundation/whiskering-operations.lagda.md +++ b/src/foundation/whiskering-operations.lagda.md @@ -78,7 +78,7 @@ naming scheme for all the variations of whiskering that exist in the of homotopies with respect to composition of functions. 3. In - [whiskering homotopies with respect to concatenation](foundation.whiskering-homotopies-composition-concatenation.md) + [whiskering homotopies with respect to concatenation](foundation.whiskering-homotopies-concatenation.md) we define the whiskering operations ```text From 7b50668e459b517aa483905e99350d0cd04457ea Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Sun, 4 Feb 2024 21:23:11 +0100 Subject: [PATCH 105/150] make pre-commit --- src/foundation/morphisms-arrows.lagda.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/foundation/morphisms-arrows.lagda.md b/src/foundation/morphisms-arrows.lagda.md index 70e8522e9e..2644acd451 100644 --- a/src/foundation/morphisms-arrows.lagda.md +++ b/src/foundation/morphisms-arrows.lagda.md @@ -308,5 +308,6 @@ module _ - [Morphisms of twisted arrows](foundation.morphisms-twisted-arrows.md). - [Fibered maps](foundation.fibered-maps.md) for the same concept under a different name. -- [The pullback-hom](orthogonal-factorization-systems.pullback-hom.md) is an operation that returns a morphism of arrows from a diagonal map. +- [The pullback-hom](orthogonal-factorization-systems.pullback-hom.md) is an + operation that returns a morphism of arrows from a diagonal map. - [Homotopies of morphisms of arrows](foundation.homotopies-morphisms-arrows.md) From f64eaecc1f3e6d3d71eddb6bd961756878743356 Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Mon, 5 Feb 2024 08:53:29 +0100 Subject: [PATCH 106/150] resolving first batch of review comments --- src/foundation-core/identity-types.lagda.md | 14 +++++++++----- ...n-higher-identifications-functions.lagda.md | 6 ++++-- .../commuting-triangles-of-homotopies.lagda.md | 2 +- ...ring-higher-homotopies-composition.lagda.md | 18 ++++++++++++++++-- .../whiskering-homotopies-composition.lagda.md | 8 ++++---- 5 files changed, 34 insertions(+), 14 deletions(-) diff --git a/src/foundation-core/identity-types.lagda.md b/src/foundation-core/identity-types.lagda.md index caf7bb75e2..3eca57dd7d 100644 --- a/src/foundation-core/identity-types.lagda.md +++ b/src/foundation-core/identity-types.lagda.md @@ -14,13 +14,15 @@ open import foundation.universe-levels ## Idea -The equality relation on a type is introduced as binary family of types +The {{#concept "equality" Agda=Id}} relation is defined in type theory by the +{{#concept "identity type" Agda=Id}}. The identity type on a type `A` is a +binary family of types ```text Id : A → A → 𝒰 ``` -equipped with a proof of reflexivity +equipped with a {{#concept "reflexivity element" Disambiguation="identity type" Agda=refl}} ```text refl : (x : A) → Id x x. @@ -124,8 +126,8 @@ ind-Id x B b y refl = b ## Operations on the identity type The identity types form a weak groupoidal structure on types. Thus they come -equipped with **concatenation** `(x = y) → (y = z) → (x = z)` and an -**inverse operation** `(x = y) → (y = x)`. +equipped with {{#concept "concatenation" Disambiguation="identifications" Agda=concat]} `(x = y) → (y = z) → (x = z)` and an +{{#concept "inverse" Disambiguation="identification" Agda=inv}} operation `(x = y) → (y = x)`. There are many more operations on identity types. Some of them are defined in [path algebra](foundation.path-algebra.md) and @@ -475,7 +477,7 @@ construct an identification. Some constructions of identifications naturally involve computations that are more deeply nested in the terms. Furthermore, proofs by equational reasoning tend to require a lot of reassociation. -Some tools that allow us to perform faster comutations are the transpositions +Some tools that allow us to perform faster computations are the transpositions defined above, the transpositions and splicing operations defined in [commuting squares of identifications](foundation.commuting-squares-of-identifications.md) and @@ -485,6 +487,8 @@ and the higher concatenation operations defined in computational behavior, so there is infrastructure for reasoning about identifications that are constructed using them. +We also note that there is similar infrastructure for [homotopy reasoning](foundation-core.homotopies.md). + ## References Our setup of equational reasoning is derived from the following sources: diff --git a/src/foundation/action-on-higher-identifications-functions.lagda.md b/src/foundation/action-on-higher-identifications-functions.lagda.md index 1d6f68c923..376101bd03 100644 --- a/src/foundation/action-on-higher-identifications-functions.lagda.md +++ b/src/foundation/action-on-higher-identifications-functions.lagda.md @@ -30,7 +30,7 @@ which is a map ap² f : (p = q) → (ap f p = ap f q) ``` -Here `p q : x = y` are identifications in the type `A`. The action of `f` on +Here `p q : x = y` are [identifications](foundation-core.identity-types.md) in the type `A`. The action of `f` on higher identifications is defined by ```text @@ -69,7 +69,7 @@ identifications horizontal-inv-Id² (ap² f α) ``` -commutes. +[commutes](foundation.commuting-squares-of-identifications.md). ```agda module _ @@ -168,6 +168,8 @@ of identifications refl ``` +[commutes](foundation.commuting-triangles-of-identifications.md). + ```agda module _ {l1 l2 : Level} {A : UU l1} {B : UU l2} {x y : A} diff --git a/src/foundation/commuting-triangles-of-homotopies.lagda.md b/src/foundation/commuting-triangles-of-homotopies.lagda.md index b063408f04..2dc1e65a6d 100644 --- a/src/foundation/commuting-triangles-of-homotopies.lagda.md +++ b/src/foundation/commuting-triangles-of-homotopies.lagda.md @@ -33,7 +33,7 @@ A triangle of [homotopies](foundation-core.homotopies.md) of dependent functions h ``` -is said to commute if there is a homotopy `left ~ top ∙h right`. +is said to {{#concept "commute" Disambiguation="triangle of homotopies" Agda=coherence-triangle-homotopies}} if there is a homotopy `left ~ top ∙h right`. ## Definitions diff --git a/src/foundation/whiskering-higher-homotopies-composition.lagda.md b/src/foundation/whiskering-higher-homotopies-composition.lagda.md index 8403f4dc71..debc61b1ff 100644 --- a/src/foundation/whiskering-higher-homotopies-composition.lagda.md +++ b/src/foundation/whiskering-higher-homotopies-composition.lagda.md @@ -19,14 +19,14 @@ open import foundation-core.homotopies ## Idea Consider two dependent functions `f g : (x : A) → B x` equipped with two -homotopies `H H' : f ~ g`, and consider a family of maps +[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 of 2-homotopies"}}. +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) @@ -36,6 +36,20 @@ by α 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 diff --git a/src/foundation/whiskering-homotopies-composition.lagda.md b/src/foundation/whiskering-homotopies-composition.lagda.md index a007657c30..d81da65f44 100644 --- a/src/foundation/whiskering-homotopies-composition.lagda.md +++ b/src/foundation/whiskering-homotopies-composition.lagda.md @@ -19,9 +19,9 @@ open import foundation-core.identity-types ## Idea -There are two **whiskering operations** on -[homotopies](foundation-core.homotopies.md). The **left whiskering** operation -assumes a diagram of the form +There are two {{#concept "whiskering operations" Disambiguation="homotopies with respect to compostion"}} on +[homotopies](foundation-core.homotopies.md) with respect to composition. The {{#concept "left whiskering" Disambiguation="homotopies with respect to composition" Agda=left-whisker-comp}} operation of homotopies with respect to composition +assumes a diagram of maps of the form ```text f @@ -31,7 +31,7 @@ assumes a diagram of the form ``` and is defined to be a function `H ↦ h ·l H : (f ~ g) → (h ∘ f ~ h ∘ g)`. The -**right whiskering** operation assumes a diagram of the form +{{#concept "right whiskering" Disambiguation="homotopies with respect to composition" Agda=right-whisker-comp}} operation of homotopies with respect to composition assumes a diagram of maps the form ```text g From c754ab3a017c746d645bafa25551869da80d4c06 Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Mon, 5 Feb 2024 08:53:49 +0100 Subject: [PATCH 107/150] make pre-commit --- src/foundation-core/identity-types.lagda.md | 9 ++++++--- ...on-on-higher-identifications-functions.lagda.md | 4 ++-- .../commuting-triangles-of-homotopies.lagda.md | 4 +++- ...iskering-higher-homotopies-composition.lagda.md | 14 +++++++++----- .../whiskering-homotopies-composition.lagda.md | 13 +++++++++---- 5 files changed, 29 insertions(+), 15 deletions(-) diff --git a/src/foundation-core/identity-types.lagda.md b/src/foundation-core/identity-types.lagda.md index 3eca57dd7d..461f1d899f 100644 --- a/src/foundation-core/identity-types.lagda.md +++ b/src/foundation-core/identity-types.lagda.md @@ -22,7 +22,8 @@ binary family of types Id : A → A → 𝒰 ``` -equipped with a {{#concept "reflexivity element" Disambiguation="identity type" Agda=refl}} +equipped with a +{{#concept "reflexivity element" Disambiguation="identity type" Agda=refl}} ```text refl : (x : A) → Id x x. @@ -126,7 +127,8 @@ ind-Id x B b y refl = b ## Operations on the identity type The identity types form a weak groupoidal structure on types. Thus they come -equipped with {{#concept "concatenation" Disambiguation="identifications" Agda=concat]} `(x = y) → (y = z) → (x = z)` and an +equipped with +{{#concept "concatenation" Disambiguation="identifications" Agda=concat]} `(x = y) → (y = z) → (x = z)` and an {{#concept "inverse" Disambiguation="identification" Agda=inv}} operation `(x = y) → (y = x)`. There are many more operations on identity types. Some of them are defined in @@ -487,7 +489,8 @@ and the higher concatenation operations defined in computational behavior, so there is infrastructure for reasoning about identifications that are constructed using them. -We also note that there is similar infrastructure for [homotopy reasoning](foundation-core.homotopies.md). +We also note that there is similar infrastructure for +[homotopy reasoning](foundation-core.homotopies.md). ## References diff --git a/src/foundation/action-on-higher-identifications-functions.lagda.md b/src/foundation/action-on-higher-identifications-functions.lagda.md index 376101bd03..c12340d1ae 100644 --- a/src/foundation/action-on-higher-identifications-functions.lagda.md +++ b/src/foundation/action-on-higher-identifications-functions.lagda.md @@ -30,8 +30,8 @@ which is a map ap² f : (p = q) → (ap f p = ap f q) ``` -Here `p q : x = y` are [identifications](foundation-core.identity-types.md) in the type `A`. The action of `f` on -higher identifications is defined by +Here `p q : x = y` are [identifications](foundation-core.identity-types.md) in +the type `A`. The action of `f` on higher identifications is defined by ```text ap² f := ap (ap f). diff --git a/src/foundation/commuting-triangles-of-homotopies.lagda.md b/src/foundation/commuting-triangles-of-homotopies.lagda.md index 2dc1e65a6d..eb6c86a061 100644 --- a/src/foundation/commuting-triangles-of-homotopies.lagda.md +++ b/src/foundation/commuting-triangles-of-homotopies.lagda.md @@ -33,7 +33,9 @@ A triangle of [homotopies](foundation-core.homotopies.md) of dependent functions h ``` -is said to {{#concept "commute" Disambiguation="triangle of homotopies" Agda=coherence-triangle-homotopies}} if there is a homotopy `left ~ top ∙h right`. +is said to +{{#concept "commute" Disambiguation="triangle of homotopies" Agda=coherence-triangle-homotopies}} +if there is a homotopy `left ~ top ∙h right`. ## Definitions diff --git a/src/foundation/whiskering-higher-homotopies-composition.lagda.md b/src/foundation/whiskering-higher-homotopies-composition.lagda.md index debc61b1ff..eb981d65af 100644 --- a/src/foundation/whiskering-higher-homotopies-composition.lagda.md +++ b/src/foundation/whiskering-higher-homotopies-composition.lagda.md @@ -19,14 +19,15 @@ open import foundation-core.homotopies ## 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 +[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²}}. +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) @@ -36,7 +37,9 @@ by α 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 +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) @@ -48,7 +51,8 @@ given by α h ↦ α ·r h, ``` -for any pair of homotopies `H H' : f ~ g`, where `f g : (x : A) (y : B x) → C x y`. +for any pair of homotopies `H H' : f ~ g`, where +`f g : (x : A) (y : B x) → C x y`. ## Definitions diff --git a/src/foundation/whiskering-homotopies-composition.lagda.md b/src/foundation/whiskering-homotopies-composition.lagda.md index d81da65f44..67a5750e9f 100644 --- a/src/foundation/whiskering-homotopies-composition.lagda.md +++ b/src/foundation/whiskering-homotopies-composition.lagda.md @@ -19,9 +19,12 @@ open import foundation-core.identity-types ## Idea -There are two {{#concept "whiskering operations" Disambiguation="homotopies with respect to compostion"}} on -[homotopies](foundation-core.homotopies.md) with respect to composition. The {{#concept "left whiskering" Disambiguation="homotopies with respect to composition" Agda=left-whisker-comp}} operation of homotopies with respect to composition -assumes a diagram of maps of the form +There are two +{{#concept "whiskering operations" Disambiguation="homotopies with respect to compostion"}} +on [homotopies](foundation-core.homotopies.md) with respect to composition. The +{{#concept "left whiskering" Disambiguation="homotopies with respect to composition" Agda=left-whisker-comp}} +operation of homotopies with respect to composition assumes a diagram of maps of +the form ```text f @@ -31,7 +34,9 @@ assumes a diagram of maps of the form ``` and is defined to be a function `H ↦ h ·l H : (f ~ g) → (h ∘ f ~ h ∘ g)`. The -{{#concept "right whiskering" Disambiguation="homotopies with respect to composition" Agda=right-whisker-comp}} operation of homotopies with respect to composition assumes a diagram of maps the form +{{#concept "right whiskering" Disambiguation="homotopies with respect to composition" Agda=right-whisker-comp}} +operation of homotopies with respect to composition assumes a diagram of maps +the form ```text g From 887afb635cd31bed99c18c80aaa9a9fa9ff310bd Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Mon, 5 Feb 2024 09:03:16 +0100 Subject: [PATCH 108/150] coherence-map-inv-is-invertible --- .../coherently-invertible-maps.lagda.md | 46 +++++++++++-------- 1 file changed, 26 insertions(+), 20 deletions(-) diff --git a/src/foundation-core/coherently-invertible-maps.lagda.md b/src/foundation-core/coherently-invertible-maps.lagda.md index 9bb05c465c..177ec4b883 100644 --- a/src/foundation-core/coherently-invertible-maps.lagda.md +++ b/src/foundation-core/coherently-invertible-maps.lagda.md @@ -126,31 +126,37 @@ module _ (H : is-invertible f) → (map-inv-is-invertible H ∘ f) ~ id is-retraction-map-inv-is-invertible = is-section-is-invertible + inv-coherence-map-inv-is-invertible : + (H : is-invertible f) → + f ·l is-retraction-map-inv-is-invertible H ~ + is-section-map-inv-is-invertible H ·r f + inv-coherence-map-inv-is-invertible H x = + left-transpose-eq-concat + ( is-retraction-is-invertible H (f (map-inv-is-invertible H (f x)))) + ( ap f (is-section-is-invertible H x)) + ( ( ap f + ( is-section-is-invertible H (map-inv-is-invertible H (f x)))) ∙ + ( is-retraction-is-invertible H (f x))) + ( ( nat-htpy + ( right-whisker-comp (is-retraction-is-invertible H) f) + ( is-section-is-invertible H x)) ∙ + ( ap + ( concat' _ (is-retraction-is-invertible H (f x))) + ( ( ap-comp f + ( map-inv-is-invertible H ∘ f) + ( is-section-is-invertible H x)) ∙ + ( inv + ( ap + ( ap f) + ( coh-is-coherently-invertible-id + ( is-section-is-invertible H) x)))))) + coherence-map-inv-is-invertible : ( H : is-invertible f) → ( is-section-map-inv-is-invertible H ·r f) ~ ( f ·l is-retraction-map-inv-is-invertible H) coherence-map-inv-is-invertible H x = - inv - ( left-transpose-eq-concat - ( is-retraction-is-invertible H (f (map-inv-is-invertible H (f x)))) - ( ap f (is-section-is-invertible H x)) - ( ( ap f - ( is-section-is-invertible H (map-inv-is-invertible H (f x)))) ∙ - ( is-retraction-is-invertible H (f x))) - ( ( nat-htpy - ( right-whisker-comp (is-retraction-is-invertible H) f) - ( is-section-is-invertible H x)) ∙ - ( ap - ( concat' _ (is-retraction-is-invertible H (f x))) - ( ( ap-comp f - ( map-inv-is-invertible H ∘ f) - ( is-section-is-invertible H x)) ∙ - ( inv - ( ap - ( ap f) - ( coh-is-coherently-invertible-id - ( is-section-is-invertible H) x))))))) + inv (inv-coherence-map-inv-is-invertible H x) abstract is-coherently-invertible-is-invertible : From 4d6d295cbb5e52cbc5bb9ba1adfe08d4d44ff19b Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Mon, 5 Feb 2024 10:11:41 +0100 Subject: [PATCH 109/150] whiskering triangles of homotopies --- src/foundation-core/identity-types.lagda.md | 11 +- ...ommuting-tetrahedra-of-homotopies.lagda.md | 8 +- ...commuting-triangles-of-homotopies.lagda.md | 177 +++++++++++++----- 3 files changed, 139 insertions(+), 57 deletions(-) diff --git a/src/foundation-core/identity-types.lagda.md b/src/foundation-core/identity-types.lagda.md index 461f1d899f..79af01e5a5 100644 --- a/src/foundation-core/identity-types.lagda.md +++ b/src/foundation-core/identity-types.lagda.md @@ -296,11 +296,10 @@ operation `p ↦ p ∙ q` by constructing identifications (p ∙ inv q) ∙ q = p. ``` -In -[`foundation.identity-types`](foundation.identity-types.md)`we will use these families of identifications to conclude that`concat -p z`and`concat' x -q`are [equivalences](foundation-core.equivalences.md) with inverses`concat (inv -p) z`and`concat' x (inv q)`, respectively. +In [`foundation.identity-types`](foundation.identity-types.md) we will use these +families of identifications to conclude that `concat p z` and `concat' x q` are +[equivalences](foundation-core.equivalences.md) with inverses `concat (inv p) z` +and `concat' x (inv q)`, respectively. ```agda module _ @@ -313,7 +312,7 @@ module _ is-section-inv-concat : {x y z : A} (p : x = y) (r : x = z) → (p ∙ (inv p ∙ r)) = r - is-section-inv-concat refl refl = refl + is-section-inv-concat refl r = refl is-retraction-inv-concat' : {x y z : A} (q : y = z) (p : x = y) → (p ∙ q) ∙ inv q = p diff --git a/src/foundation/commuting-tetrahedra-of-homotopies.lagda.md b/src/foundation/commuting-tetrahedra-of-homotopies.lagda.md index 49e156ade6..2aa6902f83 100644 --- a/src/foundation/commuting-tetrahedra-of-homotopies.lagda.md +++ b/src/foundation/commuting-tetrahedra-of-homotopies.lagda.md @@ -56,8 +56,8 @@ module _ ( top) ( diagonal-up) ( left) - ( right) - ( upper-left))) ~ + ( upper-left) + ( right))) ~ ( ( lower-left) ∙h ( left-whisker-concat-coherence-triangle-homotopies ( left) @@ -82,6 +82,6 @@ module _ ( top) ( diagonal-up) ( left) - ( right) - ( upper-left))) + ( upper-left) + ( right))) ``` diff --git a/src/foundation/commuting-triangles-of-homotopies.lagda.md b/src/foundation/commuting-triangles-of-homotopies.lagda.md index eb6c86a061..7da7bc98de 100644 --- a/src/foundation/commuting-triangles-of-homotopies.lagda.md +++ b/src/foundation/commuting-triangles-of-homotopies.lagda.md @@ -58,24 +58,78 @@ module _ ## Properties -### Distributive law for left whiskering +### Left whiskering commuting triangles of homotopies with respect to concatenation of homotopies + +Consider a commuting triangle of homotopies + +```text + top + f ----> g + \ / + left \ / right + ∨ ∨ + h +``` + +where `f g h : (x : A) → B x`, and consider a homotopy `H : i ~ f` for a fourth dependent function `i : (x : A) → B x`. Then the triangle of homotopies + +```text + H ∙h top + i --------> g + \ / + H ∙h left \ / right + \ / + ∨ ∨ + h +``` + +commutes. ```agda module _ - {l1 l2 : Level} {A : UU l1} {B : UU l2} - {f g h : A → B} - {l3 : Level} {X : UU l3} (i : B → X) + {l1 l2 : Level} {A : UU l1} {B : A → UU l2} + {f g h i : (x : A) → B x} (H : i ~ f) (left : f ~ h) (right : g ~ h) (top : f ~ g) where - distributivity-left-whisker : - coherence-triangle-homotopies left right top → - (i ·l left) ~ ((i ·l top) ∙h (i ·l right)) - distributivity-left-whisker T x = - map-coherence-triangle-identifications i (left x) (right x) (top x) (T x) + left-whisker-concat-coherence-triangle-homotopies : + (T : coherence-triangle-homotopies left right top) → + coherence-triangle-homotopies (H ∙h left) right (H ∙h top) + left-whisker-concat-coherence-triangle-homotopies T x = + left-whisker-coherence-triangle-identifications + ( H x) + ( left x) + ( right x) + ( top x) + ( T x) +``` + +### Right whiskering triangles of homotopies with respect to concatenation of homotopies + +Consider a commuting triangle of homotopies + +```text + top + f ----> g + \ / + left \ / right + ∨ ∨ + h ``` -### Left whiskering triangles of homotopies +where `f g h : (x : A) → B x`, and consider a homotopy `H : h ~ i` for a fourth dependent function `i : (x : A) → B x`. Then the triangle of homotopies + +```text + top + f --------> g + \ / + left ∙h H \ / right ∙h H + \ / + ∨ ∨ + i +``` + +commutes. ```agda module _ @@ -85,64 +139,93 @@ module _ where right-whisker-concat-coherence-triangle-homotopies : - {i : (x : A) → B x} (H : h ~ i) → coherence-triangle-homotopies left right top → + {i : (x : A) → B x} (H : h ~ i) → coherence-triangle-homotopies (left ∙h H) (right ∙h H) top - right-whisker-concat-coherence-triangle-homotopies H T x = + right-whisker-concat-coherence-triangle-homotopies T H x = right-whisker-coherence-triangle-identifications ( left x) ( right x) ( top x) ( H x) ( T x) +``` -module _ - {l1 l2 : Level} {A : UU l1} {B : UU l2} - {f g h : A → B} - {left : f ~ h} (right : g ~ h) {top : f ~ g} - where +### Left whiskering of commuting triangles of homotopies with respect to composition - right-whisker-comp-coherence-triangle-homotopies : - {l3 : Level} {X : UU l3} (i : B → X) - (T : coherence-triangle-homotopies left right top) → - coherence-triangle-homotopies - {f = i ∘ f} {i ∘ g} {i ∘ h} - (i ·l left) (i ·l right) (i ·l top) - right-whisker-comp-coherence-triangle-homotopies i = - distributivity-left-whisker i left right top +Consider a commuting triangle of homotopies + +```text + top + f ----> g + \ / + left \ / right + ∨ ∨ + h ``` -### Right whiskering triangles of homotopies +where `f`, `g`, and `h` are maps `A → B`. Furthermore, consider a map `i : B → X`. Then we obtain a commuting triangle of homotopies + +```text + i ·l top + i ∘ f --------> i ∘ g + \ / + i ·l left \ / i ·l right + \ / + ∨ ∨ + i ∘ h. +``` + +This notion of whiskering should be compared to [whiskering higher homotopies with respect to composition](foundation.whiskering-higher-homotopies-composition.md). ```agda module _ - {l1 l2 : Level} {A : UU l1} {B : A → UU l2} - {f g h i : (x : A) → B x} (H : i ~ f) - (left : f ~ h) (right : g ~ h) (top : f ~ g) + {l1 l2 l3 : Level} {A : UU l1} {B : UU l2} {X : UU l3} (i : B → X) + {f g h : A → B} (left : f ~ h) (right : g ~ h) (top : f ~ g) where - left-whisker-concat-coherence-triangle-homotopies : + left-whisker-comp-coherence-triangle-homotopies : (T : coherence-triangle-homotopies left right top) → - coherence-triangle-homotopies {f = i} (H ∙h left) right (H ∙h top) - left-whisker-concat-coherence-triangle-homotopies T x = - left-whisker-coherence-triangle-identifications - ( H x) - ( left x) - ( right x) - ( top x) - ( T x) + coherence-triangle-homotopies (i ·l left) (i ·l right) (i ·l top) + left-whisker-comp-coherence-triangle-homotopies T x = + map-coherence-triangle-identifications i (left x) (right x) (top x) (T x) +``` + +### Right whiskering commuting triangles of homotopies with respect to composition + +Consider a commuting triangle of homotopies + +```text + top + f ----> g + \ / + left \ / right + ∨ ∨ + h +``` +where `f`, `g`, and `h` are maps `A → B`. Furthermore, consider a map `i : X → A`. Then we obtain a commuting triangle of homotopies + +```text + top ·r i + f ∘ i --------> g ∘ i + \ / + left ·r i \ / right ·r i + \ / + ∨ ∨ + h ∘ i. +``` + +This notion of whiskering should be compared to [whiskering higher homotopies with respect to composition](foundation.whiskering-higher-homotopies-composition.md). + +```agda module _ - {l1 l2 : Level} {A : UU l1} {B : UU l2} - {f g h : A → B} - {left : f ~ h} (right : g ~ h) {top : f ~ g} + {l1 l2 l3 : Level} {A : UU l1} {B : UU l2} {X : UU l3} + {f g h : A → B} (left : f ~ h) (right : g ~ h) (top : f ~ g) where - left-whisker-comp-coherence-triangle-homotopies : - {l3 : Level} {X : UU l3} + right-whisker-comp-coherence-triangle-homotopies : (T : coherence-triangle-homotopies left right top) (i : X → A) → - coherence-triangle-homotopies - {f = f ∘ i} {g ∘ i} {h ∘ i} - (left ·r i) (right ·r i) (top ·r i) - left-whisker-comp-coherence-triangle-homotopies T i = T ∘ i + coherence-triangle-homotopies (left ·r i) (right ·r i) (top ·r i) + right-whisker-comp-coherence-triangle-homotopies T i = T ∘ i ``` From 22bf080616dacbc3654cab4f9d22b59ea4ea37aa Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Mon, 5 Feb 2024 10:12:01 +0100 Subject: [PATCH 110/150] make pre-commit --- ...commuting-triangles-of-homotopies.lagda.md | 24 ++++++++++++------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/src/foundation/commuting-triangles-of-homotopies.lagda.md b/src/foundation/commuting-triangles-of-homotopies.lagda.md index 7da7bc98de..eeab9ed107 100644 --- a/src/foundation/commuting-triangles-of-homotopies.lagda.md +++ b/src/foundation/commuting-triangles-of-homotopies.lagda.md @@ -71,7 +71,8 @@ Consider a commuting triangle of homotopies h ``` -where `f g h : (x : A) → B x`, and consider a homotopy `H : i ~ f` for a fourth dependent function `i : (x : A) → B x`. Then the triangle of homotopies +where `f g h : (x : A) → B x`, and consider a homotopy `H : i ~ f` for a fourth +dependent function `i : (x : A) → B x`. Then the triangle of homotopies ```text H ∙h top @@ -117,7 +118,8 @@ Consider a commuting triangle of homotopies h ``` -where `f g h : (x : A) → B x`, and consider a homotopy `H : h ~ i` for a fourth dependent function `i : (x : A) → B x`. Then the triangle of homotopies +where `f g h : (x : A) → B x`, and consider a homotopy `H : h ~ i` for a fourth +dependent function `i : (x : A) → B x`. Then the triangle of homotopies ```text top @@ -164,23 +166,25 @@ Consider a commuting triangle of homotopies h ``` -where `f`, `g`, and `h` are maps `A → B`. Furthermore, consider a map `i : B → X`. Then we obtain a commuting triangle of homotopies +where `f`, `g`, and `h` are maps `A → B`. Furthermore, consider a map +`i : B → X`. Then we obtain a commuting triangle of homotopies ```text i ·l top i ∘ f --------> i ∘ g \ / i ·l left \ / i ·l right - \ / + \ / ∨ ∨ i ∘ h. ``` -This notion of whiskering should be compared to [whiskering higher homotopies with respect to composition](foundation.whiskering-higher-homotopies-composition.md). +This notion of whiskering should be compared to +[whiskering higher homotopies with respect to composition](foundation.whiskering-higher-homotopies-composition.md). ```agda module _ - {l1 l2 l3 : Level} {A : UU l1} {B : UU l2} {X : UU l3} (i : B → X) + {l1 l2 l3 : Level} {A : UU l1} {B : UU l2} {X : UU l3} (i : B → X) {f g h : A → B} (left : f ~ h) (right : g ~ h) (top : f ~ g) where @@ -204,19 +208,21 @@ Consider a commuting triangle of homotopies h ``` -where `f`, `g`, and `h` are maps `A → B`. Furthermore, consider a map `i : X → A`. Then we obtain a commuting triangle of homotopies +where `f`, `g`, and `h` are maps `A → B`. Furthermore, consider a map +`i : X → A`. Then we obtain a commuting triangle of homotopies ```text top ·r i f ∘ i --------> g ∘ i \ / left ·r i \ / right ·r i - \ / + \ / ∨ ∨ h ∘ i. ``` -This notion of whiskering should be compared to [whiskering higher homotopies with respect to composition](foundation.whiskering-higher-homotopies-composition.md). +This notion of whiskering should be compared to +[whiskering higher homotopies with respect to composition](foundation.whiskering-higher-homotopies-composition.md). ```agda module _ From 3da108a096e12a3b68e9427bff66ba6accdba207 Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Mon, 5 Feb 2024 10:19:02 +0100 Subject: [PATCH 111/150] fixing some names --- ...commuting-triangles-of-homotopies.lagda.md | 4 +- ...ting-triangles-of-identifications.lagda.md | 96 ++++++++++--------- .../homotopies-morphisms-arrows.lagda.md | 2 +- 3 files changed, 52 insertions(+), 50 deletions(-) diff --git a/src/foundation/commuting-triangles-of-homotopies.lagda.md b/src/foundation/commuting-triangles-of-homotopies.lagda.md index eeab9ed107..381b508986 100644 --- a/src/foundation/commuting-triangles-of-homotopies.lagda.md +++ b/src/foundation/commuting-triangles-of-homotopies.lagda.md @@ -97,7 +97,7 @@ module _ (T : coherence-triangle-homotopies left right top) → coherence-triangle-homotopies (H ∙h left) right (H ∙h top) left-whisker-concat-coherence-triangle-homotopies T x = - left-whisker-coherence-triangle-identifications + left-whisker-concat-coherence-triangle-identifications ( H x) ( left x) ( right x) @@ -145,7 +145,7 @@ module _ {i : (x : A) → B x} (H : h ~ i) → coherence-triangle-homotopies (left ∙h H) (right ∙h H) top right-whisker-concat-coherence-triangle-homotopies T H x = - right-whisker-coherence-triangle-identifications + right-whisker-concat-coherence-triangle-identifications ( left x) ( right x) ( top x) diff --git a/src/foundation/commuting-triangles-of-identifications.lagda.md b/src/foundation/commuting-triangles-of-identifications.lagda.md index 07bb74d454..bc451f1b59 100644 --- a/src/foundation/commuting-triangles-of-identifications.lagda.md +++ b/src/foundation/commuting-triangles-of-identifications.lagda.md @@ -131,10 +131,12 @@ we may consider three ways of attaching new identifications to it: (left = top ∙ right) → left = (top ∙ p⁻¹) ∙ (p ∙ right). ``` -Because concatenation of identifications is an equivalence, it follows that all -of these transformations are equivalences. +Because concatenation of identifications is an +[equivalence](foundation-core.equivalences.md), it follows that all of these +transformations are equivalences. -These operations are useful in proofs involving path algebra, because taking +These operations are useful in proofs involving +[path algebra](foundation.path-algebra.md), because taking `equiv-right-whisker-triangle-identicications` as an example, it provides us with two maps: the forward direction states `(p = q ∙ r) → (p ∙ s = q ∙ (r ∙ s))`, which allows one to append an @@ -162,43 +164,43 @@ module _ (p : u = x) (left : x = z) (right : y = z) (top : x = y) where - equiv-left-whisker-coherence-triangle-identifications : + equiv-left-whisker-concat-coherence-triangle-identifications : coherence-triangle-identifications left right top ≃ coherence-triangle-identifications (p ∙ left) right (p ∙ top) - equiv-left-whisker-coherence-triangle-identifications = + equiv-left-whisker-concat-coherence-triangle-identifications = ( inv-equiv (equiv-concat-assoc' (p ∙ left) p top right)) ∘e ( equiv-left-whisker-concat p) - left-whisker-coherence-triangle-identifications : + left-whisker-concat-coherence-triangle-identifications : coherence-triangle-identifications left right top → coherence-triangle-identifications (p ∙ left) right (p ∙ top) - left-whisker-coherence-triangle-identifications = - map-equiv equiv-left-whisker-coherence-triangle-identifications + left-whisker-concat-coherence-triangle-identifications = + map-equiv equiv-left-whisker-concat-coherence-triangle-identifications - left-unwhisker-triangle-identifications : + left-unwhisker-concat-coherence-triangle-identifications : coherence-triangle-identifications (p ∙ left) right (p ∙ top) → coherence-triangle-identifications left right top - left-unwhisker-triangle-identifications = - map-inv-equiv equiv-left-whisker-coherence-triangle-identifications + left-unwhisker-concat-coherence-triangle-identifications = + map-inv-equiv equiv-left-whisker-concat-coherence-triangle-identifications - equiv-left-whisker-coherence-triangle-identifications' : + equiv-left-whisker-concat-coherence-triangle-identifications' : coherence-triangle-identifications' left right top ≃ coherence-triangle-identifications' (p ∙ left) right (p ∙ top) - equiv-left-whisker-coherence-triangle-identifications' = + equiv-left-whisker-concat-coherence-triangle-identifications' = ( inv-equiv (equiv-concat-assoc p top right (p ∙ left))) ∘e ( equiv-left-whisker-concat p) - left-whisker-coherence-triangle-identifications' : + left-whisker-concat-coherence-triangle-identifications' : coherence-triangle-identifications' left right top → coherence-triangle-identifications' (p ∙ left) right (p ∙ top) - left-whisker-coherence-triangle-identifications' = - map-equiv equiv-left-whisker-coherence-triangle-identifications' + left-whisker-concat-coherence-triangle-identifications' = + map-equiv equiv-left-whisker-concat-coherence-triangle-identifications' - left-unwhisker-triangle-identifications' : + left-unwhisker-concat-coherence-triangle-identifications' : coherence-triangle-identifications' (p ∙ left) right (p ∙ top) → coherence-triangle-identifications' left right top - left-unwhisker-triangle-identifications' = - map-inv-equiv equiv-left-whisker-coherence-triangle-identifications' + left-unwhisker-concat-coherence-triangle-identifications' = + map-inv-equiv equiv-left-whisker-concat-coherence-triangle-identifications' ``` #### Right whiskering commuting squares of identifications @@ -222,43 +224,43 @@ module _ (left : x = z) (right : y = z) (top : x = y) (p : z = u) where - equiv-right-whisker-coherence-triangle-identifications : + equiv-right-whisker-concat-coherence-triangle-identifications : coherence-triangle-identifications left right top ≃ coherence-triangle-identifications (left ∙ p) (right ∙ p) top - equiv-right-whisker-coherence-triangle-identifications = + equiv-right-whisker-concat-coherence-triangle-identifications = ( equiv-concat-assoc' (left ∙ p) top right p) ∘e ( equiv-right-whisker-concat p) - right-whisker-coherence-triangle-identifications : + right-whisker-concat-coherence-triangle-identifications : coherence-triangle-identifications left right top → coherence-triangle-identifications (left ∙ p) (right ∙ p) top - right-whisker-coherence-triangle-identifications = - map-equiv equiv-right-whisker-coherence-triangle-identifications + right-whisker-concat-coherence-triangle-identifications = + map-equiv equiv-right-whisker-concat-coherence-triangle-identifications - right-unwhisker-triangle-identifications : + right-unwhisker-concat-coherence-triangle-identifications : coherence-triangle-identifications (left ∙ p) (right ∙ p) top → coherence-triangle-identifications left right top - right-unwhisker-triangle-identifications = - map-inv-equiv equiv-right-whisker-coherence-triangle-identifications + right-unwhisker-concat-coherence-triangle-identifications = + map-inv-equiv equiv-right-whisker-concat-coherence-triangle-identifications - equiv-right-whisker-coherence-triangle-identifications' : + equiv-right-whisker-concat-coherence-triangle-identifications' : coherence-triangle-identifications' left right top ≃ coherence-triangle-identifications' (left ∙ p) (right ∙ p) top - equiv-right-whisker-coherence-triangle-identifications' = + equiv-right-whisker-concat-coherence-triangle-identifications' = ( equiv-concat-assoc top right p (left ∙ p)) ∘e ( equiv-right-whisker-concat p) - right-whisker-coherence-triangle-identifications' : + right-whisker-concat-coherence-triangle-identifications' : coherence-triangle-identifications' left right top → coherence-triangle-identifications' (left ∙ p) (right ∙ p) top - right-whisker-coherence-triangle-identifications' = - map-equiv equiv-right-whisker-coherence-triangle-identifications' + right-whisker-concat-coherence-triangle-identifications' = + map-equiv equiv-right-whisker-concat-coherence-triangle-identifications' - right-unwhisker-triangle-identifications' : + right-unwhisker-concat-coherence-triangle-identifications' : coherence-triangle-identifications' (left ∙ p) (right ∙ p) top → coherence-triangle-identifications' left right top - right-unwhisker-triangle-identifications' = - map-inv-equiv equiv-right-whisker-coherence-triangle-identifications' + right-unwhisker-concat-coherence-triangle-identifications' = + map-inv-equiv equiv-right-whisker-concat-coherence-triangle-identifications' ``` #### Splicing a pair of mutual inverse identifications in a commuting triangle of identifications @@ -296,57 +298,57 @@ module _ {l : Level} {A : UU l} {x y z u : A} where - equiv-splice-inverse-pair-coherence-triangle-identifications : + equiv-splice-coherence-triangle-identifications : (p : y = u) (q : u = y) (α : inv p = q) → (left : x = z) (right : y = z) (top : x = y) → coherence-triangle-identifications left right top ≃ coherence-triangle-identifications left (q ∙ right) (top ∙ p) - equiv-splice-inverse-pair-coherence-triangle-identifications refl .refl refl + equiv-splice-coherence-triangle-identifications refl .refl refl left right top = equiv-concat' left (right-whisker-concat (inv right-unit) right) - splice-inverse-pair-coherence-triangle-identifications : + splice-coherence-triangle-identifications : (p : y = u) (q : u = y) (α : inv p = q) → (left : x = z) (right : y = z) (top : x = y) → coherence-triangle-identifications left right top → coherence-triangle-identifications left (q ∙ right) (top ∙ p) - splice-inverse-pair-coherence-triangle-identifications refl .refl refl + splice-coherence-triangle-identifications refl .refl refl left right top t = t ∙ inv (right-whisker-concat right-unit right) - unsplice-inverse-pair-coherence-triangle-identifications : + unsplice-coherence-triangle-identifications : (p : y = u) (q : u = y) (α : inv p = q) → (left : x = z) (right : y = z) (top : x = y) → coherence-triangle-identifications left (q ∙ right) (top ∙ p) → coherence-triangle-identifications left right top - unsplice-inverse-pair-coherence-triangle-identifications refl .refl refl + unsplice-coherence-triangle-identifications refl .refl refl left right top t = t ∙ right-whisker-concat right-unit right - equiv-splice-inverse-pair-coherence-triangle-identifications' : + equiv-splice-coherence-triangle-identifications' : (p : y = u) (q : u = y) (α : inv p = q) → (left : x = z) (right : y = z) (top : x = y) → coherence-triangle-identifications' left right top ≃ coherence-triangle-identifications' left (q ∙ right) (top ∙ p) - equiv-splice-inverse-pair-coherence-triangle-identifications' refl .refl refl + equiv-splice-coherence-triangle-identifications' refl .refl refl left right top = equiv-concat (right-whisker-concat right-unit right) left - splice-inverse-pair-coherence-triangle-identifications' : + splice-coherence-triangle-identifications' : (p : y = u) (q : u = y) (α : inv p = q) → (left : x = z) (right : y = z) (top : x = y) → coherence-triangle-identifications' left right top → coherence-triangle-identifications' left (q ∙ right) (top ∙ p) - splice-inverse-pair-coherence-triangle-identifications' refl .refl refl + splice-coherence-triangle-identifications' refl .refl refl left right top t = right-whisker-concat right-unit right ∙ t - unsplice-inverse-pair-coherence-triangle-identifications' : + unsplice-coherence-triangle-identifications' : (p : y = u) (q : u = y) (α : inv p = q) → (left : x = z) (right : y = z) (top : x = y) → coherence-triangle-identifications' left (q ∙ right) (top ∙ p) → coherence-triangle-identifications' left right top - unsplice-inverse-pair-coherence-triangle-identifications' refl .refl refl + unsplice-coherence-triangle-identifications' refl .refl refl left right top t = inv (right-whisker-concat right-unit right) ∙ t ``` diff --git a/src/foundation/homotopies-morphisms-arrows.lagda.md b/src/foundation/homotopies-morphisms-arrows.lagda.md index c65d839703..fb91314843 100644 --- a/src/foundation/homotopies-morphisms-arrows.lagda.md +++ b/src/foundation/homotopies-morphisms-arrows.lagda.md @@ -266,7 +266,7 @@ module _ ( htpy-domain-left-whisker-comp-hom-arrow) ( htpy-codomain-left-whisker-comp-hom-arrow) coh-left-whisker-comp-hom-arrow a = - ( left-whisker-coherence-triangle-identifications' + ( left-whisker-concat-coherence-triangle-identifications' ( ap (map-codomain-hom-arrow g h γ) (coh-hom-arrow f g α a)) ( _) ( _) From 3abe9e2f3fe8ec84467e0ef1099464c8f54f5f74 Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Mon, 5 Feb 2024 14:39:17 +0100 Subject: [PATCH 112/150] addressing duplications in function extensionality --- .../commuting-squares-of-maps.lagda.md | 58 ++++ .../contractible-types.lagda.md | 2 +- .../function-extensionality.lagda.md | 322 ------------------ ...oriality-dependent-function-types.lagda.md | 2 +- src/foundation-core/propositions.lagda.md | 2 +- src/foundation-core/truncated-types.lagda.md | 2 +- .../universal-property-truncation.lagda.md | 2 +- src/foundation.lagda.md | 1 + src/foundation/axiom-of-choice.lagda.md | 2 +- ...inary-functoriality-set-quotients.lagda.md | 2 +- src/foundation/binary-homotopies.lagda.md | 2 +- .../cantors-diagonal-argument.lagda.md | 2 +- .../cartesian-products-set-quotients.lagda.md | 2 +- .../commuting-cubes-of-maps.lagda.md | 2 +- .../commuting-prisms-of-maps.lagda.md | 2 +- .../commuting-squares-of-maps.lagda.md | 61 +--- ...ting-triangles-of-identifications.lagda.md | 2 +- ...-over-inverse-sequential-diagrams.lagda.md | 2 +- src/foundation/connected-maps.lagda.md | 2 +- src/foundation/connected-types.lagda.md | 2 +- src/foundation/constant-maps.lagda.md | 2 +- src/foundation/contractible-types.lagda.md | 2 +- .../coproduct-decompositions.lagda.md | 5 +- src/foundation/coslice.lagda.md | 2 +- .../decidable-equivalence-relations.lagda.md | 2 +- ...t-universal-property-equivalences.lagda.md | 2 +- ...epimorphisms-with-respect-to-sets.lagda.md | 2 +- ...s-with-respect-to-truncated-types.lagda.md | 2 +- .../equivalence-extensionality.lagda.md | 2 +- src/foundation/equivalences.lagda.md | 201 +---------- .../exponents-set-quotients.lagda.md | 2 +- src/foundation/fibered-maps.lagda.md | 2 +- .../function-extensionality.lagda.md | 316 ++++++++++------- src/foundation/function-types.lagda.md | 2 +- .../functional-correspondences.lagda.md | 2 +- .../functoriality-coproduct-types.lagda.md | 2 +- ...oriality-dependent-function-types.lagda.md | 2 +- ...oriality-propositional-truncation.lagda.md | 2 +- .../functoriality-truncation.lagda.md | 2 +- .../homotopies-morphisms-arrows.lagda.md | 6 +- src/foundation/homotopies.lagda.md | 2 +- src/foundation/homotopy-induction.lagda.md | 2 +- src/foundation/identity-types.lagda.md | 2 +- src/foundation/invertible-maps.lagda.md | 2 +- src/foundation/involutions.lagda.md | 2 +- src/foundation/isomorphisms-of-sets.lagda.md | 2 +- src/foundation/iterating-functions.lagda.md | 2 +- .../lawveres-fixed-point-theorem.lagda.md | 2 +- src/foundation/locally-small-types.lagda.md | 2 +- src/foundation/logical-equivalences.lagda.md | 2 +- src/foundation/monomorphisms.lagda.md | 2 +- src/foundation/morphisms-arrows.lagda.md | 2 +- .../multivariable-homotopies.lagda.md | 2 +- src/foundation/negated-equality.lagda.md | 2 +- ...stcomposition-dependent-functions.lagda.md | 71 ++++ .../postcomposition-functions.lagda.md | 59 +++- ...recomposition-dependent-functions.lagda.md | 70 +++- ...ition-functions-into-subuniverses.lagda.md | 2 +- .../precomposition-functions.lagda.md | 65 +++- src/foundation/pullbacks.lagda.md | 4 +- .../relaxed-sigma-decompositions.lagda.md | 1 + src/foundation/retracts-of-maps.lagda.md | 2 +- src/foundation/retracts-of-types.lagda.md | 2 +- src/foundation/sections.lagda.md | 2 +- src/foundation/set-quotients.lagda.md | 2 +- src/foundation/sigma-decompositions.lagda.md | 1 + src/foundation/slice.lagda.md | 2 +- .../symmetric-binary-relations.lagda.md | 2 +- .../symmetric-identity-types.lagda.md | 2 +- src/foundation/symmetric-operations.lagda.md | 2 +- .../tight-apartness-relations.lagda.md | 2 +- .../transport-along-equivalences.lagda.md | 2 +- .../transport-along-homotopies.lagda.md | 2 +- ...dentifications-along-equivalences.lagda.md | 230 +++++++++++++ ...vial-relaxed-sigma-decompositions.lagda.md | 3 +- .../trivial-sigma-decompositions.lagda.md | 3 +- src/foundation/truncations.lagda.md | 2 +- .../type-arithmetic-unit-type.lagda.md | 2 +- src/foundation/type-duality.lagda.md | 2 +- ...ype-theoretic-principle-of-choice.lagda.md | 2 +- .../uniqueness-set-quotients.lagda.md | 2 +- ...e-implies-function-extensionality.lagda.md | 2 +- .../universal-property-booleans.lagda.md | 2 +- ...ersal-property-contractible-types.lagda.md | 2 +- ...niversal-property-coproduct-types.lagda.md | 2 +- ...sal-property-dependent-pair-types.lagda.md | 2 +- .../universal-property-empty-type.lagda.md | 2 +- ...property-family-of-fibers-of-maps.lagda.md | 2 +- ...universal-property-identity-types.lagda.md | 2 +- .../universal-property-maybe.lagda.md | 2 +- ...ropositional-truncation-into-sets.lagda.md | 2 +- ...property-propositional-truncation.lagda.md | 2 +- .../universal-property-set-quotients.lagda.md | 2 +- ...universal-property-set-truncation.lagda.md | 2 +- .../universal-property-truncation.lagda.md | 2 +- src/foundation/unordered-pairs.lagda.md | 2 +- src/foundation/vectors-set-quotients.lagda.md | 2 +- .../weak-function-extensionality.lagda.md | 2 +- .../equivalences-directed-graphs.lagda.md | 4 +- ...d-type-equipped-with-automorphism.lagda.md | 4 +- .../cocones-under-spans.lagda.md | 2 +- 101 files changed, 845 insertions(+), 802 deletions(-) create mode 100644 src/foundation/transposition-identifications-along-equivalences.lagda.md diff --git a/src/foundation-core/commuting-squares-of-maps.lagda.md b/src/foundation-core/commuting-squares-of-maps.lagda.md index 90828cb3ce..4526dc8c74 100644 --- a/src/foundation-core/commuting-squares-of-maps.lagda.md +++ b/src/foundation-core/commuting-squares-of-maps.lagda.md @@ -8,10 +8,12 @@ module foundation-core.commuting-squares-of-maps where ```agda open import foundation.action-on-identifications-functions +open import foundation.transposition-identifications-along-equivalences open import foundation.universe-levels open import foundation.whiskering-homotopies-composition open import foundation-core.commuting-triangles-of-maps +open import foundation-core.equivalences open import foundation-core.function-types open import foundation-core.homotopies open import foundation-core.identity-types @@ -224,6 +226,62 @@ module _ right-unit ∙ ap-id (α a) ``` +### Inverting squares horizontally and vertically + +If the horizontal/vertical maps in a commuting square are both +[equivalences](foundation-core.equivalences.md), then the square remains +commuting if we invert those equivalences. + +```agda +coherence-square-inv-horizontal : + {l1 l2 l3 l4 : Level} {A : UU l1} {B : UU l2} {X : UU l3} {Y : UU l4} + (top : A ≃ B) (left : A → X) (right : B → Y) (bottom : X ≃ Y) → + coherence-square-maps (map-equiv top) left right (map-equiv bottom) → + coherence-square-maps (map-inv-equiv top) right left (map-inv-equiv bottom) +coherence-square-inv-horizontal top left right bottom H b = + map-eq-transpose-equiv-inv + ( bottom) + ( ( ap right (inv (is-section-map-inv-equiv top b))) ∙ + ( inv (H (map-inv-equiv top b)))) + +coherence-square-inv-vertical : + {l1 l2 l3 l4 : Level} {A : UU l1} {B : UU l2} {X : UU l3} {Y : UU l4} + (top : A → B) (left : A ≃ X) (right : B ≃ Y) (bottom : X → Y) → + coherence-square-maps top (map-equiv left) (map-equiv right) bottom → + coherence-square-maps bottom (map-inv-equiv left) (map-inv-equiv right) top +coherence-square-inv-vertical top left right bottom H x = + map-eq-transpose-equiv + ( right) + ( ( inv (H (map-inv-equiv left x))) ∙ + ( ap bottom (is-section-map-inv-equiv left x))) + +coherence-square-inv-all : + {l1 l2 l3 l4 : Level} {A : UU l1} {B : UU l2} {X : UU l3} {Y : UU l4} + (top : A ≃ B) (left : A ≃ X) (right : B ≃ Y) (bottom : X ≃ Y) → + coherence-square-maps + ( map-equiv top) + ( map-equiv left) + ( map-equiv right) + ( map-equiv bottom) → + coherence-square-maps + ( map-inv-equiv bottom) + ( map-inv-equiv right) + ( map-inv-equiv left) + ( map-inv-equiv top) +coherence-square-inv-all top left right bottom H = + coherence-square-inv-vertical + ( map-inv-equiv top) + ( right) + ( left) + ( map-inv-equiv bottom) + ( coherence-square-inv-horizontal + ( top) + ( map-equiv left) + ( map-equiv right) + ( bottom) + ( H)) +``` + ## See also Several structures make essential use of commuting squares of maps: diff --git a/src/foundation-core/contractible-types.lagda.md b/src/foundation-core/contractible-types.lagda.md index afb4ad31b8..ad110c5733 100644 --- a/src/foundation-core/contractible-types.lagda.md +++ b/src/foundation-core/contractible-types.lagda.md @@ -10,6 +10,7 @@ module foundation-core.contractible-types where open import foundation.action-on-identifications-functions open import foundation.dependent-pair-types open import foundation.equality-cartesian-product-types +open import foundation.function-extensionality open import foundation.implicit-function-types open import foundation.retracts-of-types open import foundation.universe-levels @@ -17,7 +18,6 @@ open import foundation.universe-levels open import foundation-core.cartesian-product-types open import foundation-core.equality-dependent-pair-types open import foundation-core.equivalences -open import foundation-core.function-extensionality open import foundation-core.identity-types open import foundation-core.transport-along-identifications ``` diff --git a/src/foundation-core/function-extensionality.lagda.md b/src/foundation-core/function-extensionality.lagda.md index 9abe7a4808..8577884923 100644 --- a/src/foundation-core/function-extensionality.lagda.md +++ b/src/foundation-core/function-extensionality.lagda.md @@ -11,337 +11,15 @@ open import foundation.action-on-identifications-binary-functions open import foundation.action-on-identifications-functions open import foundation.dependent-pair-types open import foundation.implicit-function-types -open import foundation.postcomposition-dependent-functions open import foundation.universe-levels open import foundation.whiskering-homotopies-composition -open import foundation-core.commuting-squares-of-maps open import foundation-core.equivalences open import foundation-core.function-types open import foundation-core.homotopies open import foundation-core.identity-types -open import foundation-core.postcomposition-functions open import foundation-core.precomposition-dependent-functions open import foundation-core.precomposition-functions ``` - -## Idea - -The -{{#concept "function extensionality axiom" Agda=function-extensionality Agda=funext}} -asserts that [identifications](foundation-core.identity-types.md) of (dependent) -functions are [equivalently](foundation-core.equivalences.md) described as -[homotopies](foundation-core.homotopies.md) between them. In other words, a -function is completely determined by its values. - -## Definitions - -### Equalities induce homotopies - -```agda -module _ - {l1 l2 : Level} {A : UU l1} {B : A → UU l2} - where - - htpy-eq : {f g : (x : A) → B x} → f = g → f ~ g - htpy-eq refl = refl-htpy -``` - -### An instance of function extensionality - -This property asserts that, _given_ two functions `f` and `g`, the map - -```text - htpy-eq : f = g → f ~ g -``` - -is an equivalence. - -```agda -module _ - {l1 l2 : Level} {A : UU l1} {B : A → UU l2} - where - - instance-function-extensionality : (f g : (x : A) → B x) → UU (l1 ⊔ l2) - instance-function-extensionality f g = is-equiv (htpy-eq {f = f} {g}) -``` - -### Based function extensionality - -This property asserts that, _given_ a function `f`, the map - -```text - htpy-eq : f = g → f ~ g -``` - -is an equivalence for any function `g` of the same type. - -```agda -module _ - {l1 l2 : Level} {A : UU l1} {B : A → UU l2} - where - - based-function-extensionality : (f : (x : A) → B x) → UU (l1 ⊔ l2) - based-function-extensionality f = - (g : (x : A) → B x) → is-equiv (htpy-eq {f = f} {g}) -``` - -### The function extensionality principle with respect to a universe level - -```agda -function-extensionality-Level : (l1 l2 : Level) → UU (lsuc l1 ⊔ lsuc l2) -function-extensionality-Level l1 l2 = - {A : UU l1} {B : A → UU l2} - (f g : (x : A) → B x) → - instance-function-extensionality f g -``` - -### The function extensionality axiom - -```agda -function-extensionality : UUω -function-extensionality = {l1 l2 : Level} → function-extensionality-Level l1 l2 - -postulate - funext : function-extensionality - -module _ - {l1 l2 : Level} {A : UU l1} {B : A → UU l2} - where - - equiv-funext : {f g : (x : A) → B x} → (f = g) ≃ (f ~ g) - pr1 (equiv-funext) = htpy-eq - pr2 (equiv-funext {f} {g}) = funext f g - - eq-htpy : {f g : (x : A) → B x} → (f ~ g) → f = g - eq-htpy {f} {g} = map-inv-is-equiv (funext f g) - - abstract - is-section-eq-htpy : - {f g : (x : A) → B x} → (htpy-eq ∘ eq-htpy {f} {g}) ~ id - is-section-eq-htpy {f} {g} = is-section-map-inv-is-equiv (funext f g) - - is-retraction-eq-htpy : - {f g : (x : A) → B x} → (eq-htpy ∘ htpy-eq {f = f} {g = g}) ~ id - is-retraction-eq-htpy {f} {g} = is-retraction-map-inv-is-equiv (funext f g) - - is-equiv-eq-htpy : - (f g : (x : A) → B x) → is-equiv (eq-htpy {f} {g}) - is-equiv-eq-htpy f g = is-equiv-map-inv-is-equiv (funext f g) - - eq-htpy-refl-htpy : - (f : (x : A) → B x) → eq-htpy (refl-htpy {f = f}) = refl - eq-htpy-refl-htpy f = is-retraction-eq-htpy refl - - equiv-eq-htpy : {f g : (x : A) → B x} → (f ~ g) ≃ (f = g) - pr1 (equiv-eq-htpy {f} {g}) = eq-htpy - pr2 (equiv-eq-htpy {f} {g}) = is-equiv-eq-htpy f g -``` - -### Function extensionality for implicit functions - -```agda -module _ - {l1 l2 : Level} {A : UU l1} {B : A → UU l2} {f g : {x : A} → B x} - where - - equiv-funext-implicit : - (Id {A = {x : A} → B x} f g) ≃ ((x : A) → f {x} = g {x}) - equiv-funext-implicit = - equiv-funext ∘e equiv-ap equiv-explicit-implicit-Π f g - - htpy-eq-implicit : - Id {A = {x : A} → B x} f g → (x : A) → f {x} = g {x} - htpy-eq-implicit = map-equiv equiv-funext-implicit - - funext-implicit : is-equiv htpy-eq-implicit - funext-implicit = is-equiv-map-equiv equiv-funext-implicit - - eq-htpy-implicit : - ((x : A) → f {x} = g {x}) → Id {A = {x : A} → B x} f g - eq-htpy-implicit = map-inv-equiv equiv-funext-implicit -``` - -## Properties - -### Naturality of `htpy-eq` with respect to functions - -#### Naturality of `htpy-eq` with respect to precomposition of dependent functions - -Consider a map `f : A → B` and two dependent functions `g h : (x : B) → C x`. -Then the square - -```text - ap (precomp-Π f C) - (g = h) ---------------------------> (g ∘ f = h ∘ f) - | | - htpy-eq | | htpy-eq - V V - (g ~ h) ----------------------------> (g ∘ f ~ h ∘ f) - precomp-Π f (eq-value g h) -``` - -[commutes](foundation-core.commuting-squares-of-maps.md). - -```agda -coherence-square-homotopies-htpy-eq-ap-precomp-Π : - {l1 l2 l3 : Level} {A : UU l1} {B : UU l2} (f : A → B) {C : B → UU l3} - (g h : (b : B) → C b) → - coherence-square-maps - ( ap (precomp-Π f C) {g} {h}) - ( htpy-eq) - ( htpy-eq) - ( precomp-Π f (eq-value g h)) -coherence-square-homotopies-htpy-eq-ap-precomp-Π f g .g refl = refl -``` - -#### Naturality of `htpy-eq` with respect to precomposition of ordinary functions - -Consider a map `f : A → B` and two functions `g h : B → C`. Then the square - -```text - ap (precomp f C) - (g = h) -------------------------> (g ∘ f = h ∘ f) - | | - htpy-eq | | htpy-eq - V V - (g ~ h) --------------------------> (g ∘ f ~ h ∘ f) - precomp f (eq-value g h) -``` - -commutes. - -```agda -coherence-square-homotopies-eq-ap-precomp : - {l1 l2 l3 : Level} {A : UU l1} {B : UU l2} {C : UU l3} (f : A → B) → - (g h : B → C) → - coherence-square-maps - ( ap (precomp f C)) - ( htpy-eq) - ( htpy-eq) - ( precomp-Π f (eq-value g h)) -coherence-square-homotopies-eq-ap-precomp f = - coherence-square-homotopies-htpy-eq-ap-precomp-Π f -``` - -#### Naturality of `htpy-eq` with respect to postcomposition of dependent functions - -Consider a map `f : {x : A} → B x → C x` and two functions -`g h : (x : A) → B x`. Then the square - -```text - ap (postcomp-Π A f) - (g = h) -------------------------> (g ∘ f = h ∘ f) - | | - htpy-eq | | htpy-eq - V V - (g ~ h) --------------------------> (g ∘ f ~ h ∘ f) - f ·l_ -``` - -commutes. - -```agda -coherence-square-homotopies-eq-ap-postcomp-Π : - {l1 l2 l3 : Level} {A : UU l1} {B : A → UU l2} {C : A → UU l3} - (f : {x : A} → B x → C x) (g h : (x : A) → B x) → - coherence-square-maps - ( ap (postcomp-Π A f) {x = g} {y = h}) - ( htpy-eq) - ( htpy-eq) - ( f ·l_) -coherence-square-homotopies-eq-ap-postcomp-Π f g .g refl = refl -``` - -#### Naturality of `htpy-eq` with respect to postcomposition of ordinary functions - -Consider a map `f : B → C` and two functions `g h : A → B`. Then the square - -```text - ap (postcomp A f) - (g = h) -------------------------> (g ∘ f = h ∘ f) - | | - htpy-eq | | htpy-eq - V V - (g ~ h) --------------------------> (g ∘ f ~ h ∘ f) - f ·l_ -``` - -commutes. - -```agda -coherence-square-homotopies-eq-ap-postcomp : - {l1 l2 l3 : Level} {A : UU l1} {B : UU l2} {C : UU l3} (f : B → C) → - (g h : A → B) → - coherence-square-maps - ( ap (postcomp A f) {x = g} {y = h}) - ( htpy-eq) - ( htpy-eq) - ( f ·l_) -coherence-square-homotopies-eq-ap-postcomp f = - coherence-square-homotopies-eq-ap-postcomp-Π f -``` - -### Computing the action on paths of an evaluation map - -```agda -ap-ev : - {l1 l2 : Level} {A : UU l1} {B : UU l2} (a : A) → {f g : A → B} → - (p : f = g) → (ap (λ h → h a) p) = htpy-eq p a -ap-ev a refl = refl -``` - -### `htpy-eq` preserves inverses - -```agda -module _ - {l1 l2 : Level} {A : UU l1} {B : A → UU l2} {f g : (x : A) → B x} - where - - compute-htpy-eq-inv : inv-htpy {f = f} {g} ∘ htpy-eq ~ htpy-eq ∘ inv - compute-htpy-eq-inv refl = refl - - compute-inv-htpy-htpy-eq : htpy-eq ∘ inv ~ inv-htpy {f = f} {g} ∘ htpy-eq - compute-inv-htpy-htpy-eq = inv-htpy compute-htpy-eq-inv -``` - -### `htpy-eq` preserves concatenation of identifications - -```agda -module _ - {l1 l2 : Level} {A : UU l1} {B : A → UU l2} {f g h : (x : A) → B x} - where - - htpy-eq-concat : - (p : f = g) (q : g = h) → htpy-eq (p ∙ q) = (htpy-eq p ∙h htpy-eq q) - htpy-eq-concat refl refl = refl -``` - -### `eq-htpy` preserves concatenation of homotopies - -```agda -module _ - {l1 l2 : Level} {A : UU l1} {B : A → UU l2} {f g h : (x : A) → B x} - where - - eq-htpy-concat-htpy : - (H : f ~ g) (K : g ~ h) → eq-htpy (H ∙h K) = (eq-htpy H ∙ eq-htpy K) - eq-htpy-concat-htpy H K = - ( ap - ( eq-htpy) - ( inv (ap-binary _∙h_ (is-section-eq-htpy H) (is-section-eq-htpy K)) ∙ - inv (htpy-eq-concat (eq-htpy H) (eq-htpy K)))) ∙ - ( is-retraction-eq-htpy (eq-htpy H ∙ eq-htpy K)) -``` - -## See also - -- The fact that the univalence axiom implies function extensionality is proven - in - [`foundation.univalence-implies-function-extensionality`](foundation.univalence-implies-function-extensionality.md). -- Weak function extensionality is defined in - [`foundation.weak-function-extensionality`](foundation.weak-function-extensionality.md). -- Transporting along homotopies is defined in - [`foundation.transport-along-homotopies`](foundation.transport-along-homotopies.md). diff --git a/src/foundation-core/functoriality-dependent-function-types.lagda.md b/src/foundation-core/functoriality-dependent-function-types.lagda.md index 796a15da02..4ba3913bf4 100644 --- a/src/foundation-core/functoriality-dependent-function-types.lagda.md +++ b/src/foundation-core/functoriality-dependent-function-types.lagda.md @@ -8,6 +8,7 @@ module foundation-core.functoriality-dependent-function-types where ```agda open import foundation.dependent-pair-types +open import foundation.function-extensionality open import foundation.implicit-function-types open import foundation.universe-levels @@ -16,7 +17,6 @@ open import foundation-core.contractible-types open import foundation-core.equivalences open import foundation-core.families-of-equivalences open import foundation-core.fibers-of-maps -open import foundation-core.function-extensionality open import foundation-core.function-types open import foundation-core.functoriality-dependent-pair-types open import foundation-core.homotopies diff --git a/src/foundation-core/propositions.lagda.md b/src/foundation-core/propositions.lagda.md index 243bd9ea71..7c08a3d2cb 100644 --- a/src/foundation-core/propositions.lagda.md +++ b/src/foundation-core/propositions.lagda.md @@ -8,13 +8,13 @@ module foundation-core.propositions where ```agda open import foundation.dependent-pair-types +open import foundation.function-extensionality open import foundation.universe-levels open import foundation-core.cartesian-product-types open import foundation-core.contractible-types open import foundation-core.equality-dependent-pair-types open import foundation-core.equivalences -open import foundation-core.function-extensionality open import foundation-core.function-types open import foundation-core.homotopies open import foundation-core.identity-types diff --git a/src/foundation-core/truncated-types.lagda.md b/src/foundation-core/truncated-types.lagda.md index c005997c87..3eb976e705 100644 --- a/src/foundation-core/truncated-types.lagda.md +++ b/src/foundation-core/truncated-types.lagda.md @@ -10,6 +10,7 @@ module foundation-core.truncated-types where open import foundation.action-on-identifications-functions open import foundation.dependent-pair-types open import foundation.equality-cartesian-product-types +open import foundation.function-extensionality open import foundation.retracts-of-types open import foundation.universe-levels @@ -18,7 +19,6 @@ open import foundation-core.contractible-types open import foundation-core.embeddings open import foundation-core.equality-dependent-pair-types open import foundation-core.equivalences -open import foundation-core.function-extensionality open import foundation-core.homotopies open import foundation-core.identity-types open import foundation-core.propositions diff --git a/src/foundation-core/universal-property-truncation.lagda.md b/src/foundation-core/universal-property-truncation.lagda.md index e7585296c5..1f7366ca3a 100644 --- a/src/foundation-core/universal-property-truncation.lagda.md +++ b/src/foundation-core/universal-property-truncation.lagda.md @@ -8,13 +8,13 @@ module foundation-core.universal-property-truncation where ```agda open import foundation.dependent-pair-types +open import foundation.function-extensionality open import foundation.universal-property-equivalences open import foundation.universe-levels open import foundation-core.contractible-maps open import foundation-core.contractible-types open import foundation-core.equivalences -open import foundation-core.function-extensionality open import foundation-core.function-types open import foundation-core.functoriality-dependent-pair-types open import foundation-core.homotopies diff --git a/src/foundation.lagda.md b/src/foundation.lagda.md index ac1da1b851..5fb5bc2ff4 100644 --- a/src/foundation.lagda.md +++ b/src/foundation.lagda.md @@ -358,6 +358,7 @@ open import foundation.transport-along-higher-identifications public open import foundation.transport-along-homotopies public open import foundation.transport-along-identifications public open import foundation.transport-split-type-families public +open import foundation.transposition-identifications-along-equivalences public open import foundation.transposition-span-diagrams public open import foundation.trivial-relaxed-sigma-decompositions public open import foundation.trivial-sigma-decompositions public diff --git a/src/foundation/axiom-of-choice.lagda.md b/src/foundation/axiom-of-choice.lagda.md index 4ebd0ee3d0..1d28e42414 100644 --- a/src/foundation/axiom-of-choice.lagda.md +++ b/src/foundation/axiom-of-choice.lagda.md @@ -8,6 +8,7 @@ module foundation.axiom-of-choice where ```agda open import foundation.dependent-pair-types +open import foundation.function-extensionality open import foundation.functoriality-propositional-truncation open import foundation.postcomposition-functions open import foundation.projective-types @@ -20,7 +21,6 @@ open import foundation.whiskering-homotopies-composition open import foundation-core.equivalences open import foundation-core.fibers-of-maps -open import foundation-core.function-extensionality open import foundation-core.function-types open import foundation-core.functoriality-dependent-pair-types open import foundation-core.identity-types diff --git a/src/foundation/binary-functoriality-set-quotients.lagda.md b/src/foundation/binary-functoriality-set-quotients.lagda.md index 1272146bda..2fa963a153 100644 --- a/src/foundation/binary-functoriality-set-quotients.lagda.md +++ b/src/foundation/binary-functoriality-set-quotients.lagda.md @@ -12,6 +12,7 @@ module foundation.binary-functoriality-set-quotients where open import foundation.binary-homotopies open import foundation.dependent-pair-types open import foundation.exponents-set-quotients +open import foundation.function-extensionality open import foundation.functoriality-set-quotients open import foundation.fundamental-theorem-of-identity-types open import foundation.homotopies @@ -27,7 +28,6 @@ open import foundation.universe-levels open import foundation-core.contractible-types open import foundation-core.equivalence-relations open import foundation-core.equivalences -open import foundation-core.function-extensionality open import foundation-core.function-types open import foundation-core.functoriality-dependent-function-types open import foundation-core.functoriality-dependent-pair-types diff --git a/src/foundation/binary-homotopies.lagda.md b/src/foundation/binary-homotopies.lagda.md index 4c36d82252..bbfde019b4 100644 --- a/src/foundation/binary-homotopies.lagda.md +++ b/src/foundation/binary-homotopies.lagda.md @@ -9,12 +9,12 @@ module foundation.binary-homotopies where ```agda open import foundation.dependent-pair-types open import foundation.equality-dependent-function-types +open import foundation.function-extensionality open import foundation.fundamental-theorem-of-identity-types open import foundation.homotopy-induction open import foundation.universe-levels open import foundation-core.equivalences -open import foundation-core.function-extensionality open import foundation-core.homotopies open import foundation-core.identity-types open import foundation-core.torsorial-type-families diff --git a/src/foundation/cantors-diagonal-argument.lagda.md b/src/foundation/cantors-diagonal-argument.lagda.md index fba7fc9574..203101f83f 100644 --- a/src/foundation/cantors-diagonal-argument.lagda.md +++ b/src/foundation/cantors-diagonal-argument.lagda.md @@ -8,6 +8,7 @@ module foundation.cantors-diagonal-argument where ```agda open import foundation.dependent-pair-types +open import foundation.function-extensionality open import foundation.logical-equivalences open import foundation.negation open import foundation.propositional-truncations @@ -16,7 +17,6 @@ open import foundation.universe-levels open import foundation-core.empty-types open import foundation-core.fibers-of-maps -open import foundation-core.function-extensionality open import foundation-core.propositions ``` diff --git a/src/foundation/cartesian-products-set-quotients.lagda.md b/src/foundation/cartesian-products-set-quotients.lagda.md index 01aa270a6d..2dcec083f3 100644 --- a/src/foundation/cartesian-products-set-quotients.lagda.md +++ b/src/foundation/cartesian-products-set-quotients.lagda.md @@ -10,6 +10,7 @@ module foundation.cartesian-products-set-quotients where open import foundation.action-on-identifications-functions open import foundation.dependent-pair-types open import foundation.equality-cartesian-product-types +open import foundation.function-extensionality open import foundation.products-equivalence-relations open import foundation.reflecting-maps-equivalence-relations open import foundation.set-quotients @@ -22,7 +23,6 @@ open import foundation-core.cartesian-product-types open import foundation-core.equality-dependent-pair-types open import foundation-core.equivalence-relations open import foundation-core.equivalences -open import foundation-core.function-extensionality open import foundation-core.function-types open import foundation-core.homotopies open import foundation-core.identity-types diff --git a/src/foundation/commuting-cubes-of-maps.lagda.md b/src/foundation/commuting-cubes-of-maps.lagda.md index 8206d52da9..47d6b48201 100644 --- a/src/foundation/commuting-cubes-of-maps.lagda.md +++ b/src/foundation/commuting-cubes-of-maps.lagda.md @@ -12,12 +12,12 @@ open import foundation.commuting-hexagons-of-identifications open import foundation.commuting-squares-of-maps open import foundation.cones-over-cospan-diagrams open import foundation.dependent-pair-types +open import foundation.function-extensionality open import foundation.homotopies open import foundation.universe-levels open import foundation.whiskering-homotopies-composition open import foundation.whiskering-identifications-concatenation -open import foundation-core.function-extensionality open import foundation-core.function-types open import foundation-core.identity-types open import foundation-core.precomposition-functions diff --git a/src/foundation/commuting-prisms-of-maps.lagda.md b/src/foundation/commuting-prisms-of-maps.lagda.md index 3d87ce8f63..8aaf8bc999 100644 --- a/src/foundation/commuting-prisms-of-maps.lagda.md +++ b/src/foundation/commuting-prisms-of-maps.lagda.md @@ -14,6 +14,7 @@ open import foundation.commuting-squares-of-homotopies open import foundation.commuting-squares-of-maps open import foundation.commuting-triangles-of-maps open import foundation.composition-algebra +open import foundation.function-extensionality open import foundation.identity-types open import foundation.path-algebra open import foundation.postcomposition-functions @@ -22,7 +23,6 @@ open import foundation.universe-levels open import foundation.whiskering-homotopies-composition open import foundation-core.equivalences -open import foundation-core.function-extensionality open import foundation-core.function-types open import foundation-core.functoriality-dependent-function-types open import foundation-core.homotopies diff --git a/src/foundation/commuting-squares-of-maps.lagda.md b/src/foundation/commuting-squares-of-maps.lagda.md index 2e475f920f..c2184a1dab 100644 --- a/src/foundation/commuting-squares-of-maps.lagda.md +++ b/src/foundation/commuting-squares-of-maps.lagda.md @@ -15,17 +15,18 @@ open import foundation.action-on-identifications-functions open import foundation.commuting-squares-of-homotopies open import foundation.commuting-squares-of-identifications open import foundation.commuting-triangles-of-maps -open import foundation.equivalences +open import foundation.function-extensionality open import foundation.identity-types open import foundation.postcomposition-functions open import foundation.precomposition-functions +open import foundation.transposition-identifications-along-equivalences open import foundation.universe-levels open import foundation.whiskering-higher-homotopies-composition open import foundation.whiskering-homotopies-composition open import foundation.whiskering-identifications-concatenation open import foundation-core.commuting-prisms-of-maps -open import foundation-core.function-extensionality +open import foundation-core.equivalences open import foundation-core.function-types open import foundation-core.homotopies ``` @@ -97,62 +98,6 @@ module _ right-whisker-concat right-unit (K x) ``` -### Inverting squares horizontally and vertically - -If the horizontal/vertical maps in a commuting square are both -[equivalences](foundation-core.equivalences.md), then the square remains -commuting if we invert those equivalences. - -```agda -coherence-square-inv-horizontal : - {l1 l2 l3 l4 : Level} {A : UU l1} {B : UU l2} {X : UU l3} {Y : UU l4} - (top : A ≃ B) (left : A → X) (right : B → Y) (bottom : X ≃ Y) → - coherence-square-maps (map-equiv top) left right (map-equiv bottom) → - coherence-square-maps (map-inv-equiv top) right left (map-inv-equiv bottom) -coherence-square-inv-horizontal top left right bottom H b = - map-eq-transpose-equiv-inv - ( bottom) - ( ( ap right (inv (is-section-map-inv-equiv top b))) ∙ - ( inv (H (map-inv-equiv top b)))) - -coherence-square-inv-vertical : - {l1 l2 l3 l4 : Level} {A : UU l1} {B : UU l2} {X : UU l3} {Y : UU l4} - (top : A → B) (left : A ≃ X) (right : B ≃ Y) (bottom : X → Y) → - coherence-square-maps top (map-equiv left) (map-equiv right) bottom → - coherence-square-maps bottom (map-inv-equiv left) (map-inv-equiv right) top -coherence-square-inv-vertical top left right bottom H x = - map-eq-transpose-equiv - ( right) - ( ( inv (H (map-inv-equiv left x))) ∙ - ( ap bottom (is-section-map-inv-equiv left x))) - -coherence-square-inv-all : - {l1 l2 l3 l4 : Level} {A : UU l1} {B : UU l2} {X : UU l3} {Y : UU l4} - (top : A ≃ B) (left : A ≃ X) (right : B ≃ Y) (bottom : X ≃ Y) → - coherence-square-maps - ( map-equiv top) - ( map-equiv left) - ( map-equiv right) - ( map-equiv bottom) → - coherence-square-maps - ( map-inv-equiv bottom) - ( map-inv-equiv right) - ( map-inv-equiv left) - ( map-inv-equiv top) -coherence-square-inv-all top left right bottom H = - coherence-square-inv-vertical - ( map-inv-equiv top) - ( right) - ( left) - ( map-inv-equiv bottom) - ( coherence-square-inv-horizontal - ( top) - ( map-equiv left) - ( map-equiv right) - ( bottom) - ( H)) -``` - ### Commuting squares of maps induce commuting squares of precomposition maps Every commuting square diff --git a/src/foundation/commuting-triangles-of-identifications.lagda.md b/src/foundation/commuting-triangles-of-identifications.lagda.md index bc451f1b59..27301a5608 100644 --- a/src/foundation/commuting-triangles-of-identifications.lagda.md +++ b/src/foundation/commuting-triangles-of-identifications.lagda.md @@ -386,7 +386,7 @@ identification map-coherence-triangle-identifications p refl p (inv right-unit) ``` -and in the case where the identification `top` is refl` we obtain +and in the case where the identification `top` is `refl` we obtain ```text refl = map-coherence-triangle-identifications p p refl refl. diff --git a/src/foundation/cones-over-inverse-sequential-diagrams.lagda.md b/src/foundation/cones-over-inverse-sequential-diagrams.lagda.md index 291b047892..ba3b8087f4 100644 --- a/src/foundation/cones-over-inverse-sequential-diagrams.lagda.md +++ b/src/foundation/cones-over-inverse-sequential-diagrams.lagda.md @@ -12,6 +12,7 @@ open import elementary-number-theory.natural-numbers open import foundation.binary-homotopies open import foundation.dependent-pair-types open import foundation.equality-dependent-function-types +open import foundation.function-extensionality open import foundation.fundamental-theorem-of-identity-types open import foundation.homotopy-induction open import foundation.inverse-sequential-diagrams @@ -21,7 +22,6 @@ open import foundation.whiskering-homotopies-composition open import foundation-core.commuting-triangles-of-maps open import foundation-core.equivalences -open import foundation-core.function-extensionality open import foundation-core.homotopies open import foundation-core.identity-types open import foundation-core.torsorial-type-families diff --git a/src/foundation/connected-maps.lagda.md b/src/foundation/connected-maps.lagda.md index 45f97b576e..94f39f346b 100644 --- a/src/foundation/connected-maps.lagda.md +++ b/src/foundation/connected-maps.lagda.md @@ -9,6 +9,7 @@ module foundation.connected-maps where ```agda open import foundation.connected-types open import foundation.dependent-pair-types +open import foundation.function-extensionality open import foundation.fundamental-theorem-of-identity-types open import foundation.homotopy-induction open import foundation.precomposition-dependent-functions @@ -25,7 +26,6 @@ open import foundation-core.contractible-maps open import foundation-core.embeddings open import foundation-core.equivalences open import foundation-core.fibers-of-maps -open import foundation-core.function-extensionality open import foundation-core.function-types open import foundation-core.functoriality-dependent-pair-types open import foundation-core.homotopies diff --git a/src/foundation/connected-types.lagda.md b/src/foundation/connected-types.lagda.md index 6798c929e8..774b5d94d4 100644 --- a/src/foundation/connected-types.lagda.md +++ b/src/foundation/connected-types.lagda.md @@ -9,6 +9,7 @@ module foundation.connected-types where ```agda open import foundation.contractible-types open import foundation.dependent-pair-types +open import foundation.function-extensionality open import foundation.functoriality-truncation open import foundation.inhabited-types open import foundation.propositional-truncations @@ -21,7 +22,6 @@ open import foundation.universe-levels open import foundation-core.constant-maps open import foundation-core.contractible-maps open import foundation-core.equivalences -open import foundation-core.function-extensionality open import foundation-core.functoriality-dependent-pair-types open import foundation-core.identity-types open import foundation-core.precomposition-functions diff --git a/src/foundation/constant-maps.lagda.md b/src/foundation/constant-maps.lagda.md index d30302c8de..e9d1ffd668 100644 --- a/src/foundation/constant-maps.lagda.md +++ b/src/foundation/constant-maps.lagda.md @@ -14,6 +14,7 @@ open import foundation.action-on-homotopies-functions open import foundation.action-on-identifications-functions open import foundation.dependent-pair-types open import foundation.faithful-maps +open import foundation.function-extensionality open import foundation.type-arithmetic-unit-type open import foundation.unit-type open import foundation.universe-levels @@ -23,7 +24,6 @@ open import foundation-core.contractible-maps open import foundation-core.embeddings open import foundation-core.equivalences open import foundation-core.fibers-of-maps -open import foundation-core.function-extensionality open import foundation-core.function-types open import foundation-core.homotopies open import foundation-core.identity-types diff --git a/src/foundation/contractible-types.lagda.md b/src/foundation/contractible-types.lagda.md index f23a6df409..9cbe0de532 100644 --- a/src/foundation/contractible-types.lagda.md +++ b/src/foundation/contractible-types.lagda.md @@ -11,6 +11,7 @@ open import foundation-core.contractible-types public ```agda open import foundation.action-on-identifications-functions open import foundation.dependent-pair-types +open import foundation.function-extensionality open import foundation.subuniverses open import foundation.unit-type open import foundation.universe-levels @@ -18,7 +19,6 @@ open import foundation.universe-levels open import foundation-core.constant-maps open import foundation-core.contractible-maps open import foundation-core.equivalences -open import foundation-core.function-extensionality open import foundation-core.function-types open import foundation-core.functoriality-dependent-pair-types open import foundation-core.identity-types diff --git a/src/foundation/coproduct-decompositions.lagda.md b/src/foundation/coproduct-decompositions.lagda.md index 507595d667..de585c2bce 100644 --- a/src/foundation/coproduct-decompositions.lagda.md +++ b/src/foundation/coproduct-decompositions.lagda.md @@ -11,10 +11,11 @@ open import foundation.action-on-identifications-functions open import foundation.coproduct-decompositions-subuniverse open import foundation.dependent-pair-types open import foundation.equivalence-extensionality -open import foundation.equivalences +open import foundation.function-extensionality open import foundation.functoriality-coproduct-types open import foundation.fundamental-theorem-of-identity-types open import foundation.structure-identity-principle +open import foundation.transposition-identifications-along-equivalences open import foundation.type-arithmetic-coproduct-types open import foundation.type-arithmetic-dependent-pair-types open import foundation.type-arithmetic-empty-type @@ -26,8 +27,8 @@ open import foundation.whiskering-homotopies-composition open import foundation-core.contractible-types open import foundation-core.coproduct-types open import foundation-core.equality-dependent-pair-types +open import foundation-core.equivalences open import foundation-core.fibers-of-maps -open import foundation-core.function-extensionality open import foundation-core.function-types open import foundation-core.functoriality-dependent-pair-types open import foundation-core.homotopies diff --git a/src/foundation/coslice.lagda.md b/src/foundation/coslice.lagda.md index 8ed47fbac2..6533ee227b 100644 --- a/src/foundation/coslice.lagda.md +++ b/src/foundation/coslice.lagda.md @@ -9,12 +9,12 @@ module foundation.coslice where ```agda open import foundation.commuting-triangles-of-homotopies open import foundation.dependent-pair-types +open import foundation.function-extensionality open import foundation.structure-identity-principle open import foundation.universe-levels open import foundation.whiskering-homotopies-composition open import foundation-core.equivalences -open import foundation-core.function-extensionality open import foundation-core.function-types open import foundation-core.homotopies open import foundation-core.identity-types diff --git a/src/foundation/decidable-equivalence-relations.lagda.md b/src/foundation/decidable-equivalence-relations.lagda.md index 5f6ab7ce69..6820782f7d 100644 --- a/src/foundation/decidable-equivalence-relations.lagda.md +++ b/src/foundation/decidable-equivalence-relations.lagda.md @@ -18,6 +18,7 @@ open import foundation.effective-maps-equivalence-relations open import foundation.equivalence-classes open import foundation.equivalence-relations open import foundation.existential-quantification +open import foundation.function-extensionality open import foundation.functoriality-cartesian-product-types open import foundation.fundamental-theorem-of-identity-types open import foundation.images @@ -37,7 +38,6 @@ open import foundation-core.embeddings open import foundation-core.equality-dependent-pair-types open import foundation-core.equivalences open import foundation-core.fibers-of-maps -open import foundation-core.function-extensionality open import foundation-core.function-types open import foundation-core.functoriality-dependent-pair-types open import foundation-core.homotopies diff --git a/src/foundation/dependent-universal-property-equivalences.lagda.md b/src/foundation/dependent-universal-property-equivalences.lagda.md index fff351dda9..f9a041351b 100644 --- a/src/foundation/dependent-universal-property-equivalences.lagda.md +++ b/src/foundation/dependent-universal-property-equivalences.lagda.md @@ -10,11 +10,11 @@ module foundation.dependent-universal-property-equivalences where open import foundation.action-on-identifications-dependent-functions open import foundation.action-on-identifications-functions open import foundation.dependent-pair-types +open import foundation.function-extensionality open import foundation.universe-levels open import foundation-core.coherently-invertible-maps open import foundation-core.equivalences -open import foundation-core.function-extensionality open import foundation-core.homotopies open import foundation-core.identity-types open import foundation-core.path-split-maps diff --git a/src/foundation/epimorphisms-with-respect-to-sets.lagda.md b/src/foundation/epimorphisms-with-respect-to-sets.lagda.md index a9832e08f7..01a52b2c70 100644 --- a/src/foundation/epimorphisms-with-respect-to-sets.lagda.md +++ b/src/foundation/epimorphisms-with-respect-to-sets.lagda.md @@ -10,6 +10,7 @@ module foundation.epimorphisms-with-respect-to-sets where open import foundation.action-on-identifications-functions open import foundation.dependent-pair-types open import foundation.existential-quantification +open import foundation.function-extensionality open import foundation.identity-types open import foundation.propositional-extensionality open import foundation.propositional-truncations @@ -20,7 +21,6 @@ open import foundation.universe-levels open import foundation-core.embeddings open import foundation-core.equivalences -open import foundation-core.function-extensionality open import foundation-core.function-types open import foundation-core.functoriality-dependent-pair-types open import foundation-core.homotopies diff --git a/src/foundation/epimorphisms-with-respect-to-truncated-types.lagda.md b/src/foundation/epimorphisms-with-respect-to-truncated-types.lagda.md index 193d6fb9ed..4cb8a7e747 100644 --- a/src/foundation/epimorphisms-with-respect-to-truncated-types.lagda.md +++ b/src/foundation/epimorphisms-with-respect-to-truncated-types.lagda.md @@ -12,6 +12,7 @@ open import foundation.commuting-squares-of-maps open import foundation.connected-maps open import foundation.dependent-pair-types open import foundation.embeddings +open import foundation.function-extensionality open import foundation.functoriality-truncation open import foundation.precomposition-functions open import foundation.sections @@ -22,7 +23,6 @@ open import foundation.universe-levels open import foundation-core.contractible-types open import foundation-core.equivalences -open import foundation-core.function-extensionality open import foundation-core.function-types open import foundation-core.homotopies open import foundation-core.identity-types diff --git a/src/foundation/equivalence-extensionality.lagda.md b/src/foundation/equivalence-extensionality.lagda.md index 4022c9cba4..4697cca89d 100644 --- a/src/foundation/equivalence-extensionality.lagda.md +++ b/src/foundation/equivalence-extensionality.lagda.md @@ -9,6 +9,7 @@ module foundation.equivalence-extensionality where ```agda open import foundation.dependent-pair-types open import foundation.dependent-universal-property-equivalences +open import foundation.function-extensionality open import foundation.fundamental-theorem-of-identity-types open import foundation.identity-systems open import foundation.subtype-identity-principle @@ -18,7 +19,6 @@ open import foundation-core.contractible-maps open import foundation-core.contractible-types open import foundation-core.equivalences open import foundation-core.fibers-of-maps -open import foundation-core.function-extensionality open import foundation-core.function-types open import foundation-core.functoriality-dependent-pair-types open import foundation-core.homotopies diff --git a/src/foundation/equivalences.lagda.md b/src/foundation/equivalences.lagda.md index 6a127e78e9..99e0c79cf1 100644 --- a/src/foundation/equivalences.lagda.md +++ b/src/foundation/equivalences.lagda.md @@ -13,9 +13,11 @@ open import foundation.action-on-identifications-functions open import foundation.cones-over-cospan-diagrams open import foundation.dependent-pair-types open import foundation.equivalence-extensionality +open import foundation.function-extensionality open import foundation.functoriality-fibers-of-maps open import foundation.identity-types open import foundation.path-algebra +open import foundation.transposition-identifications-along-equivalences open import foundation.truncated-maps open import foundation.universal-property-equivalences open import foundation.universe-levels @@ -26,7 +28,6 @@ open import foundation-core.contractible-maps open import foundation-core.contractible-types open import foundation-core.embeddings open import foundation-core.fibers-of-maps -open import foundation-core.function-extensionality open import foundation-core.function-types open import foundation-core.functoriality-dependent-pair-types open import foundation-core.homotopies @@ -63,204 +64,6 @@ module _ pr2 (emb-equiv e) = is-emb-equiv e ``` -### Transposing equalities along equivalences - -We have two ways of showing that an application of an equivalence may be -transposed to the other side of an -[identification](foundation-core.identity-types.md), i.e. that the type -`e x = y` is equivalent to the type `x = e⁻¹ y` — one uses the fact that `e⁻¹` -is a [section](foundation-core.sections.md) of `e`, from which it follows that - -```text - (e x = y) ≃ (e x = e e⁻¹ y) ≃ (x = e⁻¹ y) , -``` - -and the other using the fact that `e⁻¹` is a -[retraction](foundation-core.retractions.md) of `e`, resulting in the -equivalence - -```text - (e x = y) ≃ (e⁻¹ e x = e⁻¹ y) ≃ (x = e⁻¹ y) . -``` - -These two equivalences are [homotopic](foundation-core.homotopies.md), as is -shown below. - -```agda -module _ - {l1 l2 : Level} {A : UU l1} {B : UU l2} (e : A ≃ B) - where - - eq-transpose-equiv : - (x : A) (y : B) → (map-equiv e x = y) ≃ (x = map-inv-equiv e y) - eq-transpose-equiv x y = - ( inv-equiv (equiv-ap e x (map-inv-equiv e y))) ∘e - ( equiv-concat' - ( map-equiv e x) - ( inv (is-section-map-inv-equiv e y))) - - map-eq-transpose-equiv : - {x : A} {y : B} → map-equiv e x = y → x = map-inv-equiv e y - map-eq-transpose-equiv {x} {y} = map-equiv (eq-transpose-equiv x y) - - inv-map-eq-transpose-equiv : - {x : A} {y : B} → x = map-inv-equiv e y → map-equiv e x = y - inv-map-eq-transpose-equiv {x} {y} = map-inv-equiv (eq-transpose-equiv x y) - - eq-transpose-equiv' : - (x : A) (y : B) → (map-equiv e x = y) ≃ (x = map-inv-equiv e y) - eq-transpose-equiv' x y = - ( equiv-concat - ( inv (is-retraction-map-inv-equiv e x)) - ( map-inv-equiv e y)) ∘e - ( equiv-ap (inv-equiv e) (map-equiv e x) y) - - map-eq-transpose-equiv' : - {x : A} {y : B} → map-equiv e x = y → x = map-inv-equiv e y - map-eq-transpose-equiv' {x} {y} = map-equiv (eq-transpose-equiv' x y) -``` - -It is sometimes useful to consider identifications `y = e x` instead of -`e x = y`, so we include an inverted equivalence for that as well. - -```agda - eq-transpose-equiv-inv : - (x : A) (y : B) → (y = map-equiv e x) ≃ (map-inv-equiv e y = x) - eq-transpose-equiv-inv x y = - ( equiv-inv x (map-inv-equiv e y)) ∘e - ( eq-transpose-equiv x y) ∘e - ( equiv-inv y (map-equiv e x)) - - map-eq-transpose-equiv-inv : - {a : A} {b : B} → b = map-equiv e a → map-inv-equiv e b = a - map-eq-transpose-equiv-inv {a} {b} = map-equiv (eq-transpose-equiv-inv a b) - - inv-map-eq-transpose-equiv-inv : - {a : A} {b : B} → map-inv-equiv e b = a → b = map-equiv e a - inv-map-eq-transpose-equiv-inv {a} {b} = - map-inv-equiv (eq-transpose-equiv-inv a b) -``` - -#### Computation rules for transposing equivalences - -We begin by showing that the two equivalences stated above are homotopic. - -```agda -module _ - {l1 l2 : Level} {A : UU l1} {B : UU l2} (e : A ≃ B) - where - - htpy-map-eq-transpose-equiv : - {x : A} {y : B} → - map-eq-transpose-equiv e {x} {y} ~ map-eq-transpose-equiv' e - htpy-map-eq-transpose-equiv {x} refl = - ( map-eq-transpose-equiv-inv - ( equiv-ap e x _) - ( ( ap inv (coherence-map-inv-equiv e x)) ∙ - ( inv (ap-inv (map-equiv e) (is-retraction-map-inv-equiv e x))))) ∙ - ( inv right-unit) -``` - -Transposing a composition of paths fits into a triangle with a transpose of the -left factor. - -```agda - triangle-eq-transpose-equiv-concat : - {x : A} {y z : B} (p : map-equiv e x = y) (q : y = z) → - ( map-eq-transpose-equiv e (p ∙ q)) = - ( map-eq-transpose-equiv e p ∙ ap (map-inv-equiv e) q) - triangle-eq-transpose-equiv-concat refl refl = inv right-unit -``` - -Transposed identifications fit in -[commuting triangles](foundation.commuting-triangles-of-identifications.md) with -the original identifications. - -```agda - triangle-eq-transpose-equiv : - {x : A} {y : B} (p : map-equiv e x = y) → - ( ( ap (map-equiv e) (map-eq-transpose-equiv e p)) ∙ - ( is-section-map-inv-equiv e y)) = - ( p) - triangle-eq-transpose-equiv {x} {y} p = - ( right-whisker-concat - ( is-section-map-inv-equiv - ( equiv-ap e x (map-inv-equiv e y)) - ( p ∙ inv (is-section-map-inv-equiv e y))) - ( is-section-map-inv-equiv e y)) ∙ - ( ( assoc - ( p) - ( inv (is-section-map-inv-equiv e y)) - ( is-section-map-inv-equiv e y)) ∙ - ( ( left-whisker-concat p - ( left-inv (is-section-map-inv-equiv e y))) ∙ - ( right-unit))) - - triangle-eq-transpose-equiv-inv : - {x : A} {y : B} (p : y = map-equiv e x) → - ( (is-section-map-inv-equiv e y) ∙ p) = - ( ap (map-equiv e) (map-eq-transpose-equiv-inv e p)) - triangle-eq-transpose-equiv-inv {x} {y} p = - map-inv-equiv - ( equiv-ap - ( equiv-inv (map-equiv e (map-inv-equiv e y)) (map-equiv e x)) - ( (is-section-map-inv-equiv e y) ∙ p) - ( ap (map-equiv e) (map-eq-transpose-equiv-inv e p))) - ( ( distributive-inv-concat (is-section-map-inv-equiv e y) p) ∙ - ( ( inv - ( right-transpose-eq-concat - ( ap (map-equiv e) (inv (map-eq-transpose-equiv-inv e p))) - ( is-section-map-inv-equiv e y) - ( inv p) - ( ( right-whisker-concat - ( ap - ( ap (map-equiv e)) - ( inv-inv - ( map-inv-equiv - ( equiv-ap e x (map-inv-equiv e y)) - ( ( inv p) ∙ - ( inv (is-section-map-inv-equiv e y)))))) - ( is-section-map-inv-equiv e y)) ∙ - ( triangle-eq-transpose-equiv (inv p))))) ∙ - ( ap-inv (map-equiv e) (map-eq-transpose-equiv-inv e p)))) - - triangle-eq-transpose-equiv' : - {x : A} {y : B} (p : map-equiv e x = y) → - ( is-retraction-map-inv-equiv e x ∙ map-eq-transpose-equiv e p) = - ( ap (map-inv-equiv e) p) - triangle-eq-transpose-equiv' {x} refl = - ( left-whisker-concat - ( is-retraction-map-inv-equiv e x) - ( htpy-map-eq-transpose-equiv refl)) ∙ - ( is-section-inv-concat (is-retraction-map-inv-equiv e x) refl) - - triangle-eq-transpose-equiv-inv' : - {x : A} {y : B} (p : y = map-equiv e x) → - ( map-eq-transpose-equiv-inv e p) = - ( ap (map-inv-equiv e) p ∙ is-retraction-map-inv-equiv e x) - triangle-eq-transpose-equiv-inv' {x} refl = - inv - ( right-transpose-eq-concat - ( is-retraction-map-inv-equiv e x) - ( map-eq-transpose-equiv e refl) - ( refl) - ( triangle-eq-transpose-equiv' refl)) - - right-inverse-eq-transpose-equiv : - {x : A} {y : B} (p : y = map-equiv e x) → - ( ( map-eq-transpose-equiv e (inv p)) ∙ - ( ap (map-inv-equiv e) p ∙ is-retraction-map-inv-equiv e x)) = - ( refl) - right-inverse-eq-transpose-equiv {x} p = - inv - ( map-inv-equiv - ( equiv-left-transpose-eq-concat' - ( refl) - ( map-eq-transpose-equiv e (inv p)) - ( ap (map-inv-equiv e) p ∙ is-retraction-map-inv-equiv e x)) - ( right-unit ∙ triangle-eq-transpose-equiv-inv' p)) -``` - ### Equivalences have a contractible type of sections **Proof:** Since equivalences are diff --git a/src/foundation/exponents-set-quotients.lagda.md b/src/foundation/exponents-set-quotients.lagda.md index c4e3cc8617..bfc9888f3c 100644 --- a/src/foundation/exponents-set-quotients.lagda.md +++ b/src/foundation/exponents-set-quotients.lagda.md @@ -11,6 +11,7 @@ module foundation.exponents-set-quotients where ```agda open import foundation.binary-relations open import foundation.dependent-pair-types +open import foundation.function-extensionality open import foundation.functoriality-set-quotients open import foundation.postcomposition-functions open import foundation.reflecting-maps-equivalence-relations @@ -23,7 +24,6 @@ open import foundation.whiskering-homotopies-composition open import foundation-core.contractible-types open import foundation-core.embeddings open import foundation-core.equivalence-relations -open import foundation-core.function-extensionality open import foundation-core.function-types open import foundation-core.homotopies open import foundation-core.identity-types diff --git a/src/foundation/fibered-maps.lagda.md b/src/foundation/fibered-maps.lagda.md index 9547a00223..564d810cb2 100644 --- a/src/foundation/fibered-maps.lagda.md +++ b/src/foundation/fibered-maps.lagda.md @@ -9,6 +9,7 @@ module foundation.fibered-maps where ```agda open import foundation.cones-over-cospan-diagrams open import foundation.dependent-pair-types +open import foundation.function-extensionality open import foundation.fundamental-theorem-of-identity-types open import foundation.homotopy-induction open import foundation.slice @@ -25,7 +26,6 @@ open import foundation-core.empty-types open import foundation-core.equality-dependent-pair-types open import foundation-core.equivalences open import foundation-core.fibers-of-maps -open import foundation-core.function-extensionality open import foundation-core.function-types open import foundation-core.homotopies open import foundation-core.identity-types diff --git a/src/foundation/function-extensionality.lagda.md b/src/foundation/function-extensionality.lagda.md index 4a59a93682..2abbd98177 100644 --- a/src/foundation/function-extensionality.lagda.md +++ b/src/foundation/function-extensionality.lagda.md @@ -2,172 +2,237 @@ ```agda module foundation.function-extensionality where - -open import foundation-core.function-extensionality public ```
Imports ```agda +open import foundation.action-on-identifications-binary-functions open import foundation.action-on-identifications-functions -open import foundation.commuting-squares-of-maps -open import foundation.postcomposition-dependent-functions +open import foundation.dependent-pair-types +open import foundation.implicit-function-types open import foundation.universe-levels open import foundation.whiskering-homotopies-composition +open import foundation-core.equivalences open import foundation-core.function-types open import foundation-core.homotopies open import foundation-core.identity-types -open import foundation-core.postcomposition-functions -open import foundation-core.precomposition-dependent-functions -open import foundation-core.precomposition-functions ```
## Idea -The {{#concept "function extensionality axiom"}} asserts that -[identifications](foundation-core.identity-types.md) of (dependent) functions -are [equivalently](foundation-core.equivalences.md) described as +The +{{#concept "function extensionality axiom" Agda=function-extensionality Agda=funext}} +asserts that [identifications](foundation-core.identity-types.md) of (dependent) +functions are [equivalently](foundation-core.equivalences.md) described as [homotopies](foundation-core.homotopies.md) between them. In other words, a function is completely determined by its values. -## Properties +## Definitions + +### Equalities induce homotopies -### Naturality of `eq-htpy` with respect to functions +```agda +module _ + {l1 l2 : Level} {A : UU l1} {B : A → UU l2} + where -#### Naturality of `eq-htpy` with respect to precomposition of dependent functions + htpy-eq : {f g : (x : A) → B x} → f = g → f ~ g + htpy-eq refl = refl-htpy +``` + +### An instance of function extensionality -Consider a map `f : A → B` and two dependent functions `g h : (x : B) → C x`. -Then the square +This property asserts that, _given_ two functions `f` and `g`, the map ```text - ap (precomp-Π f C) - (g = h) ---------------------------> (g ∘ f = h ∘ f) - ^ ^ - eq-htpy | | eq-htpy - | | - (g ~ h) ----------------------------> (g ∘ f ~ h ∘ f) - precomp-Π f (eq-value g h) + htpy-eq : f = g → f ~ g ``` -[commutes](foundation-core.commuting-squares-of-maps.md). +is an equivalence. ```agda -coherence-square-eq-htpy-ap-precomp-Π : - {l1 l2 l3 : Level} {A : UU l1} {B : UU l2} (f : A → B) {C : B → UU l3} - (g h : (b : B) → C b) → - coherence-square-maps - ( precomp-Π f (eq-value g h)) - ( eq-htpy) - ( eq-htpy) - ( ap (precomp-Π f C) {g} {h}) -coherence-square-eq-htpy-ap-precomp-Π f {C = C} g h = - coherence-square-inv-vertical - ( ap (precomp-Π f C)) - ( equiv-funext) - ( equiv-funext) - ( precomp-Π f (eq-value g h)) - ( coherence-square-homotopies-htpy-eq-ap-precomp-Π f g h) -``` - -#### Naturality of `eq-htpy` with respect to precomposition of ordinary functions - -Consider a map `f : A → B` and two functions `g h : B → C`. Then the square +module _ + {l1 l2 : Level} {A : UU l1} {B : A → UU l2} + where + + instance-function-extensionality : (f g : (x : A) → B x) → UU (l1 ⊔ l2) + instance-function-extensionality f g = is-equiv (htpy-eq {f = f} {g}) +``` + +### Based function extensionality + +This property asserts that, _given_ a function `f`, the map ```text - ap (precomp f C) - (g = h) -------------------------> (g ∘ f = h ∘ f) - ^ ^ - eq-htpy | | eq-htpy - | | - (g ~ h) --------------------------> (g ∘ f ~ h ∘ f) - precomp f (eq-value g h) + htpy-eq : f = g → f ~ g ``` -commutes. +is an equivalence for any function `g` of the same type. ```agda -coherence-square-eq-htpy-ap-precomp : - {l1 l2 l3 : Level} {A : UU l1} {B : UU l2} {C : UU l3} - (f : A → B) (g h : B → C) → - coherence-square-maps - ( precomp-Π f (eq-value g h)) - ( eq-htpy) - ( eq-htpy) - ( ap (precomp f C)) -coherence-square-eq-htpy-ap-precomp {C = C} f g h = - coherence-square-inv-vertical - ( ap (precomp f C)) - ( equiv-funext) - ( equiv-funext) - ( precomp-Π f (eq-value g h)) - ( coherence-square-homotopies-eq-ap-precomp f g h) -``` - -#### Naturality of `eq-htpy` with respect to postcomposition of dependent functions - -Consider a map `f : {x : A} → B x → C x` and two functions -`g h : (x : A) → B x`. Then the square +module _ + {l1 l2 : Level} {A : UU l1} {B : A → UU l2} + where -```text - ap (postcomp-Π A f) - (g = h) -------------------------> (g ∘ f = h ∘ f) - ^ ^ - eq-htpy | | eq-htpy - | | - (g ~ h) --------------------------> (g ∘ f ~ h ∘ f) - f ·l_ + based-function-extensionality : (f : (x : A) → B x) → UU (l1 ⊔ l2) + based-function-extensionality f = + (g : (x : A) → B x) → is-equiv (htpy-eq {f = f} {g}) ``` -commutes. +### The function extensionality principle with respect to a universe level ```agda -coherence-square-eq-htpy-ap-postcomp-Π : - {l1 l2 l3 : Level} {A : UU l1} {B : A → UU l2} {C : A → UU l3} - (f : {x : A} → B x → C x) (g h : (x : A) → B x) → - coherence-square-maps - ( f ·l_) - ( eq-htpy) - ( eq-htpy) - ( ap (postcomp-Π A f) {x = g} {y = h}) -coherence-square-eq-htpy-ap-postcomp-Π {A = A} f g h = - coherence-square-inv-vertical - ( ap (postcomp-Π A f) {x = g} {y = h}) - ( equiv-funext) - ( equiv-funext) - ( f ·l_) - ( coherence-square-homotopies-eq-ap-postcomp-Π f g h) -``` - -#### Naturality of `eq-htpy` with respect to postcomposition of ordinary functions - -Consider a map `f : B → C` and two functions `g h : A → B`. Then the square +function-extensionality-Level : (l1 l2 : Level) → UU (lsuc l1 ⊔ lsuc l2) +function-extensionality-Level l1 l2 = + {A : UU l1} {B : A → UU l2} + (f g : (x : A) → B x) → + instance-function-extensionality f g +``` -```text - ap (postcomp A f) - (g = h) -------------------------> (g ∘ f = h ∘ f) - ^ ^ - eq-htpy | | eq-htpy - | | - (g ~ h) --------------------------> (g ∘ f ~ h ∘ f) - f ·l_ +### The function extensionality axiom + +```agda +function-extensionality : UUω +function-extensionality = {l1 l2 : Level} → function-extensionality-Level l1 l2 + +postulate + funext : function-extensionality + +module _ + {l1 l2 : Level} {A : UU l1} {B : A → UU l2} + where + + equiv-funext : {f g : (x : A) → B x} → (f = g) ≃ (f ~ g) + pr1 (equiv-funext) = htpy-eq + pr2 (equiv-funext {f} {g}) = funext f g + + eq-htpy : {f g : (x : A) → B x} → (f ~ g) → f = g + eq-htpy {f} {g} = map-inv-is-equiv (funext f g) + + abstract + is-section-eq-htpy : + {f g : (x : A) → B x} → (htpy-eq ∘ eq-htpy {f} {g}) ~ id + is-section-eq-htpy {f} {g} = is-section-map-inv-is-equiv (funext f g) + + is-retraction-eq-htpy : + {f g : (x : A) → B x} → (eq-htpy ∘ htpy-eq {f = f} {g = g}) ~ id + is-retraction-eq-htpy {f} {g} = is-retraction-map-inv-is-equiv (funext f g) + + is-equiv-eq-htpy : + (f g : (x : A) → B x) → is-equiv (eq-htpy {f} {g}) + is-equiv-eq-htpy f g = is-equiv-map-inv-is-equiv (funext f g) + + eq-htpy-refl-htpy : + (f : (x : A) → B x) → eq-htpy (refl-htpy {f = f}) = refl + eq-htpy-refl-htpy f = is-retraction-eq-htpy refl + + equiv-eq-htpy : {f g : (x : A) → B x} → (f ~ g) ≃ (f = g) + pr1 (equiv-eq-htpy {f} {g}) = eq-htpy + pr2 (equiv-eq-htpy {f} {g}) = is-equiv-eq-htpy f g ``` +### Function extensionality for implicit functions + ```agda -coherence-square-eq-htpy-ap-postcomp : - {l1 l2 l3 : Level} {A : UU l1} {B : UU l2} {C : UU l3} (f : B → C) → - (g h : A → B) → - coherence-square-maps - ( f ·l_) - ( eq-htpy) - ( eq-htpy) - ( ap (postcomp A f) {x = g} {y = h}) -coherence-square-eq-htpy-ap-postcomp f = - coherence-square-eq-htpy-ap-postcomp-Π f +module _ + {l1 l2 : Level} {A : UU l1} {B : A → UU l2} {f g : {x : A} → B x} + where + + equiv-funext-implicit : + (Id {A = {x : A} → B x} f g) ≃ ((x : A) → f {x} = g {x}) + equiv-funext-implicit = + equiv-funext ∘e equiv-ap equiv-explicit-implicit-Π f g + + htpy-eq-implicit : + Id {A = {x : A} → B x} f g → (x : A) → f {x} = g {x} + htpy-eq-implicit = map-equiv equiv-funext-implicit + + funext-implicit : is-equiv htpy-eq-implicit + funext-implicit = is-equiv-map-equiv equiv-funext-implicit + + eq-htpy-implicit : + ((x : A) → f {x} = g {x}) → Id {A = {x : A} → B x} f g + eq-htpy-implicit = map-inv-equiv equiv-funext-implicit ``` +## Properties + +### Computing the action on paths of an evaluation map + +```agda +ap-ev : + {l1 l2 : Level} {A : UU l1} {B : UU l2} (a : A) → {f g : A → B} → + (p : f = g) → (ap (λ h → h a) p) = htpy-eq p a +ap-ev a refl = refl +``` + +### `htpy-eq` preserves inverses + +```agda +module _ + {l1 l2 : Level} {A : UU l1} {B : A → UU l2} {f g : (x : A) → B x} + where + + compute-htpy-eq-inv : inv-htpy {f = f} {g} ∘ htpy-eq ~ htpy-eq ∘ inv + compute-htpy-eq-inv refl = refl + + compute-inv-htpy-htpy-eq : htpy-eq ∘ inv ~ inv-htpy {f = f} {g} ∘ htpy-eq + compute-inv-htpy-htpy-eq = inv-htpy compute-htpy-eq-inv +``` + +### `htpy-eq` preserves concatenation of identifications + +```agda +module _ + {l1 l2 : Level} {A : UU l1} {B : A → UU l2} {f g h : (x : A) → B x} + where + + htpy-eq-concat : + (p : f = g) (q : g = h) → htpy-eq (p ∙ q) = (htpy-eq p ∙h htpy-eq q) + htpy-eq-concat refl refl = refl +``` + +### `eq-htpy` preserves concatenation of homotopies + +```agda +module _ + {l1 l2 : Level} {A : UU l1} {B : A → UU l2} {f g h : (x : A) → B x} + where + + eq-htpy-concat-htpy : + (H : f ~ g) (K : g ~ h) → eq-htpy (H ∙h K) = (eq-htpy H ∙ eq-htpy K) + eq-htpy-concat-htpy H K = + ( ap + ( eq-htpy) + ( inv (ap-binary _∙h_ (is-section-eq-htpy H) (is-section-eq-htpy K)) ∙ + inv (htpy-eq-concat (eq-htpy H) (eq-htpy K)))) ∙ + ( is-retraction-eq-htpy (eq-htpy H ∙ eq-htpy K)) +``` + +## See also + +- The fact that the univalence axiom implies function extensionality is proven + in + [`foundation.univalence-implies-function-extensionality`](foundation.univalence-implies-function-extensionality.md). +- Weak function extensionality is defined in + [`foundation.weak-function-extensionality`](foundation.weak-function-extensionality.md). +- Transporting along homotopies is defined in + [`foundation.transport-along-homotopies`](foundation.transport-along-homotopies.md). + +## Idea + +The {{#concept "function extensionality axiom"}} asserts that +[identifications](foundation-core.identity-types.md) of (dependent) functions +are [equivalently](foundation-core.equivalences.md) described as +[homotopies](foundation-core.homotopies.md) between them. In other words, a +function is completely determined by its values. + +## Properties + ### `eq-htpy` preserves inverses In other words, we have a commutative diagram @@ -175,7 +240,7 @@ In other words, we have a commutative diagram ```text inv (f = g) --------> (g = f) - ^ ^ + ∧ ∧ eq-htpy | | eq-htpy | | (f ~ g) ---------> (g ~ f). @@ -189,13 +254,10 @@ module _ compute-eq-htpy-inv-htpy : inv ∘ eq-htpy ~ eq-htpy ∘ inv-htpy {f = f} {g} - compute-eq-htpy-inv-htpy = - coherence-square-inv-vertical - ( inv) - ( equiv-funext) - ( equiv-funext) - ( inv-htpy) - ( compute-htpy-eq-inv) + compute-eq-htpy-inv-htpy H = + ( inv (is-retraction-eq-htpy _)) ∙ + ( inv (ap eq-htpy (compute-htpy-eq-inv (eq-htpy H))) ∙ + ap (eq-htpy ∘ inv-htpy) (is-section-eq-htpy _)) compute-inv-eq-htpy : eq-htpy ∘ inv-htpy {f = f} {g} ~ inv ∘ eq-htpy diff --git a/src/foundation/function-types.lagda.md b/src/foundation/function-types.lagda.md index b1b6f7136f..900c555b30 100644 --- a/src/foundation/function-types.lagda.md +++ b/src/foundation/function-types.lagda.md @@ -12,13 +12,13 @@ open import foundation-core.function-types public open import foundation.action-on-identifications-dependent-functions open import foundation.action-on-identifications-functions open import foundation.dependent-pair-types +open import foundation.function-extensionality open import foundation.homotopy-induction open import foundation.universe-levels open import foundation-core.dependent-identifications open import foundation-core.equality-dependent-pair-types open import foundation-core.equivalences -open import foundation-core.function-extensionality open import foundation-core.homotopies open import foundation-core.identity-types open import foundation-core.transport-along-identifications diff --git a/src/foundation/functional-correspondences.lagda.md b/src/foundation/functional-correspondences.lagda.md index 7bf1fe2d0c..a615239cd0 100644 --- a/src/foundation/functional-correspondences.lagda.md +++ b/src/foundation/functional-correspondences.lagda.md @@ -11,13 +11,13 @@ open import foundation.action-on-identifications-functions open import foundation.contractible-types open import foundation.dependent-pair-types open import foundation.equality-dependent-function-types +open import foundation.function-extensionality open import foundation.fundamental-theorem-of-identity-types open import foundation.subtype-identity-principle open import foundation.univalence open import foundation.universe-levels open import foundation-core.equivalences -open import foundation-core.function-extensionality open import foundation-core.identity-types open import foundation-core.propositions open import foundation-core.subtypes diff --git a/src/foundation/functoriality-coproduct-types.lagda.md b/src/foundation/functoriality-coproduct-types.lagda.md index 27ad94296a..e6f106849d 100644 --- a/src/foundation/functoriality-coproduct-types.lagda.md +++ b/src/foundation/functoriality-coproduct-types.lagda.md @@ -14,6 +14,7 @@ open import foundation.equality-cartesian-product-types open import foundation.equality-coproduct-types open import foundation.equivalence-extensionality open import foundation.equivalences +open import foundation.function-extensionality open import foundation.functoriality-cartesian-product-types open import foundation.homotopy-induction open import foundation.negated-equality @@ -28,7 +29,6 @@ open import foundation-core.cartesian-product-types open import foundation-core.contractible-types open import foundation-core.empty-types open import foundation-core.fibers-of-maps -open import foundation-core.function-extensionality open import foundation-core.function-types open import foundation-core.functoriality-dependent-function-types open import foundation-core.functoriality-dependent-pair-types diff --git a/src/foundation/functoriality-dependent-function-types.lagda.md b/src/foundation/functoriality-dependent-function-types.lagda.md index a43a3fc6b9..49efe60d55 100644 --- a/src/foundation/functoriality-dependent-function-types.lagda.md +++ b/src/foundation/functoriality-dependent-function-types.lagda.md @@ -13,6 +13,7 @@ open import foundation.action-on-identifications-functions open import foundation.dependent-pair-types open import foundation.dependent-universal-property-equivalences open import foundation.equivalence-extensionality +open import foundation.function-extensionality open import foundation.transport-along-identifications open import foundation.unit-type open import foundation.universal-property-unit-type @@ -24,7 +25,6 @@ open import foundation-core.embeddings open import foundation-core.equivalences open import foundation-core.families-of-equivalences open import foundation-core.fibers-of-maps -open import foundation-core.function-extensionality open import foundation-core.function-types open import foundation-core.functoriality-dependent-pair-types open import foundation-core.homotopies diff --git a/src/foundation/functoriality-propositional-truncation.lagda.md b/src/foundation/functoriality-propositional-truncation.lagda.md index 16b61b9d49..8df3a04a2a 100644 --- a/src/foundation/functoriality-propositional-truncation.lagda.md +++ b/src/foundation/functoriality-propositional-truncation.lagda.md @@ -9,13 +9,13 @@ module foundation.functoriality-propositional-truncation where ```agda open import foundation.action-on-identifications-functions open import foundation.dependent-pair-types +open import foundation.function-extensionality open import foundation.propositional-truncations open import foundation.universe-levels open import foundation.whiskering-homotopies-composition open import foundation-core.contractible-types open import foundation-core.equivalences -open import foundation-core.function-extensionality open import foundation-core.function-types open import foundation-core.homotopies open import foundation-core.propositions diff --git a/src/foundation/functoriality-truncation.lagda.md b/src/foundation/functoriality-truncation.lagda.md index 33978aa539..c83d626984 100644 --- a/src/foundation/functoriality-truncation.lagda.md +++ b/src/foundation/functoriality-truncation.lagda.md @@ -9,6 +9,7 @@ module foundation.functoriality-truncation where ```agda open import foundation.action-on-identifications-functions open import foundation.dependent-pair-types +open import foundation.function-extensionality open import foundation.retracts-of-types open import foundation.truncations open import foundation.universe-levels @@ -17,7 +18,6 @@ open import foundation.whiskering-homotopies-composition open import foundation-core.commuting-squares-of-maps open import foundation-core.contractible-types open import foundation-core.equivalences -open import foundation-core.function-extensionality open import foundation-core.function-types open import foundation-core.homotopies open import foundation-core.retractions diff --git a/src/foundation/homotopies-morphisms-arrows.lagda.md b/src/foundation/homotopies-morphisms-arrows.lagda.md index fb91314843..37696b91db 100644 --- a/src/foundation/homotopies-morphisms-arrows.lagda.md +++ b/src/foundation/homotopies-morphisms-arrows.lagda.md @@ -12,6 +12,7 @@ open import foundation.commuting-squares-of-identifications open import foundation.commuting-triangles-of-identifications open import foundation.cones-over-cospan-diagrams open import foundation.dependent-pair-types +open import foundation.function-extensionality open import foundation.fundamental-theorem-of-identity-types open import foundation.homotopy-induction open import foundation.morphisms-arrows @@ -24,7 +25,6 @@ open import foundation.whiskering-identifications-concatenation open import foundation-core.commuting-squares-of-homotopies open import foundation-core.commuting-squares-of-maps open import foundation-core.equivalences -open import foundation-core.function-extensionality open import foundation-core.function-types open import foundation-core.homotopies open import foundation-core.identity-types @@ -238,7 +238,7 @@ module _ ### Whiskering of homotopies of morphisms of arrows with respect to composition -#### Left whiskering of homotopies of homotopies of morphisms of arrows with respect to composition +#### Left whiskering of homotopies of morphisms of arrows with respect to composition ```agda module _ @@ -316,7 +316,7 @@ module _ coh-left-whisker-comp-hom-arrow ``` -#### Right whiskering +#### Right whiskering of homotopies of morphisms of arrows with respect to composition ```agda module _ diff --git a/src/foundation/homotopies.lagda.md b/src/foundation/homotopies.lagda.md index bdb4b01b48..f047aafe53 100644 --- a/src/foundation/homotopies.lagda.md +++ b/src/foundation/homotopies.lagda.md @@ -15,6 +15,7 @@ open import foundation.action-on-identifications-functions open import foundation.binary-equivalences open import foundation.commuting-squares-of-identifications open import foundation.dependent-pair-types +open import foundation.function-extensionality open import foundation.homotopy-induction open import foundation.identity-types open import foundation.path-algebra @@ -24,7 +25,6 @@ open import foundation.whiskering-identifications-concatenation open import foundation-core.dependent-identifications open import foundation-core.equivalences -open import foundation-core.function-extensionality open import foundation-core.function-types open import foundation-core.functoriality-dependent-function-types open import foundation-core.transport-along-identifications diff --git a/src/foundation/homotopy-induction.lagda.md b/src/foundation/homotopy-induction.lagda.md index da645df1f2..585b3b5a1f 100644 --- a/src/foundation/homotopy-induction.lagda.md +++ b/src/foundation/homotopy-induction.lagda.md @@ -8,6 +8,7 @@ module foundation.homotopy-induction where ```agda open import foundation.dependent-pair-types +open import foundation.function-extensionality open import foundation.identity-systems open import foundation.universal-property-dependent-pair-types open import foundation.universal-property-identity-systems @@ -17,7 +18,6 @@ open import foundation-core.commuting-triangles-of-maps open import foundation-core.contractible-maps open import foundation-core.contractible-types open import foundation-core.equivalences -open import foundation-core.function-extensionality open import foundation-core.function-types open import foundation-core.functoriality-dependent-pair-types open import foundation-core.homotopies diff --git a/src/foundation/identity-types.lagda.md b/src/foundation/identity-types.lagda.md index f6fe25e353..471f7d66b7 100644 --- a/src/foundation/identity-types.lagda.md +++ b/src/foundation/identity-types.lagda.md @@ -14,11 +14,11 @@ open import foundation.binary-equivalences open import foundation.commuting-pentagons-of-identifications open import foundation.dependent-pair-types open import foundation.equivalence-extensionality +open import foundation.function-extensionality open import foundation.universe-levels open import foundation-core.equivalences open import foundation-core.fibers-of-maps -open import foundation-core.function-extensionality open import foundation-core.function-types open import foundation-core.homotopies ``` diff --git a/src/foundation/invertible-maps.lagda.md b/src/foundation/invertible-maps.lagda.md index 8c6cbe8bb2..b175b95479 100644 --- a/src/foundation/invertible-maps.lagda.md +++ b/src/foundation/invertible-maps.lagda.md @@ -15,6 +15,7 @@ open import foundation.equality-cartesian-product-types open import foundation.equivalence-extensionality open import foundation.equivalences open import foundation.full-subtypes +open import foundation.function-extensionality open import foundation.functoriality-cartesian-product-types open import foundation.fundamental-theorem-of-identity-types open import foundation.homotopies @@ -30,7 +31,6 @@ open import foundation.universe-levels open import foundation.whiskering-homotopies-composition open import foundation-core.cartesian-product-types -open import foundation-core.function-extensionality open import foundation-core.function-types open import foundation-core.functoriality-dependent-pair-types open import foundation-core.identity-types diff --git a/src/foundation/involutions.lagda.md b/src/foundation/involutions.lagda.md index 1d45e2ea79..4a0bc6a497 100644 --- a/src/foundation/involutions.lagda.md +++ b/src/foundation/involutions.lagda.md @@ -11,6 +11,7 @@ open import foundation.automorphisms open import foundation.dependent-pair-types open import foundation.equivalence-extensionality open import foundation.equivalences +open import foundation.function-extensionality open import foundation.fundamental-theorem-of-identity-types open import foundation.homotopy-algebra open import foundation.homotopy-induction @@ -18,7 +19,6 @@ open import foundation.structure-identity-principle open import foundation.universe-levels open import foundation.whiskering-homotopies-composition -open import foundation-core.function-extensionality open import foundation-core.function-types open import foundation-core.homotopies open import foundation-core.identity-types diff --git a/src/foundation/isomorphisms-of-sets.lagda.md b/src/foundation/isomorphisms-of-sets.lagda.md index c1f3c53125..5918779680 100644 --- a/src/foundation/isomorphisms-of-sets.lagda.md +++ b/src/foundation/isomorphisms-of-sets.lagda.md @@ -10,11 +10,11 @@ module foundation.isomorphisms-of-sets where open import foundation.action-on-identifications-functions open import foundation.dependent-pair-types open import foundation.equivalences +open import foundation.function-extensionality open import foundation.sets open import foundation.universe-levels open import foundation-core.cartesian-product-types -open import foundation-core.function-extensionality open import foundation-core.function-types open import foundation-core.identity-types open import foundation-core.propositions diff --git a/src/foundation/iterating-functions.lagda.md b/src/foundation/iterating-functions.lagda.md index e3108892ef..edf0a3ddd1 100644 --- a/src/foundation/iterating-functions.lagda.md +++ b/src/foundation/iterating-functions.lagda.md @@ -16,11 +16,11 @@ open import elementary-number-theory.natural-numbers open import foundation.action-on-higher-identifications-functions open import foundation.action-on-identifications-functions open import foundation.dependent-pair-types +open import foundation.function-extensionality open import foundation.universe-levels open import foundation-core.commuting-squares-of-maps open import foundation-core.endomorphisms -open import foundation-core.function-extensionality open import foundation-core.homotopies open import foundation-core.identity-types open import foundation-core.sets diff --git a/src/foundation/lawveres-fixed-point-theorem.lagda.md b/src/foundation/lawveres-fixed-point-theorem.lagda.md index 749b5aeac7..00323ca065 100644 --- a/src/foundation/lawveres-fixed-point-theorem.lagda.md +++ b/src/foundation/lawveres-fixed-point-theorem.lagda.md @@ -9,11 +9,11 @@ module foundation.lawveres-fixed-point-theorem where ```agda open import foundation.dependent-pair-types open import foundation.existential-quantification +open import foundation.function-extensionality open import foundation.propositional-truncations open import foundation.surjective-maps open import foundation.universe-levels -open import foundation-core.function-extensionality open import foundation-core.identity-types ``` diff --git a/src/foundation/locally-small-types.lagda.md b/src/foundation/locally-small-types.lagda.md index 9e944e4ac2..bbebd0d8db 100644 --- a/src/foundation/locally-small-types.lagda.md +++ b/src/foundation/locally-small-types.lagda.md @@ -8,6 +8,7 @@ module foundation.locally-small-types where ```agda open import foundation.dependent-pair-types +open import foundation.function-extensionality open import foundation.inhabited-subtypes open import foundation.subuniverses open import foundation.univalence @@ -15,7 +16,6 @@ open import foundation.universe-levels open import foundation-core.equality-dependent-pair-types open import foundation-core.equivalences -open import foundation-core.function-extensionality open import foundation-core.function-types open import foundation-core.homotopies open import foundation-core.identity-types diff --git a/src/foundation/logical-equivalences.lagda.md b/src/foundation/logical-equivalences.lagda.md index b6cbf82ad8..9664f1df78 100644 --- a/src/foundation/logical-equivalences.lagda.md +++ b/src/foundation/logical-equivalences.lagda.md @@ -10,6 +10,7 @@ module foundation.logical-equivalences where open import foundation.dependent-pair-types open import foundation.equality-cartesian-product-types open import foundation.equivalence-extensionality +open import foundation.function-extensionality open import foundation.functoriality-cartesian-product-types open import foundation.type-arithmetic-dependent-pair-types open import foundation.universe-levels @@ -18,7 +19,6 @@ open import foundation-core.cartesian-product-types open import foundation-core.contractible-types open import foundation-core.equivalences open import foundation-core.fibers-of-maps -open import foundation-core.function-extensionality open import foundation-core.function-types open import foundation-core.functoriality-dependent-pair-types open import foundation-core.homotopies diff --git a/src/foundation/monomorphisms.lagda.md b/src/foundation/monomorphisms.lagda.md index 724f650881..1908560489 100644 --- a/src/foundation/monomorphisms.lagda.md +++ b/src/foundation/monomorphisms.lagda.md @@ -10,13 +10,13 @@ module foundation.monomorphisms where open import foundation.action-on-identifications-functions open import foundation.dependent-pair-types open import foundation.embeddings +open import foundation.function-extensionality open import foundation.functoriality-function-types open import foundation.postcomposition-functions open import foundation.universe-levels open import foundation.whiskering-homotopies-composition open import foundation-core.equivalences -open import foundation-core.function-extensionality open import foundation-core.function-types open import foundation-core.homotopies open import foundation-core.identity-types diff --git a/src/foundation/morphisms-arrows.lagda.md b/src/foundation/morphisms-arrows.lagda.md index 2644acd451..2d383c7d49 100644 --- a/src/foundation/morphisms-arrows.lagda.md +++ b/src/foundation/morphisms-arrows.lagda.md @@ -9,11 +9,11 @@ module foundation.morphisms-arrows where ```agda open import foundation.cones-over-cospan-diagrams open import foundation.dependent-pair-types +open import foundation.function-extensionality open import foundation.universe-levels open import foundation.whiskering-homotopies-composition open import foundation-core.commuting-squares-of-maps -open import foundation-core.function-extensionality open import foundation-core.function-types open import foundation-core.homotopies open import foundation-core.identity-types diff --git a/src/foundation/multivariable-homotopies.lagda.md b/src/foundation/multivariable-homotopies.lagda.md index 49f9ff4882..01f1635bf5 100644 --- a/src/foundation/multivariable-homotopies.lagda.md +++ b/src/foundation/multivariable-homotopies.lagda.md @@ -13,13 +13,13 @@ open import elementary-number-theory.natural-numbers open import foundation.dependent-pair-types open import foundation.equality-dependent-function-types +open import foundation.function-extensionality open import foundation.implicit-function-types open import foundation.iterated-dependent-product-types open import foundation.universe-levels open import foundation-core.contractible-types open import foundation-core.equivalences -open import foundation-core.function-extensionality open import foundation-core.functoriality-dependent-function-types open import foundation-core.functoriality-dependent-pair-types open import foundation-core.identity-types diff --git a/src/foundation/negated-equality.lagda.md b/src/foundation/negated-equality.lagda.md index 94b324dbad..4959d79292 100644 --- a/src/foundation/negated-equality.lagda.md +++ b/src/foundation/negated-equality.lagda.md @@ -10,11 +10,11 @@ module foundation.negated-equality where open import foundation.action-on-identifications-functions open import foundation.binary-relations open import foundation.dependent-pair-types +open import foundation.function-extensionality open import foundation.negation open import foundation.universe-levels open import foundation-core.cartesian-product-types -open import foundation-core.function-extensionality open import foundation-core.identity-types open import foundation-core.propositions ``` diff --git a/src/foundation/postcomposition-dependent-functions.lagda.md b/src/foundation/postcomposition-dependent-functions.lagda.md index e48ec891fb..d9327451ec 100644 --- a/src/foundation/postcomposition-dependent-functions.lagda.md +++ b/src/foundation/postcomposition-dependent-functions.lagda.md @@ -7,9 +7,14 @@ module foundation.postcomposition-dependent-functions where
Imports ```agda +open import foundation.action-on-identifications-functions +open import foundation.function-extensionality open import foundation.universe-levels +open import foundation.whiskering-homotopies-composition +open import foundation-core.commuting-squares-of-maps open import foundation-core.function-types +open import foundation-core.identity-types ```
@@ -42,3 +47,69 @@ module _ postcomp-Π : ({a : A} → X a → Y a) → ((a : A) → X a) → ((a : A) → Y a) postcomp-Π f = f ∘_ ``` + +## Properties + +#### Naturality of `htpy-eq` with respect to postcomposition of dependent functions + +Consider a map `f : {x : A} → B x → C x` and two functions +`g h : (x : A) → B x`. Then the square + +```text + ap (postcomp-Π A f) + (g = h) -------------------------> (g ∘ f = h ∘ f) + | | + htpy-eq | | htpy-eq + V V + (g ~ h) --------------------------> (g ∘ f ~ h ∘ f) + f ·l_ +``` + +commutes. + +```agda +coherence-square-homotopies-eq-ap-postcomp-Π : + {l1 l2 l3 : Level} {A : UU l1} {B : A → UU l2} {C : A → UU l3} + (f : {x : A} → B x → C x) (g h : (x : A) → B x) → + coherence-square-maps + ( ap (postcomp-Π A f) {x = g} {y = h}) + ( htpy-eq) + ( htpy-eq) + ( f ·l_) +coherence-square-homotopies-eq-ap-postcomp-Π f g .g refl = refl +``` + +#### Naturality of `eq-htpy` with respect to postcomposition of dependent functions + +Consider a map `f : {x : A} → B x → C x` and two functions +`g h : (x : A) → B x`. Then the square + +```text + ap (postcomp-Π A f) + (g = h) -------------------------> (g ∘ f = h ∘ f) + ^ ^ + eq-htpy | | eq-htpy + | | + (g ~ h) --------------------------> (g ∘ f ~ h ∘ f) + f ·l_ +``` + +commutes. + +```agda +coherence-square-eq-htpy-ap-postcomp-Π : + {l1 l2 l3 : Level} {A : UU l1} {B : A → UU l2} {C : A → UU l3} + (f : {x : A} → B x → C x) (g h : (x : A) → B x) → + coherence-square-maps + ( f ·l_) + ( eq-htpy) + ( eq-htpy) + ( ap (postcomp-Π A f) {x = g} {y = h}) +coherence-square-eq-htpy-ap-postcomp-Π {A = A} f g h = + coherence-square-inv-vertical + ( ap (postcomp-Π A f) {x = g} {y = h}) + ( equiv-funext) + ( equiv-funext) + ( f ·l_) + ( coherence-square-homotopies-eq-ap-postcomp-Π f g h) +``` diff --git a/src/foundation/postcomposition-functions.lagda.md b/src/foundation/postcomposition-functions.lagda.md index e9962b1a8d..34a5b6dc80 100644 --- a/src/foundation/postcomposition-functions.lagda.md +++ b/src/foundation/postcomposition-functions.lagda.md @@ -11,6 +11,8 @@ open import foundation-core.postcomposition-functions public ```agda open import foundation.action-on-identifications-functions open import foundation.dependent-pair-types +open import foundation.function-extensionality +open import foundation.postcomposition-dependent-functions open import foundation.universe-levels open import foundation.whiskering-homotopies-composition @@ -20,7 +22,6 @@ open import foundation-core.contractible-maps open import foundation-core.contractible-types open import foundation-core.equivalences open import foundation-core.fibers-of-maps -open import foundation-core.function-extensionality open import foundation-core.function-types open import foundation-core.functoriality-dependent-function-types open import foundation-core.functoriality-dependent-pair-types @@ -231,3 +232,59 @@ module _ ( inv (is-section-eq-htpy H))) ∙ ( compute-ap-postcomp-htpy-eq (eq-htpy H)) ``` + +#### Naturality of `htpy-eq` with respect to postcomposition of ordinary functions + +Consider a map `f : B → C` and two functions `g h : A → B`. Then the square + +```text + ap (postcomp A f) + (g = h) -------------------------> (g ∘ f = h ∘ f) + | | + htpy-eq | | htpy-eq + V V + (g ~ h) --------------------------> (g ∘ f ~ h ∘ f) + f ·l_ +``` + +commutes. + +```agda +coherence-square-homotopies-eq-ap-postcomp : + {l1 l2 l3 : Level} {A : UU l1} {B : UU l2} {C : UU l3} (f : B → C) → + (g h : A → B) → + coherence-square-maps + ( ap (postcomp A f) {x = g} {y = h}) + ( htpy-eq) + ( htpy-eq) + ( f ·l_) +coherence-square-homotopies-eq-ap-postcomp f = + coherence-square-homotopies-eq-ap-postcomp-Π f +``` + +#### Naturality of `eq-htpy` with respect to postcomposition of ordinary functions + +Consider a map `f : B → C` and two functions `g h : A → B`. Then the square + +```text + ap (postcomp A f) + (g = h) -------------------------> (g ∘ f = h ∘ f) + ^ ^ + eq-htpy | | eq-htpy + | | + (g ~ h) --------------------------> (g ∘ f ~ h ∘ f) + f ·l_ +``` + +```agda +coherence-square-eq-htpy-ap-postcomp : + {l1 l2 l3 : Level} {A : UU l1} {B : UU l2} {C : UU l3} (f : B → C) → + (g h : A → B) → + coherence-square-maps + ( f ·l_) + ( eq-htpy) + ( eq-htpy) + ( ap (postcomp A f) {x = g} {y = h}) +coherence-square-eq-htpy-ap-postcomp f = + coherence-square-eq-htpy-ap-postcomp-Π f +``` diff --git a/src/foundation/precomposition-dependent-functions.lagda.md b/src/foundation/precomposition-dependent-functions.lagda.md index 01cf118f9b..f7a5b4dca0 100644 --- a/src/foundation/precomposition-dependent-functions.lagda.md +++ b/src/foundation/precomposition-dependent-functions.lagda.md @@ -11,12 +11,14 @@ open import foundation-core.precomposition-dependent-functions public ```agda open import foundation.action-on-identifications-functions open import foundation.dependent-universal-property-equivalences +open import foundation.function-extensionality open import foundation.universe-levels +open import foundation-core.commuting-squares-of-maps open import foundation-core.equivalences -open import foundation-core.function-extensionality open import foundation-core.function-types open import foundation-core.homotopies +open import foundation-core.identity-types open import foundation-core.truncated-maps open import foundation-core.truncation-levels ``` @@ -39,6 +41,70 @@ module _ equiv-precomp-Π e (eq-value f g) ``` +#### Naturality of `htpy-eq` with respect to precomposition of dependent functions + +Consider a map `f : A → B` and two dependent functions `g h : (x : B) → C x`. +Then the square + +```text + ap (precomp-Π f C) + (g = h) ---------------------------> (g ∘ f = h ∘ f) + | | + htpy-eq | | htpy-eq + V V + (g ~ h) ----------------------------> (g ∘ f ~ h ∘ f) + precomp-Π f (eq-value g h) +``` + +[commutes](foundation-core.commuting-squares-of-maps.md). + +```agda +coherence-square-maps-htpy-eq-ap-precomp-Π : + {l1 l2 l3 : Level} {A : UU l1} {B : UU l2} (f : A → B) {C : B → UU l3} + (g h : (b : B) → C b) → + coherence-square-maps + ( ap (precomp-Π f C) {g} {h}) + ( htpy-eq) + ( htpy-eq) + ( precomp-Π f (eq-value g h)) +coherence-square-maps-htpy-eq-ap-precomp-Π f g .g refl = refl +``` + +#### Naturality of `eq-htpy` with respect to precomposition of dependent functions + +Consider a map `f : A → B` and two dependent functions `g h : (x : B) → C x`. +Then the square + +```text + ap (precomp-Π f C) + (g = h) ---------------------------> (g ∘ f = h ∘ f) + ∧ ∧ + eq-htpy | | eq-htpy + | | + (g ~ h) ----------------------------> (g ∘ f ~ h ∘ f) + precomp-Π f (eq-value g h) +``` + +[commutes](foundation-core.commuting-squares-of-maps.md). + +```agda +coherence-square-eq-htpy-ap-precomp-Π : + {l1 l2 l3 : Level} {A : UU l1} {B : UU l2} (f : A → B) {C : B → UU l3} + (g h : (b : B) → C b) → + coherence-square-maps + ( precomp-Π f (eq-value g h)) + ( eq-htpy) + ( eq-htpy) + ( ap (precomp-Π f C) {g} {h}) +coherence-square-eq-htpy-ap-precomp-Π f {C = C} g h = + coherence-square-inv-vertical + ( ap (precomp-Π f C)) + ( equiv-funext) + ( equiv-funext) + ( precomp-Π f (eq-value g h)) + ( coherence-square-maps-htpy-eq-ap-precomp-Π f g h) +``` + ### Precomposing functions `Π B C` by `f : A → B` is `k+1`-truncated if and only if precomposing homotopies is `k`-truncated ```agda @@ -55,7 +121,7 @@ is-trunc-map-succ-precomp-Π {k = k} {f = f} {C = C} H = ( htpy-eq) ( htpy-eq) ( precomp-Π f (eq-value g h)) - ( coherence-square-homotopies-htpy-eq-ap-precomp-Π f g h) + ( coherence-square-maps-htpy-eq-ap-precomp-Π f g h) ( funext g h) ( funext (g ∘ f) (h ∘ f)) ( H g h)) diff --git a/src/foundation/precomposition-functions-into-subuniverses.lagda.md b/src/foundation/precomposition-functions-into-subuniverses.lagda.md index 38dd952b8d..b1d64720ab 100644 --- a/src/foundation/precomposition-functions-into-subuniverses.lagda.md +++ b/src/foundation/precomposition-functions-into-subuniverses.lagda.md @@ -9,12 +9,12 @@ module foundation.precomposition-functions-into-subuniverses where ```agda open import foundation.action-on-identifications-functions open import foundation.dependent-pair-types +open import foundation.function-extensionality open import foundation.universe-levels open import foundation-core.contractible-maps open import foundation-core.contractible-types open import foundation-core.equivalences -open import foundation-core.function-extensionality open import foundation-core.function-types open import foundation-core.identity-types open import foundation-core.precomposition-functions diff --git a/src/foundation/precomposition-functions.lagda.md b/src/foundation/precomposition-functions.lagda.md index 90bd8a047c..e680cf71d9 100644 --- a/src/foundation/precomposition-functions.lagda.md +++ b/src/foundation/precomposition-functions.lagda.md @@ -11,6 +11,7 @@ open import foundation-core.precomposition-functions public ```agda open import foundation.action-on-identifications-functions open import foundation.dependent-pair-types +open import foundation.function-extensionality open import foundation.precomposition-dependent-functions open import foundation.sections open import foundation.universe-levels @@ -20,7 +21,6 @@ open import foundation-core.commuting-squares-of-maps open import foundation-core.commuting-triangles-of-maps open import foundation-core.equivalences open import foundation-core.fibers-of-maps -open import foundation-core.function-extensionality open import foundation-core.function-types open import foundation-core.functoriality-dependent-pair-types open import foundation-core.homotopies @@ -175,3 +175,66 @@ module _ ( inv (is-section-eq-htpy H))) ∙ ( compute-ap-precomp-htpy-eq (eq-htpy H)) ``` + +#### Naturality of `htpy-eq` with respect to precomposition of ordinary functions + +Consider a map `f : A → B` and two functions `g h : B → C`. Then the square + +```text + ap (precomp f C) + (g = h) -------------------------> (g ∘ f = h ∘ f) + | | + htpy-eq | | htpy-eq + V V + (g ~ h) --------------------------> (g ∘ f ~ h ∘ f) + precomp f (eq-value g h) +``` + +commutes. + +```agda +coherence-square-homotopies-eq-ap-precomp : + {l1 l2 l3 : Level} {A : UU l1} {B : UU l2} {C : UU l3} (f : A → B) → + (g h : B → C) → + coherence-square-maps + ( ap (precomp f C)) + ( htpy-eq) + ( htpy-eq) + ( precomp-Π f (eq-value g h)) +coherence-square-homotopies-eq-ap-precomp f = + coherence-square-maps-htpy-eq-ap-precomp-Π f +``` + +#### Naturality of `eq-htpy` with respect to precomposition of ordinary functions + +Consider a map `f : A → B` and two functions `g h : B → C`. Then the square + +```text + ap (precomp f C) + (g = h) -------------------------> (g ∘ f = h ∘ f) + ∧ ∧ + eq-htpy | | eq-htpy + | | + (g ~ h) --------------------------> (g ∘ f ~ h ∘ f) + precomp f (eq-value g h) +``` + +commutes. + +```agda +coherence-square-eq-htpy-ap-precomp : + {l1 l2 l3 : Level} {A : UU l1} {B : UU l2} {C : UU l3} + (f : A → B) (g h : B → C) → + coherence-square-maps + ( precomp-Π f (eq-value g h)) + ( eq-htpy) + ( eq-htpy) + ( ap (precomp f C)) +coherence-square-eq-htpy-ap-precomp {C = C} f g h = + coherence-square-inv-vertical + ( ap (precomp f C)) + ( equiv-funext) + ( equiv-funext) + ( precomp-Π f (eq-value g h)) + ( coherence-square-homotopies-eq-ap-precomp f g h) +``` diff --git a/src/foundation/pullbacks.lagda.md b/src/foundation/pullbacks.lagda.md index c48026ca98..dcc42e9d85 100644 --- a/src/foundation/pullbacks.lagda.md +++ b/src/foundation/pullbacks.lagda.md @@ -18,6 +18,7 @@ open import foundation.dependent-universal-property-equivalences open import foundation.descent-equivalences open import foundation.equality-coproduct-types open import foundation.equivalences +open import foundation.function-extensionality open import foundation.functoriality-coproduct-types open import foundation.functoriality-dependent-pair-types open import foundation.fundamental-theorem-of-identity-types @@ -35,7 +36,6 @@ open import foundation-core.constant-maps open import foundation-core.contractible-types open import foundation-core.diagonal-maps-of-types open import foundation-core.equality-dependent-pair-types -open import foundation-core.function-extensionality open import foundation-core.function-types open import foundation-core.functoriality-dependent-function-types open import foundation-core.postcomposition-functions @@ -367,7 +367,7 @@ module _ In the following part we will relate the type `htpy-parallel-cone` to the identity type of cones. Here we will rely on -[function extensionality](foundation-core.function-extensionality.md). +[function extensionality](foundation.function-extensionality.md). ```agda module _ diff --git a/src/foundation/relaxed-sigma-decompositions.lagda.md b/src/foundation/relaxed-sigma-decompositions.lagda.md index 0353f8e5e4..f75154532b 100644 --- a/src/foundation/relaxed-sigma-decompositions.lagda.md +++ b/src/foundation/relaxed-sigma-decompositions.lagda.md @@ -15,6 +15,7 @@ open import foundation.equivalence-extensionality open import foundation.equivalences open import foundation.fundamental-theorem-of-identity-types open import foundation.structure-identity-principle +open import foundation.transposition-identifications-along-equivalences open import foundation.type-arithmetic-dependent-pair-types open import foundation.univalence open import foundation.universe-levels diff --git a/src/foundation/retracts-of-maps.lagda.md b/src/foundation/retracts-of-maps.lagda.md index 2a359dd83b..f9cf20e78a 100644 --- a/src/foundation/retracts-of-maps.lagda.md +++ b/src/foundation/retracts-of-maps.lagda.md @@ -10,6 +10,7 @@ module foundation.retracts-of-maps where open import foundation.action-on-identifications-functions open import foundation.commuting-prisms-of-maps open import foundation.dependent-pair-types +open import foundation.function-extensionality open import foundation.functoriality-fibers-of-maps open import foundation.homotopies-morphisms-arrows open import foundation.morphisms-arrows @@ -22,7 +23,6 @@ open import foundation.whiskering-homotopies-composition open import foundation-core.commuting-squares-of-maps open import foundation-core.equivalences open import foundation-core.fibers-of-maps -open import foundation-core.function-extensionality open import foundation-core.function-types open import foundation-core.homotopies open import foundation-core.identity-types diff --git a/src/foundation/retracts-of-types.lagda.md b/src/foundation/retracts-of-types.lagda.md index 2f2511823b..070ea9a382 100644 --- a/src/foundation/retracts-of-types.lagda.md +++ b/src/foundation/retracts-of-types.lagda.md @@ -9,10 +9,10 @@ module foundation.retracts-of-types where ```agda open import foundation.action-on-identifications-functions open import foundation.dependent-pair-types +open import foundation.function-extensionality open import foundation.universe-levels open import foundation.whiskering-homotopies-composition -open import foundation-core.function-extensionality open import foundation-core.identity-types open import foundation-core.precomposition-functions open import foundation-core.retractions diff --git a/src/foundation/sections.lagda.md b/src/foundation/sections.lagda.md index f07762f578..15ba000b59 100644 --- a/src/foundation/sections.lagda.md +++ b/src/foundation/sections.lagda.md @@ -12,6 +12,7 @@ open import foundation-core.sections public open import foundation.action-on-identifications-functions open import foundation.commuting-triangles-of-homotopies open import foundation.dependent-pair-types +open import foundation.function-extensionality open import foundation.retracts-of-types open import foundation.structure-identity-principle open import foundation.type-arithmetic-dependent-pair-types @@ -20,7 +21,6 @@ open import foundation.whiskering-homotopies-composition open import foundation-core.contractible-types open import foundation-core.equivalences -open import foundation-core.function-extensionality open import foundation-core.function-types open import foundation-core.functoriality-dependent-pair-types open import foundation-core.homotopies diff --git a/src/foundation/set-quotients.lagda.md b/src/foundation/set-quotients.lagda.md index 7e119b10c9..b227af1cd2 100644 --- a/src/foundation/set-quotients.lagda.md +++ b/src/foundation/set-quotients.lagda.md @@ -13,6 +13,7 @@ open import foundation.effective-maps-equivalence-relations open import foundation.embeddings open import foundation.equivalence-classes open import foundation.equivalences +open import foundation.function-extensionality open import foundation.identity-types open import foundation.inhabited-subtypes open import foundation.reflecting-maps-equivalence-relations @@ -26,7 +27,6 @@ open import foundation.universe-levels open import foundation.whiskering-homotopies-composition open import foundation-core.equivalence-relations -open import foundation-core.function-extensionality open import foundation-core.function-types open import foundation-core.functoriality-dependent-function-types open import foundation-core.homotopies diff --git a/src/foundation/sigma-decompositions.lagda.md b/src/foundation/sigma-decompositions.lagda.md index cd300468ff..8be29f047a 100644 --- a/src/foundation/sigma-decompositions.lagda.md +++ b/src/foundation/sigma-decompositions.lagda.md @@ -18,6 +18,7 @@ open import foundation.inhabited-types open import foundation.propositional-truncations open import foundation.sets open import foundation.structure-identity-principle +open import foundation.transposition-identifications-along-equivalences open import foundation.type-arithmetic-dependent-pair-types open import foundation.univalence open import foundation.universe-levels diff --git a/src/foundation/slice.lagda.md b/src/foundation/slice.lagda.md index 2fa14b916e..3afa8a364b 100644 --- a/src/foundation/slice.lagda.md +++ b/src/foundation/slice.lagda.md @@ -10,6 +10,7 @@ module foundation.slice where open import foundation.commuting-triangles-of-homotopies open import foundation.dependent-pair-types open import foundation.equivalences +open import foundation.function-extensionality open import foundation.fundamental-theorem-of-identity-types open import foundation.homotopies open import foundation.homotopy-induction @@ -23,7 +24,6 @@ open import foundation-core.embeddings open import foundation-core.equality-dependent-pair-types open import foundation-core.families-of-equivalences open import foundation-core.fibers-of-maps -open import foundation-core.function-extensionality open import foundation-core.function-types open import foundation-core.functoriality-dependent-pair-types open import foundation-core.identity-types diff --git a/src/foundation/symmetric-binary-relations.lagda.md b/src/foundation/symmetric-binary-relations.lagda.md index 52f10ae31c..7f5a829ff1 100644 --- a/src/foundation/symmetric-binary-relations.lagda.md +++ b/src/foundation/symmetric-binary-relations.lagda.md @@ -11,13 +11,13 @@ open import foundation.action-on-identifications-functions open import foundation.binary-relations open import foundation.dependent-pair-types open import foundation.equivalence-extensionality +open import foundation.function-extensionality open import foundation.morphisms-binary-relations open import foundation.symmetric-operations open import foundation.universe-levels open import foundation.unordered-pairs open import foundation-core.equivalences -open import foundation-core.function-extensionality open import foundation-core.function-types open import foundation-core.homotopies open import foundation-core.identity-types diff --git a/src/foundation/symmetric-identity-types.lagda.md b/src/foundation/symmetric-identity-types.lagda.md index 4390404734..c3de4e3b57 100644 --- a/src/foundation/symmetric-identity-types.lagda.md +++ b/src/foundation/symmetric-identity-types.lagda.md @@ -9,6 +9,7 @@ module foundation.symmetric-identity-types where ```agda open import foundation.action-on-identifications-functions open import foundation.dependent-pair-types +open import foundation.function-extensionality open import foundation.functoriality-dependent-function-types open import foundation.fundamental-theorem-of-identity-types open import foundation.homotopy-induction @@ -21,7 +22,6 @@ open import foundation-core.contractible-types open import foundation-core.coproduct-types open import foundation-core.equality-dependent-pair-types open import foundation-core.equivalences -open import foundation-core.function-extensionality open import foundation-core.function-types open import foundation-core.functoriality-dependent-pair-types open import foundation-core.homotopies diff --git a/src/foundation/symmetric-operations.lagda.md b/src/foundation/symmetric-operations.lagda.md index 835b938b2c..a4aca57c52 100644 --- a/src/foundation/symmetric-operations.lagda.md +++ b/src/foundation/symmetric-operations.lagda.md @@ -11,6 +11,7 @@ open import foundation.action-on-identifications-binary-functions open import foundation.action-on-identifications-functions open import foundation.dependent-pair-types open import foundation.equivalence-extensionality +open import foundation.function-extensionality open import foundation.functoriality-coproduct-types open import foundation.fundamental-theorem-of-identity-types open import foundation.propositional-truncations @@ -20,7 +21,6 @@ open import foundation.unordered-pairs open import foundation-core.coproduct-types open import foundation-core.equivalences -open import foundation-core.function-extensionality open import foundation-core.function-types open import foundation-core.homotopies open import foundation-core.identity-types diff --git a/src/foundation/tight-apartness-relations.lagda.md b/src/foundation/tight-apartness-relations.lagda.md index 7fba7f3ba6..4939115467 100644 --- a/src/foundation/tight-apartness-relations.lagda.md +++ b/src/foundation/tight-apartness-relations.lagda.md @@ -10,11 +10,11 @@ module foundation.tight-apartness-relations where open import foundation.apartness-relations open import foundation.binary-relations open import foundation.dependent-pair-types +open import foundation.function-extensionality open import foundation.propositional-truncations open import foundation.universe-levels open import foundation-core.cartesian-product-types -open import foundation-core.function-extensionality open import foundation-core.identity-types open import foundation-core.negation open import foundation-core.propositions diff --git a/src/foundation/transport-along-equivalences.lagda.md b/src/foundation/transport-along-equivalences.lagda.md index 102886ea06..9a1050b6a4 100644 --- a/src/foundation/transport-along-equivalences.lagda.md +++ b/src/foundation/transport-along-equivalences.lagda.md @@ -14,12 +14,12 @@ open import foundation.dependent-pair-types open import foundation.equivalence-extensionality open import foundation.equivalence-induction open import foundation.equivalences +open import foundation.function-extensionality open import foundation.transport-along-identifications open import foundation.univalence open import foundation.universe-levels open import foundation-core.commuting-triangles-of-maps -open import foundation-core.function-extensionality open import foundation-core.function-types open import foundation-core.homotopies open import foundation-core.identity-types diff --git a/src/foundation/transport-along-homotopies.lagda.md b/src/foundation/transport-along-homotopies.lagda.md index 9e053f7506..f4dd21d96f 100644 --- a/src/foundation/transport-along-homotopies.lagda.md +++ b/src/foundation/transport-along-homotopies.lagda.md @@ -8,11 +8,11 @@ module foundation.transport-along-homotopies where ```agda open import foundation.action-on-identifications-functions +open import foundation.function-extensionality open import foundation.homotopy-induction open import foundation.transport-along-higher-identifications open import foundation.universe-levels -open import foundation-core.function-extensionality open import foundation-core.homotopies open import foundation-core.identity-types open import foundation-core.transport-along-identifications diff --git a/src/foundation/transposition-identifications-along-equivalences.lagda.md b/src/foundation/transposition-identifications-along-equivalences.lagda.md new file mode 100644 index 0000000000..fb05592dd2 --- /dev/null +++ b/src/foundation/transposition-identifications-along-equivalences.lagda.md @@ -0,0 +1,230 @@ +# Transposing identifications along equivalences + +```agda +module foundation.transposition-identifications-along-equivalences where +``` + +
Imports + +```agda +open import foundation.action-on-identifications-functions +open import foundation.identity-types +open import foundation.universe-levels +open import foundation.whiskering-identifications-concatenation + +open import foundation-core.equivalences +open import foundation-core.homotopies +``` + +
+ +## Idea + +Consider an [equivalence](foundation-core.equivalences.md) `e : A ≃ B` and two +elements `x : A` and `y : B`. The +{{#concept "transposition" Disambiguation="identifications along equivalences" Agda=eq-transpose-equiv}} +is an equivalence + +```text + (e x = y) ≃ (x = e⁻¹ y) +``` + +of [identity types](foundation-core.identity-types.md). There are two ways of +constructing this equivalence. One way uses the fact that `e⁻¹` is a +[section](foundation-core.sections.md) of `e`, from which it follows that + +```text + (e x = y) ≃ (e x = e e⁻¹ y) ≃ (x = e⁻¹ y). +``` + +The other way usex the fact that `e⁻¹` is a +[retraction](foundation-core.retractions.md) of `e`, resulting in the +equivalence + +```text + (e x = y) ≃ (e⁻¹ e x = e⁻¹ y) ≃ (x = e⁻¹ y) . +``` + +These two equivalences are [homotopic](foundation-core.homotopies.md), as is +shown below. + +## Definitions + +### Transposing equalities along equivalences + +```agda +module _ + {l1 l2 : Level} {A : UU l1} {B : UU l2} (e : A ≃ B) + where + + eq-transpose-equiv : + (x : A) (y : B) → (map-equiv e x = y) ≃ (x = map-inv-equiv e y) + eq-transpose-equiv x y = + ( inv-equiv (equiv-ap e x (map-inv-equiv e y))) ∘e + ( equiv-concat' + ( map-equiv e x) + ( inv (is-section-map-inv-equiv e y))) + + map-eq-transpose-equiv : + {x : A} {y : B} → map-equiv e x = y → x = map-inv-equiv e y + map-eq-transpose-equiv {x} {y} = map-equiv (eq-transpose-equiv x y) + + inv-map-eq-transpose-equiv : + {x : A} {y : B} → x = map-inv-equiv e y → map-equiv e x = y + inv-map-eq-transpose-equiv {x} {y} = map-inv-equiv (eq-transpose-equiv x y) + + eq-transpose-equiv' : + (x : A) (y : B) → (map-equiv e x = y) ≃ (x = map-inv-equiv e y) + eq-transpose-equiv' x y = + ( equiv-concat + ( inv (is-retraction-map-inv-equiv e x)) + ( map-inv-equiv e y)) ∘e + ( equiv-ap (inv-equiv e) (map-equiv e x) y) + + map-eq-transpose-equiv' : + {x : A} {y : B} → map-equiv e x = y → x = map-inv-equiv e y + map-eq-transpose-equiv' {x} {y} = map-equiv (eq-transpose-equiv' x y) +``` + +It is sometimes useful to consider identifications `y = e x` instead of +`e x = y`, so we include an inverted equivalence for that as well. + +```agda + eq-transpose-equiv-inv : + (x : A) (y : B) → (y = map-equiv e x) ≃ (map-inv-equiv e y = x) + eq-transpose-equiv-inv x y = + ( equiv-inv x (map-inv-equiv e y)) ∘e + ( eq-transpose-equiv x y) ∘e + ( equiv-inv y (map-equiv e x)) + + map-eq-transpose-equiv-inv : + {a : A} {b : B} → b = map-equiv e a → map-inv-equiv e b = a + map-eq-transpose-equiv-inv {a} {b} = map-equiv (eq-transpose-equiv-inv a b) + + inv-map-eq-transpose-equiv-inv : + {a : A} {b : B} → map-inv-equiv e b = a → b = map-equiv e a + inv-map-eq-transpose-equiv-inv {a} {b} = + map-inv-equiv (eq-transpose-equiv-inv a b) +``` + +## Properties + +### Computation rules for transposing equivalences + +We begin by showing that the two equivalences stated above are homotopic. + +```agda +module _ + {l1 l2 : Level} {A : UU l1} {B : UU l2} (e : A ≃ B) + where + + htpy-map-eq-transpose-equiv : + {x : A} {y : B} → + map-eq-transpose-equiv e {x} {y} ~ map-eq-transpose-equiv' e + htpy-map-eq-transpose-equiv {x} refl = + ( map-eq-transpose-equiv-inv + ( equiv-ap e x _) + ( ( ap inv (coherence-map-inv-equiv e x)) ∙ + ( inv (ap-inv (map-equiv e) (is-retraction-map-inv-equiv e x))))) ∙ + ( inv right-unit) +``` + +Transposing a composition of paths fits into a triangle with a transpose of the +left factor. + +```agda + triangle-eq-transpose-equiv-concat : + {x : A} {y z : B} (p : map-equiv e x = y) (q : y = z) → + ( map-eq-transpose-equiv e (p ∙ q)) = + ( map-eq-transpose-equiv e p ∙ ap (map-inv-equiv e) q) + triangle-eq-transpose-equiv-concat refl refl = inv right-unit +``` + +Transposed identifications fit in +[commuting triangles](foundation.commuting-triangles-of-identifications.md) with +the original identifications. + +```agda + triangle-eq-transpose-equiv : + {x : A} {y : B} (p : map-equiv e x = y) → + ( ( ap (map-equiv e) (map-eq-transpose-equiv e p)) ∙ + ( is-section-map-inv-equiv e y)) = + ( p) + triangle-eq-transpose-equiv {x} {y} p = + ( right-whisker-concat + ( is-section-map-inv-equiv + ( equiv-ap e x (map-inv-equiv e y)) + ( p ∙ inv (is-section-map-inv-equiv e y))) + ( is-section-map-inv-equiv e y)) ∙ + ( ( assoc + ( p) + ( inv (is-section-map-inv-equiv e y)) + ( is-section-map-inv-equiv e y)) ∙ + ( ( left-whisker-concat p + ( left-inv (is-section-map-inv-equiv e y))) ∙ + ( right-unit))) + + triangle-eq-transpose-equiv-inv : + {x : A} {y : B} (p : y = map-equiv e x) → + ( (is-section-map-inv-equiv e y) ∙ p) = + ( ap (map-equiv e) (map-eq-transpose-equiv-inv e p)) + triangle-eq-transpose-equiv-inv {x} {y} p = + map-inv-equiv + ( equiv-ap + ( equiv-inv (map-equiv e (map-inv-equiv e y)) (map-equiv e x)) + ( (is-section-map-inv-equiv e y) ∙ p) + ( ap (map-equiv e) (map-eq-transpose-equiv-inv e p))) + ( ( distributive-inv-concat (is-section-map-inv-equiv e y) p) ∙ + ( ( inv + ( right-transpose-eq-concat + ( ap (map-equiv e) (inv (map-eq-transpose-equiv-inv e p))) + ( is-section-map-inv-equiv e y) + ( inv p) + ( ( right-whisker-concat + ( ap + ( ap (map-equiv e)) + ( inv-inv + ( map-inv-equiv + ( equiv-ap e x (map-inv-equiv e y)) + ( ( inv p) ∙ + ( inv (is-section-map-inv-equiv e y)))))) + ( is-section-map-inv-equiv e y)) ∙ + ( triangle-eq-transpose-equiv (inv p))))) ∙ + ( ap-inv (map-equiv e) (map-eq-transpose-equiv-inv e p)))) + + triangle-eq-transpose-equiv' : + {x : A} {y : B} (p : map-equiv e x = y) → + ( is-retraction-map-inv-equiv e x ∙ map-eq-transpose-equiv e p) = + ( ap (map-inv-equiv e) p) + triangle-eq-transpose-equiv' {x} refl = + ( left-whisker-concat + ( is-retraction-map-inv-equiv e x) + ( htpy-map-eq-transpose-equiv refl)) ∙ + ( is-section-inv-concat (is-retraction-map-inv-equiv e x) refl) + + triangle-eq-transpose-equiv-inv' : + {x : A} {y : B} (p : y = map-equiv e x) → + ( map-eq-transpose-equiv-inv e p) = + ( ap (map-inv-equiv e) p ∙ is-retraction-map-inv-equiv e x) + triangle-eq-transpose-equiv-inv' {x} refl = + inv + ( right-transpose-eq-concat + ( is-retraction-map-inv-equiv e x) + ( map-eq-transpose-equiv e refl) + ( refl) + ( triangle-eq-transpose-equiv' refl)) + + right-inverse-eq-transpose-equiv : + {x : A} {y : B} (p : y = map-equiv e x) → + ( ( map-eq-transpose-equiv e (inv p)) ∙ + ( ap (map-inv-equiv e) p ∙ is-retraction-map-inv-equiv e x)) = + ( refl) + right-inverse-eq-transpose-equiv {x} p = + inv + ( map-inv-equiv + ( equiv-left-transpose-eq-concat' + ( refl) + ( map-eq-transpose-equiv e (inv p)) + ( ap (map-inv-equiv e) p ∙ is-retraction-map-inv-equiv e x)) + ( right-unit ∙ triangle-eq-transpose-equiv-inv' p)) +``` diff --git a/src/foundation/trivial-relaxed-sigma-decompositions.lagda.md b/src/foundation/trivial-relaxed-sigma-decompositions.lagda.md index 65d39c577d..28226b5f19 100644 --- a/src/foundation/trivial-relaxed-sigma-decompositions.lagda.md +++ b/src/foundation/trivial-relaxed-sigma-decompositions.lagda.md @@ -9,13 +9,14 @@ module foundation.trivial-relaxed-sigma-decompositions where ```agda open import foundation.contractible-types open import foundation.dependent-pair-types -open import foundation.equivalences open import foundation.relaxed-sigma-decompositions +open import foundation.transposition-identifications-along-equivalences open import foundation.type-arithmetic-dependent-pair-types open import foundation.unit-type open import foundation.universe-levels open import foundation-core.equality-dependent-pair-types +open import foundation-core.equivalences open import foundation-core.function-types open import foundation-core.identity-types open import foundation-core.propositions diff --git a/src/foundation/trivial-sigma-decompositions.lagda.md b/src/foundation/trivial-sigma-decompositions.lagda.md index 87a6787e57..882617524e 100644 --- a/src/foundation/trivial-sigma-decompositions.lagda.md +++ b/src/foundation/trivial-sigma-decompositions.lagda.md @@ -9,10 +9,10 @@ module foundation.trivial-sigma-decompositions where ```agda open import foundation.contractible-types open import foundation.dependent-pair-types -open import foundation.equivalences open import foundation.functoriality-propositional-truncation open import foundation.inhabited-types open import foundation.sigma-decompositions +open import foundation.transposition-identifications-along-equivalences open import foundation.type-arithmetic-dependent-pair-types open import foundation.type-arithmetic-empty-type open import foundation.unit-type @@ -20,6 +20,7 @@ open import foundation.universe-levels open import foundation-core.empty-types open import foundation-core.equality-dependent-pair-types +open import foundation-core.equivalences open import foundation-core.function-types open import foundation-core.identity-types open import foundation-core.propositions diff --git a/src/foundation/truncations.lagda.md b/src/foundation/truncations.lagda.md index 1fb55bfb55..8b01d5b970 100644 --- a/src/foundation/truncations.lagda.md +++ b/src/foundation/truncations.lagda.md @@ -10,6 +10,7 @@ module foundation.truncations where open import foundation.action-on-identifications-functions open import foundation.contractible-types open import foundation.dependent-pair-types +open import foundation.function-extensionality open import foundation.functoriality-dependent-function-types open import foundation.fundamental-theorem-of-identity-types open import foundation.identity-types @@ -22,7 +23,6 @@ open import foundation-core.contractible-maps open import foundation-core.equality-dependent-pair-types open import foundation-core.equivalences open import foundation-core.fibers-of-maps -open import foundation-core.function-extensionality open import foundation-core.function-types open import foundation-core.functoriality-dependent-pair-types open import foundation-core.homotopies diff --git a/src/foundation/type-arithmetic-unit-type.lagda.md b/src/foundation/type-arithmetic-unit-type.lagda.md index edc15bfbfd..767358fec4 100644 --- a/src/foundation/type-arithmetic-unit-type.lagda.md +++ b/src/foundation/type-arithmetic-unit-type.lagda.md @@ -8,12 +8,12 @@ module foundation.type-arithmetic-unit-type where ```agda open import foundation.dependent-pair-types +open import foundation.function-extensionality open import foundation.unit-type open import foundation.universe-levels open import foundation-core.cartesian-product-types open import foundation-core.equivalences -open import foundation-core.function-extensionality open import foundation-core.function-types open import foundation-core.homotopies open import foundation-core.identity-types diff --git a/src/foundation/type-duality.lagda.md b/src/foundation/type-duality.lagda.md index bf363dbedf..96788612b2 100644 --- a/src/foundation/type-duality.lagda.md +++ b/src/foundation/type-duality.lagda.md @@ -10,6 +10,7 @@ module foundation.type-duality where open import foundation.action-on-identifications-functions open import foundation.dependent-pair-types open import foundation.equivalences +open import foundation.function-extensionality open import foundation.fundamental-theorem-of-identity-types open import foundation.locally-small-types open import foundation.slice @@ -23,7 +24,6 @@ open import foundation-core.contractible-maps open import foundation-core.contractible-types open import foundation-core.embeddings open import foundation-core.fibers-of-maps -open import foundation-core.function-extensionality open import foundation-core.function-types open import foundation-core.functoriality-dependent-function-types open import foundation-core.functoriality-dependent-pair-types diff --git a/src/foundation/type-theoretic-principle-of-choice.lagda.md b/src/foundation/type-theoretic-principle-of-choice.lagda.md index 605aec74bc..312b890993 100644 --- a/src/foundation/type-theoretic-principle-of-choice.lagda.md +++ b/src/foundation/type-theoretic-principle-of-choice.lagda.md @@ -10,12 +10,12 @@ open import foundation-core.type-theoretic-principle-of-choice public ```agda open import foundation.dependent-pair-types +open import foundation.function-extensionality open import foundation.implicit-function-types open import foundation.structure-identity-principle open import foundation.universe-levels open import foundation-core.equivalences -open import foundation-core.function-extensionality open import foundation-core.homotopies open import foundation-core.identity-types open import foundation-core.transport-along-identifications diff --git a/src/foundation/uniqueness-set-quotients.lagda.md b/src/foundation/uniqueness-set-quotients.lagda.md index 77767eab19..5fd4913def 100644 --- a/src/foundation/uniqueness-set-quotients.lagda.md +++ b/src/foundation/uniqueness-set-quotients.lagda.md @@ -10,6 +10,7 @@ module foundation.uniqueness-set-quotients where open import foundation.action-on-identifications-functions open import foundation.dependent-pair-types open import foundation.equivalences +open import foundation.function-extensionality open import foundation.reflecting-maps-equivalence-relations open import foundation.sets open import foundation.subtype-identity-principle @@ -20,7 +21,6 @@ open import foundation.whiskering-homotopies-composition open import foundation-core.contractible-types open import foundation-core.equivalence-relations -open import foundation-core.function-extensionality open import foundation-core.function-types open import foundation-core.homotopies open import foundation-core.identity-types diff --git a/src/foundation/univalence-implies-function-extensionality.lagda.md b/src/foundation/univalence-implies-function-extensionality.lagda.md index 8c19263275..8a0b581a0e 100644 --- a/src/foundation/univalence-implies-function-extensionality.lagda.md +++ b/src/foundation/univalence-implies-function-extensionality.lagda.md @@ -9,6 +9,7 @@ module foundation.univalence-implies-function-extensionality where ```agda open import foundation.dependent-pair-types open import foundation.equivalence-induction +open import foundation.function-extensionality open import foundation.postcomposition-functions open import foundation.type-arithmetic-dependent-pair-types open import foundation.universe-levels @@ -17,7 +18,6 @@ open import foundation.weak-function-extensionality open import foundation-core.contractible-maps open import foundation-core.contractible-types open import foundation-core.fibers-of-maps -open import foundation-core.function-extensionality open import foundation-core.function-types open import foundation-core.homotopies open import foundation-core.identity-types diff --git a/src/foundation/universal-property-booleans.lagda.md b/src/foundation/universal-property-booleans.lagda.md index 73a7c5fa82..ff21eeb97b 100644 --- a/src/foundation/universal-property-booleans.lagda.md +++ b/src/foundation/universal-property-booleans.lagda.md @@ -10,11 +10,11 @@ module foundation.universal-property-booleans where open import foundation.booleans open import foundation.dependent-pair-types open import foundation.equality-cartesian-product-types +open import foundation.function-extensionality open import foundation.universe-levels open import foundation-core.cartesian-product-types open import foundation-core.equivalences -open import foundation-core.function-extensionality open import foundation-core.function-types open import foundation-core.homotopies open import foundation-core.identity-types diff --git a/src/foundation/universal-property-contractible-types.lagda.md b/src/foundation/universal-property-contractible-types.lagda.md index c3554721e9..e581cf7ee1 100644 --- a/src/foundation/universal-property-contractible-types.lagda.md +++ b/src/foundation/universal-property-contractible-types.lagda.md @@ -9,13 +9,13 @@ module foundation.universal-property-contractible-types where ```agda open import foundation.action-on-identifications-functions open import foundation.dependent-pair-types +open import foundation.function-extensionality open import foundation.singleton-induction open import foundation.universe-levels open import foundation-core.contractible-maps open import foundation-core.contractible-types open import foundation-core.equivalences -open import foundation-core.function-extensionality open import foundation-core.function-types open import foundation-core.identity-types ``` diff --git a/src/foundation/universal-property-coproduct-types.lagda.md b/src/foundation/universal-property-coproduct-types.lagda.md index a6680f102a..e3e0646844 100644 --- a/src/foundation/universal-property-coproduct-types.lagda.md +++ b/src/foundation/universal-property-coproduct-types.lagda.md @@ -9,13 +9,13 @@ module foundation.universal-property-coproduct-types where ```agda open import foundation.dependent-pair-types open import foundation.equality-cartesian-product-types +open import foundation.function-extensionality open import foundation.universal-property-equivalences open import foundation.universe-levels open import foundation-core.cartesian-product-types open import foundation-core.coproduct-types open import foundation-core.equivalences -open import foundation-core.function-extensionality open import foundation-core.function-types open import foundation-core.homotopies open import foundation-core.identity-types diff --git a/src/foundation/universal-property-dependent-pair-types.lagda.md b/src/foundation/universal-property-dependent-pair-types.lagda.md index ee775bfefc..f9e9f5d900 100644 --- a/src/foundation/universal-property-dependent-pair-types.lagda.md +++ b/src/foundation/universal-property-dependent-pair-types.lagda.md @@ -8,10 +8,10 @@ module foundation.universal-property-dependent-pair-types where ```agda open import foundation.dependent-pair-types +open import foundation.function-extensionality open import foundation.universe-levels open import foundation-core.equivalences -open import foundation-core.function-extensionality open import foundation-core.functoriality-dependent-pair-types open import foundation-core.homotopies open import foundation-core.identity-types diff --git a/src/foundation/universal-property-empty-type.lagda.md b/src/foundation/universal-property-empty-type.lagda.md index a599975557..fa6f021c88 100644 --- a/src/foundation/universal-property-empty-type.lagda.md +++ b/src/foundation/universal-property-empty-type.lagda.md @@ -8,13 +8,13 @@ module foundation.universal-property-empty-type where ```agda open import foundation.dependent-pair-types +open import foundation.function-extensionality open import foundation.universal-property-equivalences open import foundation.universe-levels open import foundation-core.contractible-types open import foundation-core.empty-types open import foundation-core.equivalences -open import foundation-core.function-extensionality open import foundation-core.function-types ``` diff --git a/src/foundation/universal-property-family-of-fibers-of-maps.lagda.md b/src/foundation/universal-property-family-of-fibers-of-maps.lagda.md index 2d4e80b546..b2ec08aab7 100644 --- a/src/foundation/universal-property-family-of-fibers-of-maps.lagda.md +++ b/src/foundation/universal-property-family-of-fibers-of-maps.lagda.md @@ -10,6 +10,7 @@ module foundation.universal-property-family-of-fibers-of-maps where open import foundation.action-on-identifications-functions open import foundation.dependent-pair-types open import foundation.families-of-equivalences +open import foundation.function-extensionality open import foundation.subtype-identity-principle open import foundation.universe-levels @@ -18,7 +19,6 @@ open import foundation-core.contractible-maps open import foundation-core.contractible-types open import foundation-core.equivalences open import foundation-core.fibers-of-maps -open import foundation-core.function-extensionality open import foundation-core.function-types open import foundation-core.functoriality-dependent-function-types open import foundation-core.functoriality-dependent-pair-types diff --git a/src/foundation/universal-property-identity-types.lagda.md b/src/foundation/universal-property-identity-types.lagda.md index 74679cffd1..0eaa8dea3d 100644 --- a/src/foundation/universal-property-identity-types.lagda.md +++ b/src/foundation/universal-property-identity-types.lagda.md @@ -13,6 +13,7 @@ open import foundation.dependent-universal-property-equivalences open import foundation.embeddings open import foundation.equivalences open import foundation.full-subtypes +open import foundation.function-extensionality open import foundation.functoriality-dependent-function-types open import foundation.fundamental-theorem-of-identity-types open import foundation.identity-types @@ -22,7 +23,6 @@ open import foundation.universe-levels open import foundation-core.contractible-types open import foundation-core.fibers-of-maps -open import foundation-core.function-extensionality open import foundation-core.function-types open import foundation-core.functoriality-dependent-pair-types open import foundation-core.injective-maps diff --git a/src/foundation/universal-property-maybe.lagda.md b/src/foundation/universal-property-maybe.lagda.md index 9157bd1837..880060dd3f 100644 --- a/src/foundation/universal-property-maybe.lagda.md +++ b/src/foundation/universal-property-maybe.lagda.md @@ -8,13 +8,13 @@ module foundation.universal-property-maybe where ```agda open import foundation.dependent-pair-types +open import foundation.function-extensionality open import foundation.maybe open import foundation.universe-levels open import foundation-core.cartesian-product-types open import foundation-core.coproduct-types open import foundation-core.equivalences -open import foundation-core.function-extensionality open import foundation-core.function-types open import foundation-core.homotopies open import foundation-core.identity-types diff --git a/src/foundation/universal-property-propositional-truncation-into-sets.lagda.md b/src/foundation/universal-property-propositional-truncation-into-sets.lagda.md index 46093aa3b2..35ca2662b1 100644 --- a/src/foundation/universal-property-propositional-truncation-into-sets.lagda.md +++ b/src/foundation/universal-property-propositional-truncation-into-sets.lagda.md @@ -9,13 +9,13 @@ module foundation.universal-property-propositional-truncation-into-sets where ```agda open import foundation.action-on-identifications-functions open import foundation.dependent-pair-types +open import foundation.function-extensionality open import foundation.propositional-truncations open import foundation.universe-levels open import foundation.weakly-constant-maps open import foundation-core.equivalences open import foundation-core.fibers-of-maps -open import foundation-core.function-extensionality open import foundation-core.function-types open import foundation-core.homotopies open import foundation-core.identity-types diff --git a/src/foundation/universal-property-propositional-truncation.lagda.md b/src/foundation/universal-property-propositional-truncation.lagda.md index 0852255ffb..7100c0dd3a 100644 --- a/src/foundation/universal-property-propositional-truncation.lagda.md +++ b/src/foundation/universal-property-propositional-truncation.lagda.md @@ -9,6 +9,7 @@ module foundation.universal-property-propositional-truncation where ```agda open import foundation.dependent-pair-types open import foundation.equivalences +open import foundation.function-extensionality open import foundation.functoriality-cartesian-product-types open import foundation.precomposition-functions-into-subuniverses open import foundation.subtype-identity-principle @@ -19,7 +20,6 @@ open import foundation.universe-levels open import foundation-core.contractible-maps open import foundation-core.contractible-types -open import foundation-core.function-extensionality open import foundation-core.function-types open import foundation-core.functoriality-dependent-function-types open import foundation-core.functoriality-dependent-pair-types diff --git a/src/foundation/universal-property-set-quotients.lagda.md b/src/foundation/universal-property-set-quotients.lagda.md index 665b172d75..a4b7eb03fc 100644 --- a/src/foundation/universal-property-set-quotients.lagda.md +++ b/src/foundation/universal-property-set-quotients.lagda.md @@ -16,6 +16,7 @@ open import foundation.effective-maps-equivalence-relations open import foundation.epimorphisms-with-respect-to-sets open import foundation.equivalence-classes open import foundation.existential-quantification +open import foundation.function-extensionality open import foundation.fundamental-theorem-of-identity-types open import foundation.identity-types open import foundation.images @@ -39,7 +40,6 @@ open import foundation-core.embeddings open import foundation-core.equivalence-relations open import foundation-core.equivalences open import foundation-core.fibers-of-maps -open import foundation-core.function-extensionality open import foundation-core.function-types open import foundation-core.functoriality-dependent-pair-types open import foundation-core.homotopies diff --git a/src/foundation/universal-property-set-truncation.lagda.md b/src/foundation/universal-property-set-truncation.lagda.md index ce823132d3..c6a4069b7b 100644 --- a/src/foundation/universal-property-set-truncation.lagda.md +++ b/src/foundation/universal-property-set-truncation.lagda.md @@ -8,6 +8,7 @@ module foundation.universal-property-set-truncation where ```agda open import foundation.dependent-pair-types +open import foundation.function-extensionality open import foundation.mere-equality open import foundation.reflecting-maps-equivalence-relations open import foundation.sets @@ -19,7 +20,6 @@ open import foundation.universe-levels open import foundation-core.contractible-maps open import foundation-core.contractible-types open import foundation-core.equivalences -open import foundation-core.function-extensionality open import foundation-core.function-types open import foundation-core.functoriality-dependent-pair-types open import foundation-core.homotopies diff --git a/src/foundation/universal-property-truncation.lagda.md b/src/foundation/universal-property-truncation.lagda.md index 80dec71320..b2c3d61ce8 100644 --- a/src/foundation/universal-property-truncation.lagda.md +++ b/src/foundation/universal-property-truncation.lagda.md @@ -12,6 +12,7 @@ open import foundation-core.universal-property-truncation public open import foundation.action-on-identifications-functions open import foundation.contractible-types open import foundation.dependent-pair-types +open import foundation.function-extensionality open import foundation.identity-types open import foundation.propositional-truncations open import foundation.surjective-maps @@ -23,7 +24,6 @@ open import foundation.universe-levels open import foundation-core.contractible-maps open import foundation-core.equivalences open import foundation-core.fibers-of-maps -open import foundation-core.function-extensionality open import foundation-core.functoriality-dependent-function-types open import foundation-core.functoriality-dependent-pair-types open import foundation-core.truncated-types diff --git a/src/foundation/unordered-pairs.lagda.md b/src/foundation/unordered-pairs.lagda.md index 2fa7deddbc..fcc7e11206 100644 --- a/src/foundation/unordered-pairs.lagda.md +++ b/src/foundation/unordered-pairs.lagda.md @@ -14,6 +14,7 @@ open import foundation.decidable-equality open import foundation.dependent-pair-types open import foundation.dependent-universal-property-equivalences open import foundation.existential-quantification +open import foundation.function-extensionality open import foundation.fundamental-theorem-of-identity-types open import foundation.homotopy-induction open import foundation.mere-equivalences @@ -30,7 +31,6 @@ open import foundation-core.contractible-maps open import foundation-core.coproduct-types open import foundation-core.embeddings open import foundation-core.equivalences -open import foundation-core.function-extensionality open import foundation-core.function-types open import foundation-core.functoriality-dependent-function-types open import foundation-core.functoriality-dependent-pair-types diff --git a/src/foundation/vectors-set-quotients.lagda.md b/src/foundation/vectors-set-quotients.lagda.md index eba69afa37..32423456c1 100644 --- a/src/foundation/vectors-set-quotients.lagda.md +++ b/src/foundation/vectors-set-quotients.lagda.md @@ -15,6 +15,7 @@ open import foundation.action-on-identifications-functions open import foundation.cartesian-products-set-quotients open import foundation.dependent-pair-types open import foundation.equality-cartesian-product-types +open import foundation.function-extensionality open import foundation.multivariable-operations open import foundation.products-equivalence-relations open import foundation.raising-universe-levels @@ -30,7 +31,6 @@ open import foundation-core.coproduct-types open import foundation-core.equality-dependent-pair-types open import foundation-core.equivalence-relations open import foundation-core.equivalences -open import foundation-core.function-extensionality open import foundation-core.function-types open import foundation-core.homotopies open import foundation-core.identity-types diff --git a/src/foundation/weak-function-extensionality.lagda.md b/src/foundation/weak-function-extensionality.lagda.md index c445141e12..7e9d6bb255 100644 --- a/src/foundation/weak-function-extensionality.lagda.md +++ b/src/foundation/weak-function-extensionality.lagda.md @@ -11,6 +11,7 @@ open import foundation.action-on-identifications-functions open import foundation.decidable-equality open import foundation.decidable-types open import foundation.dependent-pair-types +open import foundation.function-extensionality open import foundation.fundamental-theorem-of-identity-types open import foundation.universe-levels @@ -19,7 +20,6 @@ open import foundation-core.coproduct-types open import foundation-core.empty-types open import foundation-core.equality-dependent-pair-types open import foundation-core.equivalences -open import foundation-core.function-extensionality open import foundation-core.function-types open import foundation-core.identity-types open import foundation-core.propositions diff --git a/src/graph-theory/equivalences-directed-graphs.lagda.md b/src/graph-theory/equivalences-directed-graphs.lagda.md index ec10cf5c03..dd7e82b7f2 100644 --- a/src/graph-theory/equivalences-directed-graphs.lagda.md +++ b/src/graph-theory/equivalences-directed-graphs.lagda.md @@ -15,7 +15,6 @@ open import foundation.contractible-types open import foundation.dependent-pair-types open import foundation.equality-dependent-function-types open import foundation.equivalence-extensionality -open import foundation.equivalences open import foundation.function-types open import foundation.functoriality-dependent-function-types open import foundation.functoriality-dependent-pair-types @@ -24,11 +23,14 @@ open import foundation.homotopies open import foundation.identity-types open import foundation.structure-identity-principle open import foundation.torsorial-type-families +open import foundation.transposition-identifications-along-equivalences open import foundation.type-arithmetic-dependent-pair-types open import foundation.type-theoretic-principle-of-choice open import foundation.univalence open import foundation.universe-levels +open import foundation-core.equivalences + open import graph-theory.directed-graphs open import graph-theory.morphisms-directed-graphs ``` diff --git a/src/structured-types/initial-pointed-type-equipped-with-automorphism.lagda.md b/src/structured-types/initial-pointed-type-equipped-with-automorphism.lagda.md index f42f2e522e..448aab526d 100644 --- a/src/structured-types/initial-pointed-type-equipped-with-automorphism.lagda.md +++ b/src/structured-types/initial-pointed-type-equipped-with-automorphism.lagda.md @@ -14,13 +14,15 @@ open import foundation.action-on-identifications-functions open import foundation.contractible-types open import foundation.coproduct-types open import foundation.dependent-pair-types -open import foundation.equivalences open import foundation.homotopies open import foundation.identity-types open import foundation.iterating-automorphisms +open import foundation.transposition-identifications-along-equivalences open import foundation.unit-type open import foundation.universe-levels +open import foundation-core.equivalences + open import structured-types.pointed-types-equipped-with-automorphisms ``` diff --git a/src/synthetic-homotopy-theory/cocones-under-spans.lagda.md b/src/synthetic-homotopy-theory/cocones-under-spans.lagda.md index af13fee3e9..fd80a58708 100644 --- a/src/synthetic-homotopy-theory/cocones-under-spans.lagda.md +++ b/src/synthetic-homotopy-theory/cocones-under-spans.lagda.md @@ -9,6 +9,7 @@ module synthetic-homotopy-theory.cocones-under-spans where ```agda open import foundation.action-on-identifications-functions open import foundation.dependent-pair-types +open import foundation.function-extensionality open import foundation.fundamental-theorem-of-identity-types open import foundation.homotopies open import foundation.homotopy-induction @@ -21,7 +22,6 @@ open import foundation-core.commuting-squares-of-maps open import foundation-core.contractible-types open import foundation-core.equality-dependent-pair-types open import foundation-core.equivalences -open import foundation-core.function-extensionality open import foundation-core.function-types open import foundation-core.functoriality-dependent-pair-types open import foundation-core.identity-types From 619becd67156698f84a70761330a3bc77ae5df53 Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Mon, 5 Feb 2024 17:08:32 +0100 Subject: [PATCH 113/150] complete the removal of duplicate entries in function extensionality --- src/foundation.lagda.md | 1 + .../commuting-squares-of-maps.lagda.md | 16 +-- src/foundation/composition-algebra.lagda.md | 4 +- src/foundation/evaluation-functions.lagda.md | 120 ++++++++++++++++++ .../function-extensionality.lagda.md | 81 +++++------- ...stcomposition-dependent-functions.lagda.md | 70 +++++----- .../postcomposition-functions.lagda.md | 98 ++++++-------- ...recomposition-dependent-functions.lagda.md | 74 +++++------ .../precomposition-functions.lagda.md | 111 +++++++--------- src/structured-types/h-spaces.lagda.md | 1 + 10 files changed, 310 insertions(+), 266 deletions(-) create mode 100644 src/foundation/evaluation-functions.lagda.md diff --git a/src/foundation.lagda.md b/src/foundation.lagda.md index 5fb5bc2ff4..b39bf2dd02 100644 --- a/src/foundation.lagda.md +++ b/src/foundation.lagda.md @@ -147,6 +147,7 @@ open import foundation.equivalences-span-diagrams public open import foundation.equivalences-span-diagrams-families-of-types public open import foundation.equivalences-spans public open import foundation.equivalences-spans-families-of-types public +open import foundation.evaluation-functions public open import foundation.exclusive-disjunction public open import foundation.existential-quantification public open import foundation.exponents-set-quotients public diff --git a/src/foundation/commuting-squares-of-maps.lagda.md b/src/foundation/commuting-squares-of-maps.lagda.md index c2184a1dab..216375a41d 100644 --- a/src/foundation/commuting-squares-of-maps.lagda.md +++ b/src/foundation/commuting-squares-of-maps.lagda.md @@ -666,25 +666,25 @@ them. | | | | | l | m| | r ↦ l| r| | H | K | | H | K | - v v v v v + ∨ ∨ ∨ ∨ ∨ X -----> Y -----> Z X --------> Z bl br br ∘ bl - - | | - v v + ∨ ∨ -∘r W^Z ------> W^C | | -∘br | W^K | -∘tr W^(H | K) | | - v -∘m v ~ + ∨ -∘m ∨ ~ W^Y ------> W^B |-> | | W^K -∘bl | W^H | -∘tl --- | | W^H - v v + ∨ ∨ W^X ------> W^A -∘l ``` @@ -781,9 +781,7 @@ module _ ap-binary ( λ L q → eq-htpy L ∙ q) ( eq-htpy (preserves-comp-left-whisker-comp h bottom-right H)) - ( compute-ap-precomp-eq-htpy - ( top-left) - ( h ·l K)) + ( inv (compute-eq-htpy-ap-precomp top-left (h ·l K))) distributive-precomp-pasting-vertical-coherence-square-maps : ( top : A → X) (left-top : A → B) (right-top : X → Y) (middle : B → Y) → @@ -868,7 +866,7 @@ module _ by ap-binary ( λ p L → p ∙ eq-htpy L) - ( compute-ap-precomp-eq-htpy left-top (h ·l K)) + ( inv (compute-eq-htpy-ap-precomp left-top (h ·l K))) ( eq-htpy (preserves-comp-left-whisker-comp h right-bottom H)) ``` @@ -919,7 +917,7 @@ module _ ( ( precomp f W) ·l ( precomp-coherence-square-maps top left right bottom H W)) distributive-precomp-right-whisker-comp-coherence-square-maps f g = - compute-ap-precomp-eq-htpy f (g ·l H) + inv (compute-eq-htpy-ap-precomp f (g ·l H)) ``` Similarly, we can calculate transpositions of left-whiskered squares with the diff --git a/src/foundation/composition-algebra.lagda.md b/src/foundation/composition-algebra.lagda.md index aecfde78a5..515ca2b985 100644 --- a/src/foundation/composition-algebra.lagda.md +++ b/src/foundation/composition-algebra.lagda.md @@ -78,7 +78,7 @@ module _ (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 = - coherence-square-eq-htpy-ap-precomp h (i ∘ f) (i ∘ g) (i ·l H) + compute-eq-htpy-ap-precomp h (i ·l H) distributive-htpy-precomp-right-whisker : (h : C → A) (H : f ~ g) (S : UU l4) → @@ -214,7 +214,7 @@ module _ (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 = - coherence-square-eq-htpy-ap-postcomp h (f ∘ i) (g ∘ i) (H ·r i) + compute-eq-htpy-ap-postcomp h (H ·r i) distributive-htpy-postcomp-left-whisker : (h : B → C) (H : f ~ g) (S : UU l4) → diff --git a/src/foundation/evaluation-functions.lagda.md b/src/foundation/evaluation-functions.lagda.md new file mode 100644 index 0000000000..1a5b43ed34 --- /dev/null +++ b/src/foundation/evaluation-functions.lagda.md @@ -0,0 +1,120 @@ +# Evaluation of functions + +```agda +module foundation.evaluation-functions where +``` + +
Imports + +```agda +open import foundation.action-on-identifications-functions +open import foundation.function-extensionality +open import foundation.universe-levels + +open import foundation-core.identity-types +``` + +
+ +## Idea + +Consider a family of types `B` over `A` and let `a : A` be an element. The +{{#concept "evaluation function" Agda=ev}} at `a` + +```text + ev : ((x : A) → B x) → B a +``` + +is the map given by `f ↦ f a`, evaluating dependent functions at `a`. + +## Definitions + +### The evaluation function + +```agda +module _ + {l1 l2 : Level} {A : UU l1} {B : A → UU l2} (a : A) + where + + ev : ((x : A) → B x) → B a + ev f = f a +``` + +### The evaluation function with an explicit type family + +```agda +module _ + {l1 l2 : Level} {A : UU l1} (B : A → UU l2) (a : A) + where + + ev-dependent-function : ((x : A) → B x) → B a + ev-dependent-function = ev a +``` + +### The evaluation function for nondependent functions + +```agda +module _ + {l1 l2 : Level} {A : UU l1} (B : UU l2) (a : A) + where + + ev-function : (A → B) → B + ev-function = ev a +``` + +### The evaluation function of implicit functions + +```agda +module _ + {l1 l2 : Level} {A : UU l1} {B : A → UU l2} (a : A) + where + + ev-implicit-function : ({x : A} → B x) → B a + ev-implicit-function f = f {a} +``` + +### The evaluation function of implicit function, specified with an explicit type family + +```agda +module _ + {l1 l2 : Level} {A : UU l1} (B : A → UU l2) (a : A) + where + + ev-implicit-function' : ({x : A} → B x) → B a + ev-implicit-function' = ev-implicit-function a +``` + +## Properties + +### The action on paths of an evaluation map + +For any two functions `f g : A → B`, the action on identifications of +`ev-function B a` + +```text + ap (ev-function B a) : (f = g) → (f a = g a) +``` + +is homotopic to the map `p ↦ htpy-eq p a`, where `htpy-eq` is the operation that +constructs a homotopy from an identification of functions, which we constructed +in [foundation.function-extensionality. In other words, the triangle of maps + +```text + htpy-eq + (f = g) ----------> (f ~ g) + \ / + ap (ev-function B a) \ / ev a + ∨ ∨ + (f a = g a) +``` + +[commutes](foundation-core.commuting-triangles-of-maps.md). + +```agda +module _ + {l1 l2 : Level} {A : UU l1} {B : UU l2} (a : A) + where + + ap-ev : {f g : A → B} (p : f = g) → (ap (ev-function B a) p) = htpy-eq p a + ap-ev refl = refl +``` diff --git a/src/foundation/function-extensionality.lagda.md b/src/foundation/function-extensionality.lagda.md index 2abbd98177..147c0b4b91 100644 --- a/src/foundation/function-extensionality.lagda.md +++ b/src/foundation/function-extensionality.lagda.md @@ -80,7 +80,7 @@ module _ based-function-extensionality : (f : (x : A) → B x) → UU (l1 ⊔ l2) based-function-extensionality f = - (g : (x : A) → B x) → is-equiv (htpy-eq {f = f} {g}) + (g : (x : A) → B x) → instance-function-extensionality f g ``` ### The function extensionality principle with respect to a universe level @@ -89,8 +89,7 @@ module _ function-extensionality-Level : (l1 l2 : Level) → UU (lsuc l1 ⊔ lsuc l2) function-extensionality-Level l1 l2 = {A : UU l1} {B : A → UU l2} - (f g : (x : A) → B x) → - instance-function-extensionality f g + (f : (x : A) → B x) → based-function-extensionality f ``` ### The function extensionality axiom @@ -161,29 +160,6 @@ module _ ## Properties -### Computing the action on paths of an evaluation map - -```agda -ap-ev : - {l1 l2 : Level} {A : UU l1} {B : UU l2} (a : A) → {f g : A → B} → - (p : f = g) → (ap (λ h → h a) p) = htpy-eq p a -ap-ev a refl = refl -``` - -### `htpy-eq` preserves inverses - -```agda -module _ - {l1 l2 : Level} {A : UU l1} {B : A → UU l2} {f g : (x : A) → B x} - where - - compute-htpy-eq-inv : inv-htpy {f = f} {g} ∘ htpy-eq ~ htpy-eq ∘ inv - compute-htpy-eq-inv refl = refl - - compute-inv-htpy-htpy-eq : htpy-eq ∘ inv ~ inv-htpy {f = f} {g} ∘ htpy-eq - compute-inv-htpy-htpy-eq = inv-htpy compute-htpy-eq-inv -``` - ### `htpy-eq` preserves concatenation of identifications ```agda @@ -192,7 +168,7 @@ module _ where htpy-eq-concat : - (p : f = g) (q : g = h) → htpy-eq (p ∙ q) = (htpy-eq p ∙h htpy-eq q) + (p : f = g) (q : g = h) → htpy-eq (p ∙ q) = htpy-eq p ∙h htpy-eq q htpy-eq-concat refl refl = refl ``` @@ -213,38 +189,45 @@ module _ ( is-retraction-eq-htpy (eq-htpy H ∙ eq-htpy K)) ``` -## See also +### `htpy-eq` preserves inverses -- The fact that the univalence axiom implies function extensionality is proven - in - [`foundation.univalence-implies-function-extensionality`](foundation.univalence-implies-function-extensionality.md). -- Weak function extensionality is defined in - [`foundation.weak-function-extensionality`](foundation.weak-function-extensionality.md). -- Transporting along homotopies is defined in - [`foundation.transport-along-homotopies`](foundation.transport-along-homotopies.md). +For any two functions `f g : (x : A) → B x` we have a +[commuting square](foundation-core.commuting-squares-of-maps.md) -## Idea +```text + inv + (f = g) ---------> (g = f) + | | + htpy-eq | | htpy-eq + ∨ ∨ + (f ~ g) ---------> (g ~ f). + inv-htpy +``` -The {{#concept "function extensionality axiom"}} asserts that -[identifications](foundation-core.identity-types.md) of (dependent) functions -are [equivalently](foundation-core.equivalences.md) described as -[homotopies](foundation-core.homotopies.md) between them. In other words, a -function is completely determined by its values. +```agda +module _ + {l1 l2 : Level} {A : UU l1} {B : A → UU l2} {f g : (x : A) → B x} + where -## Properties + compute-htpy-eq-inv : inv-htpy {f = f} {g} ∘ htpy-eq ~ htpy-eq ∘ inv + compute-htpy-eq-inv refl = refl + + compute-inv-htpy-htpy-eq : htpy-eq ∘ inv ~ inv-htpy {f = f} {g} ∘ htpy-eq + compute-inv-htpy-htpy-eq = inv-htpy compute-htpy-eq-inv +``` ### `eq-htpy` preserves inverses -In other words, we have a commutative diagram +For any two functions `f g : (x : A) → B x` we have a commuting square ```text - inv - (f = g) --------> (g = f) - ∧ ∧ - eq-htpy | | eq-htpy - | | - (f ~ g) ---------> (g ~ f). inv-htpy + (f ~ g) ---------> (g ~ f) + | | + eq-htpy | | eq-htpy + ∨ ∨ + (f = g) ---------> (g = f). + inv ``` ```agda diff --git a/src/foundation/postcomposition-dependent-functions.lagda.md b/src/foundation/postcomposition-dependent-functions.lagda.md index d9327451ec..6d18b95291 100644 --- a/src/foundation/postcomposition-dependent-functions.lagda.md +++ b/src/foundation/postcomposition-dependent-functions.lagda.md @@ -50,10 +50,13 @@ module _ ## Properties -#### Naturality of `htpy-eq` with respect to postcomposition of dependent functions +### The action on identifications of postcomposition by a map Consider a map `f : {x : A} → B x → C x` and two functions -`g h : (x : A) → B x`. Then the square +`g h : (x : A) → B x`. Then the +[action on identifications](foundation.action-on-identifications-functions.md) +`ap (postcomp-Π A f)` fits in a +[commuting square](foundation-core.commuting-squares-of-maps.md) ```text ap (postcomp-Π A f) @@ -61,28 +64,12 @@ Consider a map `f : {x : A} → B x → C x` and two functions | | htpy-eq | | htpy-eq V V - (g ~ h) --------------------------> (g ∘ f ~ h ∘ f) + (g ~ h) --------------------------> (g ∘ f ~ h ∘ f). f ·l_ ``` -commutes. - -```agda -coherence-square-homotopies-eq-ap-postcomp-Π : - {l1 l2 l3 : Level} {A : UU l1} {B : A → UU l2} {C : A → UU l3} - (f : {x : A} → B x → C x) (g h : (x : A) → B x) → - coherence-square-maps - ( ap (postcomp-Π A f) {x = g} {y = h}) - ( htpy-eq) - ( htpy-eq) - ( f ·l_) -coherence-square-homotopies-eq-ap-postcomp-Π f g .g refl = refl -``` - -#### Naturality of `eq-htpy` with respect to postcomposition of dependent functions - -Consider a map `f : {x : A} → B x → C x` and two functions -`g h : (x : A) → B x`. Then the square +Similarly, the action on identifications `ap (postcomp-Π A f)` also fits in a +commuting square ```text ap (postcomp-Π A f) @@ -90,26 +77,35 @@ Consider a map `f : {x : A} → B x → C x` and two functions ^ ^ eq-htpy | | eq-htpy | | - (g ~ h) --------------------------> (g ∘ f ~ h ∘ f) + (g ~ h) --------------------------> (g ∘ f ~ h ∘ f). f ·l_ ``` -commutes. - ```agda -coherence-square-eq-htpy-ap-postcomp-Π : +module _ {l1 l2 l3 : Level} {A : UU l1} {B : A → UU l2} {C : A → UU l3} - (f : {x : A} → B x → C x) (g h : (x : A) → B x) → - coherence-square-maps - ( f ·l_) - ( eq-htpy) - ( eq-htpy) - ( ap (postcomp-Π A f) {x = g} {y = h}) -coherence-square-eq-htpy-ap-postcomp-Π {A = A} f g h = + (f : {x : A} → B x → C x) {g h : (x : A) → B x} + where + + compute-htpy-eq-ap-postcomp-Π : + coherence-square-maps + ( ap (postcomp-Π A f) {x = g} {y = h}) + ( htpy-eq) + ( htpy-eq) + ( f ·l_) + compute-htpy-eq-ap-postcomp-Π refl = refl + + compute-eq-htpy-ap-postcomp-Π : + coherence-square-maps + ( f ·l_) + ( eq-htpy) + ( eq-htpy) + ( ap (postcomp-Π A f)) + compute-eq-htpy-ap-postcomp-Π = coherence-square-inv-vertical - ( ap (postcomp-Π A f) {x = g} {y = h}) - ( equiv-funext) - ( equiv-funext) - ( f ·l_) - ( coherence-square-homotopies-eq-ap-postcomp-Π f g h) + ( ap (postcomp-Π A f)) + ( equiv-funext) + ( equiv-funext) + ( f ·l_) + ( compute-htpy-eq-ap-postcomp-Π) ``` diff --git a/src/foundation/postcomposition-functions.lagda.md b/src/foundation/postcomposition-functions.lagda.md index 34a5b6dc80..be5a35d4a9 100644 --- a/src/foundation/postcomposition-functions.lagda.md +++ b/src/foundation/postcomposition-functions.lagda.md @@ -212,79 +212,55 @@ module _ ### Computing the action on identifications of postcomposition by a map -```agda -module _ - { l1 l2 l3 : Level} {A : UU l1} {B : UU l2} {C : UU l3} - { f g : A → B} (h : B → C) - where - - compute-ap-postcomp-htpy-eq : - ( p : f = g) → eq-htpy (h ·l htpy-eq p) = ap (postcomp A h) p - compute-ap-postcomp-htpy-eq refl = - eq-htpy-refl-htpy (h ∘ f) - - compute-ap-postcomp-eq-htpy : - (H : f ~ g) → - eq-htpy (h ·l H) = ap (postcomp A h) (eq-htpy H) - compute-ap-postcomp-eq-htpy H = - ( ap - ( λ K → eq-htpy (h ·l K)) - ( inv (is-section-eq-htpy H))) ∙ - ( compute-ap-postcomp-htpy-eq (eq-htpy H)) -``` - -#### Naturality of `htpy-eq` with respect to postcomposition of ordinary functions - -Consider a map `f : B → C` and two functions `g h : A → B`. Then the square +Consider a map `f : B → C` and two functions `g h : A → B`. Then the +[action on identifications](foundation.action-on-identifications-functions.md) +`ap (postcomp A f)` fits in a +[commuting square](foundation-core.commuting-squares-of-maps.md) ```text ap (postcomp A f) - (g = h) -------------------------> (g ∘ f = h ∘ f) + (g = h) --------------------------> (g ∘ f = h ∘ f) | | htpy-eq | | htpy-eq - V V - (g ~ h) --------------------------> (g ∘ f ~ h ∘ f) + ∨ ∨ + (g ~ h) --------------------------> (g ∘ f ~ h ∘ f). f ·l_ ``` -commutes. - -```agda -coherence-square-homotopies-eq-ap-postcomp : - {l1 l2 l3 : Level} {A : UU l1} {B : UU l2} {C : UU l3} (f : B → C) → - (g h : A → B) → - coherence-square-maps - ( ap (postcomp A f) {x = g} {y = h}) - ( htpy-eq) - ( htpy-eq) - ( f ·l_) -coherence-square-homotopies-eq-ap-postcomp f = - coherence-square-homotopies-eq-ap-postcomp-Π f -``` - -#### Naturality of `eq-htpy` with respect to postcomposition of ordinary functions - -Consider a map `f : B → C` and two functions `g h : A → B`. Then the square +Similarly, the action on identifications `ap (postcomp A f)` also fits in a +commuting square ```text - ap (postcomp A f) - (g = h) -------------------------> (g ∘ f = h ∘ f) - ^ ^ - eq-htpy | | eq-htpy - | | - (g ~ h) --------------------------> (g ∘ f ~ h ∘ f) f ·l_ + (g ~ h) --------------------------> (g ∘ f ~ h ∘ f) + | | + eq-htpy | | eq-htpy + ∨ ∨ + (g = h) --------------------------> (g ∘ f = h ∘ f). + ap (postcomp A f) ``` ```agda -coherence-square-eq-htpy-ap-postcomp : - {l1 l2 l3 : Level} {A : UU l1} {B : UU l2} {C : UU l3} (f : B → C) → - (g h : A → B) → - coherence-square-maps - ( f ·l_) - ( eq-htpy) - ( eq-htpy) - ( ap (postcomp A f) {x = g} {y = h}) -coherence-square-eq-htpy-ap-postcomp f = - coherence-square-eq-htpy-ap-postcomp-Π f +module _ + {l1 l2 l3 : Level} {A : UU l1} {B : UU l2} {C : UU l3} + {g h : A → B} (f : B → C) + where + + compute-htpy-eq-ap-postcomp : + coherence-square-maps + ( ap (postcomp A f) {x = g} {y = h}) + ( htpy-eq) + ( htpy-eq) + ( f ·l_) + compute-htpy-eq-ap-postcomp = + compute-htpy-eq-ap-postcomp-Π f + + compute-eq-htpy-ap-postcomp : + coherence-square-maps + ( f ·l_) + ( eq-htpy) + ( eq-htpy) + ( ap (postcomp A f) {x = g} {y = h}) + compute-eq-htpy-ap-postcomp = + compute-eq-htpy-ap-postcomp-Π f ``` diff --git a/src/foundation/precomposition-dependent-functions.lagda.md b/src/foundation/precomposition-dependent-functions.lagda.md index f7a5b4dca0..8ee35eecf1 100644 --- a/src/foundation/precomposition-dependent-functions.lagda.md +++ b/src/foundation/precomposition-dependent-functions.lagda.md @@ -41,7 +41,7 @@ module _ equiv-precomp-Π e (eq-value f g) ``` -#### Naturality of `htpy-eq` with respect to precomposition of dependent functions +### The action on identifications of precomposition of dependent functions Consider a map `f : A → B` and two dependent functions `g h : (x : B) → C x`. Then the square @@ -58,51 +58,45 @@ Then the square [commutes](foundation-core.commuting-squares-of-maps.md). -```agda -coherence-square-maps-htpy-eq-ap-precomp-Π : - {l1 l2 l3 : Level} {A : UU l1} {B : UU l2} (f : A → B) {C : B → UU l3} - (g h : (b : B) → C b) → - coherence-square-maps - ( ap (precomp-Π f C) {g} {h}) - ( htpy-eq) - ( htpy-eq) - ( precomp-Π f (eq-value g h)) -coherence-square-maps-htpy-eq-ap-precomp-Π f g .g refl = refl -``` - -#### Naturality of `eq-htpy` with respect to precomposition of dependent functions - -Consider a map `f : A → B` and two dependent functions `g h : (x : B) → C x`. -Then the square +Similarly, the map `ap (precomp-Π f C)` fits in a commuting square ```text - ap (precomp-Π f C) - (g = h) ---------------------------> (g ∘ f = h ∘ f) - ∧ ∧ - eq-htpy | | eq-htpy - | | - (g ~ h) ----------------------------> (g ∘ f ~ h ∘ f) precomp-Π f (eq-value g h) + (g ~ h) ----------------------------> (g ∘ f ~ h ∘ f) + | | + eq-htpy | | eq-htpy + ∨ ∨ + (g = h) ---------------------------> (g ∘ f = h ∘ f). + ap (precomp-Π f C) ``` -[commutes](foundation-core.commuting-squares-of-maps.md). - ```agda -coherence-square-eq-htpy-ap-precomp-Π : +module _ {l1 l2 l3 : Level} {A : UU l1} {B : UU l2} (f : A → B) {C : B → UU l3} - (g h : (b : B) → C b) → - coherence-square-maps - ( precomp-Π f (eq-value g h)) - ( eq-htpy) - ( eq-htpy) - ( ap (precomp-Π f C) {g} {h}) -coherence-square-eq-htpy-ap-precomp-Π f {C = C} g h = - coherence-square-inv-vertical - ( ap (precomp-Π f C)) - ( equiv-funext) - ( equiv-funext) - ( precomp-Π f (eq-value g h)) - ( coherence-square-maps-htpy-eq-ap-precomp-Π f g h) + {g h : (b : B) → C b} + where + + compute-htpy-eq-ap-precomp-Π : + coherence-square-maps + ( ap (precomp-Π f C) {g} {h}) + ( htpy-eq) + ( htpy-eq) + ( precomp-Π f (eq-value g h)) + compute-htpy-eq-ap-precomp-Π refl = refl + + compute-eq-htpy-ap-precomp-Π : + coherence-square-maps + ( precomp-Π f (eq-value g h)) + ( eq-htpy) + ( eq-htpy) + ( ap (precomp-Π f C) {g} {h}) + compute-eq-htpy-ap-precomp-Π = + coherence-square-inv-vertical + ( ap (precomp-Π f C)) + ( equiv-funext) + ( equiv-funext) + ( precomp-Π f (eq-value g h)) + ( compute-htpy-eq-ap-precomp-Π) ``` ### Precomposing functions `Π B C` by `f : A → B` is `k+1`-truncated if and only if precomposing homotopies is `k`-truncated @@ -121,7 +115,7 @@ is-trunc-map-succ-precomp-Π {k = k} {f = f} {C = C} H = ( htpy-eq) ( htpy-eq) ( precomp-Π f (eq-value g h)) - ( coherence-square-maps-htpy-eq-ap-precomp-Π f g h) + ( compute-htpy-eq-ap-precomp-Π f) ( funext g h) ( funext (g ∘ f) (h ∘ f)) ( H g h)) diff --git a/src/foundation/precomposition-functions.lagda.md b/src/foundation/precomposition-functions.lagda.md index e680cf71d9..028587d84e 100644 --- a/src/foundation/precomposition-functions.lagda.md +++ b/src/foundation/precomposition-functions.lagda.md @@ -152,89 +152,64 @@ module _ diagonal-into-fibers-precomp = map-section-family (λ g → g , refl) ``` -### Computing the action on identifications of precomposition by a map +### The action on identifications of precomposition by a map -```agda -module _ - { l1 l2 l3 : Level} {A : UU l1} {B : UU l2} {C : UU l3} - { f g : B → C} (h : A → B) - where - - compute-ap-precomp-htpy-eq : - ( p : f = g) → - eq-htpy (htpy-eq p ·r h) = ap (precomp h C) p - compute-ap-precomp-htpy-eq refl = - eq-htpy-refl-htpy (f ∘ h) - - compute-ap-precomp-eq-htpy : - ( H : f ~ g) → - eq-htpy (H ·r h) = ap (precomp h C) (eq-htpy H) - compute-ap-precomp-eq-htpy H = - ( ap - ( λ K → eq-htpy (K ·r h)) - ( inv (is-section-eq-htpy H))) ∙ - ( compute-ap-precomp-htpy-eq (eq-htpy H)) -``` - -#### Naturality of `htpy-eq` with respect to precomposition of ordinary functions - -Consider a map `f : A → B` and two functions `g h : B → C`. Then the square +Consider a map `f : A → B` and two functions `g h : B → C`. Then the +[action on identifications](foundation.action-on-identifications-functions.md) +of `precomp f C` fits in a +[commuting square](foundation-core.commuting-squares-of-maps.md) ```text ap (precomp f C) - (g = h) -------------------------> (g ∘ f = h ∘ f) + (g = h) --------------------------> (g ∘ f = h ∘ f) | | htpy-eq | | htpy-eq - V V - (g ~ h) --------------------------> (g ∘ f ~ h ∘ f) + ∨ ∨ + (g ~ h) --------------------------> (g ∘ f ~ h ∘ f). precomp f (eq-value g h) ``` -commutes. - -```agda -coherence-square-homotopies-eq-ap-precomp : - {l1 l2 l3 : Level} {A : UU l1} {B : UU l2} {C : UU l3} (f : A → B) → - (g h : B → C) → - coherence-square-maps - ( ap (precomp f C)) - ( htpy-eq) - ( htpy-eq) - ( precomp-Π f (eq-value g h)) -coherence-square-homotopies-eq-ap-precomp f = - coherence-square-maps-htpy-eq-ap-precomp-Π f -``` - -#### Naturality of `eq-htpy` with respect to precomposition of ordinary functions - -Consider a map `f : A → B` and two functions `g h : B → C`. Then the square +Similarly, the action on identifications of `precomp f C` also fits in a +commuting square ```text - ap (precomp f C) - (g = h) -------------------------> (g ∘ f = h ∘ f) - ∧ ∧ - eq-htpy | | eq-htpy - | | - (g ~ h) --------------------------> (g ∘ f ~ h ∘ f) precomp f (eq-value g h) + (g ~ h) --------------------------> (g ∘ f ~ h ∘ f) + | | + eq-htpy | | eq-htpy + ∨ ∨ + (g = h) --------------------------> (g ∘ f = h ∘ f). + ap (precomp f C) ``` commutes. ```agda -coherence-square-eq-htpy-ap-precomp : - {l1 l2 l3 : Level} {A : UU l1} {B : UU l2} {C : UU l3} - (f : A → B) (g h : B → C) → - coherence-square-maps - ( precomp-Π f (eq-value g h)) - ( eq-htpy) - ( eq-htpy) - ( ap (precomp f C)) -coherence-square-eq-htpy-ap-precomp {C = C} f g h = - coherence-square-inv-vertical - ( ap (precomp f C)) - ( equiv-funext) - ( equiv-funext) - ( precomp-Π f (eq-value g h)) - ( coherence-square-homotopies-eq-ap-precomp f g h) +module _ + { l1 l2 l3 : Level} {A : UU l1} {B : UU l2} {C : UU l3} + (f : A → B) {g h : B → C} + where + + compute-htpy-eq-ap-precomp : + coherence-square-maps + ( ap (precomp f C)) + ( htpy-eq) + ( htpy-eq) + ( precomp-Π f (eq-value g h)) + compute-htpy-eq-ap-precomp = + compute-htpy-eq-ap-precomp-Π f + + compute-eq-htpy-ap-precomp : + coherence-square-maps + ( precomp-Π f (eq-value g h)) + ( eq-htpy) + ( eq-htpy) + ( ap (precomp f C)) + compute-eq-htpy-ap-precomp = + coherence-square-inv-vertical + ( ap (precomp f C)) + ( equiv-funext) + ( equiv-funext) + ( precomp-Π f (eq-value g h)) + ( compute-htpy-eq-ap-precomp) ``` diff --git a/src/structured-types/h-spaces.lagda.md b/src/structured-types/h-spaces.lagda.md index a15b9a8bb3..d130f688a2 100644 --- a/src/structured-types/h-spaces.lagda.md +++ b/src/structured-types/h-spaces.lagda.md @@ -11,6 +11,7 @@ open import foundation.action-on-identifications-binary-functions open import foundation.action-on-identifications-functions open import foundation.dependent-pair-types open import foundation.equivalences +open import foundation.evaluation-functions open import foundation.function-extensionality open import foundation.function-types open import foundation.functoriality-dependent-pair-types From c90bab1b9789b539d7606a59373fd6696b8ab022 Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Mon, 5 Feb 2024 17:23:52 +0100 Subject: [PATCH 114/150] formatting dependent coforks --- .../dependent-coforks.lagda.md | 36 +++++++++---------- 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/src/synthetic-homotopy-theory/dependent-coforks.lagda.md b/src/synthetic-homotopy-theory/dependent-coforks.lagda.md index d03890bc62..49a054167e 100644 --- a/src/synthetic-homotopy-theory/dependent-coforks.lagda.md +++ b/src/synthetic-homotopy-theory/dependent-coforks.lagda.md @@ -353,20 +353,20 @@ module _ ( d) ( inl a)))) ( coherence-square-dependent-cocone - ( vertical-map-span-cocone-cofork f g) - ( horizontal-map-span-cocone-cofork f g) - ( cocone-codiagonal-cofork f g e) - ( P) - ( d) - ( inl a))) ∙ + ( vertical-map-span-cocone-cofork f g) + ( horizontal-map-span-cocone-cofork f g) + ( cocone-codiagonal-cofork f g e) + ( P) + ( d) + ( inl a))) ∙ ( left-inv ( coherence-square-dependent-cocone - ( vertical-map-span-cocone-cofork f g) - ( horizontal-map-span-cocone-cofork f g) - ( cocone-codiagonal-cofork f g e) - ( P) - ( d) - ( inl a)))) + ( vertical-map-span-cocone-cofork f g) + ( horizontal-map-span-cocone-cofork f g) + ( cocone-codiagonal-cofork f g e) + ( P) + ( d) + ( inl a)))) ( inr a) → right-whisker-concat ( inv @@ -380,12 +380,12 @@ module _ ( d) ( inl a)))) ( coherence-square-dependent-cocone - ( vertical-map-span-cocone-cofork f g) - ( horizontal-map-span-cocone-cofork f g) - ( cocone-codiagonal-cofork f g e) - ( P) - ( d) - ( inr a))))) + ( vertical-map-span-cocone-cofork f g) + ( horizontal-map-span-cocone-cofork f g) + ( cocone-codiagonal-cofork f g e) + ( P) + ( d) + ( inr a))))) is-equiv-dependent-cofork-dependent-cocone-codiagonal : is-equiv dependent-cofork-dependent-cocone-codiagonal From c7afd14671831d34317fa0b26226b6508e2b8517 Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Mon, 5 Feb 2024 17:37:44 +0100 Subject: [PATCH 115/150] address misnamings --- .../commuting-squares-of-maps.lagda.md | 89 +++---------------- .../commuting-triangles-of-maps.lagda.md | 65 ++++++++++++++ .../dependent-cocones-under-spans.lagda.md | 4 +- ...ndent-universal-property-pushouts.lagda.md | 2 +- 4 files changed, 81 insertions(+), 79 deletions(-) diff --git a/src/foundation/commuting-squares-of-maps.lagda.md b/src/foundation/commuting-squares-of-maps.lagda.md index 216375a41d..693b0e8e31 100644 --- a/src/foundation/commuting-squares-of-maps.lagda.md +++ b/src/foundation/commuting-squares-of-maps.lagda.md @@ -35,69 +35,6 @@ open import foundation-core.homotopies ## Definitions -### Pasting commuting triangles into commuting squares along homotopic diagonals - -Two [commuting triangles](foundation-core.commuting-triangles-of-maps.md) - -```text - A A --> X - | \ \ | - | \ H L K \ | - | \ \ | - v v v v - B --> Y Y -``` - -with a [homotopic](foundation-core.homotopies.md) diagonal may be pasted into a -commuting square - -```text - A -----> X - | | - | | - v v - B -----> Y. -``` - -```agda -module _ - { l1 l2 l3 l4 : Level} {A : UU l1} {B : UU l2} {X : UU l3} {Y : UU l4} - ( top : A → X) (left : A → B) (right : X → Y) (bottom : B → Y) - where - - coherence-square-homotopies-coherence-triangles-maps : - { diagonal-left diagonal-right : A → Y} → - diagonal-left ~ diagonal-right → - coherence-triangle-maps' diagonal-left bottom left → - coherence-triangle-maps diagonal-right right top → - coherence-square-maps top left right bottom - coherence-square-homotopies-coherence-triangles-maps L H K = (H ∙h L) ∙h K - - coherence-square-homotopies-coherence-triangles-maps' : - { diagonal-left diagonal-right : A → Y} → - diagonal-left ~ diagonal-right → - coherence-triangle-maps' diagonal-left bottom left → - coherence-triangle-maps diagonal-right right top → - coherence-square-maps top left right bottom - coherence-square-homotopies-coherence-triangles-maps' L H K = H ∙h (L ∙h K) - - coherence-square-coherence-triangles-maps : - ( diagonal : A → Y) → - coherence-triangle-maps' diagonal bottom left → - coherence-triangle-maps diagonal right top → - coherence-square-maps top left right bottom - coherence-square-coherence-triangles-maps diagonal H K = H ∙h K - - compute-coherence-square-refl-htpy-coherence-triangles-maps : - ( diagonal : A → Y) → - ( H : coherence-triangle-maps' diagonal bottom left) → - ( K : coherence-triangle-maps diagonal right top) → - ( coherence-square-homotopies-coherence-triangles-maps refl-htpy H K) ~ - ( coherence-square-coherence-triangles-maps diagonal H K) - compute-coherence-square-refl-htpy-coherence-triangles-maps diagonal H K x = - right-whisker-concat right-unit (K x) -``` - ### Commuting squares of maps induce commuting squares of precomposition maps Every commuting square @@ -455,13 +392,13 @@ Similarly to the naturality square of homotopies and square of coherence squares of maps and identifications: ```text - ap f (ap g p) - f (g x) =============== f (g y) - ‖ ‖ - H x ‖ ‖ H y - ‖ ‖ - h (k x) =============== h (k y) - ap h (ap k p) . + ap f (ap g p) + f (g x) ---------------> f (g y) + | | + H x | | H y + ∨ ∨ + h (k x) ---------------> h (k y) + ap h (ap k p) . ``` ```agda @@ -958,7 +895,7 @@ module _ ( left) ( right) ( bottom) - ( coherence-square-homotopies-coherence-triangles-maps + ( horizontal-pasting-htpy-coherence-triangle-maps ( top) ( left) ( right) @@ -967,7 +904,7 @@ module _ ( H) ( K)) ( W)) ~ - ( coherence-square-homotopies-coherence-triangles-maps + ( horizontal-pasting-htpy-coherence-triangle-maps ( precomp right W) ( precomp bottom W) ( precomp top W) @@ -996,7 +933,7 @@ module _ ( left) ( right) ( bottom) - ( coherence-square-homotopies-coherence-triangles-maps' + ( horizontal-pasting-htpy-coherence-triangle-maps' ( top) ( left) ( right) @@ -1005,7 +942,7 @@ module _ ( H) ( K)) ( W)) ~ - ( coherence-square-homotopies-coherence-triangles-maps' + ( horizontal-pasting-htpy-coherence-triangle-maps' ( precomp right W) ( precomp bottom W) ( precomp top W) @@ -1033,7 +970,7 @@ module _ ( left) ( right) ( bottom) - ( coherence-square-coherence-triangles-maps + ( horizontal-pasting-coherence-triangle-maps ( top) ( left) ( right) @@ -1042,7 +979,7 @@ module _ ( H) ( K)) ( W)) ~ - ( coherence-square-coherence-triangles-maps + ( horizontal-pasting-coherence-triangle-maps ( precomp right W) ( precomp bottom W) ( precomp top W) diff --git a/src/foundation/commuting-triangles-of-maps.lagda.md b/src/foundation/commuting-triangles-of-maps.lagda.md index ba73fc2c5e..1b711bbe0b 100644 --- a/src/foundation/commuting-triangles-of-maps.lagda.md +++ b/src/foundation/commuting-triangles-of-maps.lagda.md @@ -17,7 +17,9 @@ open import foundation.identity-types open import foundation.postcomposition-functions open import foundation.precomposition-functions open import foundation.universe-levels +open import foundation.whiskering-identifications-concatenation +open import foundation-core.commuting-squares-of-maps open import foundation-core.equivalences open import foundation-core.function-types ``` @@ -196,3 +198,66 @@ module _ coherence-htpy-triangle-maps L R T = c ∙h horizontal-concat-htpy T R ~ L ∙h c' ``` + +### Pasting commuting triangles into commuting squares along homotopic diagonals + +Two [commuting triangles](foundation-core.commuting-triangles-of-maps.md) + +```text + A A --> X + | \ \ | + | \ H L K \ | + | \ \ | + ∨ ∨ ∨ ∨ + B --> Y Y +``` + +with a [homotopic](foundation-core.homotopies.md) diagonal may be pasted into a +[commuting square](foundation-core.commuting-squares-of-maps.md) + +```text + A -----> X + | | + | | + ∨ ∨ + B -----> Y. +``` + +```agda +module _ + {l1 l2 l3 l4 : Level} {A : UU l1} {B : UU l2} {X : UU l3} {Y : UU l4} + (top : A → X) (left : A → B) (right : X → Y) (bottom : B → Y) + where + + horizontal-pasting-htpy-coherence-triangle-maps : + {diagonal-left diagonal-right : A → Y} → + diagonal-left ~ diagonal-right → + coherence-triangle-maps' diagonal-left bottom left → + coherence-triangle-maps diagonal-right right top → + coherence-square-maps top left right bottom + horizontal-pasting-htpy-coherence-triangle-maps L H K = (H ∙h L) ∙h K + + horizontal-pasting-htpy-coherence-triangle-maps' : + {diagonal-left diagonal-right : A → Y} → + diagonal-left ~ diagonal-right → + coherence-triangle-maps' diagonal-left bottom left → + coherence-triangle-maps diagonal-right right top → + coherence-square-maps top left right bottom + horizontal-pasting-htpy-coherence-triangle-maps' L H K = H ∙h (L ∙h K) + + horizontal-pasting-coherence-triangle-maps : + (diagonal : A → Y) → + coherence-triangle-maps' diagonal bottom left → + coherence-triangle-maps diagonal right top → + coherence-square-maps top left right bottom + horizontal-pasting-coherence-triangle-maps diagonal H K = H ∙h K + + compute-refl-htpy-horizontal-pasting-coherence-triangle-maps : + (diagonal : A → Y) → + (H : coherence-triangle-maps' diagonal bottom left) → + (K : coherence-triangle-maps diagonal right top) → + (horizontal-pasting-htpy-coherence-triangle-maps refl-htpy H K) ~ + (horizontal-pasting-coherence-triangle-maps diagonal H K) + compute-refl-htpy-horizontal-pasting-coherence-triangle-maps diagonal H K x = + right-whisker-concat right-unit (K x) +``` diff --git a/src/synthetic-homotopy-theory/dependent-cocones-under-spans.lagda.md b/src/synthetic-homotopy-theory/dependent-cocones-under-spans.lagda.md index b7cb6575fc..9d8e684cbb 100644 --- a/src/synthetic-homotopy-theory/dependent-cocones-under-spans.lagda.md +++ b/src/synthetic-homotopy-theory/dependent-cocones-under-spans.lagda.md @@ -173,11 +173,11 @@ module _ vertical-htpy-eq-dependent-cocone = pr1 (pr2 (htpy-eq-dependent-cocone d' p)) - coherence-square-homotopies-eq-dependent-cocone : + coherence-square-htpy-eq-dependent-cocone : coherence-htpy-dependent-cocone d' ( horizontal-htpy-eq-dependent-cocone) ( vertical-htpy-eq-dependent-cocone) - coherence-square-homotopies-eq-dependent-cocone = + coherence-square-htpy-eq-dependent-cocone = pr2 (pr2 (htpy-eq-dependent-cocone d' p)) abstract diff --git a/src/synthetic-homotopy-theory/dependent-universal-property-pushouts.lagda.md b/src/synthetic-homotopy-theory/dependent-universal-property-pushouts.lagda.md index 470d587bfe..23a340bb74 100644 --- a/src/synthetic-homotopy-theory/dependent-universal-property-pushouts.lagda.md +++ b/src/synthetic-homotopy-theory/dependent-universal-property-pushouts.lagda.md @@ -120,7 +120,7 @@ htpy-eq-dependent-cocone-map f g c ind-c {P} h h' p = ( dependent-cocone-map f g c P h') ( p) ( g s)) - ( coherence-square-homotopies-eq-dependent-cocone f g c P + ( coherence-square-htpy-eq-dependent-cocone f g c P ( dependent-cocone-map f g c P h) ( dependent-cocone-map f g c P h') ( p) From fcc1b54333bb37af363e851c3fd8b72d9cc80797 Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Mon, 5 Feb 2024 17:43:13 +0100 Subject: [PATCH 116/150] addressing final comments --- .../commuting-squares-of-homotopies.lagda.md | 7 +++++-- src/foundation-core/commuting-squares-of-maps.lagda.md | 3 ++- src/foundation/commuting-squares-of-homotopies.lagda.md | 7 +++++-- 3 files changed, 12 insertions(+), 5 deletions(-) diff --git a/src/foundation-core/commuting-squares-of-homotopies.lagda.md b/src/foundation-core/commuting-squares-of-homotopies.lagda.md index 1aa30e7fd5..110ae19b87 100644 --- a/src/foundation-core/commuting-squares-of-homotopies.lagda.md +++ b/src/foundation-core/commuting-squares-of-homotopies.lagda.md @@ -29,8 +29,11 @@ A square of [homotopies](foundation-core.homotopies.md) bottom ``` -is said to **commute** if there is a homotopy `left ∙h bottom ~ top ∙h right `. -Such a homotopy is called a **coherence** of the square. +is said to be a {{#concept "commuting sqsuare" Disambiguation="homotopies"}} of +homotopies if there is a homotopy `left ∙h bottom ~ top ∙h right `. Such a +homotopy is called a +{{#concept "coherence" Disambiguation="commuting square of homotopies" Agda=coherence-square-homotopies}} +of the square. ## Definition diff --git a/src/foundation-core/commuting-squares-of-maps.lagda.md b/src/foundation-core/commuting-squares-of-maps.lagda.md index 4526dc8c74..83083f70cb 100644 --- a/src/foundation-core/commuting-squares-of-maps.lagda.md +++ b/src/foundation-core/commuting-squares-of-maps.lagda.md @@ -35,7 +35,8 @@ A square of maps bottom ``` -is said to **commute** if there is a homotopy +is said to be a {{#concept "commuting square" Disambiguation="maps"}} of maps if +there is a [homotopy](foundation-core.homotopies.md) ```text bottom ∘ left ~ right ∘ top. diff --git a/src/foundation/commuting-squares-of-homotopies.lagda.md b/src/foundation/commuting-squares-of-homotopies.lagda.md index bb632065b7..4d81b66678 100644 --- a/src/foundation/commuting-squares-of-homotopies.lagda.md +++ b/src/foundation/commuting-squares-of-homotopies.lagda.md @@ -34,8 +34,11 @@ A square of [homotopies](foundation-core.homotopies.md) bottom ``` -is said to **commute** if there is a homotopy `left ∙h bottom ~ top ∙h right `. -Such a homotopy is called a **coherence** of the square. +is said to be a {{#concept "commuting sqsuare" Disambiguation="homotopies"}} of +homotopies if there is a homotopy `left ∙h bottom ~ top ∙h right `. Such a +homotopy is called a +{{#concept "coherence" Disambiguation="commuting square of homotopies" Agda=coherence-square-homotopies}} +of the square. ### Right whiskering a commuting square of homotopies with respect to concatenation of homotopies From e256ef56e715b75471634d9b7d2638a03e2e3907 Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Mon, 5 Feb 2024 17:45:59 +0100 Subject: [PATCH 117/150] add new file to table --- tables/identity-types.md | 1 + 1 file changed, 1 insertion(+) diff --git a/tables/identity-types.md b/tables/identity-types.md index 50f5794da1..9ed6a3dc86 100644 --- a/tables/identity-types.md +++ b/tables/identity-types.md @@ -23,6 +23,7 @@ | Transport along higher identifications | [`foundation.transport-along-higher-identifications`](foundation.transport-along-higher-identifications.md) | | Transport along identifications (foundation) | [`foundation.transport-along-identifications`](foundation.transport-along-identifications.md) | | Transport along identifications (foundation-core) | [`foundation-core.transport-along-identifications`](foundation-core.transport-along-identifications.md) | +| Transposition of identifications along equivalences | [`foundation.transposition-identifications-along-equivalences`](foundation.transposition-identifications-along-equivalences.md) | | The universal property of identity systems | [`foundation.universal-property-identity-systems`](foundation.universal-property-identity-systems.md) | | The universal property of identity types | [`foundation.universal-property-identity-types`](foundation.universal-property-identity-types.md) | | Whiskering identifications | [`foundation.whiskering-identifications-concatenation`](foundation.whiskering-identifications-concatenation.md) | From bb061ee0349061e8ddf74691f93418d1a2cdea7d Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Mon, 5 Feb 2024 17:52:07 +0100 Subject: [PATCH 118/150] fix misspelled Agda names in concept macros --- .../whiskering-identifications-concatenation.lagda.md | 4 ++-- src/foundation/whiskering-operations.lagda.md | 9 +++++---- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/src/foundation/whiskering-identifications-concatenation.lagda.md b/src/foundation/whiskering-identifications-concatenation.lagda.md index 8e19547236..2f39e7faec 100644 --- a/src/foundation/whiskering-identifications-concatenation.lagda.md +++ b/src/foundation/whiskering-identifications-concatenation.lagda.md @@ -28,10 +28,10 @@ identifications `p = q` to identifications `r ∙ p = r ∙ q` or to identifications `p ∙ r = q ∙ r`. The -{{#concept "left whiskering" Disambiguation="identifcations" Agda=left-whisker-concat"}} +{{#concept "left whiskering" Disambiguation="identifcations" 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"}} +{{#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`. diff --git a/src/foundation/whiskering-operations.lagda.md b/src/foundation/whiskering-operations.lagda.md index 991896c30d..8ead624e9d 100644 --- a/src/foundation/whiskering-operations.lagda.md +++ b/src/foundation/whiskering-operations.lagda.md @@ -23,15 +23,16 @@ Consider a type `A` with a [binary relation](foundation.binary-relations.md) Furthermore, assume that each `R x y` comes equipped with a further binary relation `E : R x y → R x y → 𝒰`. A -{{#concept "left whiskering operation" Agda=whiskering}} on `E` with respect to -`μ` is an operation +{{#concept "left whiskering operation" Agda=left-whiskering-operation}} on `E` +with respect to `μ` is an operation ```text (f : R x y) {g h : R y z} → E g h → E (μ f g) (μ f h). ``` -Similarly, a {{#concept "right whiskering operation" Agda=right-whiskering}} on -`E` with respect to `μ` is an operation +Similarly, a +{{#concept "right whiskering operation" Agda=right-whiskering-operation}} on `E` +with respect to `μ` is an operation ```text {g h : R x y} → E g h → (f : R y z) → E (μ g f) (μ h f). From 573d9cf0028e0d0c35595a09df2a68e34067e241 Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Mon, 5 Feb 2024 20:15:07 +0100 Subject: [PATCH 119/150] improve namings of coherence-square-inv-... entries --- .../adjunctions-large-precategories.lagda.md | 2 +- .../commuting-squares-of-maps.lagda.md | 16 ++++++++-------- .../commuting-squares-of-maps.lagda.md | 6 +++--- src/foundation/embeddings.lagda.md | 2 +- src/foundation/equivalences-arrows.lagda.md | 2 +- .../postcomposition-dependent-functions.lagda.md | 2 +- .../precomposition-dependent-functions.lagda.md | 2 +- src/foundation/precomposition-functions.lagda.md | 2 +- .../equivalences-group-actions.lagda.md | 2 +- ...es-types-equipped-with-endomorphisms.lagda.md | 2 +- .../descent-circle-function-types.lagda.md | 2 +- .../equivalences-sequential-diagrams.lagda.md | 2 +- 12 files changed, 21 insertions(+), 21 deletions(-) diff --git a/src/category-theory/adjunctions-large-precategories.lagda.md b/src/category-theory/adjunctions-large-precategories.lagda.md index 814a2d9400..0f3ddc0d82 100644 --- a/src/category-theory/adjunctions-large-precategories.lagda.md +++ b/src/category-theory/adjunctions-large-precategories.lagda.md @@ -160,7 +160,7 @@ module _ ( map-inv-equiv-is-adjoint-pair-Large-Precategory H X2 Y2) naturality-inv-equiv-is-adjoint-pair-Large-Precategory H {X1 = X1} {X2} {Y1} {Y2} f g = - coherence-square-inv-horizontal + coherence-square-maps-inv-equiv-horizontal ( equiv-is-adjoint-pair-Large-Precategory H X1 Y1) ( λ h → comp-hom-Large-Precategory D diff --git a/src/foundation-core/commuting-squares-of-maps.lagda.md b/src/foundation-core/commuting-squares-of-maps.lagda.md index 4526dc8c74..6cd4640564 100644 --- a/src/foundation-core/commuting-squares-of-maps.lagda.md +++ b/src/foundation-core/commuting-squares-of-maps.lagda.md @@ -233,29 +233,29 @@ If the horizontal/vertical maps in a commuting square are both commuting if we invert those equivalences. ```agda -coherence-square-inv-horizontal : +coherence-square-maps-inv-equiv-horizontal : {l1 l2 l3 l4 : Level} {A : UU l1} {B : UU l2} {X : UU l3} {Y : UU l4} (top : A ≃ B) (left : A → X) (right : B → Y) (bottom : X ≃ Y) → coherence-square-maps (map-equiv top) left right (map-equiv bottom) → coherence-square-maps (map-inv-equiv top) right left (map-inv-equiv bottom) -coherence-square-inv-horizontal top left right bottom H b = +coherence-square-maps-inv-equiv-horizontal top left right bottom H b = map-eq-transpose-equiv-inv ( bottom) ( ( ap right (inv (is-section-map-inv-equiv top b))) ∙ ( inv (H (map-inv-equiv top b)))) -coherence-square-inv-vertical : +coherence-square-maps-inv-equiv-vertical : {l1 l2 l3 l4 : Level} {A : UU l1} {B : UU l2} {X : UU l3} {Y : UU l4} (top : A → B) (left : A ≃ X) (right : B ≃ Y) (bottom : X → Y) → coherence-square-maps top (map-equiv left) (map-equiv right) bottom → coherence-square-maps bottom (map-inv-equiv left) (map-inv-equiv right) top -coherence-square-inv-vertical top left right bottom H x = +coherence-square-maps-inv-equiv-vertical top left right bottom H x = map-eq-transpose-equiv ( right) ( ( inv (H (map-inv-equiv left x))) ∙ ( ap bottom (is-section-map-inv-equiv left x))) -coherence-square-inv-all : +coherence-square-maps-inv-equiv : {l1 l2 l3 l4 : Level} {A : UU l1} {B : UU l2} {X : UU l3} {Y : UU l4} (top : A ≃ B) (left : A ≃ X) (right : B ≃ Y) (bottom : X ≃ Y) → coherence-square-maps @@ -268,13 +268,13 @@ coherence-square-inv-all : ( map-inv-equiv right) ( map-inv-equiv left) ( map-inv-equiv top) -coherence-square-inv-all top left right bottom H = - coherence-square-inv-vertical +coherence-square-maps-inv-equiv top left right bottom H = + coherence-square-maps-inv-equiv-vertical ( map-inv-equiv top) ( right) ( left) ( map-inv-equiv bottom) - ( coherence-square-inv-horizontal + ( coherence-square-maps-inv-equiv-horizontal ( top) ( map-equiv left) ( map-equiv right) diff --git a/src/foundation/commuting-squares-of-maps.lagda.md b/src/foundation/commuting-squares-of-maps.lagda.md index c2184a1dab..0f3e030410 100644 --- a/src/foundation/commuting-squares-of-maps.lagda.md +++ b/src/foundation/commuting-squares-of-maps.lagda.md @@ -238,7 +238,7 @@ module _ ( id) ( is-retraction-map-inv-equiv left) ( H) - ( coherence-square-inv-vertical top left right bottom H) + ( coherence-square-maps-inv-equiv-vertical top left right bottom H) ( refl-htpy) ( is-retraction-map-inv-equiv right) left-inverse-law-pasting-vertical-coherence-square-maps H a = @@ -347,7 +347,7 @@ module _ ( id) ( id) ( is-section-map-inv-equiv left) - ( coherence-square-inv-vertical top left right bottom H) + ( coherence-square-maps-inv-equiv-vertical top left right bottom H) ( H) ( refl-htpy) ( is-section-map-inv-equiv right) @@ -358,7 +358,7 @@ module _ ( H (map-inv-equiv left a)) ( ap ( map-equiv right) - ( coherence-square-inv-vertical top left right bottom H a)) + ( coherence-square-maps-inv-equiv-vertical top left right bottom H a)) ( is-section-map-inv-equiv right (bottom a))) ∙ ( left-whisker-concat ( H (map-inv-equiv left a)) diff --git a/src/foundation/embeddings.lagda.md b/src/foundation/embeddings.lagda.md index 49b66be7e3..d705f2df04 100644 --- a/src/foundation/embeddings.lagda.md +++ b/src/foundation/embeddings.lagda.md @@ -407,7 +407,7 @@ module _ ( map-inv-is-equiv K) ( map-inv-is-equiv L) ( top) - ( coherence-square-inv-vertical + ( coherence-square-maps-inv-equiv-vertical ( top) ( left , K) ( right , L) diff --git a/src/foundation/equivalences-arrows.lagda.md b/src/foundation/equivalences-arrows.lagda.md index 1ffc0e07da..e9053d7bc5 100644 --- a/src/foundation/equivalences-arrows.lagda.md +++ b/src/foundation/equivalences-arrows.lagda.md @@ -218,7 +218,7 @@ module _ ( equiv-domain-inv-equiv-arrow) ( equiv-codomain-inv-equiv-arrow) coh-inv-equiv-arrow = - coherence-square-inv-horizontal + coherence-square-maps-inv-equiv-horizontal ( equiv-domain-equiv-arrow f g α) ( f) ( g) diff --git a/src/foundation/postcomposition-dependent-functions.lagda.md b/src/foundation/postcomposition-dependent-functions.lagda.md index d9327451ec..2b3c5745ea 100644 --- a/src/foundation/postcomposition-dependent-functions.lagda.md +++ b/src/foundation/postcomposition-dependent-functions.lagda.md @@ -106,7 +106,7 @@ coherence-square-eq-htpy-ap-postcomp-Π : ( eq-htpy) ( ap (postcomp-Π A f) {x = g} {y = h}) coherence-square-eq-htpy-ap-postcomp-Π {A = A} f g h = - coherence-square-inv-vertical + coherence-square-maps-inv-equiv-vertical ( ap (postcomp-Π A f) {x = g} {y = h}) ( equiv-funext) ( equiv-funext) diff --git a/src/foundation/precomposition-dependent-functions.lagda.md b/src/foundation/precomposition-dependent-functions.lagda.md index f7a5b4dca0..fde045d1c3 100644 --- a/src/foundation/precomposition-dependent-functions.lagda.md +++ b/src/foundation/precomposition-dependent-functions.lagda.md @@ -97,7 +97,7 @@ coherence-square-eq-htpy-ap-precomp-Π : ( eq-htpy) ( ap (precomp-Π f C) {g} {h}) coherence-square-eq-htpy-ap-precomp-Π f {C = C} g h = - coherence-square-inv-vertical + coherence-square-maps-inv-equiv-vertical ( ap (precomp-Π f C)) ( equiv-funext) ( equiv-funext) diff --git a/src/foundation/precomposition-functions.lagda.md b/src/foundation/precomposition-functions.lagda.md index e680cf71d9..bab525c920 100644 --- a/src/foundation/precomposition-functions.lagda.md +++ b/src/foundation/precomposition-functions.lagda.md @@ -231,7 +231,7 @@ coherence-square-eq-htpy-ap-precomp : ( eq-htpy) ( ap (precomp f C)) coherence-square-eq-htpy-ap-precomp {C = C} f g h = - coherence-square-inv-vertical + coherence-square-maps-inv-equiv-vertical ( ap (precomp f C)) ( equiv-funext) ( equiv-funext) diff --git a/src/group-theory/equivalences-group-actions.lagda.md b/src/group-theory/equivalences-group-actions.lagda.md index f6b2dfe99a..87c300fea4 100644 --- a/src/group-theory/equivalences-group-actions.lagda.md +++ b/src/group-theory/equivalences-group-actions.lagda.md @@ -199,7 +199,7 @@ module _ (e : equiv-action-Group G X Y) → preserves-action-Group G Y X (map-inv-equiv-action-Group e) preserves-action-map-inv-equiv-action-Group (e , H) g = - coherence-square-inv-horizontal + coherence-square-maps-inv-equiv-horizontal ( e) ( mul-action-Group G X g) ( mul-action-Group G Y g) diff --git a/src/structured-types/equivalences-types-equipped-with-endomorphisms.lagda.md b/src/structured-types/equivalences-types-equipped-with-endomorphisms.lagda.md index 290723d095..d5a4a65454 100644 --- a/src/structured-types/equivalences-types-equipped-with-endomorphisms.lagda.md +++ b/src/structured-types/equivalences-types-equipped-with-endomorphisms.lagda.md @@ -158,7 +158,7 @@ inv-equiv-Type-With-Endomorphism : pr1 (inv-equiv-Type-With-Endomorphism X Y e) = inv-equiv (equiv-equiv-Type-With-Endomorphism X Y e) pr2 (inv-equiv-Type-With-Endomorphism X Y e) = - coherence-square-inv-horizontal + coherence-square-maps-inv-equiv-horizontal ( equiv-equiv-Type-With-Endomorphism X Y e) ( endomorphism-Type-With-Endomorphism X) ( endomorphism-Type-With-Endomorphism Y) diff --git a/src/synthetic-homotopy-theory/descent-circle-function-types.lagda.md b/src/synthetic-homotopy-theory/descent-circle-function-types.lagda.md index 422142cf3f..6bf5b5fd8c 100644 --- a/src/synthetic-homotopy-theory/descent-circle-function-types.lagda.md +++ b/src/synthetic-homotopy-theory/descent-circle-function-types.lagda.md @@ -102,7 +102,7 @@ module _ ( horizontal-concat-htpy ( h ·l inv-htpy - ( coherence-square-inv-all + ( coherence-square-maps-inv-equiv ( equiv-family-with-descent-data-circle A) ( aut-family-with-descent-data-circle A) ( equiv-tr diff --git a/src/synthetic-homotopy-theory/equivalences-sequential-diagrams.lagda.md b/src/synthetic-homotopy-theory/equivalences-sequential-diagrams.lagda.md index c7695ac65f..d399a7affc 100644 --- a/src/synthetic-homotopy-theory/equivalences-sequential-diagrams.lagda.md +++ b/src/synthetic-homotopy-theory/equivalences-sequential-diagrams.lagda.md @@ -140,7 +140,7 @@ module _ pr1 inv-equiv-sequential-diagram n = inv-equiv (equiv-equiv-sequential-diagram B e n) pr2 inv-equiv-sequential-diagram n = - coherence-square-inv-vertical + coherence-square-maps-inv-equiv-vertical ( map-sequential-diagram A n) ( equiv-equiv-sequential-diagram B e n) ( equiv-equiv-sequential-diagram B e (succ-ℕ n)) From 9cf3706bbc24af5ae7313ce489bc9d7932dbe69a Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Mon, 5 Feb 2024 20:16:07 +0100 Subject: [PATCH 120/150] make pre-commit --- src/foundation/commuting-squares-of-maps.lagda.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/foundation/commuting-squares-of-maps.lagda.md b/src/foundation/commuting-squares-of-maps.lagda.md index 0f3e030410..067b8cf7f0 100644 --- a/src/foundation/commuting-squares-of-maps.lagda.md +++ b/src/foundation/commuting-squares-of-maps.lagda.md @@ -358,7 +358,9 @@ module _ ( H (map-inv-equiv left a)) ( ap ( map-equiv right) - ( coherence-square-maps-inv-equiv-vertical top left right bottom H a)) + ( coherence-square-maps-inv-equiv-vertical top left right bottom + ( H) + ( a))) ( is-section-map-inv-equiv right (bottom a))) ∙ ( left-whisker-concat ( H (map-inv-equiv left a)) From 8988a6eef0acaf06bd66d31759af53c0477a1683 Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Mon, 5 Feb 2024 22:41:39 +0100 Subject: [PATCH 121/150] typos --- src/foundation-core/commuting-squares-of-homotopies.lagda.md | 2 +- src/foundation/commuting-squares-of-homotopies.lagda.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/foundation-core/commuting-squares-of-homotopies.lagda.md b/src/foundation-core/commuting-squares-of-homotopies.lagda.md index 110ae19b87..c2f0f32b85 100644 --- a/src/foundation-core/commuting-squares-of-homotopies.lagda.md +++ b/src/foundation-core/commuting-squares-of-homotopies.lagda.md @@ -29,7 +29,7 @@ A square of [homotopies](foundation-core.homotopies.md) bottom ``` -is said to be a {{#concept "commuting sqsuare" Disambiguation="homotopies"}} of +is said to be a {{#concept "commuting square" Disambiguation="homotopies"}} of homotopies if there is a homotopy `left ∙h bottom ~ top ∙h right `. Such a homotopy is called a {{#concept "coherence" Disambiguation="commuting square of homotopies" Agda=coherence-square-homotopies}} diff --git a/src/foundation/commuting-squares-of-homotopies.lagda.md b/src/foundation/commuting-squares-of-homotopies.lagda.md index 4d81b66678..661c93e5c5 100644 --- a/src/foundation/commuting-squares-of-homotopies.lagda.md +++ b/src/foundation/commuting-squares-of-homotopies.lagda.md @@ -34,7 +34,7 @@ A square of [homotopies](foundation-core.homotopies.md) bottom ``` -is said to be a {{#concept "commuting sqsuare" Disambiguation="homotopies"}} of +is said to be a {{#concept "commuting square" Disambiguation="homotopies"}} of homotopies if there is a homotopy `left ∙h bottom ~ top ∙h right `. Such a homotopy is called a {{#concept "coherence" Disambiguation="commuting square of homotopies" Agda=coherence-square-homotopies}} From 4db0da65a774ac6a4b2854a4d4b8a4d96cf80c91 Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Mon, 5 Feb 2024 22:52:31 +0100 Subject: [PATCH 122/150] non- to non --- FILE-CONVENTIONS.md | 10 +++++----- MIXFIX-OPERATORS.md | 10 +++++----- book.toml | 2 +- flake.nix | 2 +- scripts/even_indentation_conventions.py | 2 +- ...tion-operations-on-binary-families-of-sets.lagda.md | 2 +- src/category-theory/nonunital-precategories.lagda.md | 2 +- src/category-theory/precategories.lagda.md | 2 +- src/category-theory/set-magmoids.lagda.md | 2 +- src/category-theory/simplex-category.lagda.md | 2 +- src/commutative-algebra/euclidean-domains.lagda.md | 2 +- .../local-commutative-rings.lagda.md | 5 ++--- .../bezouts-lemma-natural-numbers.lagda.md | 2 +- .../fundamental-theorem-of-arithmetic.lagda.md | 10 +++++----- .../universal-property-integers.lagda.md | 2 +- src/foundation/noncontractible-types.lagda.md | 2 +- src/foundation/path-algebra.lagda.md | 2 +- src/foundation/type-arithmetic-unit-type.lagda.md | 2 +- src/reflection/fixity.lagda.md | 6 +++--- src/ring-theory/local-rings.lagda.md | 4 ++-- src/structured-types/h-spaces.lagda.md | 2 +- src/structured-types/noncoherent-h-spaces.lagda.md | 5 ++--- .../dependent-pullback-property-pushouts.lagda.md | 2 +- .../dependent-universal-property-pushouts.lagda.md | 2 +- ...ent-universal-property-sequential-colimits.lagda.md | 2 +- 25 files changed, 42 insertions(+), 44 deletions(-) diff --git a/FILE-CONVENTIONS.md b/FILE-CONVENTIONS.md index 3a4100eb0a..54e97c9bf2 100644 --- a/FILE-CONVENTIONS.md +++ b/FILE-CONVENTIONS.md @@ -59,10 +59,10 @@ open import ... public ### Imports block -After the module declaration, include an Agda code block of all non-public -module imports starting with `
Imports` and ending -with `
`. This block should only contain module imports and there -should have no further import statements after it. In the rendered markdown, the +After the module declaration, include an Agda code block of all nonpublic module +imports starting with `
Imports` and ending with +`
`. This block should only contain module imports and there should +have no further import statements after it. In the rendered markdown, the contents of this block will be hidden by default, but can be revealed by clicking on _Imports_. @@ -160,7 +160,7 @@ contents of the file. `[The univalence axiom](foundation.univalence.md)`, which will be displayed as [The univalence axiom](foundation.univalence.md). - You can reference another module by module name using - ``[`foundation.univalence`](foundation.univalence.md)``, which will be + `` [`foundation.univalence`](foundation.univalence.md) ``, which will be displayed as [`foundation.univalence`](foundation.univalence.md). - If you just want to add a clickable link, use the pattern ``. This will be displayed as diff --git a/MIXFIX-OPERATORS.md b/MIXFIX-OPERATORS.md index 062281d9f7..799b3c1866 100644 --- a/MIXFIX-OPERATORS.md +++ b/MIXFIX-OPERATORS.md @@ -18,7 +18,7 @@ accepted notation for widely used operators. Mixfix operators can each be assigned a [precedence level](https://agda.readthedocs.io/en/latest/language/mixfix-operators.html#precedence). This can in principle be any signed fractional value, although we prefer them to -be non-negative integral values. The higher this value is, the higher precedence +be nonnegative integral values. The higher this value is, the higher precedence the operator has, meaning it is evaluated before operators with lower precedence. By default in Agda, an operator is assigned a precedence level of `20`. @@ -47,7 +47,7 @@ By default, an operator does not associate to either side. We divide the different operators into broad classes, each assigned a range of possible precedence levels. In broad terms, we discern between _parametric_ and -_non-parametric_ operators. The general rule is that non-parametric operator has +_nonparametric_ operators. The general rule is that nonparametric operator has higher precedence than parametric operators. Parametric operators are operators that take a universe level as one of their arguments. We consider an operator to be parametric even if it only takes a universe level as an implicit argument. @@ -55,7 +55,7 @@ Examples are the [cartesian product type former`_×_`](foundation-core.cartesian-product-types.md), the [identity type former `_=_`](foundation-core.identity-types.md), and the [pairing operator `_,_`](foundation.dependent-pair-types.md). Examples of -non-parametric operators are +nonparametric operators are [difference of integers `_-ℤ_`](elementary-number-theory.difference-integers.md), [strict inequality on natural numbers `_<-ℕ_`](elementary-number-theory.strict-inequality-natural-numbers.md), and @@ -129,7 +129,7 @@ Below, we outline a list of general rules when assigning associativities. to right. For instance, the expression `1 - 2 - 3` is computed as `(1 - 2) - 3 = -1 - 3 = -4`, hence should be _left associative_. This applies to addition, subtraction, multiplication, and division. Note that for - non-parametric exponentiation, we compute from right to left. I.e. `2 ^ 3 ^ 4` + nonparametric exponentiation, we compute from right to left. I.e. `2 ^ 3 ^ 4` should compute as `2 ^ (3 ^ 4)`. Hence it will usually be _right associative_. - **Arithmetic type formers** such as @@ -165,7 +165,7 @@ Below, we outline a list of general rules when assigning associativities. | Precedence level | Operators | | ---------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| 50 | Unary non-parametric operators. This class is currently empty | +| 50 | Unary nonparametric operators. This class is currently empty | | 45 | Exponentiative arithmetic operators | | 40 | Multiplicative arithmetic operators | | 36 | Subtractive arithmetic operators | diff --git a/book.toml b/book.toml index 1e015f5516..4ed9b191ee 100644 --- a/book.toml +++ b/book.toml @@ -26,7 +26,7 @@ assets_version = "1.2.0" # DO NOT EDIT: Managed by `mdbook-catppuccin install` [preprocessor.git-metadata] command = "python3 ./scripts/preprocessor_git_metadata.py" -# Disable by default - it takes a non-trivial amount of time +# Disable by default - it takes a nontrivial amount of time # Can be overriden by running # `export MDBOOK_PREPROCESSOR__GIT_METADATA__ENABLE=true` in your shell enable = false diff --git a/flake.nix b/flake.nix index 7ae3597968..4a0d2cbec8 100644 --- a/flake.nix +++ b/flake.nix @@ -38,7 +38,7 @@ # We can reference the directory since we're using flakes, # which copies the version-tracked files into the nix store # before evaluation, # so we don't run into the issue with - # non-reproducible source paths as outlined here: + # nonreproducible source paths as outlined here: # https://nix.dev/recipes/best-practices#reproducible-source-paths src = ./.; diff --git a/scripts/even_indentation_conventions.py b/scripts/even_indentation_conventions.py index 0eda401da2..c31f1bbb82 100755 --- a/scripts/even_indentation_conventions.py +++ b/scripts/even_indentation_conventions.py @@ -67,6 +67,6 @@ def is_even_indentation(line): print(*map(lambda kv: f' {kv[0]}: {kv[1]} lines', sorted(offender_files.items(), key=lambda kv: kv[1])), sep='\n') print( - f'\nTotal number of lines in library unevenly indented: {sum(offender_files.values())}.\n\nUneven indentation means that there is code indented by a non-multiple of the base indentation (2 spaces). If you haven\'t already, we suggest you set up your environment to more easily spot uneven indentation. For instance using VSCode\'s indent-rainbow extension.') + f'\nTotal number of lines in library unevenly indented: {sum(offender_files.values())}.\n\nUneven indentation means that there is code indented by a nonmultiple of the base indentation (2 spaces). If you haven\'t already, we suggest you set up your environment to more easily spot uneven indentation. For instance using VSCode\'s indent-rainbow extension.') sys.exit(status) diff --git a/src/category-theory/composition-operations-on-binary-families-of-sets.lagda.md b/src/category-theory/composition-operations-on-binary-families-of-sets.lagda.md index 585dd07e3b..e97ed44a25 100644 --- a/src/category-theory/composition-operations-on-binary-families-of-sets.lagda.md +++ b/src/category-theory/composition-operations-on-binary-families-of-sets.lagda.md @@ -52,7 +52,7 @@ module _ ### Associative composition operations in binary families of sets -We give a slightly non-standard definition of associativity, requiring an +We give a slightly nonstandard definition of associativity, requiring an associativity witness in each direction. This is of course redundant as `inv` is a [fibered involution](foundation.fibered-involutions.md) on [identity types](foundation-core.identity-types.md). However, by recording both diff --git a/src/category-theory/nonunital-precategories.lagda.md b/src/category-theory/nonunital-precategories.lagda.md index 0a7cbeedfe..21f5ae93c3 100644 --- a/src/category-theory/nonunital-precategories.lagda.md +++ b/src/category-theory/nonunital-precategories.lagda.md @@ -196,7 +196,7 @@ module _ ## Properties -### If the objects of a nonunital precategory are `k`-truncated for non-negative `k`, the total hom-type is `k`-truncated +### If the objects of a nonunital precategory are `k`-truncated for nonnegative `k`, the total hom-type is `k`-truncated ```agda module _ diff --git a/src/category-theory/precategories.lagda.md b/src/category-theory/precategories.lagda.md index 6065725129..dd3c5ad4b6 100644 --- a/src/category-theory/precategories.lagda.md +++ b/src/category-theory/precategories.lagda.md @@ -248,7 +248,7 @@ module _ ## Properties -### If the objects of a precategory are `k`-truncated for non-negative `k`, the total hom-type is `k`-truncated +### If the objects of a precategory are `k`-truncated for nonnegative `k`, the total hom-type is `k`-truncated ```agda module _ diff --git a/src/category-theory/set-magmoids.lagda.md b/src/category-theory/set-magmoids.lagda.md index 9df9296483..ec501dc223 100644 --- a/src/category-theory/set-magmoids.lagda.md +++ b/src/category-theory/set-magmoids.lagda.md @@ -189,7 +189,7 @@ module _ ## Properties -### If the objects of a set-magmoid are `k`-truncated for non-negative `k`, the total hom-type is `k`-truncated +### If the objects of a set-magmoid are `k`-truncated for nonnegative `k`, the total hom-type is `k`-truncated ```agda module _ diff --git a/src/category-theory/simplex-category.lagda.md b/src/category-theory/simplex-category.lagda.md index b9f3d0ed05..f152fd4a2b 100644 --- a/src/category-theory/simplex-category.lagda.md +++ b/src/category-theory/simplex-category.lagda.md @@ -162,6 +162,6 @@ This remains to be formalized. This remains to be formalized. -### There is a unique non-trivial involution on the simplex category +### There is a unique nontrivial involution on the simplex category This remains to be formalized. diff --git a/src/commutative-algebra/euclidean-domains.lagda.md b/src/commutative-algebra/euclidean-domains.lagda.md index 120bd95594..46a30f31a1 100644 --- a/src/commutative-algebra/euclidean-domains.lagda.md +++ b/src/commutative-algebra/euclidean-domains.lagda.md @@ -55,7 +55,7 @@ open import ring-theory.semirings A **Euclidean domain** is an [integral domain](commutative-algebra.integral-domains.md) `R` that has a **Euclidean valuation**, i.e., a function `v : R → ℕ` such that for every -`x y : R`, if `y` is non-zero then there are `q r : R` with `x = q y + r` and +`x y : R`, if `y` is nonzero then there are `q r : R` with `x = q y + r` and `v r < v y`. ## Definition diff --git a/src/commutative-algebra/local-commutative-rings.lagda.md b/src/commutative-algebra/local-commutative-rings.lagda.md index a363383637..9de71b60fc 100644 --- a/src/commutative-algebra/local-commutative-rings.lagda.md +++ b/src/commutative-algebra/local-commutative-rings.lagda.md @@ -23,10 +23,9 @@ open import ring-theory.rings ## Idea A **local ring** is a ring such that whenever a sum of elements is invertible, -then one of its summands is invertible. This implies that the non-invertible +then one of its summands is invertible. This implies that the noninvertible elements form an ideal. However, the law of excluded middle is needed to show -that any ring of which the non-invertible elements form an ideal is a local -ring. +that any ring of which the noninvertible elements form an ideal is a local ring. ## Definition diff --git a/src/elementary-number-theory/bezouts-lemma-natural-numbers.lagda.md b/src/elementary-number-theory/bezouts-lemma-natural-numbers.lagda.md index ad127678d2..9c2a48c777 100755 --- a/src/elementary-number-theory/bezouts-lemma-natural-numbers.lagda.md +++ b/src/elementary-number-theory/bezouts-lemma-natural-numbers.lagda.md @@ -282,7 +282,7 @@ If `x = 0`, then we can simply argue in `ℤ`. Otherwise, if `[y] | [z]` in `x > u ≥ 0`. Therefore, there exists some integer `a ≥ 0` such that `ax = uy - z`, or `ax = z - uy`. In the first case, we can extract the distance condition we desire. In the other case, we have that `ax + uy = z`. This can be -written as `(a + y)x + (u - x)y = z`, so that the second term is non-positive. +written as `(a + y)x + (u - x)y = z`, so that the second term is nonpositive. Then, in this case, we again can extract the distance condition we desire. ```agda diff --git a/src/elementary-number-theory/fundamental-theorem-of-arithmetic.lagda.md b/src/elementary-number-theory/fundamental-theorem-of-arithmetic.lagda.md index 1788b0f6b9..c041e34eb4 100644 --- a/src/elementary-number-theory/fundamental-theorem-of-arithmetic.lagda.md +++ b/src/elementary-number-theory/fundamental-theorem-of-arithmetic.lagda.md @@ -176,7 +176,7 @@ pr1 (is-nontrivial-divisor-diagonal-ℕ n H) = H pr2 (is-nontrivial-divisor-diagonal-ℕ n H) = refl-div-ℕ n ``` -If `l` is a prime decomposition of `n`, then `l` is a list of non-trivial +If `l` is a prime decomposition of `n`, then `l` is a list of nontrivial divisors of `n`. ```agda @@ -701,11 +701,11 @@ pr1 (prime-decomposition-fundamental-theorem-arithmetic-list-ℕ x H) = pr2 (prime-decomposition-fundamental-theorem-arithmetic-list-ℕ x H) = is-prime-decomposition-list-fundamental-theorem-arithmetic-ℕ x H -le-one-is-non-empty-prime-decomposition-list-ℕ : +le-one-is-nonempty-prime-decomposition-list-ℕ : (x : ℕ) (H : leq-ℕ 1 x) (y : ℕ) (l : list ℕ) → is-prime-decomposition-list-ℕ x (cons y l) → le-ℕ 1 x -le-one-is-non-empty-prime-decomposition-list-ℕ x H y l D = +le-one-is-nonempty-prime-decomposition-list-ℕ x H y l D = concatenate-le-leq-ℕ {x = 1} {y = y} @@ -861,7 +861,7 @@ eq-prime-decomposition-list-ℕ x H (cons y l) nil I J = ( contradiction-le-ℕ ( 1) ( x) - ( le-one-is-non-empty-prime-decomposition-list-ℕ x H y l I) + ( le-one-is-nonempty-prime-decomposition-list-ℕ x H y l I) ( leq-eq-ℕ ( x) ( 1) @@ -871,7 +871,7 @@ eq-prime-decomposition-list-ℕ x H nil (cons y l) I J = ( contradiction-le-ℕ ( 1) ( x) - ( le-one-is-non-empty-prime-decomposition-list-ℕ x H y l J) + ( le-one-is-nonempty-prime-decomposition-list-ℕ x H y l J) ( leq-eq-ℕ ( x) ( 1) diff --git a/src/elementary-number-theory/universal-property-integers.lagda.md b/src/elementary-number-theory/universal-property-integers.lagda.md index a8689cf3e8..2d36403b4e 100644 --- a/src/elementary-number-theory/universal-property-integers.lagda.md +++ b/src/elementary-number-theory/universal-property-integers.lagda.md @@ -216,7 +216,7 @@ abstract ### The universal property of the integers -The non-dependent universal property of the integers is a special case of the +The nondependent universal property of the integers is a special case of the dependent universal property applied to constant type families. ```agda diff --git a/src/foundation/noncontractible-types.lagda.md b/src/foundation/noncontractible-types.lagda.md index 081cf913a9..e6260a2949 100644 --- a/src/foundation/noncontractible-types.lagda.md +++ b/src/foundation/noncontractible-types.lagda.md @@ -23,7 +23,7 @@ open import foundation-core.negation ## Idea -A type `X` is non-contractible if it comes equipped with an element of type +A type `X` is noncontractible if it comes equipped with an element of type `¬ (is-contr X)`. ## Definitions diff --git a/src/foundation/path-algebra.lagda.md b/src/foundation/path-algebra.lagda.md index 66ffb355a8..bce83ad20a 100644 --- a/src/foundation/path-algebra.lagda.md +++ b/src/foundation/path-algebra.lagda.md @@ -430,7 +430,7 @@ interchange-y-z-concat-Id³ refl refl refl refl = inv right-unit ## Properties of 4-paths The pattern for concatenation of 1, 2, and 3-paths continues. There are four -ways to concatenate in quadruple identity types. We name the three non-standard +ways to concatenate in quadruple identity types. We name the three nonstandard concatenations in quadruple identity types `i`-, `j`-, and `k`-concatenation, after the standard names for the quaternions `i`, `j`, and `k`. diff --git a/src/foundation/type-arithmetic-unit-type.lagda.md b/src/foundation/type-arithmetic-unit-type.lagda.md index 767358fec4..53b8f8f91e 100644 --- a/src/foundation/type-arithmetic-unit-type.lagda.md +++ b/src/foundation/type-arithmetic-unit-type.lagda.md @@ -191,7 +191,7 @@ module _ pr2 inv-left-unit-law-Π = is-equiv-map-inv-left-unit-law-Π ``` -### Left unit law for non-dependent function types +### Left unit law for nondependent function types ```agda module _ diff --git a/src/reflection/fixity.lagda.md b/src/reflection/fixity.lagda.md index 8bfe8e7b05..06b66421c0 100644 --- a/src/reflection/fixity.lagda.md +++ b/src/reflection/fixity.lagda.md @@ -33,7 +33,7 @@ The fixity of a quoted name is given by data Associativity : UU lzero where left-associative : Associativity right-associative : Associativity - non-associative : Associativity + nonassociative : Associativity data Precedence : UU lzero where related : Float → Precedence @@ -45,7 +45,7 @@ data Fixity : UU lzero where {-# BUILTIN ASSOC Associativity #-} {-# BUILTIN ASSOCLEFT left-associative #-} {-# BUILTIN ASSOCRIGHT right-associative #-} -{-# BUILTIN ASSOCNON non-associative #-} +{-# BUILTIN ASSOCNON nonassociative #-} {-# BUILTIN PRECEDENCE Precedence #-} {-# BUILTIN PRECRELATED related #-} @@ -61,7 +61,7 @@ primitive ## Examples ```agda -_ : primQNameFixity (quote add-ℤ) = fixity non-associative unrelated +_ : primQNameFixity (quote add-ℤ) = fixity nonassociative unrelated _ = refl _ : primQNameFixity (quote (_+ℤ_)) = fixity left-associative (related 35.0) diff --git a/src/ring-theory/local-rings.lagda.md b/src/ring-theory/local-rings.lagda.md index 40d55b32be..6ec65472c7 100644 --- a/src/ring-theory/local-rings.lagda.md +++ b/src/ring-theory/local-rings.lagda.md @@ -22,9 +22,9 @@ open import ring-theory.rings ## Idea A local ring is a ring such that whenever a sum of elements is invertible, then -one of its summands is invertible. This implies that the non-invertible elements +one of its summands is invertible. This implies that the noninvertible elements form an ideal. However, the law of excluded middle is needed to show that any -ring of which the non-invertible elements form an ideal is a local ring. +ring of which the noninvertible elements form an ideal is a local ring. ## Definition diff --git a/src/structured-types/h-spaces.lagda.md b/src/structured-types/h-spaces.lagda.md index d130f688a2..b8ea3f4b30 100644 --- a/src/structured-types/h-spaces.lagda.md +++ b/src/structured-types/h-spaces.lagda.md @@ -138,7 +138,7 @@ module _ ## Properties -### Every non-coherent H-space can be upgraded to a coherent H-space +### Every noncoherent H-space can be upgraded to a coherent H-space ```agda h-space-Noncoherent-H-Space : diff --git a/src/structured-types/noncoherent-h-spaces.lagda.md b/src/structured-types/noncoherent-h-spaces.lagda.md index 4d6c2dcba7..2ae47edd38 100644 --- a/src/structured-types/noncoherent-h-spaces.lagda.md +++ b/src/structured-types/noncoherent-h-spaces.lagda.md @@ -19,9 +19,8 @@ open import structured-types.pointed-types ## Idea -A **non-coherent H-space** is a -[pointed type](structured-types.pointed-types.md) `A` -[equipped](foundation.structure.md) with a binary operation `μ` and +A **noncoherent H-space** is a [pointed type](structured-types.pointed-types.md) +`A` [equipped](foundation.structure.md) with a binary operation `μ` and [homotopies](foundation-core.homotopies.md) `(λ x → μ point x) ~ id` and `λ x → μ x point ~ id`. If `A` is a [connected](foundation.connected-types.md) H-space, then `λ x → μ a x` and `λ x → μ x a` are diff --git a/src/synthetic-homotopy-theory/dependent-pullback-property-pushouts.lagda.md b/src/synthetic-homotopy-theory/dependent-pullback-property-pushouts.lagda.md index 4f78aedc39..68cf4bcbae 100644 --- a/src/synthetic-homotopy-theory/dependent-pullback-property-pushouts.lagda.md +++ b/src/synthetic-homotopy-theory/dependent-pullback-property-pushouts.lagda.md @@ -95,7 +95,7 @@ Consider a [cocone](synthetic-homotopy-theory.cocones-under-spans.md) i ``` -The non-dependent pullback property follows from the dependent one by applying +The nondependent pullback property follows from the dependent one by applying the dependent pullback property to the constant type family `λ _ → Y`. ```agda diff --git a/src/synthetic-homotopy-theory/dependent-universal-property-pushouts.lagda.md b/src/synthetic-homotopy-theory/dependent-universal-property-pushouts.lagda.md index 23a340bb74..93a31c3838 100644 --- a/src/synthetic-homotopy-theory/dependent-universal-property-pushouts.lagda.md +++ b/src/synthetic-homotopy-theory/dependent-universal-property-pushouts.lagda.md @@ -230,7 +230,7 @@ dependent-universal-property-dependent-pullback-property-pushout ( λ h' → funext (λ x → tr P (H x) (h (f x))) (h' ∘ g)))) ``` -### The non-dependent and dependent universal property of pushouts are logically equivalent +### The nondependent and dependent universal property of pushouts are logically equivalent This follows from the fact that the [dependent pullback property of pushouts](synthetic-homotopy-theory.dependent-pullback-property-pushouts.md) diff --git a/src/synthetic-homotopy-theory/dependent-universal-property-sequential-colimits.lagda.md b/src/synthetic-homotopy-theory/dependent-universal-property-sequential-colimits.lagda.md index 382932a5a1..2a32cca259 100644 --- a/src/synthetic-homotopy-theory/dependent-universal-property-sequential-colimits.lagda.md +++ b/src/synthetic-homotopy-theory/dependent-universal-property-sequential-colimits.lagda.md @@ -193,7 +193,7 @@ module _ ( dup-c P) ``` -### The non-dependent and dependent universal properties of sequential colimits are logically equivalent +### The nondependent and dependent universal properties of sequential colimits are logically equivalent ```agda module _ From 3c3158dcf559e7e105fd6897b91129ef98a563fd Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Mon, 5 Feb 2024 23:02:24 +0100 Subject: [PATCH 123/150] suggestions from the review --- FILE-CONVENTIONS.md | 2 +- src/foundation/commuting-triangles-of-maps.lagda.md | 4 ++-- src/foundation/evaluation-functions.lagda.md | 8 ++++---- src/foundation/function-extensionality.lagda.md | 3 ++- 4 files changed, 9 insertions(+), 8 deletions(-) diff --git a/FILE-CONVENTIONS.md b/FILE-CONVENTIONS.md index 54e97c9bf2..b74a828b89 100644 --- a/FILE-CONVENTIONS.md +++ b/FILE-CONVENTIONS.md @@ -160,7 +160,7 @@ contents of the file. `[The univalence axiom](foundation.univalence.md)`, which will be displayed as [The univalence axiom](foundation.univalence.md). - You can reference another module by module name using - `` [`foundation.univalence`](foundation.univalence.md) ``, which will be + ``[`foundation.univalence`](foundation.univalence.md)``, which will be displayed as [`foundation.univalence`](foundation.univalence.md). - If you just want to add a clickable link, use the pattern ``. This will be displayed as diff --git a/src/foundation/commuting-triangles-of-maps.lagda.md b/src/foundation/commuting-triangles-of-maps.lagda.md index 1b711bbe0b..d4163b847b 100644 --- a/src/foundation/commuting-triangles-of-maps.lagda.md +++ b/src/foundation/commuting-triangles-of-maps.lagda.md @@ -256,8 +256,8 @@ module _ (diagonal : A → Y) → (H : coherence-triangle-maps' diagonal bottom left) → (K : coherence-triangle-maps diagonal right top) → - (horizontal-pasting-htpy-coherence-triangle-maps refl-htpy H K) ~ - (horizontal-pasting-coherence-triangle-maps diagonal H K) + horizontal-pasting-htpy-coherence-triangle-maps refl-htpy H K ~ + horizontal-pasting-coherence-triangle-maps diagonal H K compute-refl-htpy-horizontal-pasting-coherence-triangle-maps diagonal H K x = right-whisker-concat right-unit (K x) ``` diff --git a/src/foundation/evaluation-functions.lagda.md b/src/foundation/evaluation-functions.lagda.md index 1a5b43ed34..ecb1e43a77 100644 --- a/src/foundation/evaluation-functions.lagda.md +++ b/src/foundation/evaluation-functions.lagda.md @@ -8,7 +8,6 @@ module foundation.evaluation-functions where ```agda open import foundation.action-on-identifications-functions -open import foundation.function-extensionality open import foundation.universe-levels open import foundation-core.identity-types @@ -73,7 +72,7 @@ module _ ev-implicit-function f = f {a} ``` -### The evaluation function of implicit function, specified with an explicit type family +### The evaluation function of implicit functions, specified with an explicit type family ```agda module _ @@ -97,7 +96,8 @@ For any two functions `f g : A → B`, the action on identifications of is homotopic to the map `p ↦ htpy-eq p a`, where `htpy-eq` is the operation that constructs a homotopy from an identification of functions, which we constructed -in [foundation.function-extensionality. In other words, the triangle of maps +in [Function extensionality](foundation.function-extensionality.md). In other +words, the triangle of maps ```text htpy-eq @@ -110,7 +110,7 @@ in [foundation.function-extensionality. In other words, the triangle of maps [commutes](foundation-core.commuting-triangles-of-maps.md). -```agda +```text module _ {l1 l2 : Level} {A : UU l1} {B : UU l2} (a : A) where diff --git a/src/foundation/function-extensionality.lagda.md b/src/foundation/function-extensionality.lagda.md index 147c0b4b91..8295452507 100644 --- a/src/foundation/function-extensionality.lagda.md +++ b/src/foundation/function-extensionality.lagda.md @@ -10,6 +10,7 @@ module foundation.function-extensionality where open import foundation.action-on-identifications-binary-functions open import foundation.action-on-identifications-functions open import foundation.dependent-pair-types +open import foundation.evaluation-functions open import foundation.implicit-function-types open import foundation.universe-levels open import foundation.whiskering-homotopies-composition @@ -41,7 +42,7 @@ module _ where htpy-eq : {f g : (x : A) → B x} → f = g → f ~ g - htpy-eq refl = refl-htpy + htpy-eq p x = ap (ev x) p ``` ### An instance of function extensionality From 867a349d0ee9992318a75826b56cd58331e969b2 Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Mon, 5 Feb 2024 23:12:03 +0100 Subject: [PATCH 124/150] more review suggestions --- .../whiskering-identifications-concatenation.lagda.md | 2 +- src/structured-types/h-spaces.lagda.md | 7 +++---- ...nitial-pointed-type-equipped-with-automorphism.lagda.md | 2 +- 3 files changed, 5 insertions(+), 6 deletions(-) diff --git a/src/foundation/whiskering-identifications-concatenation.lagda.md b/src/foundation/whiskering-identifications-concatenation.lagda.md index 2f39e7faec..a9c58e8052 100644 --- a/src/foundation/whiskering-identifications-concatenation.lagda.md +++ b/src/foundation/whiskering-identifications-concatenation.lagda.md @@ -28,7 +28,7 @@ identifications `p = q` to identifications `r ∙ p = r ∙ q` or to identifications `p ∙ r = q ∙ r`. The -{{#concept "left whiskering" Disambiguation="identifcations" Agda=left-whisker-concat}} +{{#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}} diff --git a/src/structured-types/h-spaces.lagda.md b/src/structured-types/h-spaces.lagda.md index b8ea3f4b30..28cd269fbc 100644 --- a/src/structured-types/h-spaces.lagda.md +++ b/src/structured-types/h-spaces.lagda.md @@ -179,10 +179,9 @@ compute-pointed-section-ev-point-Pointed-Type (pair A a) = ( λ H → equiv-tot ( λ K → - ( ( ( equiv-inv (K a) (htpy-eq H a)) ∘e - ( equiv-concat' (K a) (ap-ev a H))) ∘e - ( equiv-concat' (K a) right-unit)) ∘e - ( equiv-concat' (K a) right-unit)))))) ∘e + equiv-inv (K a) (htpy-eq H a) ∘e + equiv-concat' (K a) right-unit ∘e + equiv-concat' (K a) right-unit))))) ∘e ( associative-Σ ( A → (A → A)) ( λ μ → μ a = id) diff --git a/src/structured-types/initial-pointed-type-equipped-with-automorphism.lagda.md b/src/structured-types/initial-pointed-type-equipped-with-automorphism.lagda.md index 448aab526d..608b5f0121 100644 --- a/src/structured-types/initial-pointed-type-equipped-with-automorphism.lagda.md +++ b/src/structured-types/initial-pointed-type-equipped-with-automorphism.lagda.md @@ -21,7 +21,7 @@ open import foundation.transposition-identifications-along-equivalences open import foundation.unit-type open import foundation.universe-levels -open import foundation-core.equivalences +open import foundation.equivalences open import structured-types.pointed-types-equipped-with-automorphisms ``` From 292a150d7ec289c4b7f7b9de1980cd1186a73745 Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Mon, 5 Feb 2024 23:12:29 +0100 Subject: [PATCH 125/150] make pre-commit --- .../initial-pointed-type-equipped-with-automorphism.lagda.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/structured-types/initial-pointed-type-equipped-with-automorphism.lagda.md b/src/structured-types/initial-pointed-type-equipped-with-automorphism.lagda.md index 608b5f0121..cab4124961 100644 --- a/src/structured-types/initial-pointed-type-equipped-with-automorphism.lagda.md +++ b/src/structured-types/initial-pointed-type-equipped-with-automorphism.lagda.md @@ -14,6 +14,7 @@ open import foundation.action-on-identifications-functions open import foundation.contractible-types open import foundation.coproduct-types open import foundation.dependent-pair-types +open import foundation.equivalences open import foundation.homotopies open import foundation.identity-types open import foundation.iterating-automorphisms @@ -21,8 +22,6 @@ open import foundation.transposition-identifications-along-equivalences open import foundation.unit-type open import foundation.universe-levels -open import foundation.equivalences - open import structured-types.pointed-types-equipped-with-automorphisms ``` From 1ec2cbbb693a71ee80b3274c775298eba9477767 Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Mon, 5 Feb 2024 23:20:31 +0100 Subject: [PATCH 126/150] review comments --- .../transposition-identifications-along-equivalences.lagda.md | 2 +- src/graph-theory/equivalences-directed-graphs.lagda.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/foundation/transposition-identifications-along-equivalences.lagda.md b/src/foundation/transposition-identifications-along-equivalences.lagda.md index fb05592dd2..ac314a0ee5 100644 --- a/src/foundation/transposition-identifications-along-equivalences.lagda.md +++ b/src/foundation/transposition-identifications-along-equivalences.lagda.md @@ -37,7 +37,7 @@ constructing this equivalence. One way uses the fact that `e⁻¹` is a (e x = y) ≃ (e x = e e⁻¹ y) ≃ (x = e⁻¹ y). ``` -The other way usex the fact that `e⁻¹` is a +The other way uses the fact that `e⁻¹` is a [retraction](foundation-core.retractions.md) of `e`, resulting in the equivalence diff --git a/src/graph-theory/equivalences-directed-graphs.lagda.md b/src/graph-theory/equivalences-directed-graphs.lagda.md index dd7e82b7f2..ba55203632 100644 --- a/src/graph-theory/equivalences-directed-graphs.lagda.md +++ b/src/graph-theory/equivalences-directed-graphs.lagda.md @@ -29,7 +29,7 @@ open import foundation.type-theoretic-principle-of-choice open import foundation.univalence open import foundation.universe-levels -open import foundation-core.equivalences +open import foundation.equivalences open import graph-theory.directed-graphs open import graph-theory.morphisms-directed-graphs From b29c36c75a26865b19e6a932d5771c603de09d39 Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Mon, 5 Feb 2024 23:20:55 +0100 Subject: [PATCH 127/150] make pre-commit --- src/graph-theory/equivalences-directed-graphs.lagda.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/graph-theory/equivalences-directed-graphs.lagda.md b/src/graph-theory/equivalences-directed-graphs.lagda.md index ba55203632..327cdee91a 100644 --- a/src/graph-theory/equivalences-directed-graphs.lagda.md +++ b/src/graph-theory/equivalences-directed-graphs.lagda.md @@ -15,6 +15,7 @@ open import foundation.contractible-types open import foundation.dependent-pair-types open import foundation.equality-dependent-function-types open import foundation.equivalence-extensionality +open import foundation.equivalences open import foundation.function-types open import foundation.functoriality-dependent-function-types open import foundation.functoriality-dependent-pair-types @@ -29,8 +30,6 @@ open import foundation.type-theoretic-principle-of-choice open import foundation.univalence open import foundation.universe-levels -open import foundation.equivalences - open import graph-theory.directed-graphs open import graph-theory.morphisms-directed-graphs ``` From 8942712d701a23e415dcf7d8666e599cf400cbfb Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Mon, 5 Feb 2024 23:54:57 +0100 Subject: [PATCH 128/150] updating informal remarks about function extensionality --- src/foundation/evaluation-functions.lagda.md | 39 +++---------------- .../function-extensionality.lagda.md | 27 +++++++++++++ 2 files changed, 32 insertions(+), 34 deletions(-) diff --git a/src/foundation/evaluation-functions.lagda.md b/src/foundation/evaluation-functions.lagda.md index ecb1e43a77..45faaf7850 100644 --- a/src/foundation/evaluation-functions.lagda.md +++ b/src/foundation/evaluation-functions.lagda.md @@ -83,38 +83,9 @@ module _ ev-implicit-function' = ev-implicit-function a ``` -## Properties +## See also -### The action on paths of an evaluation map - -For any two functions `f g : A → B`, the action on identifications of -`ev-function B a` - -```text - ap (ev-function B a) : (f = g) → (f a = g a) -``` - -is homotopic to the map `p ↦ htpy-eq p a`, where `htpy-eq` is the operation that -constructs a homotopy from an identification of functions, which we constructed -in [Function extensionality](foundation.function-extensionality.md). In other -words, the triangle of maps - -```text - htpy-eq - (f = g) ----------> (f ~ g) - \ / - ap (ev-function B a) \ / ev a - ∨ ∨ - (f a = g a) -``` - -[commutes](foundation-core.commuting-triangles-of-maps.md). - -```text -module _ - {l1 l2 : Level} {A : UU l1} {B : UU l2} (a : A) - where - - ap-ev : {f g : A → B} (p : f = g) → (ap (ev-function B a) p) = htpy-eq p a - ap-ev refl = refl -``` +- The + [action on identifications](foundation.action-on-identifications-functions.md) + of the evaluation map is the function `a ↦ λ p → htpy-eq p a` defined in + [Function extensionality](foundation.function-extensionality.md). diff --git a/src/foundation/function-extensionality.lagda.md b/src/foundation/function-extensionality.lagda.md index 8295452507..286267718d 100644 --- a/src/foundation/function-extensionality.lagda.md +++ b/src/foundation/function-extensionality.lagda.md @@ -32,6 +32,33 @@ functions are [equivalently](foundation-core.equivalences.md) described as [homotopies](foundation-core.homotopies.md) between them. In other words, a function is completely determined by its values. +Function extensionality is postulated by stating that the canonical map + +```text + htpy-eq : f = g → f ~ g +``` + +from identifications between two functions to homotopies between them is an +equivalence. The map `htpy-eq` is the unique map that fits in a +[commuting triangle](foundation-core.commuting-triangles-of-maps.md) + +```text + htpy-eq + (f = g) ----------> (f ~ g) + \ / + ap (ev a) \ / ev a + ∨ ∨ + (f a = g a) +``` + +In other words, we define + +```text + htpy-eq p a := ap (ev a) p. +``` + +It follows from this definition that `htpy-eq refl ≐ refl-htpy`, as expected. + ## Definitions ### Equalities induce homotopies From 090572ebba0fb1ff269c6aa73215c38c4b029c31 Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Tue, 6 Feb 2024 06:56:55 +0100 Subject: [PATCH 129/150] add compute-htpy-eq-refl --- src/foundation/function-extensionality.lagda.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/foundation/function-extensionality.lagda.md b/src/foundation/function-extensionality.lagda.md index 286267718d..1d043b3d12 100644 --- a/src/foundation/function-extensionality.lagda.md +++ b/src/foundation/function-extensionality.lagda.md @@ -70,6 +70,9 @@ module _ htpy-eq : {f g : (x : A) → B x} → f = g → f ~ g htpy-eq p x = ap (ev x) p + + compute-htpy-eq-refl : {f : (x : A) → B x} → htpy-eq refl = refl-htpy' f + compute-htpy-eq-refl = refl ``` ### An instance of function extensionality From d442e30e2e02f9c66fdcc476d6e038e7220aa6ed Mon Sep 17 00:00:00 2001 From: Fredrik Bakke Date: Tue, 6 Feb 2024 11:49:01 +0100 Subject: [PATCH 130/150] =?UTF-8?q?`(=5F=E2=88=99=5F)`?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/foundation/path-algebra.lagda.md | 10 +++++----- .../whiskering-identifications-concatenation.lagda.md | 4 ++-- .../hatchers-acyclic-type.lagda.md | 2 +- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/foundation/path-algebra.lagda.md b/src/foundation/path-algebra.lagda.md index bce83ad20a..96a439ae35 100644 --- a/src/foundation/path-algebra.lagda.md +++ b/src/foundation/path-algebra.lagda.md @@ -143,7 +143,7 @@ vertical-concat-Id² α β = α ∙ β horizontal-concat-Id² : {l : Level} {A : UU l} {x y z : A} {p q : x = y} {u v : y = z} → p = q → u = v → (p ∙ u) = (q ∙ v) -horizontal-concat-Id² α β = ap-binary _∙_ α β +horizontal-concat-Id² α β = ap-binary (_∙_) α β ``` ### Both horizontal and vertical concatenation of 2-paths are binary equivalences @@ -178,13 +178,13 @@ left-unit-law-horizontal-concat-Id² : {l : Level} {A : UU l} {x y z : A} {p : x = y} {u v : y = z} (γ : u = v) → horizontal-concat-Id² (refl {x = p}) γ = left-whisker-concat p γ -left-unit-law-horizontal-concat-Id² = left-unit-ap-binary _∙_ +left-unit-law-horizontal-concat-Id² = left-unit-ap-binary (_∙_) right-unit-law-horizontal-concat-Id² : {l : Level} {A : UU l} {x y z : A} {p q : x = y} (α : p = q) {u : y = z} → horizontal-concat-Id² α (refl {x = u}) = right-whisker-concat α u -right-unit-law-horizontal-concat-Id² = right-unit-ap-binary _∙_ +right-unit-law-horizontal-concat-Id² = right-unit-ap-binary (_∙_) ``` Horizontal concatination satisfies an additional "2-dimensional" unit law (on @@ -249,7 +249,7 @@ module _ ( ( ( horizontal-concat-Id² refl (inv (ap-const refl α))) ∙ ( nat-htpy right-inv α)) ∙ ( horizontal-concat-Id² - ( ap-binary-comp-diagonal _∙_ id inv α) + ( ap-binary-comp-diagonal (_∙_) id inv α) ( refl))) ∙ ( ap ( λ t → horizontal-concat-Id² t (horizontal-inv-Id² α) ∙ right-inv p') @@ -265,7 +265,7 @@ module _ ( ( ( horizontal-concat-Id² refl (inv (ap-const refl α))) ∙ ( nat-htpy left-inv α)) ∙ ( horizontal-concat-Id² - ( ap-binary-comp-diagonal _∙_ inv id α) + ( ap-binary-comp-diagonal (_∙_) inv id α) ( refl))) ∙ ( ap ( λ t → (horizontal-concat-Id² (horizontal-inv-Id² α) t) ∙ left-inv p') diff --git a/src/foundation/whiskering-identifications-concatenation.lagda.md b/src/foundation/whiskering-identifications-concatenation.lagda.md index a9c58e8052..661b2b9c4e 100644 --- a/src/foundation/whiskering-identifications-concatenation.lagda.md +++ b/src/foundation/whiskering-identifications-concatenation.lagda.md @@ -58,7 +58,7 @@ module _ {l : Level} {A : UU l} where - left-whisker-concat : left-whiskering-operation A _=_ _∙_ _=_ + left-whisker-concat : left-whiskering-operation A (_=_) (_∙_) (_=_) left-whisker-concat p β = ap (p ∙_) β ``` @@ -78,7 +78,7 @@ module _ {l : Level} {A : UU l} where - right-whisker-concat : right-whiskering-operation A _=_ _∙_ _=_ + right-whisker-concat : right-whiskering-operation A (_=_) (_∙_) (_=_) right-whisker-concat α q = ap (_∙ q) α ``` diff --git a/src/synthetic-homotopy-theory/hatchers-acyclic-type.lagda.md b/src/synthetic-homotopy-theory/hatchers-acyclic-type.lagda.md index 4f8238af04..67c40df986 100644 --- a/src/synthetic-homotopy-theory/hatchers-acyclic-type.lagda.md +++ b/src/synthetic-homotopy-theory/hatchers-acyclic-type.lagda.md @@ -139,7 +139,7 @@ module _ ( λ q → ( ( pr1 (pr2 (pr2 s)) ∙ ap (power-nat-Ω 3 A) q) = ( (ap (power-nat-Ω 5 A) p) ∙ pr1 (pr2 (pr2 t)))) × - ( ( pr2 (pr2 (pr2 s)) ∙ ap (power-nat-Ω 2 A) (ap-binary _∙_ p q)) = + ( ( pr2 (pr2 (pr2 s)) ∙ ap (power-nat-Ω 2 A) (ap-binary (_∙_) p q)) = ( ap (power-nat-Ω 3 A) q ∙ pr2 (pr2 (pr2 t)))))) refl-Eq-structure-Hatcher-Acyclic-Type : From 28cea100a1fec54588095d494e872904b7ee025a Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Tue, 6 Feb 2024 11:57:44 +0100 Subject: [PATCH 131/150] line break --- src/synthetic-homotopy-theory/hatchers-acyclic-type.lagda.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/synthetic-homotopy-theory/hatchers-acyclic-type.lagda.md b/src/synthetic-homotopy-theory/hatchers-acyclic-type.lagda.md index 67c40df986..0e0cf0e7c1 100644 --- a/src/synthetic-homotopy-theory/hatchers-acyclic-type.lagda.md +++ b/src/synthetic-homotopy-theory/hatchers-acyclic-type.lagda.md @@ -139,7 +139,8 @@ module _ ( λ q → ( ( pr1 (pr2 (pr2 s)) ∙ ap (power-nat-Ω 3 A) q) = ( (ap (power-nat-Ω 5 A) p) ∙ pr1 (pr2 (pr2 t)))) × - ( ( pr2 (pr2 (pr2 s)) ∙ ap (power-nat-Ω 2 A) (ap-binary (_∙_) p q)) = + ( ( pr2 (pr2 (pr2 s)) ∙ + ap (power-nat-Ω 2 A) (horizontal-concat-Id² p q)) = ( ap (power-nat-Ω 3 A) q ∙ pr2 (pr2 (pr2 t)))))) refl-Eq-structure-Hatcher-Acyclic-Type : From e97048a3228c304d16c043dfaa936e2a8d4bdf8d Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Tue, 6 Feb 2024 13:51:39 +0100 Subject: [PATCH 132/150] eq-pair-eq-fiber --- .../slice-precategories.lagda.md | 15 +++++-------- .../equality-integers.lagda.md | 2 +- .../delooping-sign-homomorphism.lagda.md | 5 ++--- .../orbits-permutations.lagda.md | 5 ++--- .../equality-dependent-pair-types.lagda.md | 18 +++++++-------- ...unctoriality-dependent-pair-types.lagda.md | 2 +- src/foundation-core/pullbacks.lagda.md | 10 ++++----- ...-higher-identifications-functions.lagda.md | 6 +++++ ...-identifications-binary-functions.lagda.md | 6 +++++ ...entifications-dependent-functions.lagda.md | 6 +++++ ...tion-on-identifications-functions.lagda.md | 6 +++++ .../cartesian-products-set-quotients.lagda.md | 2 +- .../descent-coproduct-types.lagda.md | 4 ++-- .../equality-dependent-pair-types.lagda.md | 2 +- .../equality-fibers-of-maps.lagda.md | 4 ++-- src/foundation/fibered-maps.lagda.md | 4 ++-- ...unctoriality-dependent-pair-types.lagda.md | 4 ++-- .../functoriality-fibers-of-maps.lagda.md | 2 +- src/foundation/pullbacks.lagda.md | 22 +++++++++++-------- src/foundation/slice.lagda.md | 4 ++-- .../symmetric-identity-types.lagda.md | 4 ++-- ...vial-relaxed-sigma-decompositions.lagda.md | 3 +-- .../trivial-sigma-decompositions.lagda.md | 3 +-- ...e-arithmetic-dependent-pair-types.lagda.md | 2 +- ...-property-cartesian-product-types.lagda.md | 2 +- ...universal-property-fiber-products.lagda.md | 2 +- src/foundation/vectors-set-quotients.lagda.md | 8 +++---- .../weak-function-extensionality.lagda.md | 2 +- .../neighbors-undirected-graphs.lagda.md | 3 +-- src/lists/arrays.lagda.md | 2 +- src/organic-chemistry/ethane.lagda.md | 4 ++-- .../pullback-hom.lagda.md | 10 ++++----- .../cocones-under-spans.lagda.md | 6 ++--- ...ndent-universal-property-pushouts.lagda.md | 2 +- .../flattening-lemma-pushouts.lagda.md | 6 ++--- .../universal-cover-circle.lagda.md | 2 +- .../universal-property-pushouts.lagda.md | 4 ++-- src/trees/combinator-directed-trees.lagda.md | 3 +-- .../2-element-decidable-subtypes.lagda.md | 3 +-- ...tations-complete-undirected-graph.lagda.md | 6 ++--- .../algebraic-theory-of-groups.lagda.md | 5 ++--- 41 files changed, 111 insertions(+), 100 deletions(-) diff --git a/src/category-theory/slice-precategories.lagda.md b/src/category-theory/slice-precategories.lagda.md index 101b4b7712..5f588973eb 100644 --- a/src/category-theory/slice-precategories.lagda.md +++ b/src/category-theory/slice-precategories.lagda.md @@ -412,10 +412,8 @@ module _ map-inv-pullback-product-Slice-Precategory) ~ id is-section-map-inv-pullback-product-Slice-Precategory ((Z , .(comp-hom-Precategory C f h₁)) , (h₁ , refl) , (h₂ , β₂) , q) = - eq-pair-Σ - ( refl) - ( eq-pair-Σ - ( refl) + eq-pair-eq-fiber + ( eq-pair-eq-fiber ( eq-type-subtype ( λ _ → is-product-prop-Precategory @@ -432,12 +430,9 @@ module _ map-pullback-product-Slice-Precategory) ~ id is-retraction-map-inv-pullback-product-Slice-Precategory ( W , p₁ , p₂ , α , q) = - eq-pair-Σ - ( refl) - ( eq-pair-Σ - ( refl) - ( eq-pair-Σ - ( refl) + eq-pair-eq-fiber + ( eq-pair-eq-fiber + ( eq-pair-eq-fiber ( eq-type-subtype (λ _ → is-pullback-prop-Precategory C A X Y f g _ _ _ α) ( refl)))) diff --git a/src/elementary-number-theory/equality-integers.lagda.md b/src/elementary-number-theory/equality-integers.lagda.md index ea76b629a5..ec657052d0 100644 --- a/src/elementary-number-theory/equality-integers.lagda.md +++ b/src/elementary-number-theory/equality-integers.lagda.md @@ -123,7 +123,7 @@ contraction-total-Eq-ℤ (inl x) (pair (inl y) e) = ( ap inl (eq-Eq-ℕ x y e)) ( eq-is-prop (is-prop-Eq-ℕ x y)) contraction-total-Eq-ℤ (inr (inl star)) (pair (inr (inl star)) e) = - eq-pair-Σ refl (eq-is-prop is-prop-unit) + eq-pair-eq-fiber (eq-is-prop is-prop-unit) contraction-total-Eq-ℤ (inr (inr x)) (pair (inr (inr y)) e) = eq-pair-Σ ( ap (inr ∘ inr) (eq-Eq-ℕ x y e)) diff --git a/src/finite-group-theory/delooping-sign-homomorphism.lagda.md b/src/finite-group-theory/delooping-sign-homomorphism.lagda.md index a6c658baf2..dbcbe3991e 100644 --- a/src/finite-group-theory/delooping-sign-homomorphism.lagda.md +++ b/src/finite-group-theory/delooping-sign-homomorphism.lagda.md @@ -384,7 +384,7 @@ module _ ( w)) ( class (R (n +ℕ 2) (X , eX)) (x))) ( ap - ( λ w → ap (equivalence-class ∘ R (n +ℕ 2)) (eq-pair-Σ refl w)) + ( λ w → ap (equivalence-class ∘ R (n +ℕ 2)) (eq-pair-eq-fiber w)) { x = eq-is-prop is-prop-type-trunc-Prop} ( eq-is-prop ( is-trunc-Id @@ -1400,8 +1400,7 @@ module _ ( raise-Set l4 (Fin-Set 2)) ( compute-raise-Fin l4 2 ∘e inv-equiv (that-thing n)))))) ( eq-quotient-delooping-sign-loop-sign-homomorphism n) ∙ - ( eq-pair-Σ - ( refl) + ( eq-pair-eq-fiber ( eq-is-prop ( is-prop-preserves-mul-Semigroup ( semigroup-Group (symmetric-Group (raise-Fin-Set l1 (n +ℕ 2)))) diff --git a/src/finite-group-theory/orbits-permutations.lagda.md b/src/finite-group-theory/orbits-permutations.lagda.md index 5aefefe130..62957d5ca9 100644 --- a/src/finite-group-theory/orbits-permutations.lagda.md +++ b/src/finite-group-theory/orbits-permutations.lagda.md @@ -1657,7 +1657,7 @@ module _ ( same-orbits-permutation-count g) ( pair (pr1 T) (H-conserves T NQ NR)) ( b)))) ∙ - ( eq-pair-Σ refl ( eq-is-prop is-prop-type-trunc-Prop))))) + ( eq-pair-eq-fiber ( eq-is-prop is-prop-type-trunc-Prop))))) retraction-h' : (T : equivalence-class @@ -1938,8 +1938,7 @@ module _ ( inl) ( ap ( map-inv-equiv-count h) - ( eq-pair-Σ - ( refl) + ( eq-pair-eq-fiber ( eq-is-prop is-prop-type-trunc-Prop)) ∙ ap (λ f → map-equiv f k) (left-inverse-law-equiv (equiv-count h))) section-h'-inr : diff --git a/src/foundation-core/equality-dependent-pair-types.lagda.md b/src/foundation-core/equality-dependent-pair-types.lagda.md index 27b0da8527..3e5d314cc6 100644 --- a/src/foundation-core/equality-dependent-pair-types.lagda.md +++ b/src/foundation-core/equality-dependent-pair-types.lagda.md @@ -60,21 +60,21 @@ module _ eq-pair-Σ' : {s t : Σ A B} → Eq-Σ s t → s = t eq-pair-Σ' p = eq-pair-Σ (pr1 p) (pr2 p) - eq-pair-eq-pr1 : + eq-pair-eq-base : {x y : A} {s : B x} (p : x = y) → (x , s) = (y , tr B p s) - eq-pair-eq-pr1 refl = refl + eq-pair-eq-base refl = refl - eq-pair-eq-pr1' : + eq-pair-eq-base' : {x y : A} {t : B y} (p : x = y) → (x , tr B (inv p) t) = (y , t) - eq-pair-eq-pr1' refl = refl + eq-pair-eq-base' refl = refl - eq-pair-eq-pr2 : + eq-pair-eq-fiber : {x : A} {s t : B x} → s = t → (x , s) = (x , t) - eq-pair-eq-pr2 {x} = ap {B = Σ A B} (pair x) + eq-pair-eq-fiber {x} = ap {B = Σ A B} (pair x) - ap-pr1-eq-pair-eq-pr2 : - {x : A} {s t : B x} (p : s = t) → ap pr1 (eq-pair-eq-pr2 p) = refl - ap-pr1-eq-pair-eq-pr2 refl = refl + ap-pr1-eq-pair-eq-fiber : + {x : A} {s t : B x} (p : s = t) → ap pr1 (eq-pair-eq-fiber p) = refl + ap-pr1-eq-pair-eq-fiber refl = refl is-retraction-pair-eq-Σ : (s t : Σ A B) → pair-eq-Σ {s} {t} ∘ eq-pair-Σ' {s} {t} ~ id {A = Eq-Σ s t} diff --git a/src/foundation-core/functoriality-dependent-pair-types.lagda.md b/src/foundation-core/functoriality-dependent-pair-types.lagda.md index ff1ecec37d..02baea246c 100644 --- a/src/foundation-core/functoriality-dependent-pair-types.lagda.md +++ b/src/foundation-core/functoriality-dependent-pair-types.lagda.md @@ -108,7 +108,7 @@ module _ tot-htpy : {l1 l2 l3 : Level} {A : UU l1} {B : A → UU l2} {C : A → UU l3} {f g : (x : A) → B x → C x} → (H : (x : A) → f x ~ g x) → tot f ~ tot g -tot-htpy H (pair x y) = eq-pair-Σ refl (H x y) +tot-htpy H (pair x y) = eq-pair-eq-fiber (H x y) ``` ### The map `tot` preserves identity maps diff --git a/src/foundation-core/pullbacks.lagda.md b/src/foundation-core/pullbacks.lagda.md index 5fecb0248b..02ff270384 100644 --- a/src/foundation-core/pullbacks.lagda.md +++ b/src/foundation-core/pullbacks.lagda.md @@ -361,8 +361,8 @@ inv-inv-map-commutative-standard-pullback : ( map-commutative-standard-pullback f g ∘ map-commutative-standard-pullback g f) ~ id inv-inv-map-commutative-standard-pullback f g x = - eq-pair-eq-pr2 - ( eq-pair-eq-pr2 + eq-pair-eq-fiber + ( eq-pair-eq-fiber ( inv-inv (coherence-square-standard-pullback x))) abstract @@ -620,7 +620,7 @@ module _ gap (map-prod f f') (map-prod g g') (prod-cone c c') ~ map-prod-cone f g f' g' ∘ map-prod (gap f g c) (gap f' g' c') triangle-map-prod-cone c c' z = - eq-pair-eq-pr2 (eq-pair-eq-pr2 right-unit) + eq-pair-eq-fiber (eq-pair-eq-fiber right-unit) abstract is-pullback-prod-is-pullback-pair : @@ -750,8 +750,8 @@ module _ tot (λ _ → tot (λ _ → inv)) ∘ tot (map-fiber-vertical-map-cone f g c) square-tot-map-fiber-vertical-map-cone (.(vertical-map-cone f g c x) , x , refl) = - eq-pair-eq-pr2 - ( eq-pair-eq-pr2 + eq-pair-eq-fiber + ( eq-pair-eq-fiber ( inv (ap inv right-unit ∙ inv-inv (coherence-square-cone f g c x)))) abstract diff --git a/src/foundation/action-on-higher-identifications-functions.lagda.md b/src/foundation/action-on-higher-identifications-functions.lagda.md index c12340d1ae..1553a81b60 100644 --- a/src/foundation/action-on-higher-identifications-functions.lagda.md +++ b/src/foundation/action-on-higher-identifications-functions.lagda.md @@ -187,3 +187,9 @@ module _ ( inv (horizontal-concat-Id² refl (ap-const refl α))) ∙ ( nat-htpy (ap-const b) α) ``` + +## See also + +- [Action of functions on identifications](foundation.action-on-identifications-functions.md) +- [Action of binary functions on identifications](foundation.action-on-identifications-binary-functions.md). +- [Action of dependent functions on identifications](foundation.action-on-identifications-dependent-functions.md). diff --git a/src/foundation/action-on-identifications-binary-functions.lagda.md b/src/foundation/action-on-identifications-binary-functions.lagda.md index 8036e8d6a5..3de92507d4 100644 --- a/src/foundation/action-on-identifications-binary-functions.lagda.md +++ b/src/foundation/action-on-identifications-binary-functions.lagda.md @@ -178,3 +178,9 @@ module _ ap-binary (λ y x → f x y) q p = ap-binary f p q ap-binary-permute refl refl = refl ``` + +## See also + +- [Action of functions on identifications](foundation.action-on-identifications-functions.md) +- [Action of functions on higher identifications](foundation.action-on-higher-identifications-functions.md). +- [Action of dependent functions on identifications](foundation.action-on-identifications-dependent-functions.md). diff --git a/src/foundation/action-on-identifications-dependent-functions.lagda.md b/src/foundation/action-on-identifications-dependent-functions.lagda.md index 6db5aec11d..eecad428e0 100644 --- a/src/foundation/action-on-identifications-dependent-functions.lagda.md +++ b/src/foundation/action-on-identifications-dependent-functions.lagda.md @@ -42,3 +42,9 @@ apd : (p : x = y) → dependent-identification B p (f x) (f y) apd f refl = refl ``` + +## See also + +- [Action of functions on identifications](foundation.action-on-identifications-functions.md) +- [Action of functions on higher identifications](foundation.action-on-higher-identifications-functions.md). +- [Action of binary functions on identifications](foundation.action-on-identifications-binary-functions.md). diff --git a/src/foundation/action-on-identifications-functions.lagda.md b/src/foundation/action-on-identifications-functions.lagda.md index dde53b58a5..380eab8379 100644 --- a/src/foundation/action-on-identifications-functions.lagda.md +++ b/src/foundation/action-on-identifications-functions.lagda.md @@ -103,3 +103,9 @@ ap-const : (p : x = y) → (ap (const A B b) p) = refl ap-const b refl = refl ``` + +## See also + +- [Action of functions on higher identifications](foundation.action-on-higher-identifications-functions.md). +- [Action of binary functions on identifications](foundation.action-on-identifications-binary-functions.md). +- [Action of dependent functions on identifications](foundation.action-on-identifications-dependent-functions.md). diff --git a/src/foundation/cartesian-products-set-quotients.lagda.md b/src/foundation/cartesian-products-set-quotients.lagda.md index 2dcec083f3..c0c8ad3ffd 100644 --- a/src/foundation/cartesian-products-set-quotients.lagda.md +++ b/src/foundation/cartesian-products-set-quotients.lagda.md @@ -152,7 +152,7 @@ module _ ( eq-htpy λ a → ( ap ( inv-precomp-set-quotient S X) - ( eq-pair-Σ refl + ( eq-pair-eq-fiber ( eq-is-prop ( is-prop-reflects-equivalence-relation S X _)))) ∙ ( is-retraction-inv-precomp-set-quotient S X _)) diff --git a/src/foundation/descent-coproduct-types.lagda.md b/src/foundation/descent-coproduct-types.lagda.md index 3c6ba3f0b5..14d287e192 100644 --- a/src/foundation/descent-coproduct-types.lagda.md +++ b/src/foundation/descent-coproduct-types.lagda.md @@ -47,7 +47,7 @@ module _ ( inl x)) ∘ ( fiber-map-coprod-inl-fiber f g x) triangle-descent-square-fiber-map-coprod-inl-fiber x (a' , p) = - eq-pair-eq-pr2 + eq-pair-eq-fiber ( left-whisker-concat ( inv (HA a')) ( ap-comp (ind-coprod _ αA αB) inl p)) @@ -60,7 +60,7 @@ module _ ( inr y)) ∘ ( fiber-map-coprod-inr-fiber f g y) triangle-descent-square-fiber-map-coprod-inr-fiber y (b' , p) = - eq-pair-eq-pr2 + eq-pair-eq-fiber ( left-whisker-concat ( inv (HB b')) ( ap-comp (ind-coprod _ αA αB) inr p)) diff --git a/src/foundation/equality-dependent-pair-types.lagda.md b/src/foundation/equality-dependent-pair-types.lagda.md index cc60a621f4..5126671f54 100644 --- a/src/foundation/equality-dependent-pair-types.lagda.md +++ b/src/foundation/equality-dependent-pair-types.lagda.md @@ -93,7 +93,7 @@ module _ distributive-inv-eq-pair-Σ-refl : {x : A} {x' y' : B x} (p' : x' = y') → - inv (eq-pair-Σ refl p') = eq-pair-Σ {A = A} {B = B} refl (inv p') + inv (eq-pair-eq-fiber p') = eq-pair-Σ {A = A} {B = B} refl (inv p') distributive-inv-eq-pair-Σ-refl refl = refl ``` diff --git a/src/foundation/equality-fibers-of-maps.lagda.md b/src/foundation/equality-fibers-of-maps.lagda.md index bbf9b42b2e..e9f8f003d7 100644 --- a/src/foundation/equality-fibers-of-maps.lagda.md +++ b/src/foundation/equality-fibers-of-maps.lagda.md @@ -101,14 +101,14 @@ module _ fiber (ap f {x = pr1 s} {y = pr1 t}) (pr2 s ∙ inv (pr2 t)) → s = t map-inv-fiber-ap-eq-fiber (x , refl) (.x , p) (refl , u) = - eq-pair-eq-pr2 (ap inv u ∙ inv-inv p) + eq-pair-eq-fiber (ap inv u ∙ inv-inv p) ap-pr1-map-inv-fiber-ap-eq-fiber : (s t : fiber f b) → (v : fiber (ap f {x = pr1 s} {y = pr1 t}) (pr2 s ∙ inv (pr2 t))) → ap pr1 (map-inv-fiber-ap-eq-fiber s t v) = pr1 v ap-pr1-map-inv-fiber-ap-eq-fiber (x , refl) (.x , p) (refl , u) = - ap-pr1-eq-pair-eq-pr2 (ap inv u ∙ inv-inv p) + ap-pr1-eq-pair-eq-fiber (ap inv u ∙ inv-inv p) module _ {l1 l2 : Level} {A : UU l1} {B : UU l2} (f : A → B) (x y : A) diff --git a/src/foundation/fibered-maps.lagda.md b/src/foundation/fibered-maps.lagda.md index 564d810cb2..0cd36bbb43 100644 --- a/src/foundation/fibered-maps.lagda.md +++ b/src/foundation/fibered-maps.lagda.md @@ -242,7 +242,7 @@ module _ (α : fiberwise-map-over f g i) (x : X) → fiberwise-map-over-map-over (map-over-fiberwise-map-over α) x ~ α x is-section-map-over-fiberwise-map-over-eq-htpy α .(f a) (pair a refl) = - eq-pair-Σ refl (inv-inv (pr2 (α (f a) (pair a refl)))) + eq-pair-eq-fiber (inv-inv (pr2 (α (f a) (pair a refl)))) is-section-map-over-fiberwise-map-over : fiberwise-map-over-map-over ∘ map-over-fiberwise-map-over ~ id @@ -252,7 +252,7 @@ module _ is-retraction-map-over-fiberwise-map-over : map-over-fiberwise-map-over ∘ fiberwise-map-over-map-over ~ id is-retraction-map-over-fiberwise-map-over (pair h H) = - eq-pair-Σ refl (eq-htpy (inv-inv ∘ H)) + eq-pair-eq-fiber (eq-htpy (inv-inv ∘ H)) abstract is-equiv-fiberwise-map-over-map-over : diff --git a/src/foundation/functoriality-dependent-pair-types.lagda.md b/src/foundation/functoriality-dependent-pair-types.lagda.md index cee7cc74a3..56b076f760 100644 --- a/src/foundation/functoriality-dependent-pair-types.lagda.md +++ b/src/foundation/functoriality-dependent-pair-types.lagda.md @@ -459,7 +459,7 @@ module _ coherence-square-maps-tot : ((a : A) → coherence-square-maps (top a) (left a) (right a) (bottom a)) → coherence-square-maps (tot top) (tot left) (tot right) (tot bottom) - coherence-square-maps-tot H (a , p) = eq-pair-Σ refl (H a p) + coherence-square-maps-tot H (a , p) = eq-pair-eq-fiber (H a p) ``` #### `map-Σ-map-base` preserves commuting squares of maps @@ -529,7 +529,7 @@ module _ is-injective-equiv ( equiv-tot e) ( ( is-section-map-inv-equiv (equiv-tot e) (a , c)) ∙ - ( eq-pair-Σ refl (inv (is-section-map-inv-equiv (e a) c)))) + ( eq-pair-eq-fiber (inv (is-section-map-inv-equiv (e a) c)))) ``` ## See also diff --git a/src/foundation/functoriality-fibers-of-maps.lagda.md b/src/foundation/functoriality-fibers-of-maps.lagda.md index 1e3665b8d1..39db48e2b4 100644 --- a/src/foundation/functoriality-fibers-of-maps.lagda.md +++ b/src/foundation/functoriality-fibers-of-maps.lagda.md @@ -472,7 +472,7 @@ module _ preserves-pasting-vertical-map-fiber-vertical-map-cone (p , q , H) (p' , q' , H') .(p (p' a)) ((.(p' a) , refl) , (a , refl)) = - eq-pair-eq-pr2 + eq-pair-eq-fiber ( ( right-unit) ∙ ( distributive-inv-concat (H (p' a)) (ap g (H' a))) ∙ ( ap diff --git a/src/foundation/pullbacks.lagda.md b/src/foundation/pullbacks.lagda.md index dcc42e9d85..685ee9954a 100644 --- a/src/foundation/pullbacks.lagda.md +++ b/src/foundation/pullbacks.lagda.md @@ -162,8 +162,8 @@ triangle-map-standard-pullback-postcomp : map-standard-pullback-postcomp f g T ∘ gap (postcomp T f) (postcomp T g) (postcomp-cone T f g c) triangle-map-standard-pullback-postcomp T f g c h = - eq-pair-eq-pr2 - ( eq-pair-eq-pr2 + eq-pair-eq-fiber + ( eq-pair-eq-fiber ( inv (is-section-eq-htpy (coherence-square-cone f g c ·r h)))) abstract @@ -251,7 +251,7 @@ module _ cone-Id' : cone (point (x , y)) (diagonal A) (x = y) pr1 cone-Id' = terminal-map (x = y) pr1 (pr2 cone-Id') = const (x = y) A x - pr2 (pr2 cone-Id') p = eq-pair-eq-pr2 (inv p) + pr2 (pr2 cone-Id') p = eq-pair-eq-fiber (inv p) inv-gap-cone-Id' : standard-pullback (point (x , y)) (diagonal A) → x = y @@ -767,16 +767,20 @@ module _ is-section-map-inv-coprod-cone : is-section map-coprod-cone map-inv-coprod-cone is-section-map-inv-coprod-cone (inl x , inl y , p) = - eq-pair-eq-pr2 (eq-pair-eq-pr2 (is-section-is-injective-inl p)) + eq-pair-eq-fiber (eq-pair-eq-fiber (is-section-is-injective-inl p)) is-section-map-inv-coprod-cone (inr x , inr y , p) = - eq-pair-eq-pr2 (eq-pair-eq-pr2 (is-section-is-injective-inr p)) + eq-pair-eq-fiber (eq-pair-eq-fiber (is-section-is-injective-inr p)) is-retraction-map-inv-coprod-cone : is-retraction map-coprod-cone map-inv-coprod-cone is-retraction-map-inv-coprod-cone (inl (x , y , p)) = - ap inl (eq-pair-eq-pr2 (eq-pair-eq-pr2 (is-retraction-is-injective-inl p))) + ap + ( inl) + ( eq-pair-eq-fiber (eq-pair-eq-fiber (is-retraction-is-injective-inl p))) is-retraction-map-inv-coprod-cone (inr (x , y , p)) = - ap inr (eq-pair-eq-pr2 (eq-pair-eq-pr2 (is-retraction-is-injective-inr p))) + ap + ( inr) + ( eq-pair-eq-fiber (eq-pair-eq-fiber (is-retraction-is-injective-inr p))) abstract is-equiv-map-coprod-cone : is-equiv map-coprod-cone @@ -810,9 +814,9 @@ module _ gap (map-coprod f f') (map-coprod g g') (coprod-cone c c') ~ map-coprod-cone f g f' g' ∘ map-coprod (gap f g c) (gap f' g' c') triangle-map-coprod-cone c c' (inl _) = - eq-pair-eq-pr2 (eq-pair-eq-pr2 right-unit) + eq-pair-eq-fiber (eq-pair-eq-fiber right-unit) triangle-map-coprod-cone c c' (inr _) = - eq-pair-eq-pr2 (eq-pair-eq-pr2 right-unit) + eq-pair-eq-fiber (eq-pair-eq-fiber right-unit) abstract is-pullback-coprod-is-pullback-pair : diff --git a/src/foundation/slice.lagda.md b/src/foundation/slice.lagda.md index 3afa8a364b..146aa27710 100644 --- a/src/foundation/slice.lagda.md +++ b/src/foundation/slice.lagda.md @@ -162,7 +162,7 @@ module _ (α : fiberwise-hom f g) (x : X) → (fiberwise-hom-hom-slice (hom-slice-fiberwise-hom α) x) ~ (α x) is-section-hom-slice-fiberwise-hom-eq-htpy α .(f a) (pair a refl) = - eq-pair-Σ refl (inv-inv (pr2 (α (f a) (pair a refl)))) + eq-pair-eq-fiber (inv-inv (pr2 (α (f a) (pair a refl)))) is-section-hom-slice-fiberwise-hom : (fiberwise-hom-hom-slice ∘ hom-slice-fiberwise-hom) ~ id @@ -172,7 +172,7 @@ module _ is-retraction-hom-slice-fiberwise-hom : (hom-slice-fiberwise-hom ∘ fiberwise-hom-hom-slice) ~ id is-retraction-hom-slice-fiberwise-hom (pair h H) = - eq-pair-Σ refl (eq-htpy (inv-inv ∘ H)) + eq-pair-eq-fiber (eq-htpy (inv-inv ∘ H)) abstract is-equiv-fiberwise-hom-hom-slice : is-equiv (fiberwise-hom-hom-slice) diff --git a/src/foundation/symmetric-identity-types.lagda.md b/src/foundation/symmetric-identity-types.lagda.md index c3de4e3b57..07af2863b0 100644 --- a/src/foundation/symmetric-identity-types.lagda.md +++ b/src/foundation/symmetric-identity-types.lagda.md @@ -183,7 +183,7 @@ id-equiv-symmetric-Id : {l : Level} {A : UU l} (a : unordered-pair A) → map-equiv-symmetric-Id id-equiv a ~ id id-equiv-symmetric-Id a (x , H) = - eq-pair-Σ refl (eq-htpy (λ u → ap-id (H u))) + eq-pair-eq-fiber (eq-htpy (λ u → ap-id (H u))) ``` ### Transport in the symmetric identity type along observational equality of unordered pairs @@ -221,7 +221,7 @@ module _ (p : unordered-pair A) → tr-symmetric-Id p p id-equiv refl-htpy ~ id refl-Eq-unordered-pair-tr-symmetric-Id p (a , K) = - eq-pair-Σ refl + eq-pair-eq-fiber ( eq-htpy ( ( compute-pr2-tr-symmetric-Id p p id-equiv refl-htpy K) ∙h ( right-unit-htpy))) diff --git a/src/foundation/trivial-relaxed-sigma-decompositions.lagda.md b/src/foundation/trivial-relaxed-sigma-decompositions.lagda.md index 28226b5f19..bca1a2703c 100644 --- a/src/foundation/trivial-relaxed-sigma-decompositions.lagda.md +++ b/src/foundation/trivial-relaxed-sigma-decompositions.lagda.md @@ -94,8 +94,7 @@ module _ ( inv-equiv (matching-correspondence-Relaxed-Σ-Decomposition D)) ∘e ( inv-left-unit-law-Σ-is-contr is-trivial x) pr2 (pr2 equiv-trivial-is-trivial-Relaxed-Σ-Decomposition) a = - eq-pair-Σ - ( refl) + eq-pair-eq-fiber ( inv-map-eq-transpose-equiv ( inv-equiv (matching-correspondence-Relaxed-Σ-Decomposition D)) ( refl)) diff --git a/src/foundation/trivial-sigma-decompositions.lagda.md b/src/foundation/trivial-sigma-decompositions.lagda.md index 882617524e..30c248703e 100644 --- a/src/foundation/trivial-sigma-decompositions.lagda.md +++ b/src/foundation/trivial-sigma-decompositions.lagda.md @@ -113,8 +113,7 @@ module _ ( ( inv-equiv (matching-correspondence-Σ-Decomposition D)) ∘e ( inv-left-unit-law-Σ-is-contr is-trivial x))) pr2 (pr2 equiv-trivial-is-trivial-Σ-Decomposition) a = - eq-pair-Σ - ( refl) + eq-pair-eq-fiber ( inv-map-eq-transpose-equiv ( inv-equiv (matching-correspondence-Σ-Decomposition D)) ( refl)) diff --git a/src/foundation/type-arithmetic-dependent-pair-types.lagda.md b/src/foundation/type-arithmetic-dependent-pair-types.lagda.md index a6f66bbebd..81e24624d1 100644 --- a/src/foundation/type-arithmetic-dependent-pair-types.lagda.md +++ b/src/foundation/type-arithmetic-dependent-pair-types.lagda.md @@ -143,7 +143,7 @@ module _ (H : (a : A) → is-contr (B a)) → map-inv-right-unit-law-Σ-is-contr H ∘ pr1 ~ id is-retraction-map-inv-right-unit-law-Σ-is-contr H (a , b) = - eq-pair-Σ refl (eq-is-contr (H a)) + eq-pair-eq-fiber (eq-is-contr (H a)) is-equiv-map-inv-right-unit-law-Σ-is-contr : (H : (a : A) → is-contr (B a)) → diff --git a/src/foundation/universal-property-cartesian-product-types.lagda.md b/src/foundation/universal-property-cartesian-product-types.lagda.md index 7bdb2ad2d4..daa5203f48 100644 --- a/src/foundation/universal-property-cartesian-product-types.lagda.md +++ b/src/foundation/universal-property-cartesian-product-types.lagda.md @@ -105,7 +105,7 @@ Cartesian products are a special case of pullbacks. abstract is-retraction-inv-gap-prod : (inv-gap-prod ∘ gap-prod) ~ id - is-retraction-inv-gap-prod (pair a b) = eq-pair-Σ refl refl + is-retraction-inv-gap-prod (pair a b) = eq-pair-eq-fiber refl abstract is-pullback-prod : diff --git a/src/foundation/universal-property-fiber-products.lagda.md b/src/foundation/universal-property-fiber-products.lagda.md index a666844b8a..161ba3149b 100644 --- a/src/foundation/universal-property-fiber-products.lagda.md +++ b/src/foundation/universal-property-fiber-products.lagda.md @@ -124,7 +124,7 @@ module _ is-retraction-inv-gap-total-prod-fibers : (inv-gap-total-prod-fibers ∘ gap-total-prod-fibers) ~ id is-retraction-inv-gap-total-prod-fibers (.(g b) , (a , p) , (b , refl)) = - eq-pair-eq-pr2 (eq-pair (eq-pair-eq-pr2 right-unit) refl) + eq-pair-eq-fiber (eq-pair (eq-pair-eq-fiber right-unit) refl) abstract is-pullback-total-prod-fibers : diff --git a/src/foundation/vectors-set-quotients.lagda.md b/src/foundation/vectors-set-quotients.lagda.md index 32423456c1..a525e57bc7 100644 --- a/src/foundation/vectors-set-quotients.lagda.md +++ b/src/foundation/vectors-set-quotients.lagda.md @@ -287,7 +287,7 @@ abstract ( all-sim-equivalence-relation n ( tail-functional-vec n A) ( λ x → R (inl x))) X f) - ( eq-pair-Σ refl + ( eq-pair-eq-fiber ( map-equiv-equiv-set-quotient-vector-quotient-map n _ _ a)) ∙ ( htpy-eq ( ap @@ -383,8 +383,7 @@ abstract eq-htpy ( λ (qa0 , qa) → ( ap f - ( eq-pair-Σ - ( refl) + ( eq-pair-eq-fiber ( is-retraction-map-inv-equiv ( equiv-set-quotient-vector n _ _) ( qa))))) @@ -444,8 +443,7 @@ abstract ( map-inv-equiv-f ∘_) ( eq-htpy ( λ (a0 , a) → - ( eq-pair-Σ - ( refl) + ( eq-pair-eq-fiber ( map-equiv-equiv-set-quotient-vector-quotient-map _ _ _ a)))))) ( eq-is-prop diff --git a/src/foundation/weak-function-extensionality.lagda.md b/src/foundation/weak-function-extensionality.lagda.md index 7e9d6bb255..3e52d4f831 100644 --- a/src/foundation/weak-function-extensionality.lagda.md +++ b/src/foundation/weak-function-extensionality.lagda.md @@ -98,7 +98,7 @@ abstract ( (x : A) → Σ (B x) (λ b → f x = b)) ( ( λ t x → (pr1 t x , pr2 t x)) , ( λ t → (pr1 ∘ t , pr2 ∘ t)) , - ( λ t → eq-pair-Σ refl refl)) + ( λ t → eq-pair-eq-fiber refl)) ( weak-funext A ( λ x → Σ (B x) (λ b → f x = b)) ( λ x → is-torsorial-Id (f x)))) diff --git a/src/graph-theory/neighbors-undirected-graphs.lagda.md b/src/graph-theory/neighbors-undirected-graphs.lagda.md index cfad0b538c..54548de3ad 100644 --- a/src/graph-theory/neighbors-undirected-graphs.lagda.md +++ b/src/graph-theory/neighbors-undirected-graphs.lagda.md @@ -76,8 +76,7 @@ neighbor-id-equiv-Undirected-Graph : (G : Undirected-Graph l1 l2) (x : vertex-Undirected-Graph G) → neighbor-equiv-Undirected-Graph G G (id-equiv-Undirected-Graph G) x ~ id neighbor-id-equiv-Undirected-Graph G x (pair y e) = - eq-pair-Σ - ( refl) + eq-pair-eq-fiber ( edge-standard-unordered-pair-vertices-id-equiv-Undirected-Graph G x y e) ``` diff --git a/src/lists/arrays.lagda.md b/src/lists/arrays.lagda.md index cd79b99a75..5efff31746 100644 --- a/src/lists/arrays.lagda.md +++ b/src/lists/arrays.lagda.md @@ -141,7 +141,7 @@ module _ ap ( λ (n , v) → (n , functional-vec-vec n v)) ( is-retraction-vec-list (n , listed-vec-functional-vec n t)) ∙ - eq-pair-Σ refl (is-retraction-functional-vec-vec n t) + eq-pair-eq-fiber (is-retraction-functional-vec-vec n t) equiv-list-array : array A ≃ list A pr1 equiv-list-array = list-array diff --git a/src/organic-chemistry/ethane.lagda.md b/src/organic-chemistry/ethane.lagda.md index 161be7117c..f974b985b5 100644 --- a/src/organic-chemistry/ethane.lagda.md +++ b/src/organic-chemistry/ethane.lagda.md @@ -166,7 +166,7 @@ module _ ( inl (inr _) , is-one) → neq-inl-inr is-one ( inr _ , is-one) → neq-inl-inr is-one)) pr2 (is-torsorial-standard-edge-ethane (inl (inr _))) (inr _ , P) = - eq-pair-Σ refl + eq-pair-eq-fiber ( eq-is-prop ( is-prop-edge-ethane ( standard-unordered-pair (inl (inr _)) (inr _)))) @@ -176,7 +176,7 @@ module _ pr2 (pr2 (pr1 (is-torsorial-standard-edge-ethane (inr _)))) = unit-trunc-Prop (zero-Fin 1 , refl) pr2 (is-torsorial-standard-edge-ethane (inr _)) (inl (inr _) , P) = - eq-pair-Σ refl + eq-pair-eq-fiber ( eq-is-prop ( is-prop-edge-ethane ( standard-unordered-pair (inr star) (inl (inr star))))) diff --git a/src/orthogonal-factorization-systems/pullback-hom.lagda.md b/src/orthogonal-factorization-systems/pullback-hom.lagda.md index 427a177297..1a1ee0a81e 100644 --- a/src/orthogonal-factorization-systems/pullback-hom.lagda.md +++ b/src/orthogonal-factorization-systems/pullback-hom.lagda.md @@ -272,15 +272,15 @@ module _ is-section-map-inv-compute-pullback-hom : is-section map-compute-pullback-hom map-inv-compute-pullback-hom is-section-map-inv-compute-pullback-hom h = - eq-pair-Σ refl - ( eq-pair-Σ refl + eq-pair-eq-fiber + ( eq-pair-eq-fiber ( is-retraction-eq-htpy (eq-coh-standard-pullback-hom f g h))) is-retraction-map-inv-compute-pullback-hom : is-retraction map-compute-pullback-hom map-inv-compute-pullback-hom is-retraction-map-inv-compute-pullback-hom h = - eq-pair-Σ refl - ( eq-pair-Σ refl (is-section-eq-htpy (coh-hom-arrow f g h))) + eq-pair-eq-fiber + ( eq-pair-eq-fiber (is-section-eq-htpy (coh-hom-arrow f g h))) abstract is-equiv-map-compute-pullback-hom : @@ -337,7 +337,7 @@ module _ ( map-compute-pullback-hom f g) ( pullback-hom f g) triangle-pullback-hom j = - eq-pair-Σ refl (eq-pair-Σ refl (is-retraction-eq-htpy refl)) + eq-pair-eq-fiber (eq-pair-eq-fiber (is-retraction-eq-htpy refl)) ``` ### The action on homotopies of the `pullback-hom` diff --git a/src/synthetic-homotopy-theory/cocones-under-spans.lagda.md b/src/synthetic-homotopy-theory/cocones-under-spans.lagda.md index fd80a58708..ee937b06f0 100644 --- a/src/synthetic-homotopy-theory/cocones-under-spans.lagda.md +++ b/src/synthetic-homotopy-theory/cocones-under-spans.lagda.md @@ -176,8 +176,8 @@ cocone-map-id : (f : S → A) (g : S → B) {X : UU l4} (c : cocone f g X) → Id (cocone-map f g c id) c cocone-map-id f g c = - eq-pair-eq-pr2 - ( eq-pair-eq-pr2 (eq-htpy (ap-id ∘ coherence-square-cocone f g c))) + eq-pair-eq-fiber + ( eq-pair-eq-fiber (eq-htpy (ap-id ∘ coherence-square-cocone f g c))) cocone-map-comp : {l1 l2 l3 l4 l5 l6 : Level} {S : UU l1} {A : UU l2} {B : UU l3} @@ -185,7 +185,7 @@ cocone-map-comp : {Y : UU l5} (h : X → Y) {Z : UU l6} (k : Y → Z) → cocone-map f g c (k ∘ h) = cocone-map f g (cocone-map f g c h) k cocone-map-comp f g (i , j , H) h k = - eq-pair-eq-pr2 (eq-pair-eq-pr2 (eq-htpy (ap-comp k h ∘ H))) + eq-pair-eq-fiber (eq-pair-eq-fiber (eq-htpy (ap-comp k h ∘ H))) ``` ### Horizontal composition of cocones diff --git a/src/synthetic-homotopy-theory/dependent-universal-property-pushouts.lagda.md b/src/synthetic-homotopy-theory/dependent-universal-property-pushouts.lagda.md index 93a31c3838..8cbfe321b5 100644 --- a/src/synthetic-homotopy-theory/dependent-universal-property-pushouts.lagda.md +++ b/src/synthetic-homotopy-theory/dependent-universal-property-pushouts.lagda.md @@ -179,7 +179,7 @@ triangle-dependent-pullback-property-pushout : ( λ (h : (b : B) → P (j b)) → λ s → h (g s)) ( cone-dependent-pullback-property-pushout f g c P))) triangle-dependent-pullback-property-pushout f g (pair i (pair j H)) P h = - eq-pair-Σ refl (eq-pair-Σ refl (inv (is-section-eq-htpy (apd h ∘ H)))) + eq-pair-eq-fiber (eq-pair-eq-fiber (inv (is-section-eq-htpy (apd h ∘ H)))) dependent-pullback-property-dependent-universal-property-pushout : {l1 l2 l3 l4 : Level} {S : UU l1} {A : UU l2} {B : UU l3} diff --git a/src/synthetic-homotopy-theory/flattening-lemma-pushouts.lagda.md b/src/synthetic-homotopy-theory/flattening-lemma-pushouts.lagda.md index 0f01ea0f94..530c1b962e 100644 --- a/src/synthetic-homotopy-theory/flattening-lemma-pushouts.lagda.md +++ b/src/synthetic-homotopy-theory/flattening-lemma-pushouts.lagda.md @@ -263,10 +263,8 @@ module _ ( map-equiv (comparison-dependent-cocone-ind-Σ-cocone Y)) ( map-equiv equiv-ev-pair³ ∘ cocone-map-flattening-pushout Y ∘ ind-Σ) triangle-comparison-dependent-cocone-ind-Σ-cocone Y h = - eq-pair-Σ - ( refl) - ( eq-pair-Σ - ( refl) + eq-pair-eq-fiber + ( eq-pair-eq-fiber ( eq-htpy ( inv-htpy ( compute-equiv-htpy-dependent-function-dependent-identification-function-type diff --git a/src/synthetic-homotopy-theory/universal-cover-circle.lagda.md b/src/synthetic-homotopy-theory/universal-cover-circle.lagda.md index cfbc166ff0..8991458d44 100644 --- a/src/synthetic-homotopy-theory/universal-cover-circle.lagda.md +++ b/src/synthetic-homotopy-theory/universal-cover-circle.lagda.md @@ -207,7 +207,7 @@ contraction-total-space {B = B} center x = path-total-path-fiber : { l1 l2 : Level} {A : UU l1} (B : A → UU l2) (x : A) → { y y' : B x} (q : Id y' y) → Id {A = Σ A B} (pair x y) (pair x y') -path-total-path-fiber B x q = eq-pair-Σ refl (inv q) +path-total-path-fiber B x q = eq-pair-eq-fiber (inv q) tr-path-total-path-fiber : { l1 l2 : Level} {A : UU l1} {B : A → UU l2} (c : Σ A B) (x : A) → diff --git a/src/synthetic-homotopy-theory/universal-property-pushouts.lagda.md b/src/synthetic-homotopy-theory/universal-property-pushouts.lagda.md index 41dd74bd99..6db8e8cba8 100644 --- a/src/synthetic-homotopy-theory/universal-property-pushouts.lagda.md +++ b/src/synthetic-homotopy-theory/universal-property-pushouts.lagda.md @@ -248,8 +248,8 @@ triangle-pullback-property-pushout-universal-property-pushout : ( ( tot (λ i' → tot (λ j' → htpy-eq))) ∘ ( gap (_∘ f) (_∘ g) (cone-pullback-property-pushout f g c Y))) triangle-pullback-property-pushout-universal-property-pushout f g c Y h = - eq-pair-Σ refl - ( eq-pair-Σ refl + eq-pair-eq-fiber + ( eq-pair-eq-fiber ( inv (is-section-eq-htpy (h ·l coherence-square-cocone f g c)))) pullback-property-pushout-universal-property-pushout : diff --git a/src/trees/combinator-directed-trees.lagda.md b/src/trees/combinator-directed-trees.lagda.md index 69e9466417..05e15871fd 100644 --- a/src/trees/combinator-directed-trees.lagda.md +++ b/src/trees/combinator-directed-trees.lagda.md @@ -508,8 +508,7 @@ module _ ex-falso (H refl) is-section-map-inv-compute-proper-node-combinator-Directed-Tree ( node-inclusion-combinator-Directed-Tree i x , H) = - eq-pair-Σ - ( refl) + eq-pair-eq-fiber ( eq-is-prop ( is-prop-is-proper-node-Directed-Tree ( combinator-Directed-Tree T) diff --git a/src/univalent-combinatorics/2-element-decidable-subtypes.lagda.md b/src/univalent-combinatorics/2-element-decidable-subtypes.lagda.md index 25e69e9870..b070c30193 100644 --- a/src/univalent-combinatorics/2-element-decidable-subtypes.lagda.md +++ b/src/univalent-combinatorics/2-element-decidable-subtypes.lagda.md @@ -368,8 +368,7 @@ preserves-comp-precomp-equiv-2-Element-Decidable-Subtype : preserves-comp-precomp-equiv-2-Element-Decidable-Subtype e f = eq-htpy ( λ (pair P H) → - eq-pair-Σ - ( refl) + eq-pair-eq-fiber ( eq-is-prop is-prop-type-trunc-Prop)) ``` diff --git a/src/univalent-combinatorics/orientations-complete-undirected-graph.lagda.md b/src/univalent-combinatorics/orientations-complete-undirected-graph.lagda.md index 9209a1d39a..5497bc58c2 100644 --- a/src/univalent-combinatorics/orientations-complete-undirected-graph.lagda.md +++ b/src/univalent-combinatorics/orientations-complete-undirected-graph.lagda.md @@ -282,8 +282,8 @@ module _ pr2 h' = is-equiv-is-invertible ( λ (pair Y np) → pair Y (λ p' → np (inv p'))) - ( λ (pair Y np) → eq-pair-Σ refl (eq-is-prop is-prop-neg)) - ( λ (pair Y np) → eq-pair-Σ refl (eq-is-prop is-prop-neg)) + ( λ (pair Y np) → eq-pair-eq-fiber (eq-is-prop is-prop-neg)) + ( λ (pair Y np) → eq-pair-eq-fiber (eq-is-prop is-prop-neg)) eq-mod-two-number-of-differences-orientation-Complete-Undirected-Graph : (d1 d2 d3 : orientation-Complete-Undirected-Graph) (m : Fin 2) → Id @@ -521,7 +521,7 @@ module _ eq-pair-Σ ( ap ( pr1 ∘ d) - ( eq-pair-Σ refl (eq-is-prop is-prop-type-trunc-Prop))) + ( eq-pair-eq-fiber (eq-is-prop is-prop-type-trunc-Prop))) ( eq-is-prop ( is-prop-type-Decidable-Prop ( pr1 Y (pr1 (map-equiv id-equiv d Y))))))) diff --git a/src/universal-algebra/algebraic-theory-of-groups.lagda.md b/src/universal-algebra/algebraic-theory-of-groups.lagda.md index 90bf61b51d..5645a87ba0 100644 --- a/src/universal-algebra/algebraic-theory-of-groups.lagda.md +++ b/src/universal-algebra/algebraic-theory-of-groups.lagda.md @@ -146,12 +146,11 @@ abstract pr1 equiv-group-Algebra-Group = group-Algebra-Group pr1 (pr1 (pr2 equiv-group-Algebra-Group)) = Group-group-Algebra pr2 (pr1 (pr2 equiv-group-Algebra-Group)) G = - eq-pair-Σ refl (eq-is-prop (is-prop-is-group (semigroup-Group G))) + eq-pair-eq-fiber (eq-is-prop (is-prop-is-group (semigroup-Group G))) pr1 (pr2 (pr2 equiv-group-Algebra-Group)) = Group-group-Algebra pr2 (pr2 (pr2 equiv-group-Algebra-Group)) A = eq-pair-Σ - ( eq-pair-Σ - ( refl) + ( eq-pair-eq-fiber ( eq-htpy ( λ where unit-group-op → eq-htpy (λ where empty-vec → refl) From c2b40f91d5194ae32cf98cbd0f4719642dd2d8d3 Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Tue, 6 Feb 2024 13:58:36 +0100 Subject: [PATCH 133/150] edits --- .../orthogonal-maps.lagda.md | 4 ++-- src/orthogonal-factorization-systems/pullback-hom.lagda.md | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/orthogonal-factorization-systems/orthogonal-maps.lagda.md b/src/orthogonal-factorization-systems/orthogonal-maps.lagda.md index 3ba2e1e337..46d8321e31 100644 --- a/src/orthogonal-factorization-systems/orthogonal-maps.lagda.md +++ b/src/orthogonal-factorization-systems/orthogonal-maps.lagda.md @@ -227,7 +227,7 @@ module _ is-orthogonal f g → is-orthogonal-pullback-condition f g is-orthogonal-pullback-condition-is-orthogonal H = is-equiv-left-map-triangle - ( gap-cone-pullback-hom f g) + ( gap-pullback-hom f g) ( map-compute-pullback-hom f g) ( pullback-hom f g) ( inv-htpy (triangle-pullback-hom f g)) @@ -238,7 +238,7 @@ module _ is-orthogonal-pullback-condition f g → is-orthogonal f g is-orthogonal-is-orthogonal-pullback-condition = is-equiv-top-map-triangle - ( gap-cone-pullback-hom f g) + ( gap-pullback-hom f g) ( map-compute-pullback-hom f g) ( pullback-hom f g) ( inv-htpy (triangle-pullback-hom f g)) diff --git a/src/orthogonal-factorization-systems/pullback-hom.lagda.md b/src/orthogonal-factorization-systems/pullback-hom.lagda.md index 1a1ee0a81e..d4419f3c7d 100644 --- a/src/orthogonal-factorization-systems/pullback-hom.lagda.md +++ b/src/orthogonal-factorization-systems/pullback-hom.lagda.md @@ -238,8 +238,8 @@ module _ pr1 (pr2 cone-pullback-hom) = precomp f X pr2 (pr2 cone-pullback-hom) = refl-htpy - gap-cone-pullback-hom : (B → X) → type-standard-pullback-hom f g - gap-cone-pullback-hom = gap (precomp f Y) (postcomp A g) cone-pullback-hom + gap-pullback-hom : (B → X) → type-standard-pullback-hom f g + gap-pullback-hom = gap (precomp f Y) (postcomp A g) cone-pullback-hom ``` ### The equivalence of the codomain of the pullback-hom with the standard pullback @@ -333,7 +333,7 @@ module _ triangle-pullback-hom : coherence-triangle-maps' - ( gap-cone-pullback-hom f g) + ( gap-pullback-hom f g) ( map-compute-pullback-hom f g) ( pullback-hom f g) triangle-pullback-hom j = From b59e8b94535502ee6c3e38ccfa7ce9313d77ad1f Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Tue, 6 Feb 2024 14:00:59 +0100 Subject: [PATCH 134/150] Update src/foundation/whiskering-homotopies-concatenation.lagda.md Co-authored-by: Fredrik Bakke --- src/foundation/whiskering-homotopies-concatenation.lagda.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/foundation/whiskering-homotopies-concatenation.lagda.md b/src/foundation/whiskering-homotopies-concatenation.lagda.md index aa4f5ac842..14569ce9d2 100644 --- a/src/foundation/whiskering-homotopies-concatenation.lagda.md +++ b/src/foundation/whiskering-homotopies-concatenation.lagda.md @@ -79,7 +79,7 @@ module _ where right-whisker-concat-htpy : - right-whiskering-operation ((x : A) → B x) _~_ _∙h_ _~_ + right-whiskering-operation ((x : A) → B x) (_~_) (_∙h_) (_~_) right-whisker-concat-htpy K J x = right-whisker-concat (K x) (J x) ``` From 4e7896e45fb5fdc3bf22ad55680dc5737a9a3c64 Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Tue, 6 Feb 2024 14:01:15 +0100 Subject: [PATCH 135/150] Update src/foundation/whiskering-homotopies-concatenation.lagda.md Co-authored-by: Fredrik Bakke --- src/foundation/whiskering-homotopies-concatenation.lagda.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/foundation/whiskering-homotopies-concatenation.lagda.md b/src/foundation/whiskering-homotopies-concatenation.lagda.md index 14569ce9d2..7301a2938b 100644 --- a/src/foundation/whiskering-homotopies-concatenation.lagda.md +++ b/src/foundation/whiskering-homotopies-concatenation.lagda.md @@ -58,7 +58,7 @@ module _ where left-whisker-concat-htpy : - left-whiskering-operation ((x : A) → B x) _~_ _∙h_ _~_ + left-whiskering-operation ((x : A) → B x) (_~_) (_∙h_) (_~_) left-whisker-concat-htpy H K x = left-whisker-concat (H x) (K x) ``` From 58ae443dd51cffc78a7d86ac2fea51346e9fd6c3 Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Tue, 6 Feb 2024 14:01:33 +0100 Subject: [PATCH 136/150] Update src/foundation/whiskering-homotopies-concatenation.lagda.md Co-authored-by: Fredrik Bakke --- src/foundation/whiskering-homotopies-concatenation.lagda.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/foundation/whiskering-homotopies-concatenation.lagda.md b/src/foundation/whiskering-homotopies-concatenation.lagda.md index 7301a2938b..d59a8fc91e 100644 --- a/src/foundation/whiskering-homotopies-concatenation.lagda.md +++ b/src/foundation/whiskering-homotopies-concatenation.lagda.md @@ -23,7 +23,7 @@ open import foundation-core.homotopies 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 ∙ I ~ H ∙ J`. In other words, left whiskering of +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) From adc703d2e06efa9dc63ec2f52bdb16fff326d22d Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Tue, 6 Feb 2024 14:01:53 +0100 Subject: [PATCH 137/150] Update src/foundation/whiskering-homotopies-composition.lagda.md Co-authored-by: Fredrik Bakke --- src/foundation/whiskering-homotopies-composition.lagda.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/foundation/whiskering-homotopies-composition.lagda.md b/src/foundation/whiskering-homotopies-composition.lagda.md index 67a5750e9f..46c6189b7d 100644 --- a/src/foundation/whiskering-homotopies-composition.lagda.md +++ b/src/foundation/whiskering-homotopies-composition.lagda.md @@ -33,7 +33,7 @@ the form g ``` -and is defined to be a function `H ↦ h ·l H : (f ~ g) → (h ∘ f ~ h ∘ g)`. The +and is defined to be the function `H ↦ h ·l H : (f ~ g) → (h ∘ f ~ h ∘ g)`. The {{#concept "right whiskering" Disambiguation="homotopies with respect to composition" Agda=right-whisker-comp}} operation of homotopies with respect to composition assumes a diagram of maps the form From f7529cdf2f678b18a40aa583889dbaf606c4bd04 Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Tue, 6 Feb 2024 14:02:09 +0100 Subject: [PATCH 138/150] Update src/foundation/whiskering-homotopies-composition.lagda.md Co-authored-by: Fredrik Bakke --- src/foundation/whiskering-homotopies-composition.lagda.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/foundation/whiskering-homotopies-composition.lagda.md b/src/foundation/whiskering-homotopies-composition.lagda.md index 46c6189b7d..12a6729411 100644 --- a/src/foundation/whiskering-homotopies-composition.lagda.md +++ b/src/foundation/whiskering-homotopies-composition.lagda.md @@ -45,7 +45,7 @@ the form h ``` -and is defined to be a function `H ↦ H ·r f : (g ~ h) → (g ∘ f ~ h ∘ f)`. +and is defined to be the function `H ↦ H ·r f : (g ~ h) → (g ∘ f ~ h ∘ f)`. **Note.** The infix whiskering operators `_·l_` and `_·r_` use the [middle dot](https://codepoints.net/U+00B7) `·` (agda-input: `\cdot` From 053b29935f74e8aa9317ad835f7b9990a66b2046 Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Tue, 6 Feb 2024 14:04:21 +0100 Subject: [PATCH 139/150] edit --- src/foundation/whiskering-homotopies-concatenation.lagda.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/foundation/whiskering-homotopies-concatenation.lagda.md b/src/foundation/whiskering-homotopies-concatenation.lagda.md index aa4f5ac842..4705733644 100644 --- a/src/foundation/whiskering-homotopies-concatenation.lagda.md +++ b/src/foundation/whiskering-homotopies-concatenation.lagda.md @@ -32,7 +32,7 @@ homotopies with respect to concatenation is a ``` Similarly, we introduce -{{#concept 'right whiskering" Disambiguation="homotopies with respect to concatenation' Agda=right-whisker-concat-htpy}} +{{#concept "right whiskering" Disambiguation="homotopies with respect to concatenation' Agda=right-whisker-concat-htpy}} to be an operation ```text From 52071b4a9451c7a7faad5cfc7e5e9c0095b23f71 Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Tue, 6 Feb 2024 14:04:54 +0100 Subject: [PATCH 140/150] make pre-commit --- src/foundation/whiskering-homotopies-concatenation.lagda.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/foundation/whiskering-homotopies-concatenation.lagda.md b/src/foundation/whiskering-homotopies-concatenation.lagda.md index 0b174c9909..9803a73be7 100644 --- a/src/foundation/whiskering-homotopies-concatenation.lagda.md +++ b/src/foundation/whiskering-homotopies-concatenation.lagda.md @@ -23,8 +23,8 @@ open import foundation-core.homotopies 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 +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 From 012d9cda608df002aa6c451876accfee2dd100ad Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Tue, 6 Feb 2024 14:26:36 +0100 Subject: [PATCH 141/150] lifting structures of squares --- src/orthogonal-factorization-systems.lagda.md | 2 +- ...ation-operations-function-classes.lagda.md | 2 +- .../lifting-squares.lagda.md | 330 ---------------- .../lifting-structures-on-squares.lagda.md | 360 ++++++++++++++++++ .../orthogonal-factorization-systems.lagda.md | 2 +- .../orthogonal-maps.lagda.md | 16 +- .../pullback-hom.lagda.md | 4 +- 7 files changed, 373 insertions(+), 343 deletions(-) delete mode 100644 src/orthogonal-factorization-systems/lifting-squares.lagda.md create mode 100644 src/orthogonal-factorization-systems/lifting-structures-on-squares.lagda.md diff --git a/src/orthogonal-factorization-systems.lagda.md b/src/orthogonal-factorization-systems.lagda.md index 44d745a65d..0a15faea26 100644 --- a/src/orthogonal-factorization-systems.lagda.md +++ b/src/orthogonal-factorization-systems.lagda.md @@ -29,7 +29,7 @@ open import orthogonal-factorization-systems.global-function-classes public open import orthogonal-factorization-systems.higher-modalities public open import orthogonal-factorization-systems.identity-modality public open import orthogonal-factorization-systems.lifting-operations public -open import orthogonal-factorization-systems.lifting-squares public +open import orthogonal-factorization-systems.lifting-structures-on-squares public open import orthogonal-factorization-systems.lifts-families-of-elements public open import orthogonal-factorization-systems.lifts-of-maps public open import orthogonal-factorization-systems.local-families-of-types public diff --git a/src/orthogonal-factorization-systems/factorization-operations-function-classes.lagda.md b/src/orthogonal-factorization-systems/factorization-operations-function-classes.lagda.md index 0f77d93556..5875a25b02 100644 --- a/src/orthogonal-factorization-systems/factorization-operations-function-classes.lagda.md +++ b/src/orthogonal-factorization-systems/factorization-operations-function-classes.lagda.md @@ -30,7 +30,7 @@ open import foundation.whiskering-homotopies-composition open import orthogonal-factorization-systems.factorizations-of-maps open import orthogonal-factorization-systems.factorizations-of-maps-function-classes open import orthogonal-factorization-systems.function-classes -open import orthogonal-factorization-systems.lifting-squares +open import orthogonal-factorization-systems.lifting-structures-on-squares ``` diff --git a/src/orthogonal-factorization-systems/lifting-squares.lagda.md b/src/orthogonal-factorization-systems/lifting-squares.lagda.md deleted file mode 100644 index 4d942ffdee..0000000000 --- a/src/orthogonal-factorization-systems/lifting-squares.lagda.md +++ /dev/null @@ -1,330 +0,0 @@ -# Lifting squares - -```agda -module orthogonal-factorization-systems.lifting-squares where -``` - -
Imports - -```agda -open import foundation.action-on-identifications-functions -open import foundation.commuting-squares-of-homotopies -open import foundation.commuting-squares-of-maps -open import foundation.commuting-tetrahedra-of-homotopies -open import foundation.commuting-triangles-of-homotopies -open import foundation.commuting-triangles-of-identifications -open import foundation.dependent-pair-types -open import foundation.equivalences -open import foundation.fibers-of-maps -open import foundation.function-types -open import foundation.functoriality-dependent-pair-types -open import foundation.fundamental-theorem-of-identity-types -open import foundation.higher-homotopies-morphisms-arrows -open import foundation.homotopies -open import foundation.homotopies-morphisms-arrows -open import foundation.homotopy-induction -open import foundation.identity-types -open import foundation.morphisms-arrows -open import foundation.path-algebra -open import foundation.structure-identity-principle -open import foundation.torsorial-type-families -open import foundation.type-arithmetic-dependent-pair-types -open import foundation.universe-levels -open import foundation.whiskering-homotopies-composition -open import foundation.whiskering-identifications-concatenation - -open import orthogonal-factorization-systems.extensions-of-maps -open import orthogonal-factorization-systems.lifts-of-maps -open import orthogonal-factorization-systems.pullback-hom -``` - -
- -## Idea - -A **lifting square** of a commuting square - -```text - h - A ------> X - | | - f| |g - | | - ∨ ∨ - B ------> Y - i -``` - -consists of a diagonal map `j : B → B` such that the complete diagram - -```text - h - A --------> X - | ∧ | - f| j / |g - | / | - ∨ / ∨ - B --------> Y - i -``` - -commutes. We note that there is a canonical map - -```text - pullback-hom : (B → X) → hom-arrow f g. -``` - -Therefore we see that a lifting square consists of a morphism -`α : hom-arrow f g` of arrows from `f` to `g`, a map `j : B → X`, and a homotopy -of morphisms of arrow `pullback-hom f ~ α`. - -## Definitions - -### The predicate of being a lifting square - -```agda -module _ - {l1 l2 l3 l4 : Level} - {A : UU l1} {X : UU l2} {B : UU l3} {Y : UU l4} - (f : A → B) (g : X → Y) (α : hom-arrow f g) (j : B → X) - where - - is-lifting-square : UU (l1 ⊔ l2 ⊔ l3 ⊔ l4) - is-lifting-square = htpy-hom-arrow f g α (pullback-hom f g j) - - is-extension-is-lifting-square : - is-lifting-square → - is-extension f (map-domain-hom-arrow f g α) j - is-extension-is-lifting-square = pr1 - - is-lift-is-lifting-square : - is-lifting-square → is-lift g (map-codomain-hom-arrow f g α) j - is-lift-is-lifting-square = pr1 ∘ pr2 - - coherence-is-lifting-square : - (l : is-lifting-square) → - coherence-square-homotopies - ( is-lift-is-lifting-square l ·r f) - ( coh-hom-arrow f g α) - ( coh-pullback-hom f g j) - ( g ·l is-extension-is-lifting-square l) - coherence-is-lifting-square = pr2 ∘ pr2 -``` - -### Lifting squares - -```agda -module _ - {l1 l2 l3 l4 : Level} - {A : UU l1} {X : UU l2} {B : UU l3} {Y : UU l4} - (f : A → B) (g : X → Y) (α : hom-arrow f g) - where - - lifting-square : UU (l1 ⊔ l2 ⊔ l3 ⊔ l4) - lifting-square = Σ (B → X) (is-lifting-square f g α) - - diagonal-map-lifting-square : lifting-square → (B → X) - diagonal-map-lifting-square = pr1 - - is-lifting-diagonal-map-lifting-square : - (l : lifting-square) → - is-lifting-square f g α (diagonal-map-lifting-square l) - is-lifting-diagonal-map-lifting-square = pr2 - - is-extension-lifting-square : - (l : lifting-square) → - is-extension f (map-domain-hom-arrow f g α) (diagonal-map-lifting-square l) - is-extension-lifting-square = pr1 ∘ pr2 - - extension-lifting-square : - lifting-square → extension f (map-domain-hom-arrow f g α) - pr1 (extension-lifting-square L) = diagonal-map-lifting-square L - pr2 (extension-lifting-square L) = is-extension-lifting-square L - - is-lift-lifting-square : - (l : lifting-square) → - is-lift g (map-codomain-hom-arrow f g α) (diagonal-map-lifting-square l) - is-lift-lifting-square = pr1 ∘ (pr2 ∘ pr2) - - lift-lifting-square : lifting-square → lift g (map-codomain-hom-arrow f g α) - pr1 (lift-lifting-square L) = diagonal-map-lifting-square L - pr2 (lift-lifting-square L) = is-lift-lifting-square L - - coherence-lifting-square : - (l : lifting-square) → - coherence-square-homotopies - ( is-lift-lifting-square l ·r f) - ( coh-hom-arrow f g α) - ( coh-pullback-hom f g (diagonal-map-lifting-square l)) - ( g ·l is-extension-lifting-square l) - coherence-lifting-square = pr2 ∘ (pr2 ∘ pr2) -``` - -### Homotopies of lifting squares - -```agda -module _ - {l1 l2 l3 l4 : Level} - {A : UU l1} {X : UU l2} {B : UU l3} {Y : UU l4} - (f : A → B) (g : X → Y) (α : hom-arrow f g) - (k l : lifting-square f g α) - where - - coherence-htpy-lifting-square : - diagonal-map-lifting-square f g α k ~ diagonal-map-lifting-square f g α l → - UU (l1 ⊔ l2 ⊔ l3 ⊔ l4) - coherence-htpy-lifting-square H = - htpy-htpy-hom-arrow f g α - ( pullback-hom f g (diagonal-map-lifting-square f g α l)) - ( concat-htpy-hom-arrow f g α - ( pullback-hom f g (diagonal-map-lifting-square f g α k)) - ( pullback-hom f g (diagonal-map-lifting-square f g α l)) - ( is-lifting-diagonal-map-lifting-square f g α k) - ( htpy-hom-arrow-htpy f g H)) - ( is-lifting-diagonal-map-lifting-square f g α l) - - htpy-lifting-square : UU (l1 ⊔ l2 ⊔ l3 ⊔ l4) - htpy-lifting-square = - Σ ( diagonal-map-lifting-square f g α k ~ - diagonal-map-lifting-square f g α l) - ( coherence-htpy-lifting-square) - - module _ - (H : htpy-lifting-square) - where - - htpy-diagonal-map-htpy-lifting-square : - diagonal-map-lifting-square f g α k ~ diagonal-map-lifting-square f g α l - htpy-diagonal-map-htpy-lifting-square = pr1 H - - coh-htpy-lifting-square : - coherence-htpy-lifting-square htpy-diagonal-map-htpy-lifting-square - coh-htpy-lifting-square = pr2 H -``` - -### The reflexivity homotopy of a lifting square - -```agda -module _ - {l1 l2 l3 l4 : Level} - {A : UU l1} {X : UU l2} {B : UU l3} {Y : UU l4} - (f : A → B) (g : X → Y) (α : hom-arrow f g) - (k : lifting-square f g α) - where - - htpy-diagonal-map-refl-htpy-lifting-square : - diagonal-map-lifting-square f g α k ~ diagonal-map-lifting-square f g α k - htpy-diagonal-map-refl-htpy-lifting-square = refl-htpy - - coh-refl-htpy-lifting-square : - coherence-htpy-lifting-square f g α k k - ( htpy-diagonal-map-refl-htpy-lifting-square) - coh-refl-htpy-lifting-square = - right-unit-law-concat-htpy-hom-arrow f g α - ( pullback-hom f g (diagonal-map-lifting-square f g α k)) - ( is-lifting-diagonal-map-lifting-square f g α k) - - refl-htpy-lifting-square : htpy-lifting-square f g α k k - pr1 refl-htpy-lifting-square = htpy-diagonal-map-refl-htpy-lifting-square - pr2 refl-htpy-lifting-square = coh-refl-htpy-lifting-square -``` - -### Trivial lifting squares - -The diagram - -```text - A X - | ^ | - f| j / |g - | / | - V / V - B Y -``` - -gives rise to a lifting square - -```text - j ∘ f - A ------> X - | ∧ | - f | j / | g - | / | - ∨ / ∨ - B -------> Y - g ∘ j -``` - -```agda -module _ - {l1 l2 l3 l4 : Level} {A : UU l1} {X : UU l2} {B : UU l3} {Y : UU l4} - (f : A → B) (g : X → Y) - where - - is-lifting-square-pullback-hom : - (j : B → X) → is-lifting-square f g (pullback-hom f g j) j - is-lifting-square-pullback-hom j = - refl-htpy-hom-arrow f g (pullback-hom f g j) -``` - -## Properties - -### The types of lifting squares are equivalent to the fibers of the pullback-hom - -```agda -module _ - {l1 l2 l3 l4 : Level} {A : UU l1} {B : UU l2} {X : UU l3} {Y : UU l4} - (f : A → B) (g : X → Y) (h : hom-arrow f g) - where - - inv-compute-fiber-pullback-hom : - fiber (pullback-hom f g) h ≃ lifting-square f g h - inv-compute-fiber-pullback-hom = - equiv-tot - ( λ j → - extensionality-hom-arrow f g _ _ ∘e - equiv-inv (pullback-hom f g j) h) - - compute-fiber-pullback-hom : - lifting-square f g h ≃ fiber (pullback-hom f g) h - compute-fiber-pullback-hom = inv-equiv inv-compute-fiber-pullback-hom -``` - -### Characterization of identifications of lifting squares - -```agda -module _ - {l1 l2 l3 l4 : Level} {A : UU l1} {B : UU l2} {X : UU l3} {Y : UU l4} - (f : A → B) (g : X → Y) (α : hom-arrow f g) (l : lifting-square f g α) - where - - htpy-eq-lifting-square : - (k : lifting-square f g α) → l = k → htpy-lifting-square f g α l k - htpy-eq-lifting-square .l refl = refl-htpy-lifting-square f g α l - - is-torsorial-htpy-lifting-square : - is-torsorial (htpy-lifting-square f g α l) - is-torsorial-htpy-lifting-square = - is-torsorial-Eq-structure - ( is-torsorial-htpy _) - ( diagonal-map-lifting-square f g α l , refl-htpy) - ( is-torsorial-htpy-htpy-hom-arrow f g α - ( pullback-hom f g (diagonal-map-lifting-square f g α l)) - ( _)) - - is-equiv-htpy-eq-lifting-square : - (k : lifting-square f g α) → is-equiv (htpy-eq-lifting-square k) - is-equiv-htpy-eq-lifting-square = - fundamental-theorem-id - ( is-torsorial-htpy-lifting-square) - ( htpy-eq-lifting-square) - - extensionality-lifting-square : - (k : lifting-square f g α) → (l = k) ≃ htpy-lifting-square f g α l k - pr1 (extensionality-lifting-square k) = htpy-eq-lifting-square k - pr2 (extensionality-lifting-square k) = is-equiv-htpy-eq-lifting-square k - - eq-htpy-lifting-square : - (k : lifting-square f g α) → htpy-lifting-square f g α l k → l = k - eq-htpy-lifting-square k = map-inv-equiv (extensionality-lifting-square k) -``` diff --git a/src/orthogonal-factorization-systems/lifting-structures-on-squares.lagda.md b/src/orthogonal-factorization-systems/lifting-structures-on-squares.lagda.md new file mode 100644 index 0000000000..acabddb968 --- /dev/null +++ b/src/orthogonal-factorization-systems/lifting-structures-on-squares.lagda.md @@ -0,0 +1,360 @@ +# Lifting structures on commuting squares of maps + +```agda +module orthogonal-factorization-systems.lifting-structures-on-squares where +``` + +
Imports + +```agda +open import foundation.action-on-identifications-functions +open import foundation.commuting-squares-of-homotopies +open import foundation.commuting-squares-of-maps +open import foundation.commuting-tetrahedra-of-homotopies +open import foundation.commuting-triangles-of-homotopies +open import foundation.commuting-triangles-of-identifications +open import foundation.dependent-pair-types +open import foundation.equivalences +open import foundation.fibers-of-maps +open import foundation.function-types +open import foundation.functoriality-dependent-pair-types +open import foundation.fundamental-theorem-of-identity-types +open import foundation.higher-homotopies-morphisms-arrows +open import foundation.homotopies +open import foundation.homotopies-morphisms-arrows +open import foundation.homotopy-induction +open import foundation.identity-types +open import foundation.morphisms-arrows +open import foundation.path-algebra +open import foundation.structure-identity-principle +open import foundation.torsorial-type-families +open import foundation.type-arithmetic-dependent-pair-types +open import foundation.universe-levels +open import foundation.whiskering-homotopies-composition +open import foundation.whiskering-identifications-concatenation + +open import orthogonal-factorization-systems.extensions-of-maps +open import orthogonal-factorization-systems.lifts-of-maps +open import orthogonal-factorization-systems.pullback-hom +``` + +
+ +## Idea + +A +{{#concept "lifting structure" Disambiguation="commuting square of maps" Agda=lifting-square}} +of a commuting square + +```text + h + A ------> X + | | + f| |g + | | + ∨ ∨ + B ------> Y + i +``` + +consists of a +{{#concept "diagonal lift" Disambiguation="commuting square of maps" Agda=is-diagonal-lift-square}} +`j : B → X` such that the complete diagram + +```text + h + A --------> X + | ∧ | + f | j / | g + | / | + ∨ / ∨ + B --------> Y + i +``` + +commutes. We note that there is a canonical map + +```text + pullback-hom : (B → X) → hom-arrow f g. +``` + +Therefore we see that a lifting square consists of a +[morphism of arrows](foundation.morphisms-arrows.md) `α : hom-arrow f g` from +`f` to `g`, a map `j : B → X`, and a +[homotopy of morphisms of arrows](foundation.homotopies-morphisms-arrows.md) +`pullback-hom f ~ α`. + +## Definitions + +### The predicate of being a diagonal lift of a square + +```agda +module _ + {l1 l2 l3 l4 : Level} + {A : UU l1} {X : UU l2} {B : UU l3} {Y : UU l4} + (f : A → B) (g : X → Y) (α : hom-arrow f g) (j : B → X) + where + + is-diagonal-lift-square : UU (l1 ⊔ l2 ⊔ l3 ⊔ l4) + is-diagonal-lift-square = htpy-hom-arrow f g α (pullback-hom f g j) + + is-extension-is-diagonal-lift-square : + is-diagonal-lift-square → + is-extension f (map-domain-hom-arrow f g α) j + is-extension-is-diagonal-lift-square = pr1 + + is-lift-is-diagonal-lift-square : + is-diagonal-lift-square → is-lift g (map-codomain-hom-arrow f g α) j + is-lift-is-diagonal-lift-square = pr1 ∘ pr2 + + coherence-is-diagonal-lift-square : + (l : is-diagonal-lift-square) → + coherence-square-homotopies + ( is-lift-is-diagonal-lift-square l ·r f) + ( coh-hom-arrow f g α) + ( coh-pullback-hom f g j) + ( g ·l is-extension-is-diagonal-lift-square l) + coherence-is-diagonal-lift-square = pr2 ∘ pr2 +``` + +### Lifting structures on squares + +```agda +module _ + {l1 l2 l3 l4 : Level} + {A : UU l1} {X : UU l2} {B : UU l3} {Y : UU l4} + (f : A → B) (g : X → Y) (α : hom-arrow f g) + where + + lifting-structure-square : UU (l1 ⊔ l2 ⊔ l3 ⊔ l4) + lifting-structure-square = Σ (B → X) (is-diagonal-lift-square f g α) + + diagonal-map-lifting-structure-square : lifting-structure-square → (B → X) + diagonal-map-lifting-structure-square = pr1 + + is-lifting-diagonal-map-lifting-structure-square : + (l : lifting-structure-square) → + is-diagonal-lift-square f g α (diagonal-map-lifting-structure-square l) + is-lifting-diagonal-map-lifting-structure-square = pr2 + + is-extension-lifting-structure-square : + (l : lifting-structure-square) → + is-extension f + ( map-domain-hom-arrow f g α) + ( diagonal-map-lifting-structure-square l) + is-extension-lifting-structure-square = pr1 ∘ pr2 + + extension-lifting-structure-square : + lifting-structure-square → extension f (map-domain-hom-arrow f g α) + pr1 (extension-lifting-structure-square L) = + diagonal-map-lifting-structure-square L + pr2 (extension-lifting-structure-square L) = + is-extension-lifting-structure-square L + + is-lift-lifting-structure-square : + (l : lifting-structure-square) → + is-lift g + ( map-codomain-hom-arrow f g α) + ( diagonal-map-lifting-structure-square l) + is-lift-lifting-structure-square = pr1 ∘ (pr2 ∘ pr2) + + lift-lifting-structure-square : + lifting-structure-square → lift g (map-codomain-hom-arrow f g α) + pr1 (lift-lifting-structure-square L) = + diagonal-map-lifting-structure-square L + pr2 (lift-lifting-structure-square L) = + is-lift-lifting-structure-square L + + coherence-lifting-structure-square : + (l : lifting-structure-square) → + coherence-square-homotopies + ( is-lift-lifting-structure-square l ·r f) + ( coh-hom-arrow f g α) + ( coh-pullback-hom f g (diagonal-map-lifting-structure-square l)) + ( g ·l is-extension-lifting-structure-square l) + coherence-lifting-structure-square = pr2 ∘ (pr2 ∘ pr2) +``` + +### Homotopies of lifting squares + +```agda +module _ + {l1 l2 l3 l4 : Level} + {A : UU l1} {X : UU l2} {B : UU l3} {Y : UU l4} + (f : A → B) (g : X → Y) (α : hom-arrow f g) + (k l : lifting-structure-square f g α) + where + + coherence-htpy-lifting-structure-square : + diagonal-map-lifting-structure-square f g α k ~ + diagonal-map-lifting-structure-square f g α l → + UU (l1 ⊔ l2 ⊔ l3 ⊔ l4) + coherence-htpy-lifting-structure-square H = + htpy-htpy-hom-arrow f g α + ( pullback-hom f g (diagonal-map-lifting-structure-square f g α l)) + ( concat-htpy-hom-arrow f g α + ( pullback-hom f g (diagonal-map-lifting-structure-square f g α k)) + ( pullback-hom f g (diagonal-map-lifting-structure-square f g α l)) + ( is-lifting-diagonal-map-lifting-structure-square f g α k) + ( htpy-hom-arrow-htpy f g H)) + ( is-lifting-diagonal-map-lifting-structure-square f g α l) + + htpy-lifting-structure-square : UU (l1 ⊔ l2 ⊔ l3 ⊔ l4) + htpy-lifting-structure-square = + Σ ( diagonal-map-lifting-structure-square f g α k ~ + diagonal-map-lifting-structure-square f g α l) + ( coherence-htpy-lifting-structure-square) + + module _ + (H : htpy-lifting-structure-square) + where + + htpy-diagonal-map-htpy-lifting-structure-square : + diagonal-map-lifting-structure-square f g α k ~ + diagonal-map-lifting-structure-square f g α l + htpy-diagonal-map-htpy-lifting-structure-square = pr1 H + + coh-htpy-lifting-structure-square : + coherence-htpy-lifting-structure-square + ( htpy-diagonal-map-htpy-lifting-structure-square) + coh-htpy-lifting-structure-square = pr2 H +``` + +### The reflexivity homotopy of a lifting square + +```agda +module _ + {l1 l2 l3 l4 : Level} + {A : UU l1} {X : UU l2} {B : UU l3} {Y : UU l4} + (f : A → B) (g : X → Y) (α : hom-arrow f g) + (k : lifting-structure-square f g α) + where + + htpy-diagonal-map-refl-htpy-lifting-structure-square : + diagonal-map-lifting-structure-square f g α k ~ + diagonal-map-lifting-structure-square f g α k + htpy-diagonal-map-refl-htpy-lifting-structure-square = refl-htpy + + coh-refl-htpy-lifting-structure-square : + coherence-htpy-lifting-structure-square f g α k k + ( htpy-diagonal-map-refl-htpy-lifting-structure-square) + coh-refl-htpy-lifting-structure-square = + right-unit-law-concat-htpy-hom-arrow f g α + ( pullback-hom f g (diagonal-map-lifting-structure-square f g α k)) + ( is-lifting-diagonal-map-lifting-structure-square f g α k) + + refl-htpy-lifting-structure-square : htpy-lifting-structure-square f g α k k + pr1 refl-htpy-lifting-structure-square = + htpy-diagonal-map-refl-htpy-lifting-structure-square + pr2 refl-htpy-lifting-structure-square = + coh-refl-htpy-lifting-structure-square +``` + +### Trivial lifting squares + +The diagram + +```text + A X + | ∧ | + f | j / |g + | / | + ∨ / ∨ + B Y +``` + +gives rise to a lifting square + +```text + j ∘ f + A -------> X + | ∧ | + f | j / | g + | / | + ∨ / ∨ + B -------> Y + g ∘ j +``` + +```agda +module _ + {l1 l2 l3 l4 : Level} {A : UU l1} {X : UU l2} {B : UU l3} {Y : UU l4} + (f : A → B) (g : X → Y) + where + + is-diagonal-lift-square-pullback-hom : + (j : B → X) → is-diagonal-lift-square f g (pullback-hom f g j) j + is-diagonal-lift-square-pullback-hom j = + refl-htpy-hom-arrow f g (pullback-hom f g j) +``` + +## Properties + +### The types of lifting squares are equivalent to the fibers of the pullback-hom + +```agda +module _ + {l1 l2 l3 l4 : Level} {A : UU l1} {B : UU l2} {X : UU l3} {Y : UU l4} + (f : A → B) (g : X → Y) (h : hom-arrow f g) + where + + inv-compute-fiber-pullback-hom : + fiber (pullback-hom f g) h ≃ lifting-structure-square f g h + inv-compute-fiber-pullback-hom = + equiv-tot + ( λ j → + extensionality-hom-arrow f g _ _ ∘e + equiv-inv (pullback-hom f g j) h) + + compute-fiber-pullback-hom : + lifting-structure-square f g h ≃ fiber (pullback-hom f g) h + compute-fiber-pullback-hom = inv-equiv inv-compute-fiber-pullback-hom +``` + +### Characterization of identifications of lifting squares + +```agda +module _ + {l1 l2 l3 l4 : Level} {A : UU l1} {B : UU l2} {X : UU l3} {Y : UU l4} + (f : A → B) (g : X → Y) (α : hom-arrow f g) + (l : lifting-structure-square f g α) + where + + htpy-eq-lifting-structure-square : + (k : lifting-structure-square f g α) → + l = k → htpy-lifting-structure-square f g α l k + htpy-eq-lifting-structure-square .l refl = + refl-htpy-lifting-structure-square f g α l + + is-torsorial-htpy-lifting-structure-square : + is-torsorial (htpy-lifting-structure-square f g α l) + is-torsorial-htpy-lifting-structure-square = + is-torsorial-Eq-structure + ( is-torsorial-htpy _) + ( diagonal-map-lifting-structure-square f g α l , refl-htpy) + ( is-torsorial-htpy-htpy-hom-arrow f g α + ( pullback-hom f g (diagonal-map-lifting-structure-square f g α l)) + ( _)) + + is-equiv-htpy-eq-lifting-structure-square : + (k : lifting-structure-square f g α) → + is-equiv (htpy-eq-lifting-structure-square k) + is-equiv-htpy-eq-lifting-structure-square = + fundamental-theorem-id + ( is-torsorial-htpy-lifting-structure-square) + ( htpy-eq-lifting-structure-square) + + extensionality-lifting-structure-square : + (k : lifting-structure-square f g α) → + (l = k) ≃ htpy-lifting-structure-square f g α l k + pr1 (extensionality-lifting-structure-square k) = + htpy-eq-lifting-structure-square k + pr2 (extensionality-lifting-structure-square k) = + is-equiv-htpy-eq-lifting-structure-square k + + eq-htpy-lifting-structure-square : + (k : lifting-structure-square f g α) → + htpy-lifting-structure-square f g α l k → l = k + eq-htpy-lifting-structure-square k = + map-inv-equiv (extensionality-lifting-structure-square k) +``` diff --git a/src/orthogonal-factorization-systems/orthogonal-factorization-systems.lagda.md b/src/orthogonal-factorization-systems/orthogonal-factorization-systems.lagda.md index 2081e4dc56..a76ade2a8b 100644 --- a/src/orthogonal-factorization-systems/orthogonal-factorization-systems.lagda.md +++ b/src/orthogonal-factorization-systems/orthogonal-factorization-systems.lagda.md @@ -24,7 +24,7 @@ open import orthogonal-factorization-systems.factorization-operations-function-c open import orthogonal-factorization-systems.factorizations-of-maps open import orthogonal-factorization-systems.factorizations-of-maps-function-classes open import orthogonal-factorization-systems.function-classes -open import orthogonal-factorization-systems.lifting-squares +open import orthogonal-factorization-systems.lifting-structures-on-squares open import orthogonal-factorization-systems.wide-function-classes ``` diff --git a/src/orthogonal-factorization-systems/orthogonal-maps.lagda.md b/src/orthogonal-factorization-systems/orthogonal-maps.lagda.md index 46d8321e31..49375c51bd 100644 --- a/src/orthogonal-factorization-systems/orthogonal-maps.lagda.md +++ b/src/orthogonal-factorization-systems/orthogonal-maps.lagda.md @@ -39,7 +39,7 @@ open import foundation.universal-property-pullbacks open import foundation.universe-levels open import foundation.whiskering-homotopies-composition -open import orthogonal-factorization-systems.lifting-squares +open import orthogonal-factorization-systems.lifting-structures-on-squares open import orthogonal-factorization-systems.local-types open import orthogonal-factorization-systems.pullback-hom ``` @@ -193,24 +193,24 @@ module _ (f : A → B) (g : X → Y) where - unique-lifting-squares-is-orthogonal : + unique-lifting-structure-squares-is-orthogonal : is-orthogonal f g → (h : hom-arrow f g) → - is-contr (lifting-square f g h) - unique-lifting-squares-is-orthogonal H h = + is-contr (lifting-structure-square f g h) + unique-lifting-structure-squares-is-orthogonal H h = is-contr-equiv ( fiber (pullback-hom f g) h) ( compute-fiber-pullback-hom f g h) ( is-contr-map-is-equiv H h) - is-orthogonal-unique-lifting-squares : - ( (h : hom-arrow f g) → is-contr (lifting-square f g h)) → + is-orthogonal-unique-lifting-structure-squares : + ( (h : hom-arrow f g) → is-contr (lifting-structure-square f g h)) → is-orthogonal f g - is-orthogonal-unique-lifting-squares H = + is-orthogonal-unique-lifting-structure-squares H = is-equiv-is-contr-map ( λ h → is-contr-equiv' - ( lifting-square f g h) + ( lifting-structure-square f g h) ( compute-fiber-pullback-hom f g h) ( H h)) ``` diff --git a/src/orthogonal-factorization-systems/pullback-hom.lagda.md b/src/orthogonal-factorization-systems/pullback-hom.lagda.md index d4419f3c7d..872990d632 100644 --- a/src/orthogonal-factorization-systems/pullback-hom.lagda.md +++ b/src/orthogonal-factorization-systems/pullback-hom.lagda.md @@ -88,8 +88,8 @@ in the diagram ``` The [fibers](foundation-core.fibers-of-maps.md) of the pullback-hom are -[lifting squares](orthogonal-factorization-systems.lifting-squares.md). The -pullback-hom is therefore a fundamental operation in the study of +[lifting squares](orthogonal-factorization-systems.lifting-structures-on-squares.md). +The pullback-hom is therefore a fundamental operation in the study of [lifting conditions](orthogonal-factorization-systems.mere-lifting-properties.md) and [orthogonality conditions](orthogonal-factorization-systems.orthogonal-maps.md): From ac916e5dac5151823d7d2c89d36a50f5ad3f8b15 Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Tue, 6 Feb 2024 14:39:09 +0100 Subject: [PATCH 142/150] more eq-pair-eq-fiber --- src/foundation-core/fibers-of-maps.lagda.md | 2 +- src/foundation/decidable-equality.lagda.md | 2 +- src/foundation/dependent-binomial-theorem.lagda.md | 4 ++-- src/foundation/fibers-of-maps.lagda.md | 2 +- src/foundation/type-arithmetic-dependent-pair-types.lagda.md | 2 +- src/linear-algebra/vectors.lagda.md | 2 +- src/lists/lists.lagda.md | 2 +- src/trees/bases-directed-trees.lagda.md | 2 +- 8 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/foundation-core/fibers-of-maps.lagda.md b/src/foundation-core/fibers-of-maps.lagda.md index 3533e4d0b5..04265a462b 100644 --- a/src/foundation-core/fibers-of-maps.lagda.md +++ b/src/foundation-core/fibers-of-maps.lagda.md @@ -140,7 +140,7 @@ module _ eq-Eq-fiber-uncurry' : {s t : fiber' f b} → Eq-fiber' s t → s = t eq-Eq-fiber-uncurry' {x , p} (refl , refl) = - ap (pair x) (inv right-unit) + eq-pair-eq-fiber (inv right-unit) eq-Eq-fiber' : {s t : fiber' f b} (α : pr1 s = pr1 t) → pr2 t = pr2 s ∙ ap f α → s = t diff --git a/src/foundation/decidable-equality.lagda.md b/src/foundation/decidable-equality.lagda.md index 902d92154a..5318216633 100644 --- a/src/foundation/decidable-equality.lagda.md +++ b/src/foundation/decidable-equality.lagda.md @@ -111,7 +111,7 @@ has-decidable-equality-right-factor : has-decidable-equality (A × B) → A → has-decidable-equality B has-decidable-equality-right-factor d a x y with d (pair a x) (pair a y) ... | inl p = inl (ap pr2 p) -... | inr np = inr (λ q → np (ap (pair a) q)) +... | inr np = inr (λ q → np (eq-pair-eq-fiber q)) ``` ### Types with decidable equality are closed under retracts diff --git a/src/foundation/dependent-binomial-theorem.lagda.md b/src/foundation/dependent-binomial-theorem.lagda.md index 4ba4a9b4a7..1a0fcf3a23 100644 --- a/src/foundation/dependent-binomial-theorem.lagda.md +++ b/src/foundation/dependent-binomial-theorem.lagda.md @@ -68,9 +68,9 @@ module _ is-retraction-map-inv-compute-total-fam-coprod : (map-inv-compute-total-fam-coprod ∘ map-compute-total-fam-coprod) ~ id is-retraction-map-inv-compute-total-fam-coprod (pair (inl (inr _)) y) = - ap (pair (zero-Fin 1)) (is-section-map-inv-raise y) + eq-pair-eq-fiber (is-section-map-inv-raise y) is-retraction-map-inv-compute-total-fam-coprod (pair (inr _) y) = - ap (pair (one-Fin 1)) (is-section-map-inv-raise y) + eq-pair-eq-fiber (is-section-map-inv-raise y) is-equiv-map-compute-total-fam-coprod : is-equiv map-compute-total-fam-coprod diff --git a/src/foundation/fibers-of-maps.lagda.md b/src/foundation/fibers-of-maps.lagda.md index 17802bb955..733ccaf7f0 100644 --- a/src/foundation/fibers-of-maps.lagda.md +++ b/src/foundation/fibers-of-maps.lagda.md @@ -119,7 +119,7 @@ module _ compute-tr-fiber : {y y' : B} (p : y = y') (u : fiber f y) → tot (λ x → concat' _ p) u = tr (fiber f) p u - compute-tr-fiber refl u = ap (pair _) right-unit + compute-tr-fiber refl u = eq-pair-eq-fiber right-unit ``` ## Table of files about fibers of maps diff --git a/src/foundation/type-arithmetic-dependent-pair-types.lagda.md b/src/foundation/type-arithmetic-dependent-pair-types.lagda.md index 81e24624d1..06989fc85b 100644 --- a/src/foundation/type-arithmetic-dependent-pair-types.lagda.md +++ b/src/foundation/type-arithmetic-dependent-pair-types.lagda.md @@ -323,7 +323,7 @@ module _ map-equiv interchange-Σ-Σ ((a , b) , x) = map-equiv interchange-Σ-Σ ((a , b) , y) eq-interchange-Σ-Σ-is-contr H = - ap (map-equiv interchange-Σ-Σ) (ap (pair _) (eq-is-contr H)) + ap (map-equiv interchange-Σ-Σ) (eq-pair-eq-fiber (eq-is-contr H)) ``` ### Swapping the order of quantification in a Σ-type, on the left diff --git a/src/linear-algebra/vectors.lagda.md b/src/linear-algebra/vectors.lagda.md index 9328a6b5bd..c8698a322d 100644 --- a/src/linear-algebra/vectors.lagda.md +++ b/src/linear-algebra/vectors.lagda.md @@ -193,7 +193,7 @@ module _ is-section-eq-Eq-vec zero-ℕ empty-vec empty-vec (map-raise star) = refl is-section-eq-Eq-vec (succ-ℕ n) (x ∷ xs) (.x ∷ ys) (refl , ps) = ( square-Eq-eq-vec n x xs ys (eq-Eq-vec n xs ys ps)) ∙ - ( ap (pair refl) (is-section-eq-Eq-vec n xs ys ps)) + ( eq-pair-eq-fiber (is-section-eq-Eq-vec n xs ys ps)) is-equiv-Eq-eq-vec : (n : ℕ) → (u v : vec A n) → is-equiv (Eq-eq-vec n u v) diff --git a/src/lists/lists.lagda.md b/src/lists/lists.lagda.md index 720e4558c6..3e181b2ef7 100644 --- a/src/lists/lists.lagda.md +++ b/src/lists/lists.lagda.md @@ -186,7 +186,7 @@ is-section-eq-Eq-list nil (cons x l') e = ex-falso (is-empty-raise-empty e) is-section-eq-Eq-list (cons x l) nil e = ex-falso (is-empty-raise-empty e) is-section-eq-Eq-list (cons x l) (cons .x l') (pair refl e) = ( square-eq-Eq-list (eq-Eq-list l l' e)) ∙ - ( ap (pair refl) (is-section-eq-Eq-list l l' e)) + ( eq-pair-eq-fiber (is-section-eq-Eq-list l l' e)) eq-Eq-refl-Eq-list : {l1 : Level} {A : UU l1} (l : list A) → diff --git a/src/trees/bases-directed-trees.lagda.md b/src/trees/bases-directed-trees.lagda.md index 62493b1ade..cffc591bd2 100644 --- a/src/trees/bases-directed-trees.lagda.md +++ b/src/trees/bases-directed-trees.lagda.md @@ -372,5 +372,5 @@ module _ eq-compute-proper-node-Directed-Tree {x} H b w = ap ( map-equiv equiv-left-swap-Σ) - ( ap (pair x) (eq-is-prop (is-prop-walk-to-base-Directed-Tree T x))) + ( eq-pair-eq-fiber (eq-is-prop (is-prop-walk-to-base-Directed-Tree T x))) ``` From cd47a0d447978a4cfc9b200f2116330a9f57db19 Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Tue, 6 Feb 2024 14:44:37 +0100 Subject: [PATCH 143/150] Update src/foundation/commuting-squares-of-homotopies.lagda.md Co-authored-by: Fredrik Bakke --- src/foundation/commuting-squares-of-homotopies.lagda.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/foundation/commuting-squares-of-homotopies.lagda.md b/src/foundation/commuting-squares-of-homotopies.lagda.md index 661c93e5c5..7096cce95a 100644 --- a/src/foundation/commuting-squares-of-homotopies.lagda.md +++ b/src/foundation/commuting-squares-of-homotopies.lagda.md @@ -134,7 +134,7 @@ squares of homotopies ``` This is the -{{#concept "left whiskering" Disambiguation="commuting squares of homotopies with respect to concatenation"}} +{{#concept "left whiskering" Disambiguation="commuting squares of homotopies with respect to concatenation" Agda=left-whisker-concat-coherence-square-homotopies}} operation of commuting squares of homotopies with respect to concatenation. ```agda From c6069aac8b92f6602d04e5348cb22bde399f0ab7 Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Tue, 6 Feb 2024 15:07:54 +0100 Subject: [PATCH 144/150] making the library compile --- .../equality-dependent-pair-types.lagda.md | 18 +++++++++--------- src/foundation-core/fibers-of-maps.lagda.md | 2 +- .../dependent-binomial-theorem.lagda.md | 1 + src/foundation/fibers-of-maps.lagda.md | 2 +- src/linear-algebra/vectors.lagda.md | 1 + src/lists/lists.lagda.md | 1 + src/trees/bases-directed-trees.lagda.md | 1 + 7 files changed, 15 insertions(+), 11 deletions(-) diff --git a/src/foundation-core/equality-dependent-pair-types.lagda.md b/src/foundation-core/equality-dependent-pair-types.lagda.md index 3e5d314cc6..ffa4c8674f 100644 --- a/src/foundation-core/equality-dependent-pair-types.lagda.md +++ b/src/foundation-core/equality-dependent-pair-types.lagda.md @@ -51,15 +51,6 @@ module _ pair-eq-Σ : {s t : Σ A B} → s = t → Eq-Σ s t pair-eq-Σ {s} refl = refl-Eq-Σ s - eq-pair-Σ : - {s t : Σ A B} - (α : pr1 s = pr1 t) → - dependent-identification B α (pr2 s) (pr2 t) → s = t - eq-pair-Σ refl refl = refl - - eq-pair-Σ' : {s t : Σ A B} → Eq-Σ s t → s = t - eq-pair-Σ' p = eq-pair-Σ (pr1 p) (pr2 p) - eq-pair-eq-base : {x y : A} {s : B x} (p : x = y) → (x , s) = (y , tr B p s) eq-pair-eq-base refl = refl @@ -72,6 +63,15 @@ module _ {x : A} {s t : B x} → s = t → (x , s) = (x , t) eq-pair-eq-fiber {x} = ap {B = Σ A B} (pair x) + eq-pair-Σ : + {s t : Σ A B} + (α : pr1 s = pr1 t) → + dependent-identification B α (pr2 s) (pr2 t) → s = t + eq-pair-Σ refl = eq-pair-eq-fiber + + eq-pair-Σ' : {s t : Σ A B} → Eq-Σ s t → s = t + eq-pair-Σ' p = eq-pair-Σ (pr1 p) (pr2 p) + ap-pr1-eq-pair-eq-fiber : {x : A} {s t : B x} (p : s = t) → ap pr1 (eq-pair-eq-fiber p) = refl ap-pr1-eq-pair-eq-fiber refl = refl diff --git a/src/foundation-core/fibers-of-maps.lagda.md b/src/foundation-core/fibers-of-maps.lagda.md index 04265a462b..939120aeb9 100644 --- a/src/foundation-core/fibers-of-maps.lagda.md +++ b/src/foundation-core/fibers-of-maps.lagda.md @@ -140,7 +140,7 @@ module _ eq-Eq-fiber-uncurry' : {s t : fiber' f b} → Eq-fiber' s t → s = t eq-Eq-fiber-uncurry' {x , p} (refl , refl) = - eq-pair-eq-fiber (inv right-unit) + ap (pair _) (inv right-unit) eq-Eq-fiber' : {s t : fiber' f b} (α : pr1 s = pr1 t) → pr2 t = pr2 s ∙ ap f α → s = t diff --git a/src/foundation/dependent-binomial-theorem.lagda.md b/src/foundation/dependent-binomial-theorem.lagda.md index 1a0fcf3a23..9be3261f61 100644 --- a/src/foundation/dependent-binomial-theorem.lagda.md +++ b/src/foundation/dependent-binomial-theorem.lagda.md @@ -11,6 +11,7 @@ open import foundation.action-on-identifications-functions open import foundation.contractible-types open import foundation.coproduct-decompositions open import foundation.dependent-pair-types +open import foundation.equality-dependent-pair-types open import foundation.functoriality-cartesian-product-types open import foundation.functoriality-dependent-function-types open import foundation.raising-universe-levels diff --git a/src/foundation/fibers-of-maps.lagda.md b/src/foundation/fibers-of-maps.lagda.md index 733ccaf7f0..17802bb955 100644 --- a/src/foundation/fibers-of-maps.lagda.md +++ b/src/foundation/fibers-of-maps.lagda.md @@ -119,7 +119,7 @@ module _ compute-tr-fiber : {y y' : B} (p : y = y') (u : fiber f y) → tot (λ x → concat' _ p) u = tr (fiber f) p u - compute-tr-fiber refl u = eq-pair-eq-fiber right-unit + compute-tr-fiber refl u = ap (pair _) right-unit ``` ## Table of files about fibers of maps diff --git a/src/linear-algebra/vectors.lagda.md b/src/linear-algebra/vectors.lagda.md index c8698a322d..29020a2e7e 100644 --- a/src/linear-algebra/vectors.lagda.md +++ b/src/linear-algebra/vectors.lagda.md @@ -14,6 +14,7 @@ open import foundation.cartesian-product-types open import foundation.contractible-types open import foundation.coproduct-types open import foundation.dependent-pair-types +open import foundation.equality-dependent-pair-types open import foundation.equivalences open import foundation.function-extensionality open import foundation.function-types diff --git a/src/lists/lists.lagda.md b/src/lists/lists.lagda.md index 3e181b2ef7..acb200ba4b 100644 --- a/src/lists/lists.lagda.md +++ b/src/lists/lists.lagda.md @@ -16,6 +16,7 @@ open import foundation.contractible-types open import foundation.coproduct-types open import foundation.dependent-pair-types open import foundation.empty-types +open import foundation.equality-dependent-pair-types open import foundation.equivalences open import foundation.function-types open import foundation.functoriality-dependent-pair-types diff --git a/src/trees/bases-directed-trees.lagda.md b/src/trees/bases-directed-trees.lagda.md index cffc591bd2..ef99b09986 100644 --- a/src/trees/bases-directed-trees.lagda.md +++ b/src/trees/bases-directed-trees.lagda.md @@ -14,6 +14,7 @@ open import foundation.contractible-types open import foundation.coproduct-types open import foundation.dependent-pair-types open import foundation.empty-types +open import foundation.equality-dependent-pair-types open import foundation.equivalences open import foundation.function-types open import foundation.functoriality-dependent-pair-types From 555074ad66ca1e80b429a72d92ca4a8a2e747504 Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Tue, 6 Feb 2024 16:18:22 +0100 Subject: [PATCH 145/150] edits --- src/foundation/commuting-prisms-of-maps.lagda.md | 2 +- src/foundation/commuting-squares-of-homotopies.lagda.md | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/foundation/commuting-prisms-of-maps.lagda.md b/src/foundation/commuting-prisms-of-maps.lagda.md index 8aaf8bc999..de583eb4b9 100644 --- a/src/foundation/commuting-prisms-of-maps.lagda.md +++ b/src/foundation/commuting-prisms-of-maps.lagda.md @@ -100,7 +100,7 @@ module _ ( prism-bottom ·r hA)) ∙h ( ap-concat-htpy ( front-bottom ·r hA) - ( ( ap-left-whisker-concat-coherence-square-homotopies hC' + ( ( map-coherence-square-homotopies hC' ( front-top) ( mid ·r hA) ( prism-top)) ∙h diff --git a/src/foundation/commuting-squares-of-homotopies.lagda.md b/src/foundation/commuting-squares-of-homotopies.lagda.md index 7096cce95a..408e1696b1 100644 --- a/src/foundation/commuting-squares-of-homotopies.lagda.md +++ b/src/foundation/commuting-squares-of-homotopies.lagda.md @@ -272,10 +272,10 @@ module _ ( H : g ~ h) (H' : g ~ h') {K : h ~ k} {K' : h' ~ k} where - ap-left-whisker-concat-coherence-square-homotopies : + map-coherence-square-homotopies : coherence-square-homotopies H H' K K' → coherence-square-homotopies (f ·l H) (f ·l H') (f ·l K) (f ·l K') - ap-left-whisker-concat-coherence-square-homotopies α a = + map-coherence-square-homotopies α a = map-coherence-square-identifications f (H a) (H' a) (K a) (K' a) (α a) module _ From b20d392f758dd1fb3ff6c1775b6dd82242998a89 Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Tue, 6 Feb 2024 16:22:55 +0100 Subject: [PATCH 146/150] coherence squares of homotopies --- .../commuting-squares-of-homotopies.lagda.md | 30 +++++++++---------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/src/foundation/commuting-squares-of-homotopies.lagda.md b/src/foundation/commuting-squares-of-homotopies.lagda.md index 408e1696b1..69078b978c 100644 --- a/src/foundation/commuting-squares-of-homotopies.lagda.md +++ b/src/foundation/commuting-squares-of-homotopies.lagda.md @@ -242,25 +242,25 @@ Given a square of homotopies ```text H - g ~~~~~ h - ︴ ︴ - H' ︴ ⇗ ︴ K - ︴ ︴ - h' ~~~~~ k - K' + g -----> h + | | + H' | ⇗ | K + ∨ ∨ + h' -----> k + K' ``` and a map `f`, we may whisker it by a map on the left into a square of homotopies ```text - f ·l H - fg ~~~~~ fh - ︴ ︴ - f ·l H' ︴ ⇗ ︴f ·l K - ︴ ︴ - fh' ~~~~~ fk - f ·l K' , + f ·l H + fg --------> fh + | | + f ·l H' | ⇗ |f ·l K + ∨ ∨ + fh' --------> fk, + f ·l K' ``` and similarly we may whisker it on the right. @@ -284,8 +284,8 @@ module _ ( f : A → B) where - ap-right-whisker-concat-coherence-square-homotopies : + right-whisker-comp-coherence-square-homotopies : coherence-square-homotopies H H' K K' → coherence-square-homotopies (H ·r f) (H' ·r f) (K ·r f) (K' ·r f) - ap-right-whisker-concat-coherence-square-homotopies α = α ·r f + right-whisker-comp-coherence-square-homotopies α = α ·r f ``` From 84f100b83bb4ad09e56373b2c091fd40285397c9 Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Tue, 6 Feb 2024 16:24:05 +0100 Subject: [PATCH 147/150] coherence squares homotopies --- .../commuting-squares-of-homotopies.lagda.md | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/foundation-core/commuting-squares-of-homotopies.lagda.md b/src/foundation-core/commuting-squares-of-homotopies.lagda.md index c2f0f32b85..1af11c0a1d 100644 --- a/src/foundation-core/commuting-squares-of-homotopies.lagda.md +++ b/src/foundation-core/commuting-squares-of-homotopies.lagda.md @@ -40,10 +40,14 @@ of the square. ```agda module _ {l1 l2 : Level} {A : UU l1} {B : A → UU l2} {f g h i : (x : A) → B x} + (top : f ~ g) (left : f ~ h) (right : g ~ i) (bottom : h ~ i) where - coherence-square-homotopies : - (top : f ~ g) (left : f ~ h) (right : g ~ i) (bottom : h ~ i) → UU (l1 ⊔ l2) - coherence-square-homotopies top left right bottom = + coherence-square-homotopies : UU (l1 ⊔ l2) + coherence-square-homotopies = left ∙h bottom ~ top ∙h right + + coherence-square-homotopies' : UU (l1 ⊔ l2) + coherence-square-homotopies' = + top ∙h right ~ left ∙h bottom ``` From 1b3183ce2de8352b687f9e3a6ccdfae740fcc0f7 Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Tue, 6 Feb 2024 16:27:18 +0100 Subject: [PATCH 148/150] Done --- src/foundation/commuting-squares-of-homotopies.lagda.md | 4 ++-- src/foundation/commuting-squares-of-identifications.lagda.md | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/foundation/commuting-squares-of-homotopies.lagda.md b/src/foundation/commuting-squares-of-homotopies.lagda.md index 69078b978c..5ae628881b 100644 --- a/src/foundation/commuting-squares-of-homotopies.lagda.md +++ b/src/foundation/commuting-squares-of-homotopies.lagda.md @@ -69,7 +69,7 @@ squares of homotopies ``` This is the -{{#concept "right whiskering" Disambiguation="commuting squares of homotopies with respect to concatenation"}} +{{#concept "right whiskering" Disambiguation="commuting squares of homotopies with respect to concatenation" Agda=right-whisker-concat-coherence-square-homotopies}} operation of commuting squares of homotopies with respect to concatenation. ```agda @@ -199,7 +199,7 @@ squares of homotopies ``` This is the -{{#concept "left whiskering" Disambiguation="commuting squares of homotopies with respect to concatenation"}} +{{#concept "double whiskering" Disambiguation="commuting squares of homotopies with respect to concatenation" Agda=double-whisker-coherence-square-homotopies}} operation of commuting squares of homotopies with respect to concatenation. ```agda diff --git a/src/foundation/commuting-squares-of-identifications.lagda.md b/src/foundation/commuting-squares-of-identifications.lagda.md index 449efa8d65..f8c46620a6 100644 --- a/src/foundation/commuting-squares-of-identifications.lagda.md +++ b/src/foundation/commuting-squares-of-identifications.lagda.md @@ -699,7 +699,8 @@ module _ coherence-square-identifications top left right bottom ≃ coherence-square-identifications (p ∙ top) (p ∙ left) right bottom equiv-left-whisker-concat-coherence-square-identifications refl - top left right bottom = id-equiv + top left right bottom = + id-equiv left-whisker-concat-coherence-square-identifications : (p : u = x) From 22aa216dbb5536a91b03dd3e4c1b7065dad7921e Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Tue, 6 Feb 2024 16:30:19 +0100 Subject: [PATCH 149/150] final comment --- .../commuting-squares-of-identifications.lagda.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/foundation/commuting-squares-of-identifications.lagda.md b/src/foundation/commuting-squares-of-identifications.lagda.md index f8c46620a6..8c537e89f2 100644 --- a/src/foundation/commuting-squares-of-identifications.lagda.md +++ b/src/foundation/commuting-squares-of-identifications.lagda.md @@ -35,8 +35,10 @@ A square of [identifications](foundation-core.identity-types.md) bottom ``` -is said to **commute** if there is an identification -`left ∙ bottom = top ∙ right`. Such an identification is called a +is said to be a +{{#concept "commuting square" Disambiguation="identifications" Agda=coherence-square-identifications}} +if there is an identification `left ∙ bottom = top ∙ right`. Such an +identification is called a {{#concept "coherence" Disambiguation="commuting square of identifications" Agda=coherence-square-identifications}} of the square. From 3757f61a1623ee05f38a1b43f55af64eb96bd9f8 Mon Sep 17 00:00:00 2001 From: Egbert Rijke Date: Tue, 6 Feb 2024 16:33:13 +0100 Subject: [PATCH 150/150] addressing wrong Agda field in concept macro --- .../lifting-structures-on-squares.lagda.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/orthogonal-factorization-systems/lifting-structures-on-squares.lagda.md b/src/orthogonal-factorization-systems/lifting-structures-on-squares.lagda.md index acabddb968..fb95e08dc9 100644 --- a/src/orthogonal-factorization-systems/lifting-structures-on-squares.lagda.md +++ b/src/orthogonal-factorization-systems/lifting-structures-on-squares.lagda.md @@ -43,7 +43,7 @@ open import orthogonal-factorization-systems.pullback-hom ## Idea A -{{#concept "lifting structure" Disambiguation="commuting square of maps" Agda=lifting-square}} +{{#concept "lifting structure" Disambiguation="commuting square of maps" Agda=lifting-structure-square}} of a commuting square ```text @@ -137,41 +137,41 @@ module _ is-diagonal-lift-square f g α (diagonal-map-lifting-structure-square l) is-lifting-diagonal-map-lifting-structure-square = pr2 - is-extension-lifting-structure-square : + is-extension-diagonal-map-lifting-structure-square : (l : lifting-structure-square) → is-extension f ( map-domain-hom-arrow f g α) ( diagonal-map-lifting-structure-square l) - is-extension-lifting-structure-square = pr1 ∘ pr2 + is-extension-diagonal-map-lifting-structure-square = pr1 ∘ pr2 extension-lifting-structure-square : lifting-structure-square → extension f (map-domain-hom-arrow f g α) pr1 (extension-lifting-structure-square L) = diagonal-map-lifting-structure-square L pr2 (extension-lifting-structure-square L) = - is-extension-lifting-structure-square L + is-extension-diagonal-map-lifting-structure-square L - is-lift-lifting-structure-square : + is-lift-diagonal-map-lifting-structure-square : (l : lifting-structure-square) → is-lift g ( map-codomain-hom-arrow f g α) ( diagonal-map-lifting-structure-square l) - is-lift-lifting-structure-square = pr1 ∘ (pr2 ∘ pr2) + is-lift-diagonal-map-lifting-structure-square = pr1 ∘ (pr2 ∘ pr2) lift-lifting-structure-square : lifting-structure-square → lift g (map-codomain-hom-arrow f g α) pr1 (lift-lifting-structure-square L) = diagonal-map-lifting-structure-square L pr2 (lift-lifting-structure-square L) = - is-lift-lifting-structure-square L + is-lift-diagonal-map-lifting-structure-square L coherence-lifting-structure-square : (l : lifting-structure-square) → coherence-square-homotopies - ( is-lift-lifting-structure-square l ·r f) + ( is-lift-diagonal-map-lifting-structure-square l ·r f) ( coh-hom-arrow f g α) ( coh-pullback-hom f g (diagonal-map-lifting-structure-square l)) - ( g ·l is-extension-lifting-structure-square l) + ( g ·l is-extension-diagonal-map-lifting-structure-square l) coherence-lifting-structure-square = pr2 ∘ (pr2 ∘ pr2) ```