Partial homeomorphisms #
This file defines homeomorphisms between open subsets of topological spaces. An element e
of
PartialHomeomorph X Y
is an extension of PartialEquiv X Y
, i.e., it is a pair of functions
e.toFun
and e.invFun
, inverse of each other on the sets e.source
and e.target
.
Additionally, we require that these sets are open, and that the functions are continuous on them.
Equivalently, they are homeomorphisms there.
As in equivs, we register a coercion to functions, and we use e x
and e.symm x
throughout
instead of e.toFun x
and e.invFun x
.
Main definitions #
Homeomorph.toPartialHomeomorph
: associating a partial homeomorphism to a homeomorphism, withsource = target = Set.univ
;PartialHomeomorph.symm
: the inverse of a partial homeomorphismPartialHomeomorph.trans
: the composition of two partial homeomorphismsPartialHomeomorph.refl
: the identity partial homeomorphismPartialHomeomorph.ofSet
: the identity on a sets
PartialHomeomorph.EqOnSource
: equivalence relation describing the "right" notion of equality for partial homeomorphisms
Implementation notes #
Most statements are copied from their PartialEquiv
versions, although some care is required
especially when restricting to subsets, as these should be open subsets.
For design notes, see PartialEquiv.lean
.
Local coding conventions #
If a lemma deals with the intersection of a set with either source or target of a PartialEquiv
,
then it should use e.source ∩ s
or e.target ∩ t
, not s ∩ e.source
or t ∩ e.target
.
Partial homeomorphisms, defined on open subsets of the space
- toFun : X → Y
- invFun : Y → X
- source : Set X
- target : Set Y
- open_source : IsOpen self.source
- open_target : IsOpen self.target
- continuousOn_toFun : ContinuousOn (↑self.toPartialEquiv) self.source
- continuousOn_invFun : ContinuousOn self.invFun self.target
Instances For
Basic properties; inverse (symm instance)
Coercion of a partial homeomorphisms to a function. We don't use e.toFun
because it is
actually e.toPartialEquiv.toFun
, so simp
will apply lemmas about toPartialEquiv
.
While we may want to switch to this behavior later, doing it mid-port will break a lot of proofs.
Equations
- ↑e = ↑e.toPartialEquiv
Instances For
Coercion of a PartialHomeomorph
to function.
Note that a PartialHomeomorph
is not DFunLike
.
Equations
- PartialHomeomorph.instCoeFunForall = { coe := fun (e : PartialHomeomorph X Y) => ↑e }
The inverse of a partial homeomorphism
Equations
- e.symm = { toPartialEquiv := e.symm, open_source := ⋯, open_target := ⋯, continuousOn_toFun := ⋯, continuousOn_invFun := ⋯ }
Instances For
See Note [custom simps projection]. We need to specify this projection explicitly in this case, because it is a composition of multiple projections.
Equations
Instances For
See Note [custom simps projection]
Equations
- PartialHomeomorph.Simps.symm_apply e = ↑e.symm
Instances For
Variant of map_source
, stated for images of subsets of source
.
Interpret a Homeomorph
as a PartialHomeomorph
by restricting it
to an open set s
in the domain and to t
in the codomain.
Equations
- e.toPartialHomeomorphOfImageEq s hs t h = { toPartialEquiv := e.toPartialEquivOfImageEq s t h, open_source := hs, open_target := ⋯, continuousOn_toFun := ⋯, continuousOn_invFun := ⋯ }
Instances For
A homeomorphism induces a partial homeomorphism on the whole space
Equations
- e.toPartialHomeomorph = e.toPartialHomeomorphOfImageEq Set.univ ⋯ Set.univ ⋯
Instances For
Replace toPartialEquiv
field to provide better definitional equalities.
Equations
- e.replaceEquiv e' h = { toPartialEquiv := e', open_source := ⋯, open_target := ⋯, continuousOn_toFun := ⋯, continuousOn_invFun := ⋯ }
Instances For
Two partial homeomorphisms are equal when they have equal toFun
, invFun
and source
.
It is not sufficient to have equal toFun
and source
, as this only determines invFun
on
the target. This would only be true for a weaker notion of equality, arguably the right one,
called EqOnSource
.
A partial homeomorphism is continuous at any point of its source
A partial homeomorphism inverse is continuous at any point of its target
This lemma is useful in the manifold library in the case that e
is a chart. It states that
locally around e x
the set e.symm ⁻¹' s
is the same as the set intersected with the target
of e
and some other neighborhood of f x
(which will be the source of a chart on Z
).
A partial homeomorphism is an open map on its source: the image of an open subset of the source is open.
The image of the restriction of an open set to the source is open.
The inverse of a partial homeomorphism e
is an open map on e.target
.
PartialHomeomorph.IsImage
relation #
We say that t : Set Y
is an image of s : Set X
under a partial homeomorphism e
if any of the
following equivalent conditions hold:
e '' (e.source ∩ s) = e.target ∩ t
;e.source ∩ e ⁻¹ t = e.source ∩ s
;∀ x ∈ e.source, e x ∈ t ↔ x ∈ s
(this one is used in the definition).
This definition is a restatement of PartialEquiv.IsImage
for partial homeomorphisms.
In this section we transfer API about PartialEquiv.IsImage
to partial homeomorphisms and
add a few PartialHomeomorph
-specific lemmas like PartialHomeomorph.IsImage.closure
.
We say that t : Set Y
is an image of s : Set X
under a partial homeomorphism e
if any of the following equivalent conditions hold:
e '' (e.source ∩ s) = e.target ∩ t
;e.source ∩ e ⁻¹ t = e.source ∩ s
;∀ x ∈ e.source, e x ∈ t ↔ x ∈ s
(this one is used in the definition).
Instances For
Alias of the forward direction of PartialHomeomorph.IsImage.iff_preimage_eq
.
Alias of the reverse direction of PartialHomeomorph.IsImage.iff_preimage_eq
.
Alias of the reverse direction of PartialHomeomorph.IsImage.iff_symm_preimage_eq
.
Alias of the forward direction of PartialHomeomorph.IsImage.iff_symm_preimage_eq
.
Alias of the reverse direction of PartialHomeomorph.IsImage.iff_symm_preimage_eq'
.
Alias of the forward direction of PartialHomeomorph.IsImage.iff_symm_preimage_eq'
.
Alias of the reverse direction of PartialHomeomorph.IsImage.iff_preimage_eq'
.
Alias of the forward direction of PartialHomeomorph.IsImage.iff_preimage_eq'
.
Restrict a PartialHomeomorph
to a pair of corresponding open sets.
Equations
- h.restr hs = { toPartialEquiv := ⋯.restr, open_source := hs, open_target := ⋯, continuousOn_toFun := ⋯, continuousOn_invFun := ⋯ }
Instances For
Preimage of interior or interior of preimage coincide for partial homeomorphisms, when restricted to the source.
A PartialEquiv
with continuous open forward map and open source is a PartialHomeomorph
.
Equations
- PartialHomeomorph.ofContinuousOpenRestrict e hc ho hs = { toPartialEquiv := e, open_source := hs, open_target := ⋯, continuousOn_toFun := hc, continuousOn_invFun := ⋯ }
Instances For
A PartialEquiv
with continuous open forward map and open source is a PartialHomeomorph
.
Equations
- PartialHomeomorph.ofContinuousOpen e hc ho hs = PartialHomeomorph.ofContinuousOpenRestrict e hc ⋯ hs
Instances For
Restricting a partial homeomorphism e
to e.source ∩ s
when s
is open.
This is sometimes hard to use because of the openness assumption, but it has the advantage that
when it can be used then its PartialEquiv
is defeq to PartialEquiv.restr
.
Equations
- e.restrOpen s hs = ⋯.restr ⋯
Instances For
Restricting a partial homeomorphism e
to e.source ∩ interior s
. We use the interior to make
sure that the restriction is well defined whatever the set s, since partial homeomorphisms are by
definition defined on open sets. In applications where s
is open, this coincides with the
restriction of partial equivalences
Instances For
The identity on the whole space as a partial homeomorphism.
Equations
- PartialHomeomorph.refl X = (Homeomorph.refl X).toPartialHomeomorph
Instances For
ofSet: the identity on a set s
The identity partial equivalence on a set s
Equations
- PartialHomeomorph.ofSet s hs = { toPartialEquiv := PartialEquiv.ofSet s, open_source := hs, open_target := hs, continuousOn_toFun := ⋯, continuousOn_invFun := ⋯ }
Instances For
trans
: composition of two partial homeomorphisms
Composition of two partial homeomorphisms when the target of the first and the source of the second coincide.
Equations
- e.trans' e' h = { toPartialEquiv := e.trans' e'.toPartialEquiv h, open_source := ⋯, open_target := ⋯, continuousOn_toFun := ⋯, continuousOn_invFun := ⋯ }
Instances For
Composing two partial homeomorphisms, by restricting to the maximal domain where their composition is well defined.
Equations
- e.trans e' = (e.symm.restrOpen e'.source ⋯).symm.trans' (e'.restrOpen e.target ⋯) ⋯
Instances For
EqOnSource
: equivalence on their source
EqOnSource e e'
means that e
and e'
have the same source, and coincide there. They
should really be considered the same partial equivalence.
Instances For
EqOnSource
is an equivalence relation.
Equations
- PartialHomeomorph.eqOnSourceSetoid = let __src := Setoid.comap PartialHomeomorph.toPartialEquiv PartialEquiv.eqOnSourceSetoid; { r := PartialHomeomorph.EqOnSource, iseqv := ⋯ }
If two partial homeomorphisms are equivalent, so are their inverses.
Two equivalent partial homeomorphisms have the same source.
Two equivalent partial homeomorphisms have the same target.
Two equivalent partial homeomorphisms have coinciding toFun
on the source
Two equivalent partial homeomorphisms have coinciding invFun
on the target
Composition of partial homeomorphisms respects equivalence.
Restriction of partial homeomorphisms respects equivalence
Two equivalent partial homeomorphisms are equal when the source and target are univ
.
Composition of a partial homeomorphism and its inverse is equivalent to the restriction of the identity to the source
product of two partial homeomorphisms
The product of two partial homeomorphisms, as a partial homeomorphism on the product space.
Equations
- eX.prod eY = { toPartialEquiv := eX.prod eY.toPartialEquiv, open_source := ⋯, open_target := ⋯, continuousOn_toFun := ⋯, continuousOn_invFun := ⋯ }
Instances For
finite product of partial homeomorphisms
The product of a finite family of PartialHomeomorph
s.
Equations
- PartialHomeomorph.pi ei = { toPartialEquiv := PartialEquiv.pi fun (i : ι) => (ei i).toPartialEquiv, open_source := ⋯, open_target := ⋯, continuousOn_toFun := ⋯, continuousOn_invFun := ⋯ }
Instances For
combining two partial homeomorphisms using Set.piecewise
Combine two PartialHomeomorph
s using Set.piecewise
. The source of the new
PartialHomeomorph
is s.ite e.source e'.source = e.source ∩ s ∪ e'.source \ s
, and similarly for
target. The function sends e.source ∩ s
to e.target ∩ t
using e
and
e'.source \ s
to e'.target \ t
using e'
, and similarly for the inverse function.
To ensure the maps toFun
and invFun
are inverse of each other on the new source
and target
,
the definition assumes that the sets s
and t
are related both by e.is_image
and e'.is_image
.
To ensure that the new maps are continuous on source
/target
, it also assumes that e.source
and
e'.source
meet frontier s
on the same set and e x = e' x
on this intersection.
Equations
- e.piecewise e' s t H H' Hs Heq = { toPartialEquiv := e.piecewise e'.toPartialEquiv s t H H', open_source := ⋯, open_target := ⋯, continuousOn_toFun := ⋯, continuousOn_invFun := ⋯ }
Instances For
Combine two PartialHomeomorph
s with disjoint sources and disjoint targets. We reuse
PartialHomeomorph.piecewise
then override toPartialEquiv
to PartialEquiv.disjointUnion
.
This way we have better definitional equalities for source
and target
.
Equations
- e.disjointUnion e' Hs Ht = (e.piecewise e' e.source e.target ⋯ ⋯ ⋯ ⋯).replaceEquiv (e.disjointUnion e'.toPartialEquiv Hs Ht) ⋯
Instances For
Continuity within a set at a point can be read under right composition with a local homeomorphism, if the point is in its target
Continuity at a point can be read under right composition with a partial homeomorphism, if the point is in its target
A function is continuous on a set if and only if its composition with a partial homeomorphism on the right is continuous on the corresponding set.
Continuity within a set at a point can be read under left composition with a local homeomorphism if a neighborhood of the initial point is sent to the source of the local homeomorphism
Continuity at a point can be read under left composition with a partial homeomorphism if a neighborhood of the initial point is sent to the source of the partial homeomorphism
A function is continuous on a set if and only if its composition with a partial homeomorphism on the left is continuous on the corresponding set.
A function is continuous if and only if its composition with a partial homeomorphism on the left is continuous and its image is contained in the source.
The homeomorphism obtained by restricting a PartialHomeomorph
to a subset of the source.
Equations
- One or more equations did not get rendered due to their size.
Instances For
A partial homeomorphism defines a homeomorphism between its source and target.
Equations
- e.toHomeomorphSourceTarget = e.homeomorphOfImageSubsetSource ⋯ ⋯
Instances For
If a partial homeomorphism has source and target equal to univ, then it induces a homeomorphism between the whole spaces, expressed in this definition.
Equations
- e.toHomeomorphOfSourceEqUnivTargetEqUniv h h' = { toFun := ↑e, invFun := ↑e.symm, left_inv := ⋯, right_inv := ⋯, continuous_toFun := ⋯, continuous_invFun := ⋯ }
Instances For
A partial homeomorphism whose source is all of X
defines an open embedding of X
into Y
.
The converse is also true; see OpenEmbedding.toPartialHomeomorph
.
Precompose a partial homeomorphism with a homeomorphism. We modify the source and target to have better definitional behavior.
Equations
- e.transPartialHomeomorph f' = { toPartialEquiv := e.transPartialEquiv f'.toPartialEquiv, open_source := ⋯, open_target := ⋯, continuousOn_toFun := ⋯, continuousOn_invFun := ⋯ }
Instances For
An open embedding of X
into Y
, with X
nonempty, defines a partial homeomorphism
whose source is all of X
. The converse is also true; see PartialHomeomorph.to_openEmbedding
.
Equations
- OpenEmbedding.toPartialHomeomorph f h = PartialHomeomorph.ofContinuousOpen (Set.InjOn.toPartialEquiv f Set.univ ⋯) ⋯ ⋯ ⋯
Instances For
inclusion of an open set in a topological space
The inclusion of an open subset s
of a space X
into X
is a partial homeomorphism from the
subtype s
to X
.
Equations
- s.partialHomeomorphSubtypeCoe hs = OpenEmbedding.toPartialHomeomorph Subtype.val ⋯
Instances For
Postcompose a partial homeomorphism with a homeomorphism. We modify the source and target to have better definitional behavior.
Equations
- e.transHomeomorph f' = { toPartialEquiv := e.transEquiv f'.toEquiv, open_source := ⋯, open_target := ⋯, continuousOn_toFun := ⋯, continuousOn_invFun := ⋯ }
Instances For
subtypeRestr
: restriction to a subtype
The restriction of a partial homeomorphism e
to an open subset s
of the domain type
produces a partial homeomorphism whose domain is the subtype s
.
Equations
- e.subtypeRestr hs = (s.partialHomeomorphSubtypeCoe hs).trans e
Instances For
This lemma characterizes the transition functions of an open subset in terms of the transition functions of the original space.