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/Algebra/AbGroups/AbelianGroup.v
+28-29Lines changed: 28 additions & 29 deletions
Original file line number
Diff line number
Diff line change
@@ -228,6 +228,20 @@ Proof.
228
228
1-2: exact negate_involutive.
229
229
Defined.
230
230
231
+
(** This goal comes up twice in the proof of [ab_mul], so we factor it out. *)
232
+
LocalDefinition ab_mul_helper {A : AbGroup} (a b x y z : A)
233
+
(p : x = y + z)
234
+
: a + b + x = a + y + (b + z).
235
+
Proof.
236
+
lhs_V srapply grp_assoc.
237
+
rhs_V srapply grp_assoc.
238
+
apply grp_cancelL.
239
+
rhs srapply grp_assoc.
240
+
rhs nrapply (ap (fun g => g + z) (ab_comm y b)).
241
+
rhs_V srapply grp_assoc.
242
+
apply grp_cancelL, p.
243
+
Defined.
244
+
231
245
(** Multiplication by [n : Int] defines an endomorphism of any abelian group [A]. *)
232
246
Definition ab_mul {A : AbGroup} (n : Int) : GroupHomomorphism A A.
233
247
Proof.
@@ -236,32 +250,18 @@ Proof.
236
250
intros a b.
237
251
induction n; cbn.
238
252
- exact (grp_unit_l _)^.
239
-
- destruct n.
240
-
+ reflexivity.
241
-
+ rhs_V srapply (associativity a).
242
-
rhs srapply (ap _ (associativity _ b _)).
243
-
rewrite (commutativity (nat_iter _ _ _) b).
244
-
rhs_V srapply (ap _ (associativity b _ _)).
245
-
rhs srapply (associativity a).
246
-
apply grp_cancelL.
247
-
exact IHn.
248
-
- destruct n.
249
-
+ rewrite (commutativity (-a)).
250
-
exact (grp_inv_op a b).
251
-
+ rhs_V srapply (associativity (-a)).
252
-
rhs srapply (ap _ (associativity _ (-b) _)).
253
-
rewrite (commutativity (nat_iter _ _ _) (-b)).
254
-
rhs_V srapply (ap _ (associativity (-b) _ _)).
255
-
rhs srapply (associativity (-a)).
256
-
rewrite (commutativity (-a) (-b)), <- (grp_inv_op a b).
257
-
apply grp_cancelL.
258
-
exact IHn.
253
+
- rewrite 3 grp_pow_succ.
254
+
by apply ab_mul_helper.
255
+
- rewrite 3 grp_pow_pred.
256
+
rewrite (grp_inv_op a b), (commutativity (-b) (-a)).
257
+
by apply ab_mul_helper.
259
258
Defined.
260
259
261
-
Definition ab_mul_homo {A B : AbGroup}
260
+
(** [ab_mul n] is natural. *)
261
+
Definition ab_mul_natural {A B : AbGroup}
262
262
(f : GroupHomomorphism A B) (n : Int)
263
263
: f o ab_mul n == ab_mul n o f
264
-
:= grp_pow_homo f n.
264
+
:= grp_pow_natural f n.
265
265
266
266
(** The image of an inclusion is a normal subgroup. *)
267
267
Definition ab_image_embedding {A B : AbGroup} (f : A $-> B) `{IsEmbedding f} : NormalSubgroup B
@@ -303,18 +303,17 @@ Proof.
303
303
Defined.
304
304
305
305
(** If the function is constant in the range of a finite sum then the sum is equal to the constant times [n]. This is a group power in the underlying group. *)
Lemma grp_pow_homo {G H : Group} (f : GroupHomomorphism G H) (n : Int) (g : G)
481
+
:= int_iter (g *.) n mon_unit.
482
+
483
+
(** Any homomorphism respects [grp_pow]. In other words, [fun g => grp_pow g n] is natural. *)
484
+
Lemma grp_pow_natural {G H : Group} (f : GroupHomomorphism G H) (n : Int) (g : G)
489
485
: f (grp_pow g n) = grp_pow (f g) n.
490
486
Proof.
491
-
induction n.
492
-
- apply grp_homo_unit.
493
-
- destruct n; simpl in IHn |- *.
494
-
+ reflexivity.
495
-
+ lhs snrapply grp_homo_op.
496
-
apply ap.
497
-
exact IHn.
498
-
- destruct n; simpl in IHn |- *.
499
-
+ apply grp_homo_inv.
500
-
+ lhs snrapply grp_homo_op.
501
-
apply ap011.
502
-
* apply grp_homo_inv.
503
-
* exact IHn.
487
+
lhs snrapply (int_iter_commute_map _ ((f g) *.)).
488
+
1: nrapply grp_homo_op.
489
+
apply (ap (int_iter _ n)), grp_homo_unit.
504
490
Defined.
505
491
506
492
(** All powers of the unit are the unit. *)
507
493
Definition grp_pow_unit {G : Group} (n : Int)
508
494
: grp_pow (G:=G) mon_unit n = mon_unit.
509
495
Proof.
510
-
induction n.
496
+
snrapply (int_iter_invariant n _ (fun g => g = mon_unit)); cbn.
497
+
1, 2: apply paths_ind_r.
498
+
- apply grp_unit_r.
499
+
- lhs nrapply grp_unit_r. apply grp_inv_unit.
511
500
- reflexivity.
512
-
- destruct n; simpl.
513
-
+ reflexivity.
514
-
+ by lhs nrapply grp_unit_l.
515
-
- destruct n; simpl in IHn |- *.
516
-
+ apply grp_inv_unit.
517
-
+ destruct IHn^.
518
-
rhs_V apply (@grp_inv_unit G).
519
-
apply grp_unit_r.
520
501
Defined.
521
502
522
503
(** Note that powers don't preserve the group operation as it is not commutative. This does hold in an abelian group so such a result will appear later. *)
523
504
524
-
(** Helper functions for [grp_pow_int_add]. This is how we can unfold [grp_pow] once. *)
505
+
(** The next two results tell us how [grp_pow] unfolds. *)
0 commit comments