Theorem: Finset.mulStab_mul_mulStab (LeanCamCombi/Kneser/MulStab.lean)

State before:
ι : Type u_1
α : Type u_2
inst✝¹ : Group α
inst✝ : DecidableEq α
s✝ t : Finset α
a : α
s : Finset α
⊢ s.mulStab * s.mulStab = s.mulStab
Tactic:
obtain rfl | hs := s.eq_empty_or_nonempty
State after:
case inl
ι : Type u_1
α : Type u_2
inst✝¹ : Group α
inst✝ : DecidableEq α
s t : Finset α
a : α
⊢ ∅.mulStab * ∅.mulStab = ∅.mulStab

case inr
ι : Type u_1
α : Type u_2
inst✝¹ : Group α
inst✝ : DecidableEq α
s✝ t : Finset α
a : α
s : Finset α
hs : s.Nonempty
⊢ s.mulStab * s.mulStab = s.mulStab

State before:
case inl
ι : Type u_1
α : Type u_2
inst✝¹ : Group α
inst✝ : DecidableEq α
s t : Finset α
a : α
⊢ ∅.mulStab * ∅.mulStab = ∅.mulStab
Tactic:
simp
State after:
no goals

State before:
case inr
ι : Type u_1
α : Type u_2
inst✝¹ : Group α
inst✝ : DecidableEq α
s✝ t : Finset α
a : α
s : Finset α
hs : s.Nonempty
⊢ s.mulStab * s.mulStab = s.mulStab
Tactic:
simp_rw [← smul_eq_mul, ← biUnion_smul_finset, biUnion_congr rfl fun _ ↦ smul_mulStab,
  ← sup_eq_biUnion, sup_const hs.mulStab]
State after:
no goals