@@ -109,6 +109,8 @@ theorem ext_iff {f g : Π₀ i, β i} : f = g ↔ ∀ i, f i = g i :=
109
109
FunLike.ext_iff
110
110
#align dfinsupp.ext_iff DFinsupp.ext_iff
111
111
112
+ lemma ne_iff {f g : Π₀ i, β i} : f ≠ g ↔ ∃ i, f i ≠ g i := FunLike.ne_iff
113
+
112
114
@[deprecated FunLike.coe_injective]
113
115
theorem coeFn_injective : @Function.Injective (Π₀ i, β i) (∀ i, β i) (⇑) :=
114
116
FunLike.coe_injective
@@ -120,14 +122,10 @@ instance : Zero (Π₀ i, β i) :=
120
122
instance : Inhabited (Π₀ i, β i) :=
121
123
⟨0 ⟩
122
124
123
- @[simp]
124
- theorem coe_mk' (f : ∀ i, β i) (s) : ⇑(⟨f, s⟩ : Π₀ i, β i) = f :=
125
- rfl
125
+ @[simp, norm_cast] lemma coe_mk' (f : ∀ i, β i) (s) : ⇑(⟨f, s⟩ : Π₀ i, β i) = f := rfl
126
126
#align dfinsupp.coe_mk' DFinsupp.coe_mk'
127
127
128
- @[simp]
129
- theorem coe_zero : ⇑(0 : Π₀ i, β i) = 0 :=
130
- rfl
128
+ @[simp, norm_cast] lemma coe_zero : ⇑(0 : Π₀ i, β i) = 0 := rfl
131
129
#align dfinsupp.coe_zero DFinsupp.coe_zero
132
130
133
131
theorem zero_apply (i : ι) : (0 : Π₀ i, β i) i = 0 :=
@@ -239,7 +237,7 @@ theorem add_apply [∀ i, AddZeroClass (β i)] (g₁ g₂ : Π₀ i, β i) (i :
239
237
rfl
240
238
#align dfinsupp.add_apply DFinsupp.add_apply
241
239
242
- @[simp]
240
+ @[simp, norm_cast ]
243
241
theorem coe_add [∀ i, AddZeroClass (β i)] (g₁ g₂ : Π₀ i, β i) : ⇑(g₁ + g₂) = g₁ + g₂ :=
244
242
rfl
245
243
#align dfinsupp.coe_add DFinsupp.coe_add
@@ -268,7 +266,7 @@ theorem nsmul_apply [∀ i, AddMonoid (β i)] (b : ℕ) (v : Π₀ i, β i) (i :
268
266
rfl
269
267
#align dfinsupp.nsmul_apply DFinsupp.nsmul_apply
270
268
271
- @[simp]
269
+ @[simp, norm_cast ]
272
270
theorem coe_nsmul [∀ i, AddMonoid (β i)] (b : ℕ) (v : Π₀ i, β i) : ⇑(b • v) = b • ⇑v :=
273
271
rfl
274
272
#align dfinsupp.coe_nsmul DFinsupp.coe_nsmul
@@ -293,7 +291,7 @@ def evalAddMonoidHom [∀ i, AddZeroClass (β i)] (i : ι) : (Π₀ i, β i) →
293
291
instance addCommMonoid [∀ i, AddCommMonoid (β i)] : AddCommMonoid (Π₀ i, β i) :=
294
292
FunLike.coe_injective.addCommMonoid _ coe_zero coe_add fun _ _ => coe_nsmul _ _
295
293
296
- @[simp]
294
+ @[simp, norm_cast ]
297
295
theorem coe_finset_sum {α} [∀ i, AddCommMonoid (β i)] (s : Finset α) (g : α → Π₀ i, β i) :
298
296
⇑(∑ a in s, g a) = ∑ a in s, ⇑(g a) :=
299
297
map_sum coeFnAddMonoidHom g s
@@ -312,9 +310,7 @@ theorem neg_apply [∀ i, AddGroup (β i)] (g : Π₀ i, β i) (i : ι) : (-g) i
312
310
rfl
313
311
#align dfinsupp.neg_apply DFinsupp.neg_apply
314
312
315
- @[simp]
316
- theorem coe_neg [∀ i, AddGroup (β i)] (g : Π₀ i, β i) : ⇑(-g) = -g :=
317
- rfl
313
+ @[simp, norm_cast] lemma coe_neg [∀ i, AddGroup (β i)] (g : Π₀ i, β i) : ⇑(-g) = -g := rfl
318
314
#align dfinsupp.coe_neg DFinsupp.coe_neg
319
315
320
316
instance [∀ i, AddGroup (β i)] : Sub (Π₀ i, β i) :=
@@ -324,7 +320,7 @@ theorem sub_apply [∀ i, AddGroup (β i)] (g₁ g₂ : Π₀ i, β i) (i : ι)
324
320
rfl
325
321
#align dfinsupp.sub_apply DFinsupp.sub_apply
326
322
327
- @[simp]
323
+ @[simp, norm_cast ]
328
324
theorem coe_sub [∀ i, AddGroup (β i)] (g₁ g₂ : Π₀ i, β i) : ⇑(g₁ - g₂) = g₁ - g₂ :=
329
325
rfl
330
326
#align dfinsupp.coe_sub DFinsupp.coe_sub
@@ -339,7 +335,7 @@ theorem zsmul_apply [∀ i, AddGroup (β i)] (b : ℤ) (v : Π₀ i, β i) (i :
339
335
rfl
340
336
#align dfinsupp.zsmul_apply DFinsupp.zsmul_apply
341
337
342
- @[simp]
338
+ @[simp, norm_cast ]
343
339
theorem coe_zsmul [∀ i, AddGroup (β i)] (b : ℤ) (v : Π₀ i, β i) : ⇑(b • v) = b • ⇑v :=
344
340
rfl
345
341
#align dfinsupp.coe_zsmul DFinsupp.coe_zsmul
@@ -362,7 +358,7 @@ theorem smul_apply [Monoid γ] [∀ i, AddMonoid (β i)] [∀ i, DistribMulActio
362
358
rfl
363
359
#align dfinsupp.smul_apply DFinsupp.smul_apply
364
360
365
- @[simp]
361
+ @[simp, norm_cast ]
366
362
theorem coe_smul [Monoid γ] [∀ i, AddMonoid (β i)] [∀ i, DistribMulAction γ (β i)] (b : γ)
367
363
(v : Π₀ i, β i) : ⇑(b • v) = b • ⇑v :=
368
364
rfl
@@ -850,9 +846,7 @@ def update : Π₀ i, β i :=
850
846
851
847
variable (j : ι)
852
848
853
- @[simp]
854
- theorem coe_update : (f.update i b : ∀ i : ι, β i) = Function.update f i b :=
855
- rfl
849
+ @[simp, norm_cast] lemma coe_update : (f.update i b : ∀ i : ι, β i) = Function.update f i b := rfl
856
850
#align dfinsupp.coe_update DFinsupp.coe_update
857
851
858
852
@[simp]
@@ -1893,6 +1887,16 @@ theorem prod_eq_prod_fintype [Fintype ι] [∀ i, Zero (β i)] [∀ (i : ι) (x
1893
1887
#align dfinsupp.prod_eq_prod_fintype DFinsupp.prod_eq_prod_fintype
1894
1888
#align dfinsupp.sum_eq_sum_fintype DFinsupp.sum_eq_sum_fintype
1895
1889
1890
+ section CommMonoidWithZero
1891
+ variable [Π i, Zero (β i)] [CommMonoidWithZero γ] [Nontrivial γ] [NoZeroDivisors γ]
1892
+ [Π i, DecidableEq (β i)] {f : Π₀ i, β i} {g : Π i, β i → γ}
1893
+
1894
+ @[simp]
1895
+ lemma prod_eq_zero_iff : f.prod g = 0 ↔ ∃ i ∈ f.support, g i (f i) = 0 := Finset.prod_eq_zero_iff
1896
+ lemma prod_ne_zero_iff : f.prod g ≠ 0 ↔ ∀ i ∈ f.support, g i (f i) ≠ 0 := Finset.prod_ne_zero_iff
1897
+
1898
+ end CommMonoidWithZero
1899
+
1896
1900
/--
1897
1901
When summing over an `AddMonoidHom`, the decidability assumption is not needed, and the result is
1898
1902
also an `AddMonoidHom`.
@@ -2281,14 +2285,14 @@ variable [∀ i, Zero (β i)] [∀ (i) (x : β i), Decidable (x ≠ 0)]
2281
2285
#align monoid_hom.map_dfinsupp_prod map_dfinsupp_prodₓ
2282
2286
#align add_monoid_hom.map_dfinsupp_sum map_dfinsupp_sumₓ
2283
2287
2284
- @[to_additive]
2288
+ @[to_additive (attr := simp, norm_cast) ]
2285
2289
theorem coe_dfinsupp_prod [Monoid R] [CommMonoid S] (f : Π₀ i, β i) (g : ∀ i, β i → R →* S) :
2286
2290
⇑(f.prod g) = f.prod fun a b => ⇑(g a b) :=
2287
2291
coe_finset_prod _ _
2288
2292
#align monoid_hom.coe_dfinsupp_prod MonoidHom.coe_dfinsupp_prod
2289
2293
#align add_monoid_hom.coe_dfinsupp_sum AddMonoidHom.coe_dfinsupp_sum
2290
2294
2291
- @[to_additive (attr := simp) ]
2295
+ @[to_additive]
2292
2296
theorem dfinsupp_prod_apply [Monoid R] [CommMonoid S] (f : Π₀ i, β i) (g : ∀ i, β i → R →* S)
2293
2297
(r : R) : (f.prod g) r = f.prod fun a b => (g a b) r :=
2294
2298
finset_prod_apply _ _ _
@@ -2318,13 +2322,13 @@ theorem map_dfinsupp_sumAddHom [AddCommMonoid R] [AddCommMonoid S] [∀ i, AddZe
2318
2322
FunLike.congr_fun (comp_liftAddHom h g) f
2319
2323
#align add_monoid_hom.map_dfinsupp_sum_add_hom AddMonoidHom.map_dfinsupp_sumAddHom
2320
2324
2321
- @[simp]
2322
2325
theorem dfinsupp_sumAddHom_apply [AddZeroClass R] [AddCommMonoid S] [∀ i, AddZeroClass (β i)]
2323
2326
(f : Π₀ i, β i) (g : ∀ i, β i →+ R →+ S) (r : R) :
2324
2327
(sumAddHom g f) r = sumAddHom (fun i => (eval r).comp (g i)) f :=
2325
2328
map_dfinsupp_sumAddHom (eval r) f g
2326
2329
#align add_monoid_hom.dfinsupp_sum_add_hom_apply AddMonoidHom.dfinsupp_sumAddHom_apply
2327
2330
2331
+ @[simp, norm_cast]
2328
2332
theorem coe_dfinsupp_sumAddHom [AddZeroClass R] [AddCommMonoid S] [∀ i, AddZeroClass (β i)]
2329
2333
(f : Π₀ i, β i) (g : ∀ i, β i →+ R →+ S) :
2330
2334
⇑(sumAddHom g f) = sumAddHom (fun i => (coeFn R S).comp (g i)) f :=
0 commit comments