Diffeological spaces #
A diffeological space is a concrete sheaf on the site of cartesian spaces ℝⁿ and smooth maps
between them, or equivalently a type X with a well-behaved notion of smoothness for functions from
the spaces ℝⁿ to X - see https://ncatlab.org/nlab/show/diffeological+space. In this file we focus on
the latter viewpoint and define some of the basic notions of diffeology, like diffeological spaces
and smooth maps between them.
Concretely, this means that for our purposes a diffeological space is a type X together with a set
plots n of maps ℝⁿ → X for each n (called plots), such that the following three properties hold:
- Every constant map is a plot.
- For every plot p : ℝⁿ → X and smooth map f : ℝᵐ → ℝⁿ, p ∘ f is a plot.
- Every map p : ℝⁿ → X that is locally smooth is a plot, where by locally smooth we mean that ℝⁿ can
be covered by open sets U such that p ∘ f is a plot for every smooth f : ℝᵐ → U.
Every normed space, smooth manifold etc. is then naturally a diffeological space by simply taking
the plots to be those maps ℝⁿ → X that are smooth in the traditional sense. A map
f : X → Ybetween diffeological spaces is furthermore called smooth if postcomposition with it sends plots ofXto plots ofY. This is equivalent to the usual definition of smoothness for maps between e.g. manifolds, and equivalent to being a plot for maps p : ℝⁿ → X.
In addition to this notion of smoothness, every diffeological space X also comes equipped with a
natural diffeology, called the D-topology; it is the finest topology on X that makes all plots
continuous, and consists precisely of those sets whose preimages under plots are all open. This
recovers the standard topology of e.g. normed spaces and manifolds, and makes all smooth maps
continuous. We provide this as a definition but not as an instance, for reasons outlined in the
implementation details below.
Main definitions / results #
DiffeologicalSpace X: the type of diffeologies on a typeX.IsPlot p: predicate stating that a map p : ℝⁿ → X is a plot, i.e. belongs to the diffeology onX.DSmooth f: predicate stating that a mapf : X → Ybetween diffeological spaces is smooth in the sense that it sends plots to plots. This is the correct notion of morphisms between diffeological spaces.dTopology: the D-topology on a diffeological space, consisting of all setsUwhose preimagep ⁻¹' uis open for all plotsp. This is a definition rather than an instance to avoid typeclass diamonds (see below), and meant for use with notation such asContinuous[_, dTopology].IsDTopologyCompatible X: typeclass stating thatXis equipped with a topology that is equal (but not necessarily defeq) to the D-topology.NormedSpace.toDiffeology: the standard diffeology on any finite-dimensional normed spaceX, consisting of all conventionally smooth maps ℝⁿ → X. This is again a definition rather than a instance for typeclass diamond reasons; however, we do put this as an instance onℝandEuclideanSpace ℝ ιfor finiteι.IsContDiffCompatible X: typeclass stating that the diffeology on a normed spaceXis equal to the diffeology whose plots are precisely the smooth maps.isPlot_iff_dSmooth: a map ℝⁿ → X is a plot iff it is smooth.dSmooth_iff_contDiff: a map between finite-dimensional normed spaces is smooth in the sense ofDSmoothiff it is smooth in the sense ofContDiff ℝ ∞.
Implementation notes #
Choice of test spaces #
Instead of defining diffeologies as collections of plots ℝⁿ → X whose domains are the spaces ℝⁿ, we could have also defined them in terms of maps from some other collection of test spaces; for example:
- all open balls in the spaces ℝⁿ
- all open subsets of the spaces ℝⁿ
- all finite-dimensional normed spaces, or open balls therein / open subsets thereof
- all finite-dimensional smooth manifolds.
All of these result in equivalent notions of diffeologies and smooth maps; the abstract way to see this is that the corresponding sites are all dense subsites of the site of finite-dimensional smooth manifolds, and hence give rise to equivalent sheaf topoi. Which of those sites / collections of test spaces to use is hence mainly a matter of convenience; we have gone with the cartesian spaces ℝⁿ mainly for two reasons:
- They are the simplest to work with for practical purposes: maps between subsets are more annoying to deal with formally than maps between types, and e.g. smooth manifolds are extremely annoying to quantify over, while the cartesian spaces ℝⁿ are indexed simply by the natural numbers ℕ.
- Working with e.g. all finite-dimensional normed spaces instead of this particular choice of representatives would lead to an unnecessary universe bump.
One downside of this choice compared to that of all open subsets of ℝⁿ is however that it makes the
sheaf condition / locality condition of diffeologies ("any map that is locally a plot is also
globally a plot") somewhat awkward to state and prove. To mitigate this, we provide
DiffeologicalSpace.ofPlotsOn as a way to construct a diffeology from plots whose domains are
subsets of ℝⁿ. See the definition of NormedSpace.toDiffeology for an example where this is used.
D-Topology #
While the D-topology is quite well-behaved in some regards, it does unfortunately not always commute
with e.g. products. This means that it can not be registered as an instance - otherwise, there would
be two TopologicalSpace-instances on binary products, the product topology of the D-topologies on
the factors and the D-topology of the product diffeology. For emphasis we repeat: in general these
topologies can be mathematically distinct not just non-defeq. We thus instead define a typeclass
IsDTopologyCompatible X to express when the topology on X does match the D-topology, and also
give the D-topology the short name dTopology to enable use of notations such as
Continuous[_, dTopology] for continuity with respect to the D-topology.
In order to make it easier to work with diffeological spaces whose natural diffeology does match
the D-topology, we also include the D-topology as part of the data of DiffeologicalSpace X.
This allows the diffeologies on e.g. ℝⁿ, manifolds and quotients of diffeological spaces to be
defined in such a way that the D-topology is defeq to the topology that the space already carries.
Diffeologies on normed spaces #
Every normed spaces carries a natural diffeology consisting of all smooth maps from ℝⁿ. While this
"normed space diffeology" does commute with arbitrary products, we can't register it as an instance
because it wouldn't be defeq to the product diffeology on products of normed spaces. We thus only
give it as a definition (NormedSpace.toDiffeology) instead of an instance, and instead provide a
typeclass IsContDiffCompatible X for talking about normed spaces equipped with the normed space
diffeology.
To make working with finite-dimensional spaces easier, NormedSpace.toDiffeology is defined in such
a way that its D-topology is defeq to the topology induced by the norm - however, this currently
comes at the cost of making the definition work only on finite-dimensional spaces. It should be
possible to extend this to all normed spaces though in the future.
TODO #
Much of the basic theory of diffeological spaces has already been formalised at https://github.com/peabrainiac/lean-orbifolds and just needs to be upstreamed. However, some TODOs that haven't been formalised at all yet and only depend on the material here are:
- Generalise
NormedSpace.toDiffeologyto infinite-dimensional normed spaces. The hard part of this is showing that the D-topology of any normed space is just its usual topology, as is needed to make that equality definitional. On paper, this is relatively straightforward: for a set U ⊆ X that is not open under the standard normed space topology, take a sequence x_i outside of U that converges to a point in U, a smooth map ℝ → X under which a convergent sequence in ℝ maps to this sequence (x_i), and use it to conclude that U is not D-open either. However, constructing the needed smooth map explicitly is probably a lot of work. - Generalise
dSmooth_iff_contDiffto infinite-dimensional normed spaces if possible. There should be some references at least for the case of Banach spaces in the literature.
References #
Tags #
diffeology, diffeological space, smoothness, smooth function
A diffeology on X, given by the smooth functions (or "plots") from ℝⁿ to X.
- plots (n : ℕ) : Set (EuclideanSpace ℝ (Fin n) → X)
The plots
EuclideanSpace ℝ (Fin n) → Xrepresenting the smooth ways to mapEuclideanSpace ℝ (Fin n)intoX. This is the main piece of data underlying the diffeology. Every constant map needs to be a plot.
- plot_reparam {n m : ℕ} {p : EuclideanSpace ℝ (Fin m) → X} {f : EuclideanSpace ℝ (Fin n) → EuclideanSpace ℝ (Fin m)} (hp : p ∈ plots m) (hf : ContDiff ℝ (↑⊤) f) : p ∘ f ∈ plots n
Smooth reparametrisations of plots need to be plots.
- locality {n : ℕ} {p : EuclideanSpace ℝ (Fin n) → X} (hp : ∀ (x : EuclideanSpace ℝ (Fin n)), ∃ (u : Set (EuclideanSpace ℝ (Fin n))), IsOpen u ∧ x ∈ u ∧ ∀ {m : ℕ} {f : EuclideanSpace ℝ (Fin m) → EuclideanSpace ℝ (Fin n)}, (∀ (x : EuclideanSpace ℝ (Fin m)), f x ∈ u) → ContDiff ℝ (↑⊤) f → p ∘ f ∈ plots m) : p ∈ plots n
Every locally smooth map
EuclideanSpace ℝ (Fin n) → Xis a plot. - dTopology : TopologicalSpace X
The D-topology of the diffeology. This is included as part of the data in order to give control over what the D-topology is defeq to. See also note [forgetful inheritance].
- isOpen_iff_preimages_plots {u : Set X} : TopologicalSpace.IsOpen u ↔ ∀ {n : ℕ}, ∀ p ∈ plots n, IsOpen (p ⁻¹' u)
The D-topology consists of exactly those sets whose preimages under plots are all open.
Instances
Alias of DiffeologicalSpace.dTopology.
The D-topology of the diffeology. This is included as part of the data in order to give control over what the D-topology is defeq to. See also note [forgetful inheritance].
Equations
Instances For
A map p : EuclideanSpace ℝ (Fin n) → X is called a plot iff it is part of the diffeology on
X. This is equivalent to p being smooth with respect to the standard diffeology on
EuclideanSpace ℝ (Fin n).
Equations
- Diffeology.IsPlot p = (p ∈ DiffeologicalSpace.plots n)
Instances For
A function between diffeological spaces is smooth iff composition with it preserves smoothness of plots.
Equations
- Diffeology.DSmooth f = ∀ (n : ℕ) (p : EuclideanSpace ℝ (Fin n) → X), Diffeology.IsPlot p → Diffeology.IsPlot (f ∘ p)
Instances For
Replaces the D-topology of a diffeology with another topology equal to it. Useful to construct diffeologies with better definitional equalities.
Equations
- d.replaceDTopology t h = { plots := DiffeologicalSpace.plots, constant_plots := ⋯, plot_reparam := ⋯, locality := ⋯, dTopology := t, isOpen_iff_preimages_plots := ⋯ }
Instances For
A structure with plots specified on open subsets of ℝⁿ rather than ℝⁿ itself. Useful for constructing diffeologies, as it often makes the locality condition easier to prove.
- isPlotOn {n : ℕ} {u : Set (EuclideanSpace ℝ (Fin n))} (hu : IsOpen u) : (EuclideanSpace ℝ (Fin n) → X) → Prop
The predicate determining which maps
u → Xwithu : Set (EuclideanSpace ℝ (Fin n))open are plots. - isPlot {n : ℕ} : (EuclideanSpace ℝ (Fin n) → X) → Prop
The predicate that the diffeology built from this structure will use. Can be overwritten to allow for better definitional equalities.
- isPlotOn_reparam {n m : ℕ} {u : Set (EuclideanSpace ℝ (Fin n))} {v : Set (EuclideanSpace ℝ (Fin m))} {hu : IsOpen u} (hv : IsOpen v) {p : EuclideanSpace ℝ (Fin n) → X} {f : EuclideanSpace ℝ (Fin m) → EuclideanSpace ℝ (Fin n)} (h : Set.MapsTo f v u) (hp : self.isPlotOn hu p) (hf : ContDiffOn ℝ (↑⊤) f v) : self.isPlotOn hv (p ∘ f)
- locality {n : ℕ} {u : Set (EuclideanSpace ℝ (Fin n))} (hu : IsOpen u) {p : EuclideanSpace ℝ (Fin n) → X} (hp : ∀ x ∈ u, ∃ (v : Set (EuclideanSpace ℝ (Fin n))) (hv : IsOpen v), x ∈ v ∧ self.isPlotOn hv p) : self.isPlotOn hu p
The locality axiom of diffeologies, phrased in terms of
isPlotOn. - dTopology : TopologicalSpace X
The D-topology that the diffeology built from this structure will use. Can be overwritten to allow for better definitional equalities.
- isOpen_iff_preimages_plots {u : Set X} : TopologicalSpace.IsOpen u ↔ ∀ {n : ℕ} (p : EuclideanSpace ℝ (Fin n) → X), self.isPlot p → IsOpen (p ⁻¹' u)
Instances For
Constructs a diffeology from plots defined on open subsets or ℝⁿ rather than ℝⁿ itself,
organised in the form of the auxiliary CorePlotsOn structure.
This is more involved in most regards, but also often makes it quite a lot easier to prove
the locality condition.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Technical condition saying that the topology on a type agrees with the D-topology. Necessary because the D-topologies on for example products and subspaces don't agree with the product and subspace topologies.
Instances
A smooth function between spaces that are equipped with the D-topology is continuous.
Technical condition saying that the diffeology on a space is the one coming from
smoothness in the sense of ContDiff ℝ ∞. Necessary as a hypothesis for some theorems
because some normed spaces carry a diffeology that is equal but not defeq to the normed space
diffeology (for example the product diffeology in the case of Fin n → ℝ), so the information
that these theorems still holds needs to be made available via this typeclass.
Instances
Diffeology on a finite-dimensional normed space. We make this a definition instead of an
instance because we also want to have product diffeologies as an instance, and having both would
cause instance diamonds on spaces like Fin n → ℝ.
Equations
- One or more equations did not get rendered due to their size.