Hausdorff properties of uniform spaces. Separation quotient. #
Two points of a topological space are called Inseparable
,
if their neighborhoods filter are equal.
Equivalently, Inseparable x y
means that any open set that contains x
must contain y
and vice versa.
In a uniform space, points x
and y
are inseparable
if and only if (x, y)
belongs to all entourages,
see inseparable_iff_ker_uniformity
.
A uniform space is a regular topological space,
hence separation axioms T0Space
, T1Space
, T2Space
, and T3Space
are equivalent for uniform spaces,
and Lean typeclass search can automatically convert from one assumption to another.
We say that a uniform space is separated, if it satisfies these axioms.
If you need an Iff
statement (e.g., to rewrite),
then see R1Space.t0Space_iff_t2Space
and RegularSpace.t0Space_iff_t3Space
.
In this file we prove several facts
that relate Inseparable
and Specializes
to the uniformity filter.
Most of them are simple corollaries of Filter.HasBasis.inseparable_iff_uniformity
for different filter bases of 𝓤 α
.
Then we study the Kolmogorov quotient SeparationQuotient X
of a uniform space.
For a general topological space,
this quotient is defined as the quotient by Inseparable
equivalence relation.
It is the maximal T₀ quotient of a topological space.
In case of a uniform space, we equip this quotient with a UniformSpace
structure
that agrees with the quotient topology.
We also prove that the quotient map induces uniformity on the original space.
Finally, we turn SeparationQuotient
into a functor
(not in terms of CategoryTheory.Functor
to avoid extra imports)
by defining SeparationQuotient.lift'
and SeparationQuotient.map
operations.
Main definitions #
SeparationQuotient.instUniformSpace
: uniform space structure onSeparationQuotient α
, whereα
is a uniform space;SeparationQuotient.lift'
: given a mapf : α → β
from a uniform space to a separated uniform space, lift it to a mapSeparationQuotient α → β
; if the original map is not uniformly continuous, then returns a constant map.SeparationQuotient.map
: given a mapf : α → β
between uniform spaces, returns a mapSeparationQuotient α → SeparationQuotient β
. If the original map is not uniformly continuous, then returns a constant map. Otherwise,SeparationQuotient.map f (SeparationQuotient.mk x) = SeparationQuotient.mk (f x)
.
Main results #
SeparationQuotient.uniformity_eq
: the uniformity filter onSeparationQuotient α
is the push forward of the uniformity filter onα
.SeparationQuotient.comap_mk_uniformity
: the quotient mapα → SeparationQuotient α
induces uniform space structure on the original space.SeparationQuotient.uniformContinuous_lift'
: factoring a uniformly continuous map through the separation quotient gives a uniformly continuous map.SeparationQuotient.uniformContinuous_map
: maps induced between separation quotients are uniformly continuous.
Implementation notes #
This files used to contain definitions of separationRel α
and UniformSpace.SeparationQuotient α
.
These definitions were equal (but not definitionally equal)
to {x : α × α | Inseparable x.1 x.2}
and SeparationQuotient α
, respectively,
and were added to the library before their geneeralizations to topological spaces.
In https://github.com/leanprover-community/mathlib4/pull/10644, we migrated from these definitions
to more general Inseparable
and SeparationQuotient
.
TODO #
Definitions SeparationQuotient.lift'
and SeparationQuotient.map
rely on UniformSpace
structures in the domain and in the codomain.
We should generalize them to topological spaces.
This generalization will drop UniformContinuous
assumptions in some lemmas,
and add these assumptions in other lemmas,
so it was not done in https://github.com/leanprover-community/mathlib4/pull/10644 to keep it reasonably sized.
Keywords #
uniform space, separated space, Hausdorff space, separation quotient
Separated uniform spaces #
Equations
- ⋯ = ⋯
Separation quotient #
Equations
- SeparationQuotient.instUniformSpace = UniformSpace.mk (Filter.map (Prod.map SeparationQuotient.mk SeparationQuotient.mk) (uniformity α)) ⋯ ⋯ ⋯
Factoring functions to a separated space through the separation quotient.
TODO: unify with SeparationQuotient.lift
.
Equations
- SeparationQuotient.lift' f = if hc : UniformContinuous f then SeparationQuotient.lift f ⋯ else fun (x : SeparationQuotient α) => f ⋯.some
Instances For
The separation quotient functor acting on functions.
Equations
- SeparationQuotient.map f = SeparationQuotient.lift' (SeparationQuotient.mk ∘ f)