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

tactic: by_cases hN1 : Nat.card N = 0
state_before: n : ℕ
G : Type u
inst✝¹ : Group G
N : Subgroup G
inst✝ : Normal N
hN : Nat.coprime (Nat.card { x // x ∈ N }) (index N)
⊢ ∃ H, IsComplement' N H

tactic: by_cases hN2 : N.index = 0
state_before: case neg
n : ℕ
G : Type u
inst✝¹ : Group G
N : Subgroup G
inst✝ : Normal N
hN : Nat.coprime (Nat.card { x // x ∈ N }) (index N)
hN1 : ¬Nat.card { x // x ∈ N } = 0
⊢ ∃ H, IsComplement' N H

tactic: have hN3 : Nat.card G ≠ 0 := by
  rw [← N.card_mul_index]
  exact mul_ne_zero hN1 hN2
state_before: case neg
n : ℕ
G : Type u
inst✝¹ : Group G
N : Subgroup G
inst✝ : Normal N
hN : Nat.coprime (Nat.card { x // x ∈ N }) (index N)
hN1 : ¬Nat.card { x // x ∈ N } = 0
hN2 : ¬index N = 0
⊢ ∃ H, IsComplement' N H

tactic: haveI := (Cardinal.lt_aleph0_iff_fintype.mp
  (lt_of_not_ge (mt Cardinal.toNat_apply_of_aleph0_le hN3))).some
state_before: case neg
n : ℕ
G : Type u
inst✝¹ : Group G
N : Subgroup G
inst✝ : Normal N
hN : Nat.coprime (Nat.card { x // x ∈ N }) (index N)
hN1 : ¬Nat.card { x // x ∈ N } = 0
hN2 : ¬index N = 0
hN3 : Nat.card G ≠ 0
⊢ ∃ H, IsComplement' N H

tactic: apply exists_right_complement'_of_coprime_of_fintype
state_before: case neg
n : ℕ
G : Type u
inst✝¹ : Group G
N : Subgroup G
inst✝ : Normal N
hN : Nat.coprime (Nat.card { x // x ∈ N }) (index N)
hN1 : ¬Nat.card { x // x ∈ N } = 0
hN2 : ¬index N = 0
hN3 : Nat.card G ≠ 0
this : Fintype G
⊢ ∃ H, IsComplement' N H

tactic: rwa [←Nat.card_eq_fintype_card]
state_before: case neg.hN
n : ℕ
G : Type u
inst✝¹ : Group G
N : Subgroup G
inst✝ : Normal N
hN : Nat.coprime (Nat.card { x // x ∈ N }) (index N)
hN1 : ¬Nat.card { x // x ∈ N } = 0
hN2 : ¬index N = 0
hN3 : Nat.card G ≠ 0
this : Fintype G
⊢ Nat.coprime (Fintype.card { x // x ∈ N }) (index N)

tactic: rw [hN1, Nat.coprime_zero_left, index_eq_one] at hN
state_before: case pos
n : ℕ
G : Type u
inst✝¹ : Group G
N : Subgroup G
inst✝ : Normal N
hN : Nat.coprime (Nat.card { x // x ∈ N }) (index N)
hN1 : Nat.card { x // x ∈ N } = 0
⊢ ∃ H, IsComplement' N H

tactic: rw [hN]
state_before: case pos
n : ℕ
G : Type u
inst✝¹ : Group G
N : Subgroup G
inst✝ : Normal N
hN : N = ⊤
hN1 : Nat.card { x // x ∈ N } = 0
⊢ ∃ H, IsComplement' N H

tactic: exact ⟨⊥, isComplement'_top_bot⟩
state_before: case pos
n : ℕ
G : Type u
inst✝¹ : Group G
N : Subgroup G
inst✝ : Normal N
hN : N = ⊤
hN1 : Nat.card { x // x ∈ N } = 0
⊢ ∃ H, IsComplement' ⊤ H

tactic: rw [hN2, Nat.coprime_zero_right] at hN
state_before: case pos
n : ℕ
G : Type u
inst✝¹ : Group G
N : Subgroup G
inst✝ : Normal N
hN : Nat.coprime (Nat.card { x // x ∈ N }) (index N)
hN1 : ¬Nat.card { x // x ∈ N } = 0
hN2 : index N = 0
⊢ ∃ H, IsComplement' N H

tactic: haveI := (Cardinal.toNat_eq_one_iff_unique.mp hN).1
state_before: case pos
n : ℕ
G : Type u
inst✝¹ : Group G
N : Subgroup G
inst✝ : Normal N
hN : Nat.card { x // x ∈ N } = 1
hN1 : ¬Nat.card { x // x ∈ N } = 0
hN2 : index N = 0
⊢ ∃ H, IsComplement' N H

tactic: rw [N.eq_bot_of_subsingleton]
state_before: case pos
n : ℕ
G : Type u
inst✝¹ : Group G
N : Subgroup G
inst✝ : Normal N
hN : Nat.card { x // x ∈ N } = 1
hN1 : ¬Nat.card { x // x ∈ N } = 0
hN2 : index N = 0
this : Subsingleton { x // x ∈ N }
⊢ ∃ H, IsComplement' N H

tactic: exact ⟨⊤, isComplement'_bot_top⟩
state_before: case pos
n : ℕ
G : Type u
inst✝¹ : Group G
N : Subgroup G
inst✝ : Normal N
hN : Nat.card { x // x ∈ N } = 1
hN1 : ¬Nat.card { x // x ∈ N } = 0
hN2 : index N = 0
this : Subsingleton { x // x ∈ N }
⊢ ∃ H, IsComplement' ⊥ H

tactic: rw [← N.card_mul_index]
state_before: n : ℕ
G : Type u
inst✝¹ : Group G
N : Subgroup G
inst✝ : Normal N
hN : Nat.coprime (Nat.card { x // x ∈ N }) (index N)
hN1 : ¬Nat.card { x // x ∈ N } = 0
hN2 : ¬index N = 0
⊢ Nat.card G ≠ 0

tactic: exact mul_ne_zero hN1 hN2
state_before: n : ℕ
G : Type u
inst✝¹ : Group G
N : Subgroup G
inst✝ : Normal N
hN : Nat.coprime (Nat.card { x // x ∈ N }) (index N)
hN1 : ¬Nat.card { x // x ∈ N } = 0
hN2 : ¬index N = 0
⊢ Nat.card { x // x ∈ N } * index N ≠ 0