ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
-- Squarefree.gcd_left
theorem Squarefree.gcd_left {a : α} (b : α) (ha : Squarefree a) : Squarefree (gcd a b) 
Arguments: {α : Type u_2} [CancelCommMonoidWithZero α] [GCDMonoid α] {a : α} (b : α) (ha : Squarefree a)
Goal: Squarefree (gcd a b)
-- multiplicity.squarefree_iff_multiplicity_le_one
theorem squarefree_iff_multiplicity_le_one (r : R) :
    Squarefree r ↔ ∀ x : R, multiplicity x r ≤ 1 ∨ IsUnit x 
Arguments: {R : Type u_1} [CommMonoid R] [DecidableRel Dvd.dvd] (r : R)
Goal: Squarefree r ↔ ∀ (x : R), multiplicity x r ≤ 1 ∨ IsUnit x
-- multiplicity.finite_prime_left
theorem finite_prime_left {a b : R} (ha : Prime a) (hb : b ≠ 0) : multiplicity.Finite a b 
Arguments: {R : Type u_1} [CancelCommMonoidWithZero R] [WfDvdMonoid R] {a b : R} (ha : Prime a) (hb : b ≠ 0)
Goal: multiplicity.Finite a b
-- squarefree_iff_no_irreducibles
theorem squarefree_iff_no_irreducibles {x : R} (hx₀ : x ≠ 0) :
    Squarefree x ↔ ∀ p, Irreducible p → ¬ (p * p ∣ x) 
Arguments: {R : Type u_1} [CommMonoidWithZero R] [WfDvdMonoid R] {x : R} (hx₀ : x ≠ 0)
Goal: Squarefree x ↔ ∀ (p : R), Irreducible p → ¬p * p ∣ x
-- irreducible_sq_not_dvd_iff_eq_zero_and_no_irreducibles_or_squarefree
theorem irreducible_sq_not_dvd_iff_eq_zero_and_no_irreducibles_or_squarefree (r : R) :
    (∀ x : R, Irreducible x → ¬x * x ∣ r) ↔ (r = 0 ∧ ∀ x : R, ¬Irreducible x) ∨ Squarefree r 
Arguments: {R : Type u_1} [CommMonoidWithZero R] [WfDvdMonoid R] (r : R)
Goal: (∀ (x : R), Irreducible x → ¬x * x ∣ r) ↔ (r = 0 ∧ ∀ (x : R), ¬Irreducible x) ∨ Squarefree r
-- squarefree_iff_irreducible_sq_not_dvd_of_ne_zero
theorem squarefree_iff_irreducible_sq_not_dvd_of_ne_zero {r : R} (hr : r ≠ 0) :
    Squarefree r ↔ ∀ x : R, Irreducible x → ¬x * x ∣ r 
Arguments: {R : Type u_1} [CommMonoidWithZero R] [WfDvdMonoid R] {r : R} (hr : r ≠ 0)
Goal: Squarefree r ↔ ∀ (x : R), Irreducible x → ¬x * x ∣ r
-- squarefree_iff_irreducible_sq_not_dvd_of_exists_irreducible
theorem squarefree_iff_irreducible_sq_not_dvd_of_exists_irreducible {r : R}
    (hr : ∃ x : R, Irreducible x) : Squarefree r ↔ ∀ x : R, Irreducible x → ¬x * x ∣ r 
Arguments: {R : Type u_1} [CommMonoidWithZero R] [WfDvdMonoid R] {r : R} (hr : ∃ x, Irreducible x)
Goal: Squarefree r ↔ ∀ (x : R), Irreducible x → ¬x * x ∣ r
-- Squarefree.isRadical
theorem Squarefree.isRadical {x : R} (hx : Squarefree x) : IsRadical x 
Arguments: {R : Type u_1} [CommMonoidWithZero R] [DecompositionMonoid R] {x : R} (hx : Squarefree x)
Goal: IsRadical x
-- Squarefree.dvd_pow_iff_dvd
theorem Squarefree.dvd_pow_iff_dvd {x y : R} {n : ℕ} (hsq : Squarefree x) (h0 : n ≠ 0) :
    x ∣ y ^ n ↔ x ∣ y 
Arguments: {R : Type u_1} [CommMonoidWithZero R] [DecompositionMonoid R] {x y : R} {n : ℕ} (hsq : Squarefree x) (h0 : n ≠ 0)
Goal: x ∣ y ^ n ↔ x ∣ y
-- IsRadical.squarefree
theorem IsRadical.squarefree (h0 : x ≠ 0) (h : IsRadical x) : Squarefree x 
Arguments: {R : Type u_1} [CancelCommMonoidWithZero R] {x : R} (h0 : x ≠ 0) (h : IsRadical x)
Goal: Squarefree x
-- Squarefree.pow_dvd_of_squarefree_of_pow_succ_dvd_mul_right
theorem pow_dvd_of_squarefree_of_pow_succ_dvd_mul_right {k : ℕ}
    (hx : Squarefree x) (hp : Prime p) (h : p ^ (k + 1) ∣ x * y) :
    p ^ k ∣ y 
Arguments: {R : Type u_1} [CancelCommMonoidWithZero R] {x y p : R} {k : ℕ} (hx : Squarefree x) (hp : Prime p) (h : p ^ (k + 1) ∣ x * y)
Goal: p ^ k ∣ y
-- Squarefree.pow_dvd_of_squarefree_of_pow_succ_dvd_mul_left
theorem pow_dvd_of_squarefree_of_pow_succ_dvd_mul_left {k : ℕ}
    (hy : Squarefree y) (hp : Prime p) (h : p ^ (k + 1) ∣ x * y) :
    p ^ k ∣ x 
Arguments: {R : Type u_1} [CancelCommMonoidWithZero R] {x y p : R} {k : ℕ} (hy : Squarefree y) (hp : Prime p) (h : p ^ (k + 1) ∣ x * y)
Goal: p ^ k ∣ x
-- Squarefree.dvd_of_squarefree_of_mul_dvd_mul_right
theorem dvd_of_squarefree_of_mul_dvd_mul_right (hx : Squarefree x) (h : d * d ∣ x * y) : d ∣ y 
Arguments: {R : Type u_1} [CancelCommMonoidWithZero R] {x y d : R} [DecompositionMonoid R] (hx : Squarefree x) (h : d * d ∣ x * y)
Goal: d ∣ y
-- Squarefree.dvd_of_squarefree_of_mul_dvd_mul_left
theorem dvd_of_squarefree_of_mul_dvd_mul_left (hy : Squarefree y) (h : d * d ∣ x * y) : d ∣ x 
Arguments: {R : Type u_1} [CancelCommMonoidWithZero R] {x y d : R} [DecompositionMonoid R] (hy : Squarefree y) (h : d * d ∣ x * y)
Goal: d ∣ x
-- squarefree_mul_iff
theorem squarefree_mul_iff : Squarefree (x * y) ↔ IsRelPrime x y ∧ Squarefree x ∧ Squarefree y 
Arguments: {R : Type u_1} [CancelCommMonoidWithZero R] {x y : R} [DecompositionMonoid R]
Goal: Squarefree (x * y) ↔ IsRelPrime x y ∧ Squarefree x ∧ Squarefree y
-- isRadical_iff_squarefree_or_zero
theorem isRadical_iff_squarefree_or_zero : IsRadical x ↔ Squarefree x ∨ x = 0 
Arguments: {R : Type u_1} [CancelCommMonoidWithZero R] {x : R} [DecompositionMonoid R]
Goal: IsRadical x ↔ Squarefree x ∨ x = 0
-- isRadical_iff_squarefree_of_ne_zero
theorem isRadical_iff_squarefree_of_ne_zero (h : x ≠ 0) : IsRadical x ↔ Squarefree x 
Arguments: {R : Type u_1} [CancelCommMonoidWithZero R] {x : R} [DecompositionMonoid R] (h : x ≠ 0)
Goal: IsRadical x ↔ Squarefree x
-- exists_squarefree_dvd_pow_of_ne_zero
lemma _root_.exists_squarefree_dvd_pow_of_ne_zero {x : R} (hx : x ≠ 0) :
    ∃ (y : R) (n : ℕ), Squarefree y ∧ y ∣ x ∧ x ∣ y ^ n 
Arguments: {R : Type u_1} [CancelCommMonoidWithZero R] [UniqueFactorizationMonoid R] {x : R} (hx : x ≠ 0)
Goal: ∃ y n, Squarefree y ∧ y ∣ x ∧ x ∣ y ^ n
-- UniqueFactorizationMonoid.squarefree_iff_nodup_normalizedFactors
theorem squarefree_iff_nodup_normalizedFactors [NormalizationMonoid R] {x : R}
    (x0 : x ≠ 0) : Squarefree x ↔ Multiset.Nodup (normalizedFactors x) 
Arguments: {R : Type u_1} [CancelCommMonoidWithZero R] [UniqueFactorizationMonoid R] [NormalizationMonoid R] {x : R} (x0 : x ≠ 0)
Goal: Squarefree x ↔ (UniqueFactorizationMonoid.normalizedFactors x).Nodup
-- Int.squarefree_natAbs
@[simp]
theorem squarefree_natAbs {n : ℤ} : Squarefree n.natAbs ↔ Squarefree n 
Arguments: {n : ℤ}
Goal: Squarefree n.natAbs ↔ Squarefree n
-- Int.squarefree_natCast
@[simp]
theorem squarefree_natCast {n : ℕ} : Squarefree (n : ℤ) ↔ Squarefree n 
Arguments: {n : ℕ}
Goal: Squarefree ↑n ↔ Squarefree n
-- Multiset.sum_eq_foldr
@[to_additive]
theorem prod_eq_foldr (s : Multiset α) :
    prod s = foldr (· * ·) (fun x y z => by simp [mul_left_comm]) 1 s 
Arguments: {α : Type u_3} [AddCommMonoid α] (s : Multiset α)
Goal: s.sum = Multiset.foldr (fun x x_1 => x + x_1) ⋯ 0 s
-- Multiset.prod_eq_foldr
@[to_additive]
theorem prod_eq_foldr (s : Multiset α) :
    prod s = foldr (· * ·) (fun x y z => by simp [mul_left_comm]) 1 s 
Arguments: {α : Type u_3} [CommMonoid α] (s : Multiset α)
Goal: s.prod = Multiset.foldr (fun x x_1 => x * x_1) ⋯ 1 s
-- Multiset.sum_eq_foldl
@[to_additive]
theorem prod_eq_foldl (s : Multiset α) :
    prod s = foldl (· * ·) (fun x y z => by simp [mul_right_comm]) 1 s 
Arguments: {α : Type u_3} [AddCommMonoid α] (s : Multiset α)
Goal: s.sum = Multiset.foldl (fun x x_1 => x + x_1) ⋯ 0 s
-- Multiset.prod_eq_foldl
@[to_additive]
theorem prod_eq_foldl (s : Multiset α) :
    prod s = foldl (· * ·) (fun x y z => by simp [mul_right_comm]) 1 s 
Arguments: {α : Type u_3} [CommMonoid α] (s : Multiset α)
Goal: s.prod = Multiset.foldl (fun x x_1 => x * x_1) ⋯ 1 s
-- Multiset.prod_coe
@[to_additive (attr := simp, norm_cast)]
theorem prod_coe (l : List α) : prod ↑l = l.prod 
Arguments: {α : Type u_3} [CommMonoid α] (l : List α)
Goal: (↑l).prod = l.prod
-- Multiset.sum_coe
@[to_additive (attr := simp, norm_cast)]
theorem prod_coe (l : List α) : prod ↑l = l.prod 
Arguments: {α : Type u_3} [AddCommMonoid α] (l : List α)
Goal: (↑l).sum = l.sum
-- Multiset.sum_toList
@[to_additive (attr := simp)]
theorem prod_toList (s : Multiset α) : s.toList.prod = s.prod 
Arguments: {α : Type u_3} [AddCommMonoid α] (s : Multiset α)
Goal: s.toList.sum = s.sum
-- Multiset.prod_toList
@[to_additive (attr := simp)]
theorem prod_toList (s : Multiset α) : s.toList.prod = s.prod 
Arguments: {α : Type u_3} [CommMonoid α] (s : Multiset α)
Goal: s.toList.prod = s.prod
-- Multiset.prod_zero
@[to_additive (attr := simp)]
theorem prod_zero : @prod α _ 0 = 1 
Arguments: {α : Type u_3} [CommMonoid α]
Goal: Multiset.prod 0 = 1
-- Multiset.sum_zero
@[to_additive (attr := simp)]
theorem prod_zero : @prod α _ 0 = 1 
Arguments: {α : Type u_3} [AddCommMonoid α]
Goal: Multiset.sum 0 = 0
-- Multiset.prod_cons
@[to_additive (attr := simp)]
theorem prod_cons (a : α) (s) : prod (a ::ₘ s) = a * prod s 
Arguments: {α : Type u_3} [CommMonoid α] (a : α) (s : Multiset α)
Goal: (a ::ₘ s).prod = a * s.prod
-- Multiset.sum_cons
@[to_additive (attr := simp)]
theorem prod_cons (a : α) (s) : prod (a ::ₘ s) = a * prod s 
Arguments: {α : Type u_3} [AddCommMonoid α] (a : α) (s : Multiset α)
Goal: (a ::ₘ s).sum = a + s.sum
-- Multiset.prod_erase
@[to_additive (attr := simp)]
theorem prod_erase [DecidableEq α] (h : a ∈ s) : a * (s.erase a).prod = s.prod 
Arguments: {α : Type u_3} [CommMonoid α] {s : Multiset α} {a : α} [DecidableEq α] (h : a ∈ s)
Goal: a * (s.erase a).prod = s.prod
-- Multiset.sum_erase
@[to_additive (attr := simp)]
theorem prod_erase [DecidableEq α] (h : a ∈ s) : a * (s.erase a).prod = s.prod 
Arguments: {α : Type u_3} [AddCommMonoid α] {s : Multiset α} {a : α} [DecidableEq α] (h : a ∈ s)
Goal: a + (s.erase a).sum = s.sum
-- Multiset.prod_map_erase
@[to_additive (attr := simp)]
theorem prod_map_erase [DecidableEq ι] {a : ι} (h : a ∈ m) :
    f a * ((m.erase a).map f).prod = (m.map f).prod 
Arguments: {ι : Type u_2} {α : Type u_3} [CommMonoid α] {m : Multiset ι} {f : ι → α} [DecidableEq ι] {a : ι} (h : a ∈ m)
Goal: f a * (Multiset.map f (m.erase a)).prod = (Multiset.map f m).prod
-- Multiset.sum_map_erase
@[to_additive (attr := simp)]
theorem prod_map_erase [DecidableEq ι] {a : ι} (h : a ∈ m) :
    f a * ((m.erase a).map f).prod = (m.map f).prod 
Arguments: {ι : Type u_2} {α : Type u_3} [AddCommMonoid α] {m : Multiset ι} {f : ι → α} [DecidableEq ι] {a : ι} (h : a ∈ m)
Goal: f a + (Multiset.map f (m.erase a)).sum = (Multiset.map f m).sum
-- Multiset.prod_singleton
@[to_additive (attr := simp)]
theorem prod_singleton (a : α) : prod {a} = a 
Arguments: {α : Type u_3} [CommMonoid α] (a : α)
Goal: {a}.prod = a
-- Multiset.sum_singleton
@[to_additive (attr := simp)]
theorem prod_singleton (a : α) : prod {a} = a 
Arguments: {α : Type u_3} [AddCommMonoid α] (a : α)
Goal: {a}.sum = a
-- Multiset.prod_pair
@[to_additive]
theorem prod_pair (a b : α) : ({a, b} : Multiset α).prod = a * b 
Arguments: {α : Type u_3} [CommMonoid α] (a b : α)
Goal: {a, b}.prod = a * b
-- Multiset.sum_pair
@[to_additive]
theorem prod_pair (a b : α) : ({a, b} : Multiset α).prod = a * b 
Arguments: {α : Type u_3} [AddCommMonoid α] (a b : α)
Goal: {a, b}.sum = a + b
-- Multiset.prod_add
@[to_additive (attr := simp)]
theorem prod_add (s t : Multiset α) : prod (s + t) = prod s * prod t 
Arguments: {α : Type u_3} [CommMonoid α] (s t : Multiset α)
Goal: (s + t).prod = s.prod * t.prod
-- Multiset.sum_add
@[to_additive (attr := simp)]
theorem prod_add (s t : Multiset α) : prod (s + t) = prod s * prod t 
Arguments: {α : Type u_3} [AddCommMonoid α] (s t : Multiset α)
Goal: (s + t).sum = s.sum + t.sum
-- Multiset.prod_nsmul
@[to_additive]
theorem prod_nsmul (m : Multiset α) : ∀ n : ℕ, (n • m).prod = m.prod ^ n
  
Arguments: {α : Type u_3} [CommMonoid α] (m : Multiset α) (n : ℕ)
Goal: (n • m).prod = m.prod ^ n
-- Multiset.sum_nsmul
@[to_additive]
theorem prod_nsmul (m : Multiset α) : ∀ n : ℕ, (n • m).prod = m.prod ^ n
  
Arguments: {α : Type u_3} [AddCommMonoid α] (m : Multiset α) (n : ℕ)
Goal: (n • m).sum = n • m.sum
-- Multiset.sum_filter_add_sum_filter_not
@[to_additive]
theorem prod_filter_mul_prod_filter_not (p) [DecidablePred p] :
    (s.filter p).prod * (s.filter (fun a ↦ ¬ p a)).prod = s.prod 
Arguments: {α : Type u_3} [AddCommMonoid α] {s : Multiset α} (p : α → Prop) [DecidablePred p]
Goal: (Multiset.filter p s).sum + (Multiset.filter (fun a => ¬p a) s).sum = s.sum
-- Multiset.prod_filter_mul_prod_filter_not
@[to_additive]
theorem prod_filter_mul_prod_filter_not (p) [DecidablePred p] :
    (s.filter p).prod * (s.filter (fun a ↦ ¬ p a)).prod = s.prod 
Arguments: {α : Type u_3} [CommMonoid α] {s : Multiset α} (p : α → Prop) [DecidablePred p]
Goal: (Multiset.filter p s).prod * (Multiset.filter (fun a => ¬p a) s).prod = s.prod
-- Multiset.sum_replicate
@[to_additive (attr := simp)]
theorem prod_replicate (n : ℕ) (a : α) : (replicate n a).prod = a ^ n 
Arguments: {α : Type u_3} [AddCommMonoid α] (n : ℕ) (a : α)
Goal: (Multiset.replicate n a).sum = n • a
-- Multiset.prod_replicate
@[to_additive (attr := simp)]
theorem prod_replicate (n : ℕ) (a : α) : (replicate n a).prod = a ^ n 
Arguments: {α : Type u_3} [CommMonoid α] (n : ℕ) (a : α)
Goal: (Multiset.replicate n a).prod = a ^ n
-- Multiset.prod_map_eq_pow_single
@[to_additive]
theorem prod_map_eq_pow_single [DecidableEq ι] (i : ι)
    (hf : ∀ i' ≠ i, i' ∈ m → f i' = 1) : (m.map f).prod = f i ^ m.count i 
Arguments: {ι : Type u_2} {α : Type u_3} [CommMonoid α] {m : Multiset ι} {f : ι → α} [DecidableEq ι] (i : ι) (hf : ∀ (i' : ι), i' ≠ i → i' ∈ m → f i' = 1)
Goal: (Multiset.map f m).prod = f i ^ Multiset.count i m
-- Multiset.sum_map_eq_nsmul_single
@[to_additive]
theorem prod_map_eq_pow_single [DecidableEq ι] (i : ι)
    (hf : ∀ i' ≠ i, i' ∈ m → f i' = 1) : (m.map f).prod = f i ^ m.count i 
Arguments: {ι : Type u_2} {α : Type u_3} [AddCommMonoid α] {m : Multiset ι} {f : ι → α} [DecidableEq ι] (i : ι) (hf : ∀ (i' : ι), i' ≠ i → i' ∈ m → f i' = 0)
Goal: (Multiset.map f m).sum = Multiset.count i m • f i
-- Multiset.sum_eq_nsmul_single
@[to_additive]
theorem prod_eq_pow_single [DecidableEq α] (a : α) (h : ∀ a' ≠ a, a' ∈ s → a' = 1) :
    s.prod = a ^ s.count a 
Arguments: {α : Type u_3} [AddCommMonoid α] {s : Multiset α} [DecidableEq α] (a : α) (h : ∀ (a' : α), a' ≠ a → a' ∈ s → a' = 0)
Goal: s.sum = Multiset.count a s • a
-- Multiset.prod_eq_pow_single
@[to_additive]
theorem prod_eq_pow_single [DecidableEq α] (a : α) (h : ∀ a' ≠ a, a' ∈ s → a' = 1) :
    s.prod = a ^ s.count a 
Arguments: {α : Type u_3} [CommMonoid α] {s : Multiset α} [DecidableEq α] (a : α) (h : ∀ (a' : α), a' ≠ a → a' ∈ s → a' = 1)
Goal: s.prod = a ^ Multiset.count a s
-- Multiset.prod_eq_one
@[to_additive]
lemma prod_eq_one (h : ∀ x ∈ s, x = (1 : α)) : s.prod = 1 
Arguments: {α : Type u_3} [CommMonoid α] {s : Multiset α} (h : ∀ x ∈ s, x = 1)
Goal: s.prod = 1
-- Multiset.sum_eq_zero
@[to_additive]
lemma prod_eq_one (h : ∀ x ∈ s, x = (1 : α)) : s.prod = 1 
Arguments: {α : Type u_3} [AddCommMonoid α] {s : Multiset α} (h : ∀ x ∈ s, x = 0)
Goal: s.sum = 0
-- Multiset.pow_count
@[to_additive]
theorem pow_count [DecidableEq α] (a : α) : a ^ s.count a = (s.filter (Eq a)).prod 
Arguments: {α : Type u_3} [CommMonoid α] {s : Multiset α} [DecidableEq α] (a : α)
Goal: a ^ Multiset.count a s = (Multiset.filter (Eq a) s).prod
-- Multiset.nsmul_count
@[to_additive]
theorem pow_count [DecidableEq α] (a : α) : a ^ s.count a = (s.filter (Eq a)).prod 
Arguments: {α : Type u_3} [AddCommMonoid α] {s : Multiset α} [DecidableEq α] (a : α)
Goal: Multiset.count a s • a = (Multiset.filter (Eq a) s).sum
-- Multiset.prod_hom
@[to_additive]
theorem prod_hom [CommMonoid β] (s : Multiset α) {F : Type*} [FunLike F α β]
    [MonoidHomClass F α β] (f : F) :
    (s.map f).prod = f s.prod 
Arguments: {α : Type u_3} {β : Type u_4} [CommMonoid α] [CommMonoid β] (s : Multiset α) {F : Type u_6} [FunLike F α β] [MonoidHomClass F α β] (f : F)
Goal: (Multiset.map (⇑f) s).prod = f s.prod
-- Multiset.sum_hom
@[to_additive]
theorem prod_hom [CommMonoid β] (s : Multiset α) {F : Type*} [FunLike F α β]
    [MonoidHomClass F α β] (f : F) :
    (s.map f).prod = f s.prod 
Arguments: {α : Type u_3} {β : Type u_4} [AddCommMonoid α] [AddCommMonoid β] (s : Multiset α) {F : Type u_6} [FunLike F α β] [AddMonoidHomClass F α β] (f : F)
Goal: (Multiset.map (⇑f) s).sum = f s.sum
-- Multiset.sum_hom'
@[to_additive]
theorem prod_hom' [CommMonoid β] (s : Multiset ι) {F : Type*} [FunLike F α β]
    [MonoidHomClass F α β] (f : F)
    (g : ι → α) : (s.map fun i => f <| g i).prod = f (s.map g).prod 
Arguments: {ι : Type u_2} {α : Type u_3} {β : Type u_4} [AddCommMonoid α] [AddCommMonoid β] (s : Multiset ι) {F : Type u_6} [FunLike F α β] [AddMonoidHomClass F α β] (f : F) (g : ι → α)
Goal: (Multiset.map (fun i => f (g i)) s).sum = f (Multiset.map g s).sum
-- Multiset.prod_hom'
@[to_additive]
theorem prod_hom' [CommMonoid β] (s : Multiset ι) {F : Type*} [FunLike F α β]
    [MonoidHomClass F α β] (f : F)
    (g : ι → α) : (s.map fun i => f <| g i).prod = f (s.map g).prod 
Arguments: {ι : Type u_2} {α : Type u_3} {β : Type u_4} [CommMonoid α] [CommMonoid β] (s : Multiset ι) {F : Type u_6} [FunLike F α β] [MonoidHomClass F α β] (f : F) (g : ι → α)
Goal: (Multiset.map (fun i => f (g i)) s).prod = f (Multiset.map g s).prod
-- Multiset.prod_hom₂
@[to_additive]
theorem prod_hom₂ [CommMonoid β] [CommMonoid γ] (s : Multiset ι) (f : α → β → γ)
    (hf : ∀ a b c d, f (a * b) (c * d) = f a c * f b d) (hf' : f 1 1 = 1) (f₁ : ι → α)
    (f₂ : ι → β) : (s.map fun i => f (f₁ i) (f₂ i)).prod = f (s.map f₁).prod (s.map f₂).prod 
Arguments: {ι : Type u_2} {α : Type u_3} {β : Type u_4} {γ : Type u_5} [CommMonoid α] [CommMonoid β] [CommMonoid γ] (s : Multiset ι) (f : α → β → γ) (hf : ∀ (a b : α) (c d : β), f (a * b) (c * d) = f a c * f b d) (hf' : f 1 1 = 1) (f₁ : ι → α) (f₂ : ι → β)
Goal: (Multiset.map (fun i => f (f₁ i) (f₂ i)) s).prod = f (Multiset.map f₁ s).prod (Multiset.map f₂ s).prod
-- Multiset.sum_hom₂
@[to_additive]
theorem prod_hom₂ [CommMonoid β] [CommMonoid γ] (s : Multiset ι) (f : α → β → γ)
    (hf : ∀ a b c d, f (a * b) (c * d) = f a c * f b d) (hf' : f 1 1 = 1) (f₁ : ι → α)
    (f₂ : ι → β) : (s.map fun i => f (f₁ i) (f₂ i)).prod = f (s.map f₁).prod (s.map f₂).prod 
Arguments: {ι : Type u_2} {α : Type u_3} {β : Type u_4} {γ : Type u_5} [AddCommMonoid α] [AddCommMonoid β] [AddCommMonoid γ] (s : Multiset ι) (f : α → β → γ) (hf : ∀ (a b : α) (c d : β), f (a + b) (c + d) = f a c + f b d) (hf' : f 0 0 = 0) (f₁ : ι → α) (f₂ : ι → β)
Goal: (Multiset.map (fun i => f (f₁ i) (f₂ i)) s).sum = f (Multiset.map f₁ s).sum (Multiset.map f₂ s).sum
-- Multiset.prod_hom_rel
@[to_additive]
theorem prod_hom_rel [CommMonoid β] (s : Multiset ι) {r : α → β → Prop} {f : ι → α} {g : ι → β}
    (h₁ : r 1 1) (h₂ : ∀ ⦃a b c⦄, r b c → r (f a * b) (g a * c)) :
    r (s.map f).prod (s.map g).prod 
Arguments: {ι : Type u_2} {α : Type u_3} {β : Type u_4} [CommMonoid α] [CommMonoid β] (s : Multiset ι) {r : α → β → Prop} {f : ι → α} {g : ι → β} (h₁ : r 1 1) (h₂ : ∀ ⦃a : ι⦄ ⦃b : α⦄ ⦃c : β⦄, r b c → r (f a * b) (g a * c))
Goal: r (Multiset.map f s).prod (Multiset.map g s).prod
-- Multiset.sum_hom_rel
@[to_additive]
theorem prod_hom_rel [CommMonoid β] (s : Multiset ι) {r : α → β → Prop} {f : ι → α} {g : ι → β}
    (h₁ : r 1 1) (h₂ : ∀ ⦃a b c⦄, r b c → r (f a * b) (g a * c)) :
    r (s.map f).prod (s.map g).prod 
Arguments: {ι : Type u_2} {α : Type u_3} {β : Type u_4} [AddCommMonoid α] [AddCommMonoid β] (s : Multiset ι) {r : α → β → Prop} {f : ι → α} {g : ι → β} (h₁ : r 0 0) (h₂ : ∀ ⦃a : ι⦄ ⦃b : α⦄ ⦃c : β⦄, r b c → r (f a + b) (g a + c))
Goal: r (Multiset.map f s).sum (Multiset.map g s).sum
-- Multiset.sum_map_zero
@[to_additive]
theorem prod_map_one : prod (m.map fun _ => (1 : α)) = 1 
Arguments: {ι : Type u_2} {α : Type u_3} [AddCommMonoid α] {m : Multiset ι}
Goal: (Multiset.map (fun x => 0) m).sum = 0
-- Multiset.prod_map_one
@[to_additive]
theorem prod_map_one : prod (m.map fun _ => (1 : α)) = 1 
Arguments: {ι : Type u_2} {α : Type u_3} [CommMonoid α] {m : Multiset ι}
Goal: (Multiset.map (fun x => 1) m).prod = 1
-- Multiset.sum_map_add
@[to_additive (attr := simp)]
theorem prod_map_mul : (m.map fun i => f i * g i).prod = (m.map f).prod * (m.map g).prod 
Arguments: {ι : Type u_2} {α : Type u_3} [AddCommMonoid α] {m : Multiset ι} {f g : ι → α}
Goal: (Multiset.map (fun i => f i + g i) m).sum = (Multiset.map f m).sum + (Multiset.map g m).sum
-- Multiset.prod_map_mul
@[to_additive (attr := simp)]
theorem prod_map_mul : (m.map fun i => f i * g i).prod = (m.map f).prod * (m.map g).prod 
Arguments: {ι : Type u_2} {α : Type u_3} [CommMonoid α] {m : Multiset ι} {f g : ι → α}
Goal: (Multiset.map (fun i => f i * g i) m).prod = (Multiset.map f m).prod * (Multiset.map g m).prod
-- Multiset.prod_map_pow
@[to_additive]
theorem prod_map_pow {n : ℕ} : (m.map fun i => f i ^ n).prod = (m.map f).prod ^ n 
Arguments: {ι : Type u_2} {α : Type u_3} [CommMonoid α] {m : Multiset ι} {f : ι → α} {n : ℕ}
Goal: (Multiset.map (fun i => f i ^ n) m).prod = (Multiset.map f m).prod ^ n
-- Multiset.sum_map_nsmul
@[to_additive]
theorem prod_map_pow {n : ℕ} : (m.map fun i => f i ^ n).prod = (m.map f).prod ^ n 
Arguments: {ι : Type u_2} {α : Type u_3} [AddCommMonoid α] {m : Multiset ι} {f : ι → α} {n : ℕ}
Goal: (Multiset.map (fun i => n • f i) m).sum = n • (Multiset.map f m).sum
-- Multiset.prod_map_prod_map
@[to_additive]
theorem prod_map_prod_map (m : Multiset β) (n : Multiset γ) {f : β → γ → α} :
    prod (m.map fun a => prod <| n.map fun b => f a b) =
      prod (n.map fun b => prod <| m.map fun a => f a b) 
Arguments: {α : Type u_3} {β : Type u_4} {γ : Type u_5} [CommMonoid α] (m : Multiset β) (n : Multiset γ) {f : β → γ → α}
Goal: (Multiset.map (fun a => (Multiset.map (fun b => f a b) n).prod) m).prod =
  (Multiset.map (fun b => (Multiset.map (fun a => f a b) m).prod) n).prod
-- Multiset.sum_map_sum_map
@[to_additive]
theorem prod_map_prod_map (m : Multiset β) (n : Multiset γ) {f : β → γ → α} :
    prod (m.map fun a => prod <| n.map fun b => f a b) =
      prod (n.map fun b => prod <| m.map fun a => f a b) 
Arguments: {α : Type u_3} {β : Type u_4} {γ : Type u_5} [AddCommMonoid α] (m : Multiset β) (n : Multiset γ) {f : β → γ → α}
Goal: (Multiset.map (fun a => (Multiset.map (fun b => f a b) n).sum) m).sum =
  (Multiset.map (fun b => (Multiset.map (fun a => f a b) m).sum) n).sum
-- Multiset.sum_induction
@[to_additive]
theorem prod_induction (p : α → Prop) (s : Multiset α) (p_mul : ∀ a b, p a → p b → p (a * b))
    (p_one : p 1) (p_s : ∀ a ∈ s, p a) : p s.prod 
Arguments: {α : Type u_3} [AddCommMonoid α] (p : α → Prop) (s : Multiset α) (p_mul : ∀ (a b : α), p a → p b → p (a + b)) (p_one : p 0) (p_s : ∀ a ∈ s, p a)
Goal: p s.sum
-- Multiset.prod_induction
@[to_additive]
theorem prod_induction (p : α → Prop) (s : Multiset α) (p_mul : ∀ a b, p a → p b → p (a * b))
    (p_one : p 1) (p_s : ∀ a ∈ s, p a) : p s.prod 
Arguments: {α : Type u_3} [CommMonoid α] (p : α → Prop) (s : Multiset α) (p_mul : ∀ (a b : α), p a → p b → p (a * b)) (p_one : p 1) (p_s : ∀ a ∈ s, p a)
Goal: p s.prod
-- Multiset.prod_induction_nonempty
@[to_additive]
theorem prod_induction_nonempty (p : α → Prop) (p_mul : ∀ a b, p a → p b → p (a * b)) (hs : s ≠ ∅)
    (p_s : ∀ a ∈ s, p a) : p s.prod 
Arguments: {α : Type u_3} [CommMonoid α] {s : Multiset α} (p : α → Prop) (p_mul : ∀ (a b : α), p a → p b → p (a * b)) (hs : s ≠ ∅) (p_s : ∀ a ∈ s, p a)
Goal: p s.prod
-- Multiset.sum_induction_nonempty
@[to_additive]
theorem prod_induction_nonempty (p : α → Prop) (p_mul : ∀ a b, p a → p b → p (a * b)) (hs : s ≠ ∅)
    (p_s : ∀ a ∈ s, p a) : p s.prod 
Arguments: {α : Type u_3} [AddCommMonoid α] {s : Multiset α} (p : α → Prop) (p_mul : ∀ (a b : α), p a → p b → p (a + b)) (hs : s ≠ ∅) (p_s : ∀ a ∈ s, p a)
Goal: p s.sum
-- Multiset.prod_dvd_prod_of_le
theorem prod_dvd_prod_of_le (h : s ≤ t) : s.prod ∣ t.prod 
Arguments: {α : Type u_3} [CommMonoid α] {s t : Multiset α} (h : s ≤ t)
Goal: s.prod ∣ t.prod
-- map_multiset_prod
@[to_additive]
lemma _root_.map_multiset_prod [FunLike F α β] [MonoidHomClass F α β] (f : F) (s : Multiset α) :
    f s.prod = (s.map f).prod 
Arguments: {F : Type u_1} {α : Type u_3} {β : Type u_4} [CommMonoid α] [CommMonoid β] [FunLike F α β] [MonoidHomClass F α β] (f : F) (s : Multiset α)
Goal: f s.prod = (Multiset.map (⇑f) s).prod
-- map_multiset_sum
@[to_additive]
lemma _root_.map_multiset_prod [FunLike F α β] [MonoidHomClass F α β] (f : F) (s : Multiset α) :
    f s.prod = (s.map f).prod 
Arguments: {F : Type u_1} {α : Type u_3} {β : Type u_4} [AddCommMonoid α] [AddCommMonoid β] [FunLike F α β] [AddMonoidHomClass F α β] (f : F) (s : Multiset α)
Goal: f s.sum = (Multiset.map (⇑f) s).sum