Theorem: frattini_nilpotent
File: Mathlib/GroupTheory/Frattini.lean

Proof steps:
state_before: G : Type u_1
H : Type u_2
inst✝² : Group G
inst✝¹ : Group H
φ : G →* H
hφ : Function.Surjective ⇑φ
inst✝ : Finite G
⊢ Group.IsNilpotent ↥(frattini G)
state_after: G : Type u_1
H : Type u_2
inst✝² : Group G
inst✝¹ : Group H
φ : G →* H
hφ : Function.Surjective ⇑φ
inst✝ : Finite G
q : Group.IsNilpotent ↥(frattini G) ↔ ∀ (p : ℕ), Fact (Nat.Prime p) → ∀ (P : Sylow p ↥(frattini G)), (↑P).Normal
⊢ Group.IsNilpotent ↥(frattini G)
tactic: have q := (isNilpotent_of_finite_tfae (G := frattini G)).out 0 3
state_before: G : Type u_1
H : Type u_2
inst✝² : Group G
inst✝¹ : Group H
φ : G →* H
hφ : Function.Surjective ⇑φ
inst✝ : Finite G
q : Group.IsNilpotent ↥(frattini G) ↔ ∀ (p : ℕ), Fact (Nat.Prime p) → ∀ (P : Sylow p ↥(frattini G)), (↑P).Normal
⊢ Group.IsNilpotent ↥(frattini G)
state_after: G : Type u_1
H : Type u_2
inst✝² : Group G
inst✝¹ : Group H
φ : G →* H
hφ : Function.Surjective ⇑φ
inst✝ : Finite G
q : Group.IsNilpotent ↥(frattini G) ↔ ∀ (p : ℕ), Fact (Nat.Prime p) → ∀ (P : Sylow p ↥(frattini G)), (↑P).Normal
⊢ ∀ (p : ℕ), Fact (Nat.Prime p) → ∀ (P : Sylow p ↥(frattini G)), (↑P).Normal
tactic: rw [q]
state_before: G : Type u_1
H : Type u_2
inst✝² : Group G
inst✝¹ : Group H
φ : G →* H
hφ : Function.Surjective ⇑φ
inst✝ : Finite G
q : Group.IsNilpotent ↥(frattini G) ↔ ∀ (p : ℕ), Fact (Nat.Prime p) → ∀ (P : Sylow p ↥(frattini G)), (↑P).Normal
⊢ ∀ (p : ℕ), Fact (Nat.Prime p) → ∀ (P : Sylow p ↥(frattini G)), (↑P).Normal
state_after: G : Type u_1
H : Type u_2
inst✝² : Group G
inst✝¹ : Group H
φ : G →* H
hφ : Function.Surjective ⇑φ
inst✝ : Finite G
⊢ ∀ (p : ℕ), Fact (Nat.Prime p) → ∀ (P : Sylow p ↥(frattini G)), (↑P).Normal
tactic: clear q
state_before: G : Type u_1
H : Type u_2
inst✝² : Group G
inst✝¹ : Group H
φ : G →* H
hφ : Function.Surjective ⇑φ
inst✝ : Finite G
⊢ ∀ (p : ℕ), Fact (Nat.Prime p) → ∀ (P : Sylow p ↥(frattini G)), (↑P).Normal
state_after: G : Type u_1
H : Type u_2
inst✝² : Group G
inst✝¹ : Group H
φ : G →* H
hφ : Function.Surjective ⇑φ
inst✝ : Finite G
p : ℕ
p_prime : Fact (Nat.Prime p)
P : Sylow p ↥(frattini G)
⊢ (↑P).Normal
tactic: intro p p_prime P
state_before: G : Type u_1
H : Type u_2
inst✝² : Group G
inst✝¹ : Group H
φ : G →* H
hφ : Function.Surjective ⇑φ
inst✝ : Finite G
p : ℕ
p_prime : Fact (Nat.Prime p)
P : Sylow p ↥(frattini G)
⊢ (↑P).Normal
state_after: G : Type u_1
H : Type u_2
inst✝² : Group G
inst✝¹ : Group H
φ : G →* H
hφ : Function.Surjective ⇑φ
inst✝ : Finite G
p : ℕ
p_prime : Fact (Nat.Prime p)
P : Sylow p ↥(frattini G)
frattini_argument : (map (frattini G).subtype ↑P).normalizer ⊔ frattini G = ⊤
⊢ (↑P).Normal
tactic: have frattini_argument := Sylow.normalizer_sup_eq_top P
state_before: G : Type u_1
H : Type u_2
inst✝² : Group G
inst✝¹ : Group H
φ : G →* H
hφ : Function.Surjective ⇑φ
inst✝ : Finite G
p : ℕ
p_prime : Fact (Nat.Prime p)
P : Sylow p ↥(frattini G)
frattini_argument : (map (frattini G).subtype ↑P).normalizer ⊔ frattini G = ⊤
⊢ (↑P).Normal
state_after: G : Type u_1
H : Type u_2
inst✝² : Group G
inst✝¹ : Group H
φ : G →* H
hφ : Function.Surjective ⇑φ
inst✝ : Finite G
p : ℕ
p_prime : Fact (Nat.Prime p)
P : Sylow p ↥(frattini G)
frattini_argument : (map (frattini G).subtype ↑P).normalizer ⊔ frattini G = ⊤
normalizer_P : (map (frattini G).subtype ↑P).normalizer = ⊤
⊢ (↑P).Normal
tactic: have normalizer_P := frattini_nongenerating frattini_argument
state_before: G : Type u_1
H : Type u_2
inst✝² : Group G
inst✝¹ : Group H
φ : G →* H
hφ : Function.Surjective ⇑φ
inst✝ : Finite G
p : ℕ
p_prime : Fact (Nat.Prime p)
P : Sylow p ↥(frattini G)
frattini_argument : (map (frattini G).subtype ↑P).normalizer ⊔ frattini G = ⊤
normalizer_P : (map (frattini G).subtype ↑P).normalizer = ⊤
⊢ (↑P).Normal
state_after: G : Type u_1
H : Type u_2
inst✝² : Group G
inst✝¹ : Group H
φ : G →* H
hφ : Function.Surjective ⇑φ
inst✝ : Finite G
p : ℕ
p_prime : Fact (Nat.Prime p)
P : Sylow p ↥(frattini G)
frattini_argument : (map (frattini G).subtype ↑P).normalizer ⊔ frattini G = ⊤
normalizer_P : (map (frattini G).subtype ↑P).normalizer = ⊤
P_normal_in_G : (map (frattini G).subtype ↑P).Normal
⊢ (↑P).Normal
tactic: have P_normal_in_G : (map (frattini G).subtype ↑P).Normal := normalizer_eq_top.mp normalizer_P
state_before: G : Type u_1
H : Type u_2
inst✝² : Group G
inst✝¹ : Group H
φ : G →* H
hφ : Function.Surjective ⇑φ
inst✝ : Finite G
p : ℕ
p_prime : Fact (Nat.Prime p)
P : Sylow p ↥(frattini G)
frattini_argument : (map (frattini G).subtype ↑P).normalizer ⊔ frattini G = ⊤
normalizer_P : (map (frattini G).subtype ↑P).normalizer = ⊤
P_normal_in_G : (map (frattini G).subtype ↑P).Normal
⊢ (↑P).Normal
state_after: no goals
tactic: exact P_normal_in_G.of_map_subtype