Theorem: isNilpotent_of_product_of_sylow_group
File: Mathlib/GroupTheory/Nilpotent.lean

tactic: classical
  let ps := (Fintype.card G).primeFactors
  have : ∀ (p : ps) (P : Sylow p G), IsNilpotent (↑P : Subgroup G) := by
    intro p P
    haveI : Fact (Nat.Prime ↑p) := Fact.mk <| Nat.prime_of_mem_primeFactors p.2
    exact P.isPGroup'.isNilpotent
  exact nilpotent_of_mulEquiv e
state_before: G : Type u_1
hG : Group G
inst✝ : Fintype G
e : ((p : { x // x ∈ (card G).primeFactors }) → (P : Sylow (↑p) G) → ↥↑P) ≃* G
⊢ Group.IsNilpotent G
state_after: no goals

tactic: let ps := (Fintype.card G).primeFactors
state_before: G : Type u_1
hG : Group G
inst✝ : Fintype G
e : ((p : { x // x ∈ (card G).primeFactors }) → (P : Sylow (↑p) G) → ↥↑P) ≃* G
⊢ Group.IsNilpotent G
state_after: G : Type u_1
hG : Group G
inst✝ : Fintype G
e : ((p : { x // x ∈ (card G).primeFactors }) → (P : Sylow (↑p) G) → ↥↑P) ≃* G
ps : Finset ℕ := (card G).primeFactors
⊢ Group.IsNilpotent G

tactic: have : ∀ (p : ps) (P : Sylow p G), IsNilpotent (↑P : Subgroup G) := by
  intro p P
  haveI : Fact (Nat.Prime ↑p) := Fact.mk <| Nat.prime_of_mem_primeFactors p.2
  exact P.isPGroup'.isNilpotent
state_before: G : Type u_1
hG : Group G
inst✝ : Fintype G
e : ((p : { x // x ∈ (card G).primeFactors }) → (P : Sylow (↑p) G) → ↥↑P) ≃* G
ps : Finset ℕ := (card G).primeFactors
⊢ Group.IsNilpotent G
state_after: G : Type u_1
hG : Group G
inst✝ : Fintype G
e : ((p : { x // x ∈ (card G).primeFactors }) → (P : Sylow (↑p) G) → ↥↑P) ≃* G
ps : Finset ℕ := (card G).primeFactors
this : ∀ (p : { x // x ∈ ps }) (P : Sylow (↑p) G), Group.IsNilpotent ↥↑P
⊢ Group.IsNilpotent G

tactic: exact nilpotent_of_mulEquiv e
state_before: G : Type u_1
hG : Group G
inst✝ : Fintype G
e : ((p : { x // x ∈ (card G).primeFactors }) → (P : Sylow (↑p) G) → ↥↑P) ≃* G
ps : Finset ℕ := (card G).primeFactors
this : ∀ (p : { x // x ∈ ps }) (P : Sylow (↑p) G), Group.IsNilpotent ↥↑P
⊢ Group.IsNilpotent G
state_after: no goals

tactic: intro p P
state_before: G : Type u_1
hG : Group G
inst✝ : Fintype G
e : ((p : { x // x ∈ (card G).primeFactors }) → (P : Sylow (↑p) G) → ↥↑P) ≃* G
ps : Finset ℕ := (card G).primeFactors
⊢ ∀ (p : { x // x ∈ ps }) (P : Sylow (↑p) G), Group.IsNilpotent ↥↑P
state_after: G : Type u_1
hG : Group G
inst✝ : Fintype G
e : ((p : { x // x ∈ (card G).primeFactors }) → (P : Sylow (↑p) G) → ↥↑P) ≃* G
ps : Finset ℕ := (card G).primeFactors
p : { x // x ∈ ps }
P : Sylow (↑p) G
⊢ Group.IsNilpotent ↥↑P

tactic: haveI : Fact (Nat.Prime ↑p) := Fact.mk <| Nat.prime_of_mem_primeFactors p.2
state_before: G : Type u_1
hG : Group G
inst✝ : Fintype G
e : ((p : { x // x ∈ (card G).primeFactors }) → (P : Sylow (↑p) G) → ↥↑P) ≃* G
ps : Finset ℕ := (card G).primeFactors
p : { x // x ∈ ps }
P : Sylow (↑p) G
⊢ Group.IsNilpotent ↥↑P
state_after: G : Type u_1
hG : Group G
inst✝ : Fintype G
e : ((p : { x // x ∈ (card G).primeFactors }) → (P : Sylow (↑p) G) → ↥↑P) ≃* G
ps : Finset ℕ := (card G).primeFactors
p : { x // x ∈ ps }
P : Sylow (↑p) G
this : Fact (Nat.Prime ↑p)
⊢ Group.IsNilpotent ↥↑P

tactic: exact P.isPGroup'.isNilpotent
state_before: G : Type u_1
hG : Group G
inst✝ : Fintype G
e : ((p : { x // x ∈ (card G).primeFactors }) → (P : Sylow (↑p) G) → ↥↑P) ≃* G
ps : Finset ℕ := (card G).primeFactors
p : { x // x ∈ ps }
P : Sylow (↑p) G
this : Fact (Nat.Prime ↑p)
⊢ Group.IsNilpotent ↥↑P
state_after: no goals