@@ -624,7 +624,6 @@ lemma order_eq_card_zpowers : order_of x = fintype.card (zpowers x) :=
624
624
625
625
open quotient_group
626
626
627
- /- TODO: use cardinal theory, introduce `card : set G → ℕ`, or setup decidability for cosets -/
628
627
@[to_additive add_order_of_dvd_card_univ]
629
628
lemma order_of_dvd_card_univ : order_of x ∣ fintype.card G :=
630
629
begin
@@ -649,15 +648,25 @@ begin
649
648
(by rw [eq₁, eq₂, mul_comm])
650
649
end
651
650
651
+ @[to_additive add_order_of_dvd_nat_card]
652
+ lemma order_of_dvd_nat_card {G : Type *} [group G] {x : G} : order_of x ∣ nat.card G :=
653
+ begin
654
+ casesI fintype_or_infinite G with h h,
655
+ { simp only [nat.card_eq_fintype_card, order_of_dvd_card_univ] },
656
+ { simp only [card_eq_zero_of_infinite, dvd_zero] },
657
+ end
658
+
659
+ @[simp, to_additive card_nsmul_eq_zero']
660
+ lemma pow_card_eq_one' {G : Type *} [group G] {x : G} : x ^ nat.card G = 1 :=
661
+ order_of_dvd_iff_pow_eq_one.mp order_of_dvd_nat_card
662
+
652
663
@[simp, to_additive card_nsmul_eq_zero]
653
664
lemma pow_card_eq_one : x ^ fintype.card G = 1 :=
654
- let ⟨m, hm⟩ := @order_of_dvd_card_univ _ x _ _ in
655
- by simp [hm, pow_mul, pow_order_of_eq_one]
665
+ by rw [←nat.card_eq_fintype_card, pow_card_eq_one']
656
666
657
667
@[to_additive] lemma subgroup.pow_index_mem {G : Type *} [group G] (H : subgroup G)
658
- [finite (G ⧸ H)] [normal H] (g : G) : g ^ index H ∈ H :=
659
- by { casesI nonempty_fintype (G ⧸ H),
660
- rw [←eq_one_iff, quotient_group.coe_pow H, index_eq_card, pow_card_eq_one] }
668
+ [normal H] (g : G) : g ^ index H ∈ H :=
669
+ by rw [←eq_one_iff, quotient_group.coe_pow H, index, pow_card_eq_one']
661
670
662
671
@[to_additive] lemma pow_eq_mod_card (n : ℕ) :
663
672
x ^ n = x ^ (n % fintype.card G) :=
@@ -671,23 +680,23 @@ by rw [zpow_eq_mod_order_of, ← int.mod_mod_of_dvd n (int.coe_nat_dvd.2 order_o
671
680
672
681
/-- If `gcd(|G|,n)=1` then the `n`th power map is a bijection -/
673
682
@[to_additive " If `gcd(|G|,n)=1` then the smul by `n` is a bijection" , simps]
674
- def pow_coprime (h : nat.coprime (fintype. card G) n) : G ≃ G :=
683
+ noncomputable def pow_coprime {G : Type *} [group G] (h : ( nat.card G).coprime n) : G ≃ G :=
675
684
{ to_fun := λ g, g ^ n,
676
- inv_fun := λ g, g ^ (nat.gcd_b (fintype. card G) n),
685
+ inv_fun := λ g, g ^ (( nat.card G).gcd_b n),
677
686
left_inv := λ g, by
678
- { have key : g ^ _ = g ^ _ := congr_arg (λ n : ℤ, g ^ n ) (nat.gcd_eq_gcd_ab (fintype. card G) n),
687
+ { have key := congr_arg ((^) g ) (( nat.card G).gcd_eq_gcd_ab n),
679
688
rwa [zpow_add, zpow_mul, zpow_mul, zpow_coe_nat, zpow_coe_nat, zpow_coe_nat,
680
- h.gcd_eq_one, pow_one, pow_card_eq_one, one_zpow, one_mul, eq_comm] at key },
689
+ h.gcd_eq_one, pow_one, pow_card_eq_one' , one_zpow, one_mul, eq_comm] at key },
681
690
right_inv := λ g, by
682
- { have key : g ^ _ = g ^ _ := congr_arg (λ n : ℤ, g ^ n ) (nat.gcd_eq_gcd_ab (fintype. card G) n),
691
+ { have key := congr_arg ((^) g ) (( nat.card G).gcd_eq_gcd_ab n),
683
692
rwa [zpow_add, zpow_mul, zpow_mul', zpow_coe_nat, zpow_coe_nat, zpow_coe_nat,
684
- h.gcd_eq_one, pow_one, pow_card_eq_one, one_zpow, one_mul, eq_comm] at key } }
693
+ h.gcd_eq_one, pow_one, pow_card_eq_one' , one_zpow, one_mul, eq_comm] at key } }
685
694
686
- @[simp, to_additive] lemma pow_coprime_one (h : nat.coprime (fintype. card G) n) :
695
+ @[simp, to_additive] lemma pow_coprime_one {G : Type *} [group G] (h : ( nat.card G).coprime n) :
687
696
pow_coprime h 1 = 1 := one_pow n
688
697
689
- @[simp, to_additive] lemma pow_coprime_inv (h : nat.coprime (fintype. card G) n) {g : G} :
690
- pow_coprime h g⁻¹ = (pow_coprime h g)⁻¹ := inv_pow g n
698
+ @[simp, to_additive] lemma pow_coprime_inv {G : Type *} [group G] (h : ( nat.card G).coprime n)
699
+ {g : G} : pow_coprime h g⁻¹ = (pow_coprime h g)⁻¹ := inv_pow g n
691
700
692
701
@[to_additive add_inf_eq_bot_of_coprime]
693
702
lemma inf_eq_bot_of_coprime {G : Type *} [group G] {H K : subgroup G} [fintype H] [fintype K]
0 commit comments