Theorem: Multiset.support_sum_eq
File: Mathlib/Data/Finsupp/BigOperators.lean

tactic: induction' s using Quot.inductionOn with a
state_before: ι : Type u_2
M : Type u_1
inst✝¹ : DecidableEq ι
inst✝ : AddCommMonoid M
s : Multiset (ι →₀ M)
hs : Pairwise (_root_.Disjoint on Finsupp.support) s
⊢ (sum s).support = sup (map Finsupp.support s)

tactic: obtain ⟨l, hl, hd⟩ := hs
state_before: case h
ι : Type u_2
M : Type u_1
inst✝¹ : DecidableEq ι
inst✝ : AddCommMonoid M
s : Multiset (ι →₀ M)
hs✝ : Pairwise (_root_.Disjoint on Finsupp.support) s
a : List (ι →₀ M)
hs : Pairwise (_root_.Disjoint on Finsupp.support) (Quot.mk Setoid.r a)
⊢ (sum (Quot.mk Setoid.r a)).support = sup (map Finsupp.support (Quot.mk Setoid.r a))

tactic: suffices : a.Pairwise (_root_.Disjoint on Finsupp.support)
state_before: case h.intro.intro
ι : Type u_2
M : Type u_1
inst✝¹ : DecidableEq ι
inst✝ : AddCommMonoid M
s : Multiset (ι →₀ M)
hs : Pairwise (_root_.Disjoint on Finsupp.support) s
a l : List (ι →₀ M)
hl : Quot.mk Setoid.r a = ↑l
hd : List.Pairwise (_root_.Disjoint on Finsupp.support) l
⊢ (sum (Quot.mk Setoid.r a)).support = sup (map Finsupp.support (Quot.mk Setoid.r a))

tactic: convert List.support_sum_eq a this
state_before: case h.intro.intro
ι : Type u_2
M : Type u_1
inst✝¹ : DecidableEq ι
inst✝ : AddCommMonoid M
s : Multiset (ι →₀ M)
hs : Pairwise (_root_.Disjoint on Finsupp.support) s
a l : List (ι →₀ M)
hl : Quot.mk Setoid.r a = ↑l
hd : List.Pairwise (_root_.Disjoint on Finsupp.support) l
this : List.Pairwise (_root_.Disjoint on Finsupp.support) a
⊢ (sum (Quot.mk Setoid.r a)).support = sup (map Finsupp.support (Quot.mk Setoid.r a))

tactic: simp only [Multiset.quot_mk_to_coe'', Multiset.coe_sum]
state_before: case h.e'_2.h.e'_4
ι : Type u_2
M : Type u_1
inst✝¹ : DecidableEq ι
inst✝ : AddCommMonoid M
s : Multiset (ι →₀ M)
hs : Pairwise (_root_.Disjoint on Finsupp.support) s
a l : List (ι →₀ M)
hl : Quot.mk Setoid.r a = ↑l
hd : List.Pairwise (_root_.Disjoint on Finsupp.support) l
this : List.Pairwise (_root_.Disjoint on Finsupp.support) a
⊢ sum (Quot.mk Setoid.r a) = List.sum a

tactic: dsimp only [Function.comp]
state_before: case h.e'_3
ι : Type u_2
M : Type u_1
inst✝¹ : DecidableEq ι
inst✝ : AddCommMonoid M
s : Multiset (ι →₀ M)
hs : Pairwise (_root_.Disjoint on Finsupp.support) s
a l : List (ι →₀ M)
hl : Quot.mk Setoid.r a = ↑l
hd : List.Pairwise (_root_.Disjoint on Finsupp.support) l
this : List.Pairwise (_root_.Disjoint on Finsupp.support) a
⊢ sup (map Finsupp.support (Quot.mk Setoid.r a)) = List.foldr ((fun x x_1 => x ⊔ x_1) ∘ Finsupp.support) ∅ a

tactic: simp only [quot_mk_to_coe'', coe_map, sup_coe, ge_iff_le, Finset.le_eq_subset,
  Finset.sup_eq_union, Finset.bot_eq_empty, List.foldr_map]
state_before: case h.e'_3
ι : Type u_2
M : Type u_1
inst✝¹ : DecidableEq ι
inst✝ : AddCommMonoid M
s : Multiset (ι →₀ M)
hs : Pairwise (_root_.Disjoint on Finsupp.support) s
a l : List (ι →₀ M)
hl : Quot.mk Setoid.r a = ↑l
hd : List.Pairwise (_root_.Disjoint on Finsupp.support) l
this : List.Pairwise (_root_.Disjoint on Finsupp.support) a
⊢ sup (map Finsupp.support (Quot.mk Setoid.r a)) = List.foldr (fun x x_1 => x.support ⊔ x_1) ∅ a

tactic: simp only [Multiset.quot_mk_to_coe'', Multiset.coe_map, Multiset.coe_eq_coe] at hl
state_before: case this
ι : Type u_2
M : Type u_1
inst✝¹ : DecidableEq ι
inst✝ : AddCommMonoid M
s : Multiset (ι →₀ M)
hs : Pairwise (_root_.Disjoint on Finsupp.support) s
a l : List (ι →₀ M)
hl : Quot.mk Setoid.r a = ↑l
hd : List.Pairwise (_root_.Disjoint on Finsupp.support) l
⊢ List.Pairwise (_root_.Disjoint on Finsupp.support) a

tactic: exact hl.symm.pairwise hd fun _ _ h ↦ _root_.Disjoint.symm h
state_before: case this
ι : Type u_2
M : Type u_1
inst✝¹ : DecidableEq ι
inst✝ : AddCommMonoid M
s : Multiset (ι →₀ M)
hs : Pairwise (_root_.Disjoint on Finsupp.support) s
a l : List (ι →₀ M)
hd : List.Pairwise (_root_.Disjoint on Finsupp.support) l
hl : a ~ l
⊢ List.Pairwise (_root_.Disjoint on Finsupp.support) a