ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
-- Finset.sum_range_tsub
theorem sum_range_tsub [CanonicallyOrderedAddCommMonoid α] [Sub α] [OrderedSub α]
    [ContravariantClass α α (· + ·) (· ≤ ·)] {f : ℕ → α} (h : Monotone f) (n : ℕ) :
    ∑ i ∈ range n, (f (i + 1) - f i) = f n - f 0 
Arguments: {α : Type u_3} [CanonicallyOrderedAddCommMonoid α] [Sub α] [OrderedSub α] [ContravariantClass α α (fun x x_1 => x + x_1) fun x x_1 => x ≤ x_1] {f : ℕ → α} (h : Monotone f) (n : ℕ)
Goal: ∑ i ∈ Finset.range n, (f (i + 1) - f i) = f n - f 0
-- Finset.prod_const
@[to_additive (attr := simp)]
theorem prod_const (b : β) : ∏ _x ∈ s, b = b ^ s.card 
Arguments: {α : Type u_3} {β : Type u_4} {s : Finset α} [CommMonoid β] (b : β)
Goal: ∏ _x ∈ s, b = b ^ s.card
-- Finset.sum_const
@[to_additive (attr := simp)]
theorem prod_const (b : β) : ∏ _x ∈ s, b = b ^ s.card 
Arguments: {α : Type u_3} {β : Type u_4} {s : Finset α} [AddCommMonoid β] (b : β)
Goal: ∑ _x ∈ s, b = s.card • b
-- Finset.sum_eq_card_nsmul
@[to_additive sum_eq_card_nsmul]
theorem prod_eq_pow_card {b : β} (hf : ∀ a ∈ s, f a = b) : ∏ a ∈ s, f a = b ^ s.card 
Arguments: {α : Type u_3} {β : Type u_4} {s : Finset α} {f : α → β} [AddCommMonoid β] {b : β} (hf : ∀ a ∈ s, f a = b)
Goal: ∑ a ∈ s, f a = s.card • b
-- Finset.prod_eq_pow_card
@[to_additive sum_eq_card_nsmul]
theorem prod_eq_pow_card {b : β} (hf : ∀ a ∈ s, f a = b) : ∏ a ∈ s, f a = b ^ s.card 
Arguments: {α : Type u_3} {β : Type u_4} {s : Finset α} {f : α → β} [CommMonoid β] {b : β} (hf : ∀ a ∈ s, f a = b)
Goal: ∏ a ∈ s, f a = b ^ s.card
-- Finset.card_nsmul_add_sum
@[to_additive card_nsmul_add_sum]
theorem pow_card_mul_prod {b : β} : b ^ s.card * ∏ a ∈ s, f a = ∏ a ∈ s, b * f a 
Arguments: {α : Type u_3} {β : Type u_4} {s : Finset α} {f : α → β} [AddCommMonoid β] {b : β}
Goal: s.card • b + ∑ a ∈ s, f a = ∑ a ∈ s, (b + f a)
-- Finset.pow_card_mul_prod
@[to_additive card_nsmul_add_sum]
theorem pow_card_mul_prod {b : β} : b ^ s.card * ∏ a ∈ s, f a = ∏ a ∈ s, b * f a 
Arguments: {α : Type u_3} {β : Type u_4} {s : Finset α} {f : α → β} [CommMonoid β] {b : β}
Goal: b ^ s.card * ∏ a ∈ s, f a = ∏ a ∈ s, b * f a
-- Finset.prod_mul_pow_card
@[to_additive sum_add_card_nsmul]
theorem prod_mul_pow_card {b : β} : (∏ a ∈ s, f a) * b ^ s.card = ∏ a ∈ s, f a * b 
Arguments: {α : Type u_3} {β : Type u_4} {s : Finset α} {f : α → β} [CommMonoid β] {b : β}
Goal: (∏ a ∈ s, f a) * b ^ s.card = ∏ a ∈ s, f a * b
-- Finset.sum_add_card_nsmul
@[to_additive sum_add_card_nsmul]
theorem prod_mul_pow_card {b : β} : (∏ a ∈ s, f a) * b ^ s.card = ∏ a ∈ s, f a * b 
Arguments: {α : Type u_3} {β : Type u_4} {s : Finset α} {f : α → β} [AddCommMonoid β] {b : β}
Goal: ∑ a ∈ s, f a + s.card • b = ∑ a ∈ s, (f a + b)
-- Finset.pow_eq_prod_const
@[to_additive]
theorem pow_eq_prod_const (b : β) : ∀ n, b ^ n = ∏ _k ∈ range n, b 
Arguments: {β : Type u_4} [CommMonoid β] (b : β) (n : ℕ)
Goal: b ^ n = ∏ _k ∈ Finset.range n, b
-- Finset.nsmul_eq_sum_const
@[to_additive]
theorem pow_eq_prod_const (b : β) : ∀ n, b ^ n = ∏ _k ∈ range n, b 
Arguments: {β : Type u_4} [AddCommMonoid β] (b : β) (n : ℕ)
Goal: n • b = ∑ _k ∈ Finset.range n, b
-- Finset.sum_nsmul
@[to_additive]
theorem prod_pow (s : Finset α) (n : ℕ) (f : α → β) : ∏ x ∈ s, f x ^ n = (∏ x ∈ s, f x) ^ n 
Arguments: {α : Type u_3} {β : Type u_4} [AddCommMonoid β] (s : Finset α) (n : ℕ) (f : α → β)
Goal: ∑ x ∈ s, n • f x = n • ∑ x ∈ s, f x
-- Finset.prod_pow
@[to_additive]
theorem prod_pow (s : Finset α) (n : ℕ) (f : α → β) : ∏ x ∈ s, f x ^ n = (∏ x ∈ s, f x) ^ n 
Arguments: {α : Type u_3} {β : Type u_4} [CommMonoid β] (s : Finset α) (n : ℕ) (f : α → β)
Goal: ∏ x ∈ s, f x ^ n = (∏ x ∈ s, f x) ^ n
-- Finset.prod_pow_eq_pow_sum
@[to_additive sum_nsmul_assoc]
lemma prod_pow_eq_pow_sum  (s : Finset ι) (f : ι → ℕ) (a : β) :
    ∏ i ∈ s, a ^ f i = a ^ ∑ i ∈ s, f i 
Arguments: {ι : Type u_1} {β : Type u_4} [CommMonoid β] (s : Finset ι) (f : ι → ℕ) (a : β)
Goal: ∏ i ∈ s, a ^ f i = a ^ ∑ i ∈ s, f i
-- Finset.sum_nsmul_assoc
@[to_additive sum_nsmul_assoc]
lemma prod_pow_eq_pow_sum  (s : Finset ι) (f : ι → ℕ) (a : β) :
    ∏ i ∈ s, a ^ f i = a ^ ∑ i ∈ s, f i 
Arguments: {ι : Type u_1} {β : Type u_4} [AddCommMonoid β] (s : Finset ι) (f : ι → ℕ) (a : β)
Goal: ∑ i ∈ s, f i • a = (∑ i ∈ s, f i) • a
-- Finset.sum_powersetCard
@[to_additive
"A sum over `Finset.powersetCard` which only depends on the size of the sets is constant."]
lemma prod_powersetCard (n : ℕ) (s : Finset α) (f : ℕ → β) :
    ∏ t ∈ powersetCard n s, f t.card = f n ^ s.card.choose n 
Arguments: {α : Type u_3} {β : Type u_4} [AddCommMonoid β] (n : ℕ) (s : Finset α) (f : ℕ → β)
Goal: ∑ t ∈ Finset.powersetCard n s, f t.card = s.card.choose n • f n
-- Finset.prod_powersetCard
@[to_additive
"A sum over `Finset.powersetCard` which only depends on the size of the sets is constant."]
lemma prod_powersetCard (n : ℕ) (s : Finset α) (f : ℕ → β) :
    ∏ t ∈ powersetCard n s, f t.card = f n ^ s.card.choose n 
Arguments: {α : Type u_3} {β : Type u_4} [CommMonoid β] (n : ℕ) (s : Finset α) (f : ℕ → β)
Goal: ∏ t ∈ Finset.powersetCard n s, f t.card = f n ^ s.card.choose n
-- Finset.sum_flip
@[to_additive]
theorem prod_flip {n : ℕ} (f : ℕ → β) :
    (∏ r ∈ range (n + 1), f (n - r)) = ∏ k ∈ range (n + 1), f k 
Arguments: {β : Type u_4} [AddCommMonoid β] {n : ℕ} (f : ℕ → β)
Goal: ∑ r ∈ Finset.range (n + 1), f (n - r) = ∑ k ∈ Finset.range (n + 1), f k
-- Finset.prod_flip
@[to_additive]
theorem prod_flip {n : ℕ} (f : ℕ → β) :
    (∏ r ∈ range (n + 1), f (n - r)) = ∏ k ∈ range (n + 1), f k 
Arguments: {β : Type u_4} [CommMonoid β] {n : ℕ} (f : ℕ → β)
Goal: ∏ r ∈ Finset.range (n + 1), f (n - r) = ∏ k ∈ Finset.range (n + 1), f k
-- Finset.sum_involution
@[to_additive]
theorem prod_involution {s : Finset α} {f : α → β} :
    ∀ (g : ∀ a ∈ s, α) (_ : ∀ a ha, f a * f (g a ha) = 1) (_ : ∀ a ha, f a ≠ 1 → g a ha ≠ a)
      (g_mem : ∀ a ha, g a ha ∈ s) (_ : ∀ a ha, g (g a ha) (g_mem a ha) = a),
      ∏ x ∈ s, f x = 1 
Arguments: {α : Type u_3} {β : Type u_4} [AddCommMonoid β] {s : Finset α} {f : α → β} (g : (a : α) → a ∈ s → α)
Goal: (∀ (a : α) (ha : a ∈ s), f a + f (g a ha) = 0) →
  (∀ (a : α) (ha : a ∈ s), f a ≠ 0 → g a ha ≠ a) →
    ∀ (g_mem : ∀ (a : α) (ha : a ∈ s), g a ha ∈ s), (∀ (a : α) (ha : a ∈ s), g (g a ha) ⋯ = a) → ∑ x ∈ s, f x = 0
-- Finset.prod_involution
@[to_additive]
theorem prod_involution {s : Finset α} {f : α → β} :
    ∀ (g : ∀ a ∈ s, α) (_ : ∀ a ha, f a * f (g a ha) = 1) (_ : ∀ a ha, f a ≠ 1 → g a ha ≠ a)
      (g_mem : ∀ a ha, g a ha ∈ s) (_ : ∀ a ha, g (g a ha) (g_mem a ha) = a),
      ∏ x ∈ s, f x = 1 
Arguments: {α : Type u_3} {β : Type u_4} [CommMonoid β] {s : Finset α} {f : α → β} (g : (a : α) → a ∈ s → α)
Goal: (∀ (a : α) (ha : a ∈ s), f a * f (g a ha) = 1) →
  (∀ (a : α) (ha : a ∈ s), f a ≠ 1 → g a ha ≠ a) →
    ∀ (g_mem : ∀ (a : α) (ha : a ∈ s), g a ha ∈ s), (∀ (a : α) (ha : a ∈ s), g (g a ha) ⋯ = a) → ∏ x ∈ s, f x = 1
-- Finset.prod_comp
@[to_additive "The sum of the composition of functions `f` and `g`, is the sum over `b ∈ s.image g`
of `f b` times of the cardinality of the fibre of `b`. See also `Finset.sum_image`."]
theorem prod_comp [DecidableEq γ] (f : γ → β) (g : α → γ) :
    ∏ a ∈ s, f (g a) = ∏ b ∈ s.image g, f b ^ (s.filter fun a => g a = b).card 
Arguments: {α : Type u_3} {β : Type u_4} {γ : Type u_5} {s : Finset α} [CommMonoid β] [DecidableEq γ] (f : γ → β) (g : α → γ)
Goal: ∏ a ∈ s, f (g a) = ∏ b ∈ Finset.image g s, f b ^ (Finset.filter (fun a => g a = b) s).card
-- Finset.sum_comp
@[to_additive "The sum of the composition of functions `f` and `g`, is the sum over `b ∈ s.image g`
of `f b` times of the cardinality of the fibre of `b`. See also `Finset.sum_image`."]
theorem prod_comp [DecidableEq γ] (f : γ → β) (g : α → γ) :
    ∏ a ∈ s, f (g a) = ∏ b ∈ s.image g, f b ^ (s.filter fun a => g a = b).card 
Arguments: {α : Type u_3} {β : Type u_4} {γ : Type u_5} {s : Finset α} [AddCommMonoid β] [DecidableEq γ] (f : γ → β) (g : α → γ)
Goal: ∑ a ∈ s, f (g a) = ∑ b ∈ Finset.image g s, (Finset.filter (fun a => g a = b) s).card • f b
-- Finset.prod_piecewise
@[to_additive]
theorem prod_piecewise [DecidableEq α] (s t : Finset α) (f g : α → β) :
    (∏ x ∈ s, (t.piecewise f g) x) = (∏ x ∈ s ∩ t, f x) * ∏ x ∈ s \ t, g x 
Arguments: {α : Type u_3} {β : Type u_4} [CommMonoid β] [DecidableEq α] (s t : Finset α) (f g : α → β)
Goal: ∏ x ∈ s, t.piecewise f g x = (∏ x ∈ s ∩ t, f x) * ∏ x ∈ s \ t, g x
-- Finset.sum_piecewise
@[to_additive]
theorem prod_piecewise [DecidableEq α] (s t : Finset α) (f g : α → β) :
    (∏ x ∈ s, (t.piecewise f g) x) = (∏ x ∈ s ∩ t, f x) * ∏ x ∈ s \ t, g x 
Arguments: {α : Type u_3} {β : Type u_4} [AddCommMonoid β] [DecidableEq α] (s t : Finset α) (f g : α → β)
Goal: ∑ x ∈ s, t.piecewise f g x = ∑ x ∈ s ∩ t, f x + ∑ x ∈ s \ t, g x
-- Finset.sum_inter_add_sum_diff
@[to_additive]
theorem prod_inter_mul_prod_diff [DecidableEq α] (s t : Finset α) (f : α → β) :
    (∏ x ∈ s ∩ t, f x) * ∏ x ∈ s \ t, f x = ∏ x ∈ s, f x 
Arguments: {α : Type u_3} {β : Type u_4} [AddCommMonoid β] [DecidableEq α] (s t : Finset α) (f : α → β)
Goal: ∑ x ∈ s ∩ t, f x + ∑ x ∈ s \ t, f x = ∑ x ∈ s, f x
-- Finset.prod_inter_mul_prod_diff
@[to_additive]
theorem prod_inter_mul_prod_diff [DecidableEq α] (s t : Finset α) (f : α → β) :
    (∏ x ∈ s ∩ t, f x) * ∏ x ∈ s \ t, f x = ∏ x ∈ s, f x 
Arguments: {α : Type u_3} {β : Type u_4} [CommMonoid β] [DecidableEq α] (s t : Finset α) (f : α → β)
Goal: (∏ x ∈ s ∩ t, f x) * ∏ x ∈ s \ t, f x = ∏ x ∈ s, f x
-- Finset.prod_eq_mul_prod_diff_singleton
@[to_additive]
theorem prod_eq_mul_prod_diff_singleton [DecidableEq α] {s : Finset α} {i : α} (h : i ∈ s)
    (f : α → β) : ∏ x ∈ s, f x = f i * ∏ x ∈ s \ {i}, f x 
Arguments: {α : Type u_3} {β : Type u_4} [CommMonoid β] [DecidableEq α] {s : Finset α} {i : α} (h : i ∈ s) (f : α → β)
Goal: ∏ x ∈ s, f x = f i * ∏ x ∈ s \ {i}, f x
-- Finset.sum_eq_add_sum_diff_singleton
@[to_additive]
theorem prod_eq_mul_prod_diff_singleton [DecidableEq α] {s : Finset α} {i : α} (h : i ∈ s)
    (f : α → β) : ∏ x ∈ s, f x = f i * ∏ x ∈ s \ {i}, f x 
Arguments: {α : Type u_3} {β : Type u_4} [AddCommMonoid β] [DecidableEq α] {s : Finset α} {i : α} (h : i ∈ s) (f : α → β)
Goal: ∑ x ∈ s, f x = f i + ∑ x ∈ s \ {i}, f x
-- Finset.sum_eq_sum_diff_singleton_add
@[to_additive]
theorem prod_eq_prod_diff_singleton_mul [DecidableEq α] {s : Finset α} {i : α} (h : i ∈ s)
    (f : α → β) : ∏ x ∈ s, f x = (∏ x ∈ s \ {i}, f x) * f i 
Arguments: {α : Type u_3} {β : Type u_4} [AddCommMonoid β] [DecidableEq α] {s : Finset α} {i : α} (h : i ∈ s) (f : α → β)
Goal: ∑ x ∈ s, f x = ∑ x ∈ s \ {i}, f x + f i
-- Finset.prod_eq_prod_diff_singleton_mul
@[to_additive]
theorem prod_eq_prod_diff_singleton_mul [DecidableEq α] {s : Finset α} {i : α} (h : i ∈ s)
    (f : α → β) : ∏ x ∈ s, f x = (∏ x ∈ s \ {i}, f x) * f i 
Arguments: {α : Type u_3} {β : Type u_4} [CommMonoid β] [DecidableEq α] {s : Finset α} {i : α} (h : i ∈ s) (f : α → β)
Goal: ∏ x ∈ s, f x = (∏ x ∈ s \ {i}, f x) * f i
-- Fintype.prod_eq_mul_prod_compl
@[to_additive]
theorem _root_.Fintype.prod_eq_mul_prod_compl [DecidableEq α] [Fintype α] (a : α) (f : α → β) :
    ∏ i, f i = f a * ∏ i ∈ {a}ᶜ, f i 
Arguments: {α : Type u_3} {β : Type u_4} [CommMonoid β] [DecidableEq α] [Fintype α] (a : α) (f : α → β)
Goal: ∏ i : α, f i = f a * ∏ i ∈ {a}ᶜ, f i
-- Fintype.sum_eq_add_sum_compl
@[to_additive]
theorem _root_.Fintype.prod_eq_mul_prod_compl [DecidableEq α] [Fintype α] (a : α) (f : α → β) :
    ∏ i, f i = f a * ∏ i ∈ {a}ᶜ, f i 
Arguments: {α : Type u_3} {β : Type u_4} [AddCommMonoid β] [DecidableEq α] [Fintype α] (a : α) (f : α → β)
Goal: ∑ i : α, f i = f a + ∑ i ∈ {a}ᶜ, f i
-- Fintype.prod_eq_prod_compl_mul
@[to_additive]
theorem _root_.Fintype.prod_eq_prod_compl_mul [DecidableEq α] [Fintype α] (a : α) (f : α → β) :
    ∏ i, f i = (∏ i ∈ {a}ᶜ, f i) * f a 
Arguments: {α : Type u_3} {β : Type u_4} [CommMonoid β] [DecidableEq α] [Fintype α] (a : α) (f : α → β)
Goal: ∏ i : α, f i = (∏ i ∈ {a}ᶜ, f i) * f a
-- Fintype.sum_eq_sum_compl_add
@[to_additive]
theorem _root_.Fintype.prod_eq_prod_compl_mul [DecidableEq α] [Fintype α] (a : α) (f : α → β) :
    ∏ i, f i = (∏ i ∈ {a}ᶜ, f i) * f a 
Arguments: {α : Type u_3} {β : Type u_4} [AddCommMonoid β] [DecidableEq α] [Fintype α] (a : α) (f : α → β)
Goal: ∑ i : α, f i = ∑ i ∈ {a}ᶜ, f i + f a
-- Finset.dvd_prod_of_mem
theorem dvd_prod_of_mem (f : α → β) {a : α} {s : Finset α} (ha : a ∈ s) : f a ∣ ∏ i ∈ s, f i 
Arguments: {α : Type u_3} {β : Type u_4} [CommMonoid β] (f : α → β) {a : α} {s : Finset α} (ha : a ∈ s)
Goal: f a ∣ ∏ i ∈ s, f i
-- Finset.sum_partition
@[to_additive "A sum can be partitioned into a sum of sums, each equivalent under a setoid."]
theorem prod_partition (R : Setoid α) [DecidableRel R.r] :
    ∏ x ∈ s, f x = ∏ xbar ∈ s.image Quotient.mk'', ∏ y ∈ s.filter (⟦·⟧ = xbar), f y 
Arguments: {α : Type u_3} {β : Type u_4} {s : Finset α} {f : α → β} [AddCommMonoid β] (R : Setoid α) [DecidableRel Setoid.r]
Goal: ∑ x ∈ s, f x = ∑ xbar ∈ Finset.image Quotient.mk'' s, ∑ y ∈ Finset.filter (fun x => ⟦x⟧ = xbar) s, f y
-- Finset.prod_partition
@[to_additive "A sum can be partitioned into a sum of sums, each equivalent under a setoid."]
theorem prod_partition (R : Setoid α) [DecidableRel R.r] :
    ∏ x ∈ s, f x = ∏ xbar ∈ s.image Quotient.mk'', ∏ y ∈ s.filter (⟦·⟧ = xbar), f y 
Arguments: {α : Type u_3} {β : Type u_4} {s : Finset α} {f : α → β} [CommMonoid β] (R : Setoid α) [DecidableRel Setoid.r]
Goal: ∏ x ∈ s, f x = ∏ xbar ∈ Finset.image Quotient.mk'' s, ∏ y ∈ Finset.filter (fun x => ⟦x⟧ = xbar) s, f y
-- Finset.sum_cancels_of_partition_cancels
@[to_additive "If we can partition a sum into subsets that cancel out, then the whole sum cancels."]
theorem prod_cancels_of_partition_cancels (R : Setoid α) [DecidableRel R.r]
    (h : ∀ x ∈ s, ∏ a ∈ s.filter fun y => y ≈ x, f a = 1) : ∏ x ∈ s, f x = 1 
Arguments: {α : Type u_3} {β : Type u_4} {s : Finset α} {f : α → β} [AddCommMonoid β] (R : Setoid α) [DecidableRel Setoid.r] (h : ∀ x ∈ s, ∑ a ∈ Finset.filter (fun y => y ≈ x) s, f a = 0)
Goal: ∑ x ∈ s, f x = 0
-- Finset.prod_cancels_of_partition_cancels
@[to_additive "If we can partition a sum into subsets that cancel out, then the whole sum cancels."]
theorem prod_cancels_of_partition_cancels (R : Setoid α) [DecidableRel R.r]
    (h : ∀ x ∈ s, ∏ a ∈ s.filter fun y => y ≈ x, f a = 1) : ∏ x ∈ s, f x = 1 
Arguments: {α : Type u_3} {β : Type u_4} {s : Finset α} {f : α → β} [CommMonoid β] (R : Setoid α) [DecidableRel Setoid.r] (h : ∀ x ∈ s, ∏ a ∈ Finset.filter (fun y => y ≈ x) s, f a = 1)
Goal: ∏ x ∈ s, f x = 1
-- Finset.sum_update_of_not_mem
@[to_additive]
theorem prod_update_of_not_mem [DecidableEq α] {s : Finset α} {i : α} (h : i ∉ s) (f : α → β)
    (b : β) : ∏ x ∈ s, Function.update f i b x = ∏ x ∈ s, f x 
Arguments: {α : Type u_3} {β : Type u_4} [AddCommMonoid β] [DecidableEq α] {s : Finset α} {i : α} (h : i ∉ s) (f : α → β) (b : β)
Goal: ∑ x ∈ s, Function.update f i b x = ∑ x ∈ s, f x
-- Finset.prod_update_of_not_mem
@[to_additive]
theorem prod_update_of_not_mem [DecidableEq α] {s : Finset α} {i : α} (h : i ∉ s) (f : α → β)
    (b : β) : ∏ x ∈ s, Function.update f i b x = ∏ x ∈ s, f x 
Arguments: {α : Type u_3} {β : Type u_4} [CommMonoid β] [DecidableEq α] {s : Finset α} {i : α} (h : i ∉ s) (f : α → β) (b : β)
Goal: ∏ x ∈ s, Function.update f i b x = ∏ x ∈ s, f x
-- Finset.sum_update_of_mem
@[to_additive]
theorem prod_update_of_mem [DecidableEq α] {s : Finset α} {i : α} (h : i ∈ s) (f : α → β) (b : β) :
    ∏ x ∈ s, Function.update f i b x = b * ∏ x ∈ s \ singleton i, f x 
Arguments: {α : Type u_3} {β : Type u_4} [AddCommMonoid β] [DecidableEq α] {s : Finset α} {i : α} (h : i ∈ s) (f : α → β) (b : β)
Goal: ∑ x ∈ s, Function.update f i b x = b + ∑ x ∈ s \ {i}, f x
-- Finset.prod_update_of_mem
@[to_additive]
theorem prod_update_of_mem [DecidableEq α] {s : Finset α} {i : α} (h : i ∈ s) (f : α → β) (b : β) :
    ∏ x ∈ s, Function.update f i b x = b * ∏ x ∈ s \ singleton i, f x 
Arguments: {α : Type u_3} {β : Type u_4} [CommMonoid β] [DecidableEq α] {s : Finset α} {i : α} (h : i ∈ s) (f : α → β) (b : β)
Goal: ∏ x ∈ s, Function.update f i b x = b * ∏ x ∈ s \ {i}, f x
-- Finset.eq_of_card_le_one_of_prod_eq
@[to_additive eq_of_card_le_one_of_sum_eq "If a sum of a `Finset` of size at most 1 has a given
value, so do the terms in that sum."]
theorem eq_of_card_le_one_of_prod_eq {s : Finset α} (hc : s.card ≤ 1) {f : α → β} {b : β}
    (h : ∏ x ∈ s, f x = b) : ∀ x ∈ s, f x = b 
Arguments: {α : Type u_3} {β : Type u_4} [CommMonoid β] {s : Finset α} (hc : s.card ≤ 1) {f : α → β} {b : β} (h : ∏ x ∈ s, f x = b) (x : α)
Goal: x ∈ s → f x = b
-- Finset.eq_of_card_le_one_of_sum_eq
@[to_additive eq_of_card_le_one_of_sum_eq "If a sum of a `Finset` of size at most 1 has a given
value, so do the terms in that sum."]
theorem eq_of_card_le_one_of_prod_eq {s : Finset α} (hc : s.card ≤ 1) {f : α → β} {b : β}
    (h : ∏ x ∈ s, f x = b) : ∀ x ∈ s, f x = b 
Arguments: {α : Type u_3} {β : Type u_4} [AddCommMonoid β] {s : Finset α} (hc : s.card ≤ 1) {f : α → β} {b : β} (h : ∑ x ∈ s, f x = b) (x : α)
Goal: x ∈ s → f x = b
-- Finset.mul_prod_erase
@[to_additive "Taking a sum over `s : Finset α` is the same as adding the value on a single element
`f a` to the sum over `s.erase a`.

See `Multiset.sum_map_erase` for the `Multiset` version."]
theorem mul_prod_erase [DecidableEq α] (s : Finset α) (f : α → β) {a : α} (h : a ∈ s) :
    (f a * ∏ x ∈ s.erase a, f x) = ∏ x ∈ s, f x 
Arguments: {α : Type u_3} {β : Type u_4} [CommMonoid β] [DecidableEq α] (s : Finset α) (f : α → β) {a : α} (h : a ∈ s)
Goal: f a * ∏ x ∈ s.erase a, f x = ∏ x ∈ s, f x
-- Finset.add_sum_erase
@[to_additive "Taking a sum over `s : Finset α` is the same as adding the value on a single element
`f a` to the sum over `s.erase a`.

See `Multiset.sum_map_erase` for the `Multiset` version."]
theorem mul_prod_erase [DecidableEq α] (s : Finset α) (f : α → β) {a : α} (h : a ∈ s) :
    (f a * ∏ x ∈ s.erase a, f x) = ∏ x ∈ s, f x 
Arguments: {α : Type u_3} {β : Type u_4} [AddCommMonoid β] [DecidableEq α] (s : Finset α) (f : α → β) {a : α} (h : a ∈ s)
Goal: f a + ∑ x ∈ s.erase a, f x = ∑ x ∈ s, f x
-- Finset.prod_erase_mul
@[to_additive "A variant of `Finset.add_sum_erase` with the addition swapped."]
theorem prod_erase_mul [DecidableEq α] (s : Finset α) (f : α → β) {a : α} (h : a ∈ s) :
    (∏ x ∈ s.erase a, f x) * f a = ∏ x ∈ s, f x 
Arguments: {α : Type u_3} {β : Type u_4} [CommMonoid β] [DecidableEq α] (s : Finset α) (f : α → β) {a : α} (h : a ∈ s)
Goal: (∏ x ∈ s.erase a, f x) * f a = ∏ x ∈ s, f x
-- Finset.sum_erase_add
@[to_additive "A variant of `Finset.add_sum_erase` with the addition swapped."]
theorem prod_erase_mul [DecidableEq α] (s : Finset α) (f : α → β) {a : α} (h : a ∈ s) :
    (∏ x ∈ s.erase a, f x) * f a = ∏ x ∈ s, f x 
Arguments: {α : Type u_3} {β : Type u_4} [AddCommMonoid β] [DecidableEq α] (s : Finset α) (f : α → β) {a : α} (h : a ∈ s)
Goal: ∑ x ∈ s.erase a, f x + f a = ∑ x ∈ s, f x
-- Finset.sum_erase
@[to_additive "If a function applied at a point is 0, a sum is unchanged by
removing that point, if present, from a `Finset`."]
theorem prod_erase [DecidableEq α] (s : Finset α) {f : α → β} {a : α} (h : f a = 1) :
    ∏ x ∈ s.erase a, f x = ∏ x ∈ s, f x 
Arguments: {α : Type u_3} {β : Type u_4} [AddCommMonoid β] [DecidableEq α] (s : Finset α) {f : α → β} {a : α} (h : f a = 0)
Goal: ∑ x ∈ s.erase a, f x = ∑ x ∈ s, f x
-- Finset.prod_erase
@[to_additive "If a function applied at a point is 0, a sum is unchanged by
removing that point, if present, from a `Finset`."]
theorem prod_erase [DecidableEq α] (s : Finset α) {f : α → β} {a : α} (h : f a = 1) :
    ∏ x ∈ s.erase a, f x = ∏ x ∈ s, f x 
Arguments: {α : Type u_3} {β : Type u_4} [CommMonoid β] [DecidableEq α] (s : Finset α) {f : α → β} {a : α} (h : f a = 1)
Goal: ∏ x ∈ s.erase a, f x = ∏ x ∈ s, f x
-- Finset.sum_ite_zero
@[to_additive "See also `Finset.sum_boole`."]
theorem prod_ite_one (s : Finset α) (p : α → Prop) [DecidablePred p]
    (h : ∀ i ∈ s, ∀ j ∈ s, p i → p j → i = j) (a : β) :
    ∏ i ∈ s, ite (p i) a 1 = ite (∃ i ∈ s, p i) a 1 
Arguments: {α : Type u_3} {β : Type u_4} [AddCommMonoid β] (s : Finset α) (p : α → Prop) [DecidablePred p] (h : ∀ i ∈ s, ∀ j ∈ s, p i → p j → i = j) (a : β)
Goal: (∑ i ∈ s, if p i then a else 0) = if ∃ i ∈ s, p i then a else 0
-- Finset.prod_ite_one
@[to_additive "See also `Finset.sum_boole`."]
theorem prod_ite_one (s : Finset α) (p : α → Prop) [DecidablePred p]
    (h : ∀ i ∈ s, ∀ j ∈ s, p i → p j → i = j) (a : β) :
    ∏ i ∈ s, ite (p i) a 1 = ite (∃ i ∈ s, p i) a 1 
Arguments: {α : Type u_3} {β : Type u_4} [CommMonoid β] (s : Finset α) (p : α → Prop) [DecidablePred p] (h : ∀ i ∈ s, ∀ j ∈ s, p i → p j → i = j) (a : β)
Goal: (∏ i ∈ s, if p i then a else 1) = if ∃ i ∈ s, p i then a else 1
-- Finset.prod_erase_lt_of_one_lt
@[to_additive]
theorem prod_erase_lt_of_one_lt {γ : Type*} [DecidableEq α] [OrderedCommMonoid γ]
    [CovariantClass γ γ (· * ·) (· < ·)] {s : Finset α} {d : α} (hd : d ∈ s) {f : α → γ}
    (hdf : 1 < f d) : ∏ m ∈ s.erase d, f m < ∏ m ∈ s, f m 
Arguments: {α : Type u_3} {γ : Type u_6} [DecidableEq α] [OrderedCommMonoid γ] [CovariantClass γ γ (fun x x_1 => x * x_1) fun x x_1 => x < x_1] {s : Finset α} {d : α} (hd : d ∈ s) {f : α → γ} (hdf : 1 < f d)
Goal: ∏ m ∈ s.erase d, f m < ∏ m ∈ s, f m
-- Finset.sum_erase_lt_of_pos
@[to_additive]
theorem prod_erase_lt_of_one_lt {γ : Type*} [DecidableEq α] [OrderedCommMonoid γ]
    [CovariantClass γ γ (· * ·) (· < ·)] {s : Finset α} {d : α} (hd : d ∈ s) {f : α → γ}
    (hdf : 1 < f d) : ∏ m ∈ s.erase d, f m < ∏ m ∈ s, f m 
Arguments: {α : Type u_3} {γ : Type u_6} [DecidableEq α] [OrderedAddCommMonoid γ] [CovariantClass γ γ (fun x x_1 => x + x_1) fun x x_1 => x < x_1] {s : Finset α} {d : α} (hd : d ∈ s) {f : α → γ} (hdf : 0 < f d)
Goal: ∑ m ∈ s.erase d, f m < ∑ m ∈ s, f m
-- Finset.eq_zero_of_sum_eq_zero
@[to_additive "If a sum is 0 and the function is 0 except possibly at one
point, it is 0 everywhere on the `Finset`."]
theorem eq_one_of_prod_eq_one {s : Finset α} {f : α → β} {a : α} (hp : ∏ x ∈ s, f x = 1)
    (h1 : ∀ x ∈ s, x ≠ a → f x = 1) : ∀ x ∈ s, f x = 1 
Arguments: {α : Type u_3} {β : Type u_4} [AddCommMonoid β] {s : Finset α} {f : α → β} {a : α} (hp : ∑ x ∈ s, f x = 0) (h1 : ∀ x ∈ s, x ≠ a → f x = 0) (x : α)
Goal: x ∈ s → f x = 0
-- Finset.eq_one_of_prod_eq_one
@[to_additive "If a sum is 0 and the function is 0 except possibly at one
point, it is 0 everywhere on the `Finset`."]
theorem eq_one_of_prod_eq_one {s : Finset α} {f : α → β} {a : α} (hp : ∏ x ∈ s, f x = 1)
    (h1 : ∀ x ∈ s, x ≠ a → f x = 1) : ∀ x ∈ s, f x = 1 
Arguments: {α : Type u_3} {β : Type u_4} [CommMonoid β] {s : Finset α} {f : α → β} {a : α} (hp : ∏ x ∈ s, f x = 1) (h1 : ∀ x ∈ s, x ≠ a → f x = 1) (x : α)
Goal: x ∈ s → f x = 1
-- Finset.sum_boole_nsmul
@[to_additive sum_boole_nsmul]
theorem prod_pow_boole [DecidableEq α] (s : Finset α) (f : α → β) (a : α) :
    (∏ x ∈ s, f x ^ ite (a = x) 1 0) = ite (a ∈ s) (f a) 1 
Arguments: {α : Type u_3} {β : Type u_4} [AddCommMonoid β] [DecidableEq α] (s : Finset α) (f : α → β) (a : α)
Goal: ∑ x ∈ s, (if a = x then 1 else 0) • f x = if a ∈ s then f a else 0
-- Finset.prod_pow_boole
@[to_additive sum_boole_nsmul]
theorem prod_pow_boole [DecidableEq α] (s : Finset α) (f : α → β) (a : α) :
    (∏ x ∈ s, f x ^ ite (a = x) 1 0) = ite (a ∈ s) (f a) 1 
Arguments: {α : Type u_3} {β : Type u_4} [CommMonoid β] [DecidableEq α] (s : Finset α) (f : α → β) (a : α)
Goal: (∏ x ∈ s, f x ^ if a = x then 1 else 0) = if a ∈ s then f a else 1
-- Finset.prod_dvd_prod_of_dvd
theorem prod_dvd_prod_of_dvd {S : Finset α} (g1 g2 : α → β) (h : ∀ a ∈ S, g1 a ∣ g2 a) :
    S.prod g1 ∣ S.prod g2 
Arguments: {α : Type u_3} {β : Type u_4} [CommMonoid β] {S : Finset α} (g1 g2 : α → β) (h : ∀ a ∈ S, g1 a ∣ g2 a)
Goal: S.prod g1 ∣ S.prod g2
-- Finset.prod_dvd_prod_of_subset
theorem prod_dvd_prod_of_subset {ι M : Type*} [CommMonoid M] (s t : Finset ι) (f : ι → M)
    (h : s ⊆ t) : (∏ i ∈ s, f i) ∣ ∏ i ∈ t, f i 
Arguments: {ι : Type u_6} {M : Type u_7} [CommMonoid M] (s t : Finset ι) (f : ι → M) (h : s ⊆ t)
Goal: ∏ i ∈ s, f i ∣ ∏ i ∈ t, f i