Completely (pseudo)metrizable spaces #
A topological space is completely (pseudo)metrizable if one can endow it with a
(Pseudo)MetricSpace structure which makes it complete and gives the same topology. This typeclass
allows to state theorems which do not require a (Pseudo)MetricSpace structure to make sense
without introducing such a structure.
It is in particular useful in measure theory, where one often assumes that a space is a
PolishSpace, i.e. a separable and completely metrizable space. Sometimes the separability
hypothesis is not needed and the right assumption is then IsCompletelyMetrizableSpace.
Main definition #
IsCompletelyPseudoMetrizableSpace X: A topological space is completely pseudometrizable if there exists a pseudometric space structure compatible with the topology which makes the space complete. To endow such a space with a compatible distance, useletI := upgradeIsCompletelyPseudoMetrizable X.IsCompletelyMetrizableSpace X: A topological space is completely metrizable if there exists a metric space structure compatible with the topology which makes the space complete. To endow such a space with a compatible distance, useletI := upgradeIsCompletelyMetrizable X.
Implementation note #
Given a IsCompletely(Pseudo)MetrizableSpace X instance, one may want to endow X with a complete
(pseudo)metric. This can be done by writing letI := upgradeIsCompletely(Pseudo)Metrizable X,
which will endow X with an UpgradedIsCompletely(Pseudo)MetrizableSpace X instance. This class
is a convenience class and no instance should be registered for it.
A topological space is completely pseudometrizable if there exists a pseudometric space
structure compatible with the topology which makes the space complete.
To endow such a space with a compatible distance, use
letI := upgradeIsCompletelyPseudoMetrizable X.
- complete : ∃ (m : PseudoMetricSpace X), PseudoMetricSpace.toUniformSpace.toTopologicalSpace = t ∧ CompleteSpace X
Instances
A convenience class, for a completely pseudometrizable space endowed with a complete
pseudometric. No instance of this class should be registered: It should be used as
letI := upgradeIsCompletelyPseudoMetrizable X to endow a completely pseudometrizable
space with a complete pseudometric.
- uniformity_dist : uniformity X = ⨅ (ε : ℝ), ⨅ (_ : ε > 0), Filter.principal {p : X × X | dist p.1 p.2 < ε}
- toBornology : Bornology X
Instances
Construct on a completely pseudometrizable space a pseudometric (compatible with the topology) which is complete.
Equations
Instances For
This definition endows a completely pseudometrizable space with a complete pseudometric.
Use it as: letI := upgradeIsCompletelyPseudoMetrizable X.
Equations
- TopologicalSpace.upgradeIsCompletelyPseudoMetrizable X = { toPseudoMetricSpace := TopologicalSpace.completelyPseudoMetrizableMetric X, toCompleteSpace := ⋯ }
Instances For
Note: the priority is set to 90 to ensure that this instance is only applied after
PseudoEMetricSpace.pseudoMetrizableSpace. This prevents unnecessary attempts to infer
completeness.
A countable product of completely pseudometrizable spaces is completely pseudometrizable.
The product of two completely pseudometrizable spaces is completely pseudometrizable.
The disjoint union of two completely pseudometrizable spaces is completely pseudometrizable.
Given a closed embedding into a completely pseudometrizable space, the source space is also completely pseudometrizable.
A closed subset of a completely pseudometrizable space is also completely pseudometrizable.
A topological space is completely metrizable if there exists a metric space structure
compatible with the topology which makes the space complete.
To endow such a space with a compatible distance, use
letI := upgradeIsCompletelyMetrizable X.
- complete : ∃ (m : MetricSpace X), PseudoMetricSpace.toUniformSpace.toTopologicalSpace = t ∧ CompleteSpace X
Instances
A completely metrizable space is completely pseudometrizable.
A completely pseudometrizable T0 space is completely metrizable.
A convenience class, for a completely metrizable space endowed with a complete metric.
No instance of this class should be registered: It should be used as
letI := upgradeIsCompletelyMetrizable X to endow a completely metrizable
space with a complete metric.
- uniformity_dist : uniformity X = ⨅ (ε : ℝ), ⨅ (_ : ε > 0), Filter.principal {p : X × X | dist p.1 p.2 < ε}
- toBornology : Bornology X
Instances
Construct on a completely metrizable space a metric (compatible with the topology) which is complete.
Equations
Instances For
This definition endows a completely metrizable space with a complete metric. Use it as:
letI := upgradeIsCompletelyMetrizable X.
Equations
- TopologicalSpace.upgradeIsCompletelyMetrizable X = { toMetricSpace := TopologicalSpace.completelyMetrizableMetric X, toCompleteSpace := ⋯ }
Instances For
Note: the priority is set to 90 to ensure that this instance is only applied after
EMetricSpace.metrizableSpace. This prevents unnecessary attempts to infer completeness.
A countable product of completely metrizable spaces is completely metrizable.
A disjoint union of completely metrizable spaces is completely metrizable.
The product of two completely metrizable spaces is completely metrizable.
The disjoint union of two completely metrizable spaces is completely metrizable.
Given a closed embedding into a completely metrizable space, the source space is also completely metrizable.
Any discrete space is completely metrizable.
A closed subset of a completely metrizable space is also completely metrizable.