Smooth modules #
This file introduces diffeological modules and the "fine diffeology",
the finest diffeology turning a given module into a diffeological module.
This is comparable to Topology.Algebra.Module.ModuleTopology
, although the file
structure and naming are different for historical reasons.
While in practice we mostly care about diffeological vector spaces over ℝ
, we work over
general rings here just in case.
Main definitions / results:
DiffeologicalRing R
: typeclass saying that addition, negation and multiplication in the ringR
are smooth- arbitrary products of diffeological modules are again diffeological modules
- diffeologies induced by linear maps to diffeological modules are module diffeologies
ModuleDiffeology R X
: the type ofR
-module diffeologies onX
. Forms a complete lattice.fineDiffeology R X
: the finest diffeology onX
making it into a topologicalR
-module.fineDiffeology_eq_euclideanDiffeology
: on finite-dimensional real vector spaces, the fine diffeology agrees with the standard diffeology for any choice of norm
Note that we do not actually define a typeclass DiffeologicalModule R X
analogous to
DiffeologicalGroup
or DiffeologicalRing
- the reason is such a class could not extend
DiffeologicalAddGroup X
without breaking typeclass synthesis, because of the extra parameter R
.
The class would therefore instead have to take in [DiffeologicalAddGroup X]
as an assumption, but
at that point it would be nothing more than a synonym for DSmoothSMul R X
. We therefore avoid
defining such a class completely, and instead use [DiffeologicalAddGroup X] [DSmoothSMul R X]
whereever we want X
to be a diffeological module over R
. This is likely also the reason that
mathlib has no TopologicalModule
class.
As a consequence, statements like "arbitrary products of diffeological modules are diffeological modules" and "diffeologies induced by linear maps to diffeological modules are module diffeologies" also had to be split up into two statements each, one about the underlying additive group and one about scalar multiplication. Since these lemmas already exist in the respective files, we do not reintroduce them here.
TODO #
- the fine diffeology is generated by all linear plots
- explicit characterisation of plots of the fine diffeology
- results about the D-topology of the fine diffeology
- is the fine diffeology preserved under products?
A diffeological ring is a ring in which addition, negation and multiplication are smooth.
- dsmooth_add : DSmooth fun (p : R × R) => p.1 + p.2
- dsmooth_neg : DSmooth fun (a : R) => -a
- dsmooth_mul : DSmooth fun (p : R × R) => p.1 * p.2
Instances
The main example we care about: ℝ
is a diffeological ring.
Normed spaces with their natural diffeologies are diffeological groups under addition.
Normed spaces with their natural diffeologies are diffeological vector spaces.
Every linear map from Eucl n
into a diffeological vector space is a plot.
Lattice of module diffeologies #
Analogous to GroupDiffeology G
, we define for any R
-module X
the type
ModuleDiffeology R X
of all diffeologies that turn X
into a diffeological module.
This is interesting because, like DiffeologicalSpace X
, ModuleDiffeology R X
is
always a complete lattice - its top element is always the indiscrete diffeology, while its
bottom element is generally nontrivial. Note that the discrete diffeology is not a module
diffeology because scalar multiplication fails to be continuous.
A module diffeology on a module X
is a diffeology with which X
is a
diffeological module.
- isOpen_iff_preimages_plots {u : Set X} : TopologicalSpace.IsOpen u ↔ ∀ {n : ℕ}, ∀ p ∈ plots n, TopologicalSpace.IsOpen (p ⁻¹' u)
- dsmooth_add : DSmooth fun (p : X × X) => p.1 + p.2
- dsmooth_neg : DSmooth fun (a : X) => -a
- dsmooth_smul : DSmooth fun (p : R × X) => p.1 • p.2
Instances For
Equations
- d.toAddGroupDiffeology = { toDiffeologicalSpace := d.toDiffeologicalSpace, toDiffeologicalAddGroup := ⋯ }
Instances For
A version of the global dsmooth_add
suitable for dot notation.
A version of the global dsmooth_neg
suitable for dot notation.
A version of the global dsmooth_smul
suitable for dot notation.
The coarsest module diffeology that is finer than a given diffeology.
Called reflector
for the lack of a better name and because it is left-adjoint to
ModuleDiffeology.toDiffeologicalSpace
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The galois insertion between ModuleDiffeology R X
and DiffeologicalSpace X
whose
lower part sends each diffeology to the finest coarser module diffeology, and whose
upper part sends each module diffeology to itself.
Equations
- One or more equations did not get rendered due to their size.
Instances For
R
-module diffeologies on X
form a complete lattice.
The fine diffeology #
On any module X
over a diffeological ring R
, the fine diffeology is defined as the finest
diffeology making it into a topological module, i.e. the bottom element of
ModuleDiffeology R X
. Although we do not show it here, the plots of this diffeology are
precisely those maps that locally restrict to smooth maps to finite-dimensional subspaces
of X
with their standard diffeologies. In particular, on all finite-dimensional normed spaces
this coincides with the smooth diffeology given by the norm - see Zemmour's diffeology book
for more details.
It's not yet clear to me whether the D-topology of this diffeology always coincides with
the finest topology making X
into a topological module - if it does, it might make sense to
redefine this to make the D-topology defeq to mathlib's moduleTopology R X
.
The finest diffeology turning a given module over a diffeological ring into a diffeological module.
Equations
Instances For
A typeclass asserting that the diffeology on X
equals fineDiffeology R X
.
Slightly awkward because all arguments are implicit - use
eq_fineDiffeology R X
instead.
Instances
Every module equipped with the fine diffeology is an additive diffeological group.
This unfortunately can't be an instance because the parameter R
can't be inferred from the
conclusion of the lemma (i.e., when lean is trying to synthesise an instance
DiffeologicalAddGroup X
, it wouldn't know which ring R
to use with this lemma).
Since real diffeological vector spaces are the most important special case of diffeological
modules, we register at least IsFineDiffeology.diffeologicalAddGroup ℝ X
as an instance.
Scalar multiplication is smooth on any module that is equipped with the fine diffeology.
Together with IsFineDiffeology.diffeologicalAddGroup
this means that every module carrying
the fine diffeology is a diffeological module.
The fine diffeology is finer than any other diffeology making X
a diffeological module.
Any linear map from a fine diffeological module to another diffeological module is smooth.
On finite-dimensional normed spaces, the fine diffeology equals the standard diffeology
consisting of plots that are smooth with respect to the norm. Since the fine diffeology does
not depend on any norm, this in particular shows that euclideanDiffeology
does not actually
depend on the choice of norm either.