Local homeomorphisms #
THIS FILE IS SYNCHRONIZED WITH MATHLIB4. Any changes to this file require a corresponding PR to mathlib4.
This file defines homeomorphisms between open subsets of topological spaces. An element e
of
local_homeomorph α β
is an extension of local_equiv α β
, i.e., it is a pair of functions
e.to_fun
and e.inv_fun
, 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.to_fun x
and e.inv_fun x
.
Main definitions #
homeomorph.to_local_homeomorph
: associating a local homeomorphism to a homeomorphism, with
source = target = univ
local_homeomorph.symm
: the inverse of a local homeomorphism
local_homeomorph.trans
: the composition of two local homeomorphisms
local_homeomorph.refl
: the identity local homeomorphism
local_homeomorph.of_set
: the identity on a set s
eq_on_source
: equivalence relation describing the "right" notion of equality for local
homeomorphisms
Implementation notes #
Most statements are copied from their local_equiv versions, although some care is required especially when restricting to subsets, as these should be open subsets.
For design notes, see local_equiv.lean
.
Local coding conventions #
If a lemma deals with the intersection of a set with either source or target of a local_equiv
,
then it should use e.source ∩ s
or e.target ∩ t
, not s ∩ e.source
or t ∩ e.target
.
- to_local_equiv : local_equiv α β
- open_source : is_open self.to_local_equiv.source
- open_target : is_open self.to_local_equiv.target
- continuous_to_fun : continuous_on self.to_local_equiv.to_fun self.to_local_equiv.source
- continuous_inv_fun : continuous_on self.to_local_equiv.inv_fun self.to_local_equiv.target
local homeomorphisms, defined on open subsets of the space
Instances for local_homeomorph
- local_homeomorph.has_sizeof_inst
- local_homeomorph.has_coe_to_fun
- local_homeomorph.setoid
- structure_groupoid.has_mem
Equations
- local_homeomorph.has_coe_to_fun = {coe := λ (e : local_homeomorph α β), e.to_local_equiv.to_fun}
The inverse of a local homeomorphism
Equations
- e.symm = {to_local_equiv := {to_fun := e.to_local_equiv.symm.to_fun, inv_fun := e.to_local_equiv.symm.inv_fun, source := e.to_local_equiv.symm.source, target := e.to_local_equiv.symm.target, map_source' := _, map_target' := _, left_inv' := _, right_inv' := _}, open_source := _, open_target := _, continuous_to_fun := _, continuous_inv_fun := _}
See Note [custom simps projection]. We need to specify this projection explicitly in this case, because it is a composition of multiple projections.
Equations
See Note [custom simps projection]
Equations
A homeomorphism induces a local homeomorphism on the whole space
Equations
- e.to_local_homeomorph = {to_local_equiv := {to_fun := e.to_equiv.to_local_equiv.to_fun, inv_fun := e.to_equiv.to_local_equiv.inv_fun, source := e.to_equiv.to_local_equiv.source, target := e.to_equiv.to_local_equiv.target, map_source' := _, map_target' := _, left_inv' := _, right_inv' := _}, open_source := _, open_target := _, continuous_to_fun := _, continuous_inv_fun := _}
Replace to_local_equiv
field to provide better definitional equalities.
Equations
- e.replace_equiv e' h = {to_local_equiv := e', open_source := _, open_target := _, continuous_to_fun := _, continuous_inv_fun := _}
Two local homeomorphisms are equal when they have equal to_fun
, inv_fun
and source
.
It is not sufficient to have equal to_fun
and source
, as this only determines inv_fun
on
the target. This would only be true for a weaker notion of equality, arguably the right one,
called eq_on_source
.
A local homeomorphism is continuous at any point of its source
A local 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 γ
).
local_homeomorph.is_image
relation #
We say that t : set β
is an image of s : set α
under a local 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 local_equiv.is_image
for local homeomorphisms. In this section
we transfer API about local_equiv.is_image
to local homeomorphisms and add a few
local_homeomorph
-specific lemmas like local_homeomorph.is_image.closure
.
We say that t : set β
is an image of s : set α
under a local 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).
Alias of the forward direction of local_homeomorph.is_image.iff_preimage_eq
.
Alias of the reverse direction of local_homeomorph.is_image.iff_preimage_eq
.
Alias of the forward direction of local_homeomorph.is_image.iff_symm_preimage_eq
.
Alias of the reverse direction of local_homeomorph.is_image.iff_symm_preimage_eq
.
Alias of the reverse direction of local_homeomorph.is_image.iff_symm_preimage_eq'
.
Alias of the forward direction of local_homeomorph.is_image.iff_symm_preimage_eq'
.
Alias of the forward direction of local_homeomorph.is_image.iff_preimage_eq'
.
Alias of the reverse direction of local_homeomorph.is_image.iff_preimage_eq'
.
Restrict a local_homeomorph
to a pair of corresponding open sets.
Equations
- h.restr hs = {to_local_equiv := _.restr, open_source := hs, open_target := _, continuous_to_fun := _, continuous_inv_fun := _}
Preimage of interior or interior of preimage coincide for local homeomorphisms, when restricted to the source.
The image of an open set in the source is open.
The image of the restriction of an open set to the source is open.
A local_equiv
with continuous open forward map and an open source is a local_homeomorph
.
Equations
- local_homeomorph.of_continuous_open_restrict e hc ho hs = {to_local_equiv := e, open_source := hs, open_target := _, continuous_to_fun := hc, continuous_inv_fun := _}
A local_equiv
with continuous open forward map and an open source is a local_homeomorph
.
Equations
- local_homeomorph.of_continuous_open e hc ho hs = local_homeomorph.of_continuous_open_restrict e hc _ hs
Restricting a local 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 local_equiv is defeq to local_equiv.restr
Equations
- e.restr_open s hs = _.restr _
Restricting a local 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 local homeomorphisms are by
definition defined on open sets. In applications where s
is open, this coincides with the
restriction of local equivalences
Equations
- e.restr s = e.restr_open (interior s) is_open_interior
The identity on the whole space as a local homeomorphism.
Equations
The identity local equiv on a set s
Equations
- local_homeomorph.of_set s hs = {to_local_equiv := {to_fun := (local_equiv.of_set s).to_fun, inv_fun := (local_equiv.of_set s).inv_fun, source := (local_equiv.of_set s).source, target := (local_equiv.of_set s).target, map_source' := _, map_target' := _, left_inv' := _, right_inv' := _}, open_source := hs, open_target := hs, continuous_to_fun := _, continuous_inv_fun := _}
Composition of two local homeomorphisms when the target of the first and the source of the second coincide.
Equations
- e.trans' e' h = {to_local_equiv := {to_fun := (e.to_local_equiv.trans' e'.to_local_equiv h).to_fun, inv_fun := (e.to_local_equiv.trans' e'.to_local_equiv h).inv_fun, source := (e.to_local_equiv.trans' e'.to_local_equiv h).source, target := (e.to_local_equiv.trans' e'.to_local_equiv h).target, map_source' := _, map_target' := _, left_inv' := _, right_inv' := _}, open_source := _, open_target := _, continuous_to_fun := _, continuous_inv_fun := _}
Composing two local homeomorphisms, by restricting to the maximal domain where their composition is well defined.
Equations
- e.trans e' = (e.symm.restr_open e'.to_local_equiv.source _).symm.trans' (e'.restr_open e.to_local_equiv.target _) _
Postcompose a local homeomorphism with an homeomorphism. We modify the source and target to have better definitional behavior.
Equations
- e.trans_homeomorph e' = {to_local_equiv := e.to_local_equiv.trans_equiv e'.to_equiv, open_source := _, open_target := _, continuous_to_fun := _, continuous_inv_fun := _}
Precompose a local homeomorphism with an homeomorphism. We modify the source and target to have better definitional behavior.
Equations
- homeomorph.trans_local_homeomorph e' e = {to_local_equiv := equiv.trans_local_equiv e'.to_local_equiv e.to_equiv, open_source := _, open_target := _, continuous_to_fun := _, continuous_inv_fun := _}
eq_on_source e e'
means that e
and e'
have the same source, and coincide there. They
should really be considered the same local equiv.
Equations
- e.eq_on_source e' = (e.to_local_equiv.source = e'.to_local_equiv.source ∧ set.eq_on ⇑e ⇑e' e.to_local_equiv.source)
eq_on_source
is an equivalence relation
Equations
- local_homeomorph.setoid = {r := local_homeomorph.eq_on_source _inst_2, iseqv := _}
If two local homeomorphisms are equivalent, so are their inverses
Two equivalent local homeomorphisms have the same source
Two equivalent local homeomorphisms have the same target
Two equivalent local homeomorphisms have coinciding to_fun
on the source
Two equivalent local homeomorphisms have coinciding inv_fun
on the target
Composition of local homeomorphisms respects equivalence
Restriction of local homeomorphisms respects equivalence
Composition of a local homeomorphism and its inverse is equivalent to the restriction of the identity to the source
The product of two local homeomorphisms, as a local homeomorphism on the product space.
Equations
- e.prod e' = {to_local_equiv := e.to_local_equiv.prod e'.to_local_equiv, open_source := _, open_target := _, continuous_to_fun := _, continuous_inv_fun := _}
Combine two local_homeomorph
s using set.piecewise
. The source of the new local_homeomorph
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 that the maps to_fun
and inv_fun
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 = {to_local_equiv := e.to_local_equiv.piecewise e'.to_local_equiv s t H H', open_source := _, open_target := _, continuous_to_fun := _, continuous_inv_fun := _}
Combine two local_homeomorph
s with disjoint sources and disjoint targets. We reuse
local_homeomorph.piecewise
then override to_local_equiv
to local_equiv.disjoint_union
.
This way we have better definitional equalities for source
and target
.
Equations
- e.disjoint_union e' Hs Ht = (e.piecewise e' e.to_local_equiv.source e.to_local_equiv.target _ _ _ _).replace_equiv (e.to_local_equiv.disjoint_union e'.to_local_equiv Hs Ht) _
The product of a finite family of local_homeomorph
s.
Equations
- local_homeomorph.pi ei = {to_local_equiv := local_equiv.pi (λ (i : ι), (ei i).to_local_equiv), open_source := _, open_target := _, continuous_to_fun := _, continuous_inv_fun := _}
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 local homeomorphism, if the point is in its target
A function is continuous on a set if and only if its composition with a local 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 local homeomorphism if a neighborhood of the initial point is sent to the source of the local homeomorphism
A function is continuous on a set if and only if its composition with a local homeomorphism on the left is continuous on the corresponding set.
A function is continuous if and only if its composition with a local homeomorphism on the left is continuous and its image is contained in the source.
The homeomorphism obtained by restricting a local_homeomorph
to a subset of the source.
A local homeomrphism defines a homeomorphism between its source and target.
Equations
If a local homeomorphism has source and target equal to univ, then it induces a homeomorphism between the whole spaces, expressed in this definition.
Equations
- e.to_homeomorph_of_source_eq_univ_target_eq_univ h h' = {to_equiv := {to_fun := ⇑e, inv_fun := ⇑(e.symm), left_inv := _, right_inv := _}, continuous_to_fun := _, continuous_inv_fun := _}
A local homeomorphism whose source is all of α
defines an open embedding of α
into β
. The
converse is also true; see open_embedding.to_local_homeomorph
.
An open embedding of α
into β
, with α
nonempty, defines a local homeomorphism whose source
is all of α
. The converse is also true; see local_homeomorph.to_open_embedding
.
Equations
The inclusion of an open subset s
of a space α
into α
is a local homeomorphism from the
subtype s
to α
.
Equations
The restriction of a local homeomorphism e
to an open subset s
of the domain type produces a
local homeomorphism whose domain is the subtype s
.