Theorem: Subgroup.SchurZassenhausInduction.step6
File: Mathlib/GroupTheory/SchurZassenhaus.lean

tactic: haveI : Fact (Fintype.card N).minFac.Prime := ⟨step4 h1 h3⟩
state_before: G : Type u
inst✝² : Group G
inst✝¹ : Fintype G
N : Subgroup G
inst✝ : Normal N
h1 : Nat.coprime (Fintype.card { x // x ∈ N }) (index N)
h2 :
  ∀ (G' : Type u) [inst : Group G'] [inst_1 : Fintype G'],
    Fintype.card G' < Fintype.card G →
      ∀ {N' : Subgroup G'} [inst_2 : Normal N'],
        Nat.coprime (Fintype.card { x // x ∈ N' }) (index N') → ∃ H', IsComplement' N' H'
h3 : ∀ (H : Subgroup G), ¬IsComplement' N H
⊢ IsPGroup (Nat.minFac (Fintype.card { x // x ∈ N })) { x // x ∈ N }

tactic: refine' Sylow.nonempty.elim fun P => P.2.of_surjective P.1.subtype _
state_before: G : Type u
inst✝² : Group G
inst✝¹ : Fintype G
N : Subgroup G
inst✝ : Normal N
h1 : Nat.coprime (Fintype.card { x // x ∈ N }) (index N)
h2 :
  ∀ (G' : Type u) [inst : Group G'] [inst_1 : Fintype G'],
    Fintype.card G' < Fintype.card G →
      ∀ {N' : Subgroup G'} [inst_2 : Normal N'],
        Nat.coprime (Fintype.card { x // x ∈ N' }) (index N') → ∃ H', IsComplement' N' H'
h3 : ∀ (H : Subgroup G), ¬IsComplement' N H
this : Fact (Nat.Prime (Nat.minFac (Fintype.card { x // x ∈ N })))
⊢ IsPGroup (Nat.minFac (Fintype.card { x // x ∈ N })) { x // x ∈ N }

tactic: rw [← MonoidHom.range_top_iff_surjective, subtype_range]
state_before: G : Type u
inst✝² : Group G
inst✝¹ : Fintype G
N : Subgroup G
inst✝ : Normal N
h1 : Nat.coprime (Fintype.card { x // x ∈ N }) (index N)
h2 :
  ∀ (G' : Type u) [inst : Group G'] [inst_1 : Fintype G'],
    Fintype.card G' < Fintype.card G →
      ∀ {N' : Subgroup G'} [inst_2 : Normal N'],
        Nat.coprime (Fintype.card { x // x ∈ N' }) (index N') → ∃ H', IsComplement' N' H'
h3 : ∀ (H : Subgroup G), ¬IsComplement' N H
this : Fact (Nat.Prime (Nat.minFac (Fintype.card { x // x ∈ N })))
P : Sylow (Nat.minFac (Fintype.card { x // x ∈ N })) { x // x ∈ N }
⊢ Function.Surjective ↑(Subgroup.subtype ↑P)

tactic: haveI : (P.1.map N.subtype).Normal :=
  normalizer_eq_top.mp (step1 h1 h2 h3 (P.1.map N.subtype).normalizer P.normalizer_sup_eq_top)
state_before: G : Type u
inst✝² : Group G
inst✝¹ : Fintype G
N : Subgroup G
inst✝ : Normal N
h1 : Nat.coprime (Fintype.card { x // x ∈ N }) (index N)
h2 :
  ∀ (G' : Type u) [inst : Group G'] [inst_1 : Fintype G'],
    Fintype.card G' < Fintype.card G →
      ∀ {N' : Subgroup G'} [inst_2 : Normal N'],
        Nat.coprime (Fintype.card { x // x ∈ N' }) (index N') → ∃ H', IsComplement' N' H'
h3 : ∀ (H : Subgroup G), ¬IsComplement' N H
this : Fact (Nat.Prime (Nat.minFac (Fintype.card { x // x ∈ N })))
P : Sylow (Nat.minFac (Fintype.card { x // x ∈ N })) { x // x ∈ N }
⊢ ↑P = ⊤

tactic: exact (step3 h1 h2 h3 P.1).resolve_left (step5 h1 h3)
state_before: G : Type u
inst✝² : Group G
inst✝¹ : Fintype G
N : Subgroup G
inst✝ : Normal N
h1 : Nat.coprime (Fintype.card { x // x ∈ N }) (index N)
h2 :
  ∀ (G' : Type u) [inst : Group G'] [inst_1 : Fintype G'],
    Fintype.card G' < Fintype.card G →
      ∀ {N' : Subgroup G'} [inst_2 : Normal N'],
        Nat.coprime (Fintype.card { x // x ∈ N' }) (index N') → ∃ H', IsComplement' N' H'
h3 : ∀ (H : Subgroup G), ¬IsComplement' N H
this✝ : Fact (Nat.Prime (Nat.minFac (Fintype.card { x // x ∈ N })))
P : Sylow (Nat.minFac (Fintype.card { x // x ∈ N })) { x // x ∈ N }
this : Normal (map (Subgroup.subtype N) ↑P)
⊢ ↑P = ⊤