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

tactic: contrapose! h3
state_before: G : Type u
inst✝² : Group G
inst✝¹ : Fintype G
N : Subgroup G
inst✝ : N.Normal
h1 : (Fintype.card ↥N).Coprime N.index
h2 :
  ∀ (G' : Type u) [inst : Group G'] [inst_1 : Fintype G'],
    Fintype.card G' < Fintype.card G →
      ∀ {N' : Subgroup G'} [inst_2 : N'.Normal], (Fintype.card ↥N').Coprime N'.index → ∃ H', N'.IsComplement' H'
h3 : ∀ (H : Subgroup G), ¬N.IsComplement' H
K : Subgroup G
hK : K ⊔ N = ⊤
⊢ K = ⊤
state_after: G : Type u
inst✝² : Group G
inst✝¹ : Fintype G
N : Subgroup G
inst✝ : N.Normal
h1 : (Fintype.card ↥N).Coprime N.index
h2 :
  ∀ (G' : Type u) [inst : Group G'] [inst_1 : Fintype G'],
    Fintype.card G' < Fintype.card G →
      ∀ {N' : Subgroup G'} [inst_2 : N'.Normal], (Fintype.card ↥N').Coprime N'.index → ∃ H', N'.IsComplement' H'
K : Subgroup G
hK : K ⊔ N = ⊤
h3 : K ≠ ⊤
⊢ ∃ H, N.IsComplement' H

tactic: have h4 : (N.comap K.subtype).index = N.index := by
  rw [← N.relindex_top_right, ← hK]
  exact (relindex_sup_right K N).symm
state_before: G : Type u
inst✝² : Group G
inst✝¹ : Fintype G
N : Subgroup G
inst✝ : N.Normal
h1 : (Fintype.card ↥N).Coprime N.index
h2 :
  ∀ (G' : Type u) [inst : Group G'] [inst_1 : Fintype G'],
    Fintype.card G' < Fintype.card G →
      ∀ {N' : Subgroup G'} [inst_2 : N'.Normal], (Fintype.card ↥N').Coprime N'.index → ∃ H', N'.IsComplement' H'
K : Subgroup G
hK : K ⊔ N = ⊤
h3 : K ≠ ⊤
⊢ ∃ H, N.IsComplement' H
state_after: G : Type u
inst✝² : Group G
inst✝¹ : Fintype G
N : Subgroup G
inst✝ : N.Normal
h1 : (Fintype.card ↥N).Coprime N.index
h2 :
  ∀ (G' : Type u) [inst : Group G'] [inst_1 : Fintype G'],
    Fintype.card G' < Fintype.card G →
      ∀ {N' : Subgroup G'} [inst_2 : N'.Normal], (Fintype.card ↥N').Coprime N'.index → ∃ H', N'.IsComplement' H'
K : Subgroup G
hK : K ⊔ N = ⊤
h3 : K ≠ ⊤
h4 : (comap K.subtype N).index = N.index
⊢ ∃ H, N.IsComplement' H

tactic: have h5 : Fintype.card K < Fintype.card G := by
  rw [← K.index_mul_card]
  exact lt_mul_of_one_lt_left Fintype.card_pos (one_lt_index_of_ne_top h3)
state_before: G : Type u
inst✝² : Group G
inst✝¹ : Fintype G
N : Subgroup G
inst✝ : N.Normal
h1 : (Fintype.card ↥N).Coprime N.index
h2 :
  ∀ (G' : Type u) [inst : Group G'] [inst_1 : Fintype G'],
    Fintype.card G' < Fintype.card G →
      ∀ {N' : Subgroup G'} [inst_2 : N'.Normal], (Fintype.card ↥N').Coprime N'.index → ∃ H', N'.IsComplement' H'
K : Subgroup G
hK : K ⊔ N = ⊤
h3 : K ≠ ⊤
h4 : (comap K.subtype N).index = N.index
⊢ ∃ H, N.IsComplement' H
state_after: G : Type u
inst✝² : Group G
inst✝¹ : Fintype G
N : Subgroup G
inst✝ : N.Normal
h1 : (Fintype.card ↥N).Coprime N.index
h2 :
  ∀ (G' : Type u) [inst : Group G'] [inst_1 : Fintype G'],
    Fintype.card G' < Fintype.card G →
      ∀ {N' : Subgroup G'} [inst_2 : N'.Normal], (Fintype.card ↥N').Coprime N'.index → ∃ H', N'.IsComplement' H'
K : Subgroup G
hK : K ⊔ N = ⊤
h3 : K ≠ ⊤
h4 : (comap K.subtype N).index = N.index
h5 : Fintype.card ↥K < Fintype.card G
⊢ ∃ H, N.IsComplement' H

tactic: have h6 : Nat.Coprime (Fintype.card (N.comap K.subtype)) (N.comap K.subtype).index := by
  rw [h4]
  rw [← Nat.card_eq_fintype_card] at h1 ⊢
  exact h1.coprime_dvd_left (card_comap_dvd_of_injective N K.subtype Subtype.coe_injective)
state_before: G : Type u
inst✝² : Group G
inst✝¹ : Fintype G
N : Subgroup G
inst✝ : N.Normal
h1 : (Fintype.card ↥N).Coprime N.index
h2 :
  ∀ (G' : Type u) [inst : Group G'] [inst_1 : Fintype G'],
    Fintype.card G' < Fintype.card G →
      ∀ {N' : Subgroup G'} [inst_2 : N'.Normal], (Fintype.card ↥N').Coprime N'.index → ∃ H', N'.IsComplement' H'
K : Subgroup G
hK : K ⊔ N = ⊤
h3 : K ≠ ⊤
h4 : (comap K.subtype N).index = N.index
h5 : Fintype.card ↥K < Fintype.card G
⊢ ∃ H, N.IsComplement' H
state_after: G : Type u
inst✝² : Group G
inst✝¹ : Fintype G
N : Subgroup G
inst✝ : N.Normal
h1 : (Fintype.card ↥N).Coprime N.index
h2 :
  ∀ (G' : Type u) [inst : Group G'] [inst_1 : Fintype G'],
    Fintype.card G' < Fintype.card G →
      ∀ {N' : Subgroup G'} [inst_2 : N'.Normal], (Fintype.card ↥N').Coprime N'.index → ∃ H', N'.IsComplement' H'
K : Subgroup G
hK : K ⊔ N = ⊤
h3 : K ≠ ⊤
h4 : (comap K.subtype N).index = N.index
h5 : Fintype.card ↥K < Fintype.card G
h6 : (Fintype.card ↥(comap K.subtype N)).Coprime (comap K.subtype N).index
⊢ ∃ H, N.IsComplement' H

tactic: obtain ⟨H, hH⟩ := h2 K h5 h6
state_before: G : Type u
inst✝² : Group G
inst✝¹ : Fintype G
N : Subgroup G
inst✝ : N.Normal
h1 : (Fintype.card ↥N).Coprime N.index
h2 :
  ∀ (G' : Type u) [inst : Group G'] [inst_1 : Fintype G'],
    Fintype.card G' < Fintype.card G →
      ∀ {N' : Subgroup G'} [inst_2 : N'.Normal], (Fintype.card ↥N').Coprime N'.index → ∃ H', N'.IsComplement' H'
K : Subgroup G
hK : K ⊔ N = ⊤
h3 : K ≠ ⊤
h4 : (comap K.subtype N).index = N.index
h5 : Fintype.card ↥K < Fintype.card G
h6 : (Fintype.card ↥(comap K.subtype N)).Coprime (comap K.subtype N).index
⊢ ∃ H, N.IsComplement' H
state_after: case intro
G : Type u
inst✝² : Group G
inst✝¹ : Fintype G
N : Subgroup G
inst✝ : N.Normal
h1 : (Fintype.card ↥N).Coprime N.index
h2 :
  ∀ (G' : Type u) [inst : Group G'] [inst_1 : Fintype G'],
    Fintype.card G' < Fintype.card G →
      ∀ {N' : Subgroup G'} [inst_2 : N'.Normal], (Fintype.card ↥N').Coprime N'.index → ∃ H', N'.IsComplement' H'
K : Subgroup G
hK : K ⊔ N = ⊤
h3 : K ≠ ⊤
h4 : (comap K.subtype N).index = N.index
h5 : Fintype.card ↥K < Fintype.card G
h6 : (Fintype.card ↥(comap K.subtype N)).Coprime (comap K.subtype N).index
H : Subgroup ↥K
hH : (comap K.subtype N).IsComplement' H
⊢ ∃ H, N.IsComplement' H

tactic: replace hH : Fintype.card (H.map K.subtype) = N.index := by
  rw [← relindex_bot_left_eq_card, ← relindex_comap, MonoidHom.comap_bot, Subgroup.ker_subtype,
    relindex_bot_left, ← IsComplement'.index_eq_card (IsComplement'.symm hH), index_comap,
    subtype_range, ← relindex_sup_right, hK, relindex_top_right]
state_before: case intro
G : Type u
inst✝² : Group G
inst✝¹ : Fintype G
N : Subgroup G
inst✝ : N.Normal
h1 : (Fintype.card ↥N).Coprime N.index
h2 :
  ∀ (G' : Type u) [inst : Group G'] [inst_1 : Fintype G'],
    Fintype.card G' < Fintype.card G →
      ∀ {N' : Subgroup G'} [inst_2 : N'.Normal], (Fintype.card ↥N').Coprime N'.index → ∃ H', N'.IsComplement' H'
K : Subgroup G
hK : K ⊔ N = ⊤
h3 : K ≠ ⊤
h4 : (comap K.subtype N).index = N.index
h5 : Fintype.card ↥K < Fintype.card G
h6 : (Fintype.card ↥(comap K.subtype N)).Coprime (comap K.subtype N).index
H : Subgroup ↥K
hH : (comap K.subtype N).IsComplement' H
⊢ ∃ H, N.IsComplement' H
state_after: case intro
G : Type u
inst✝² : Group G
inst✝¹ : Fintype G
N : Subgroup G
inst✝ : N.Normal
h1 : (Fintype.card ↥N).Coprime N.index
h2 :
  ∀ (G' : Type u) [inst : Group G'] [inst_1 : Fintype G'],
    Fintype.card G' < Fintype.card G →
      ∀ {N' : Subgroup G'} [inst_2 : N'.Normal], (Fintype.card ↥N').Coprime N'.index → ∃ H', N'.IsComplement' H'
K : Subgroup G
hK : K ⊔ N = ⊤
h3 : K ≠ ⊤
h4 : (comap K.subtype N).index = N.index
h5 : Fintype.card ↥K < Fintype.card G
h6 : (Fintype.card ↥(comap K.subtype N)).Coprime (comap K.subtype N).index
H : Subgroup ↥K
hH : Fintype.card ↥(map K.subtype H) = N.index
⊢ ∃ H, N.IsComplement' H

tactic: have h7 : Fintype.card N * Fintype.card (H.map K.subtype) = Fintype.card G := by
  rw [hH, ← N.index_mul_card, mul_comm]
state_before: case intro
G : Type u
inst✝² : Group G
inst✝¹ : Fintype G
N : Subgroup G
inst✝ : N.Normal
h1 : (Fintype.card ↥N).Coprime N.index
h2 :
  ∀ (G' : Type u) [inst : Group G'] [inst_1 : Fintype G'],
    Fintype.card G' < Fintype.card G →
      ∀ {N' : Subgroup G'} [inst_2 : N'.Normal], (Fintype.card ↥N').Coprime N'.index → ∃ H', N'.IsComplement' H'
K : Subgroup G
hK : K ⊔ N = ⊤
h3 : K ≠ ⊤
h4 : (comap K.subtype N).index = N.index
h5 : Fintype.card ↥K < Fintype.card G
h6 : (Fintype.card ↥(comap K.subtype N)).Coprime (comap K.subtype N).index
H : Subgroup ↥K
hH : Fintype.card ↥(map K.subtype H) = N.index
⊢ ∃ H, N.IsComplement' H
state_after: case intro
G : Type u
inst✝² : Group G
inst✝¹ : Fintype G
N : Subgroup G
inst✝ : N.Normal
h1 : (Fintype.card ↥N).Coprime N.index
h2 :
  ∀ (G' : Type u) [inst : Group G'] [inst_1 : Fintype G'],
    Fintype.card G' < Fintype.card G →
      ∀ {N' : Subgroup G'} [inst_2 : N'.Normal], (Fintype.card ↥N').Coprime N'.index → ∃ H', N'.IsComplement' H'
K : Subgroup G
hK : K ⊔ N = ⊤
h3 : K ≠ ⊤
h4 : (comap K.subtype N).index = N.index
h5 : Fintype.card ↥K < Fintype.card G
h6 : (Fintype.card ↥(comap K.subtype N)).Coprime (comap K.subtype N).index
H : Subgroup ↥K
hH : Fintype.card ↥(map K.subtype H) = N.index
h7 : Fintype.card ↥N * Fintype.card ↥(map K.subtype H) = Fintype.card G
⊢ ∃ H, N.IsComplement' H

tactic: have h8 : (Fintype.card N).Coprime (Fintype.card (H.map K.subtype)) := by
  rwa [hH]
state_before: case intro
G : Type u
inst✝² : Group G
inst✝¹ : Fintype G
N : Subgroup G
inst✝ : N.Normal
h1 : (Fintype.card ↥N).Coprime N.index
h2 :
  ∀ (G' : Type u) [inst : Group G'] [inst_1 : Fintype G'],
    Fintype.card G' < Fintype.card G →
      ∀ {N' : Subgroup G'} [inst_2 : N'.Normal], (Fintype.card ↥N').Coprime N'.index → ∃ H', N'.IsComplement' H'
K : Subgroup G
hK : K ⊔ N = ⊤
h3 : K ≠ ⊤
h4 : (comap K.subtype N).index = N.index
h5 : Fintype.card ↥K < Fintype.card G
h6 : (Fintype.card ↥(comap K.subtype N)).Coprime (comap K.subtype N).index
H : Subgroup ↥K
hH : Fintype.card ↥(map K.subtype H) = N.index
h7 : Fintype.card ↥N * Fintype.card ↥(map K.subtype H) = Fintype.card G
⊢ ∃ H, N.IsComplement' H
state_after: case intro
G : Type u
inst✝² : Group G
inst✝¹ : Fintype G
N : Subgroup G
inst✝ : N.Normal
h1 : (Fintype.card ↥N).Coprime N.index
h2 :
  ∀ (G' : Type u) [inst : Group G'] [inst_1 : Fintype G'],
    Fintype.card G' < Fintype.card G →
      ∀ {N' : Subgroup G'} [inst_2 : N'.Normal], (Fintype.card ↥N').Coprime N'.index → ∃ H', N'.IsComplement' H'
K : Subgroup G
hK : K ⊔ N = ⊤
h3 : K ≠ ⊤
h4 : (comap K.subtype N).index = N.index
h5 : Fintype.card ↥K < Fintype.card G
h6 : (Fintype.card ↥(comap K.subtype N)).Coprime (comap K.subtype N).index
H : Subgroup ↥K
hH : Fintype.card ↥(map K.subtype H) = N.index
h7 : Fintype.card ↥N * Fintype.card ↥(map K.subtype H) = Fintype.card G
h8 : (Fintype.card ↥N).Coprime (Fintype.card ↥(map K.subtype H))
⊢ ∃ H, N.IsComplement' H

tactic: exact ⟨H.map K.subtype, isComplement'_of_coprime h7 h8⟩
state_before: case intro
G : Type u
inst✝² : Group G
inst✝¹ : Fintype G
N : Subgroup G
inst✝ : N.Normal
h1 : (Fintype.card ↥N).Coprime N.index
h2 :
  ∀ (G' : Type u) [inst : Group G'] [inst_1 : Fintype G'],
    Fintype.card G' < Fintype.card G →
      ∀ {N' : Subgroup G'} [inst_2 : N'.Normal], (Fintype.card ↥N').Coprime N'.index → ∃ H', N'.IsComplement' H'
K : Subgroup G
hK : K ⊔ N = ⊤
h3 : K ≠ ⊤
h4 : (comap K.subtype N).index = N.index
h5 : Fintype.card ↥K < Fintype.card G
h6 : (Fintype.card ↥(comap K.subtype N)).Coprime (comap K.subtype N).index
H : Subgroup ↥K
hH : Fintype.card ↥(map K.subtype H) = N.index
h7 : Fintype.card ↥N * Fintype.card ↥(map K.subtype H) = Fintype.card G
h8 : (Fintype.card ↥N).Coprime (Fintype.card ↥(map K.subtype H))
⊢ ∃ H, N.IsComplement' H
state_after: no goals

tactic: rw [← N.relindex_top_right, ← hK]
state_before: G : Type u
inst✝² : Group G
inst✝¹ : Fintype G
N : Subgroup G
inst✝ : N.Normal
h1 : (Fintype.card ↥N).Coprime N.index
h2 :
  ∀ (G' : Type u) [inst : Group G'] [inst_1 : Fintype G'],
    Fintype.card G' < Fintype.card G →
      ∀ {N' : Subgroup G'} [inst_2 : N'.Normal], (Fintype.card ↥N').Coprime N'.index → ∃ H', N'.IsComplement' H'
K : Subgroup G
hK : K ⊔ N = ⊤
h3 : K ≠ ⊤
⊢ (comap K.subtype N).index = N.index
state_after: G : Type u
inst✝² : Group G
inst✝¹ : Fintype G
N : Subgroup G
inst✝ : N.Normal
h1 : (Fintype.card ↥N).Coprime N.index
h2 :
  ∀ (G' : Type u) [inst : Group G'] [inst_1 : Fintype G'],
    Fintype.card G' < Fintype.card G →
      ∀ {N' : Subgroup G'} [inst_2 : N'.Normal], (Fintype.card ↥N').Coprime N'.index → ∃ H', N'.IsComplement' H'
K : Subgroup G
hK : K ⊔ N = ⊤
h3 : K ≠ ⊤
⊢ (comap K.subtype N).index = N.relindex (K ⊔ N)

tactic: exact (relindex_sup_right K N).symm
state_before: G : Type u
inst✝² : Group G
inst✝¹ : Fintype G
N : Subgroup G
inst✝ : N.Normal
h1 : (Fintype.card ↥N).Coprime N.index
h2 :
  ∀ (G' : Type u) [inst : Group G'] [inst_1 : Fintype G'],
    Fintype.card G' < Fintype.card G →
      ∀ {N' : Subgroup G'} [inst_2 : N'.Normal], (Fintype.card ↥N').Coprime N'.index → ∃ H', N'.IsComplement' H'
K : Subgroup G
hK : K ⊔ N = ⊤
h3 : K ≠ ⊤
⊢ (comap K.subtype N).index = N.relindex (K ⊔ N)
state_after: no goals

tactic: rw [← K.index_mul_card]
state_before: G : Type u
inst✝² : Group G
inst✝¹ : Fintype G
N : Subgroup G
inst✝ : N.Normal
h1 : (Fintype.card ↥N).Coprime N.index
h2 :
  ∀ (G' : Type u) [inst : Group G'] [inst_1 : Fintype G'],
    Fintype.card G' < Fintype.card G →
      ∀ {N' : Subgroup G'} [inst_2 : N'.Normal], (Fintype.card ↥N').Coprime N'.index → ∃ H', N'.IsComplement' H'
K : Subgroup G
hK : K ⊔ N = ⊤
h3 : K ≠ ⊤
h4 : (comap K.subtype N).index = N.index
⊢ Fintype.card ↥K < Fintype.card G
state_after: G : Type u
inst✝² : Group G
inst✝¹ : Fintype G
N : Subgroup G
inst✝ : N.Normal
h1 : (Fintype.card ↥N).Coprime N.index
h2 :
  ∀ (G' : Type u) [inst : Group G'] [inst_1 : Fintype G'],
    Fintype.card G' < Fintype.card G →
      ∀ {N' : Subgroup G'} [inst_2 : N'.Normal], (Fintype.card ↥N').Coprime N'.index → ∃ H', N'.IsComplement' H'
K : Subgroup G
hK : K ⊔ N = ⊤
h3 : K ≠ ⊤
h4 : (comap K.subtype N).index = N.index
⊢ Fintype.card ↥K < K.index * Fintype.card ↥K

tactic: exact lt_mul_of_one_lt_left Fintype.card_pos (one_lt_index_of_ne_top h3)
state_before: G : Type u
inst✝² : Group G
inst✝¹ : Fintype G
N : Subgroup G
inst✝ : N.Normal
h1 : (Fintype.card ↥N).Coprime N.index
h2 :
  ∀ (G' : Type u) [inst : Group G'] [inst_1 : Fintype G'],
    Fintype.card G' < Fintype.card G →
      ∀ {N' : Subgroup G'} [inst_2 : N'.Normal], (Fintype.card ↥N').Coprime N'.index → ∃ H', N'.IsComplement' H'
K : Subgroup G
hK : K ⊔ N = ⊤
h3 : K ≠ ⊤
h4 : (comap K.subtype N).index = N.index
⊢ Fintype.card ↥K < K.index * Fintype.card ↥K
state_after: no goals

tactic: rw [h4]
state_before: G : Type u
inst✝² : Group G
inst✝¹ : Fintype G
N : Subgroup G
inst✝ : N.Normal
h1 : (Fintype.card ↥N).Coprime N.index
h2 :
  ∀ (G' : Type u) [inst : Group G'] [inst_1 : Fintype G'],
    Fintype.card G' < Fintype.card G →
      ∀ {N' : Subgroup G'} [inst_2 : N'.Normal], (Fintype.card ↥N').Coprime N'.index → ∃ H', N'.IsComplement' H'
K : Subgroup G
hK : K ⊔ N = ⊤
h3 : K ≠ ⊤
h4 : (comap K.subtype N).index = N.index
h5 : Fintype.card ↥K < Fintype.card G
⊢ (Fintype.card ↥(comap K.subtype N)).Coprime (comap K.subtype N).index
state_after: G : Type u
inst✝² : Group G
inst✝¹ : Fintype G
N : Subgroup G
inst✝ : N.Normal
h1 : (Fintype.card ↥N).Coprime N.index
h2 :
  ∀ (G' : Type u) [inst : Group G'] [inst_1 : Fintype G'],
    Fintype.card G' < Fintype.card G →
      ∀ {N' : Subgroup G'} [inst_2 : N'.Normal], (Fintype.card ↥N').Coprime N'.index → ∃ H', N'.IsComplement' H'
K : Subgroup G
hK : K ⊔ N = ⊤
h3 : K ≠ ⊤
h4 : (comap K.subtype N).index = N.index
h5 : Fintype.card ↥K < Fintype.card G
⊢ (Fintype.card ↥(comap K.subtype N)).Coprime N.index

tactic: rw [← Nat.card_eq_fintype_card] at h1 ⊢
state_before: G : Type u
inst✝² : Group G
inst✝¹ : Fintype G
N : Subgroup G
inst✝ : N.Normal
h1 : (Fintype.card ↥N).Coprime N.index
h2 :
  ∀ (G' : Type u) [inst : Group G'] [inst_1 : Fintype G'],
    Fintype.card G' < Fintype.card G →
      ∀ {N' : Subgroup G'} [inst_2 : N'.Normal], (Fintype.card ↥N').Coprime N'.index → ∃ H', N'.IsComplement' H'
K : Subgroup G
hK : K ⊔ N = ⊤
h3 : K ≠ ⊤
h4 : (comap K.subtype N).index = N.index
h5 : Fintype.card ↥K < Fintype.card G
⊢ (Fintype.card ↥(comap K.subtype N)).Coprime N.index
state_after: G : Type u
inst✝² : Group G
inst✝¹ : Fintype G
N : Subgroup G
inst✝ : N.Normal
h1 : (Nat.card ↥N).Coprime N.index
h2 :
  ∀ (G' : Type u) [inst : Group G'] [inst_1 : Fintype G'],
    Fintype.card G' < Fintype.card G →
      ∀ {N' : Subgroup G'} [inst_2 : N'.Normal], (Fintype.card ↥N').Coprime N'.index → ∃ H', N'.IsComplement' H'
K : Subgroup G
hK : K ⊔ N = ⊤
h3 : K ≠ ⊤
h4 : (comap K.subtype N).index = N.index
h5 : Fintype.card ↥K < Fintype.card G
⊢ (Nat.card ↥(comap K.subtype N)).Coprime N.index

tactic: exact h1.coprime_dvd_left (card_comap_dvd_of_injective N K.subtype Subtype.coe_injective)
state_before: G : Type u
inst✝² : Group G
inst✝¹ : Fintype G
N : Subgroup G
inst✝ : N.Normal
h1 : (Nat.card ↥N).Coprime N.index
h2 :
  ∀ (G' : Type u) [inst : Group G'] [inst_1 : Fintype G'],
    Fintype.card G' < Fintype.card G →
      ∀ {N' : Subgroup G'} [inst_2 : N'.Normal], (Fintype.card ↥N').Coprime N'.index → ∃ H', N'.IsComplement' H'
K : Subgroup G
hK : K ⊔ N = ⊤
h3 : K ≠ ⊤
h4 : (comap K.subtype N).index = N.index
h5 : Fintype.card ↥K < Fintype.card G
⊢ (Nat.card ↥(comap K.subtype N)).Coprime N.index
state_after: no goals

tactic: rw [← relindex_bot_left_eq_card, ← relindex_comap, MonoidHom.comap_bot, Subgroup.ker_subtype,
  relindex_bot_left, ← IsComplement'.index_eq_card (IsComplement'.symm hH), index_comap,
  subtype_range, ← relindex_sup_right, hK, relindex_top_right]
state_before: G : Type u
inst✝² : Group G
inst✝¹ : Fintype G
N : Subgroup G
inst✝ : N.Normal
h1 : (Fintype.card ↥N).Coprime N.index
h2 :
  ∀ (G' : Type u) [inst : Group G'] [inst_1 : Fintype G'],
    Fintype.card G' < Fintype.card G →
      ∀ {N' : Subgroup G'} [inst_2 : N'.Normal], (Fintype.card ↥N').Coprime N'.index → ∃ H', N'.IsComplement' H'
K : Subgroup G
hK : K ⊔ N = ⊤
h3 : K ≠ ⊤
h4 : (comap K.subtype N).index = N.index
h5 : Fintype.card ↥K < Fintype.card G
h6 : (Fintype.card ↥(comap K.subtype N)).Coprime (comap K.subtype N).index
H : Subgroup ↥K
hH : (comap K.subtype N).IsComplement' H
⊢ Fintype.card ↥(map K.subtype H) = N.index
state_after: no goals

tactic: rw [hH, ← N.index_mul_card, mul_comm]
state_before: G : Type u
inst✝² : Group G
inst✝¹ : Fintype G
N : Subgroup G
inst✝ : N.Normal
h1 : (Fintype.card ↥N).Coprime N.index
h2 :
  ∀ (G' : Type u) [inst : Group G'] [inst_1 : Fintype G'],
    Fintype.card G' < Fintype.card G →
      ∀ {N' : Subgroup G'} [inst_2 : N'.Normal], (Fintype.card ↥N').Coprime N'.index → ∃ H', N'.IsComplement' H'
K : Subgroup G
hK : K ⊔ N = ⊤
h3 : K ≠ ⊤
h4 : (comap K.subtype N).index = N.index
h5 : Fintype.card ↥K < Fintype.card G
h6 : (Fintype.card ↥(comap K.subtype N)).Coprime (comap K.subtype N).index
H : Subgroup ↥K
hH : Fintype.card ↥(map K.subtype H) = N.index
⊢ Fintype.card ↥N * Fintype.card ↥(map K.subtype H) = Fintype.card G
state_after: no goals

tactic: rwa [hH]
state_before: G : Type u
inst✝² : Group G
inst✝¹ : Fintype G
N : Subgroup G
inst✝ : N.Normal
h1 : (Fintype.card ↥N).Coprime N.index
h2 :
  ∀ (G' : Type u) [inst : Group G'] [inst_1 : Fintype G'],
    Fintype.card G' < Fintype.card G →
      ∀ {N' : Subgroup G'} [inst_2 : N'.Normal], (Fintype.card ↥N').Coprime N'.index → ∃ H', N'.IsComplement' H'
K : Subgroup G
hK : K ⊔ N = ⊤
h3 : K ≠ ⊤
h4 : (comap K.subtype N).index = N.index
h5 : Fintype.card ↥K < Fintype.card G
h6 : (Fintype.card ↥(comap K.subtype N)).Coprime (comap K.subtype N).index
H : Subgroup ↥K
hH : Fintype.card ↥(map K.subtype H) = N.index
h7 : Fintype.card ↥N * Fintype.card ↥(map K.subtype H) = Fintype.card G
⊢ (Fintype.card ↥N).Coprime (Fintype.card ↥(map K.subtype H))
state_after: no goals