Skip to content

Commit 41b6eed

Browse files
Cavallo's trick for H-spaces (#1662)
1 parent 73e5178 commit 41b6eed

16 files changed

+561
-122
lines changed

src/finite-group-theory/delooping-sign-homomorphism.lagda.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1269,7 +1269,7 @@ module _
12691269
( eq-counting-equivalence-class-R n)
12701270
( eq-is-prop is-prop-type-trunc-Prop))) ∙
12711271
( inv
1272-
( eq-tr-type-Ω
1272+
( eq-conjugation-tr-type-Ω
12731273
( eq-pair-Σ
12741274
( eq-counting-equivalence-class-R n)
12751275
( eq-is-prop is-prop-type-trunc-Prop))

src/foundation-core/homotopies.lagda.md

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -315,10 +315,17 @@ Given a homotopy `H : f ~ g` we obtain a natural map `f x = f y → g x = g
315315
given by conjugation by `H`.
316316

317317
```agda
318-
conjugate-htpy :
318+
module _
319319
{l1 l2 : Level} {A : UU l1} {B : UU l2} {f g : A → B}
320-
(H : f ~ g) {x y : A} → f x = f y → g x = g y
321-
conjugate-htpy H {x} {y} p = inv (H x) ∙ (p ∙ H y)
320+
(H : f ~ g) {x y : A}
321+
where
322+
323+
conjugate-htpy : f x = f y → g x = g y
324+
conjugate-htpy p = inv (H x) ∙ (p ∙ H y)
325+
326+
compute-conjugate-htpy-ap :
327+
(p : x = y) → conjugate-htpy (ap f p) = ap g p
328+
compute-conjugate-htpy-ap refl = left-inv (H x)
322329
```
323330

324331
### Homotopies preserve the laws of the action on identity types

src/foundation-core/identity-types.lagda.md

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -251,6 +251,11 @@ module _
251251
{x y z w : A} (p : x = y) (q : y = z) (r : z = w) →
252252
(p ∙ q) ∙ r = p ∙ (q ∙ r)
253253
assoc refl q r = refl
254+
255+
inv-assoc :
256+
{x y z w : A} (p : x = y) (q : y = z) (r : z = w) →
257+
p ∙ (q ∙ r) = (p ∙ q) ∙ r
258+
inv-assoc p q r = inv (assoc p q r)
254259
```
255260

256261
### The unit laws for concatenation
@@ -504,7 +509,7 @@ module _
504509
505510
is-injective-concat' :
506511
{x y z : A} (r : y = z) {p q : x = y} → p ∙ r = q ∙ r → p = q
507-
is-injective-concat' refl s = (inv right-unit)(s ∙ right-unit)
512+
is-injective-concat' refl s = inv right-unit ∙ s ∙ right-unit
508513
```
509514

510515
## Equational reasoning

src/foundation/action-on-higher-identifications-functions.lagda.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -149,8 +149,8 @@ module _
149149
( ap-comp g f q)
150150
( (ap² g ∘ ap² f) α)
151151
compute-comp-ap² =
152-
(horizontal-concat-Id² refl (inv (ap-comp (ap g) (ap f) α)) ∙
153-
(nat-htpy (ap-comp g f) α))
152+
( horizontal-concat-Id² refl (inv (ap-comp (ap g) (ap f) α))) ∙
153+
( nat-htpy (ap-comp g f) α)
154154
```
155155

156156
### The action of a constant function on higher identifications is constant

src/foundation/commuting-triangles-of-identifications.lagda.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,11 +46,11 @@ module _
4646
4747
coherence-triangle-identifications :
4848
(left : x = z) (right : y = z) (top : x = y) → UU l
49-
coherence-triangle-identifications left right top = left = top ∙ right
49+
coherence-triangle-identifications left right top = (left = top ∙ right)
5050
5151
coherence-triangle-identifications' :
5252
(left : x = z) (right : y = z) (top : x = y) → UU l
53-
coherence-triangle-identifications' left right top = top ∙ right = left
53+
coherence-triangle-identifications' left right top = (top ∙ right = left)
5454
```
5555

5656
### The horizontally constant triangle of identifications

src/foundation/identity-types.lagda.md

Lines changed: 71 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@ open import foundation-core.equivalences
2121
open import foundation-core.fibers-of-maps
2222
open import foundation-core.function-types
2323
open import foundation-core.homotopies
24+
open import foundation-core.retractions
25+
open import foundation-core.sections
2426
```
2527

2628
</details>
@@ -58,6 +60,20 @@ mac-lane-pentagon :
5860
mac-lane-pentagon refl refl refl refl = refl
5961
```
6062

63+
### Conjugation by the right unit law
64+
65+
```agda
66+
module _
67+
{l1 : Level} {A : UU l1}
68+
where
69+
70+
conjugate-right-unit :
71+
{x y : A} {p q : x = y} (s : p = q) →
72+
inv right-unit ∙ ap (_∙ refl) s ∙ right-unit = s
73+
conjugate-right-unit refl =
74+
ap (_∙ right-unit) right-unit ∙ left-inv right-unit
75+
```
76+
6177
### The groupoidal operations on identity types are equivalences
6278

6379
```agda
@@ -180,10 +196,24 @@ module _
180196
where
181197
182198
is-section-is-injective-concat :
183-
{x y z : A} (p : x = y) {q r : y = z} (s : (p ∙ q) = (p ∙ r))
184-
ap (concat p z) (is-injective-concat p s) = s
199+
{x y z : A} (p : x = y) {q r : y = z} →
200+
is-section (ap (concat p z)) (is-injective-concat p {q} {r})
185201
is-section-is-injective-concat refl refl = refl
186202
203+
is-retraction-is-injective-concat :
204+
{x y z : A} (p : x = y) {q r : y = z} →
205+
is-retraction (ap (concat p z)) (is-injective-concat p {q} {r})
206+
is-retraction-is-injective-concat refl refl = refl
207+
208+
is-equiv-is-injective-concat :
209+
{x y z : A} (p : x = y) {q r : y = z} →
210+
is-equiv (is-injective-concat p {q} {r})
211+
is-equiv-is-injective-concat {z = z} p =
212+
is-equiv-is-invertible
213+
( ap (concat p z))
214+
( is-retraction-is-injective-concat p)
215+
( is-section-is-injective-concat p)
216+
187217
cases-is-section-is-injective-concat' :
188218
{x y : A} {p q : x = y} (s : p = q) →
189219
( ap
@@ -192,31 +222,46 @@ module _
192222
( right-unit ∙ (s ∙ inv right-unit))
193223
cases-is-section-is-injective-concat' {p = refl} refl = refl
194224
195-
is-section-is-injective-concat' :
196-
{x y z : A} (r : y = z) {p q : x = y} (s : (p ∙ r) = (q ∙ r)) →
197-
ap (concat' x r) (is-injective-concat' r s) = s
198-
is-section-is-injective-concat' refl s =
199-
( ap (λ u → ap (concat' _ refl) (is-injective-concat' refl u)) (inv α)) ∙
200-
( ( cases-is-section-is-injective-concat'
201-
( inv right-unit ∙ (s ∙ right-unit))) ∙
202-
( α))
203-
where
204-
α :
205-
( ( right-unit) ∙
206-
( ( inv right-unit ∙ (s ∙ right-unit)) ∙
207-
( inv right-unit))) =
208-
( s)
209-
α =
210-
( ap
211-
( concat right-unit _)
212-
( ( assoc (inv right-unit) (s ∙ right-unit) (inv right-unit)) ∙
213-
( ( ap
214-
( concat (inv right-unit) _)
225+
abstract
226+
is-section-is-injective-concat' :
227+
{x y z : A} (r : y = z) {p q : x = y} →
228+
is-section (ap (concat' x r)) (is-injective-concat' r {p} {q})
229+
is-section-is-injective-concat' refl {p} {q} s =
230+
( ap (λ u → ap (concat' _ refl) (is-injective-concat' refl u)) (inv α)) ∙
231+
( ( cases-is-section-is-injective-concat'
232+
( inv right-unit ∙ (s ∙ right-unit))) ∙
233+
( α))
234+
where
235+
α :
236+
( ( right-unit) ∙
237+
( ( inv right-unit ∙ (s ∙ right-unit)) ∙
238+
( inv right-unit))) =
239+
( s)
240+
α =
241+
( ap
242+
( concat right-unit (q ∙ refl))
243+
( ( assoc (inv right-unit) (s ∙ right-unit) (inv right-unit)) ∙
244+
( ap
245+
( concat (inv right-unit) (q ∙ refl))
215246
( ( assoc s right-unit (inv right-unit)) ∙
216-
( ( ap (concat s _) (right-inv right-unit)) ∙
217-
( right-unit))))))) ∙
218-
( ( inv (assoc right-unit (inv right-unit) s)) ∙
219-
( ( ap (concat' _ s) (right-inv right-unit))))
247+
( ap (concat s (q ∙ refl)) (right-inv right-unit)) ∙
248+
( right-unit))))) ∙
249+
( inv (assoc right-unit (inv right-unit) s)) ∙
250+
( ( ap (concat' (p ∙ refl) s) (right-inv right-unit)))
251+
252+
is-retraction-is-injective-concat' :
253+
{x y z : A} (r : y = z) {p q : x = y} →
254+
is-retraction (ap (concat' x r)) (is-injective-concat' r {p} {q})
255+
is-retraction-is-injective-concat' refl = conjugate-right-unit
256+
257+
is-equiv-is-injective-concat' :
258+
{x y z : A} (r : y = z) {p q : x = y} →
259+
is-equiv (is-injective-concat' r {p} {q})
260+
is-equiv-is-injective-concat' {x} r =
261+
is-equiv-is-invertible
262+
( ap (concat' x r))
263+
( is-retraction-is-injective-concat' r)
264+
( is-section-is-injective-concat' r)
220265
```
221266

222267
### Applying the right unit law on one side of a higher identification is an equivalence

src/foundation/whiskering-identifications-concatenation.lagda.md

Lines changed: 33 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ module _
6464
is-equiv-left-whisker-concat
6565
```
6666

67-
### Right whiskering of identification is an equivalence
67+
### Right whiskering of identifications is an equivalence
6868

6969
```agda
7070
module _
@@ -82,3 +82,35 @@ module _
8282
pr2 equiv-right-whisker-concat =
8383
is-equiv-right-whisker-concat
8484
```
85+
86+
### Left unwhiskering of identifications is an equivalence
87+
88+
```agda
89+
module _
90+
{l : Level} {A : UU l} {x y z : A} (p : x = y) {q q' : y = z}
91+
where
92+
93+
is-equiv-left-unwhisker-concat :
94+
is-equiv (λ (α : p ∙ q = p ∙ q') → left-unwhisker-concat p α)
95+
is-equiv-left-unwhisker-concat = is-equiv-is-injective-concat p
96+
97+
equiv-left-unwhisker-concat : (p ∙ q = p ∙ q') ≃ (q = q')
98+
equiv-left-unwhisker-concat =
99+
( left-unwhisker-concat p , is-equiv-left-unwhisker-concat)
100+
```
101+
102+
### Right unwhiskering of identifications is an equivalence
103+
104+
```agda
105+
module _
106+
{l : Level} {A : UU l} {x y z : A} {p p' : x = y} (q : y = z)
107+
where
108+
109+
is-equiv-right-unwhisker-concat :
110+
is-equiv (λ (α : p ∙ q = p' ∙ q) → right-unwhisker-concat q α)
111+
is-equiv-right-unwhisker-concat = is-equiv-is-injective-concat' q
112+
113+
equiv-right-unwhisker-concat : (p ∙ q = p' ∙ q) ≃ (p = p')
114+
equiv-right-unwhisker-concat =
115+
( right-unwhisker-concat q , is-equiv-right-unwhisker-concat)
116+
```

src/higher-group-theory/conjugation.lagda.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ module _
5353
map-conjugation-∞-Group = map-hom-∞-Group G G conjugation-∞-Group
5454
5555
compute-map-conjugation-∞-Group :
56-
map-conjugation-Ω g ~ map-conjugation-∞-Group
56+
conjugation-type-Ω g ~ map-conjugation-∞-Group
5757
compute-map-conjugation-∞-Group =
5858
htpy-compute-action-on-loops-conjugation-Pointed-Type
5959
( g)

src/higher-group-theory/equivalences-higher-groups.lagda.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ module _
5757
pointed-equiv-equiv-∞-Group = pointed-equiv-Ω-pointed-equiv e
5858
5959
equiv-equiv-∞-Group : type-∞-Group G ≃ type-∞-Group H
60-
equiv-equiv-∞-Group = equiv-map-Ω-pointed-equiv e
60+
equiv-equiv-∞-Group = equiv-Ω-pointed-equiv e
6161
```
6262

6363
### The identity equivalence of higher groups

src/structured-types/conjugation-pointed-types.lagda.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ module _
8989
9090
compute-action-on-loops-conjugation-Pointed-Type' :
9191
{u : type-Pointed-Type B} (p : point-Pointed-Type B = u) →
92-
conjugation-Ω' p ~∗ action-on-loops-conjugation-Pointed-Type p
92+
tr-Ω p ~∗ action-on-loops-conjugation-Pointed-Type p
9393
pr1 (compute-action-on-loops-conjugation-Pointed-Type' refl) ω = inv (ap-id ω)
9494
pr2 (compute-action-on-loops-conjugation-Pointed-Type' refl) = refl
9595
@@ -103,7 +103,7 @@ module _
103103
104104
htpy-compute-action-on-loops-conjugation-Pointed-Type :
105105
{u : type-Pointed-Type B} (p : point-Pointed-Type B = u) →
106-
map-conjugation-Ω p ~ map-action-on-loops-conjugation-Pointed-Type p
106+
conjugation-type-Ω p ~ map-action-on-loops-conjugation-Pointed-Type p
107107
htpy-compute-action-on-loops-conjugation-Pointed-Type p =
108108
pr1 (compute-action-on-loops-conjugation-Pointed-Type p)
109109
```

0 commit comments

Comments
 (0)