Results about big operators over intervals #
We prove results about big operators over intervals.
theorem
Finset.mul_prod_Ico_eq_prod_Icc
{α : Type u_1}
{M : Type u_2}
[PartialOrder α]
[CommMonoid M]
{f : α → M}
{a b : α}
[LocallyFiniteOrder α]
(h : a ≤ b)
:
f b * ∏ x ∈ Finset.Ico a b, f x = ∏ x ∈ Finset.Icc a b, f x
theorem
Finset.add_sum_Ico_eq_sum_Icc
{α : Type u_1}
{M : Type u_2}
[PartialOrder α]
[AddCommMonoid M]
{f : α → M}
{a b : α}
[LocallyFiniteOrder α]
(h : a ≤ b)
:
f b + ∑ x ∈ Finset.Ico a b, f x = ∑ x ∈ Finset.Icc a b, f x
theorem
Finset.prod_Ico_mul_eq_prod_Icc
{α : Type u_1}
{M : Type u_2}
[PartialOrder α]
[CommMonoid M]
{f : α → M}
{a b : α}
[LocallyFiniteOrder α]
(h : a ≤ b)
:
(∏ x ∈ Finset.Ico a b, f x) * f b = ∏ x ∈ Finset.Icc a b, f x
theorem
Finset.sum_Ico_add_eq_sum_Icc
{α : Type u_1}
{M : Type u_2}
[PartialOrder α]
[AddCommMonoid M]
{f : α → M}
{a b : α}
[LocallyFiniteOrder α]
(h : a ≤ b)
:
∑ x ∈ Finset.Ico a b, f x + f b = ∑ x ∈ Finset.Icc a b, f x
theorem
Finset.mul_prod_Ioc_eq_prod_Icc
{α : Type u_1}
{M : Type u_2}
[PartialOrder α]
[CommMonoid M]
{f : α → M}
{a b : α}
[LocallyFiniteOrder α]
(h : a ≤ b)
:
f a * ∏ x ∈ Finset.Ioc a b, f x = ∏ x ∈ Finset.Icc a b, f x
theorem
Finset.add_sum_Ioc_eq_sum_Icc
{α : Type u_1}
{M : Type u_2}
[PartialOrder α]
[AddCommMonoid M]
{f : α → M}
{a b : α}
[LocallyFiniteOrder α]
(h : a ≤ b)
:
f a + ∑ x ∈ Finset.Ioc a b, f x = ∑ x ∈ Finset.Icc a b, f x
theorem
Finset.prod_Ioc_mul_eq_prod_Icc
{α : Type u_1}
{M : Type u_2}
[PartialOrder α]
[CommMonoid M]
{f : α → M}
{a b : α}
[LocallyFiniteOrder α]
(h : a ≤ b)
:
(∏ x ∈ Finset.Ioc a b, f x) * f a = ∏ x ∈ Finset.Icc a b, f x
theorem
Finset.sum_Ioc_add_eq_sum_Icc
{α : Type u_1}
{M : Type u_2}
[PartialOrder α]
[AddCommMonoid M]
{f : α → M}
{a b : α}
[LocallyFiniteOrder α]
(h : a ≤ b)
:
∑ x ∈ Finset.Ioc a b, f x + f a = ∑ x ∈ Finset.Icc a b, f x
theorem
Finset.mul_prod_Ioi_eq_prod_Ici
{α : Type u_1}
{M : Type u_2}
[PartialOrder α]
[CommMonoid M]
{f : α → M}
[LocallyFiniteOrderTop α]
(a : α)
:
f a * ∏ x ∈ Finset.Ioi a, f x = ∏ x ∈ Finset.Ici a, f x
theorem
Finset.add_sum_Ioi_eq_sum_Ici
{α : Type u_1}
{M : Type u_2}
[PartialOrder α]
[AddCommMonoid M]
{f : α → M}
[LocallyFiniteOrderTop α]
(a : α)
:
f a + ∑ x ∈ Finset.Ioi a, f x = ∑ x ∈ Finset.Ici a, f x
theorem
Finset.prod_Ioi_mul_eq_prod_Ici
{α : Type u_1}
{M : Type u_2}
[PartialOrder α]
[CommMonoid M]
{f : α → M}
[LocallyFiniteOrderTop α]
(a : α)
:
(∏ x ∈ Finset.Ioi a, f x) * f a = ∏ x ∈ Finset.Ici a, f x
theorem
Finset.sum_Ioi_add_eq_sum_Ici
{α : Type u_1}
{M : Type u_2}
[PartialOrder α]
[AddCommMonoid M]
{f : α → M}
[LocallyFiniteOrderTop α]
(a : α)
:
∑ x ∈ Finset.Ioi a, f x + f a = ∑ x ∈ Finset.Ici a, f x
theorem
Finset.mul_prod_Iio_eq_prod_Iic
{α : Type u_1}
{M : Type u_2}
[PartialOrder α]
[CommMonoid M]
{f : α → M}
[LocallyFiniteOrderBot α]
(a : α)
:
f a * ∏ x ∈ Finset.Iio a, f x = ∏ x ∈ Finset.Iic a, f x
theorem
Finset.add_sum_Iio_eq_sum_Iic
{α : Type u_1}
{M : Type u_2}
[PartialOrder α]
[AddCommMonoid M]
{f : α → M}
[LocallyFiniteOrderBot α]
(a : α)
:
f a + ∑ x ∈ Finset.Iio a, f x = ∑ x ∈ Finset.Iic a, f x
theorem
Finset.prod_Iio_mul_eq_prod_Iic
{α : Type u_1}
{M : Type u_2}
[PartialOrder α]
[CommMonoid M]
{f : α → M}
[LocallyFiniteOrderBot α]
(a : α)
:
(∏ x ∈ Finset.Iio a, f x) * f a = ∏ x ∈ Finset.Iic a, f x
theorem
Finset.sum_Iio_add_eq_sum_Iic
{α : Type u_1}
{M : Type u_2}
[PartialOrder α]
[AddCommMonoid M]
{f : α → M}
[LocallyFiniteOrderBot α]
(a : α)
:
∑ x ∈ Finset.Iio a, f x + f a = ∑ x ∈ Finset.Iic a, f x
theorem
Finset.prod_prod_Ioi_mul_eq_prod_prod_off_diag
{α : Type u_1}
{M : Type u_2}
[Fintype α]
[LinearOrder α]
[LocallyFiniteOrderTop α]
[LocallyFiniteOrderBot α]
[CommMonoid M]
(f : α → α → M)
:
∏ i : α, ∏ j ∈ Finset.Ioi i, f j i * f i j = ∏ i : α, ∏ j ∈ {i}ᶜ, f j i
theorem
Finset.sum_sum_Ioi_add_eq_sum_sum_off_diag
{α : Type u_1}
{M : Type u_2}
[Fintype α]
[LinearOrder α]
[LocallyFiniteOrderTop α]
[LocallyFiniteOrderBot α]
[AddCommMonoid M]
(f : α → α → M)
:
∑ i : α, ∑ j ∈ Finset.Ioi i, (f j i + f i j) = ∑ i : α, ∑ j ∈ {i}ᶜ, f j i
theorem
Finset.prod_Ico_add'
{α : Type u_1}
{M : Type u_2}
[CommMonoid M]
[OrderedCancelAddCommMonoid α]
[ExistsAddOfLE α]
[LocallyFiniteOrder α]
(f : α → M)
(a b c : α)
:
∏ x ∈ Finset.Ico a b, f (x + c) = ∏ x ∈ Finset.Ico (a + c) (b + c), f x
theorem
Finset.sum_Ico_add'
{α : Type u_1}
{M : Type u_2}
[AddCommMonoid M]
[OrderedCancelAddCommMonoid α]
[ExistsAddOfLE α]
[LocallyFiniteOrder α]
(f : α → M)
(a b c : α)
:
∑ x ∈ Finset.Ico a b, f (x + c) = ∑ x ∈ Finset.Ico (a + c) (b + c), f x
theorem
Finset.prod_Ico_add
{α : Type u_1}
{M : Type u_2}
[CommMonoid M]
[OrderedCancelAddCommMonoid α]
[ExistsAddOfLE α]
[LocallyFiniteOrder α]
(f : α → M)
(a b c : α)
:
∏ x ∈ Finset.Ico a b, f (c + x) = ∏ x ∈ Finset.Ico (a + c) (b + c), f x
theorem
Finset.sum_Ico_add
{α : Type u_1}
{M : Type u_2}
[AddCommMonoid M]
[OrderedCancelAddCommMonoid α]
[ExistsAddOfLE α]
[LocallyFiniteOrder α]
(f : α → M)
(a b c : α)
:
∑ x ∈ Finset.Ico a b, f (c + x) = ∑ x ∈ Finset.Ico (a + c) (b + c), f x
@[simp]
theorem
Finset.prod_Ico_add_right_sub_eq
{α : Type u_1}
{M : Type u_2}
[CommMonoid M]
{f : α → M}
[OrderedCancelAddCommMonoid α]
[ExistsAddOfLE α]
[LocallyFiniteOrder α]
[Sub α]
[OrderedSub α]
(a b c : α)
:
∏ x ∈ Finset.Ico (a + c) (b + c), f (x - c) = ∏ x ∈ Finset.Ico a b, f x
@[simp]
theorem
Finset.sum_Ico_add_right_sub_eq
{α : Type u_1}
{M : Type u_2}
[AddCommMonoid M]
{f : α → M}
[OrderedCancelAddCommMonoid α]
[ExistsAddOfLE α]
[LocallyFiniteOrder α]
[Sub α]
[OrderedSub α]
(a b c : α)
:
∑ x ∈ Finset.Ico (a + c) (b + c), f (x - c) = ∑ x ∈ Finset.Ico a b, f x
theorem
Finset.prod_Ico_succ_top
{M : Type u_2}
[CommMonoid M]
{a b : ℕ}
(hab : a ≤ b)
(f : ℕ → M)
:
∏ k ∈ Finset.Ico a (b + 1), f k = (∏ k ∈ Finset.Ico a b, f k) * f b
theorem
Finset.sum_Ico_succ_top
{M : Type u_2}
[AddCommMonoid M]
{a b : ℕ}
(hab : a ≤ b)
(f : ℕ → M)
:
∑ k ∈ Finset.Ico a (b + 1), f k = ∑ k ∈ Finset.Ico a b, f k + f b
theorem
Finset.prod_eq_prod_Ico_succ_bot
{M : Type u_2}
[CommMonoid M]
{a b : ℕ}
(hab : a < b)
(f : ℕ → M)
:
∏ k ∈ Finset.Ico a b, f k = f a * ∏ k ∈ Finset.Ico (a + 1) b, f k
theorem
Finset.sum_eq_sum_Ico_succ_bot
{M : Type u_2}
[AddCommMonoid M]
{a b : ℕ}
(hab : a < b)
(f : ℕ → M)
:
∑ k ∈ Finset.Ico a b, f k = f a + ∑ k ∈ Finset.Ico (a + 1) b, f k
theorem
Finset.prod_Ico_consecutive
{M : Type u_2}
[CommMonoid M]
(f : ℕ → M)
{m n k : ℕ}
(hmn : m ≤ n)
(hnk : n ≤ k)
:
(∏ i ∈ Finset.Ico m n, f i) * ∏ i ∈ Finset.Ico n k, f i = ∏ i ∈ Finset.Ico m k, f i
theorem
Finset.sum_Ico_consecutive
{M : Type u_2}
[AddCommMonoid M]
(f : ℕ → M)
{m n k : ℕ}
(hmn : m ≤ n)
(hnk : n ≤ k)
:
∑ i ∈ Finset.Ico m n, f i + ∑ i ∈ Finset.Ico n k, f i = ∑ i ∈ Finset.Ico m k, f i
theorem
Finset.prod_Ioc_consecutive
{M : Type u_2}
[CommMonoid M]
(f : ℕ → M)
{m n k : ℕ}
(hmn : m ≤ n)
(hnk : n ≤ k)
:
(∏ i ∈ Finset.Ioc m n, f i) * ∏ i ∈ Finset.Ioc n k, f i = ∏ i ∈ Finset.Ioc m k, f i
theorem
Finset.sum_Ioc_consecutive
{M : Type u_2}
[AddCommMonoid M]
(f : ℕ → M)
{m n k : ℕ}
(hmn : m ≤ n)
(hnk : n ≤ k)
:
∑ i ∈ Finset.Ioc m n, f i + ∑ i ∈ Finset.Ioc n k, f i = ∑ i ∈ Finset.Ioc m k, f i
theorem
Finset.prod_Ioc_succ_top
{M : Type u_2}
[CommMonoid M]
{a b : ℕ}
(hab : a ≤ b)
(f : ℕ → M)
:
∏ k ∈ Finset.Ioc a (b + 1), f k = (∏ k ∈ Finset.Ioc a b, f k) * f (b + 1)
theorem
Finset.sum_Ioc_succ_top
{M : Type u_2}
[AddCommMonoid M]
{a b : ℕ}
(hab : a ≤ b)
(f : ℕ → M)
:
∑ k ∈ Finset.Ioc a (b + 1), f k = ∑ k ∈ Finset.Ioc a b, f k + f (b + 1)
theorem
Finset.prod_Icc_succ_top
{M : Type u_2}
[CommMonoid M]
{a b : ℕ}
(hab : a ≤ b + 1)
(f : ℕ → M)
:
∏ k ∈ Finset.Icc a (b + 1), f k = (∏ k ∈ Finset.Icc a b, f k) * f (b + 1)
theorem
Finset.sum_Icc_succ_top
{M : Type u_2}
[AddCommMonoid M]
{a b : ℕ}
(hab : a ≤ b + 1)
(f : ℕ → M)
:
∑ k ∈ Finset.Icc a (b + 1), f k = ∑ k ∈ Finset.Icc a b, f k + f (b + 1)
theorem
Finset.prod_range_mul_prod_Ico
{M : Type u_2}
[CommMonoid M]
(f : ℕ → M)
{m n : ℕ}
(h : m ≤ n)
:
(∏ k ∈ Finset.range m, f k) * ∏ k ∈ Finset.Ico m n, f k = ∏ k ∈ Finset.range n, f k
theorem
Finset.sum_range_add_sum_Ico
{M : Type u_2}
[AddCommMonoid M]
(f : ℕ → M)
{m n : ℕ}
(h : m ≤ n)
:
∑ k ∈ Finset.range m, f k + ∑ k ∈ Finset.Ico m n, f k = ∑ k ∈ Finset.range n, f k
theorem
Finset.prod_range_eq_mul_Ico
{M : Type u_2}
[CommMonoid M]
(f : ℕ → M)
{n : ℕ}
(hn : 0 < n)
:
∏ x ∈ Finset.range n, f x = f 0 * ∏ x ∈ Finset.Ico 1 n, f x
theorem
Finset.sum_range_eq_add_Ico
{M : Type u_2}
[AddCommMonoid M]
(f : ℕ → M)
{n : ℕ}
(hn : 0 < n)
:
∑ x ∈ Finset.range n, f x = f 0 + ∑ x ∈ Finset.Ico 1 n, f x
theorem
Finset.prod_Ico_eq_mul_inv
{δ : Type u_3}
[CommGroup δ]
(f : ℕ → δ)
{m n : ℕ}
(h : m ≤ n)
:
∏ k ∈ Finset.Ico m n, f k = (∏ k ∈ Finset.range n, f k) * (∏ k ∈ Finset.range m, f k)⁻¹
theorem
Finset.sum_Ico_eq_add_neg
{δ : Type u_3}
[AddCommGroup δ]
(f : ℕ → δ)
{m n : ℕ}
(h : m ≤ n)
:
∑ k ∈ Finset.Ico m n, f k = ∑ k ∈ Finset.range n, f k + -∑ k ∈ Finset.range m, f k
theorem
Finset.prod_Ico_eq_div
{δ : Type u_3}
[CommGroup δ]
(f : ℕ → δ)
{m n : ℕ}
(h : m ≤ n)
:
∏ k ∈ Finset.Ico m n, f k = (∏ k ∈ Finset.range n, f k) / ∏ k ∈ Finset.range m, f k
theorem
Finset.sum_Ico_eq_sub
{δ : Type u_3}
[AddCommGroup δ]
(f : ℕ → δ)
{m n : ℕ}
(h : m ≤ n)
:
∑ k ∈ Finset.Ico m n, f k = ∑ k ∈ Finset.range n, f k - ∑ k ∈ Finset.range m, f k
theorem
Finset.prod_range_div_prod_range
{α : Type u_3}
[CommGroup α]
{f : ℕ → α}
{n m : ℕ}
(hnm : n ≤ m)
:
(∏ k ∈ Finset.range m, f k) / ∏ k ∈ Finset.range n, f k = ∏ k ∈ Finset.filter (fun (k : ℕ) => n ≤ k) (Finset.range m), f k
theorem
Finset.sum_range_sub_sum_range
{α : Type u_3}
[AddCommGroup α]
{f : ℕ → α}
{n m : ℕ}
(hnm : n ≤ m)
:
∑ k ∈ Finset.range m, f k - ∑ k ∈ Finset.range n, f k = ∑ k ∈ Finset.filter (fun (k : ℕ) => n ≤ k) (Finset.range m), f k
theorem
Finset.sum_Ico_Ico_comm
{M : Type u_3}
[AddCommMonoid M]
(a b : ℕ)
(f : ℕ → ℕ → M)
:
∑ i ∈ Finset.Ico a b, ∑ j ∈ Finset.Ico i b, f i j = ∑ j ∈ Finset.Ico a b, ∑ i ∈ Finset.Ico a (j + 1), f i j
The two ways of summing over (i, j)
in the range a ≤ i ≤ j < b
are equal.
theorem
Finset.sum_Ico_Ico_comm'
{M : Type u_3}
[AddCommMonoid M]
(a b : ℕ)
(f : ℕ → ℕ → M)
:
∑ i ∈ Finset.Ico a b, ∑ j ∈ Finset.Ico (i + 1) b, f i j = ∑ j ∈ Finset.Ico a b, ∑ i ∈ Finset.Ico a j, f i j
The two ways of summing over (i, j)
in the range a ≤ i < j < b
are equal.
theorem
Finset.prod_Ico_eq_prod_range
{M : Type u_2}
[CommMonoid M]
(f : ℕ → M)
(m n : ℕ)
:
∏ k ∈ Finset.Ico m n, f k = ∏ k ∈ Finset.range (n - m), f (m + k)
theorem
Finset.sum_Ico_eq_sum_range
{M : Type u_2}
[AddCommMonoid M]
(f : ℕ → M)
(m n : ℕ)
:
∑ k ∈ Finset.Ico m n, f k = ∑ k ∈ Finset.range (n - m), f (m + k)
theorem
Finset.prod_Ico_reflect
{M : Type u_2}
[CommMonoid M]
(f : ℕ → M)
(k : ℕ)
{m n : ℕ}
(h : m ≤ n + 1)
:
∏ j ∈ Finset.Ico k m, f (n - j) = ∏ j ∈ Finset.Ico (n + 1 - m) (n + 1 - k), f j
theorem
Finset.sum_Ico_reflect
{δ : Type u_3}
[AddCommMonoid δ]
(f : ℕ → δ)
(k : ℕ)
{m n : ℕ}
(h : m ≤ n + 1)
:
∑ j ∈ Finset.Ico k m, f (n - j) = ∑ j ∈ Finset.Ico (n + 1 - m) (n + 1 - k), f j
theorem
Finset.prod_range_reflect
{M : Type u_2}
[CommMonoid M]
(f : ℕ → M)
(n : ℕ)
:
∏ j ∈ Finset.range n, f (n - 1 - j) = ∏ j ∈ Finset.range n, f j
theorem
Finset.sum_range_reflect
{δ : Type u_3}
[AddCommMonoid δ]
(f : ℕ → δ)
(n : ℕ)
:
∑ j ∈ Finset.range n, f (n - 1 - j) = ∑ j ∈ Finset.range n, f j
@[simp]
@[simp]
Gauss' summation formula
Gauss' summation formula
theorem
Finset.prod_range_diag_flip
{M : Type u_2}
[CommMonoid M]
(n : ℕ)
(f : ℕ → ℕ → M)
:
∏ m ∈ Finset.range n, ∏ k ∈ Finset.range (m + 1), f k (m - k) = ∏ m ∈ Finset.range n, ∏ k ∈ Finset.range (n - m), f m k
theorem
Finset.sum_range_diag_flip
{M : Type u_2}
[AddCommMonoid M]
(n : ℕ)
(f : ℕ → ℕ → M)
:
∑ m ∈ Finset.range n, ∑ k ∈ Finset.range (m + 1), f k (m - k) = ∑ m ∈ Finset.range n, ∑ k ∈ Finset.range (n - m), f m k
theorem
Finset.prod_range_succ_div_prod
{M : Type u_3}
(f : ℕ → M)
{n : ℕ}
[CommGroup M]
:
(∏ i ∈ Finset.range (n + 1), f i) / ∏ i ∈ Finset.range n, f i = f n
theorem
Finset.sum_range_succ_sub_sum
{M : Type u_3}
(f : ℕ → M)
{n : ℕ}
[AddCommGroup M]
:
∑ i ∈ Finset.range (n + 1), f i - ∑ i ∈ Finset.range n, f i = f n
theorem
Finset.prod_range_succ_div_top
{M : Type u_3}
(f : ℕ → M)
{n : ℕ}
[CommGroup M]
:
(∏ i ∈ Finset.range (n + 1), f i) / f n = ∏ i ∈ Finset.range n, f i
theorem
Finset.sum_range_succ_sub_top
{M : Type u_3}
(f : ℕ → M)
{n : ℕ}
[AddCommGroup M]
:
∑ i ∈ Finset.range (n + 1), f i - f n = ∑ i ∈ Finset.range n, f i
theorem
Finset.prod_Ico_div_bot
{M : Type u_3}
(f : ℕ → M)
{m n : ℕ}
[CommGroup M]
(hmn : m < n)
:
(∏ i ∈ Finset.Ico m n, f i) / f m = ∏ i ∈ Finset.Ico (m + 1) n, f i
theorem
Finset.sum_Ico_sub_bot
{M : Type u_3}
(f : ℕ → M)
{m n : ℕ}
[AddCommGroup M]
(hmn : m < n)
:
∑ i ∈ Finset.Ico m n, f i - f m = ∑ i ∈ Finset.Ico (m + 1) n, f i
theorem
Finset.prod_Ico_succ_div_top
{M : Type u_3}
(f : ℕ → M)
{m n : ℕ}
[CommGroup M]
(hmn : m ≤ n)
:
(∏ i ∈ Finset.Ico m (n + 1), f i) / f n = ∏ i ∈ Finset.Ico m n, f i
theorem
Finset.sum_Ico_succ_sub_top
{M : Type u_3}
(f : ℕ → M)
{m n : ℕ}
[AddCommGroup M]
(hmn : m ≤ n)
:
∑ i ∈ Finset.Ico m (n + 1), f i - f n = ∑ i ∈ Finset.Ico m n, f i