Theorem: AddSubgroup.eq_top_of_card_eq
File: Mathlib/Algebra/Group/Subgroup/Finite.lean

Proof steps:
state_before: G : Type u_1
inst✝² : Group G
A : Type u_2
inst✝¹ : AddGroup A
H K : Subgroup G
inst✝ : Finite ↥H
h : Nat.card ↥H = Nat.card G
⊢ H = ⊤
state_after: G : Type u_1
inst✝² : Group G
A : Type u_2
inst✝¹ : AddGroup A
H K : Subgroup G
inst✝ : Finite ↥H
h : Nat.card ↥H = Nat.card G
this : Nonempty ↥H
⊢ H = ⊤
tactic: have : Nonempty H := ⟨1, one_mem H⟩
state_before: G : Type u_1
inst✝² : Group G
A : Type u_2
inst✝¹ : AddGroup A
H K : Subgroup G
inst✝ : Finite ↥H
h : Nat.card ↥H = Nat.card G
this : Nonempty ↥H
⊢ H = ⊤
state_after: G : Type u_1
inst✝² : Group G
A : Type u_2
inst✝¹ : AddGroup A
H K : Subgroup G
inst✝ : Finite ↥H
h : Nat.card ↥H = Nat.card G
this : Nonempty ↥H
h' : Nat.card ↥H ≠ 0
⊢ H = ⊤
tactic: have h' : Nat.card H ≠ 0 := Nat.card_pos.ne'
state_before: G : Type u_1
inst✝² : Group G
A : Type u_2
inst✝¹ : AddGroup A
H K : Subgroup G
inst✝ : Finite ↥H
h : Nat.card ↥H = Nat.card G
this : Nonempty ↥H
h' : Nat.card ↥H ≠ 0
⊢ H = ⊤
state_after: G : Type u_1
inst✝² : Group G
A : Type u_2
inst✝¹ : AddGroup A
H K : Subgroup G
inst✝ : Finite ↥H
h : Nat.card ↥H = Nat.card G
this✝ : Nonempty ↥H
h' : Nat.card ↥H ≠ 0
this : Finite G
⊢ H = ⊤
tactic: have : Finite G := (Nat.finite_of_card_ne_zero (h ▸ h'))
state_before: G : Type u_1
inst✝² : Group G
A : Type u_2
inst✝¹ : AddGroup A
H K : Subgroup G
inst✝ : Finite ↥H
h : Nat.card ↥H = Nat.card G
this✝ : Nonempty ↥H
h' : Nat.card ↥H ≠ 0
this : Finite G
⊢ H = ⊤
state_after: G : Type u_1
inst✝² : Group G
A : Type u_2
inst✝¹ : AddGroup A
H K : Subgroup G
inst✝ : Finite ↥H
h : Nat.card ↥H = Nat.card G
this✝¹ : Nonempty ↥H
h' : Nat.card ↥H ≠ 0
this✝ : Finite G
this : Fintype G
⊢ H = ⊤
tactic: have : Fintype G := Fintype.ofFinite G
state_before: G : Type u_1
inst✝² : Group G
A : Type u_2
inst✝¹ : AddGroup A
H K : Subgroup G
inst✝ : Finite ↥H
h : Nat.card ↥H = Nat.card G
this✝¹ : Nonempty ↥H
h' : Nat.card ↥H ≠ 0
this✝ : Finite G
this : Fintype G
⊢ H = ⊤
state_after: G : Type u_1
inst✝² : Group G
A : Type u_2
inst✝¹ : AddGroup A
H K : Subgroup G
inst✝ : Finite ↥H
h : Nat.card ↥H = Nat.card G
this✝² : Nonempty ↥H
h' : Nat.card ↥H ≠ 0
this✝¹ : Finite G
this✝ : Fintype G
this : Fintype ↥H
⊢ H = ⊤
tactic: have : Fintype H := Fintype.ofFinite H
state_before: G : Type u_1
inst✝² : Group G
A : Type u_2
inst✝¹ : AddGroup A
H K : Subgroup G
inst✝ : Finite ↥H
h : Nat.card ↥H = Nat.card G
this✝² : Nonempty ↥H
h' : Nat.card ↥H ≠ 0
this✝¹ : Finite G
this✝ : Fintype G
this : Fintype ↥H
⊢ H = ⊤
state_after: G : Type u_1
inst✝² : Group G
A : Type u_2
inst✝¹ : AddGroup A
H K : Subgroup G
inst✝ : Finite ↥H
this✝² : Nonempty ↥H
h' : Nat.card ↥H ≠ 0
this✝¹ : Finite G
this✝ : Fintype G
this : Fintype ↥H
h : Fintype.card ↥H = Fintype.card G
⊢ H = ⊤
tactic: rw [Nat.card_eq_fintype_card, Nat.card_eq_fintype_card] at h
state_before: G : Type u_1
inst✝² : Group G
A : Type u_2
inst✝¹ : AddGroup A
H K : Subgroup G
inst✝ : Finite ↥H
this✝² : Nonempty ↥H
h' : Nat.card ↥H ≠ 0
this✝¹ : Finite G
this✝ : Fintype G
this : Fintype ↥H
h : Fintype.card ↥H = Fintype.card G
⊢ H = ⊤
state_after: G : Type u_1
inst✝² : Group G
A : Type u_2
inst✝¹ : AddGroup A
H K : Subgroup G
inst✝ : Finite ↥H
this✝² : Nonempty ↥H
h' : Nat.card ↥H ≠ 0
this✝¹ : Finite G
this✝ : Fintype G
this : Fintype ↥H
h : Fintype.card ↥H = Fintype.card G
⊢ Fintype.card ↑↑H = Fintype.card ↥H
tactic: rw [SetLike.ext'_iff, coe_top, ← Finset.coe_univ, ← (H : Set G).coe_toFinset, Finset.coe_inj, ←
    Finset.card_eq_iff_eq_univ, ← h, Set.toFinset_card]
state_before: G : Type u_1
inst✝² : Group G
A : Type u_2
inst✝¹ : AddGroup A
H K : Subgroup G
inst✝ : Finite ↥H
this✝² : Nonempty ↥H
h' : Nat.card ↥H ≠ 0
this✝¹ : Finite G
this✝ : Fintype G
this : Fintype ↥H
h : Fintype.card ↥H = Fintype.card G
⊢ Fintype.card ↑↑H = Fintype.card ↥H
state_after: no goals
tactic: congr