mathlib documentation

algebra.​big_operators.​intervals

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.​sum_Ico_add {δ : Type u_1} [add_comm_monoid δ] (f : → δ) (m n k : ) :
(finset.Ico m n).sum (λ (l : ), f (k + l)) = (finset.Ico (m + k) (n + k)).sum (λ (l : ), f l)

theorem finset.​prod_Ico_add {β : Type v} [comm_monoid β] (f : → β) (m n k : ) :
(finset.Ico m n).prod (λ (l : ), f (k + l)) = (finset.Ico (m + k) (n + k)).prod (λ (l : ), f l)

theorem finset.​sum_Ico_succ_top {δ : Type u_1} [add_comm_monoid δ] {a b : } (hab : a b) (f : → δ) :
(finset.Ico a (b + 1)).sum (λ (k : ), f k) = (finset.Ico a b).sum (λ (k : ), f k) + f b

theorem finset.​prod_Ico_succ_top {β : Type v} [comm_monoid β] {a b : } (hab : a b) (f : → β) :
(finset.Ico a (b + 1)).prod (λ (k : ), f k) = (finset.Ico a b).prod (λ (k : ), f k) * f b

theorem finset.​sum_eq_sum_Ico_succ_bot {δ : Type u_1} [add_comm_monoid δ] {a b : } (hab : a < b) (f : → δ) :
(finset.Ico a b).sum (λ (k : ), f k) = f a + (finset.Ico (a + 1) b).sum (λ (k : ), f k)

theorem finset.​prod_eq_prod_Ico_succ_bot {β : Type v} [comm_monoid β] {a b : } (hab : a < b) (f : → β) :
(finset.Ico a b).prod (λ (k : ), f k) = f a * (finset.Ico (a + 1) b).prod (λ (k : ), f k)

theorem finset.​prod_Ico_consecutive {β : Type v} [comm_monoid β] (f : → β) {m n k : } :
m nn k(finset.Ico m n).prod (λ (i : ), f i) * (finset.Ico n k).prod (λ (i : ), f i) = (finset.Ico m k).prod (λ (i : ), f i)

theorem finset.​sum_Ico_consecutive {β : Type v} [add_comm_monoid β] (f : → β) {m n k : } :
m nn k(finset.Ico m n).sum (λ (i : ), f i) + (finset.Ico n k).sum (λ (i : ), f i) = (finset.Ico m k).sum (λ (i : ), f i)

theorem finset.​sum_range_add_sum_Ico {β : Type v} [add_comm_monoid β] (f : → β) {m n : } :
m n(finset.range m).sum (λ (k : ), f k) + (finset.Ico m n).sum (λ (k : ), f k) = (finset.range n).sum (λ (k : ), f k)

theorem finset.​prod_range_mul_prod_Ico {β : Type v} [comm_monoid β] (f : → β) {m n : } :
m n(finset.range m).prod (λ (k : ), f k) * (finset.Ico m n).prod (λ (k : ), f k) = (finset.range n).prod (λ (k : ), f k)

theorem finset.​sum_Ico_eq_add_neg {δ : Type u_1} [add_comm_group δ] (f : → δ) {m n : } :
m n(finset.Ico m n).sum (λ (k : ), f k) = (finset.range n).sum (λ (k : ), f k) + -(finset.range m).sum (λ (k : ), f k)

theorem finset.​prod_Ico_eq_mul_inv {δ : Type u_1} [comm_group δ] (f : → δ) {m n : } :
m n(finset.Ico m n).prod (λ (k : ), f k) = (finset.range n).prod (λ (k : ), f k) * ((finset.range m).prod (λ (k : ), f k))⁻¹

theorem finset.​sum_Ico_eq_sub {δ : Type u_1} [add_comm_group δ] (f : → δ) {m n : } :
m n(finset.Ico m n).sum (λ (k : ), f k) = (finset.range n).sum (λ (k : ), f k) - (finset.range m).sum (λ (k : ), f k)

theorem finset.​prod_Ico_eq_prod_range {β : Type v} [comm_monoid β] (f : → β) (m n : ) :
(finset.Ico m n).prod (λ (k : ), f k) = (finset.range (n - m)).prod (λ (k : ), f (m + k))

theorem finset.​sum_Ico_eq_sum_range {β : Type v} [add_comm_monoid β] (f : → β) (m n : ) :
(finset.Ico m n).sum (λ (k : ), f k) = (finset.range (n - m)).sum (λ (k : ), f (m + k))

theorem finset.​prod_Ico_reflect {β : Type v} [comm_monoid β] (f : → β) (k : ) {m n : } :
m n + 1(finset.Ico k m).prod (λ (j : ), f (n - j)) = (finset.Ico (n + 1 - m) (n + 1 - k)).prod (λ (j : ), f j)

theorem finset.​sum_Ico_reflect {δ : Type u_1} [add_comm_monoid δ] (f : → δ) (k : ) {m n : } :
m n + 1(finset.Ico k m).sum (λ (j : ), f (n - j)) = (finset.Ico (n + 1 - m) (n + 1 - k)).sum (λ (j : ), f j)

theorem finset.​prod_range_reflect {β : Type v} [comm_monoid β] (f : → β) (n : ) :
(finset.range n).prod (λ (j : ), f (n - 1 - j)) = (finset.range n).prod (λ (j : ), f j)

theorem finset.​sum_range_reflect {δ : Type u_1} [add_comm_monoid δ] (f : → δ) (n : ) :
(finset.range n).sum (λ (j : ), f (n - 1 - j)) = (finset.range n).sum (λ (j : ), f j)

@[simp]
theorem finset.​prod_Ico_id_eq_fact (n : ) :
(finset.Ico 1 (n + 1)).prod (λ (x : ), x) = n.fact

theorem finset.​sum_range_id_mul_two (n : ) :
(finset.range n).sum (λ (i : ), i) * 2 = n * (n - 1)

Gauss' summation formula

theorem finset.​sum_range_id (n : ) :
(finset.range n).sum (λ (i : ), i) = n * (n - 1) / 2

Gauss' summation formula