Skip to content

Commit db16217

Browse files
Eckmann-Hilton in the Universe (#703)
This pr formalizes most of the "Eckmann-Hilton in the universe" idea, thus bringing partial completion to one of the task on the issue "Formalize the Hopf Fibration" ( #702 ). The main theorem of the pr, named `tr³-htpy-swap-path-swap`, establishes that `tr³` sends `path-swap` to `htpy-swap`. --------- Co-authored-by: Fredrik Bakke <[email protected]>
1 parent 9ebbb31 commit db16217

File tree

3 files changed

+173
-15
lines changed

3 files changed

+173
-15
lines changed

src/foundation/homotopies.lagda.md

+22
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ open import foundation.dependent-pair-types
1515
open import foundation.function-extensionality
1616
open import foundation.identity-systems
1717
open import foundation.identity-types
18+
open import foundation.path-algebra
1819
open import foundation.universe-levels
1920
2021
open import foundation-core.contractible-types
@@ -297,6 +298,27 @@ module _
297298
( inv right-unit))
298299
```
299300

301+
### Eckmann-Hilton for homotopies
302+
303+
```agda
304+
htpy-swap-nat-right-htpy :
305+
{l0 l1 l2 : Level} {X : UU l0} {Y : UU l1} {Z : UU l2}
306+
{f g : X → Y} {f' g' : Y → Z} (H' : f' ~ g')
307+
(H : f ~ g) →
308+
(htpy-right-whisk H' f ∙h htpy-left-whisk g' H) ~
309+
(htpy-left-whisk f' H ∙h htpy-right-whisk H' g)
310+
htpy-swap-nat-right-htpy H' H x =
311+
nat-htpy H' (H x)
312+
313+
eckmann-hilton-htpy :
314+
{l : Level} {X : UU l} (H K : id {A = X} ~ id) →
315+
(H ∙h K) ~ (K ∙h H)
316+
eckmann-hilton-htpy H K x =
317+
( inv (identification-left-whisk (H x) (ap-id (K x))) ∙
318+
( htpy-swap-nat-right-htpy H K x)) ∙
319+
( identification-right-whisk (ap-id (K x)) (H x))
320+
```
321+
300322
## See also
301323

302324
- We postulate that homotopies characterize identifications in (dependent)

src/foundation/path-algebra.lagda.md

+48-10
Original file line numberDiff line numberDiff line change
@@ -158,6 +158,26 @@ horizontal-concat-Id² :
158158
horizontal-concat-Id² α β = ap-binary (λ s t → s ∙ t) α β
159159
```
160160

161+
#### Identification whiskering
162+
163+
```agda
164+
module _
165+
{l : Level} {A : UU l} {x y z : A}
166+
where
167+
168+
identification-left-whisk :
169+
(p : x = y) {q q' : y = z} → q = q' → (p ∙ q) = (p ∙ q')
170+
identification-left-whisk p β = ap (p ∙_) β
171+
172+
identification-right-whisk :
173+
{p p' : x = y} → p = p' → (q : y = z) → (p ∙ q) = (p' ∙ q)
174+
identification-right-whisk α q = ap (_∙ q) α
175+
176+
htpy-identification-left-whisk :
177+
{q q' : y = z} → q = q' → (_∙ q) ~ (_∙ q')
178+
htpy-identification-left-whisk β p = identification-left-whisk p β
179+
```
180+
161181
### Both horizontal and vertical concatenation of 2-paths are binary equivalences
162182

163183
```agda
@@ -197,12 +217,30 @@ right-unit-law-horizontal-concat-Id² :
197217
right-unit-law-horizontal-concat-Id² α = right-unit-ap-binary (λ s t → s ∙ t) α
198218
```
199219

220+
#### The whiskering operations allow us to commute higher identifications
221+
222+
```agda
223+
module _
224+
{l : Level} {A : UU l} {x y z : A}
225+
where
226+
227+
path-swap-nat-identification-left-whisk :
228+
{q q' : y = z} (β : q = q') {p p' : x = y} (α : p = p') →
229+
coherence-square-identifications
230+
( identification-left-whisk p β)
231+
( identification-right-whisk α q')
232+
( identification-right-whisk α q)
233+
( identification-left-whisk p' β)
234+
path-swap-nat-identification-left-whisk β =
235+
nat-htpy (htpy-identification-left-whisk β)
236+
```
237+
200238
Horizontal concatination satisfies an additional "2-dimensional" unit law (on
201239
both the left and right) induced by the unit laws on the boundary 1-paths.
202240

203241
```agda
204242
module _
205-
{l : Level} {A : UU l} {a0 a1 : A} {p p' : a0a1} (α : p = p')
243+
{l : Level} {A : UU l} {x y : A} {p p' : xy} (α : p = p')
206244
where
207245
208246
nat-sq-right-unit-Id² :
@@ -227,7 +265,7 @@ module _
227265

228266
```agda
229267
module _
230-
{l : Level} {A : UU l} {a0 a1 : A} {p p' : a0a1}
268+
{l : Level} {A : UU l} {x y : A} {p p' : xy}
231269
where
232270
233271
horizontal-inv-Id² : p = p' → (inv p) = (inv p')
@@ -239,7 +277,7 @@ This operation satisfies a left and right idenity induced by the inverse laws on
239277

240278
```agda
241279
module _
242-
{l : Level} {A : UU l} {a0 a1 : A} {p p' : a0a1} (α : p = p')
280+
{l : Level} {A : UU l} {x y : A} {p p' : xy} (α : p = p')
243281
where
244282
245283
nat-sq-right-inv-Id² :
@@ -322,8 +360,8 @@ Functions have an induced action on 2-paths
322360

323361
```agda
324362
module _
325-
{l1 l2 : Level} {A : UU l1} {B : UU l2} {a0 a1 : A}
326-
{p p' : a0a1} (f : A → B) (α : p = p')
363+
{l1 l2 : Level} {A : UU l1} {B : UU l2} {x y : A}
364+
{p p' : xy} (f : A → B) (α : p = p')
327365
where
328366
329367
ap² : (ap f p) = (ap f p')
@@ -337,8 +375,8 @@ Inverse law.
337375

338376
```agda
339377
module _
340-
{l1 l2 : Level} {A : UU l1} {B : UU l2} {a0 a1 : A}
341-
{p p' : a0a1} (f : A → B) (α : p = p')
378+
{l1 l2 : Level} {A : UU l1} {B : UU l2} {x y : A}
379+
{p p' : xy} (f : A → B) (α : p = p')
342380
where
343381
344382
nat-sq-ap-inv-Id² :
@@ -357,8 +395,8 @@ Identity law and constant law.
357395

358396
```agda
359397
module _
360-
{l1 l2 : Level} {A : UU l1} {B : UU l2} {a0 a1 : A}
361-
{p p' : a0a1} (α : p = p')
398+
{l1 l2 : Level} {A : UU l1} {B : UU l2} {x y : A}
399+
{p p' : xy} (α : p = p')
362400
where
363401
364402
nat-sq-ap-id-Id² :
@@ -383,7 +421,7 @@ Composition law
383421
```agda
384422
module _
385423
{l1 l2 l3 : Level} {A : UU l1} {B : UU l2} {C : UU l3}
386-
{a0 a1 : A} {p p' : a0a1} (g : B → C) (f : A → B) (α : p = p')
424+
{x y : A} {p p' : xy} (g : B → C) (f : A → B) (α : p = p')
387425
where
388426
389427
nat-sq-ap-comp-Id² :

src/foundation/transport.lagda.md

+103-5
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,14 @@ open import foundation-core.transport public
1010

1111
```agda
1212
open import foundation.action-on-identifications-functions
13+
open import foundation.commuting-squares-of-identifications
1314
open import foundation.dependent-pair-types
15+
open import foundation.homotopies
16+
open import foundation.path-algebra
1417
open import foundation.universe-levels
1518
1619
open import foundation-core.equivalences
1720
open import foundation-core.function-types
18-
open import foundation-core.homotopies
1921
open import foundation-core.identity-types
2022
```
2123

@@ -37,12 +39,19 @@ recorded in this file.
3739

3840
```agda
3941
module _
40-
{l1 l2 : Level} {A : UU l1} {a0 a1 : A} {p0 p1 : a0 = a1}
41-
(B : A → UU l2)
42+
{l1 l2 : Level} {A : UU l1} {x y : A} {p p' : x = y}
4243
where
4344
44-
tr² : (α : p0 = p1) (b0 : B a0) → (tr B p0 b0) = (tr B p1 b0)
45-
tr² α b0 = ap (λ t → tr B t b0) α
45+
tr² : (B : A → UU l2) (α : p = p') (b : B x) → (tr B p b) = (tr B p' b)
46+
tr² B α b = ap (λ t → tr B t b) α
47+
48+
module _
49+
{l1 l2 : Level} {A : UU l1} {x y : A} {p p' : x = y}
50+
{α α' : p = p'}
51+
where
52+
53+
tr³ : (B : A → UU l2) (β : α = α') (b : B x) → (tr² B α b) = (tr² B α' b)
54+
tr³ B β b = ap (λ t → tr² B t b) β
4655
```
4756

4857
## Properties
@@ -93,3 +102,92 @@ tr-subst :
93102
tr B (ap f p) x' = tr (B ∘ f) p x'
94103
tr-subst B f refl = refl
95104
```
105+
106+
### Coherences and algebraic identities for `tr²`
107+
108+
```agda
109+
module _
110+
{l1 l2 : Level} {A : UU l1} {x y : A}
111+
{B : A → UU l2}
112+
where
113+
114+
tr²-concat :
115+
{p p' p'' : x = y} (α : p = p') (α' : p' = p'') (b : B x) →
116+
(tr² B (α ∙ α') b) = (tr² B α b ∙ tr² B α' b)
117+
tr²-concat α α' b = ap-concat (λ t → tr B t b) α α'
118+
119+
module _
120+
{l1 l2 : Level} {A : UU l1} {x y z : A}
121+
{B : A → UU l2}
122+
where
123+
124+
tr²-left-whisk :
125+
(p : x = y) {q q' : y = z} (β : q = q') (b : B x) →
126+
coherence-square-identifications
127+
( tr² B (identification-left-whisk p β) b)
128+
( tr-concat p q' b)
129+
( tr-concat p q b)
130+
( htpy-right-whisk (tr² B β) (tr B p) b)
131+
tr²-left-whisk refl refl b = refl
132+
133+
tr²-right-whisk :
134+
{p p' : x = y} (α : p = p') (q : y = z) (b : B x) →
135+
coherence-square-identifications
136+
( tr² B (identification-right-whisk α q) b)
137+
( tr-concat p' q b)
138+
( tr-concat p q b)
139+
( htpy-left-whisk (tr B q) (tr² B α) b)
140+
tr²-right-whisk refl refl b = inv right-unit
141+
```
142+
143+
#### Coherences and algebraic identities for `tr³`
144+
145+
```agda
146+
module _
147+
{l1 l2 : Level} {A : UU l1} {x y z : A}
148+
{B : A → UU l2}
149+
where
150+
151+
tr³-htpy-swap-path-swap :
152+
{q q' : y = z} (β : q = q') {p p' : x = y} (α : p = p') (b : B x) →
153+
coherence-square-identifications
154+
( identification-right-whisk
155+
( tr³
156+
( B)
157+
( path-swap-nat-identification-left-whisk β α)
158+
( b))
159+
( tr-concat p' q' b))
160+
( ( identification-right-whisk
161+
( tr²-concat
162+
( identification-right-whisk α q)
163+
( identification-left-whisk p' β) b)
164+
( tr-concat p' q' b)) ∙
165+
( vertical-concat-square
166+
( tr² B (identification-right-whisk α q) b)
167+
( tr² B (identification-left-whisk p' β) b)
168+
( tr-concat p' q' b)
169+
( tr-concat p' q b)
170+
( tr-concat p q b)
171+
( htpy-left-whisk (tr B q) (tr² B α) b)
172+
( htpy-right-whisk (tr² B β) (tr B p') b)
173+
( tr²-right-whisk α q b)
174+
( tr²-left-whisk p' β b)))
175+
( ( identification-right-whisk
176+
( tr²-concat (identification-left-whisk p β)
177+
( identification-right-whisk α q') b)
178+
( tr-concat p' q' b)) ∙
179+
( vertical-concat-square
180+
( tr² B (identification-left-whisk p β) b)
181+
( tr² B (identification-right-whisk α q') b)
182+
( tr-concat p' q' b)
183+
( tr-concat p q' b)
184+
( tr-concat p q b)
185+
( htpy-right-whisk (tr² B β) (tr B p) b)
186+
( htpy-left-whisk (tr B q') (tr² B α) b)
187+
( tr²-left-whisk p β b)
188+
( tr²-right-whisk α q' b)))
189+
( identification-left-whisk
190+
( tr-concat p q b)
191+
( htpy-swap-nat-right-htpy (tr² B β) (tr² B α) b))
192+
tr³-htpy-swap-path-swap {q = refl} refl {p = refl} refl b = refl
193+
```

0 commit comments

Comments
 (0)