Skip to content
This repository was archived by the owner on Jul 24, 2024. It is now read-only.

Commit 56f6c8e

Browse files
committed
chore(algebra/big_operators/intervals): Move and golf sum_range_sub_sum_range (#13359)
Move sum_range_sub_sum_range to a better file. Also implemented the golf demonstrated in this paper https://arxiv.org/pdf/2202.01344.pdf from @spolu.
1 parent 603db27 commit 56f6c8e

File tree

2 files changed

+16
-17
lines changed

2 files changed

+16
-17
lines changed

src/algebra/big_operators/intervals.lean

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -81,9 +81,22 @@ lemma prod_Ico_eq_mul_inv {δ : Type*} [comm_group δ] (f : ℕ → δ) {m n :
8181
(∏ k in Ico m n, f k) = (∏ k in range n, f k) * (∏ k in range m, f k)⁻¹ :=
8282
eq_mul_inv_iff_mul_eq.2 $ by rw [mul_comm]; exact prod_range_mul_prod_Ico f h
8383

84-
lemma sum_Ico_eq_sub {δ : Type*} [add_comm_group δ] (f : ℕ → δ) {m n : ℕ} (h : m ≤ n) :
85-
(∑ k in Ico m n, f k) = (∑ k in range n, f k) - (∑ k in range m, f k) :=
86-
by simpa only [sub_eq_add_neg] using sum_Ico_eq_add_neg f h
84+
@[to_additive]
85+
lemma prod_Ico_eq_div {δ : Type*} [comm_group δ] (f : ℕ → δ) {m n : ℕ} (h : m ≤ n) :
86+
(∏ k in Ico m n, f k) = (∏ k in range n, f k) / (∏ k in range m, f k) :=
87+
by simpa only [div_eq_mul_inv] using prod_Ico_eq_mul_inv f h
88+
89+
@[to_additive]
90+
lemma prod_range_sub_prod_range {α : Type*} [comm_group α] {f : ℕ → α}
91+
{n m : ℕ} (hnm : n ≤ m) : (∏ k in range m, f k) / (∏ k in range n, f k) =
92+
∏ k in (range m).filter (λ k, n ≤ k), f k :=
93+
begin
94+
rw [← prod_Ico_eq_div f hnm],
95+
congr,
96+
apply finset.ext,
97+
simp only [mem_Ico, mem_filter, mem_range, *],
98+
tauto,
99+
end
87100

88101
/-- The two ways of summing over `(i,j)` in the range `a<=i<=j<b` are equal. -/
89102
lemma sum_Ico_Ico_comm {M : Type*} [add_comm_monoid M]

src/data/complex/exponential.lean

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -197,20 +197,6 @@ by rw [sum_sigma', sum_sigma']; exact sum_bij
197197
mem_range.2 (nat.lt_succ_of_le (nat.le_add_left _ _))⟩,
198198
sigma.mk.inj_iff.2 ⟨rfl, heq_of_eq (add_tsub_cancel_right _ _).symm⟩⟩⟩)
199199

200-
-- TODO move to src/algebra/big_operators/basic.lean, rewrite with comm_group, and make to_additive
201-
lemma sum_range_sub_sum_range {α : Type*} [add_comm_group α] {f : ℕ → α}
202-
{n m : ℕ} (hnm : n ≤ m) : ∑ k in range m, f k - ∑ k in range n, f k =
203-
∑ k in (range m).filter (λ k, n ≤ k), f k :=
204-
begin
205-
rw [← sum_sdiff (@filter_subset _ (λ k, n ≤ k) _ (range m)),
206-
sub_eq_iff_eq_add, ← eq_sub_iff_add_eq, add_sub_cancel'],
207-
refine finset.sum_congr
208-
(finset.ext $ λ a, ⟨λ h, by simp at *; tauto,
209-
λ h, have ham : a < m := lt_of_lt_of_le (mem_range.1 h) hnm,
210-
by simp * at *⟩)
211-
(λ _ _, rfl),
212-
end
213-
214200
end
215201

216202
section no_archimedean

0 commit comments

Comments
 (0)