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

tactic: revert G
state_before: n : ℕ
G : Type u
inst✝² : Group G
inst✝¹ : Fintype G
hG : Fintype.card G = n
N : Subgroup G
inst✝ : N.Normal
hN : (Fintype.card ↥N).Coprime N.index
⊢ ∃ H, N.IsComplement' H
state_after: n : ℕ
⊢ ∀ {G : Type u} [inst : Group G] [inst_1 : Fintype G],
    Fintype.card G = n →
      ∀ {N : Subgroup G} [inst_2 : N.Normal], (Fintype.card ↥N).Coprime N.index → ∃ H, N.IsComplement' H

tactic: apply Nat.strongInductionOn n
state_before: n : ℕ
⊢ ∀ {G : Type u} [inst : Group G] [inst_1 : Fintype G],
    Fintype.card G = n →
      ∀ {N : Subgroup G} [inst_2 : N.Normal], (Fintype.card ↥N).Coprime N.index → ∃ H, N.IsComplement' H
state_after: n : ℕ
⊢ ∀ (n : ℕ),
    (∀ m < n,
        ∀ {G : Type u} [inst : Group G] [inst_1 : Fintype G],
          Fintype.card G = m →
            ∀ {N : Subgroup G} [inst_2 : N.Normal], (Fintype.card ↥N).Coprime N.index → ∃ H, N.IsComplement' H) →
      ∀ {G : Type u} [inst : Group G] [inst_1 : Fintype G],
        Fintype.card G = n →
          ∀ {N : Subgroup G} [inst_2 : N.Normal], (Fintype.card ↥N).Coprime N.index → ∃ H, N.IsComplement' H

tactic: rintro n ih G _ _ rfl N _ hN
state_before: n : ℕ
⊢ ∀ (n : ℕ),
    (∀ m < n,
        ∀ {G : Type u} [inst : Group G] [inst_1 : Fintype G],
          Fintype.card G = m →
            ∀ {N : Subgroup G} [inst_2 : N.Normal], (Fintype.card ↥N).Coprime N.index → ∃ H, N.IsComplement' H) →
      ∀ {G : Type u} [inst : Group G] [inst_1 : Fintype G],
        Fintype.card G = n →
          ∀ {N : Subgroup G} [inst_2 : N.Normal], (Fintype.card ↥N).Coprime N.index → ∃ H, N.IsComplement' H
state_after: n : ℕ
G : Type u
inst✝² : Group G
inst✝¹ : Fintype G
ih :
  ∀ m < Fintype.card G,
    ∀ {G : Type u} [inst : Group G] [inst_1 : Fintype G],
      Fintype.card G = m →
        ∀ {N : Subgroup G} [inst_2 : N.Normal], (Fintype.card ↥N).Coprime N.index → ∃ H, N.IsComplement' H
N : Subgroup G
inst✝ : N.Normal
hN : (Fintype.card ↥N).Coprime N.index
⊢ ∃ H, N.IsComplement' H

tactic: refine not_forall_not.mp fun h3 => ?_
state_before: n : ℕ
G : Type u
inst✝² : Group G
inst✝¹ : Fintype G
ih :
  ∀ m < Fintype.card G,
    ∀ {G : Type u} [inst : Group G] [inst_1 : Fintype G],
      Fintype.card G = m →
        ∀ {N : Subgroup G} [inst_2 : N.Normal], (Fintype.card ↥N).Coprime N.index → ∃ H, N.IsComplement' H
N : Subgroup G
inst✝ : N.Normal
hN : (Fintype.card ↥N).Coprime N.index
⊢ ∃ H, N.IsComplement' H
state_after: n : ℕ
G : Type u
inst✝² : Group G
inst✝¹ : Fintype G
ih :
  ∀ m < Fintype.card G,
    ∀ {G : Type u} [inst : Group G] [inst_1 : Fintype G],
      Fintype.card G = m →
        ∀ {N : Subgroup G} [inst_2 : N.Normal], (Fintype.card ↥N).Coprime N.index → ∃ H, N.IsComplement' H
N : Subgroup G
inst✝ : N.Normal
hN : (Fintype.card ↥N).Coprime N.index
h3 : ∀ (x : Subgroup G), ¬N.IsComplement' x
⊢ 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✝¹ : Fintype G
ih :
  ∀ m < Fintype.card G,
    ∀ {G : Type u} [inst : Group G] [inst_1 : Fintype G],
      Fintype.card G = m →
        ∀ {N : Subgroup G} [inst_2 : N.Normal], (Fintype.card ↥N).Coprime N.index → ∃ H, N.IsComplement' H
N : Subgroup G
inst✝ : N.Normal
hN : (Fintype.card ↥N).Coprime N.index
h3 : ∀ (x : Subgroup G), ¬N.IsComplement' x
⊢ False
state_after: n : ℕ
G : Type u
inst✝² : Group G
inst✝¹ : Fintype G
ih :
  ∀ m < Fintype.card G,
    ∀ {G : Type u} [inst : Group G] [inst_1 : Fintype G],
      Fintype.card G = m →
        ∀ {N : Subgroup G} [inst_2 : N.Normal], (Fintype.card ↥N).Coprime N.index → ∃ H, N.IsComplement' H
N : Subgroup G
inst✝ : N.Normal
hN : (Fintype.card ↥N).Coprime N.index
h3 : ∀ (x : Subgroup G), ¬N.IsComplement' x
this : N.IsCommutative
⊢ False

tactic: rw [← Nat.card_eq_fintype_card] at hN
state_before: n : ℕ
G : Type u
inst✝² : Group G
inst✝¹ : Fintype G
ih :
  ∀ m < Fintype.card G,
    ∀ {G : Type u} [inst : Group G] [inst_1 : Fintype G],
      Fintype.card G = m →
        ∀ {N : Subgroup G} [inst_2 : N.Normal], (Fintype.card ↥N).Coprime N.index → ∃ H, N.IsComplement' H
N : Subgroup G
inst✝ : N.Normal
hN : (Fintype.card ↥N).Coprime N.index
h3 : ∀ (x : Subgroup G), ¬N.IsComplement' x
this : N.IsCommutative
⊢ False
state_after: n : ℕ
G : Type u
inst✝² : Group G
inst✝¹ : Fintype G
ih :
  ∀ m < Fintype.card G,
    ∀ {G : Type u} [inst : Group G] [inst_1 : Fintype G],
      Fintype.card G = m →
        ∀ {N : Subgroup G} [inst_2 : N.Normal], (Fintype.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: exact not_exists_of_forall_not h3 (exists_right_complement'_of_coprime_aux hN)
state_before: n : ℕ
G : Type u
inst✝² : Group G
inst✝¹ : Fintype G
ih :
  ∀ m < Fintype.card G,
    ∀ {G : Type u} [inst : Group G] [inst_1 : Fintype G],
      Fintype.card G = m →
        ∀ {N : Subgroup G} [inst_2 : N.Normal], (Fintype.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: apply ih _ hG'
state_before: n : ℕ
G : Type u
inst✝² : Group G
inst✝¹ : Fintype G
ih :
  ∀ m < Fintype.card G,
    ∀ {G : Type u} [inst : Group G] [inst_1 : Fintype G],
      Fintype.card G = m →
        ∀ {N : Subgroup G} [inst_2 : N.Normal], (Fintype.card ↥N).Coprime N.index → ∃ H, N.IsComplement' H
N : Subgroup G
inst✝ : N.Normal
hN : (Fintype.card ↥N).Coprime N.index
h3 : ∀ (x : Subgroup G), ¬N.IsComplement' x
G' : Type u
x✝¹ : Group G'
x✝ : Fintype G'
hG' : Fintype.card G' < Fintype.card G
⊢ ∀ {N' : Subgroup G'} [inst : N'.Normal], (Fintype.card ↥N').Coprime N'.index → ∃ H', N'.IsComplement' H'
state_after: n : ℕ
G : Type u
inst✝² : Group G
inst✝¹ : Fintype G
ih :
  ∀ m < Fintype.card G,
    ∀ {G : Type u} [inst : Group G] [inst_1 : Fintype G],
      Fintype.card G = m →
        ∀ {N : Subgroup G} [inst_2 : N.Normal], (Fintype.card ↥N).Coprime N.index → ∃ H, N.IsComplement' H
N : Subgroup G
inst✝ : N.Normal
hN : (Fintype.card ↥N).Coprime N.index
h3 : ∀ (x : Subgroup G), ¬N.IsComplement' x
G' : Type u
x✝¹ : Group G'
x✝ : Fintype G'
hG' : Fintype.card G' < Fintype.card G
⊢ Fintype.card G' = Fintype.card G'

tactic: rfl
state_before: n : ℕ
G : Type u
inst✝² : Group G
inst✝¹ : Fintype G
ih :
  ∀ m < Fintype.card G,
    ∀ {G : Type u} [inst : Group G] [inst_1 : Fintype G],
      Fintype.card G = m →
        ∀ {N : Subgroup G} [inst_2 : N.Normal], (Fintype.card ↥N).Coprime N.index → ∃ H, N.IsComplement' H
N : Subgroup G
inst✝ : N.Normal
hN : (Fintype.card ↥N).Coprime N.index
h3 : ∀ (x : Subgroup G), ¬N.IsComplement' x
G' : Type u
x✝¹ : Group G'
x✝ : Fintype G'
hG' : Fintype.card G' < Fintype.card G
⊢ Fintype.card G' = Fintype.card G'
state_after: no goals