Duals of ℓ^p and c₀
DefinitionCanonical duality pairing between \(\ell^q\) and \(\ell^p\)#✓fully proved
The canonical pairing ℓ^q × ℓ^p → 𝕜, as a continuous linear map
ℓ^q →L[𝕜] (ℓ^p →L[𝕜] 𝕜).
noncomputable def lpDualPairing :
lp (fun _ : ι => 𝕜) q →L[𝕜] StrongDual 𝕜 (lp (fun _ : ι => 𝕜) p) := by
exact lp.dualPairing (K := 1) q p (fun _ => ContinuousLinearMap.mul 𝕜 𝕜)
(fun _ => by rw [NNReal.coe_one]; exact ContinuousLinearMap.opNorm_mul_le 𝕜 𝕜)
TheoremDuality pairing as a sum of coordinatewise products#✓fully proved
The pairing is given by the sum of coordinatewise products.
theorem lpDualPairing_apply (a : lp (fun _ : ι => 𝕜) q)
(x : lp (fun _ : ι => 𝕜) p) :
lpDualPairing (𝕜 := 𝕜) (ι := ι) (p := p) (q := q) a x = ∑' i, a i * x i
noncomputable def lpDualPairing :
lp (fun _ : ι => 𝕜) q →L[𝕜] StrongDual 𝕜 (lp (fun _ : ι => 𝕜) p) := by
exact lp.dualPairing (K := 1) q p (fun _ => ContinuousLinearMap.mul 𝕜 𝕜)
(fun _ => by rw [NNReal.coe_one]; exact ContinuousLinearMap.opNorm_mul_le 𝕜 𝕜)
MathlibExt/Analysis/Normed/Lp/Dual.lean:271
Uses 1 · Used by 2
TheoremDuality pairing has operator norm at most one#✓fully proved
The pairing has operator norm at most one.
theorem norm_lpDualPairing_le :
‖lpDualPairing (𝕜 := 𝕜) (ι := ι) (p := p) (q := q)‖ ≤ 1
noncomputable def lpDualPairing :
lp (fun _ : ι => 𝕜) q →L[𝕜] StrongDual 𝕜 (lp (fun _ : ι => 𝕜) p) := by
exact lp.dualPairing (K := 1) q p (fun _ => ContinuousLinearMap.mul 𝕜 𝕜)
(fun _ => by rw [NNReal.coe_one]; exact ContinuousLinearMap.opNorm_mul_le 𝕜 𝕜)
MathlibExt/Analysis/Normed/Lp/Dual.lean:271
Uses 1 · Used by 1
TheoremEvery functional on \(\ell^p\) comes from an \(\ell^q\) sequence#✓fully proved
The pairing is surjective: every continuous linear functional on ℓ^p is given
by pairing with some ℓ^q sequence.
theorem lpDualPairing_surjective (hp_top : p ≠ ⊤) :
Function.Surjective (lpDualPairing (𝕜 := 𝕜) (ι := ι) (p := p) (q := q))
noncomputable def lpDualPairing :
lp (fun _ : ι => 𝕜) q →L[𝕜] StrongDual 𝕜 (lp (fun _ : ι => 𝕜) p) := by
exact lp.dualPairing (K := 1) q p (fun _ => ContinuousLinearMap.mul 𝕜 𝕜)
(fun _ => by rw [NNReal.coe_one]; exact ContinuousLinearMap.opNorm_mul_le 𝕜 𝕜)
MathlibExt/Analysis/Normed/Lp/Dual.lean:271
Uses 2 · Used by 1
TheoremDuality pairing is norm-preserving#✓fully proved
The pairing is norm-preserving.
theorem lpDualPairing_norm (hp_top : p ≠ ⊤) (a : lp (fun _ : ι => 𝕜) q) :
‖lpDualPairing (𝕜 := 𝕜) (ι := ι) (p := p) (q := q) a‖ = ‖a‖
noncomputable def lpDualPairing :
lp (fun _ : ι => 𝕜) q →L[𝕜] StrongDual 𝕜 (lp (fun _ : ι => 𝕜) p) := by
exact lp.dualPairing (K := 1) q p (fun _ => ContinuousLinearMap.mul 𝕜 𝕜)
(fun _ => by rw [NNReal.coe_one]; exact ContinuousLinearMap.opNorm_mul_le 𝕜 𝕜)
MathlibExt/Analysis/Normed/Lp/Dual.lean:271
Uses 3 · Used by 1
DefinitionDual of \(\ell^p\) is isometric to \(\ell^q\)#✓fully proved
The dual of ℓ^p is isometrically isomorphic to ℓ^q.
noncomputable def lpDualEquiv (hp_top : p ≠ ⊤) :
lp (fun _ : ι => 𝕜) q ≃ₗᵢ[𝕜] StrongDual 𝕜 (lp (fun _ : ι => 𝕜) p) := by
classical
exact LinearIsometryEquiv.ofSurjective
⟨(lpDualPairing (𝕜 := 𝕜) (ι := ι) (p := p) (q := q)).toLinearMap,
fun a => lpDualPairing_norm hp_top a⟩
(lpDualPairing_surjective hp_top)
DefinitionThe subspace of null sequences in \(\ell^\infty\)#✓fully proved
Let \(\mathbb{K}\) be \(\mathbb{R}\) or \(\mathbb{C}\) and let \(\iota\) be an index type. The sequences \(x \in \ell^\infty(\iota, \mathbb{K})\) whose coordinates \(x_i\) tend to \(0\) along the cofinite filter on \(\iota\) form a \(\mathbb{K}\)-linear subspace of \(\ell^\infty(\iota, \mathbb{K})\).
MathlibExt.Analysis.Normed.Lp.DualC0.c0Submodule · 22 lines
noncomputable def c0Submodule (𝕜 : Type u) [RCLike 𝕜] (ι : Type v) :
Submodule 𝕜 (lp (fun _ : ι => 𝕜) ∞) where
carrier := { f | Filter.Tendsto (⇑f) Filter.cofinite (𝓝 0) }
zero_mem' := by
show Filter.Tendsto (fun _ : ι => (0 : 𝕜)) Filter.cofinite (𝓝 0)
exact tendsto_const_nhds
add_mem' := by
intro f g hf hg
show Filter.Tendsto (⇑(f + g)) Filter.cofinite (𝓝 0)
have hfun : (⇑(f + g) : ι → 𝕜) = fun x => (f : ι → 𝕜) x + (g : ι → 𝕜) x := by
funext x
simp
rw [hfun]
simpa only [add_zero] using hf.add hg
smul_mem' := by
intro c f hf
show Filter.Tendsto (⇑(c • f)) Filter.cofinite (𝓝 0)
have hfun : (⇑(c • f) : ι → 𝕜) = fun x => c • (f : ι → 𝕜) x := by
funext x
simp [lp.coeFn_smul]
rw [hfun]
simpa only [smul_zero] using Filter.Tendsto.const_smul hf c
AbbreviationThe sequence space \(c_0\)#✓fully proved
Let \(\mathbb{K}\) be \(\mathbb{R}\) or \(\mathbb{C}\) and let \(\iota\) be a type. The space \(c_0(\iota, \mathbb{K})\) consists of the functions \(x : \iota \to \mathbb{K}\) that tend to \(0\) along the cofinite filter, that is, for every \(\varepsilon > 0\) the set \(\{i : |x_i| \ge \varepsilon\}\) is finite, with pointwise operations and the supremum norm \(\|x\|_\infty = \sup_i |x_i|\). It is realized as the space of continuous functions vanishing at infinity on \(\iota\) with the discrete topology; no topology on \(\iota\) is assumed.
abbrev c0 (𝕜 : Type u) [RCLike 𝕜] (ι : Type v) : Type (max u v) :=
@ZeroAtInftyContinuousMap ι 𝕜 ⊥ _ _
Used by 35
TheoremElements of \(c_0\) tend to zero along the cofinite filter#✓fully proved
Let \(\mathbb{K}\) be \(\mathbb{R}\) or \(\mathbb{C}\), let \(\iota\) be an index type, and let \(c_0(\iota, \mathbb{K})\) be the space of functions \(\iota \to \mathbb{K}\) vanishing at infinity for the discrete topology on \(\iota\). For every \(x \in c_0(\iota, \mathbb{K})\), the coordinates \(x_i\) tend to \(0\) along the cofinite filter on \(\iota\).
theorem c0_tendsto_zero (x : c0 𝕜 ι) : Tendsto (x : ι → 𝕜) cofinite (𝓝 0)
abbrev c0 (𝕜 : Type u) [RCLike 𝕜] (ι : Type v) : Type (max u v) :=
@ZeroAtInftyContinuousMap ι 𝕜 ⊥ _ _
MathlibExt/Analysis/Normed/Lp/DualC0.lean:86
Uses 1 · Used by 2
TheoremCoordinates are bounded by the norm in \(c_0\)#✓fully proved
Let \(\mathbb{K}\) be \(\mathbb{R}\) or \(\mathbb{C}\), and let \(c_0(\iota, \mathbb{K})\) be the space of families \(x = (x_i)_{i \in \iota}\) in \(\mathbb{K}\) that tend to \(0\) along the cofinite filter, with the supremum norm. Then \(|x_i| \le \|x\|\) for every \(x \in c_0(\iota, \mathbb{K})\) and every index \(i \in \iota\).
theorem c0_apply_norm_le (x : c0 𝕜 ι) (i : ι) : ‖(x : ι → 𝕜) i‖ ≤ ‖x‖
abbrev c0 (𝕜 : Type u) [RCLike 𝕜] (ι : Type v) : Type (max u v) :=
@ZeroAtInftyContinuousMap ι 𝕜 ⊥ _ _
MathlibExt/Analysis/Normed/Lp/DualC0.lean:86
DefinitionInclusion of \(c_0\) in \(\ell^\infty\)#✓fully proved
Let \(\mathbb{K}\) be \(\mathbb{R}\) or \(\mathbb{C}\) and let \(\iota\) be an index type. Every \(x \in c_0(\iota, \mathbb{K})\) is a bounded sequence, and this map sends it to the element of \(\ell^\infty(\iota, \mathbb{K})\) with the same coordinates \(x_i\).
noncomputable def c0ToLp (x : c0 𝕜 ι) : lp (fun _ : ι => 𝕜) ∞ :=
⟨(x : ι → 𝕜), memℓp_infty ⟨‖x‖, by
rintro _ ⟨i, rfl⟩
exact c0_apply_norm_le x i⟩⟩
abbrev c0 (𝕜 : Type u) [RCLike 𝕜] (ι : Type v) : Type (max u v) :=
@ZeroAtInftyContinuousMap ι 𝕜 ⊥ _ _
MathlibExt/Analysis/Normed/Lp/DualC0.lean:86
Uses 2 · Used by 4
TheoremThe \(c_0\) norm is the supremum norm#✓fully proved
Let \(\mathbb{K}\) be the real or complex field and \(\iota\) an index type. For every \(x \in c_0(\iota, \mathbb{K})\), the norm of \(x\) equals the norm \(\sup_{i \in \iota} |x_i|\) of \(x\) viewed as an element of \(\ell^\infty(\iota, \mathbb{K})\).
theorem c0_norm (x : c0 𝕜 ι) : ‖x‖ = ‖(x : lp (fun _ : ι => 𝕜) ∞)‖
abbrev c0 (𝕜 : Type u) [RCLike 𝕜] (ι : Type v) : Type (max u v) :=
@ZeroAtInftyContinuousMap ι 𝕜 ⊥ _ _
MathlibExt/Analysis/Normed/Lp/DualC0.lean:86
Uses 3 · Used by 2
DefinitionSequences in \(\ell^\infty\) tending to zero as elements of \(c_0\)#✓fully proved
Let \(\mathbb{K}\) be \(\mathbb{R}\) or \(\mathbb{C}\) and let \(\iota\) be an index type. A bounded sequence \(x \in \ell^\infty(\iota, \mathbb{K})\) whose coordinates \(x_i\) tend to \(0\) along the cofinite filter on \(\iota\) defines the element of \(c_0(\iota, \mathbb{K})\) with the same coordinates.
noncomputable def c0OfLp (x : lp (fun _ : ι => 𝕜) ∞)
(hx : Tendsto (x : ι → 𝕜) cofinite (𝓝 0)) : c0 𝕜 ι := by
letI : TopologicalSpace ι := ⊥
letI : DiscreteTopology ι := ⟨rfl⟩
exact ZeroAtInftyContinuousMap.mk
⟨(x : ι → 𝕜), continuous_of_discreteTopology⟩ (by
rw [Filter.cocompact_eq_cofinite]
exact hx)
abbrev c0 (𝕜 : Type u) [RCLike 𝕜] (ι : Type v) : Type (max u v) :=
@ZeroAtInftyContinuousMap ι 𝕜 ⊥ _ _
MathlibExt/Analysis/Normed/Lp/DualC0.lean:86
Uses 1 · Used by 2
Definition\(c_0\) is isometrically isomorphic to the null sequences in \(\ell^\infty\)#✓fully proved
Let \(\mathbb{K}\) be the real or complex field and \(\iota\) an index type. The map that sends \(x \in c_0(\iota, \mathbb{K})\) to the same sequence \((x_i)_{i \in \iota}\), viewed in the subspace of \(\ell^\infty(\iota, \mathbb{K})\) of sequences tending to \(0\) along the cofinite filter, is a linear isometric equivalence onto that subspace.
MathlibExt.Analysis.Normed.Lp.DualC0.c0LpEquiv · 24 lines
noncomputable def c0LpEquiv : c0 𝕜 ι ≃ₗᵢ[𝕜] ↥(c0Submodule 𝕜 ι) := by
letI : TopologicalSpace ι := ⊥
exact
{ toFun x := ⟨(x : lp (fun _ : ι => 𝕜) ∞), c0_tendsto_zero x⟩
invFun x := c0OfLp (x : lp (fun _ : ι => 𝕜) ∞) x.2
left_inv x := by
apply ZeroAtInftyContinuousMap.ext
intro i
rfl
right_inv x := by
apply Subtype.ext
apply lp.ext
rfl
map_add' x y := by
apply Subtype.ext
apply lp.ext
funext i
rfl
map_smul' c x := by
apply Subtype.ext
apply lp.ext
funext i
rfl
norm_map' x := (c0_norm x).symm }
abbrev c0 (𝕜 : Type u) [RCLike 𝕜] (ι : Type v) : Type (max u v) :=
@ZeroAtInftyContinuousMap ι 𝕜 ⊥ _ _
MathlibExt/Analysis/Normed/Lp/DualC0.lean:86
noncomputable def c0Submodule (𝕜 : Type u) [RCLike 𝕜] (ι : Type v) :
Submodule 𝕜 (lp (fun _ : ι => 𝕜) ∞) where
carrier := { f | Filter.Tendsto (⇑f) Filter.cofinite (𝓝 0) }
zero_mem' := by
show Filter.Tendsto (fun _ : ι => (0 : 𝕜)) Filter.cofinite (𝓝 0)
exact tendsto_const_nhds
add_mem' := by
intro f g hf hg
show Filter.Tendsto (⇑(f + g)) Filter.cofinite (𝓝 0)
have hfun : (⇑(f + g) : ι → 𝕜) = fun x => (f : ι → 𝕜) x + (g : ι → 𝕜) x := by
funext x
simp
⋯
MathlibExt/Analysis/Normed/Lp/DualC0.lean:61
Uses 6
DefinitionSequence supported at one index#✓fully proved
Let \(\mathbb{K}\) be \(\mathbb{R}\) or \(\mathbb{C}\) and let \(\iota\) be an index type. For an index \(i \in \iota\) and a scalar \(a \in \mathbb{K}\), this is the element of \(c_0(\iota, \mathbb{K})\) whose \(i\)-th coordinate is \(a\) and whose other coordinates are \(0\).
noncomputable def c0Single (i : ι) (a : 𝕜) : c0 𝕜 ι := by
classical
refine c0OfLp (lp.single ∞ i a) ?_
have hev : (fun _ : ι => (0 : 𝕜)) =ᶠ[Filter.cofinite]
(⇑(lp.single (E := fun _ : ι => 𝕜) ∞ i a : lp (fun _ : ι => 𝕜) ∞)) := by
show ∀ᶠ j in Filter.cofinite, (0 : 𝕜) = (lp.single (E := fun _ : ι => 𝕜) ∞ i a) j
rw [Filter.eventually_cofinite]
refine Set.Finite.subset (Set.finite_singleton i) ?_
intro j hj
simp only [Set.mem_ofPred_eq, Set.mem_singleton_iff] at hj ⊢
by_contra hne
exact hj (lp.single_apply_ne (E := fun _ : ι => 𝕜) ∞ i a hne).symm
exact Filter.Tendsto.congr' hev tendsto_const_nhds
abbrev c0 (𝕜 : Type u) [RCLike 𝕜] (ι : Type v) : Type (max u v) :=
@ZeroAtInftyContinuousMap ι 𝕜 ⊥ _ _
MathlibExt/Analysis/Normed/Lp/DualC0.lean:86
Uses 2 · Used by 9
TheoremCoordinates of the sequence supported at one index#✓fully proved
Let \(\mathbb{K}\) be \(\mathbb{R}\) or \(\mathbb{C}\) and let \(\iota\) be an index type. For indices \(i, j \in \iota\) and \(a \in \mathbb{K}\), the \(j\)-th coordinate of the element of \(c_0(\iota, \mathbb{K})\) that is \(a\) at \(i\) and \(0\) elsewhere equals \(a\) if \(j = i\) and \(0\) otherwise.
theorem c0Single_apply (i j : ι) (a : 𝕜) :
((c0Single (𝕜 := 𝕜) (ι := ι) i a : c0 𝕜 ι) : ι → 𝕜) j = if j = i then a else 0
noncomputable def c0Single (i : ι) (a : 𝕜) : c0 𝕜 ι := by
classical
refine c0OfLp (lp.single ∞ i a) ?_
have hev : (fun _ : ι => (0 : 𝕜)) =ᶠ[Filter.cofinite]
(⇑(lp.single (E := fun _ : ι => 𝕜) ∞ i a : lp (fun _ : ι => 𝕜) ∞)) := by
show ∀ᶠ j in Filter.cofinite, (0 : 𝕜) = (lp.single (E := fun _ : ι => 𝕜) ∞ i a) j
rw [Filter.eventually_cofinite]
refine Set.Finite.subset (Set.finite_singleton i) ?_
intro j hj
simp only [Set.mem_ofPred_eq, Set.mem_singleton_iff] at hj ⊢
by_contra hne
exact hj (lp.single_apply_ne (E := fun _ : ι => 𝕜) ∞ i a hne).symm
⋯
MathlibExt/Analysis/Normed/Lp/DualC0.lean:171
abbrev c0 (𝕜 : Type u) [RCLike 𝕜] (ι : Type v) : Type (max u v) :=
@ZeroAtInftyContinuousMap ι 𝕜 ⊥ _ _
MathlibExt/Analysis/Normed/Lp/DualC0.lean:86
Uses 2 · Used by 2
TheoremNorm of a sequence supported at one index#✓fully proved
Let \(\mathbb{K}\) be \(\mathbb{R}\) or \(\mathbb{C}\) and let \(\iota\) be an index type. For \(i \in \iota\) and \(a \in \mathbb{K}\), the element of \(c_0(\iota, \mathbb{K})\) that is \(a\) at \(i\) and \(0\) elsewhere has norm \(\|a\|\).
theorem c0Single_norm (i : ι) (a : 𝕜) : ‖c0Single (𝕜 := 𝕜) (ι := ι) i a‖ = ‖a‖
noncomputable def c0Single (i : ι) (a : 𝕜) : c0 𝕜 ι := by
classical
refine c0OfLp (lp.single ∞ i a) ?_
have hev : (fun _ : ι => (0 : 𝕜)) =ᶠ[Filter.cofinite]
(⇑(lp.single (E := fun _ : ι => 𝕜) ∞ i a : lp (fun _ : ι => 𝕜) ∞)) := by
show ∀ᶠ j in Filter.cofinite, (0 : 𝕜) = (lp.single (E := fun _ : ι => 𝕜) ∞ i a) j
rw [Filter.eventually_cofinite]
refine Set.Finite.subset (Set.finite_singleton i) ?_
intro j hj
simp only [Set.mem_ofPred_eq, Set.mem_singleton_iff] at hj ⊢
by_contra hne
exact hj (lp.single_apply_ne (E := fun _ : ι => 𝕜) ∞ i a hne).symm
⋯
MathlibExt/Analysis/Normed/Lp/DualC0.lean:171
Uses 4
DefinitionFinitely supported sequences in \(c_0\)#✓fully proved
Let \(\mathbb{K}\) be the real or complex field and \(\iota\) an index type, and let \(e_i \in c_0(\iota, \mathbb{K})\) be the sequence equal to \(1\) at \(i\) and \(0\) elsewhere. For a finite set \(s \subseteq \iota\) and \(c : \iota \to \mathbb{K}\), the finitely supported sequence with coefficients \(c\) on \(s\) is the element \(\sum_{i \in s} c_i e_i\) of \(c_0(\iota, \mathbb{K})\).
noncomputable def c0FinsetSum (s : Finset ι) (c : ι → 𝕜) : c0 𝕜 ι :=
∑ i ∈ s, c i • c0Single (𝕜 := 𝕜) (ι := ι) i (1 : 𝕜)
abbrev c0 (𝕜 : Type u) [RCLike 𝕜] (ι : Type v) : Type (max u v) :=
@ZeroAtInftyContinuousMap ι 𝕜 ⊥ _ _
MathlibExt/Analysis/Normed/Lp/DualC0.lean:86
noncomputable def c0Single (i : ι) (a : 𝕜) : c0 𝕜 ι := by
classical
refine c0OfLp (lp.single ∞ i a) ?_
have hev : (fun _ : ι => (0 : 𝕜)) =ᶠ[Filter.cofinite]
(⇑(lp.single (E := fun _ : ι => 𝕜) ∞ i a : lp (fun _ : ι => 𝕜) ∞)) := by
show ∀ᶠ j in Filter.cofinite, (0 : 𝕜) = (lp.single (E := fun _ : ι => 𝕜) ∞ i a) j
rw [Filter.eventually_cofinite]
refine Set.Finite.subset (Set.finite_singleton i) ?_
intro j hj
simp only [Set.mem_ofPred_eq, Set.mem_singleton_iff] at hj ⊢
by_contra hne
exact hj (lp.single_apply_ne (E := fun _ : ι => 𝕜) ∞ i a hne).symm
⋯
MathlibExt/Analysis/Normed/Lp/DualC0.lean:171
Uses 2 · Used by 5
TheoremCoordinates of a finitely supported sequence#✓fully proved
Let \(\mathbb{K}\) be the real or complex field and \(\iota\) an index type, and let \(e_i \in c_0(\iota, \mathbb{K})\) be the sequence equal to \(1\) at \(i\) and \(0\) elsewhere. For every finite set \(s \subseteq \iota\), every \(c : \iota \to \mathbb{K}\) and every \(j \in \iota\), the \(j\)-th coordinate of \(\sum_{i \in s} c_i e_i\) is \(c_j\) if \(j \in s\) and \(0\) otherwise.
theorem c0FinsetSum_apply (s : Finset ι) (c : ι → 𝕜) (j : ι) :
((c0FinsetSum (𝕜 := 𝕜) (ι := ι) s c : c0 𝕜 ι) : ι → 𝕜) j
= if j ∈ s then c j else 0
noncomputable def c0FinsetSum (s : Finset ι) (c : ι → 𝕜) : c0 𝕜 ι :=
∑ i ∈ s, c i • c0Single (𝕜 := 𝕜) (ι := ι) i (1 : 𝕜)
MathlibExt/Analysis/Normed/Lp/DualC0.lean:199
abbrev c0 (𝕜 : Type u) [RCLike 𝕜] (ι : Type v) : Type (max u v) :=
@ZeroAtInftyContinuousMap ι 𝕜 ⊥ _ _
MathlibExt/Analysis/Normed/Lp/DualC0.lean:86
Uses 4 · Used by 2
TheoremA functional on a finitely supported sequence#✓fully proved
Let \(\mathbb{K}\) be the real or complex field and \(\iota\) an index type, and let \(e_i \in c_0(\iota, \mathbb{K})\) be the sequence equal to \(1\) at \(i\) and \(0\) elsewhere. For every continuous linear functional \(\varphi\) on \(c_0(\iota, \mathbb{K})\), every finite set \(s \subseteq \iota\) and every \(c : \iota \to \mathbb{K}\), we have \(\varphi(\sum_{i \in s} c_i e_i) = \sum_{i \in s} c_i \, \varphi(e_i)\).
theorem c0FinsetSum_apply_dual (Φ : StrongDual 𝕜 (c0 𝕜 ι)) (s : Finset ι) (c : ι → 𝕜) :
Φ (c0FinsetSum (𝕜 := 𝕜) (ι := ι) s c) = ∑ i ∈ s, c i * Φ (c0Single i (1 : 𝕜))
abbrev c0 (𝕜 : Type u) [RCLike 𝕜] (ι : Type v) : Type (max u v) :=
@ZeroAtInftyContinuousMap ι 𝕜 ⊥ _ _
MathlibExt/Analysis/Normed/Lp/DualC0.lean:86
noncomputable def c0FinsetSum (s : Finset ι) (c : ι → 𝕜) : c0 𝕜 ι :=
∑ i ∈ s, c i • c0Single (𝕜 := 𝕜) (ι := ι) i (1 : 𝕜)
MathlibExt/Analysis/Normed/Lp/DualC0.lean:199
noncomputable def c0Single (i : ι) (a : 𝕜) : c0 𝕜 ι := by
classical
refine c0OfLp (lp.single ∞ i a) ?_
have hev : (fun _ : ι => (0 : 𝕜)) =ᶠ[Filter.cofinite]
(⇑(lp.single (E := fun _ : ι => 𝕜) ∞ i a : lp (fun _ : ι => 𝕜) ∞)) := by
show ∀ᶠ j in Filter.cofinite, (0 : 𝕜) = (lp.single (E := fun _ : ι => 𝕜) ∞ i a) j
rw [Filter.eventually_cofinite]
refine Set.Finite.subset (Set.finite_singleton i) ?_
intro j hj
simp only [Set.mem_ofPred_eq, Set.mem_singleton_iff] at hj ⊢
by_contra hne
exact hj (lp.single_apply_ne (E := fun _ : ι => 𝕜) ∞ i a hne).symm
⋯
MathlibExt/Analysis/Normed/Lp/DualC0.lean:171
DefinitionFinite truncation of a \(c_0\) sequence#✓fully proved
Let \(\mathbb{K}\) be \(\mathbb{R}\) or \(\mathbb{C}\), let \(\iota\) be a type, let \(s \subseteq \iota\) be a finite set and let \(x \in c_0(\iota, \mathbb{K})\). The truncation of \(x\) to \(s\) is the element of \(c_0(\iota, \mathbb{K})\) whose \(j\)-th coordinate is \(x_j\) for \(j \in s\) and \(0\) for \(j \notin s\); it is defined as \(\sum_{i \in s} x_i e_i\), where \(e_i\) is the sequence that is \(1\) at \(i\) and \(0\) elsewhere.
noncomputable def c0Trunc (s : Finset ι) (x : c0 𝕜 ι) : c0 𝕜 ι :=
c0FinsetSum (𝕜 := 𝕜) (ι := ι) s (fun i => (x : ι → 𝕜) i)
abbrev c0 (𝕜 : Type u) [RCLike 𝕜] (ι : Type v) : Type (max u v) :=
@ZeroAtInftyContinuousMap ι 𝕜 ⊥ _ _
MathlibExt/Analysis/Normed/Lp/DualC0.lean:86
noncomputable def c0FinsetSum (s : Finset ι) (c : ι → 𝕜) : c0 𝕜 ι :=
∑ i ∈ s, c i • c0Single (𝕜 := 𝕜) (ι := ι) i (1 : 𝕜)
MathlibExt/Analysis/Normed/Lp/DualC0.lean:199
Uses 2 · Used by 2
TheoremCoordinates of a finite truncation#✓fully proved
Let \(\mathbb{K}\) be \(\mathbb{R}\) or \(\mathbb{C}\) and let \(\iota\) be an index type. For a finite set \(s \subseteq \iota\), an element \(x \in c_0(\iota, \mathbb{K})\) and an index \(j \in \iota\), the \(j\)-th coordinate of the truncation of \(x\) to \(s\) equals \(x_j\) if \(j \in s\) and \(0\) otherwise.
theorem c0Trunc_apply (s : Finset ι) (x : c0 𝕜 ι) (j : ι) :
((c0Trunc (𝕜 := 𝕜) (ι := ι) s x : c0 𝕜 ι) : ι → 𝕜) j
= if j ∈ s then (x : ι → 𝕜) j else 0
abbrev c0 (𝕜 : Type u) [RCLike 𝕜] (ι : Type v) : Type (max u v) :=
@ZeroAtInftyContinuousMap ι 𝕜 ⊥ _ _
MathlibExt/Analysis/Normed/Lp/DualC0.lean:86
noncomputable def c0Trunc (s : Finset ι) (x : c0 𝕜 ι) : c0 𝕜 ι :=
c0FinsetSum (𝕜 := 𝕜) (ι := ι) s (fun i => (x : ι → 𝕜) i)
MathlibExt/Analysis/Normed/Lp/DualC0.lean:225
Uses 3 · Used by 1
TheoremCoordinate norms of an \(\ell^1\) family are summable#✓fully proved
Let \(\mathbb{K}\) be \(\mathbb{R}\) or \(\mathbb{C}\) and let \(\iota\) be any index type. For every \(a \in \ell^1(\iota, \mathbb{K})\), the family of norms \((\|a_i\|)_{i \in \iota}\) is summable.
Used by 12
TheoremSummability of the \(\ell^1\)–\(c_0\) pairing#✓fully proved
Let \(\mathbb{K}\) be \(\mathbb{R}\) or \(\mathbb{C}\) and let \(\iota\) be a type. For every \(a \in \ell^1(\iota, \mathbb{K})\) and \(x \in c_0(\iota, \mathbb{K})\), the family \((a_i x_i)_{i \in \iota}\) is (unconditionally) summable.
theorem summable_c0Pairing (a : lp (fun _ : ι => 𝕜) 1) (x : c0 𝕜 ι) :
Summable fun i => a i * (x : ι → 𝕜) i
abbrev c0 (𝕜 : Type u) [RCLike 𝕜] (ι : Type v) : Type (max u v) :=
@ZeroAtInftyContinuousMap ι 𝕜 ⊥ _ _
MathlibExt/Analysis/Normed/Lp/DualC0.lean:86
Uses 3 · Used by 3
DefinitionPairing with an \(\ell^1\) sequence as a linear functional on \(c_0\)#✓fully proved
Let \(\mathbb{K}\) be \(\mathbb{R}\) or \(\mathbb{C}\) and let \(\iota\) be an index type. For \(a \in \ell^1(\iota, \mathbb{K})\), this is the \(\mathbb{K}\)-linear map \(c_0(\iota, \mathbb{K}) \to \mathbb{K}\) sending \(x\) to \(\sum_{i \in \iota} a_i x_i\).
noncomputable def c0PairingLin (a : lp (fun _ : ι => 𝕜) 1) : c0 𝕜 ι →ₗ[𝕜] 𝕜 where
toFun x := ∑' i, a i * (x : ι → 𝕜) i
map_add' x y := by
rw [← Summable.tsum_add (summable_c0Pairing a x) (summable_c0Pairing a y)]
refine tsum_congr fun i => ?_
simp [ZeroAtInftyContinuousMap.coe_add, mul_add]
map_smul' c x := by
simp only [RingHom.id_apply, smul_eq_mul]
rw [← tsum_mul_left]
refine tsum_congr fun i => ?_
simp [ZeroAtInftyContinuousMap.coe_smul, Pi.smul_apply, smul_eq_mul]
ring
abbrev c0 (𝕜 : Type u) [RCLike 𝕜] (ι : Type v) : Type (max u v) :=
@ZeroAtInftyContinuousMap ι 𝕜 ⊥ _ _
MathlibExt/Analysis/Normed/Lp/DualC0.lean:86
TheoremValue of the functional of an \(\ell^1\) sequence on \(c_0\)#✓fully proved
Let \(\mathbb{K}\) be \(\mathbb{R}\) or \(\mathbb{C}\) and let \(\iota\) be an index type. For \(a \in \ell^1(\iota, \mathbb{K})\) and \(x \in c_0(\iota, \mathbb{K})\), the linear functional on \(c_0(\iota, \mathbb{K})\) given by pairing with \(a\) takes the value \(\sum_{i \in \iota} a_i x_i\) at \(x\).
theorem c0PairingLin_apply (a : lp (fun _ : ι => 𝕜) 1) (x : c0 𝕜 ι) :
c0PairingLin (𝕜 := 𝕜) (ι := ι) a x = ∑' i, a i * (x : ι → 𝕜) i
abbrev c0 (𝕜 : Type u) [RCLike 𝕜] (ι : Type v) : Type (max u v) :=
@ZeroAtInftyContinuousMap ι 𝕜 ⊥ _ _
MathlibExt/Analysis/Normed/Lp/DualC0.lean:86
noncomputable def c0PairingLin (a : lp (fun _ : ι => 𝕜) 1) : c0 𝕜 ι →ₗ[𝕜] 𝕜 where
toFun x := ∑' i, a i * (x : ι → 𝕜) i
map_add' x y := by
rw [← Summable.tsum_add (summable_c0Pairing a x) (summable_c0Pairing a y)]
refine tsum_congr fun i => ?_
simp [ZeroAtInftyContinuousMap.coe_add, mul_add]
map_smul' c x := by
simp only [RingHom.id_apply, smul_eq_mul]
rw [← tsum_mul_left]
refine tsum_congr fun i => ?_
simp [ZeroAtInftyContinuousMap.coe_smul, Pi.smul_apply, smul_eq_mul]
ring
MathlibExt/Analysis/Normed/Lp/DualC0.lean:256
Uses 2
TheoremBound for the \(\ell^1\)–\(c_0\) pairing#✓fully proved
Let \(\mathbb{K}\) be \(\mathbb{R}\) or \(\mathbb{C}\) and let \(\iota\) be a type. For every \(a \in \ell^1(\iota, \mathbb{K})\) and \(x \in c_0(\iota, \mathbb{K})\), \(|\sum_{i \in \iota} a_i x_i| \le \|a\|_1 \|x\|_\infty\), where \(\|a\|_1 = \sum_i |a_i|\) and \(\|x\|_\infty = \sup_i |x_i|\).
theorem norm_c0PairingLin_le (a : lp (fun _ : ι => 𝕜) 1) (x : c0 𝕜 ι) :
‖c0PairingLin (𝕜 := 𝕜) (ι := ι) a x‖ ≤ ‖a‖ * ‖x‖
abbrev c0 (𝕜 : Type u) [RCLike 𝕜] (ι : Type v) : Type (max u v) :=
@ZeroAtInftyContinuousMap ι 𝕜 ⊥ _ _
MathlibExt/Analysis/Normed/Lp/DualC0.lean:86
noncomputable def c0PairingLin (a : lp (fun _ : ι => 𝕜) 1) : c0 𝕜 ι →ₗ[𝕜] 𝕜 where
toFun x := ∑' i, a i * (x : ι → 𝕜) i
map_add' x y := by
rw [← Summable.tsum_add (summable_c0Pairing a x) (summable_c0Pairing a y)]
refine tsum_congr fun i => ?_
simp [ZeroAtInftyContinuousMap.coe_add, mul_add]
map_smul' c x := by
simp only [RingHom.id_apply, smul_eq_mul]
rw [← tsum_mul_left]
refine tsum_congr fun i => ?_
simp [ZeroAtInftyContinuousMap.coe_smul, Pi.smul_apply, smul_eq_mul]
ring
MathlibExt/Analysis/Normed/Lp/DualC0.lean:256
Uses 4 · Used by 3
DefinitionThe \(\ell^1\)–\(c_0\) pairing as a linear map#✓fully proved
Let \(\mathbb{K}\) be \(\mathbb{R}\) or \(\mathbb{C}\), let \(c_0(\iota, \mathbb{K})\) be the space of families in \(\mathbb{K}\) indexed by \(\iota\) that tend to \(0\) along the cofinite filter, and let \(\ell^1(\iota, \mathbb{K})\) be the space of absolutely summable families. This is the linear map from \(\ell^1(\iota, \mathbb{K})\) to the space of continuous linear functionals on \(c_0(\iota, \mathbb{K})\) that sends \(a\) to the functional \(x \mapsto \sum_{i \in \iota} a_i x_i\).
MathlibExt.Analysis.Normed.Lp.DualC0.c0DualPairingLin · 19 lines
noncomputable def c0DualPairingLin : lp (fun _ : ι => 𝕜) 1 →ₗ[𝕜] StrongDual 𝕜 (c0 𝕜 ι) where
toFun a := (c0PairingLin (𝕜 := 𝕜) (ι := ι) a).mkContinuous ‖a‖ (norm_c0PairingLin_le a)
map_add' a b := by
apply ContinuousLinearMap.ext fun x => ?_
simp only [add_apply, LinearMap.mkContinuous_apply, c0PairingLin_apply]
show ∑' i, ((a + b : lp (fun _ : ι => 𝕜) 1) : ι → 𝕜) i * (x : ι → 𝕜) i
= (∑' i, a i * (x : ι → 𝕜) i) + ∑' i, b i * (x : ι → 𝕜) i
rw [← Summable.tsum_add (summable_c0Pairing a x) (summable_c0Pairing b x)]
refine tsum_congr fun i => ?_
rw [lp.coeFn_add, Pi.add_apply, add_mul]
map_smul' c a := by
apply ContinuousLinearMap.ext fun x => ?_
simp only [smul_apply, LinearMap.mkContinuous_apply, c0PairingLin_apply,
smul_eq_mul, RingHom.id_apply]
show ∑' i, ((c • a : lp (fun _ : ι => 𝕜) 1) : ι → 𝕜) i * (x : ι → 𝕜) i
= c * ∑' i, a i * (x : ι → 𝕜) i
rw [← tsum_mul_left]
refine tsum_congr fun i => ?_
rw [lp.coeFn_smul, Pi.smul_apply, smul_eq_mul, mul_assoc]
abbrev c0 (𝕜 : Type u) [RCLike 𝕜] (ι : Type v) : Type (max u v) :=
@ZeroAtInftyContinuousMap ι 𝕜 ⊥ _ _
MathlibExt/Analysis/Normed/Lp/DualC0.lean:86
noncomputable def c0PairingLin (a : lp (fun _ : ι => 𝕜) 1) : c0 𝕜 ι →ₗ[𝕜] 𝕜 where
toFun x := ∑' i, a i * (x : ι → 𝕜) i
map_add' x y := by
rw [← Summable.tsum_add (summable_c0Pairing a x) (summable_c0Pairing a y)]
refine tsum_congr fun i => ?_
simp [ZeroAtInftyContinuousMap.coe_add, mul_add]
map_smul' c x := by
simp only [RingHom.id_apply, smul_eq_mul]
rw [← tsum_mul_left]
refine tsum_congr fun i => ?_
simp [ZeroAtInftyContinuousMap.coe_smul, Pi.smul_apply, smul_eq_mul]
ring
MathlibExt/Analysis/Normed/Lp/DualC0.lean:256
theorem norm_c0PairingLin_le (a : lp (fun _ : ι => 𝕜) 1) (x : c0 𝕜 ι) :
‖c0PairingLin (𝕜 := 𝕜) (ι := ι) a x‖ ≤ ‖a‖ * ‖x‖
MathlibExt/Analysis/Normed/Lp/DualC0.lean:274
TheoremFormula for the \(\ell^1\)–\(c_0\) pairing as a linear map#✓fully proved
Let \(\mathbb{K}\) be \(\mathbb{R}\) or \(\mathbb{C}\), let \(c_0(\iota, \mathbb{K})\) be the space of families in \(\mathbb{K}\) indexed by \(\iota\) that tend to \(0\) along the cofinite filter, and let \(\ell^1(\iota, \mathbb{K})\) be the space of absolutely summable families. For \(a \in \ell^1(\iota, \mathbb{K})\) and \(x \in c_0(\iota, \mathbb{K})\), the linear map from \(\ell^1(\iota, \mathbb{K})\) to the continuous linear functionals on \(c_0(\iota, \mathbb{K})\) given by the pairing sends \(a\) to a functional whose value at \(x\) is \(\sum_{i \in \iota} a_i x_i\). This holds by definition.
theorem c0DualPairingLin_apply (a : lp (fun _ : ι => 𝕜) 1) (x : c0 𝕜 ι) :
c0DualPairingLin (𝕜 := 𝕜) (ι := ι) a x = ∑' i, a i * (x : ι → 𝕜) i
abbrev c0 (𝕜 : Type u) [RCLike 𝕜] (ι : Type v) : Type (max u v) :=
@ZeroAtInftyContinuousMap ι 𝕜 ⊥ _ _
MathlibExt/Analysis/Normed/Lp/DualC0.lean:86
noncomputable def c0DualPairingLin : lp (fun _ : ι => 𝕜) 1 →ₗ[𝕜] StrongDual 𝕜 (c0 𝕜 ι) where
toFun a := (c0PairingLin (𝕜 := 𝕜) (ι := ι) a).mkContinuous ‖a‖ (norm_c0PairingLin_le a)
map_add' a b := by
apply ContinuousLinearMap.ext fun x => ?_
simp only [add_apply, LinearMap.mkContinuous_apply, c0PairingLin_apply]
show ∑' i, ((a + b : lp (fun _ : ι => 𝕜) 1) : ι → 𝕜) i * (x : ι → 𝕜) i
= (∑' i, a i * (x : ι → 𝕜) i) + ∑' i, b i * (x : ι → 𝕜) i
rw [← Summable.tsum_add (summable_c0Pairing a x) (summable_c0Pairing b x)]
refine tsum_congr fun i => ?_
rw [lp.coeFn_add, Pi.add_apply, add_mul]
map_smul' c a := by
apply ContinuousLinearMap.ext fun x => ?_
⋯
MathlibExt/Analysis/Normed/Lp/DualC0.lean:297
Uses 2 · Used by 1
TheoremNorm bound for the functional of an \(\ell^1\) sequence on \(c_0\)#✓fully proved
Let \(\mathbb{K}\) be \(\mathbb{R}\) or \(\mathbb{C}\) and let \(\iota\) be a type. For every \(a \in \ell^1(\iota, \mathbb{K})\), the image of \(a\) under the linear pairing map from \(\ell^1(\iota, \mathbb{K})\) to the continuous linear functionals on \(c_0(\iota, \mathbb{K})\), which is the functional \(x \mapsto \sum_{i \in \iota} a_i x_i\), has operator norm at most \(\|a\|_1 = \sum_i |a_i|\).
theorem norm_c0DualPairingLin_le (a : lp (fun _ : ι => 𝕜) 1) :
‖c0DualPairingLin (𝕜 := 𝕜) (ι := ι) a‖ ≤ ‖a‖
noncomputable def c0DualPairingLin : lp (fun _ : ι => 𝕜) 1 →ₗ[𝕜] StrongDual 𝕜 (c0 𝕜 ι) where
toFun a := (c0PairingLin (𝕜 := 𝕜) (ι := ι) a).mkContinuous ‖a‖ (norm_c0PairingLin_le a)
map_add' a b := by
apply ContinuousLinearMap.ext fun x => ?_
simp only [add_apply, LinearMap.mkContinuous_apply, c0PairingLin_apply]
show ∑' i, ((a + b : lp (fun _ : ι => 𝕜) 1) : ι → 𝕜) i * (x : ι → 𝕜) i
= (∑' i, a i * (x : ι → 𝕜) i) + ∑' i, b i * (x : ι → 𝕜) i
rw [← Summable.tsum_add (summable_c0Pairing a x) (summable_c0Pairing b x)]
refine tsum_congr fun i => ?_
rw [lp.coeFn_add, Pi.add_apply, add_mul]
map_smul' c a := by
apply ContinuousLinearMap.ext fun x => ?_
⋯
MathlibExt/Analysis/Normed/Lp/DualC0.lean:297
Uses 3 · Used by 1
TheoremThe \(\ell^1\)–\(c_0\) pairing is continuous in the \(\ell^1\) variable#✓fully proved
Let \(\mathbb{K}\) be \(\mathbb{R}\) or \(\mathbb{C}\), let \(c_0(\iota, \mathbb{K})\) be the space of families in \(\mathbb{K}\) indexed by \(\iota\) that tend to \(0\) along the cofinite filter, with the supremum norm, and let \(\ell^1(\iota, \mathbb{K})\) be the space of absolutely summable families. The linear map from \(\ell^1(\iota, \mathbb{K})\) to the space of continuous linear functionals on \(c_0(\iota, \mathbb{K})\), with the operator norm, that sends \(a\) to the functional \(x \mapsto \sum_{i \in \iota} a_i x_i\) is continuous.
theorem c0DualPairingLin_continuous :
Continuous (c0DualPairingLin (𝕜 := 𝕜) (ι := ι))
noncomputable def c0DualPairingLin : lp (fun _ : ι => 𝕜) 1 →ₗ[𝕜] StrongDual 𝕜 (c0 𝕜 ι) where
toFun a := (c0PairingLin (𝕜 := 𝕜) (ι := ι) a).mkContinuous ‖a‖ (norm_c0PairingLin_le a)
map_add' a b := by
apply ContinuousLinearMap.ext fun x => ?_
simp only [add_apply, LinearMap.mkContinuous_apply, c0PairingLin_apply]
show ∑' i, ((a + b : lp (fun _ : ι => 𝕜) 1) : ι → 𝕜) i * (x : ι → 𝕜) i
= (∑' i, a i * (x : ι → 𝕜) i) + ∑' i, b i * (x : ι → 𝕜) i
rw [← Summable.tsum_add (summable_c0Pairing a x) (summable_c0Pairing b x)]
refine tsum_congr fun i => ?_
rw [lp.coeFn_add, Pi.add_apply, add_mul]
map_smul' c a := by
apply ContinuousLinearMap.ext fun x => ?_
⋯
MathlibExt/Analysis/Normed/Lp/DualC0.lean:297
Uses 3 · Used by 1
DefinitionThe \(\ell^1\)–\(c_0\) duality pairing#✓fully proved
Let \(\mathbb{K}\) be the real or complex field and \(\iota\) an index type. The pairing is the continuous linear map from \(\ell^1(\iota, \mathbb{K})\) to the continuous dual of \(c_0(\iota, \mathbb{K})\) that sends \(a\) to the functional \(x \mapsto \sum_{i \in \iota} a_i x_i\).
noncomputable def c0DualPairing : lp (fun _ : ι => 𝕜) 1 →L[𝕜] StrongDual 𝕜 (c0 𝕜 ι) :=
ContinuousLinearMap.mk c0DualPairingLin c0DualPairingLin_continuous
abbrev c0 (𝕜 : Type u) [RCLike 𝕜] (ι : Type v) : Type (max u v) :=
@ZeroAtInftyContinuousMap ι 𝕜 ⊥ _ _
MathlibExt/Analysis/Normed/Lp/DualC0.lean:86
noncomputable def c0DualPairingLin : lp (fun _ : ι => 𝕜) 1 →ₗ[𝕜] StrongDual 𝕜 (c0 𝕜 ι) where
toFun a := (c0PairingLin (𝕜 := 𝕜) (ι := ι) a).mkContinuous ‖a‖ (norm_c0PairingLin_le a)
map_add' a b := by
apply ContinuousLinearMap.ext fun x => ?_
simp only [add_apply, LinearMap.mkContinuous_apply, c0PairingLin_apply]
show ∑' i, ((a + b : lp (fun _ : ι => 𝕜) 1) : ι → 𝕜) i * (x : ι → 𝕜) i
= (∑' i, a i * (x : ι → 𝕜) i) + ∑' i, b i * (x : ι → 𝕜) i
rw [← Summable.tsum_add (summable_c0Pairing a x) (summable_c0Pairing b x)]
refine tsum_congr fun i => ?_
rw [lp.coeFn_add, Pi.add_apply, add_mul]
map_smul' c a := by
apply ContinuousLinearMap.ext fun x => ?_
⋯
MathlibExt/Analysis/Normed/Lp/DualC0.lean:297
theorem c0DualPairingLin_continuous :
Continuous (c0DualPairingLin (𝕜 := 𝕜) (ι := ι))
MathlibExt/Analysis/Normed/Lp/DualC0.lean:330
Uses 3 · Used by 6
TheoremFormula for the \(\ell^1\)–\(c_0\) duality pairing#✓fully proved
Let \(\mathbb{K}\) be \(\mathbb{R}\) or \(\mathbb{C}\), let \(c_0(\iota, \mathbb{K})\) be the space of families in \(\mathbb{K}\) indexed by \(\iota\) that tend to \(0\) along the cofinite filter, and let \(\ell^1(\iota, \mathbb{K})\) be the space of absolutely summable families. For \(a \in \ell^1(\iota, \mathbb{K})\) and \(x \in c_0(\iota, \mathbb{K})\), the canonical continuous linear map from \(\ell^1(\iota, \mathbb{K})\) to the continuous linear functionals on \(c_0(\iota, \mathbb{K})\) sends \(a\) to a functional whose value at \(x\) is \(\sum_{i \in \iota} a_i x_i\).
theorem c0DualPairing_apply (a : lp (fun _ : ι => 𝕜) 1) (x : c0 𝕜 ι) :
c0DualPairing (𝕜 := 𝕜) (ι := ι) a x = ∑' i, a i * (x : ι → 𝕜) i
abbrev c0 (𝕜 : Type u) [RCLike 𝕜] (ι : Type v) : Type (max u v) :=
@ZeroAtInftyContinuousMap ι 𝕜 ⊥ _ _
MathlibExt/Analysis/Normed/Lp/DualC0.lean:86
noncomputable def c0DualPairing : lp (fun _ : ι => 𝕜) 1 →L[𝕜] StrongDual 𝕜 (c0 𝕜 ι) :=
ContinuousLinearMap.mk c0DualPairingLin c0DualPairingLin_continuous
MathlibExt/Analysis/Normed/Lp/DualC0.lean:337
Uses 3 · Used by 4
TheoremThe pairing map \(\ell^1 \to c_0^*\) does not increase norms#✓fully proved
The pairing map \(\ell^1 \to c_0^*\) does not increase norms. Let \(\mathbb{K}\) be \(\mathbb{R}\) or \(\mathbb{C}\), let \(\iota\) be a type, and let \(c_0(\iota, \mathbb{K})^*\) be the space of continuous linear functionals on \(c_0(\iota, \mathbb{K})\). For every \(a \in \ell^1(\iota, \mathbb{K})\), the image of \(a\) under the continuous linear pairing map \(\ell^1(\iota, \mathbb{K}) \to c_0(\iota, \mathbb{K})^*\), which is the functional \(x \mapsto \sum_{i \in \iota} a_i x_i\), has operator norm at most \(\|a\|_1 = \sum_i |a_i|\).
theorem norm_c0DualPairing_le (a : lp (fun _ : ι => 𝕜) 1) :
‖c0DualPairing (𝕜 := 𝕜) (ι := ι) a‖ ≤ ‖a‖
noncomputable def c0DualPairing : lp (fun _ : ι => 𝕜) 1 →L[𝕜] StrongDual 𝕜 (c0 𝕜 ι) :=
ContinuousLinearMap.mk c0DualPairingLin c0DualPairingLin_continuous
MathlibExt/Analysis/Normed/Lp/DualC0.lean:337
Uses 4 · Used by 1
DefinitionCoefficients of a functional on \(c_0\)#✓fully proved
Let \(\mathbb{K}\) be \(\mathbb{R}\) or \(\mathbb{C}\), let \(c_0(\iota, \mathbb{K})\) be the space of families in \(\mathbb{K}\) indexed by \(\iota\) that tend to \(0\) along the cofinite filter, and for \(i \in \iota\) let \(e_i \in c_0(\iota, \mathbb{K})\) be the family that is \(1\) at \(i\) and \(0\) elsewhere. The coefficients of a continuous linear functional \(\Phi\) on \(c_0(\iota, \mathbb{K})\) are the family \(i \mapsto \Phi(e_i)\) in \(\mathbb{K}\).
noncomputable def c0Coeff (Φ : StrongDual 𝕜 (c0 𝕜 ι)) : ι → 𝕜 :=
fun i => Φ (c0Single i (1 : 𝕜))
abbrev c0 (𝕜 : Type u) [RCLike 𝕜] (ι : Type v) : Type (max u v) :=
@ZeroAtInftyContinuousMap ι 𝕜 ⊥ _ _
MathlibExt/Analysis/Normed/Lp/DualC0.lean:86
noncomputable def c0Single (i : ι) (a : 𝕜) : c0 𝕜 ι := by
classical
refine c0OfLp (lp.single ∞ i a) ?_
have hev : (fun _ : ι => (0 : 𝕜)) =ᶠ[Filter.cofinite]
(⇑(lp.single (E := fun _ : ι => 𝕜) ∞ i a : lp (fun _ : ι => 𝕜) ∞)) := by
show ∀ᶠ j in Filter.cofinite, (0 : 𝕜) = (lp.single (E := fun _ : ι => 𝕜) ∞ i a) j
rw [Filter.eventually_cofinite]
refine Set.Finite.subset (Set.finite_singleton i) ?_
intro j hj
simp only [Set.mem_ofPred_eq, Set.mem_singleton_iff] at hj ⊢
by_contra hne
exact hj (lp.single_apply_ne (E := fun _ : ι => 𝕜) ∞ i a hne).symm
⋯
MathlibExt/Analysis/Normed/Lp/DualC0.lean:171
DefinitionThe normalizing scalar \(\overline{w}/|w|\)#✓fully proved
Let \(\mathbb{K}\) be \(\mathbb{R}\) or \(\mathbb{C}\). For \(w \in \mathbb{K}\), the normalizing scalar \(u(w) \in \mathbb{K}\) of \(w\) is \(0\) if \(w = 0\) and \(\overline{w}/|w|\) otherwise, so that \(u(w)\, w = |w|\).
noncomputable def c0UnitScalar (w : 𝕜) : 𝕜 :=
if w = 0 then 0 else (starRingEnd 𝕜) w / (↑‖w‖ : 𝕜)
TheoremThe normalizing scalar times \(w\) is \(|w|\)#✓fully proved
Let \(\mathbb{K}\) be \(\mathbb{R}\) or \(\mathbb{C}\). For every \(w \in \mathbb{K}\), the normalizing scalar \(u(w)\) of \(w\), which is \(0\) if \(w = 0\) and \(\overline{w}/|w|\) otherwise, satisfies \(u(w)\, w = |w|\), with \(|w|\) regarded as an element of \(\mathbb{K}\).
theorem c0UnitScalar_mul (w : 𝕜) : c0UnitScalar (𝕜 := 𝕜) w * w = (↑‖w‖ : 𝕜)
noncomputable def c0UnitScalar (w : 𝕜) : 𝕜 :=
if w = 0 then 0 else (starRingEnd 𝕜) w / (↑‖w‖ : 𝕜)
MathlibExt/Analysis/Normed/Lp/DualC0.lean:364
Uses 1 · Used by 1
TheoremThe normalizing scalar has absolute value at most one#✓fully proved
Let \(\mathbb{K}\) be \(\mathbb{R}\) or \(\mathbb{C}\). For every \(w \in \mathbb{K}\), the normalizing scalar \(u(w)\) of \(w\), which is \(0\) if \(w = 0\) and \(\overline{w}/|w|\) otherwise, satisfies \(|u(w)| \le 1\).
theorem norm_c0UnitScalar_le (w : 𝕜) : ‖c0UnitScalar (𝕜 := 𝕜) w‖ ≤ 1
noncomputable def c0UnitScalar (w : 𝕜) : 𝕜 :=
if w = 0 then 0 else (starRingEnd 𝕜) w / (↑‖w‖ : 𝕜)
MathlibExt/Analysis/Normed/Lp/DualC0.lean:364
Uses 1 · Used by 1
TheoremFinite sums of the coefficients of a functional on \(c_0\)#✓fully proved
Let \(\mathbb{K}\) be \(\mathbb{R}\) or \(\mathbb{C}\), let \(c_0(\iota, \mathbb{K})\) be the space of families in \(\mathbb{K}\) indexed by \(\iota\) that tend to \(0\) along the cofinite filter, with the supremum norm, and for \(i \in \iota\) let \(e_i \in c_0(\iota, \mathbb{K})\) be the family that is \(1\) at \(i\) and \(0\) elsewhere. For every continuous linear functional \(\Phi\) on \(c_0(\iota, \mathbb{K})\) and every finite set \(s \subseteq \iota\), we have \(\sum_{i \in s} |\Phi(e_i)| \le \|\Phi\|\), where \(\|\Phi\|\) is the operator norm.
theorem c0Coeff_finset_sum_le (Φ : StrongDual 𝕜 (c0 𝕜 ι)) (s : Finset ι) :
∑ i ∈ s, ‖c0Coeff (𝕜 := 𝕜) (ι := ι) Φ i‖ ≤ ‖Φ‖
abbrev c0 (𝕜 : Type u) [RCLike 𝕜] (ι : Type v) : Type (max u v) :=
@ZeroAtInftyContinuousMap ι 𝕜 ⊥ _ _
MathlibExt/Analysis/Normed/Lp/DualC0.lean:86
noncomputable def c0Coeff (Φ : StrongDual 𝕜 (c0 𝕜 ι)) : ι → 𝕜 :=
fun i => Φ (c0Single i (1 : 𝕜))
MathlibExt/Analysis/Normed/Lp/DualC0.lean:360
Uses 9 · Used by 2
TheoremThe coefficients of a functional on \(c_0\) are absolutely summable#✓fully proved
Let \(\mathbb{K}\) be \(\mathbb{R}\) or \(\mathbb{C}\), let \(c_0(\iota, \mathbb{K})\) be the space of families in \(\mathbb{K}\) indexed by \(\iota\) that tend to \(0\) along the cofinite filter, and for \(i \in \iota\) let \(e_i \in c_0(\iota, \mathbb{K})\) be the family that is \(1\) at \(i\) and \(0\) elsewhere. For every continuous linear functional \(\Phi\) on \(c_0(\iota, \mathbb{K})\), the family \((\Phi(e_i))_{i \in \iota}\) lies in \(\ell^1(\iota, \mathbb{K})\), that is, \(\sum_{i \in \iota} |\Phi(e_i)| < \infty\).
theorem c0Coeff_memℓp (Φ : StrongDual 𝕜 (c0 𝕜 ι)) :
Memℓp (c0Coeff (𝕜 := 𝕜) (ι := ι) Φ) (1 : ℝ≥0∞)
abbrev c0 (𝕜 : Type u) [RCLike 𝕜] (ι : Type v) : Type (max u v) :=
@ZeroAtInftyContinuousMap ι 𝕜 ⊥ _ _
MathlibExt/Analysis/Normed/Lp/DualC0.lean:86
noncomputable def c0Coeff (Φ : StrongDual 𝕜 (c0 𝕜 ι)) : ι → 𝕜 :=
fun i => Φ (c0Single i (1 : 𝕜))
MathlibExt/Analysis/Normed/Lp/DualC0.lean:360
Uses 3 · Used by 1
DefinitionThe \(\ell^1\) coefficient sequence of a functional on \(c_0\)#✓fully proved
Let \(\mathbb{K}\) be \(\mathbb{R}\) or \(\mathbb{C}\), let \(c_0(\iota, \mathbb{K})\) be the space of families in \(\mathbb{K}\) indexed by \(\iota\) that tend to \(0\) along the cofinite filter, and for \(i \in \iota\) let \(e_i \in c_0(\iota, \mathbb{K})\) be the family that is \(1\) at \(i\) and \(0\) elsewhere. For a continuous linear functional \(\Phi\) on \(c_0(\iota, \mathbb{K})\), this is the family \((\Phi(e_i))_{i \in \iota}\), regarded as an element of the space \(\ell^1(\iota, \mathbb{K})\) of absolutely summable families.
noncomputable def c0CoeffLp (Φ : StrongDual 𝕜 (c0 𝕜 ι)) : lp (fun _ : ι => 𝕜) 1 :=
⟨c0Coeff (𝕜 := 𝕜) (ι := ι) Φ, c0Coeff_memℓp Φ⟩
abbrev c0 (𝕜 : Type u) [RCLike 𝕜] (ι : Type v) : Type (max u v) :=
@ZeroAtInftyContinuousMap ι 𝕜 ⊥ _ _
MathlibExt/Analysis/Normed/Lp/DualC0.lean:86
noncomputable def c0Coeff (Φ : StrongDual 𝕜 (c0 𝕜 ι)) : ι → 𝕜 :=
fun i => Φ (c0Single i (1 : 𝕜))
MathlibExt/Analysis/Normed/Lp/DualC0.lean:360
theorem c0Coeff_memℓp (Φ : StrongDual 𝕜 (c0 𝕜 ι)) :
Memℓp (c0Coeff (𝕜 := 𝕜) (ι := ι) Φ) (1 : ℝ≥0∞)
MathlibExt/Analysis/Normed/Lp/DualC0.lean:417
Uses 3 · Used by 3
Theorem\(\ell^1\) norm of the coefficients of a functional on \(c_0\)#✓fully proved
Let \(\mathbb{K}\) be \(\mathbb{R}\) or \(\mathbb{C}\), let \(\iota\) be a type and let \(\Phi\) be a continuous linear functional on \(c_0(\iota, \mathbb{K})\). For \(i \in \iota\) let \(e_i\) be the sequence that is \(1\) at \(i\) and \(0\) elsewhere. The coefficient sequence \((\Phi(e_i))_{i \in \iota}\), as an element of \(\ell^1(\iota, \mathbb{K})\), has norm \(\sum_{i \in \iota} |\Phi(e_i)|\) at most the operator norm \(\|\Phi\|\).
theorem norm_c0CoeffLp_le (Φ : StrongDual 𝕜 (c0 𝕜 ι)) : ‖c0CoeffLp (𝕜 := 𝕜) (ι := ι) Φ‖ ≤ ‖Φ‖
abbrev c0 (𝕜 : Type u) [RCLike 𝕜] (ι : Type v) : Type (max u v) :=
@ZeroAtInftyContinuousMap ι 𝕜 ⊥ _ _
MathlibExt/Analysis/Normed/Lp/DualC0.lean:86
noncomputable def c0CoeffLp (Φ : StrongDual 𝕜 (c0 𝕜 ι)) : lp (fun _ : ι => 𝕜) 1 :=
⟨c0Coeff (𝕜 := 𝕜) (ι := ι) Φ, c0Coeff_memℓp Φ⟩
MathlibExt/Analysis/Normed/Lp/DualC0.lean:425
Uses 3 · Used by 1
TheoremEvery functional on \(c_0\) comes from \(\ell^1\)#✓fully proved
Let \(\mathbb{K}\) be the real or complex field and \(\iota\) an index type. For every continuous linear functional \(\varphi\) on \(c_0(\iota, \mathbb{K})\) there is \(a \in \ell^1(\iota, \mathbb{K})\) with \(\varphi(x) = \sum_{i \in \iota} a_i x_i\) for all \(x \in c_0(\iota, \mathbb{K})\); that is, the pairing map from \(\ell^1(\iota, \mathbb{K})\) to the continuous dual of \(c_0(\iota, \mathbb{K})\) is surjective.
The proof takes \(a_i = \varphi(e_i)\), where \(e_i\) is the sequence equal to \(1\) at \(i\) and \(0\) elsewhere, and recovers \(\varphi(x)\) as the limit of \(\varphi\) on the finite truncations of \(x\).
theorem c0DualPairing_surjective : Function.Surjective (c0DualPairing (𝕜 := 𝕜) (ι := ι))
noncomputable def c0DualPairing : lp (fun _ : ι => 𝕜) 1 →L[𝕜] StrongDual 𝕜 (c0 𝕜 ι) :=
ContinuousLinearMap.mk c0DualPairingLin c0DualPairingLin_continuous
MathlibExt/Analysis/Normed/Lp/DualC0.lean:337
Uses 12 · Used by 1
TheoremThe \(\ell^1\)–\(c_0\) pairing is isometric#✓fully proved
Let \(\mathbb{K}\) be the real or complex field and \(\iota\) an index type. For every \(a \in \ell^1(\iota, \mathbb{K})\), the continuous linear functional \(x \mapsto \sum_{i \in \iota} a_i x_i\) on \(c_0(\iota, \mathbb{K})\), the space of sequences \(\iota \to \mathbb{K}\) tending to \(0\) at infinity with the supremum norm, has operator norm equal to \(\|a\|_1 = \sum_{i \in \iota} |a_i|\).
theorem c0DualPairing_norm (a : lp (fun _ : ι => 𝕜) 1) :
‖c0DualPairing (𝕜 := 𝕜) (ι := ι) a‖ = ‖a‖
noncomputable def c0DualPairing : lp (fun _ : ι => 𝕜) 1 →L[𝕜] StrongDual 𝕜 (c0 𝕜 ι) :=
ContinuousLinearMap.mk c0DualPairingLin c0DualPairingLin_continuous
MathlibExt/Analysis/Normed/Lp/DualC0.lean:337
Uses 8 · Used by 1
DefinitionThe dual of \(c_0\) is \(\ell^1\)#✓fully proved
Let \(\mathbb{K}\) be \(\mathbb{R}\) or \(\mathbb{C}\), let \(c_0(\iota, \mathbb{K})\) be the space of families in \(\mathbb{K}\) indexed by \(\iota\) that tend to \(0\) along the cofinite filter, with the supremum norm, and let \(\ell^1(\iota, \mathbb{K})\) be the space of absolutely summable families, with the norm \(\|a\|_1 = \sum_{i \in \iota} |a_i|\). This is the linear isometric isomorphism from \(\ell^1(\iota, \mathbb{K})\) onto the space of continuous linear functionals on \(c_0(\iota, \mathbb{K})\), with the operator norm, that sends \(a\) to the functional \(x \mapsto \sum_{i \in \iota} a_i x_i\).
noncomputable def c0DualEquiv : lp (fun _ : ι => 𝕜) 1 ≃ₗᵢ[𝕜] StrongDual 𝕜 (c0 𝕜 ι) := by
classical
exact LinearIsometryEquiv.ofSurjective
⟨(c0DualPairing (𝕜 := 𝕜) (ι := ι)).toLinearMap, fun a => c0DualPairing_norm a⟩
c0DualPairing_surjective
abbrev c0 (𝕜 : Type u) [RCLike 𝕜] (ι : Type v) : Type (max u v) :=
@ZeroAtInftyContinuousMap ι 𝕜 ⊥ _ _
MathlibExt/Analysis/Normed/Lp/DualC0.lean:86
DefinitionCoordinate evaluation on \(c_0\)#✓fully proved
Let \(\mathbb{K}\) be the real or complex field and \(\iota\) an index type. For \(i \in \iota\), evaluation at \(i\) is the continuous linear functional \(x \mapsto x_i\) on \(c_0(\iota, \mathbb{K})\).
noncomputable def c0Eval (i : ι) : StrongDual 𝕜 (c0 𝕜 ι) :=
(LinearMap.mkContinuous
{ toFun := fun x : c0 𝕜 ι => (x : ι → 𝕜) i
map_add' := fun x y => by simp
map_smul' := fun c x => by simp }
1 fun x => by
calc ‖(x : ι → 𝕜) i‖ ≤ ‖x‖ := c0_apply_norm_le x i
_ = 1 * ‖x‖ := (one_mul _).symm)
abbrev c0 (𝕜 : Type u) [RCLike 𝕜] (ι : Type v) : Type (max u v) :=
@ZeroAtInftyContinuousMap ι 𝕜 ⊥ _ _
MathlibExt/Analysis/Normed/Lp/DualC0.lean:86
Uses 2 · Used by 1
TheoremPairing with a unit vector is evaluation#✓fully proved
Let \(\mathbb{K}\) be the real or complex field and \(\iota\) an index type, and for \(i \in \iota\) let \(e_i \in \ell^1(\iota, \mathbb{K})\) be the sequence equal to \(1\) at \(i\) and \(0\) elsewhere. Then the functional \(x \mapsto \sum_{j \in \iota} (e_i)_j x_j\) on \(c_0(\iota, \mathbb{K})\) given by pairing with \(e_i\) is the evaluation \(x \mapsto x_i\) at \(i\).
theorem c0DualPairing_single_eq_eval (i : ι) :
c0DualPairing (𝕜 := 𝕜) (ι := ι) (lp.single (E := fun _ : ι => 𝕜) 1 i (1 : 𝕜))
= c0Eval (𝕜 := 𝕜) (ι := ι) i
noncomputable def c0DualPairing : lp (fun _ : ι => 𝕜) 1 →L[𝕜] StrongDual 𝕜 (c0 𝕜 ι) :=
ContinuousLinearMap.mk c0DualPairingLin c0DualPairingLin_continuous
MathlibExt/Analysis/Normed/Lp/DualC0.lean:337
noncomputable def c0Eval (i : ι) : StrongDual 𝕜 (c0 𝕜 ι) :=
(LinearMap.mkContinuous
{ toFun := fun x : c0 𝕜 ι => (x : ι → 𝕜) i
map_add' := fun x y => by simp
map_smul' := fun c x => by simp }
1 fun x => by
calc ‖(x : ι → 𝕜) i‖ ≤ ‖x‖ := c0_apply_norm_le x i
_ = 1 * ‖x‖ := (one_mul _).symm)
MathlibExt/Analysis/Normed/Lp/DualC0.lean:537
Uses 4
Loading dependency explorer…
The dependency explorer needs JavaScript and its graph data.