ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
-- finprod_mem_univ
@[to_additive]
theorem finprod_mem_univ (f : α → M) : ∏ᶠ i ∈ @Set.univ α, f i = ∏ᶠ i : α, f i 
Arguments: {α : Type u_1} {M : Type u_5} [CommMonoid M] (f : α → M)
Goal: ∏ᶠ (i : α) (_ : i ∈ Set.univ), f i = ∏ᶠ (i : α), f i
-- finprod_mem_congr
@[to_additive]
theorem finprod_mem_congr (h₀ : s = t) (h₁ : ∀ x ∈ t, f x = g x) :
    ∏ᶠ i ∈ s, f i = ∏ᶠ i ∈ t, g i 
Arguments: {α : Type u_1} {M : Type u_5} [CommMonoid M] {f g : α → M} {s t : Set α} (h₀ : s = t) (h₁ : ∀ x ∈ t, f x = g x)
Goal: ∏ᶠ (i : α) (_ : i ∈ s), f i = ∏ᶠ (i : α) (_ : i ∈ t), g i
-- finsum_mem_congr
@[to_additive]
theorem finprod_mem_congr (h₀ : s = t) (h₁ : ∀ x ∈ t, f x = g x) :
    ∏ᶠ i ∈ s, f i = ∏ᶠ i ∈ t, g i 
Arguments: {α : Type u_1} {M : Type u_5} [AddCommMonoid M] {f g : α → M} {s t : Set α} (h₀ : s = t) (h₁ : ∀ x ∈ t, f x = g x)
Goal: ∑ᶠ (i : α) (_ : i ∈ s), f i = ∑ᶠ (i : α) (_ : i ∈ t), g i
-- finprod_eq_one_of_forall_eq_one
@[to_additive]
theorem finprod_eq_one_of_forall_eq_one {f : α → M} (h : ∀ x, f x = 1) : ∏ᶠ i, f i = 1 
Arguments: {α : Type u_1} {M : Type u_5} [CommMonoid M] {f : α → M} (h : ∀ (x : α), f x = 1)
Goal: ∏ᶠ (i : α), f i = 1
-- finsum_eq_zero_of_forall_eq_zero
@[to_additive]
theorem finprod_eq_one_of_forall_eq_one {f : α → M} (h : ∀ x, f x = 1) : ∏ᶠ i, f i = 1 
Arguments: {α : Type u_1} {M : Type u_5} [AddCommMonoid M] {f : α → M} (h : ∀ (x : α), f x = 0)
Goal: ∑ᶠ (i : α), f i = 0
-- one_lt_finprod'
@[to_additive finsum_pos']
theorem one_lt_finprod' {M : Type*} [OrderedCancelCommMonoid M] {f : ι → M}
    (h : ∀ i, 1 ≤ f i) (h' : ∃ i, 1 < f i) (hf : (mulSupport f).Finite) : 1 < ∏ᶠ i, f i 
Arguments: {ι : Type u_3} {M : Type u_7} [OrderedCancelCommMonoid M] {f : ι → M} (h : ∀ (i : ι), 1 ≤ f i) (h' : ∃ i, 1 < f i) (hf : (Function.mulSupport f).Finite)
Goal: 1 < ∏ᶠ (i : ι), f i
-- finsum_pos'
@[to_additive finsum_pos']
theorem one_lt_finprod' {M : Type*} [OrderedCancelCommMonoid M] {f : ι → M}
    (h : ∀ i, 1 ≤ f i) (h' : ∃ i, 1 < f i) (hf : (mulSupport f).Finite) : 1 < ∏ᶠ i, f i 
Arguments: {ι : Type u_3} {M : Type u_7} [OrderedCancelAddCommMonoid M] {f : ι → M} (h : ∀ (i : ι), 0 ≤ f i) (h' : ∃ i, 0 < f i) (hf : (Function.support f).Finite)
Goal: 0 < ∑ᶠ (i : ι), f i
-- finprod_mul_distrib
@[to_additive
      "If the additive supports of `f` and `g` are finite, then the sum of `f i + g i`
      equals the sum of `f i` plus the sum of `g i`."]
theorem finprod_mul_distrib (hf : (mulSupport f).Finite) (hg : (mulSupport g).Finite) :
    ∏ᶠ i, f i * g i = (∏ᶠ i, f i) * ∏ᶠ i, g i 
Arguments: {α : Type u_1} {M : Type u_5} [CommMonoid M] {f g : α → M} (hf : (Function.mulSupport f).Finite) (hg : (Function.mulSupport g).Finite)
Goal: ∏ᶠ (i : α), f i * g i = (∏ᶠ (i : α), f i) * ∏ᶠ (i : α), g i
-- finsum_add_distrib
@[to_additive
      "If the additive supports of `f` and `g` are finite, then the sum of `f i + g i`
      equals the sum of `f i` plus the sum of `g i`."]
theorem finprod_mul_distrib (hf : (mulSupport f).Finite) (hg : (mulSupport g).Finite) :
    ∏ᶠ i, f i * g i = (∏ᶠ i, f i) * ∏ᶠ i, g i 
Arguments: {α : Type u_1} {M : Type u_5} [AddCommMonoid M] {f g : α → M} (hf : (Function.support f).Finite) (hg : (Function.support g).Finite)
Goal: ∑ᶠ (i : α), (f i + g i) = ∑ᶠ (i : α), f i + ∑ᶠ (i : α), g i
-- finprod_div_distrib
@[to_additive
      "If the additive supports of `f` and `g` are finite, then the sum of `f i - g i`
      equals the sum of `f i` minus the sum of `g i`."]
theorem finprod_div_distrib [DivisionCommMonoid G] {f g : α → G} (hf : (mulSupport f).Finite)
    (hg : (mulSupport g).Finite) : ∏ᶠ i, f i / g i = (∏ᶠ i, f i) / ∏ᶠ i, g i 
Arguments: {α : Type u_1} {G : Type u_4} [DivisionCommMonoid G] {f g : α → G} (hf : (Function.mulSupport f).Finite) (hg : (Function.mulSupport g).Finite)
Goal: ∏ᶠ (i : α), f i / g i = (∏ᶠ (i : α), f i) / ∏ᶠ (i : α), g i
-- finsum_sub_distrib
@[to_additive
      "If the additive supports of `f` and `g` are finite, then the sum of `f i - g i`
      equals the sum of `f i` minus the sum of `g i`."]
theorem finprod_div_distrib [DivisionCommMonoid G] {f g : α → G} (hf : (mulSupport f).Finite)
    (hg : (mulSupport g).Finite) : ∏ᶠ i, f i / g i = (∏ᶠ i, f i) / ∏ᶠ i, g i 
Arguments: {α : Type u_1} {G : Type u_4} [SubtractionCommMonoid G] {f g : α → G} (hf : (Function.support f).Finite) (hg : (Function.support g).Finite)
Goal: ∑ᶠ (i : α), (f i - g i) = ∑ᶠ (i : α), f i - ∑ᶠ (i : α), g i
-- finsum_mem_add_distrib'
@[to_additive
      "A more general version of `finsum_mem_add_distrib` that only requires `s ∩ support f`
      and `s ∩ support g` rather than `s` to be finite."]
theorem finprod_mem_mul_distrib' (hf : (s ∩ mulSupport f).Finite) (hg : (s ∩ mulSupport g).Finite) :
    ∏ᶠ i ∈ s, f i * g i = (∏ᶠ i ∈ s, f i) * ∏ᶠ i ∈ s, g i 
Arguments: {α : Type u_1} {M : Type u_5} [AddCommMonoid M] {f g : α → M} {s : Set α} (hf : (s ∩ Function.support f).Finite) (hg : (s ∩ Function.support g).Finite)
Goal: ∑ᶠ (i : α) (_ : i ∈ s), (f i + g i) = ∑ᶠ (i : α) (_ : i ∈ s), f i + ∑ᶠ (i : α) (_ : i ∈ s), g i
-- finprod_mem_mul_distrib'
@[to_additive
      "A more general version of `finsum_mem_add_distrib` that only requires `s ∩ support f`
      and `s ∩ support g` rather than `s` to be finite."]
theorem finprod_mem_mul_distrib' (hf : (s ∩ mulSupport f).Finite) (hg : (s ∩ mulSupport g).Finite) :
    ∏ᶠ i ∈ s, f i * g i = (∏ᶠ i ∈ s, f i) * ∏ᶠ i ∈ s, g i 
Arguments: {α : Type u_1} {M : Type u_5} [CommMonoid M] {f g : α → M} {s : Set α} (hf : (s ∩ Function.mulSupport f).Finite) (hg : (s ∩ Function.mulSupport g).Finite)
Goal: ∏ᶠ (i : α) (_ : i ∈ s), f i * g i = (∏ᶠ (i : α) (_ : i ∈ s), f i) * ∏ᶠ (i : α) (_ : i ∈ s), g i
-- finsum_mem_zero
@[to_additive "The sum of the constant function `0` over any set equals `0`."]
theorem finprod_mem_one (s : Set α) : (∏ᶠ i ∈ s, (1 : M)) = 1 
Arguments: {α : Type u_1} {M : Type u_5} [AddCommMonoid M] (s : Set α)
Goal: ∑ᶠ (i : α) (_ : i ∈ s), 0 = 0
-- finprod_mem_one
@[to_additive "The sum of the constant function `0` over any set equals `0`."]
theorem finprod_mem_one (s : Set α) : (∏ᶠ i ∈ s, (1 : M)) = 1 
Arguments: {α : Type u_1} {M : Type u_5} [CommMonoid M] (s : Set α)
Goal: ∏ᶠ (i : α) (_ : i ∈ s), 1 = 1
-- finsum_mem_of_eqOn_zero
@[to_additive
      "If a function `f` equals `0` on a set `s`, then the product of `f i` over `i ∈ s`
      equals `0`."]
theorem finprod_mem_of_eqOn_one (hf : s.EqOn f 1) : ∏ᶠ i ∈ s, f i = 1 
Arguments: {α : Type u_1} {M : Type u_5} [AddCommMonoid M] {f : α → M} {s : Set α} (hf : Set.EqOn f 0 s)
Goal: ∑ᶠ (i : α) (_ : i ∈ s), f i = 0
-- finprod_mem_of_eqOn_one
@[to_additive
      "If a function `f` equals `0` on a set `s`, then the product of `f i` over `i ∈ s`
      equals `0`."]
theorem finprod_mem_of_eqOn_one (hf : s.EqOn f 1) : ∏ᶠ i ∈ s, f i = 1 
Arguments: {α : Type u_1} {M : Type u_5} [CommMonoid M] {f : α → M} {s : Set α} (hf : Set.EqOn f 1 s)
Goal: ∏ᶠ (i : α) (_ : i ∈ s), f i = 1
-- exists_ne_zero_of_finsum_mem_ne_zero
@[to_additive
      "If the product of `f i` over `i ∈ s` is not equal to `0`, then there is some `x ∈ s`
      such that `f x ≠ 0`."]
theorem exists_ne_one_of_finprod_mem_ne_one (h : ∏ᶠ i ∈ s, f i ≠ 1) : ∃ x ∈ s, f x ≠ 1 
Arguments: {α : Type u_1} {M : Type u_5} [AddCommMonoid M] {f : α → M} {s : Set α} (h : ∑ᶠ (i : α) (_ : i ∈ s), f i ≠ 0)
Goal: ∃ x ∈ s, f x ≠ 0
-- exists_ne_one_of_finprod_mem_ne_one
@[to_additive
      "If the product of `f i` over `i ∈ s` is not equal to `0`, then there is some `x ∈ s`
      such that `f x ≠ 0`."]
theorem exists_ne_one_of_finprod_mem_ne_one (h : ∏ᶠ i ∈ s, f i ≠ 1) : ∃ x ∈ s, f x ≠ 1 
Arguments: {α : Type u_1} {M : Type u_5} [CommMonoid M] {f : α → M} {s : Set α} (h : ∏ᶠ (i : α) (_ : i ∈ s), f i ≠ 1)
Goal: ∃ x ∈ s, f x ≠ 1
-- finprod_mem_mul_distrib
@[to_additive
      "Given a finite set `s`, the sum of `f i + g i` over `i ∈ s` equals the sum of `f i`
      over `i ∈ s` plus the sum of `g i` over `i ∈ s`."]
theorem finprod_mem_mul_distrib (hs : s.Finite) :
    ∏ᶠ i ∈ s, f i * g i = (∏ᶠ i ∈ s, f i) * ∏ᶠ i ∈ s, g i 
Arguments: {α : Type u_1} {M : Type u_5} [CommMonoid M] {f g : α → M} {s : Set α} (hs : s.Finite)
Goal: ∏ᶠ (i : α) (_ : i ∈ s), f i * g i = (∏ᶠ (i : α) (_ : i ∈ s), f i) * ∏ᶠ (i : α) (_ : i ∈ s), g i
-- finsum_mem_add_distrib
@[to_additive
      "Given a finite set `s`, the sum of `f i + g i` over `i ∈ s` equals the sum of `f i`
      over `i ∈ s` plus the sum of `g i` over `i ∈ s`."]
theorem finprod_mem_mul_distrib (hs : s.Finite) :
    ∏ᶠ i ∈ s, f i * g i = (∏ᶠ i ∈ s, f i) * ∏ᶠ i ∈ s, g i 
Arguments: {α : Type u_1} {M : Type u_5} [AddCommMonoid M] {f g : α → M} {s : Set α} (hs : s.Finite)
Goal: ∑ᶠ (i : α) (_ : i ∈ s), (f i + g i) = ∑ᶠ (i : α) (_ : i ∈ s), f i + ∑ᶠ (i : α) (_ : i ∈ s), g i
-- MonoidHom.map_finprod
@[to_additive]
theorem MonoidHom.map_finprod {f : α → M} (g : M →* N) (hf : (mulSupport f).Finite) :
    g (∏ᶠ i, f i) = ∏ᶠ i, g (f i) 
Arguments: {α : Type u_1} {M : Type u_5} {N : Type u_6} [CommMonoid M] [CommMonoid N] {f : α → M} (g : M →* N) (hf : (Function.mulSupport f).Finite)
Goal: g (∏ᶠ (i : α), f i) = ∏ᶠ (i : α), g (f i)
-- AddMonoidHom.map_finsum
@[to_additive]
theorem MonoidHom.map_finprod {f : α → M} (g : M →* N) (hf : (mulSupport f).Finite) :
    g (∏ᶠ i, f i) = ∏ᶠ i, g (f i) 
Arguments: {α : Type u_1} {M : Type u_5} {N : Type u_6} [AddCommMonoid M] [AddCommMonoid N] {f : α → M} (g : M →+ N) (hf : (Function.support f).Finite)
Goal: g (∑ᶠ (i : α), f i) = ∑ᶠ (i : α), g (f i)
-- finsum_nsmul
@[to_additive]
theorem finprod_pow (hf : (mulSupport f).Finite) (n : ℕ) : (∏ᶠ i, f i) ^ n = ∏ᶠ i, f i ^ n 
Arguments: {α : Type u_1} {M : Type u_5} [AddCommMonoid M] {f : α → M} (hf : (Function.support f).Finite) (n : ℕ)
Goal: n • ∑ᶠ (i : α), f i = ∑ᶠ (i : α), n • f i
-- finprod_pow
@[to_additive]
theorem finprod_pow (hf : (mulSupport f).Finite) (n : ℕ) : (∏ᶠ i, f i) ^ n = ∏ᶠ i, f i ^ n 
Arguments: {α : Type u_1} {M : Type u_5} [CommMonoid M] {f : α → M} (hf : (Function.mulSupport f).Finite) (n : ℕ)
Goal: (∏ᶠ (i : α), f i) ^ n = ∏ᶠ (i : α), f i ^ n
-- finsum_smul'
theorem finsum_smul' {R M : Type*} [Semiring R] [AddCommMonoid M] [Module R M] {f : ι → R}
    (hf : (support f).Finite) (x : M) : (∑ᶠ i, f i) • x = ∑ᶠ i, f i • x 
Arguments: {ι : Type u_3} {R : Type u_7} {M : Type u_8} [Semiring R] [AddCommMonoid M] [Module R M] {f : ι → R} (hf : (Function.support f).Finite) (x : M)
Goal: (∑ᶠ (i : ι), f i) • x = ∑ᶠ (i : ι), f i • x
-- smul_finsum'
theorem smul_finsum' {R M : Type*} [Semiring R] [AddCommMonoid M] [Module R M] (c : R) {f : ι → M}
    (hf : (support f).Finite) : (c • ∑ᶠ i, f i) = ∑ᶠ i, c • f i 
Arguments: {ι : Type u_3} {R : Type u_7} {M : Type u_8} [Semiring R] [AddCommMonoid M] [Module R M] (c : R) {f : ι → M} (hf : (Function.support f).Finite)
Goal: c • ∑ᶠ (i : ι), f i = ∑ᶠ (i : ι), c • f i
-- MonoidHom.map_finprod_mem'
@[to_additive
      "A more general version of `AddMonoidHom.map_finsum_mem` that requires
      `s ∩ support f` rather than `s` to be finite."]
theorem MonoidHom.map_finprod_mem' {f : α → M} (g : M →* N) (h₀ : (s ∩ mulSupport f).Finite) :
    g (∏ᶠ j ∈ s, f j) = ∏ᶠ i ∈ s, g (f i) 
Arguments: {α : Type u_1} {M : Type u_5} {N : Type u_6} [CommMonoid M] [CommMonoid N] {s : Set α} {f : α → M} (g : M →* N) (h₀ : (s ∩ Function.mulSupport f).Finite)
Goal: g (∏ᶠ (j : α) (_ : j ∈ s), f j) = ∏ᶠ (i : α) (_ : i ∈ s), g (f i)
-- AddMonoidHom.map_finsum_mem'
@[to_additive
      "A more general version of `AddMonoidHom.map_finsum_mem` that requires
      `s ∩ support f` rather than `s` to be finite."]
theorem MonoidHom.map_finprod_mem' {f : α → M} (g : M →* N) (h₀ : (s ∩ mulSupport f).Finite) :
    g (∏ᶠ j ∈ s, f j) = ∏ᶠ i ∈ s, g (f i) 
Arguments: {α : Type u_1} {M : Type u_5} {N : Type u_6} [AddCommMonoid M] [AddCommMonoid N] {s : Set α} {f : α → M} (g : M →+ N) (h₀ : (s ∩ Function.support f).Finite)
Goal: g (∑ᶠ (j : α) (_ : j ∈ s), f j) = ∑ᶠ (i : α) (_ : i ∈ s), g (f i)
-- AddMonoidHom.map_finsum_mem
@[to_additive
      "Given an additive monoid homomorphism `g : M →* N` and a function `f : α → M`, the
      value of `g` at the sum of `f i` over `i ∈ s` equals the sum of `g (f i)` over `s`."]
theorem MonoidHom.map_finprod_mem (f : α → M) (g : M →* N) (hs : s.Finite) :
    g (∏ᶠ j ∈ s, f j) = ∏ᶠ i ∈ s, g (f i) 
Arguments: {α : Type u_1} {M : Type u_5} {N : Type u_6} [AddCommMonoid M] [AddCommMonoid N] {s : Set α} (f : α → M) (g : M →+ N) (hs : s.Finite)
Goal: g (∑ᶠ (j : α) (_ : j ∈ s), f j) = ∑ᶠ (i : α) (_ : i ∈ s), g (f i)
-- MonoidHom.map_finprod_mem
@[to_additive
      "Given an additive monoid homomorphism `g : M →* N` and a function `f : α → M`, the
      value of `g` at the sum of `f i` over `i ∈ s` equals the sum of `g (f i)` over `s`."]
theorem MonoidHom.map_finprod_mem (f : α → M) (g : M →* N) (hs : s.Finite) :
    g (∏ᶠ j ∈ s, f j) = ∏ᶠ i ∈ s, g (f i) 
Arguments: {α : Type u_1} {M : Type u_5} {N : Type u_6} [CommMonoid M] [CommMonoid N] {s : Set α} (f : α → M) (g : M →* N) (hs : s.Finite)
Goal: g (∏ᶠ (j : α) (_ : j ∈ s), f j) = ∏ᶠ (i : α) (_ : i ∈ s), g (f i)
-- MulEquiv.map_finprod_mem
@[to_additive]
theorem MulEquiv.map_finprod_mem (g : M ≃* N) (f : α → M) {s : Set α} (hs : s.Finite) :
    g (∏ᶠ i ∈ s, f i) = ∏ᶠ i ∈ s, g (f i) 
Arguments: {α : Type u_1} {M : Type u_5} {N : Type u_6} [CommMonoid M] [CommMonoid N] (g : M ≃* N) (f : α → M) {s : Set α} (hs : s.Finite)
Goal: g (∏ᶠ (i : α) (_ : i ∈ s), f i) = ∏ᶠ (i : α) (_ : i ∈ s), g (f i)
-- AddEquiv.map_finsum_mem
@[to_additive]
theorem MulEquiv.map_finprod_mem (g : M ≃* N) (f : α → M) {s : Set α} (hs : s.Finite) :
    g (∏ᶠ i ∈ s, f i) = ∏ᶠ i ∈ s, g (f i) 
Arguments: {α : Type u_1} {M : Type u_5} {N : Type u_6} [AddCommMonoid M] [AddCommMonoid N] (g : M ≃+ N) (f : α → M) {s : Set α} (hs : s.Finite)
Goal: g (∑ᶠ (i : α) (_ : i ∈ s), f i) = ∑ᶠ (i : α) (_ : i ∈ s), g (f i)
-- finsum_mem_neg_distrib
@[to_additive]
theorem finprod_mem_inv_distrib [DivisionCommMonoid G] (f : α → G) (hs : s.Finite) :
    (∏ᶠ x ∈ s, (f x)⁻¹) = (∏ᶠ x ∈ s, f x)⁻¹ 
Arguments: {α : Type u_1} {G : Type u_4} {s : Set α} [SubtractionCommMonoid G] (f : α → G) (hs : s.Finite)
Goal: ∑ᶠ (x : α) (_ : x ∈ s), -f x = -∑ᶠ (x : α) (_ : x ∈ s), f x
-- finprod_mem_inv_distrib
@[to_additive]
theorem finprod_mem_inv_distrib [DivisionCommMonoid G] (f : α → G) (hs : s.Finite) :
    (∏ᶠ x ∈ s, (f x)⁻¹) = (∏ᶠ x ∈ s, f x)⁻¹ 
Arguments: {α : Type u_1} {G : Type u_4} {s : Set α} [DivisionCommMonoid G] (f : α → G) (hs : s.Finite)
Goal: ∏ᶠ (x : α) (_ : x ∈ s), (f x)⁻¹ = (∏ᶠ (x : α) (_ : x ∈ s), f x)⁻¹
-- finsum_mem_sub_distrib
@[to_additive
      "Given a finite set `s`, the sum of `f i / g i` over `i ∈ s` equals the sum of `f i`
      over `i ∈ s` minus the sum of `g i` over `i ∈ s`."]
theorem finprod_mem_div_distrib [DivisionCommMonoid G] (f g : α → G) (hs : s.Finite) :
    ∏ᶠ i ∈ s, f i / g i = (∏ᶠ i ∈ s, f i) / ∏ᶠ i ∈ s, g i 
Arguments: {α : Type u_1} {G : Type u_4} {s : Set α} [SubtractionCommMonoid G] (f g : α → G) (hs : s.Finite)
Goal: ∑ᶠ (i : α) (_ : i ∈ s), (f i - g i) = ∑ᶠ (i : α) (_ : i ∈ s), f i - ∑ᶠ (i : α) (_ : i ∈ s), g i
-- finprod_mem_div_distrib
@[to_additive
      "Given a finite set `s`, the sum of `f i / g i` over `i ∈ s` equals the sum of `f i`
      over `i ∈ s` minus the sum of `g i` over `i ∈ s`."]
theorem finprod_mem_div_distrib [DivisionCommMonoid G] (f g : α → G) (hs : s.Finite) :
    ∏ᶠ i ∈ s, f i / g i = (∏ᶠ i ∈ s, f i) / ∏ᶠ i ∈ s, g i 
Arguments: {α : Type u_1} {G : Type u_4} {s : Set α} [DivisionCommMonoid G] (f g : α → G) (hs : s.Finite)
Goal: ∏ᶠ (i : α) (_ : i ∈ s), f i / g i = (∏ᶠ (i : α) (_ : i ∈ s), f i) / ∏ᶠ (i : α) (_ : i ∈ s), g i
-- finprod_mem_empty
@[to_additive "The sum of any function over an empty set is `0`."]
theorem finprod_mem_empty : (∏ᶠ i ∈ (∅ : Set α), f i) = 1 
Arguments: {α : Type u_1} {M : Type u_5} [CommMonoid M] {f : α → M}
Goal: ∏ᶠ (i : α) (_ : i ∈ ∅), f i = 1
-- finsum_mem_empty
@[to_additive "The sum of any function over an empty set is `0`."]
theorem finprod_mem_empty : (∏ᶠ i ∈ (∅ : Set α), f i) = 1 
Arguments: {α : Type u_1} {M : Type u_5} [AddCommMonoid M] {f : α → M}
Goal: ∑ᶠ (i : α) (_ : i ∈ ∅), f i = 0
-- nonempty_of_finprod_mem_ne_one
@[to_additive "A set `s` is nonempty if the sum of some function over `s` is not equal to `0`."]
theorem nonempty_of_finprod_mem_ne_one (h : ∏ᶠ i ∈ s, f i ≠ 1) : s.Nonempty 
Arguments: {α : Type u_1} {M : Type u_5} [CommMonoid M] {f : α → M} {s : Set α} (h : ∏ᶠ (i : α) (_ : i ∈ s), f i ≠ 1)
Goal: s.Nonempty
-- nonempty_of_finsum_mem_ne_zero
@[to_additive "A set `s` is nonempty if the sum of some function over `s` is not equal to `0`."]
theorem nonempty_of_finprod_mem_ne_one (h : ∏ᶠ i ∈ s, f i ≠ 1) : s.Nonempty 
Arguments: {α : Type u_1} {M : Type u_5} [AddCommMonoid M] {f : α → M} {s : Set α} (h : ∑ᶠ (i : α) (_ : i ∈ s), f i ≠ 0)
Goal: s.Nonempty
-- finprod_mem_union_inter
@[to_additive
      "Given finite sets `s` and `t`, the sum of `f i` over `i ∈ s ∪ t` plus the sum of
      `f i` over `i ∈ s ∩ t` equals the sum of `f i` over `i ∈ s` plus the sum of `f i`
      over `i ∈ t`."]
theorem finprod_mem_union_inter (hs : s.Finite) (ht : t.Finite) :
    ((∏ᶠ i ∈ s ∪ t, f i) * ∏ᶠ i ∈ s ∩ t, f i) = (∏ᶠ i ∈ s, f i) * ∏ᶠ i ∈ t, f i 
Arguments: {α : Type u_1} {M : Type u_5} [CommMonoid M] {f : α → M} {s t : Set α} (hs : s.Finite) (ht : t.Finite)
Goal: (∏ᶠ (i : α) (_ : i ∈ s ∪ t), f i) * ∏ᶠ (i : α) (_ : i ∈ s ∩ t), f i =
  (∏ᶠ (i : α) (_ : i ∈ s), f i) * ∏ᶠ (i : α) (_ : i ∈ t), f i
-- finsum_mem_union_inter
@[to_additive
      "Given finite sets `s` and `t`, the sum of `f i` over `i ∈ s ∪ t` plus the sum of
      `f i` over `i ∈ s ∩ t` equals the sum of `f i` over `i ∈ s` plus the sum of `f i`
      over `i ∈ t`."]
theorem finprod_mem_union_inter (hs : s.Finite) (ht : t.Finite) :
    ((∏ᶠ i ∈ s ∪ t, f i) * ∏ᶠ i ∈ s ∩ t, f i) = (∏ᶠ i ∈ s, f i) * ∏ᶠ i ∈ t, f i 
Arguments: {α : Type u_1} {M : Type u_5} [AddCommMonoid M] {f : α → M} {s t : Set α} (hs : s.Finite) (ht : t.Finite)
Goal: ∑ᶠ (i : α) (_ : i ∈ s ∪ t), f i + ∑ᶠ (i : α) (_ : i ∈ s ∩ t), f i =
  ∑ᶠ (i : α) (_ : i ∈ s), f i + ∑ᶠ (i : α) (_ : i ∈ t), f i
-- finsum_mem_union_inter'
@[to_additive
      "A more general version of `finsum_mem_union_inter` that requires `s ∩ support f` and
      `t ∩ support f` rather than `s` and `t` to be finite."]
theorem finprod_mem_union_inter' (hs : (s ∩ mulSupport f).Finite) (ht : (t ∩ mulSupport f).Finite) :
    ((∏ᶠ i ∈ s ∪ t, f i) * ∏ᶠ i ∈ s ∩ t, f i) = (∏ᶠ i ∈ s, f i) * ∏ᶠ i ∈ t, f i 
Arguments: {α : Type u_1} {M : Type u_5} [AddCommMonoid M] {f : α → M} {s t : Set α} (hs : (s ∩ Function.support f).Finite) (ht : (t ∩ Function.support f).Finite)
Goal: ∑ᶠ (i : α) (_ : i ∈ s ∪ t), f i + ∑ᶠ (i : α) (_ : i ∈ s ∩ t), f i =
  ∑ᶠ (i : α) (_ : i ∈ s), f i + ∑ᶠ (i : α) (_ : i ∈ t), f i
-- finprod_mem_union_inter'
@[to_additive
      "A more general version of `finsum_mem_union_inter` that requires `s ∩ support f` and
      `t ∩ support f` rather than `s` and `t` to be finite."]
theorem finprod_mem_union_inter' (hs : (s ∩ mulSupport f).Finite) (ht : (t ∩ mulSupport f).Finite) :
    ((∏ᶠ i ∈ s ∪ t, f i) * ∏ᶠ i ∈ s ∩ t, f i) = (∏ᶠ i ∈ s, f i) * ∏ᶠ i ∈ t, f i 
Arguments: {α : Type u_1} {M : Type u_5} [CommMonoid M] {f : α → M} {s t : Set α} (hs : (s ∩ Function.mulSupport f).Finite) (ht : (t ∩ Function.mulSupport f).Finite)
Goal: (∏ᶠ (i : α) (_ : i ∈ s ∪ t), f i) * ∏ᶠ (i : α) (_ : i ∈ s ∩ t), f i =
  (∏ᶠ (i : α) (_ : i ∈ s), f i) * ∏ᶠ (i : α) (_ : i ∈ t), f i
-- finsum_mem_union'
@[to_additive
      "A more general version of `finsum_mem_union` that requires `s ∩ support f` and
      `t ∩ support f` rather than `s` and `t` to be finite."]
theorem finprod_mem_union' (hst : Disjoint s t) (hs : (s ∩ mulSupport f).Finite)
    (ht : (t ∩ mulSupport f).Finite) : ∏ᶠ i ∈ s ∪ t, f i = (∏ᶠ i ∈ s, f i) * ∏ᶠ i ∈ t, f i 
Arguments: {α : Type u_1} {M : Type u_5} [AddCommMonoid M] {f : α → M} {s t : Set α} (hst : Disjoint s t) (hs : (s ∩ Function.support f).Finite) (ht : (t ∩ Function.support f).Finite)
Goal: ∑ᶠ (i : α) (_ : i ∈ s ∪ t), f i = ∑ᶠ (i : α) (_ : i ∈ s), f i + ∑ᶠ (i : α) (_ : i ∈ t), f i
-- finprod_mem_union'
@[to_additive
      "A more general version of `finsum_mem_union` that requires `s ∩ support f` and
      `t ∩ support f` rather than `s` and `t` to be finite."]
theorem finprod_mem_union' (hst : Disjoint s t) (hs : (s ∩ mulSupport f).Finite)
    (ht : (t ∩ mulSupport f).Finite) : ∏ᶠ i ∈ s ∪ t, f i = (∏ᶠ i ∈ s, f i) * ∏ᶠ i ∈ t, f i 
Arguments: {α : Type u_1} {M : Type u_5} [CommMonoid M] {f : α → M} {s t : Set α} (hst : Disjoint s t) (hs : (s ∩ Function.mulSupport f).Finite) (ht : (t ∩ Function.mulSupport f).Finite)
Goal: ∏ᶠ (i : α) (_ : i ∈ s ∪ t), f i = (∏ᶠ (i : α) (_ : i ∈ s), f i) * ∏ᶠ (i : α) (_ : i ∈ t), f i
-- finprod_mem_union
@[to_additive
      "Given two finite disjoint sets `s` and `t`, the sum of `f i` over `i ∈ s ∪ t` equals
      the sum of `f i` over `i ∈ s` plus the sum of `f i` over `i ∈ t`."]
theorem finprod_mem_union (hst : Disjoint s t) (hs : s.Finite) (ht : t.Finite) :
    ∏ᶠ i ∈ s ∪ t, f i = (∏ᶠ i ∈ s, f i) * ∏ᶠ i ∈ t, f i 
Arguments: {α : Type u_1} {M : Type u_5} [CommMonoid M] {f : α → M} {s t : Set α} (hst : Disjoint s t) (hs : s.Finite) (ht : t.Finite)
Goal: ∏ᶠ (i : α) (_ : i ∈ s ∪ t), f i = (∏ᶠ (i : α) (_ : i ∈ s), f i) * ∏ᶠ (i : α) (_ : i ∈ t), f i
-- finsum_mem_union
@[to_additive
      "Given two finite disjoint sets `s` and `t`, the sum of `f i` over `i ∈ s ∪ t` equals
      the sum of `f i` over `i ∈ s` plus the sum of `f i` over `i ∈ t`."]
theorem finprod_mem_union (hst : Disjoint s t) (hs : s.Finite) (ht : t.Finite) :
    ∏ᶠ i ∈ s ∪ t, f i = (∏ᶠ i ∈ s, f i) * ∏ᶠ i ∈ t, f i 
Arguments: {α : Type u_1} {M : Type u_5} [AddCommMonoid M] {f : α → M} {s t : Set α} (hst : Disjoint s t) (hs : s.Finite) (ht : t.Finite)
Goal: ∑ᶠ (i : α) (_ : i ∈ s ∪ t), f i = ∑ᶠ (i : α) (_ : i ∈ s), f i + ∑ᶠ (i : α) (_ : i ∈ t), f i
-- finsum_mem_union''
@[to_additive
      "A more general version of `finsum_mem_union'` that requires `s ∩ support f` and
      `t ∩ support f` rather than `s` and `t` to be disjoint"]
theorem finprod_mem_union'' (hst : Disjoint (s ∩ mulSupport f) (t ∩ mulSupport f))
    (hs : (s ∩ mulSupport f).Finite) (ht : (t ∩ mulSupport f).Finite) :
    ∏ᶠ i ∈ s ∪ t, f i = (∏ᶠ i ∈ s, f i) * ∏ᶠ i ∈ t, f i 
Arguments: {α : Type u_1} {M : Type u_5} [AddCommMonoid M] {f : α → M} {s t : Set α} (hst : Disjoint (s ∩ Function.support f) (t ∩ Function.support f)) (hs : (s ∩ Function.support f).Finite) (ht : (t ∩ Function.support f).Finite)
Goal: ∑ᶠ (i : α) (_ : i ∈ s ∪ t), f i = ∑ᶠ (i : α) (_ : i ∈ s), f i + ∑ᶠ (i : α) (_ : i ∈ t), f i
-- finprod_mem_union''
@[to_additive
      "A more general version of `finsum_mem_union'` that requires `s ∩ support f` and
      `t ∩ support f` rather than `s` and `t` to be disjoint"]
theorem finprod_mem_union'' (hst : Disjoint (s ∩ mulSupport f) (t ∩ mulSupport f))
    (hs : (s ∩ mulSupport f).Finite) (ht : (t ∩ mulSupport f).Finite) :
    ∏ᶠ i ∈ s ∪ t, f i = (∏ᶠ i ∈ s, f i) * ∏ᶠ i ∈ t, f i 
Arguments: {α : Type u_1} {M : Type u_5} [CommMonoid M] {f : α → M} {s t : Set α} (hst : Disjoint (s ∩ Function.mulSupport f) (t ∩ Function.mulSupport f)) (hs : (s ∩ Function.mulSupport f).Finite) (ht : (t ∩ Function.mulSupport f).Finite)
Goal: ∏ᶠ (i : α) (_ : i ∈ s ∪ t), f i = (∏ᶠ (i : α) (_ : i ∈ s), f i) * ∏ᶠ (i : α) (_ : i ∈ t), f i
-- finsum_mem_singleton
@[to_additive "The sum of `f i` over `i ∈ {a}` equals `f a`."]
theorem finprod_mem_singleton : (∏ᶠ i ∈ ({a} : Set α), f i) = f a 
Arguments: {α : Type u_1} {M : Type u_5} [AddCommMonoid M] {f : α → M} {a : α}
Goal: ∑ᶠ (i : α) (_ : i ∈ {a}), f i = f a
-- finprod_mem_singleton
@[to_additive "The sum of `f i` over `i ∈ {a}` equals `f a`."]
theorem finprod_mem_singleton : (∏ᶠ i ∈ ({a} : Set α), f i) = f a 
Arguments: {α : Type u_1} {M : Type u_5} [CommMonoid M] {f : α → M} {a : α}
Goal: ∏ᶠ (i : α) (_ : i ∈ {a}), f i = f a
-- finprod_cond_eq_left
@[to_additive (attr := simp)]
theorem finprod_cond_eq_left : (∏ᶠ (i) (_ : i = a), f i) = f a 
Arguments: {α : Type u_1} {M : Type u_5} [CommMonoid M] {f : α → M} {a : α}
Goal: ∏ᶠ (i : α) (_ : i = a), f i = f a
-- finsum_cond_eq_left
@[to_additive (attr := simp)]
theorem finprod_cond_eq_left : (∏ᶠ (i) (_ : i = a), f i) = f a 
Arguments: {α : Type u_1} {M : Type u_5} [AddCommMonoid M] {f : α → M} {a : α}
Goal: ∑ᶠ (i : α) (_ : i = a), f i = f a