Commuting prisms of maps
Content created by Fredrik Bakke, Egbert Rijke and Vojtěch Štěpančík.
Created on 2023-12-05.
Last modified on 2024-04-25.
module foundation.commuting-prisms-of-maps where open import foundation-core.commuting-prisms-of-maps public
Imports
open import foundation.action-on-identifications-functions 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.postcomposition-functions open import foundation.precomposition-functions open import foundation.universe-levels open import foundation.whiskering-homotopies-composition open import foundation-core.commuting-squares-of-homotopies open import foundation-core.equivalences open import foundation-core.function-types open import foundation-core.functoriality-dependent-function-types open import foundation-core.homotopies
Definitions
Vertical pasting of vertical prisms of maps
module _ { l1 l2 l3 l1' l2' l3' l1'' l2'' l3'' : Level} { A : UU l1} {B : UU l2} {C : UU l3} ( f : A → C) (g : B → C) (h : A → B) { A' : UU l1'} {B' : UU l2'} {C' : UU l3'} ( f' : A' → C') (g' : B' → C') (h' : A' → B') ( hA : A → A') (hB : B → B') (hC : C → C') { A'' : UU l1''} {B'' : UU l2''} {C'' : UU l3''} ( f'' : A'' → C'') (g'' : B'' → C'') (h'' : A'' → B'') ( hA' : A' → A'') (hB' : B' → B'') (hC' : C' → C'') ( top : coherence-triangle-maps f g h) ( front-top : coherence-square-maps f hA hC f') ( right-top : coherence-square-maps g hB hC g') ( left-top : coherence-square-maps h hA hB h') ( mid : coherence-triangle-maps f' g' h') ( front-bottom : coherence-square-maps f' hA' hC' f'') ( right-bottom : coherence-square-maps g' hB' hC' g'') ( left-bottom : coherence-square-maps h' hA' hB' h'') ( bottom : coherence-triangle-maps f'' g'' h'') where pasting-vertical-coherence-prism-maps : vertical-coherence-prism-maps f g h f' g' h' hA hB hC ( top) ( front-top) ( right-top) ( left-top) ( mid) → vertical-coherence-prism-maps f' g' h' f'' g'' h'' hA' hB' hC' ( mid) ( front-bottom) ( right-bottom) ( left-bottom) ( bottom) → vertical-coherence-prism-maps f g h f'' g'' h'' ( hA' ∘ hA) ( hB' ∘ hB) ( hC' ∘ hC) ( top) ( pasting-vertical-coherence-square-maps f hA hC f' hA' hC' f'' ( front-top) ( front-bottom)) ( pasting-vertical-coherence-square-maps g hB hC g' hB' hC' g'' ( right-top) ( right-bottom)) ( pasting-vertical-coherence-square-maps h hA hB h' hA' hB' h'' ( left-top) ( left-bottom)) ( bottom) pasting-vertical-coherence-prism-maps prism-top prism-bottom = ( ap-concat-htpy ( bottom ·r hA' ·r hA) ( commutative-pasting-vertical-pasting-horizontal-coherence-square-maps h g hA hB hC h' g' hA' hB' hC' h'' g'' ( left-top) ( right-top) ( left-bottom) ( right-bottom))) ∙h ( right-whisker-concat-coherence-square-homotopies ( front-bottom ·r hA) ( bottom ·r hA' ·r hA) ( hC' ·l mid ·r hA) ( ( pasting-horizontal-coherence-square-maps h' g' hA' hB' hC' h'' g'' left-bottom right-bottom) ·r ( hA)) ( prism-bottom ·r hA) ( hC' ·l ((g' ·l left-top) ∙h (right-top ·r h))) ) ∙h ( ap-concat-htpy ( front-bottom ·r hA) ( ( map-coherence-square-homotopies hC' ( front-top) ( mid ·r hA) (hC ·l top) ( pasting-horizontal-coherence-square-maps h g hA hB hC h' g' ( left-top) ( right-top)) ( prism-top)) ∙h ( ap-concat-htpy ( hC' ·l front-top) ( preserves-comp-left-whisker-comp hC' hC top)))) ∙h ( inv-htpy-assoc-htpy ( front-bottom ·r hA) ( hC' ·l front-top) ( ( hC' ∘ hC) ·l top))
Properties
The two definitions of vertical prisms are equivalent
module _ { l1 l2 l3 l1' l2' l3' : Level} { A : UU l1} {B : UU l2} {C : UU l3} ( f : A → C) (g : B → C) (h : A → B) { A' : UU l1'} {B' : UU l2'} {C' : UU l3'} ( f' : A' → C') (g' : B' → C') (h' : A' → B') ( hA : A → A') (hB : B → B') (hC : C → C') ( top : coherence-triangle-maps f g h) ( inv-front : coherence-square-maps' f hA hC f') ( inv-right : coherence-square-maps' g hB hC g') ( left : coherence-square-maps h hA hB h') ( bottom : coherence-triangle-maps f' g' h') where equiv-rotate-vertical-coherence-prism-maps : vertical-coherence-prism-maps' f g h f' g' h' hA hB hC ( top) ( inv-front) ( inv-right) ( left) ( bottom) ≃ vertical-coherence-prism-maps f g h f' g' h' hA hB hC ( top) ( inv-htpy inv-front) ( inv-htpy inv-right) ( left) ( bottom) equiv-rotate-vertical-coherence-prism-maps = equiv-Π-equiv-family ( λ a → ( equiv-concat-assoc ( bottom (hA a)) ( ap g' (left a)) ( inv (inv-right (h a))) _) ∘e ( equiv-right-transpose-eq-concat' _ ( inv (inv-front a) ∙ ap hC (top a)) ( inv-right (h a))) ∘e ( inv-equiv ( equiv-concat-assoc' _ ( inv (inv-front a)) ( ap hC (top a)) ( inv-right (h a)))) ∘e ( equiv-left-transpose-eq-concat ( inv-front a) ( bottom (hA a) ∙ ap g' (left a)) ( _))) rotate-vertical-coherence-prism-maps : vertical-coherence-prism-maps' f g h f' g' h' hA hB hC ( top) ( inv-front) ( inv-right) ( left) ( bottom) → vertical-coherence-prism-maps f g h f' g' h' hA hB hC ( top) ( inv-htpy inv-front) ( inv-htpy inv-right) ( left) ( bottom) rotate-vertical-coherence-prism-maps = map-equiv equiv-rotate-vertical-coherence-prism-maps
Commuting prisms of maps induce commuting prisms of precomposition maps
We prove this for a few different formulations of commuting prisms of maps.
The basic set-up is that, given a commuting prism of maps
B
h ∧| \ g
/ | \
/ f | ⇑ ∨
A ---------> C
| | hB |
| ⇗ ∨ ⇗ |
hA | B' | hC
| h' ∧ \ g' |
| / ⇑ \ |
∨/ ∨∨
A' --------> C'
f'
we have commuting prisms of precomposition maps
(B' → S)
(- ∘ g') ∧ | \ (- ∘ h')
/ | \
/ (- ∘ f')| ⇑ ∨
(C' → S) ---------------> (A' → S)
| | |
| | (- ∘ hB) |
| ⇙ ∨ ⇙ |
(- ∘ hC) | (B → S) | (- ∘ hA)
| (- ∘ g) ∧ \ (- ∘ h) |
| / ⇑ \ |
∨ / ∨ ∨
(C → S) ----------------> (A → S).
(- ∘ f)
Observe that the bottom and top triangles have switched positions, the diagram is mirrored along the vertical axis compared to the underlying commuting prism, and that the direction of the homotopies of the vertical squares are flipped.
module _ { l1 l2 l3 l1' l2' l3' l : Level} { A : UU l1} {B : UU l2} {C : UU l3} ( f : A → C) (g : B → C) (h : A → B) { A' : UU l1'} {B' : UU l2'} {C' : UU l3'} ( f' : A' → C') (g' : B' → C') (h' : A' → B') ( hA : A → A') (hB : B → B') (hC : C → C') ( top : coherence-triangle-maps f g h) ( front : coherence-square-maps f hA hC f') ( right : coherence-square-maps g hB hC g') ( left : coherence-square-maps h hA hB h') ( bottom : coherence-triangle-maps f' g' h') ( H : vertical-coherence-prism-maps f g h f' g' h' hA hB hC ( top) ( front) ( right) ( left) ( bottom)) ( S : UU l) where precomp-vertical-coherence-prism-inv-squares-maps : vertical-coherence-prism-inv-squares-maps ( precomp f' S) ( precomp h' S) ( precomp g' S) ( precomp f S) ( precomp h S) ( precomp g S) ( precomp hC S) ( precomp hB S) ( precomp hA S) ( precomp-coherence-triangle-maps f' g' h' bottom S) ( precomp-coherence-square-maps f hA hC f' front S) ( precomp-coherence-square-maps h hA hB h' left S) ( precomp-coherence-square-maps g hB hC g' right S) ( precomp-coherence-triangle-maps f g h top S) precomp-vertical-coherence-prism-inv-squares-maps = ( ap-concat-htpy ( htpy-precomp front S) ( inv-distributive-htpy-precomp-left-whisker hC top S)) ∙h ( inv-htpy ( distributive-htpy-precomp-concat-htpy front (hC ·l top) S)) ∙h ( λ i → ap eq-htpy (ap (i ·l_) (eq-htpy (inv-htpy H)))) ∙h ( distributive-htpy-precomp-concat-htpy ( bottom ·r hA) ( pasting-horizontal-coherence-square-maps h g hA hB hC h' g' left right) ( S)) ∙h ( ap-binary-concat-htpy ( distributive-htpy-precomp-right-whisker hA bottom S) ( ( distributive-htpy-precomp-concat-htpy (g' ·l left) (right ·r h) S) ∙h ( ap-binary-concat-htpy ( distributive-htpy-precomp-left-whisker g' left S) ( distributive-htpy-precomp-right-whisker h right S)))) precomp-vertical-coherence-prism-maps : vertical-coherence-prism-maps ( precomp f' S) ( precomp h' S) ( precomp g' S) ( precomp f S) ( precomp h S) ( precomp g S) ( precomp hC S) ( precomp hB S) ( precomp hA S) ( precomp-coherence-triangle-maps f' g' h' bottom S) ( inv-htpy (precomp-coherence-square-maps f hA hC f' front S)) ( inv-htpy (precomp-coherence-square-maps h hA hB h' left S)) ( inv-htpy (precomp-coherence-square-maps g hB hC g' right S)) ( precomp-coherence-triangle-maps f g h top S) precomp-vertical-coherence-prism-maps = vertical-coherence-prism-maps-vertical-coherence-prism-inv-squares-maps ( precomp f' S) ( precomp h' S) ( precomp g' S) ( precomp f S) ( precomp h S) ( precomp g S) ( precomp hC S) ( precomp hB S) ( precomp hA S) ( precomp-coherence-triangle-maps f' g' h' bottom S) ( precomp-coherence-square-maps f hA hC f' front S) ( precomp-coherence-square-maps h hA hB h' left S) ( precomp-coherence-square-maps g hB hC g' right S) ( precomp-coherence-triangle-maps f g h top S) ( precomp-vertical-coherence-prism-inv-squares-maps) module _ { l1 l2 l3 l1' l2' l3' l : Level} { A : UU l1} {B : UU l2} {C : UU l3} ( f : A → C) (g : B → C) (h : A → B) { A' : UU l1'} {B' : UU l2'} {C' : UU l3'} ( f' : A' → C') (g' : B' → C') (h' : A' → B') ( hA : A → A') (hB : B → B') (hC : C → C') ( inv-top : coherence-triangle-maps' f g h) ( front : coherence-square-maps f hA hC f') ( right : coherence-square-maps g hB hC g') ( left : coherence-square-maps h hA hB h') ( inv-bottom : coherence-triangle-maps' f' g' h') ( H : vertical-coherence-prism-inv-triangles-maps f g h f' g' h' hA hB hC ( inv-top) ( front) ( right) ( left) ( inv-bottom)) (S : UU l) where precomp-vertical-inv-boundary-vertical-coherence-inv-triangles-prism-maps : vertical-coherence-prism-inv-boundary-maps ( precomp f' S) ( precomp h' S) ( precomp g' S) ( precomp f S) ( precomp h S) ( precomp g S) ( precomp hC S) ( precomp hB S) ( precomp hA S) ( precomp-coherence-triangle-maps' f' g' h' inv-bottom S) ( precomp-coherence-square-maps f hA hC f' front S) ( precomp-coherence-square-maps h hA hB h' left S) ( precomp-coherence-square-maps g hB hC g' right S) ( precomp-coherence-triangle-maps' f g h inv-top S) precomp-vertical-inv-boundary-vertical-coherence-inv-triangles-prism-maps = ( inv-htpy ( ( compute-concat-htpy-precomp ( (g' ·l left) ∙h (right ·r h)) ( hC ·l inv-top) ( S)) ∙h ( ap-binary-concat-htpy ( ( compute-concat-htpy-precomp (g' ·l left) (right ·r h) S) ∙h ( ap-binary-concat-htpy ( distributive-htpy-precomp-left-whisker g' left S) ( distributive-htpy-precomp-right-whisker h right S))) ( distributive-htpy-precomp-left-whisker hC inv-top S)))) ∙h ( λ i → ap (λ p → htpy-precomp p S i) (eq-htpy H)) ∙h ( compute-concat-htpy-precomp (inv-bottom ·r hA) front S) ∙h ( ap-concat-htpy' ( htpy-precomp front S) ( distributive-htpy-precomp-right-whisker hA inv-bottom S)) precomp-vertical-coherence-prism-inv-triangles-maps : vertical-coherence-prism-inv-triangles-maps ( precomp f' S) ( precomp h' S) ( precomp g' S) ( precomp f S) ( precomp h S) ( precomp g S) ( precomp hC S) ( precomp hB S) ( precomp hA S) ( precomp-coherence-triangle-maps' f' g' h' inv-bottom S) ( inv-htpy (precomp-coherence-square-maps f hA hC f' front S)) ( inv-htpy (precomp-coherence-square-maps h hA hB h' left S)) ( inv-htpy (precomp-coherence-square-maps g hB hC g' right S)) ( precomp-coherence-triangle-maps' f g h inv-top S) precomp-vertical-coherence-prism-inv-triangles-maps = vertical-coherence-prism-inv-triangles-maps-vertical-coherence-prism-inv-boundary-maps ( precomp f' S) ( precomp h' S) ( precomp g' S) ( precomp f S) ( precomp h S) ( precomp g S) ( precomp hC S) ( precomp hB S) ( precomp hA S) ( precomp-coherence-triangle-maps' f' g' h' inv-bottom S) ( precomp-coherence-square-maps f hA hC f' front S) ( precomp-coherence-square-maps h hA hB h' left S) ( precomp-coherence-square-maps g hB hC g' right S) ( precomp-coherence-triangle-maps' f g h inv-top S) ( precomp-vertical-inv-boundary-vertical-coherence-inv-triangles-prism-maps)
Commuting prisms of maps induce commuting prisms of postcomposition maps
Given a commuting prism of maps
B
h ∧| \ g
/ | \
/ f | ⇑ ∨
A ---------> C
| | hB |
| ⇗ ∨ ⇗ |
hA | B' | hC
| h' ∧ \ g' |
| / ⇑ \ |
∨/ ∨∨
A' --------> C'
f'
we have commuting prisms of postcomposition mapss
(S → B)
(h ∘ -) ∧ | \ (g ∘ -)
/ | \
/ (f ∘ -)| ⇑ ∨
(S → A) ----------------> (S → C)
| | |
| | (hB ∘ -) |
| ⇗ ∨ ⇗ |
(hA ∘ -) | (S → B') | (hC ∘ -)
| (h' ∘ -) ∧ \ (g' ∘ -) |
| / ⇑ \ |
∨ / ∨ ∨
(S → A') ---------------> (S → C').
(f' ∘ -)
module _ { l1 l2 l3 l1' l2' l3' l : Level} { A : UU l1} {B : UU l2} {C : UU l3} ( f : A → C) (g : B → C) (h : A → B) { A' : UU l1'} {B' : UU l2'} {C' : UU l3'} ( f' : A' → C') (g' : B' → C') (h' : A' → B') ( hA : A → A') (hB : B → B') (hC : C → C') ( inv-top : coherence-triangle-maps' f g h) ( front : coherence-square-maps f hA hC f') ( right : coherence-square-maps g hB hC g') ( left : coherence-square-maps h hA hB h') ( inv-bottom : coherence-triangle-maps' f' g' h') ( H : vertical-coherence-prism-inv-triangles-maps f g h f' g' h' hA hB hC ( inv-top) ( front) ( right) ( left) ( inv-bottom)) (S : UU l) where postcomp-vertical-coherence-prism-inv-triangles-maps : vertical-coherence-prism-inv-triangles-maps ( postcomp S f) ( postcomp S g) ( postcomp S h) ( postcomp S f') ( postcomp S g') ( postcomp S h') ( postcomp S hA) ( postcomp S hB) ( postcomp S hC) ( htpy-postcomp S inv-top) ( htpy-postcomp S front) ( htpy-postcomp S right) ( htpy-postcomp S left) ( htpy-postcomp S inv-bottom) postcomp-vertical-coherence-prism-inv-triangles-maps = ( inv-htpy ( ( distributive-htpy-postcomp-concat-htpy ( g' ·l left ∙h right ·r h) ( hC ·l inv-top) ( S)) ∙h ( ap-binary-concat-htpy ( ( distributive-htpy-postcomp-concat-htpy ( g' ·l left) ( right ·r h) S) ∙h ( ap-binary-concat-htpy ( distributive-htpy-postcomp-left-whisker g' left S) ( distributive-htpy-postcomp-right-whisker h right S))) ( distributive-htpy-postcomp-left-whisker hC inv-top S)))) ∙h ( λ i → ap (λ p → htpy-postcomp S p i) (eq-htpy H)) ∙h ( distributive-htpy-postcomp-concat-htpy (inv-bottom ·r hA) front S)
Recent changes
- 2024-04-25. Fredrik Bakke. chore: Fix arrowheads in character diagrams (#1124).
- 2024-04-17. Fredrik Bakke. Splitting idempotents (#1105).
- 2024-02-19. Fredrik Bakke. Additions for coherently invertible maps (#1024).
- 2024-02-06. Egbert Rijke and Fredrik Bakke. Refactor files about identity types and homotopies (#1014).
- 2024-01-25. Fredrik Bakke. Basic properties of orthogonal maps (#979).