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

Commit 0504425

Browse files
committed
feat(analysis/inner_product_space/basic): criterion for summability (#11224)
In a complete inner product space `E`, a family `f` of mutually-orthogonal elements of `E` is summable, if and only if `(λ i, ∥f i∥ ^ 2)` is summable.
1 parent 6446ba8 commit 0504425

File tree

3 files changed

+116
-1
lines changed

3 files changed

+116
-1
lines changed

src/algebra/big_operators/basic.lean

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1277,6 +1277,13 @@ lemma prod_zpow (f : α → β) (s : finset α) (n : ℤ) :
12771277
(∏ a in s, f a) ^ n = ∏ a in s, (f a) ^ n :=
12781278
multiset.prod_map_zpow.symm
12791279

1280+
@[to_additive]
1281+
lemma prod_sdiff_div_prod_sdiff [decidable_eq α] :
1282+
(∏ (x : α) in s₂ \ s₁, f x) / (∏ (x : α) in s₁ \ s₂, f x)
1283+
= (∏ (x : α) in s₂, f x) / (∏ (x : α) in s₁, f x) :=
1284+
by simp [← finset.prod_sdiff (@inf_le_left _ _ s₁ s₂),
1285+
← finset.prod_sdiff (@inf_le_right _ _ s₁ s₂)]
1286+
12801287
end comm_group
12811288

12821289
@[simp] theorem card_sigma {σ : α → Type*} (s : finset α) (t : Π a, finset (σ a)) :

src/algebra/big_operators/order.lean

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -118,9 +118,13 @@ or equal to the corresponding summand `g i` of another finite sum, then
118118
`∑ i in s, f i ≤ ∑ i in s, g i`. -/
119119
add_decl_doc sum_le_sum
120120

121-
@[to_additive sum_nonneg] lemma one_le_prod' (h : ∀i ∈ s, 1 ≤ f i) : 1 ≤ (∏ i in s, f i) :=
121+
@[to_additive sum_nonneg] lemma one_le_prod' (h : ∀i ∈ s, 1 ≤ f i) : 1 ≤ (∏ i in s, f i) :=
122122
le_trans (by rw prod_const_one) (prod_le_prod'' h)
123123

124+
@[to_additive finset.sum_nonneg']
125+
lemma one_le_prod'' (h : ∀ (i : ι), 1 ≤ f i) : 1 ≤ ∏ (i : ι) in s, f i :=
126+
finset.one_le_prod' (λ i hi, h i)
127+
124128
@[to_additive sum_nonpos] lemma prod_le_one' (h : ∀i ∈ s, f i ≤ 1) : (∏ i in s, f i) ≤ 1 :=
125129
(prod_le_prod'' h).trans_eq (by rw prod_const_one)
126130

@@ -207,6 +211,16 @@ lemma abs_sum_le_sum_abs {G : Type*} [linear_ordered_add_comm_group G] (f : ι
207211
|∑ i in s, f i| ≤ ∑ i in s, |f i| :=
208212
le_sum_of_subadditive _ abs_zero abs_add s f
209213

214+
lemma abs_sum_of_nonneg {G : Type*} [linear_ordered_add_comm_group G] {f : ι → G} {s : finset ι}
215+
(hf : ∀ i ∈ s, 0 ≤ f i) :
216+
|∑ (i : ι) in s, f i| = ∑ (i : ι) in s, f i :=
217+
by rw abs_of_nonneg (finset.sum_nonneg hf)
218+
219+
lemma abs_sum_of_nonneg' {G : Type*} [linear_ordered_add_comm_group G] {f : ι → G} {s : finset ι}
220+
(hf : ∀ i, 0 ≤ f i) :
221+
|∑ (i : ι) in s, f i| = ∑ (i : ι) in s, f i :=
222+
by rw abs_of_nonneg (finset.sum_nonneg' hf)
223+
210224
lemma abs_prod {R : Type*} [linear_ordered_comm_ring R] {f : ι → R} {s : finset ι} :
211225
|∏ x in s, f x| = ∏ x in s, |f x| :=
212226
(abs_hom.to_monoid_hom : R →* R).map_prod _ _

src/analysis/inner_product_space/basic.lean

Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1663,6 +1663,27 @@ calc ⟪(v : E), ∑ j : ι, l j⟫
16631663
congr_arg (finset.sum finset.univ) $ funext $ λ j, (hV.eq_ite v (l j))
16641664
... = ⟪v, l i⟫ : by simp
16651665

1666+
lemma orthogonal_family.inner_sum (l₁ l₂ : Π i, V i) (s : finset ι) :
1667+
⟪∑ i in s, (l₁ i : E), ∑ j in s, (l₂ j : E)⟫ = ∑ i in s, ⟪l₁ i, l₂ i⟫ :=
1668+
by classical;
1669+
calc ⟪∑ i in s, (l₁ i : E), ∑ j in s, (l₂ j : E)⟫
1670+
= ∑ j in s, ∑ i in s, ⟪(l₁ i : E), l₂ j⟫ : by simp [sum_inner, inner_sum]
1671+
... = ∑ j in s, ∑ i in s, ite (i = j) ⟪(l₁ i : E), l₂ j⟫ 0 :
1672+
begin
1673+
congr' with i,
1674+
congr' with j,
1675+
apply hV.eq_ite,
1676+
end
1677+
... = ∑ i in s, ⟪l₁ i, l₂ i⟫ : by simp [finset.sum_ite_of_true]
1678+
1679+
lemma orthogonal_family.norm_sum (l : Π i, V i) (s : finset ι) :
1680+
∥∑ i in s, (l i : E)∥ ^ 2 = ∑ i in s, ∥l i∥ ^ 2 :=
1681+
begin
1682+
have : (∥∑ i in s, (l i : E)∥ ^ 2 : 𝕜) = ∑ i in s, ∥l i∥ ^ 2,
1683+
{ simp [← inner_self_eq_norm_sq_to_K, hV.inner_sum] },
1684+
exact_mod_cast this,
1685+
end
1686+
16661687
/-- An orthogonal family forms an independent family of subspaces; that is, any collection of
16671688
elements each from a different subspace in the family is linearly independent. In particular, the
16681689
pairwise intersections of elements of the family are 0. -/
@@ -1708,8 +1729,81 @@ lemma direct_sum.submodule_is_internal.collected_basis_orthonormal
17081729
{v_family : Π i, basis (α i) 𝕜 (V i)} (hv_family : ∀ i, orthonormal 𝕜 (v_family i)) :
17091730
orthonormal 𝕜 (hV_sum.collected_basis v_family) :=
17101731
by simpa using hV.orthonormal_sigma_orthonormal hv_family
1732+
1733+
lemma orthogonal_family.norm_sq_diff_sum (f : Π i, V i) (s₁ s₂ : finset ι) :
1734+
∥∑ i in s₁, (f i : E) - ∑ i in s₂, f i∥ ^ 2
1735+
= ∑ i in s₁ \ s₂, ∥f i∥ ^ 2 + ∑ i in s₂ \ s₁, ∥f i∥ ^ 2 :=
1736+
begin
1737+
rw [← finset.sum_sdiff_sub_sum_sdiff, sub_eq_add_neg, ← finset.sum_neg_distrib],
1738+
let F : Π i, V i := λ i, if i ∈ s₁ then f i else - (f i),
1739+
have hF₁ : ∀ i ∈ s₁ \ s₂, F i = f i := λ i hi, if_pos (finset.sdiff_subset _ _ hi),
1740+
have hF₂ : ∀ i ∈ s₂ \ s₁, F i = - f i := λ i hi, if_neg (finset.mem_sdiff.mp hi).2,
1741+
have hF : ∀ i, ∥F i∥ = ∥f i∥,
1742+
{ intros i,
1743+
dsimp [F],
1744+
split_ifs;
1745+
simp, },
1746+
have : ∥∑ i in s₁ \ s₂, (F i : E) + ∑ i in s₂ \ s₁, F i∥ ^ 2 =
1747+
∑ i in s₁ \ s₂, ∥F i∥ ^ 2 + ∑ i in s₂ \ s₁, ∥F i∥ ^ 2,
1748+
{ have hs : disjoint (s₁ \ s₂) (s₂ \ s₁) := disjoint_sdiff_sdiff,
1749+
simpa only [finset.sum_union hs] using hV.norm_sum F (s₁ \ s₂ ∪ s₂ \ s₁) },
1750+
convert this using 4,
1751+
{ refine finset.sum_congr rfl (λ i hi, _),
1752+
simp [hF₁ i hi] },
1753+
{ refine finset.sum_congr rfl (λ i hi, _),
1754+
simp [hF₂ i hi] },
1755+
{ simp [hF] },
1756+
{ simp [hF] },
1757+
end
1758+
17111759
omit dec_ι
17121760

1761+
/-- A family `f` of mutually-orthogonal elements of `E` is summable, if and only if
1762+
`(λ i, ∥f i∥ ^ 2)` is summable. -/
1763+
lemma orthogonal_family.summable_iff_norm_sq_summable [complete_space E] (f : Π i, V i) :
1764+
summable (λ i, (f i : E)) ↔ summable (λ i, ∥f i∥ ^ 2) :=
1765+
begin
1766+
classical,
1767+
simp only [summable_iff_cauchy_seq_finset, normed_group.cauchy_seq_iff, real.norm_eq_abs],
1768+
split,
1769+
{ intros hf ε hε,
1770+
obtain ⟨a, H⟩ := hf _ (sqrt_pos.mpr hε),
1771+
use a,
1772+
intros s₁ hs₁ s₂ hs₂,
1773+
rw ← finset.sum_sdiff_sub_sum_sdiff,
1774+
refine (_root_.abs_sub _ _).trans_lt _,
1775+
have : ∀ i, 0 ≤ ∥f i∥ ^ 2 := λ i : ι, sq_nonneg _,
1776+
simp only [finset.abs_sum_of_nonneg' this],
1777+
have : ∑ i in s₁ \ s₂, ∥f i∥ ^ 2 + ∑ i in s₂ \ s₁, ∥f i∥ ^ 2 < (sqrt ε) ^ 2,
1778+
{ rw ← hV.norm_sq_diff_sum,
1779+
apply sq_lt_sq,
1780+
rw _root_.abs_of_nonneg (norm_nonneg _),
1781+
exact H s₁ hs₁ s₂ hs₂ },
1782+
have hη := sq_sqrt (le_of_lt hε),
1783+
linarith },
1784+
{ intros hf ε hε,
1785+
have hε' : 0 < ε ^ 2 / 2 := half_pos (sq_pos_of_pos hε),
1786+
obtain ⟨a, H⟩ := hf _ hε',
1787+
use a,
1788+
intros s₁ hs₁ s₂ hs₂,
1789+
refine (abs_lt_of_sq_lt_sq' _ (le_of_lt hε)).2,
1790+
have has : a ≤ s₁ ⊓ s₂ := le_inf hs₁ hs₂,
1791+
rw hV.norm_sq_diff_sum,
1792+
have Hs₁ : ∑ (x : ι) in s₁ \ s₂, ∥f x∥ ^ 2 < ε ^ 2 / 2,
1793+
{ convert H _ hs₁ _ has,
1794+
have : s₁ ⊓ s₂ ⊆ s₁ := finset.inter_subset_left _ _,
1795+
rw [← finset.sum_sdiff this, add_tsub_cancel_right, finset.abs_sum_of_nonneg'],
1796+
{ simp },
1797+
{ exact λ i, sq_nonneg _ } },
1798+
have Hs₂ : ∑ (x : ι) in s₂ \ s₁, ∥f x∥ ^ 2 < ε ^ 2 /2,
1799+
{ convert H _ hs₂ _ has,
1800+
have : s₁ ⊓ s₂ ⊆ s₂ := finset.inter_subset_right _ _,
1801+
rw [← finset.sum_sdiff this, add_tsub_cancel_right, finset.abs_sum_of_nonneg'],
1802+
{ simp },
1803+
{ exact λ i, sq_nonneg _ } },
1804+
linarith },
1805+
end
1806+
17131807
end orthogonal_family
17141808

17151809
section is_R_or_C_to_real

0 commit comments

Comments
 (0)