mathlib3 documentation

analysis.normed_space.continuous_linear_map

Constructions of continuous linear maps between (semi-)normed spaces #

THIS FILE IS SYNCHRONIZED WITH MATHLIB4. Any changes to this file require a corresponding PR to mathlib4.

A fundamental fact about (semi-)linear maps between normed spaces over sensible fields is that continuity and boundedness are equivalent conditions. That is, for normed spaces E, F, a linear_map f : E →ₛₗ[σ] F is the coercion of some continuous_linear_map f' : E →SL[σ] F, if and only if there exists a bound C such that for all x, ‖f x‖ ≤ C * ‖x‖.

We prove one direction in this file: linear_map.mk_continuous, boundedness implies continuity. The other direction, continuous_linear_map.bound, is deferred to a later file, where the strong operator topology on E →SL[σ] F is available, because it is natural to use continuous_linear_map.bound to define a norm ⨆ x, ‖f x‖ / ‖x‖ on E →SL[σ] F and to show that this is compatible with the strong operator topology.

This file also contains several corollaries of linear_map.mk_continuous: other "easy" constructions of continuous linear maps between normed spaces.

This file is meant to be lightweight (it is imported by much of the analysis library); think twice before adding imports!

General constructions #

def linear_map.mk_continuous {𝕜 : Type u_1} {𝕜₂ : Type u_2} {E : Type u_3} {F : Type u_4} [normed_field 𝕜] [normed_field 𝕜₂] [seminormed_add_comm_group E] [seminormed_add_comm_group F] [normed_space 𝕜 E] [normed_space 𝕜₂ F] {σ : 𝕜 →+* 𝕜₂} (f : E →ₛₗ[σ] F) (C : ) (h : (x : E), f x C * x) :
E →SL[σ] F

Construct a continuous linear map from a linear map and a bound on this linear map. The fact that the norm of the continuous linear map is then controlled is given in linear_map.mk_continuous_norm_le.

Equations
def linear_map.to_continuous_linear_map₁ {𝕜 : Type u_1} {E : Type u_3} [normed_field 𝕜] [seminormed_add_comm_group E] [normed_space 𝕜 E] (f : 𝕜 →ₗ[𝕜] E) :
𝕜 →L[𝕜] E

Reinterpret a linear map 𝕜 →ₗ[𝕜] E as a continuous linear map. This construction is generalized to the case of any finite dimensional domain in linear_map.to_continuous_linear_map.

Equations
def linear_map.mk_continuous_of_exists_bound {𝕜 : Type u_1} {𝕜₂ : Type u_2} {E : Type u_3} {F : Type u_4} [normed_field 𝕜] [normed_field 𝕜₂] [seminormed_add_comm_group E] [seminormed_add_comm_group F] [normed_space 𝕜 E] [normed_space 𝕜₂ F] {σ : 𝕜 →+* 𝕜₂} (f : E →ₛₗ[σ] F) (h : (C : ), (x : E), f x C * x) :
E →SL[σ] F

Construct a continuous linear map from a linear map and the existence of a bound on this linear map. If you have an explicit bound, use linear_map.mk_continuous instead, as a norm estimate will follow automatically in linear_map.mk_continuous_norm_le.

Equations
theorem continuous_of_linear_of_boundₛₗ {𝕜 : Type u_1} {𝕜₂ : Type u_2} {E : Type u_3} {F : Type u_4} [normed_field 𝕜] [normed_field 𝕜₂] [seminormed_add_comm_group E] [seminormed_add_comm_group F] [normed_space 𝕜 E] [normed_space 𝕜₂ F] {σ : 𝕜 →+* 𝕜₂} {f : E F} (h_add : (x y : E), f (x + y) = f x + f y) (h_smul : (c : 𝕜) (x : E), f (c x) = σ c f x) {C : } (h_bound : (x : E), f x C * x) :
theorem continuous_of_linear_of_bound {𝕜 : Type u_1} {E : Type u_3} {G : Type u_5} [normed_field 𝕜] [seminormed_add_comm_group E] [seminormed_add_comm_group G] [normed_space 𝕜 E] [normed_space 𝕜 G] {f : E G} (h_add : (x y : E), f (x + y) = f x + f y) (h_smul : (c : 𝕜) (x : E), f (c x) = c f x) {C : } (h_bound : (x : E), f x C * x) :
@[simp, norm_cast]
theorem linear_map.mk_continuous_coe {𝕜 : Type u_1} {𝕜₂ : Type u_2} {E : Type u_3} {F : Type u_4} [normed_field 𝕜] [normed_field 𝕜₂] [seminormed_add_comm_group E] [seminormed_add_comm_group F] [normed_space 𝕜 E] [normed_space 𝕜₂ F] {σ : 𝕜 →+* 𝕜₂} (f : E →ₛₗ[σ] F) (C : ) (h : (x : E), f x C * x) :
@[simp]
theorem linear_map.mk_continuous_apply {𝕜 : Type u_1} {𝕜₂ : Type u_2} {E : Type u_3} {F : Type u_4} [normed_field 𝕜] [normed_field 𝕜₂] [seminormed_add_comm_group E] [seminormed_add_comm_group F] [normed_space 𝕜 E] [normed_space 𝕜₂ F] {σ : 𝕜 →+* 𝕜₂} (f : E →ₛₗ[σ] F) (C : ) (h : (x : E), f x C * x) (x : E) :
(f.mk_continuous C h) x = f x
@[simp, norm_cast]
theorem linear_map.mk_continuous_of_exists_bound_coe {𝕜 : Type u_1} {𝕜₂ : Type u_2} {E : Type u_3} {F : Type u_4} [normed_field 𝕜] [normed_field 𝕜₂] [seminormed_add_comm_group E] [seminormed_add_comm_group F] [normed_space 𝕜 E] [normed_space 𝕜₂ F] {σ : 𝕜 →+* 𝕜₂} (f : E →ₛₗ[σ] F) (h : (C : ), (x : E), f x C * x) :
@[simp]
theorem linear_map.mk_continuous_of_exists_bound_apply {𝕜 : Type u_1} {𝕜₂ : Type u_2} {E : Type u_3} {F : Type u_4} [normed_field 𝕜] [normed_field 𝕜₂] [seminormed_add_comm_group E] [seminormed_add_comm_group F] [normed_space 𝕜 E] [normed_space 𝕜₂ F] {σ : 𝕜 →+* 𝕜₂} (f : E →ₛₗ[σ] F) (h : (C : ), (x : E), f x C * x) (x : E) :
@[simp]
@[simp]
theorem linear_map.to_continuous_linear_map₁_apply {𝕜 : Type u_1} {E : Type u_3} [normed_field 𝕜] [seminormed_add_comm_group E] [normed_space 𝕜 E] (f : 𝕜 →ₗ[𝕜] E) (x : 𝕜) :
theorem continuous_linear_map.antilipschitz_of_bound {𝕜 : Type u_1} {𝕜₂ : Type u_2} {E : Type u_3} {F : Type u_4} [normed_field 𝕜] [normed_field 𝕜₂] [seminormed_add_comm_group E] [seminormed_add_comm_group F] [normed_space 𝕜 E] [normed_space 𝕜₂ F] {σ : 𝕜 →+* 𝕜₂} (f : E →SL[σ] F) {K : nnreal} (h : (x : E), x K * f x) :
theorem continuous_linear_map.bound_of_antilipschitz {𝕜 : Type u_1} {𝕜₂ : Type u_2} {E : Type u_3} {F : Type u_4} [normed_field 𝕜] [normed_field 𝕜₂] [seminormed_add_comm_group E] [seminormed_add_comm_group F] [normed_space 𝕜 E] [normed_space 𝕜₂ F] {σ : 𝕜 →+* 𝕜₂} (f : E →SL[σ] F) {K : nnreal} (h : antilipschitz_with K f) (x : E) :
def linear_equiv.to_continuous_linear_equiv_of_bounds {𝕜 : Type u_1} {𝕜₂ : Type u_2} {E : Type u_3} {F : Type u_4} [normed_field 𝕜] [normed_field 𝕜₂] [seminormed_add_comm_group E] [seminormed_add_comm_group F] [normed_space 𝕜 E] [normed_space 𝕜₂ F] {σ : 𝕜 →+* 𝕜₂} {σ₂₁ : 𝕜₂ →+* 𝕜} [ring_hom_inv_pair σ σ₂₁] [ring_hom_inv_pair σ₂₁ σ] (e : E ≃ₛₗ[σ] F) (C_to C_inv : ) (h_to : (x : E), e x C_to * x) (h_inv : (x : F), (e.symm) x C_inv * x) :
E ≃SL[σ] F

Construct a continuous linear equivalence from a linear equivalence together with bounds in both directions.

Equations
theorem continuous_linear_map.uniform_embedding_of_bound {𝕜 : Type u_1} {𝕜₂ : Type u_2} {E : Type u_3} {F : Type u_4} [normed_field 𝕜] [normed_field 𝕜₂] [normed_add_comm_group E] [normed_add_comm_group F] [normed_space 𝕜 E] [normed_space 𝕜₂ F] {σ : 𝕜 →+* 𝕜₂} (f : E →SL[σ] F) {K : nnreal} (hf : (x : E), x K * f x) :

Homotheties #

def continuous_linear_map.of_homothety {𝕜 : Type u_1} {𝕜₂ : Type u_2} {E : Type u_3} {F : Type u_4} [normed_field 𝕜] [normed_field 𝕜₂] [seminormed_add_comm_group E] [seminormed_add_comm_group F] [normed_space 𝕜 E] [normed_space 𝕜₂ F] {σ : 𝕜 →+* 𝕜₂} (f : E →ₛₗ[σ] F) (a : ) (hf : (x : E), f x = a * x) :
E →SL[σ] F

A (semi-)linear map which is a homothety is a continuous linear map. Since the field 𝕜 need not have as a subfield, this theorem is not directly deducible from the corresponding theorem about isometries plus a theorem about scalar multiplication. Likewise for the other theorems about homotheties in this file.

Equations
theorem continuous_linear_equiv.homothety_inverse {𝕜 : Type u_1} {𝕜₂ : Type u_2} {E : Type u_3} {F : Type u_4} [normed_field 𝕜] [normed_field 𝕜₂] [seminormed_add_comm_group E] [seminormed_add_comm_group F] [normed_space 𝕜 E] [normed_space 𝕜₂ F] {σ : 𝕜 →+* 𝕜₂} {σ₂₁ : 𝕜₂ →+* 𝕜} [ring_hom_inv_pair σ σ₂₁] [ring_hom_inv_pair σ₂₁ σ] (a : ) (ha : 0 < a) (f : E ≃ₛₗ[σ] F) :
( (x : E), f x = a * x) (y : F), (f.symm) y = a⁻¹ * y
noncomputable def continuous_linear_equiv.of_homothety {𝕜 : Type u_1} {𝕜₂ : Type u_2} {E : Type u_3} {F : Type u_4} [normed_field 𝕜] [normed_field 𝕜₂] [seminormed_add_comm_group E] [seminormed_add_comm_group F] [normed_space 𝕜 E] [normed_space 𝕜₂ F] {σ : 𝕜 →+* 𝕜₂} {σ₂₁ : 𝕜₂ →+* 𝕜} [ring_hom_inv_pair σ σ₂₁] [ring_hom_inv_pair σ₂₁ σ] (f : E ≃ₛₗ[σ] F) (a : ) (ha : 0 < a) (hf : (x : E), f x = a * x) :
E ≃SL[σ] F

A linear equivalence which is a homothety is a continuous linear equivalence.

Equations

The span of a single vector #

noncomputable def continuous_linear_equiv.to_span_nonzero_singleton (𝕜 : Type u_1) {E : Type u_3} [normed_field 𝕜] [normed_add_comm_group E] [normed_space 𝕜 E] (x : E) (h : x 0) :
𝕜 ≃L[𝕜] (submodule.span 𝕜 {x})

Given a nonzero element x of a normed space E₁ over a field 𝕜, the natural continuous linear equivalence from E₁ to the span of x.

Equations
noncomputable def continuous_linear_equiv.coord (𝕜 : Type u_1) {E : Type u_3} [normed_field 𝕜] [normed_add_comm_group E] [normed_space 𝕜 E] (x : E) (h : x 0) :
(submodule.span 𝕜 {x}) →L[𝕜] 𝕜

Given a nonzero element x of a normed space E₁ over a field 𝕜, the natural continuous linear map from the span of x to 𝕜.

Equations
@[simp]
theorem continuous_linear_equiv.coord_self (𝕜 : Type u_1) {E : Type u_3} [normed_field 𝕜] [normed_add_comm_group E] [normed_space 𝕜 E] (x : E) (h : x 0) :