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

tactic: tfae_have 1 → 2
state_before: G : Type u_1
hG : Group G
inst✝ : Fintype G
⊢ [Group.IsNilpotent G, NormalizerCondition G, ∀ (H : Subgroup G), IsCoatom H → H.Normal,
      ∀ (p : ℕ), Fact (Nat.Prime p) → ∀ (P : Sylow p G), (↑P).Normal,
      Nonempty (((p : { x // x ∈ (card G).primeFactors }) → (P : Sylow (↑p) G) → ↥↑P) ≃* G)].TFAE
state_after: case tfae_1_to_2
G : Type u_1
hG : Group G
inst✝ : Fintype G
⊢ Group.IsNilpotent G → NormalizerCondition G

G : Type u_1
hG : Group G
inst✝ : Fintype G
tfae_1_to_2 : Group.IsNilpotent G → NormalizerCondition G
⊢ [Group.IsNilpotent G, NormalizerCondition G, ∀ (H : Subgroup G), IsCoatom H → H.Normal,
      ∀ (p : ℕ), Fact (Nat.Prime p) → ∀ (P : Sylow p G), (↑P).Normal,
      Nonempty (((p : { x // x ∈ (card G).primeFactors }) → (P : Sylow (↑p) G) → ↥↑P) ≃* G)].TFAE

tactic: tfae_have 2 → 3
state_before: G : Type u_1
hG : Group G
inst✝ : Fintype G
tfae_1_to_2 : Group.IsNilpotent G → NormalizerCondition G
⊢ [Group.IsNilpotent G, NormalizerCondition G, ∀ (H : Subgroup G), IsCoatom H → H.Normal,
      ∀ (p : ℕ), Fact (Nat.Prime p) → ∀ (P : Sylow p G), (↑P).Normal,
      Nonempty (((p : { x // x ∈ (card G).primeFactors }) → (P : Sylow (↑p) G) → ↥↑P) ≃* G)].TFAE
state_after: case tfae_2_to_3
G : Type u_1
hG : Group G
inst✝ : Fintype G
tfae_1_to_2 : Group.IsNilpotent G → NormalizerCondition G
⊢ NormalizerCondition G → ∀ (H : Subgroup G), IsCoatom H → H.Normal

G : Type u_1
hG : Group G
inst✝ : Fintype G
tfae_1_to_2 : Group.IsNilpotent G → NormalizerCondition G
tfae_2_to_3 : NormalizerCondition G → ∀ (H : Subgroup G), IsCoatom H → H.Normal
⊢ [Group.IsNilpotent G, NormalizerCondition G, ∀ (H : Subgroup G), IsCoatom H → H.Normal,
      ∀ (p : ℕ), Fact (Nat.Prime p) → ∀ (P : Sylow p G), (↑P).Normal,
      Nonempty (((p : { x // x ∈ (card G).primeFactors }) → (P : Sylow (↑p) G) → ↥↑P) ≃* G)].TFAE

tactic: tfae_have 3 → 4
state_before: G : Type u_1
hG : Group G
inst✝ : Fintype G
tfae_1_to_2 : Group.IsNilpotent G → NormalizerCondition G
tfae_2_to_3 : NormalizerCondition G → ∀ (H : Subgroup G), IsCoatom H → H.Normal
⊢ [Group.IsNilpotent G, NormalizerCondition G, ∀ (H : Subgroup G), IsCoatom H → H.Normal,
      ∀ (p : ℕ), Fact (Nat.Prime p) → ∀ (P : Sylow p G), (↑P).Normal,
      Nonempty (((p : { x // x ∈ (card G).primeFactors }) → (P : Sylow (↑p) G) → ↥↑P) ≃* G)].TFAE
state_after: case tfae_3_to_4
G : Type u_1
hG : Group G
inst✝ : Fintype G
tfae_1_to_2 : Group.IsNilpotent G → NormalizerCondition G
tfae_2_to_3 : NormalizerCondition G → ∀ (H : Subgroup G), IsCoatom H → H.Normal
⊢ (∀ (H : Subgroup G), IsCoatom H → H.Normal) → ∀ (p : ℕ), Fact (Nat.Prime p) → ∀ (P : Sylow p G), (↑P).Normal

G : Type u_1
hG : Group G
inst✝ : Fintype G
tfae_1_to_2 : Group.IsNilpotent G → NormalizerCondition G
tfae_2_to_3 : NormalizerCondition G → ∀ (H : Subgroup G), IsCoatom H → H.Normal
tfae_3_to_4 :
  (∀ (H : Subgroup G), IsCoatom H → H.Normal) → ∀ (p : ℕ), Fact (Nat.Prime p) → ∀ (P : Sylow p G), (↑P).Normal
⊢ [Group.IsNilpotent G, NormalizerCondition G, ∀ (H : Subgroup G), IsCoatom H → H.Normal,
      ∀ (p : ℕ), Fact (Nat.Prime p) → ∀ (P : Sylow p G), (↑P).Normal,
      Nonempty (((p : { x // x ∈ (card G).primeFactors }) → (P : Sylow (↑p) G) → ↥↑P) ≃* G)].TFAE

tactic: tfae_have 4 → 5
state_before: G : Type u_1
hG : Group G
inst✝ : Fintype G
tfae_1_to_2 : Group.IsNilpotent G → NormalizerCondition G
tfae_2_to_3 : NormalizerCondition G → ∀ (H : Subgroup G), IsCoatom H → H.Normal
tfae_3_to_4 :
  (∀ (H : Subgroup G), IsCoatom H → H.Normal) → ∀ (p : ℕ), Fact (Nat.Prime p) → ∀ (P : Sylow p G), (↑P).Normal
⊢ [Group.IsNilpotent G, NormalizerCondition G, ∀ (H : Subgroup G), IsCoatom H → H.Normal,
      ∀ (p : ℕ), Fact (Nat.Prime p) → ∀ (P : Sylow p G), (↑P).Normal,
      Nonempty (((p : { x // x ∈ (card G).primeFactors }) → (P : Sylow (↑p) G) → ↥↑P) ≃* G)].TFAE
state_after: case tfae_4_to_5
G : Type u_1
hG : Group G
inst✝ : Fintype G
tfae_1_to_2 : Group.IsNilpotent G → NormalizerCondition G
tfae_2_to_3 : NormalizerCondition G → ∀ (H : Subgroup G), IsCoatom H → H.Normal
tfae_3_to_4 :
  (∀ (H : Subgroup G), IsCoatom H → H.Normal) → ∀ (p : ℕ), Fact (Nat.Prime p) → ∀ (P : Sylow p G), (↑P).Normal
⊢ (∀ (p : ℕ), Fact (Nat.Prime p) → ∀ (P : Sylow p G), (↑P).Normal) →
    Nonempty (((p : { x // x ∈ (card G).primeFactors }) → (P : Sylow (↑p) G) → ↥↑P) ≃* G)

G : Type u_1
hG : Group G
inst✝ : Fintype G
tfae_1_to_2 : Group.IsNilpotent G → NormalizerCondition G
tfae_2_to_3 : NormalizerCondition G → ∀ (H : Subgroup G), IsCoatom H → H.Normal
tfae_3_to_4 :
  (∀ (H : Subgroup G), IsCoatom H → H.Normal) → ∀ (p : ℕ), Fact (Nat.Prime p) → ∀ (P : Sylow p G), (↑P).Normal
tfae_4_to_5 :
  (∀ (p : ℕ), Fact (Nat.Prime p) → ∀ (P : Sylow p G), (↑P).Normal) →
    Nonempty (((p : { x // x ∈ (card G).primeFactors }) → (P : Sylow (↑p) G) → ↥↑P) ≃* G)
⊢ [Group.IsNilpotent G, NormalizerCondition G, ∀ (H : Subgroup G), IsCoatom H → H.Normal,
      ∀ (p : ℕ), Fact (Nat.Prime p) → ∀ (P : Sylow p G), (↑P).Normal,
      Nonempty (((p : { x // x ∈ (card G).primeFactors }) → (P : Sylow (↑p) G) → ↥↑P) ≃* G)].TFAE

tactic: tfae_have 5 → 1
state_before: G : Type u_1
hG : Group G
inst✝ : Fintype G
tfae_1_to_2 : Group.IsNilpotent G → NormalizerCondition G
tfae_2_to_3 : NormalizerCondition G → ∀ (H : Subgroup G), IsCoatom H → H.Normal
tfae_3_to_4 :
  (∀ (H : Subgroup G), IsCoatom H → H.Normal) → ∀ (p : ℕ), Fact (Nat.Prime p) → ∀ (P : Sylow p G), (↑P).Normal
tfae_4_to_5 :
  (∀ (p : ℕ), Fact (Nat.Prime p) → ∀ (P : Sylow p G), (↑P).Normal) →
    Nonempty (((p : { x // x ∈ (card G).primeFactors }) → (P : Sylow (↑p) G) → ↥↑P) ≃* G)
⊢ [Group.IsNilpotent G, NormalizerCondition G, ∀ (H : Subgroup G), IsCoatom H → H.Normal,
      ∀ (p : ℕ), Fact (Nat.Prime p) → ∀ (P : Sylow p G), (↑P).Normal,
      Nonempty (((p : { x // x ∈ (card G).primeFactors }) → (P : Sylow (↑p) G) → ↥↑P) ≃* G)].TFAE
state_after: case tfae_5_to_1
G : Type u_1
hG : Group G
inst✝ : Fintype G
tfae_1_to_2 : Group.IsNilpotent G → NormalizerCondition G
tfae_2_to_3 : NormalizerCondition G → ∀ (H : Subgroup G), IsCoatom H → H.Normal
tfae_3_to_4 :
  (∀ (H : Subgroup G), IsCoatom H → H.Normal) → ∀ (p : ℕ), Fact (Nat.Prime p) → ∀ (P : Sylow p G), (↑P).Normal
tfae_4_to_5 :
  (∀ (p : ℕ), Fact (Nat.Prime p) → ∀ (P : Sylow p G), (↑P).Normal) →
    Nonempty (((p : { x // x ∈ (card G).primeFactors }) → (P : Sylow (↑p) G) → ↥↑P) ≃* G)
⊢ Nonempty (((p : { x // x ∈ (card G).primeFactors }) → (P : Sylow (↑p) G) → ↥↑P) ≃* G) → Group.IsNilpotent G

G : Type u_1
hG : Group G
inst✝ : Fintype G
tfae_1_to_2 : Group.IsNilpotent G → NormalizerCondition G
tfae_2_to_3 : NormalizerCondition G → ∀ (H : Subgroup G), IsCoatom H → H.Normal
tfae_3_to_4 :
  (∀ (H : Subgroup G), IsCoatom H → H.Normal) → ∀ (p : ℕ), Fact (Nat.Prime p) → ∀ (P : Sylow p G), (↑P).Normal
tfae_4_to_5 :
  (∀ (p : ℕ), Fact (Nat.Prime p) → ∀ (P : Sylow p G), (↑P).Normal) →
    Nonempty (((p : { x // x ∈ (card G).primeFactors }) → (P : Sylow (↑p) G) → ↥↑P) ≃* G)
tfae_5_to_1 :
  Nonempty (((p : { x // x ∈ (card G).primeFactors }) → (P : Sylow (↑p) G) → ↥↑P) ≃* G) → Group.IsNilpotent G
⊢ [Group.IsNilpotent G, NormalizerCondition G, ∀ (H : Subgroup G), IsCoatom H → H.Normal,
      ∀ (p : ℕ), Fact (Nat.Prime p) → ∀ (P : Sylow p G), (↑P).Normal,
      Nonempty (((p : { x // x ∈ (card G).primeFactors }) → (P : Sylow (↑p) G) → ↥↑P) ≃* G)].TFAE

tactic: tfae_finish
state_before: G : Type u_1
hG : Group G
inst✝ : Fintype G
tfae_1_to_2 : Group.IsNilpotent G → NormalizerCondition G
tfae_2_to_3 : NormalizerCondition G → ∀ (H : Subgroup G), IsCoatom H → H.Normal
tfae_3_to_4 :
  (∀ (H : Subgroup G), IsCoatom H → H.Normal) → ∀ (p : ℕ), Fact (Nat.Prime p) → ∀ (P : Sylow p G), (↑P).Normal
tfae_4_to_5 :
  (∀ (p : ℕ), Fact (Nat.Prime p) → ∀ (P : Sylow p G), (↑P).Normal) →
    Nonempty (((p : { x // x ∈ (card G).primeFactors }) → (P : Sylow (↑p) G) → ↥↑P) ≃* G)
tfae_5_to_1 :
  Nonempty (((p : { x // x ∈ (card G).primeFactors }) → (P : Sylow (↑p) G) → ↥↑P) ≃* G) → Group.IsNilpotent G
⊢ [Group.IsNilpotent G, NormalizerCondition G, ∀ (H : Subgroup G), IsCoatom H → H.Normal,
      ∀ (p : ℕ), Fact (Nat.Prime p) → ∀ (P : Sylow p G), (↑P).Normal,
      Nonempty (((p : { x // x ∈ (card G).primeFactors }) → (P : Sylow (↑p) G) → ↥↑P) ≃* G)].TFAE
state_after: no goals

tactic: exact @normalizerCondition_of_isNilpotent _ _
state_before: case tfae_1_to_2
G : Type u_1
hG : Group G
inst✝ : Fintype G
⊢ Group.IsNilpotent G → NormalizerCondition G
state_after: no goals

tactic: exact fun h H => NormalizerCondition.normal_of_coatom H h
state_before: case tfae_2_to_3
G : Type u_1
hG : Group G
inst✝ : Fintype G
tfae_1_to_2 : Group.IsNilpotent G → NormalizerCondition G
⊢ NormalizerCondition G → ∀ (H : Subgroup G), IsCoatom H → H.Normal
state_after: no goals

tactic: intro h p _ P
state_before: case tfae_3_to_4
G : Type u_1
hG : Group G
inst✝ : Fintype G
tfae_1_to_2 : Group.IsNilpotent G → NormalizerCondition G
tfae_2_to_3 : NormalizerCondition G → ∀ (H : Subgroup G), IsCoatom H → H.Normal
⊢ (∀ (H : Subgroup G), IsCoatom H → H.Normal) → ∀ (p : ℕ), Fact (Nat.Prime p) → ∀ (P : Sylow p G), (↑P).Normal
state_after: case tfae_3_to_4
G : Type u_1
hG : Group G
inst✝ : Fintype G
tfae_1_to_2 : Group.IsNilpotent G → NormalizerCondition G
tfae_2_to_3 : NormalizerCondition G → ∀ (H : Subgroup G), IsCoatom H → H.Normal
h : ∀ (H : Subgroup G), IsCoatom H → H.Normal
p : ℕ
_hp✝ : Fact (Nat.Prime p)
P : Sylow p G
⊢ (↑P).Normal

tactic: exact Sylow.normal_of_all_max_subgroups_normal h _
state_before: case tfae_3_to_4
G : Type u_1
hG : Group G
inst✝ : Fintype G
tfae_1_to_2 : Group.IsNilpotent G → NormalizerCondition G
tfae_2_to_3 : NormalizerCondition G → ∀ (H : Subgroup G), IsCoatom H → H.Normal
h : ∀ (H : Subgroup G), IsCoatom H → H.Normal
p : ℕ
_hp✝ : Fact (Nat.Prime p)
P : Sylow p G
⊢ (↑P).Normal
state_after: no goals

tactic: exact fun h => Nonempty.intro (Sylow.directProductOfNormal fun {p hp hP} => h p hp hP)
state_before: case tfae_4_to_5
G : Type u_1
hG : Group G
inst✝ : Fintype G
tfae_1_to_2 : Group.IsNilpotent G → NormalizerCondition G
tfae_2_to_3 : NormalizerCondition G → ∀ (H : Subgroup G), IsCoatom H → H.Normal
tfae_3_to_4 :
  (∀ (H : Subgroup G), IsCoatom H → H.Normal) → ∀ (p : ℕ), Fact (Nat.Prime p) → ∀ (P : Sylow p G), (↑P).Normal
⊢ (∀ (p : ℕ), Fact (Nat.Prime p) → ∀ (P : Sylow p G), (↑P).Normal) →
    Nonempty (((p : { x // x ∈ (card G).primeFactors }) → (P : Sylow (↑p) G) → ↥↑P) ≃* G)
state_after: no goals

tactic: rintro ⟨e⟩
state_before: case tfae_5_to_1
G : Type u_1
hG : Group G
inst✝ : Fintype G
tfae_1_to_2 : Group.IsNilpotent G → NormalizerCondition G
tfae_2_to_3 : NormalizerCondition G → ∀ (H : Subgroup G), IsCoatom H → H.Normal
tfae_3_to_4 :
  (∀ (H : Subgroup G), IsCoatom H → H.Normal) → ∀ (p : ℕ), Fact (Nat.Prime p) → ∀ (P : Sylow p G), (↑P).Normal
tfae_4_to_5 :
  (∀ (p : ℕ), Fact (Nat.Prime p) → ∀ (P : Sylow p G), (↑P).Normal) →
    Nonempty (((p : { x // x ∈ (card G).primeFactors }) → (P : Sylow (↑p) G) → ↥↑P) ≃* G)
⊢ Nonempty (((p : { x // x ∈ (card G).primeFactors }) → (P : Sylow (↑p) G) → ↥↑P) ≃* G) → Group.IsNilpotent G
state_after: case tfae_5_to_1.intro
G : Type u_1
hG : Group G
inst✝ : Fintype G
tfae_1_to_2 : Group.IsNilpotent G → NormalizerCondition G
tfae_2_to_3 : NormalizerCondition G → ∀ (H : Subgroup G), IsCoatom H → H.Normal
tfae_3_to_4 :
  (∀ (H : Subgroup G), IsCoatom H → H.Normal) → ∀ (p : ℕ), Fact (Nat.Prime p) → ∀ (P : Sylow p G), (↑P).Normal
tfae_4_to_5 :
  (∀ (p : ℕ), Fact (Nat.Prime p) → ∀ (P : Sylow p G), (↑P).Normal) →
    Nonempty (((p : { x // x ∈ (card G).primeFactors }) → (P : Sylow (↑p) G) → ↥↑P) ≃* G)
e : ((p : { x // x ∈ (card G).primeFactors }) → (P : Sylow (↑p) G) → ↥↑P) ≃* G
⊢ Group.IsNilpotent G

tactic: exact isNilpotent_of_product_of_sylow_group e
state_before: case tfae_5_to_1.intro
G : Type u_1
hG : Group G
inst✝ : Fintype G
tfae_1_to_2 : Group.IsNilpotent G → NormalizerCondition G
tfae_2_to_3 : NormalizerCondition G → ∀ (H : Subgroup G), IsCoatom H → H.Normal
tfae_3_to_4 :
  (∀ (H : Subgroup G), IsCoatom H → H.Normal) → ∀ (p : ℕ), Fact (Nat.Prime p) → ∀ (P : Sylow p G), (↑P).Normal
tfae_4_to_5 :
  (∀ (p : ℕ), Fact (Nat.Prime p) → ∀ (P : Sylow p G), (↑P).Normal) →
    Nonempty (((p : { x // x ∈ (card G).primeFactors }) → (P : Sylow (↑p) G) → ↥↑P) ≃* G)
e : ((p : { x // x ∈ (card G).primeFactors }) → (P : Sylow (↑p) G) → ↥↑P) ≃* G
⊢ Group.IsNilpotent G
state_after: no goals