@@ -213,6 +213,9 @@ if_neg h
213
213
lemma single_eq_update : ⇑(single a b) = function.update 0 a b :=
214
214
by rw [single_eq_indicator, ← set.piecewise_eq_indicator, set.piecewise_singleton]
215
215
216
+ lemma single_eq_pi_single : ⇑(single a b) = pi.single a b :=
217
+ single_eq_update
218
+
216
219
@[simp] lemma single_zero : (single a 0 : α →₀ M) = 0 :=
217
220
coe_fn_injective $ by simpa only [single_eq_update, coe_zero]
218
221
using function.update_eq_self a (0 : α → M)
@@ -284,6 +287,18 @@ lemma single_left_inj (h : b ≠ 0) :
284
287
and_false, or_false, eq_self_iff_true, and_true] using H,
285
288
λ H, by rw [H]⟩
286
289
290
+ lemma support_single_ne_bot (i : α) (h : b ≠ 0 ) :
291
+ (single i b).support ≠ ⊥ :=
292
+ begin
293
+ have : i ∈ (single i b).support := by simpa using h,
294
+ intro H,
295
+ simpa [H]
296
+ end
297
+
298
+ lemma support_single_disjoint {b' : M} (hb : b ≠ 0 ) (hb' : b' ≠ 0 ) {i j : α} :
299
+ disjoint (single i b).support (single j b').support ↔ i ≠ j :=
300
+ by simpa [support_single_ne_zero, hb, hb'] using ne_comm
301
+
287
302
@[simp] lemma single_eq_zero : single a b = 0 ↔ b = 0 :=
288
303
by simp [ext_iff, single_eq_indicator]
289
304
@@ -1090,6 +1105,25 @@ lemma multiset_sum_sum_index
1090
1105
multiset.induction_on f rfl $ assume a s ih,
1091
1106
by rw [multiset.sum_cons, multiset.map_cons, multiset.sum_cons, sum_add_index h₀ h₁, ih]
1092
1107
1108
+ lemma support_sum_eq_bUnion {α : Type *} {ι : Type *} {M : Type *} [add_comm_monoid M]
1109
+ {g : ι → α →₀ M} (s : finset ι) (h : ∀ i₁ i₂, i₁ ≠ i₂ → disjoint (g i₁).support (g i₂).support) :
1110
+ (∑ i in s, g i).support = s.bUnion (λ i, (g i).support) :=
1111
+ begin
1112
+ apply finset.induction_on s,
1113
+ { simp },
1114
+ { intros i s hi,
1115
+ simp only [hi, sum_insert, not_false_iff, bUnion_insert],
1116
+ intro hs,
1117
+ rw [finsupp.support_add_eq, hs],
1118
+ rw [hs],
1119
+ intros x hx,
1120
+ simp only [mem_bUnion, exists_prop, inf_eq_inter, ne.def, mem_inter] at hx,
1121
+ obtain ⟨hxi, j, hj, hxj⟩ := hx,
1122
+ have hn : i ≠ j := λ H, hi (H.symm ▸ hj),
1123
+ apply h _ _ hn,
1124
+ simp [hxi, hxj] }
1125
+ end
1126
+
1093
1127
lemma multiset_map_sum [has_zero M] {f : α →₀ M} {m : β → γ} {h : α → M → multiset β} :
1094
1128
multiset.map m (f.sum h) = f.sum (λa b, (h a b).map m) :=
1095
1129
(f.support.sum_hom _).symm
@@ -1493,6 +1527,20 @@ lemma to_multiset_apply (f : α →₀ ℕ) : f.to_multiset = f.sum (λ a n, n
1493
1527
@[simp] lemma to_multiset_single (a : α) (n : ℕ) : to_multiset (single a n) = n •ℕ {a} :=
1494
1528
by rw [to_multiset_apply, sum_single_index]; apply zero_nsmul
1495
1529
1530
+ lemma to_multiset_sum {ι : Type *} {f : ι → α →₀ ℕ} (s : finset ι) :
1531
+ finsupp.to_multiset (∑ i in s, f i) = ∑ i in s, finsupp.to_multiset (f i) :=
1532
+ begin
1533
+ apply finset.induction_on s,
1534
+ { simp },
1535
+ { intros i s hi,
1536
+ simp [hi] }
1537
+ end
1538
+
1539
+ lemma to_multiset_sum_single {ι : Type *} (s : finset ι) (n : ℕ) :
1540
+ finsupp.to_multiset (∑ i in s, single i n) = n •ℕ s.val :=
1541
+ by simp_rw [to_multiset_sum, finsupp.to_multiset_single, multiset.singleton_eq_singleton,
1542
+ sum_nsmul, sum_multiset_singleton]
1543
+
1496
1544
lemma card_to_multiset (f : α →₀ ℕ) : f.to_multiset.card = f.sum (λa, id) :=
1497
1545
by simp [to_multiset_apply, add_monoid_hom.map_finsupp_sum, function.id_def]
1498
1546
0 commit comments