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'
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
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