@@ -8,6 +8,8 @@ import group_theory.general_commutator
8
8
import group_theory.quotient_group
9
9
import group_theory.solvable
10
10
import group_theory.p_group
11
+ import group_theory.sylow
12
+ import data.nat.factorization
11
13
12
14
/-!
13
15
@@ -77,6 +79,8 @@ are not central series if `G` is not nilpotent is a standard abuse of notation.
77
79
78
80
open subgroup
79
81
82
+ section with_group
83
+
80
84
variables {G : Type *} [group G] (H : subgroup G) [normal H]
81
85
82
86
/-- If `H` is a normal subgroup of `G`, then the set `{x : G | ∀ y : G, x*y*x⁻¹*y⁻¹ ∈ H}`
@@ -533,7 +537,7 @@ begin
533
537
simp only [lower_central_series_nilpotency_class, le_bot_iff],
534
538
end
535
539
536
- /-- The range of a surejctive homomorphism from a nilpotent group is nilpotent -/
540
+ /-- The range of a surjective homomorphism from a nilpotent group is nilpotent -/
537
541
lemma nilpotent_of_surjective {G' : Type *} [group G'] [h : is_nilpotent G]
538
542
(f : G →* G') (hf : function.surjective f) :
539
543
is_nilpotent G' :=
@@ -563,6 +567,11 @@ begin
563
567
... ≤ upper_central_series G' n : upper_central_series.map hf n,
564
568
end
565
569
570
+ /-- Nilpotency respects isomorphisms -/
571
+ lemma nilpotent_of_mul_equiv {G' : Type *} [group G'] [h : is_nilpotent G] (f : G ≃* G') :
572
+ is_nilpotent G' :=
573
+ nilpotent_of_surjective f.to_monoid_hom (mul_equiv.surjective f)
574
+
566
575
/-- A quotient of a nilpotent group is nilpotent -/
567
576
instance nilpotent_quotient_of_nilpotent (H : subgroup G) [H.normal] [h : is_nilpotent G] :
568
577
is_nilpotent (G ⧸ H) :=
@@ -823,32 +832,6 @@ begin
823
832
exact derived_le_lower_central n,
824
833
end
825
834
826
- section classical
827
-
828
- open_locale classical -- to get the fintype instance for quotient groups
829
-
830
- /-- A p-group is nilpotent -/
831
- lemma is_p_group.is_nilpotent {G : Type *} [hG : group G] [hf : fintype G]
832
- {p : ℕ} (hp : fact (nat.prime p)) (h : is_p_group p G) :
833
- is_nilpotent G :=
834
- begin
835
- unfreezingI
836
- { revert hG,
837
- induction hf using fintype.induction_subsingleton_or_nontrivial with G hG hS G hG hN ih },
838
- { apply_instance, },
839
- { introI _, intro h,
840
- have hc : center G > ⊥ := gt_iff_lt.mp h.bot_lt_center,
841
- have hcq : fintype.card (G ⧸ center G) < fintype.card G,
842
- { rw card_eq_card_quotient_mul_card_subgroup (center G),
843
- apply lt_mul_of_one_lt_right,
844
- exact (fintype.card_pos_iff.mpr has_one.nonempty),
845
- exact ((subgroup.one_lt_card_iff_ne_bot _).mpr (ne_of_gt hc)), },
846
- have hnq : is_nilpotent (G ⧸ center G) := ih _ hcq (h.to_quotient (center G)),
847
- exact (of_quotient_center_nilpotent hnq), }
848
- end
849
-
850
- end classical
851
-
852
835
lemma normalizer_condition_of_is_nilpotent [h : is_nilpotent G] : normalizer_condition G :=
853
836
begin
854
837
-- roughly based on https://groupprops.subwiki.org/wiki/Nilpotent_implies_normalizer_condition
@@ -871,3 +854,47 @@ begin
871
854
apply map_injective_of_ker_le (mk' (center G)) hkh le_top,
872
855
exact (ih H' hH').trans (symm (map_top_of_surjective _ hsur)), },
873
856
end
857
+
858
+ end with_group
859
+
860
+ section with_finite_group
861
+
862
+ open group
863
+
864
+ variables {G : Type *} [hG : group G] [hf : fintype G]
865
+ include hG hf
866
+
867
+ /-- A p-group is nilpotent -/
868
+ lemma is_p_group.is_nilpotent {p : ℕ} [hp : fact (nat.prime p)] (h : is_p_group p G) :
869
+ is_nilpotent G :=
870
+ begin
871
+ classical,
872
+ unfreezingI
873
+ { revert hG,
874
+ induction hf using fintype.induction_subsingleton_or_nontrivial with G hG hS G hG hN ih },
875
+ { apply_instance, },
876
+ { introI _, intro h,
877
+ have hcq : fintype.card (G ⧸ center G) < fintype.card G,
878
+ { rw card_eq_card_quotient_mul_card_subgroup (center G),
879
+ apply lt_mul_of_one_lt_right,
880
+ exact (fintype.card_pos_iff.mpr has_one.nonempty),
881
+ exact ((subgroup.one_lt_card_iff_ne_bot _).mpr (ne_of_gt h.bot_lt_center)), },
882
+ have hnq : is_nilpotent (G ⧸ center G) := ih _ hcq (h.to_quotient (center G)),
883
+ exact (of_quotient_center_nilpotent hnq), }
884
+ end
885
+
886
+ /-- If a finite group is the direct product of its Sylow groups, it is nilpotent -/
887
+ theorem is_nilpotent_of_product_of_sylow_group
888
+ (e : (Π p : (fintype.card G).factorization.support, Π P : sylow p G, (↑P : subgroup G)) ≃* G) :
889
+ is_nilpotent G :=
890
+ begin
891
+ classical,
892
+ let ps := (fintype.card G).factorization.support,
893
+ haveI : ∀ (p : ps) (P : sylow p G), is_nilpotent (↑P : subgroup G),
894
+ { intros p P,
895
+ haveI : fact (nat.prime ↑p) := fact.mk (nat.prime_of_mem_factorization (finset.coe_mem p)),
896
+ exact P.is_p_group'.is_nilpotent, },
897
+ exact nilpotent_of_mul_equiv e,
898
+ end
899
+
900
+ end with_finite_group
0 commit comments