@@ -122,6 +122,12 @@ lemma prod_eq_one (h : ∀ x ∈ s, x = (1 : α)) : s.prod = 1 := by
122
122
theorem pow_count [DecidableEq α] (a : α) : a ^ s.count a = (s.filter (Eq a)).prod := by
123
123
rw [filter_eq, prod_replicate]
124
124
125
+ @[to_additive]
126
+ theorem prod_hom_ne_zero {s : Multiset α} (hs : s ≠ 0 ) {F : Type *} [FunLike F α β]
127
+ [MulHomClass F α β] (f : F) :
128
+ (s.map f).prod = f s.prod := by
129
+ induction s using Quot.inductionOn; aesop (add simp List.prod_hom_nonempty)
130
+
125
131
@[to_additive]
126
132
theorem prod_hom (s : Multiset α) {F : Type *} [FunLike F α β]
127
133
[MonoidHomClass F α β] (f : F) :
@@ -135,6 +141,12 @@ theorem prod_hom' (s : Multiset ι) {F : Type*} [FunLike F α β]
135
141
convert (s.map g).prod_hom f
136
142
exact (map_map _ _ _).symm
137
143
144
+ @[to_additive]
145
+ theorem prod_hom₂_ne_zero [CommMonoid γ] {s : Multiset ι} (hs : s ≠ 0 ) (f : α → β → γ)
146
+ (hf : ∀ a b c d, f (a * b) (c * d) = f a c * f b d) (f₁ : ι → α) (f₂ : ι → β) :
147
+ (s.map fun i => f (f₁ i) (f₂ i)).prod = f (s.map f₁).prod (s.map f₂).prod := by
148
+ induction s using Quotient.inductionOn; aesop (add simp List.prod_hom₂_nonempty)
149
+
138
150
@[to_additive]
139
151
theorem prod_hom₂ [CommMonoid γ] (s : Multiset ι) (f : α → β → γ)
140
152
(hf : ∀ a b c d, f (a * b) (c * d) = f a c * f b d) (hf' : f 1 1 = 1 ) (f₁ : ι → α)
@@ -194,10 +206,19 @@ theorem prod_dvd_prod_of_le (h : s ≤ t) : s.prod ∣ t.prod := by
194
206
lemma _root_.map_multiset_prod [FunLike F α β] [MonoidHomClass F α β] (f : F) (s : Multiset α) :
195
207
f s.prod = (s.map f).prod := (s.prod_hom f).symm
196
208
209
+ @[to_additive]
210
+ lemma _root_.map_multiset_ne_zero_prod [FunLike F α β] [MulHomClass F α β] (f : F)
211
+ {s : Multiset α} (hs : s ≠ 0 ):
212
+ f s.prod = (s.map f).prod := (s.prod_hom_ne_zero hs f).symm
213
+
197
214
@[to_additive]
198
215
protected lemma _root_.MonoidHom.map_multiset_prod (f : α →* β) (s : Multiset α) :
199
216
f s.prod = (s.map f).prod := (s.prod_hom f).symm
200
217
218
+ @[to_additive]
219
+ protected lemma _root_.MulHom.map_multiset_ne_zero_prod (f : α →ₙ* β) (s : Multiset α)
220
+ (hs : s ≠ 0 ) : f s.prod = (s.map f).prod := (s.prod_hom_ne_zero hs f).symm
221
+
201
222
lemma dvd_prod : a ∈ s → a ∣ s.prod :=
202
223
Quotient.inductionOn s (fun l a h ↦ by simpa using List.dvd_prod h) a
203
224
0 commit comments