You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: theories/Basics/PathGroupoids.v
+25-5Lines changed: 25 additions & 5 deletions
Original file line number
Diff line number
Diff line change
@@ -1135,6 +1135,16 @@ Definition inverse2 {A : Type} {x y : A} {p q : x = y} (h : p = q)
1135
1135
: p^ = q^
1136
1136
:= ap inverse h.
1137
1137
1138
+
(** Two common combinations of [ap_pp] and [ap_V]. *)
1139
+
1140
+
Definition ap_pV {A B : Type} (f : A -> B) {a0 a1 a0' : A} (p : a0 = a1) (q : a0' = a1)
1141
+
: ap f (p @ q^) = ap f p @ (ap f q)^
1142
+
:= ap_pp f p q^ @ (1 @@ ap_V f q).
1143
+
1144
+
Definition ap_Vp {A B : Type} (f : A -> B) {a0 a1 a1' : A} (p : a0 = a1) (q : a0 = a1')
1145
+
: ap f (p^ @ q) = (ap f p)^ @ ap f q
1146
+
:= ap_pp f p^ q @ (ap_V f p @@ 1).
1147
+
1138
1148
(** Some higher coherences *)
1139
1149
1140
1150
Lemma ap_pp_concat_p1 {A B} (f : A -> B) {a b : A} (p : a = b)
@@ -1149,15 +1159,14 @@ Proof.
1149
1159
destruct p; reflexivity.
1150
1160
Defined.
1151
1161
1152
-
Lemma ap_pp_concat_pV {A B} (f : A -> B) {x y : A} (p : x = y)
1153
-
: ap_pp f p p^ @ ((1 @@ ap_V f p) @ concat_pV (ap f p))
1154
-
= ap (ap f) (concat_pV p).
1162
+
Lemma ap_pV_concat_pV {A B} (f : A -> B) {x y : A} (p : x = y)
1163
+
: ap_pV f p p @ concat_pV (ap f p) = ap (ap f) (concat_pV p).
1155
1164
Proof.
1156
1165
destruct p; reflexivity.
1157
1166
Defined.
1158
1167
1159
-
Lemmaap_pp_concat_Vp {A B} (f : A -> B) {x y : A} (p : x = y)
1160
-
: ap_pp f p^ p @ ((ap_V f p @@ 1) @ concat_Vp (ap f p))
1168
+
Lemmaap_Vp_concat_Vp {A B} (f : A -> B) {x y : A} (p : x = y)
1169
+
: ap_Vp f p p @ concat_Vp (ap f p)
1161
1170
= ap (ap f) (concat_Vp p).
1162
1171
Proof.
1163
1172
destruct p; reflexivity.
@@ -1175,6 +1184,17 @@ Proof.
1175
1184
destruct r, p; reflexivity.
1176
1185
Defined.
1177
1186
1187
+
(** Often [ap_pV_concat_pV] is combined with [concat_pV_inverse2] using a beta rule for [ap f p]. This and several above are best read from right-to-left, and the name here reflects the right-hand-side. *)
1188
+
Definition ap_ap_concat_pV {A B} (f : A -> B) {x y : A} (p : x = y)
1189
+
(q : f x = f y) (r : ap f p = q)
1190
+
: ap_pV f p p @ ((r @@ inverse2 r) @ concat_pV q) = ap (ap f) (concat_pV p)
1191
+
:= (1 @@ concat_pV_inverse2 _ q r) @ ap_pV_concat_pV f p.
1192
+
1193
+
Definition ap_ap_concat_Vp {A B} (f : A -> B) {x y : A} (p : x = y)
1194
+
(q : f x = f y) (r : ap f p = q)
1195
+
: ap_Vp f p p @ ((inverse2 r @@ r) @ concat_Vp q) = ap (ap f) (concat_Vp p)
1196
+
:= (1 @@ concat_Vp_inverse2 _ q r) @ ap_Vp_concat_Vp f p.
1197
+
1178
1198
(** *** Whiskering *)
1179
1199
1180
1200
Definition whiskerL {A : Type} {x y z : A} (p : x = y)
Copy file name to clipboardExpand all lines: theories/Homotopy/Join/Core.v
+45-4Lines changed: 45 additions & 4 deletions
Original file line number
Diff line number
Diff line change
@@ -143,6 +143,26 @@ End Join.
143
143
Arguments joinl {A B}%_type_scope _ , [A] B _.
144
144
Arguments joinr {A B}%_type_scope _ , A [B] _.
145
145
146
+
(** ** Zigzags in joins *)
147
+
148
+
(** These paths are very common, so we give them names. *)
149
+
Definition zigzag {A B : Type} (a a' : A) (b : B)
150
+
: joinl a = joinl a'
151
+
:= jglue a b @ (jglue a' b)^.
152
+
153
+
Definition zagzig {A B : Type} (a : A) (b b' : B)
154
+
: joinr b = joinr b'
155
+
:= (jglue a b)^ @ jglue a b'.
156
+
157
+
(** And we give a beta rule for zigzags. *)
158
+
Definition Join_rec_beta_zigzag {A B P : Type} (P_A : A -> P)
159
+
(P_B : B -> P) (P_g : forall a b, P_A a = P_B b) a a' b
160
+
: ap (Join_rec P_A P_B P_g) (zigzag a a' b) = P_g a b @ (P_g a' b)^.
161
+
Proof.
162
+
lhs napply ap_pV.
163
+
exact (Join_rec_beta_jglue _ _ _ a b @@ inverse2 (Join_rec_beta_jglue _ _ _ a' b)).
164
+
Defined.
165
+
146
166
(** * [Join_rec] gives an equivalence of 0-groupoids
147
167
148
168
We now prove many things about [Join_rec], for example, that it is an equivalence of 0-groupoids from the [JoinRecData] that we define next. The framework we use is a bit elaborate, but it parallels the framework used in TriJoin.v, where careful organization is essential. *)
@@ -404,6 +424,22 @@ Proof.
404
424
exact (isnat (join_rec_natequiv A B) g f).
405
425
Defined.
406
426
427
+
(** We restate the previous two results using [Join_rec] for convenience. *)
428
+
Definition Join_rec_homotopic (A B : Type) {P : Type}
429
+
(fl : A -> P) (fr : B -> P) (fg : forall a b, fl a = fr b)
430
+
(fl' : A -> P) (fr' : B -> P) (fg' : forall a b, fl' a = fr' b)
: ap (Susp_rec H_N H_S H_merid) (merid x @ (merid x')^) = H_merid x @ (H_merid x')^.
126
+
Proof.
127
+
lhs napply ap_pV.
128
+
exact (Susp_rec_beta_merid x @@ inverse2 (Susp_rec_beta_merid x')).
129
+
Defined.
130
+
131
+
(** A variant of [Susp_ind_FlFr] specifically for two functions both defined using [Susp_rec]. *)
132
+
Definition Susp_rec_homotopic {X Y : Type} (N S N' S' : Y)
133
+
(f : X -> N = S) (f' : X -> N' = S')
134
+
(p : N = N') (q : S = S') (H : forall x, f x @ q = p @ f' x)
135
+
: Susp_rec N S f == Susp_rec N' S' f'.
136
+
Proof.
137
+
snapply Susp_ind_FlFr.
138
+
- exact p.
139
+
- exact q.
140
+
- intro x.
141
+
lhs napply (Susp_rec_beta_merid x @@ 1).
142
+
rhs napply (1 @@ Susp_rec_beta_merid x).
143
+
apply H.
144
+
Defined.
145
+
146
+
(** And the special case where the two functions agree definitionally on [North] and [South]. *)
147
+
Definition Susp_rec_homotopic' {X Y : Type} (N S : Y)
148
+
(f g : X -> N = S) (H : f == g)
149
+
: Susp_rec N S f == Susp_rec N S g.
150
+
Proof.
151
+
snapply Susp_rec_homotopic.
152
+
1, 2: reflexivity.
153
+
intro x; apply equiv_p1_1q, H.
154
+
Defined.
155
+
123
156
(** ** Eta-rule. *)
124
157
125
158
(** The eta-rule for suspension states that any function out of a suspension is equal to one defined by [Susp_ind] in the obvious way. We give it first in a weak form, producing just a pointwise equality, and then turn this into an actual equality using [Funext]. *)
0 commit comments