Normed spaces #
THIS FILE IS SYNCHRONIZED WITH MATHLIB4. Any changes to this file require a corresponding PR to mathlib4.
In this file we define (semi)normed spaces and algebras. We also prove some theorems about these definitions.
A normed space over a normed field is a vector space endowed with a norm which satisfies the
equality ‖c • x‖ = ‖c‖ ‖x‖. We require only ‖c • x‖ ≤ ‖c‖ ‖x‖ in the definition, then prove
‖c • x‖ = ‖c‖ ‖x‖ in norm_smul.
Note that since this requires seminormed_add_comm_group and not normed_add_comm_group, this
typeclass can be used for "semi normed spaces" too, just as module can be used for
"semi modules".
Instances of this typeclass
- normed_algebra.to_normed_space
- normed_algebra.to_normed_space'
- inner_product_space.to_normed_space
- normed_space.complex_to_real
- normed_field.to_normed_space
- ulift.normed_space
- prod.normed_space
- pi.normed_space
- mul_opposite.normed_space
- submodule.normed_space
- restrict_scalars.normed_space
- continuous_linear_map.to_normed_space
- uniform_space.completion.normed_space
- continuous_multilinear_map.normed_space
- continuous_multilinear_map.normed_space'
- submodule.quotient.normed_space
- pi_Lp.normed_space
- bounded_continuous_function.normed_space
- continuous_map.normed_space
- measure_theory.Lp.normed_space
- normed_space.dual.normed_space
- continuous_affine_map.normed_space
- lp.normed_space
- zero_at_infty_continuous_map.normed_space
- enorm.finite_subspace.normed_space
- elemental_star_algebra.normed_space
- double_centralizer.normed_space
Instances of other typeclasses for normed_space
- normed_space.has_sizeof_inst
Equations
Equations
A (semi) normed real vector space is homeomorphic to the unit ball in the same space.
This homeomorphism sends x : E to (1 + ‖x‖²)^(- ½) • x.
In many cases the actual implementation is not important, so we don't mark the projection lemmas
homeomorph_unit_ball_apply_coe and homeomorph_unit_ball_symm_apply as @[simp].
See also cont_diff_homeomorph_unit_ball and cont_diff_on_homeomorph_unit_ball_symm for
smoothness properties that hold when E is an inner-product space.
Equations
- ulift.normed_space = {to_module := {to_distrib_mul_action := module.to_distrib_mul_action ulift.module', add_smul := _, zero_smul := _}, norm_smul_le := _}
The product of two normed spaces is a normed space, with the sup norm.
Equations
- prod.normed_space = {to_module := {to_distrib_mul_action := module.to_distrib_mul_action prod.module, add_smul := _, zero_smul := _}, norm_smul_le := _}
The product of finitely many normed spaces is a normed space, with the sup norm.
Equations
- pi.normed_space = {to_module := pi.module ι (λ (i : ι), E i) α (λ (i : ι), normed_space.to_module), norm_smul_le := _}
Equations
- mul_opposite.normed_space = {to_module := {to_distrib_mul_action := module.to_distrib_mul_action (mul_opposite.module α), add_smul := _, zero_smul := _}, norm_smul_le := _}
A subspace of a normed space is also a normed space, with the restriction of the norm.
Equations
- s.normed_space = {to_module := s.module' _inst_13, norm_smul_le := _}
If there is a scalar c with ‖c‖>1, then any element with nonzero norm can be
moved by scalar multiplication to any shell of width ‖c‖. Also recap information on the norm of
the rescaling element that shows up in applications.
If there is a scalar c with ‖c‖>1, then any element with nonzero norm can be
moved by scalar multiplication to any shell of width ‖c‖. Also recap information on the norm of
the rescaling element that shows up in applications.
A linear map from a module to a normed_space induces a normed_space structure on the
domain, using the seminormed_add_comm_group.induced norm.
See note [reducible non-instances]
Equations
- normed_space.induced α β γ f = {to_module := _inst_3, norm_smul_le := _}
While this may appear identical to normed_space.to_module, it contains an implicit argument
involving normed_add_comm_group.to_seminormed_add_comm_group that typeclass inference has trouble
inferring.
Specifically, the following instance cannot be found without this normed_space.to_module':
example
(𝕜 ι : Type*) (E : ι → Type*)
[normed_field 𝕜] [Π i, normed_add_comm_group (E i)] [Π i, normed_space 𝕜 (E i)] :
Π i, module 𝕜 (E i) := by apply_instance
This Zulip thread gives some more context.
Equations
If E is a nontrivial topological module over ℝ, then E has no isolated points.
This is a particular case of module.punctured_nhds_ne_bot.
If there is a scalar c with ‖c‖>1, then any element can be moved by scalar multiplication to
any shell of width ‖c‖. Also recap information on the norm of the rescaling element that shows
up in applications.
If E is a nontrivial normed space over a nontrivially normed field 𝕜, then E is unbounded:
for any c : ℝ, there exists a vector x : E with norm strictly greater than c.
A normed vector space over a nontrivially normed field is a noncompact space. This cannot be
an instance because in order to apply it, Lean would have to search for normed_space 𝕜 E with
unknown 𝕜. We register this as an instance in two cases: 𝕜 = E and 𝕜 = ℝ.
A normed algebra 𝕜' over 𝕜 is normed module that is also an algebra.
See the implementation notes for algebra for a discussion about non-unital algebras. Following
the strategy there, a non-unital normed algebra can be written as:
variables [normed_field 𝕜] [non_unital_semi_normed_ring 𝕜']
variables [normed_module 𝕜 𝕜'] [smul_comm_class 𝕜 𝕜' 𝕜'] [is_scalar_tower 𝕜 𝕜' 𝕜']
Instances of this typeclass
- is_R_or_C.to_normed_algebra
- normed_algebra.id
- normed_algebra_rat
- punit.normed_algebra
- ulift.normed_algebra
- prod.normed_algebra
- pi.normed_algebra
- mul_opposite.normed_algebra
- subalgebra.to_normed_algebra
- star_subalgebra.to_normed_algebra
- complex.normed_algebra
- continuous_linear_map.to_normed_algebra
- uniform_space.completion.normed_algebra
- ideal.quotient.normed_algebra
- bounded_continuous_function.normed_algebra
- continuous_map.normed_algebra
- lp.infty_normed_algebra
- quaternion.normed_algebra
- elemental_star_algebra.normed_algebra
- elemental_star_algebra.complex.normed_algebra
- double_centralizer.normed_algebra
Instances of other typeclasses for normed_algebra
- normed_algebra.has_sizeof_inst
Equations
While this may appear identical to normed_algebra.to_normed_space, it contains an implicit
argument involving normed_ring.to_semi_normed_ring that typeclass inference has trouble inferring.
Specifically, the following instance cannot be found without this normed_space.to_module':
example
(𝕜 ι : Type*) (E : ι → Type*)
[normed_field 𝕜] [Π i, normed_ring (E i)] [Π i, normed_algebra 𝕜 (E i)] :
Π i, module 𝕜 (E i) := by apply_instance
See normed_space.to_module' for a similar situation.
In a normed algebra, the inclusion of the base field in the extended field is an isometry.
Equations
- normed_algebra.id 𝕜 = {to_algebra := {to_has_smul := mul_action.to_has_smul distrib_mul_action.to_mul_action, to_ring_hom := algebra.to_ring_hom (algebra.id 𝕜), commutes' := _, smul_def' := _}, norm_smul_le := _}
Any normed characteristic-zero division ring that is a normed_algebra over the reals is also a normed algebra over the rationals.
Phrased another way, if 𝕜 is a normed algebra over the reals, then algebra_rat respects that
norm.
Equations
- normed_algebra_rat = {to_algebra := algebra_rat _inst_5, norm_smul_le := _}
Equations
- punit.normed_algebra 𝕜 = {to_algebra := punit.algebra (semifield.to_comm_semiring 𝕜), norm_smul_le := _}
Equations
The product of two normed algebras is a normed algebra, with the sup norm.
Equations
- prod.normed_algebra 𝕜 = {to_algebra := prod.algebra 𝕜 E F normed_algebra.to_algebra, norm_smul_le := _}
The product of finitely many normed algebras is a normed algebra, with the sup norm.
Equations
- pi.normed_algebra 𝕜 = {to_algebra := {to_has_smul := mul_action.to_has_smul distrib_mul_action.to_mul_action, to_ring_hom := algebra.to_ring_hom (pi.algebra ι E), commutes' := _, smul_def' := _}, norm_smul_le := _}
Equations
A non-unital algebra homomorphism from an algebra to a normed_algebra induces a
normed_algebra structure on the domain, using the semi_normed_ring.induced norm.
See note [reducible non-instances]
Equations
- normed_algebra.induced α β γ f = {to_algebra := _inst_3, norm_smul_le := _}
Equations
- S.to_normed_algebra = normed_algebra.induced 𝕜 ↥S A S.val
Equations
Equations
If E is a normed space over 𝕜' and 𝕜 is a normed algebra over 𝕜', then
restrict_scalars.module is additionally a normed_space.
Equations
- restrict_scalars.normed_space 𝕜 𝕜' E = {to_module := {to_distrib_mul_action := module.to_distrib_mul_action (restrict_scalars.module 𝕜 𝕜' E), add_smul := _, zero_smul := _}, norm_smul_le := _}
The action of the original normed_field on restrict_scalars 𝕜 𝕜' E.
This is not an instance as it would be contrary to the purpose of restrict_scalars.
Equations
Warning: This declaration should be used judiciously.
Please consider using is_scalar_tower and/or restrict_scalars 𝕜 𝕜' E instead.
This definition allows the restrict_scalars.normed_space instance to be put directly on E
rather on restrict_scalars 𝕜 𝕜' E. This would be a very bad instance; both because 𝕜' cannot be
inferred, and because it is likely to create instance diamonds.
Equations
- normed_space.restrict_scalars 𝕜 𝕜' E = restrict_scalars.normed_space 𝕜 𝕜' E