Theorem: _private.Mathlib.GroupTheory.SchurZassenhaus.0.Subgroup.exists_right_complement'_of_coprime_aux'
File: Mathlib/GroupTheory/SchurZassenhaus.lean

Proof steps:
state_before: n : ℕ
G : Type u
inst✝² : Group G
inst✝¹ : Finite G
hG : Nat.card G = n
N : Subgroup G
inst✝ : N.Normal
hN : (Nat.card ↥N).Coprime N.index
⊢ ∃ H, N.IsComplement' H
state_after: n : ℕ
⊢ ∀ {G : Type u} [inst : Group G] [inst_1 : Finite G],
    Nat.card G = n → ∀ {N : Subgroup G} [inst_2 : N.Normal], (Nat.card ↥N).Coprime N.index → ∃ H, N.IsComplement' H
tactic: revert G
state_before: n : ℕ
⊢ ∀ {G : Type u} [inst : Group G] [inst_1 : Finite G],
    Nat.card G = n → ∀ {N : Subgroup G} [inst_2 : N.Normal], (Nat.card ↥N).Coprime N.index → ∃ H, N.IsComplement' H
state_after: n : ℕ
⊢ ∀ (n : ℕ),
    (∀ m < n,
        ∀ {G : Type u} [inst : Group G] [inst_1 : Finite G],
          Nat.card G = m →
            ∀ {N : Subgroup G} [inst_2 : N.Normal], (Nat.card ↥N).Coprime N.index → ∃ H, N.IsComplement' H) →
      ∀ {G : Type u} [inst : Group G] [inst_1 : Finite G],
        Nat.card G = n → ∀ {N : Subgroup G} [inst_2 : N.Normal], (Nat.card ↥N).Coprime N.index → ∃ H, N.IsComplement' H
tactic: apply Nat.strongInductionOn n
state_before: n : ℕ
⊢ ∀ (n : ℕ),
    (∀ m < n,
        ∀ {G : Type u} [inst : Group G] [inst_1 : Finite G],
          Nat.card G = m →
            ∀ {N : Subgroup G} [inst_2 : N.Normal], (Nat.card ↥N).Coprime N.index → ∃ H, N.IsComplement' H) →
      ∀ {G : Type u} [inst : Group G] [inst_1 : Finite G],
        Nat.card G = n → ∀ {N : Subgroup G} [inst_2 : N.Normal], (Nat.card ↥N).Coprime N.index → ∃ H, N.IsComplement' H
state_after: n : ℕ
G : Type u
inst✝² : Group G
inst✝¹ : Finite G
ih :
  ∀ m < Nat.card G,
    ∀ {G : Type u} [inst : Group G] [inst_1 : Finite G],
      Nat.card G = m → ∀ {N : Subgroup G} [inst_2 : N.Normal], (Nat.card ↥N).Coprime N.index → ∃ H, N.IsComplement' H
N : Subgroup G
inst✝ : N.Normal
hN : (Nat.card ↥N).Coprime N.index
⊢ ∃ H, N.IsComplement' H
tactic: rintro n ih G _ _ rfl N _ hN
state_before: n : ℕ
G : Type u
inst✝² : Group G
inst✝¹ : Finite G
ih :
  ∀ m < Nat.card G,
    ∀ {G : Type u} [inst : Group G] [inst_1 : Finite G],
      Nat.card G = m → ∀ {N : Subgroup G} [inst_2 : N.Normal], (Nat.card ↥N).Coprime N.index → ∃ H, N.IsComplement' H
N : Subgroup G
inst✝ : N.Normal
hN : (Nat.card ↥N).Coprime N.index
⊢ ∃ H, N.IsComplement' H
state_after: n : ℕ
G : Type u
inst✝² : Group G
inst✝¹ : Finite G
ih :
  ∀ m < Nat.card G,
    ∀ {G : Type u} [inst : Group G] [inst_1 : Finite G],
      Nat.card G = m → ∀ {N : Subgroup G} [inst_2 : N.Normal], (Nat.card ↥N).Coprime N.index → ∃ H, N.IsComplement' H
N : Subgroup G
inst✝ : N.Normal
hN : (Nat.card ↥N).Coprime N.index
h3 : ∀ (x : Subgroup G), ¬N.IsComplement' x
⊢ False
tactic: refine not_forall_not.mp fun h3 => ?_
state_before: n : ℕ
G : Type u
inst✝² : Group G
inst✝¹ : Finite G
ih :
  ∀ m < Nat.card G,
    ∀ {G : Type u} [inst : Group G] [inst_1 : Finite G],
      Nat.card G = m → ∀ {N : Subgroup G} [inst_2 : N.Normal], (Nat.card ↥N).Coprime N.index → ∃ H, N.IsComplement' H
N : Subgroup G
inst✝ : N.Normal
hN : (Nat.card ↥N).Coprime N.index
h3 : ∀ (x : Subgroup G), ¬N.IsComplement' x
⊢ False
state_after: n : ℕ
G : Type u
inst✝² : Group G
inst✝¹ : Finite G
ih :
  ∀ m < Nat.card G,
    ∀ {G : Type u} [inst : Group G] [inst_1 : Finite G],
      Nat.card G = m → ∀ {N : Subgroup G} [inst_2 : N.Normal], (Nat.card ↥N).Coprime N.index → ∃ H, N.IsComplement' H
N : Subgroup G
inst✝ : N.Normal
hN : (Nat.card ↥N).Coprime N.index
h3 : ∀ (x : Subgroup G), ¬N.IsComplement' x
this : N.IsCommutative
⊢ False
tactic: haveI := SchurZassenhausInduction.step7 hN (fun G' _ _ hG' => by apply ih _ hG'; rfl) h3
state_before: n : ℕ
G : Type u
inst✝² : Group G
inst✝¹ : Finite G
ih :
  ∀ m < Nat.card G,
    ∀ {G : Type u} [inst : Group G] [inst_1 : Finite G],
      Nat.card G = m → ∀ {N : Subgroup G} [inst_2 : N.Normal], (Nat.card ↥N).Coprime N.index → ∃ H, N.IsComplement' H
N : Subgroup G
inst✝ : N.Normal
hN : (Nat.card ↥N).Coprime N.index
h3 : ∀ (x : Subgroup G), ¬N.IsComplement' x
this : N.IsCommutative
⊢ False
state_after: no goals
tactic: exact not_exists_of_forall_not h3 (exists_right_complement'_of_coprime_aux hN)