mathlib documentation

algebra.big_operators.intervals

Results about big operators over intervals #

We prove results about big operators over intervals (mostly the -valued Ico m n).

theorem finset.prod_Ico_add' {α : Type u} {β : Type v} [comm_monoid β] [ordered_cancel_add_comm_monoid α] [has_exists_add_of_le α] [locally_finite_order α] (f : α → β) (a b c : α) :
∏ (x : α) in finset.Ico a b, f (x + c) = ∏ (x : α) in finset.Ico (a + c) (b + c), f x
theorem finset.sum_Ico_add' {α : Type u} {β : Type v} [add_comm_monoid β] [ordered_cancel_add_comm_monoid α] [has_exists_add_of_le α] [locally_finite_order α] (f : α → β) (a b c : α) :
∑ (x : α) in finset.Ico a b, f (x + c) = ∑ (x : α) in finset.Ico (a + c) (b + c), f x
theorem finset.sum_Ico_add {α : Type u} {β : Type v} [add_comm_monoid β] [ordered_cancel_add_comm_monoid α] [has_exists_add_of_le α] [locally_finite_order α] (f : α → β) (a b c : α) :
∑ (x : α) in finset.Ico a b, f (c + x) = ∑ (x : α) in finset.Ico (a + c) (b + c), f x
theorem finset.prod_Ico_add {α : Type u} {β : Type v} [comm_monoid β] [ordered_cancel_add_comm_monoid α] [has_exists_add_of_le α] [locally_finite_order α] (f : α → β) (a b c : α) :
∏ (x : α) in finset.Ico a b, f (c + x) = ∏ (x : α) in finset.Ico (a + c) (b + c), f x
theorem finset.sum_Ico_succ_top {δ : Type u_1} [add_comm_monoid δ] {a b : } (hab : a b) (f : → δ) :
∑ (k : ) in finset.Ico a (b + 1), f k = ∑ (k : ) in finset.Ico a b, f k + f b
theorem finset.prod_Ico_succ_top {β : Type v} [comm_monoid β] {a b : } (hab : a b) (f : → β) :
∏ (k : ) in finset.Ico a (b + 1), f k = (∏ (k : ) in finset.Ico a b, f k) * f b
theorem finset.sum_eq_sum_Ico_succ_bot {δ : Type u_1} [add_comm_monoid δ] {a b : } (hab : a < b) (f : → δ) :
∑ (k : ) in finset.Ico a b, f k = f a + ∑ (k : ) in finset.Ico (a + 1) b, f k
theorem finset.prod_eq_prod_Ico_succ_bot {β : Type v} [comm_monoid β] {a b : } (hab : a < b) (f : → β) :
∏ (k : ) in finset.Ico a b, f k = (f a) * ∏ (k : ) in finset.Ico (a + 1) b, f k
theorem finset.sum_Ico_consecutive {β : Type v} [add_comm_monoid β] (f : → β) {m n k : } (hmn : m n) (hnk : n k) :
∑ (i : ) in finset.Ico m n, f i + ∑ (i : ) in finset.Ico n k, f i = ∑ (i : ) in finset.Ico m k, f i
theorem finset.prod_Ico_consecutive {β : Type v} [comm_monoid β] (f : → β) {m n k : } (hmn : m n) (hnk : n k) :
(∏ (i : ) in finset.Ico m n, f i) * ∏ (i : ) in finset.Ico n k, f i = ∏ (i : ) in finset.Ico m k, f i
theorem finset.prod_range_mul_prod_Ico {β : Type v} [comm_monoid β] (f : → β) {m n : } (h : m n) :
(∏ (k : ) in finset.range m, f k) * ∏ (k : ) in finset.Ico m n, f k = ∏ (k : ) in finset.range n, f k
theorem finset.sum_range_add_sum_Ico {β : Type v} [add_comm_monoid β] (f : → β) {m n : } (h : m n) :
∑ (k : ) in finset.range m, f k + ∑ (k : ) in finset.Ico m n, f k = ∑ (k : ) in finset.range n, f k
theorem finset.prod_Ico_eq_mul_inv {δ : Type u_1} [comm_group δ] (f : → δ) {m n : } (h : m n) :
∏ (k : ) in finset.Ico m n, f k = (∏ (k : ) in finset.range n, f k) * (∏ (k : ) in finset.range m, f k)⁻¹
theorem finset.sum_Ico_eq_add_neg {δ : Type u_1} [add_comm_group δ] (f : → δ) {m n : } (h : m n) :
∑ (k : ) in finset.Ico m n, f k = ∑ (k : ) in finset.range n, f k + -∑ (k : ) in finset.range m, f k
theorem finset.sum_Ico_eq_sub {δ : Type u_1} [add_comm_group δ] (f : → δ) {m n : } (h : m n) :
∑ (k : ) in finset.Ico m n, f k = ∑ (k : ) in finset.range n, f k - ∑ (k : ) in finset.range m, f k
theorem finset.prod_Ico_eq_div {δ : Type u_1} [comm_group δ] (f : → δ) {m n : } (h : m n) :
∏ (k : ) in finset.Ico m n, f k = (∏ (k : ) in finset.range n, f k) / ∏ (k : ) in finset.range m, f k
theorem finset.sum_range_sub_sum_range {α : Type u_1} [add_comm_group α] {f : → α} {n m : } (hnm : n m) :
∑ (k : ) in finset.range m, f k - ∑ (k : ) in finset.range n, f k = ∑ (k : ) in finset.filter (λ (k : ), n k) (finset.range m), f k
theorem finset.prod_range_sub_prod_range {α : Type u_1} [comm_group α] {f : → α} {n m : } (hnm : n m) :
(∏ (k : ) in finset.range m, f k) / ∏ (k : ) in finset.range n, f k = ∏ (k : ) in finset.filter (λ (k : ), n k) (finset.range m), f k
theorem finset.sum_Ico_Ico_comm {M : Type u_1} [add_comm_monoid M] (a b : ) (f : → M) :
∑ (i : ) in finset.Ico a b, ∑ (j : ) in finset.Ico i b, f i j = ∑ (j : ) in finset.Ico a b, ∑ (i : ) in 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_eq_sum_range {β : Type v} [add_comm_monoid β] (f : → β) (m n : ) :
∑ (k : ) in finset.Ico m n, f k = ∑ (k : ) in finset.range (n - m), f (m + k)
theorem finset.prod_Ico_eq_prod_range {β : Type v} [comm_monoid β] (f : → β) (m n : ) :
∏ (k : ) in finset.Ico m n, f k = ∏ (k : ) in finset.range (n - m), f (m + k)
theorem finset.prod_Ico_reflect {β : Type v} [comm_monoid β] (f : → β) (k : ) {m n : } (h : m n + 1) :
∏ (j : ) in finset.Ico k m, f (n - j) = ∏ (j : ) in finset.Ico (n + 1 - m) (n + 1 - k), f j
theorem finset.sum_Ico_reflect {δ : Type u_1} [add_comm_monoid δ] (f : → δ) (k : ) {m n : } (h : m n + 1) :
∑ (j : ) in finset.Ico k m, f (n - j) = ∑ (j : ) in finset.Ico (n + 1 - m) (n + 1 - k), f j
theorem finset.prod_range_reflect {β : Type v} [comm_monoid β] (f : → β) (n : ) :
∏ (j : ) in finset.range n, f (n - 1 - j) = ∏ (j : ) in finset.range n, f j
theorem finset.sum_range_reflect {δ : Type u_1} [add_comm_monoid δ] (f : → δ) (n : ) :
∑ (j : ) in finset.range n, f (n - 1 - j) = ∑ (j : ) in finset.range n, f j
@[simp]
theorem finset.prod_Ico_id_eq_factorial (n : ) :
∏ (x : ) in finset.Ico 1 (n + 1), x = n!
@[simp]
theorem finset.prod_range_add_one_eq_factorial (n : ) :
∏ (x : ) in finset.range n, (x + 1) = n!
theorem finset.sum_range_id_mul_two (n : ) :
(∑ (i : ) in finset.range n, i) * 2 = n * (n - 1)

Gauss' summation formula

theorem finset.sum_range_id (n : ) :
∑ (i : ) in finset.range n, i = n * (n - 1) / 2

Gauss' summation formula

theorem finset.prod_range_succ_div_prod {β : Type u_1} (f : → β) {n : } [comm_group β] :
(∏ (i : ) in finset.range (n + 1), f i) / ∏ (i : ) in finset.range n, f i = f n
theorem finset.sum_range_succ_sub_sum {β : Type u_1} (f : → β) {n : } [add_comm_group β] :
∑ (i : ) in finset.range (n + 1), f i - ∑ (i : ) in finset.range n, f i = f n
theorem finset.prod_range_succ_div_top {β : Type u_1} (f : → β) {n : } [comm_group β] :
(∏ (i : ) in finset.range (n + 1), f i) / f n = ∏ (i : ) in finset.range n, f i
theorem finset.sum_range_succ_sub_top {β : Type u_1} (f : → β) {n : } [add_comm_group β] :
∑ (i : ) in finset.range (n + 1), f i - f n = ∑ (i : ) in finset.range n, f i
theorem finset.prod_Ico_div_bot {β : Type u_1} (f : → β) {m n : } [comm_group β] (hmn : m < n) :
(∏ (i : ) in finset.Ico m n, f i) / f m = ∏ (i : ) in finset.Ico (m + 1) n, f i
theorem finset.sum_Ico_sub_bot {β : Type u_1} (f : → β) {m n : } [add_comm_group β] (hmn : m < n) :
∑ (i : ) in finset.Ico m n, f i - f m = ∑ (i : ) in finset.Ico (m + 1) n, f i
theorem finset.prod_Ico_succ_div_top {β : Type u_1} (f : → β) {m n : } [comm_group β] (hmn : m n) :
(∏ (i : ) in finset.Ico m (n + 1), f i) / f n = ∏ (i : ) in finset.Ico m n, f i
theorem finset.sum_Ico_succ_sub_top {β : Type u_1} (f : → β) {m n : } [add_comm_group β] (hmn : m n) :
∑ (i : ) in finset.Ico m (n + 1), f i - f n = ∑ (i : ) in finset.Ico m n, f i
theorem finset.sum_Ico_by_parts {R : Type u_1} {M : Type u_2} [ring R] [add_comm_group M] [module R M] (f : → R) (g : → M) {m n : } (hmn : m < n) :
∑ (i : ) in finset.Ico m n, f i g i = f (n - 1) ∑ (i : ) in finset.range n, g i - f m ∑ (i : ) in finset.range m, g i - ∑ (i : ) in finset.Ico m (n - 1), (f (i + 1) - f i) ∑ (i : ) in finset.range (i + 1), g i

Summation by parts, also known as Abel's lemma or an Abel transformation

theorem finset.sum_range_by_parts {R : Type u_1} {M : Type u_2} [ring R] [add_comm_group M] [module R M] (f : → R) (g : → M) (n : ) :
∑ (i : ) in finset.range n, f i g i = f (n - 1) ∑ (i : ) in finset.range n, g i - ∑ (i : ) in finset.range (n - 1), (f (i + 1) - f i) ∑ (i : ) in finset.range (i + 1), g i

Summation by parts for ranges