Theory of topological modules and continuous linear maps.
We define classes topological_semimodule
, topological_module
and topological_vector_spaces
,
as extensions of the corresponding algebraic classes where the algebraic operations are continuous.
We also define continuous linear maps, as linear maps between topological modules which are
continuous. The set of continuous linear maps between the topological R
-modules M
and M₂
is
denoted by M →L[R] M₂
.
Continuous linear equivalences are denoted by M ≃L[R] M₂
.
Implementation notes
Topological vector spaces are defined as an abbreviation
for topological modules,
if the base ring is a field. This has as advantage that topological vector spaces are completely
transparent for type class inference, which means that all instances for topological modules
are immediately picked up for vector spaces as well.
A cosmetic disadvantage is that one can not extend topological vector spaces.
The solution is to extend topological_module
instead.
- continuous_smul : continuous (λ (p : R × M), p.fst • p.snd)
A topological semimodule, over a semiring which is also a topological space, is a semimodule in which scalar multiplication is continuous. In applications, R will be a topological semiring and M a topological additive semigroup, but this is not needed for the definition
- to_topological_semimodule : topological_semimodule R M
A topological module, over a ring which is also a topological space, is a module in which
scalar multiplication is continuous. In applications, R
will be a topological ring and M
a
topological additive group, but this is not needed for the definition
Instances
A topological vector space is a topological module over a field.
Instances
Scalar multiplication by a unit is a homeomorphism from a topological module onto itself.
If M
is a topological module over R
and 0
is a limit of invertible elements of R
, then
⊤
is the only submodule of M
with a nonempty interior.
This is the case, e.g., if R
is a nondiscrete normed field.
Scalar multiplication by a non-zero field element is a homeomorphism from a topological vector space onto itself.
Equations
- homeomorph.smul_of_ne_zero ha = {to_equiv := (homeomorph.smul_of_unit (units.mk0 a ha)).to_equiv, continuous_to_fun := _, continuous_inv_fun := _}
- to_linear_map : M →ₗ[R] M₂
- cont : continuous c.to_linear_map.to_fun . "continuity'"
Continuous linear maps between modules. We only put the type classes that are necessary for the
definition, although in applications M
and M₂
will be topological modules over the topological
ring R
.
- to_linear_equiv : M ≃ₗ[R] M₂
- continuous_to_fun : continuous c.to_linear_equiv.to_fun . "continuity'"
- continuous_inv_fun : continuous c.to_linear_equiv.inv_fun . "continuity'"
Continuous linear equivalences between modules. We only put the type classes that are necessary
for the definition, although in applications M
and M₂
will be topological modules over the
topological ring R
.
Coerce continuous linear maps to linear maps.
Equations
Coerce continuous linear maps to functions.
The continuous map that is constantly zero.
Equations
- continuous_linear_map.has_zero = {zero := {to_linear_map := 0, cont := _}}
Equations
the identity map as a continuous linear map.
Equations
- continuous_linear_map.id R M = {to_linear_map := linear_map.id _inst_10, cont := _}
Equations
- continuous_linear_map.has_one = {one := continuous_linear_map.id R M _inst_10}
Equations
- continuous_linear_map.add_comm_monoid = {add := has_add.add continuous_linear_map.has_add, add_assoc := _, zero := 0, zero_add := _, add_zero := _, add_comm := _}
Composition of bounded linear maps.
Equations
- g.comp f = {to_linear_map := g.to_linear_map.comp f.to_linear_map, cont := _}
Equations
- continuous_linear_map.has_mul = {mul := continuous_linear_map.comp _inst_10}
The cartesian product of two bounded linear maps, as a bounded linear map.
Equations
- f₁.prod f₂ = {to_linear_map := {to_fun := (f₁.to_linear_map.prod f₂.to_linear_map).to_fun, map_add' := _, map_smul' := _}, cont := _}
Kernel of a continuous linear map.
Equations
- _ = _
Range of a continuous linear map.
Restrict codomain of a continuous linear map.
Equations
- f.cod_restrict p h = {to_linear_map := linear_map.cod_restrict p ↑f h, cont := _}
Embedding of a submodule into the ambient space as a continuous linear map.
Equations
- continuous_linear_map.subtype_val p = {to_linear_map := p.subtype, cont := _}
prod.fst
as a continuous_linear_map
.
Equations
- continuous_linear_map.fst R M M₂ = {to_linear_map := linear_map.fst R M M₂ _inst_11, cont := _}
prod.snd
as a continuous_linear_map
.
Equations
- continuous_linear_map.snd R M M₂ = {to_linear_map := linear_map.snd R M M₂ _inst_11, cont := _}
prod.map
of two continuous linear maps.
Equations
- f₁.prod_map f₂ = (f₁.comp (continuous_linear_map.fst R M M₃)).prod (f₂.comp (continuous_linear_map.snd R M M₃))
The continuous linear map given by (x, y) ↦ f₁ x + f₂ y
.
The linear map λ x, c x • f
. Associates to a scalar-valued linear map and an element of
M₂
the M₂
-valued linear map obtained by multiplying the two (a.k.a. tensoring by M₂
)
Equations
- c.smul_right f = {to_linear_map := {to_fun := (c.to_linear_map.smul_right f).to_fun, map_add' := _, map_smul' := _}, cont := _}
pi
construction for continuous linear functions. From a family of continuous linear functions
it produces a continuous linear function into a family of topological modules.
Equations
- continuous_linear_map.pi f = {to_linear_map := linear_map.pi (λ (i : ι), ↑(f i)), cont := _}
The projections from a family of topological modules are continuous linear maps.
Equations
- continuous_linear_map.proj i = {to_linear_map := linear_map.proj i, cont := _}
If I
and J
are complementary index sets, the product of the kernels of the J
th projections of
φ
is linearly equivalent to the product over I
.
Equations
- continuous_linear_map.infi_ker_proj_equiv R φ hd hu = {to_linear_equiv := linear_map.infi_ker_proj_equiv R φ hd hu, continuous_to_fun := _, continuous_inv_fun := _}
Equations
- continuous_linear_map.add_comm_group = {add := has_add.add continuous_linear_map.has_add, add_assoc := _, zero := 0, zero_add := _, add_zero := _, neg := has_neg.neg continuous_linear_map.has_neg, add_left_neg := _, add_comm := _}
Equations
- continuous_linear_map.ring = {add := add_comm_group.add continuous_linear_map.add_comm_group, add_assoc := _, zero := add_comm_group.zero continuous_linear_map.add_comm_group, zero_add := _, add_zero := _, neg := add_comm_group.neg continuous_linear_map.add_comm_group, add_left_neg := _, add_comm := _, mul := has_mul.mul continuous_linear_map.has_mul, mul_assoc := _, one := 1, one_mul := _, mul_one := _, left_distrib := _, right_distrib := _}
Given a right inverse f₂ : M₂ →L[R] M
to f₁ : M →L[R] M₂
,
proj_ker_of_right_inverse f₁ f₂ h
is the projection M →L[R] f₁.ker
along f₂.range
.
Equations
- f₁.proj_ker_of_right_inverse f₂ h = (continuous_linear_map.id R M - f₂.comp f₁).cod_restrict f₁.ker _
Equations
- continuous_linear_map.module = {to_distrib_mul_action := {to_mul_action := {to_has_scalar := continuous_linear_map.has_scalar _inst_13, one_smul := _, mul_smul := _}, smul_add := _, smul_zero := _}, add_smul := _, zero_smul := _}
Equations
- continuous_linear_map.algebra = algebra.of_semimodule' continuous_linear_map.algebra._proof_1 continuous_linear_map.algebra._proof_2
A continuous linear equivalence induces a continuous linear map.
Equations
- e.to_continuous_linear_map = {to_linear_map := {to_fun := e.to_linear_equiv.to_linear_map.to_fun, map_add' := _, map_smul' := _}, cont := _}
Coerce continuous linear equivs to continuous linear maps.
Equations
Coerce continuous linear equivs to maps.
A continuous linear equivalence induces a homeomorphism.
Equations
- e.to_homeomorph = {to_equiv := {to_fun := e.to_linear_equiv.to_fun, inv_fun := e.to_linear_equiv.inv_fun, left_inv := _, right_inv := _}, continuous_to_fun := _, continuous_inv_fun := _}
An extensionality lemma for R ≃L[R] M
.
The identity map as a continuous linear equivalence.
Equations
- continuous_linear_equiv.refl R M = {to_linear_equiv := {to_fun := (linear_equiv.refl R M).to_fun, map_add' := _, map_smul' := _, inv_fun := (linear_equiv.refl R M).inv_fun, left_inv := _, right_inv := _}, continuous_to_fun := _, continuous_inv_fun := _}
The inverse of a continuous linear equivalence as a continuous linear equivalence
Equations
- e.symm = {to_linear_equiv := {to_fun := e.to_linear_equiv.symm.to_fun, map_add' := _, map_smul' := _, inv_fun := e.to_linear_equiv.symm.inv_fun, left_inv := _, right_inv := _}, continuous_to_fun := _, continuous_inv_fun := _}
The composition of two continuous linear equivalences as a continuous linear equivalence.
Equations
- e₁.trans e₂ = {to_linear_equiv := {to_fun := (e₁.to_linear_equiv.trans e₂.to_linear_equiv).to_fun, map_add' := _, map_smul' := _, inv_fun := (e₁.to_linear_equiv.trans e₂.to_linear_equiv).inv_fun, left_inv := _, right_inv := _}, continuous_to_fun := _, continuous_inv_fun := _}
Product of two continuous linear equivalences. The map comes from equiv.prod_congr
.
Equations
- e.prod e' = {to_linear_equiv := {to_fun := (e.to_linear_equiv.prod e'.to_linear_equiv).to_fun, map_add' := _, map_smul' := _, inv_fun := (e.to_linear_equiv.prod e'.to_linear_equiv).inv_fun, left_inv := _, right_inv := _}, continuous_to_fun := _, continuous_inv_fun := _}
Create a continuous_linear_equiv
from two continuous_linear_map
s that are
inverse of each other.
Equations
- continuous_linear_equiv.equiv_of_inverse f₁ f₂ h₁ h₂ = {to_linear_equiv := {to_fun := ⇑f₁, map_add' := _, map_smul' := _, inv_fun := ⇑f₂, left_inv := h₁, right_inv := h₂}, continuous_to_fun := _, continuous_inv_fun := _}
Equivalence given by a block lower diagonal matrix. e
and e'
are diagonal square blocks,
and f
is a rectangular block below the diagonal.
Equations
- e.skew_prod e' f = {to_linear_equiv := {to_fun := (e.to_linear_equiv.skew_prod e'.to_linear_equiv ↑f).to_fun, map_add' := _, map_smul' := _, inv_fun := (e.to_linear_equiv.skew_prod e'.to_linear_equiv ↑f).inv_fun, left_inv := _, right_inv := _}, continuous_to_fun := _, continuous_inv_fun := _}
Continuous linear equivalences R ≃L[R] R
are enumerated by units R
.
A pair of continuous linear maps such that f₁ ∘ f₂ = id
generates a continuous
linear equivalence e
between M
and M₂ × f₁.ker
such that (e x).2 = x
for x ∈ f₁.ker
,
(e x).1 = f₁ x
, and (e (f₂ y)).2 = 0
. The map is given by e x = (f₁ x, x - f₂ (f₁ x))
.
Equations
- continuous_linear_equiv.equiv_of_right_inverse f₁ f₂ h = continuous_linear_equiv.equiv_of_inverse (f₁.prod (f₁.proj_ker_of_right_inverse f₂ h)) (f₂.coprod (continuous_linear_map.subtype_val f₁.ker)) _ _
A submodule p
is called complemented if there exists a continuous projection M →ₗ[R] p
.