# Specific classes of maps between topological spaces #

This file introduces the following properties of a map f : X → Y between topological spaces:

• IsOpenMap f means the image of an open set under f is open.
• IsClosedMap f means the image of a closed set under f is closed.

(Open and closed maps need not be continuous.)

• Inducing f means the topology on X is the one induced via f from the topology on Y. These behave like embeddings except they need not be injective. Instead, points of X which are identified by f are also inseparable in the topology on X.

• Embedding f means f is inducing and also injective. Equivalently, f identifies X with a subspace of Y.

• OpenEmbedding f means f is an embedding with open image, so it identifies X with an open subspace of Y. Equivalently, f is an embedding and an open map.

• ClosedEmbedding f similarly means f is an embedding with closed image, so it identifies X with a closed subspace of Y. Equivalently, f is an embedding and a closed map.

• QuotientMap f is the dual condition to Embedding f: f is surjective and the topology on Y is the one coinduced via f from the topology on X. Equivalently, f identifies Y with a quotient of X. Quotient maps are also sometimes known as identification maps.

## Tags #

open map, closed map, embedding, quotient map, identification map

theorem inducing_induced {X : Type u_1} {Y : Type u_2} [] (f : XY) :
theorem inducing_id {X : Type u_1} [] :
theorem Inducing.comp {X : Type u_1} {Y : Type u_2} {Z : Type u_3} {f : XY} {g : YZ} [] [] [] (hg : ) (hf : ) :
theorem inducing_of_inducing_compose {X : Type u_1} {Y : Type u_2} {Z : Type u_3} {f : XY} {g : YZ} [] [] [] (hf : ) (hg : ) (hgf : Inducing (g f)) :
theorem inducing_iff_nhds {X : Type u_1} {Y : Type u_2} {f : XY} [] [] :
∀ (x : X), nhds x = Filter.comap f (nhds (f x))
theorem Inducing.nhds_eq_comap {X : Type u_1} {Y : Type u_2} {f : XY} [] [] (hf : ) (x : X) :
nhds x = Filter.comap f (nhds (f x))
theorem Inducing.basis_nhds {X : Type u_1} {Y : Type u_2} {ι : Type u_4} {f : XY} [] [] {p : ιProp} {s : ιSet Y} (hf : ) {x : X} (h_basis : Filter.HasBasis (nhds (f x)) p s) :
theorem Inducing.nhdsSet_eq_comap {X : Type u_1} {Y : Type u_2} {f : XY} [] [] (hf : ) (s : Set X) :
theorem Inducing.map_nhds_eq {X : Type u_1} {Y : Type u_2} {f : XY} [] [] (hf : ) (x : X) :
Filter.map f (nhds x) = nhdsWithin (f x) ()
theorem Inducing.map_nhds_of_mem {X : Type u_1} {Y : Type u_2} {f : XY} [] [] (hf : ) (x : X) (h : nhds (f x)) :
Filter.map f (nhds x) = nhds (f x)
theorem Inducing.mapClusterPt_iff {X : Type u_1} {Y : Type u_2} {f : XY} [] [] (hf : ) {x : X} {l : } :
MapClusterPt (f x) l f
theorem Inducing.image_mem_nhdsWithin {X : Type u_1} {Y : Type u_2} {f : XY} [] [] (hf : ) {x : X} {s : Set X} (hs : s nhds x) :
f '' s nhdsWithin (f x) ()
theorem Inducing.tendsto_nhds_iff {Y : Type u_2} {Z : Type u_3} {ι : Type u_4} {g : YZ} [] [] {f : ιY} {l : } {y : Y} (hg : ) :
Filter.Tendsto f l (nhds y) Filter.Tendsto (g f) l (nhds (g y))
theorem Inducing.continuousAt_iff {X : Type u_1} {Y : Type u_2} {Z : Type u_3} {f : XY} {g : YZ} [] [] [] (hg : ) {x : X} :
theorem Inducing.continuous_iff {X : Type u_1} {Y : Type u_2} {Z : Type u_3} {f : XY} {g : YZ} [] [] [] (hg : ) :
theorem Inducing.continuousAt_iff' {X : Type u_1} {Y : Type u_2} {Z : Type u_3} {f : XY} {g : YZ} [] [] [] (hf : ) {x : X} (h : nhds (f x)) :
theorem Inducing.continuous {X : Type u_1} {Y : Type u_2} {f : XY} [] [] (hf : ) :
theorem Inducing.inducing_iff {X : Type u_1} {Y : Type u_2} {Z : Type u_3} {f : XY} {g : YZ} [] [] [] (hg : ) :
theorem Inducing.closure_eq_preimage_closure_image {X : Type u_1} {Y : Type u_2} {f : XY} [] [] (hf : ) (s : Set X) :
= f ⁻¹' closure (f '' s)
theorem Inducing.isClosed_iff {X : Type u_1} {Y : Type u_2} {f : XY} [] [] (hf : ) {s : Set X} :
∃ (t : Set Y), f ⁻¹' t = s
theorem Inducing.isClosed_iff' {X : Type u_1} {Y : Type u_2} {f : XY} [] [] (hf : ) {s : Set X} :
∀ (x : X), f x closure (f '' s)x s
theorem Inducing.isClosed_preimage {X : Type u_1} {Y : Type u_2} {f : XY} [] [] (h : ) (s : Set Y) (hs : ) :
theorem Inducing.isOpen_iff {X : Type u_1} {Y : Type u_2} {f : XY} [] [] (hf : ) {s : Set X} :
∃ (t : Set Y), f ⁻¹' t = s
theorem Inducing.setOf_isOpen {X : Type u_1} {Y : Type u_2} {f : XY} [] [] (hf : ) :
{s : Set X | } = '' {t : Set Y | }
theorem Inducing.dense_iff {X : Type u_1} {Y : Type u_2} {f : XY} [] [] (hf : ) {s : Set X} :
∀ (x : X), f x closure (f '' s)
theorem Inducing.of_subsingleton {X : Type u_1} {Y : Type u_2} [] [] [] (f : XY) :
theorem Function.Injective.embedding_induced {X : Type u_1} {Y : Type u_2} {f : XY} [t : ] (hf : ) :
theorem Embedding.mk' {X : Type u_1} {Y : Type u_2} [] [] (f : XY) (inj : ) (induced : ∀ (x : X), Filter.comap f (nhds (f x)) = nhds x) :
theorem embedding_id {X : Type u_1} [] :
theorem Embedding.comp {X : Type u_1} {Y : Type u_2} {Z : Type u_3} {f : XY} {g : YZ} [] [] [] (hg : ) (hf : ) :
theorem embedding_of_embedding_compose {X : Type u_1} {Y : Type u_2} {Z : Type u_3} {f : XY} {g : YZ} [] [] [] (hf : ) (hg : ) (hgf : Embedding (g f)) :
theorem Function.LeftInverse.embedding {X : Type u_1} {Y : Type u_2} [] [] {f : XY} {g : YX} (h : ) (hf : ) (hg : ) :
theorem Embedding.map_nhds_eq {X : Type u_1} {Y : Type u_2} {f : XY} [] [] (hf : ) (x : X) :
Filter.map f (nhds x) = nhdsWithin (f x) ()
theorem Embedding.map_nhds_of_mem {X : Type u_1} {Y : Type u_2} {f : XY} [] [] (hf : ) (x : X) (h : nhds (f x)) :
Filter.map f (nhds x) = nhds (f x)
theorem Embedding.tendsto_nhds_iff {Y : Type u_2} {Z : Type u_3} {ι : Type u_4} {g : YZ} [] [] {f : ιY} {l : } {y : Y} (hg : ) :
Filter.Tendsto f l (nhds y) Filter.Tendsto (g f) l (nhds (g y))
theorem Embedding.continuous_iff {X : Type u_1} {Y : Type u_2} {Z : Type u_3} {f : XY} {g : YZ} [] [] [] (hg : ) :
theorem Embedding.continuous {X : Type u_1} {Y : Type u_2} {f : XY} [] [] (hf : ) :
theorem Embedding.closure_eq_preimage_closure_image {X : Type u_1} {Y : Type u_2} {f : XY} [] [] (hf : ) (s : Set X) :
= f ⁻¹' closure (f '' s)
theorem Embedding.discreteTopology {X : Type u_1} {Y : Type u_2} {f : XY} [] [] [] (hf : ) :

The topology induced under an inclusion f : X → Y from a discrete topological space Y is the discrete topology on X.

See also DiscreteTopology.of_continuous_injective.

theorem Embedding.of_subsingleton {X : Type u_1} {Y : Type u_2} [] [] [] (f : XY) :
theorem quotientMap_iff {X : Type u_1} {Y : Type u_2} {f : XY} [] [] :
∀ (s : Set Y), IsOpen (f ⁻¹' s)
theorem quotientMap_iff_closed {X : Type u_1} {Y : Type u_2} {f : XY} [] [] :
∀ (s : Set Y), IsClosed (f ⁻¹' s)
theorem QuotientMap.id {X : Type u_1} [] :
theorem QuotientMap.comp {X : Type u_1} {Y : Type u_2} {Z : Type u_3} {f : XY} {g : YZ} [] [] [] (hg : ) (hf : ) :
theorem QuotientMap.of_quotientMap_compose {X : Type u_1} {Y : Type u_2} {Z : Type u_3} {f : XY} {g : YZ} [] [] [] (hf : ) (hg : ) (hgf : QuotientMap (g f)) :
theorem QuotientMap.of_inverse {X : Type u_1} {Y : Type u_2} {f : XY} [] [] {g : YX} (hf : ) (hg : ) (h : ) :
theorem QuotientMap.continuous_iff {X : Type u_1} {Y : Type u_2} {Z : Type u_3} {f : XY} {g : YZ} [] [] [] (hf : ) :
theorem QuotientMap.continuous {X : Type u_1} {Y : Type u_2} {f : XY} [] [] (hf : ) :
theorem QuotientMap.surjective {X : Type u_1} {Y : Type u_2} {f : XY} [] [] (hf : ) :
theorem QuotientMap.isOpen_preimage {X : Type u_1} {Y : Type u_2} {f : XY} [] [] (hf : ) {s : Set Y} :
theorem QuotientMap.isClosed_preimage {X : Type u_1} {Y : Type u_2} {f : XY} [] [] (hf : ) {s : Set Y} :
theorem IsOpenMap.id {X : Type u_1} [] :
theorem IsOpenMap.comp {X : Type u_1} {Y : Type u_2} {Z : Type u_3} {f : XY} {g : YZ} [] [] [] (hg : ) (hf : ) :
theorem IsOpenMap.isOpen_range {X : Type u_1} {Y : Type u_2} {f : XY} [] [] (hf : ) :
theorem IsOpenMap.image_mem_nhds {X : Type u_1} {Y : Type u_2} {f : XY} [] [] (hf : ) {x : X} {s : Set X} (hx : s nhds x) :
f '' s nhds (f x)
theorem IsOpenMap.range_mem_nhds {X : Type u_1} {Y : Type u_2} {f : XY} [] [] (hf : ) (x : X) :
nhds (f x)
theorem IsOpenMap.mapsTo_interior {X : Type u_1} {Y : Type u_2} {f : XY} [] [] (hf : ) {s : Set X} {t : Set Y} (h : Set.MapsTo f s t) :
Set.MapsTo f () ()
theorem IsOpenMap.image_interior_subset {X : Type u_1} {Y : Type u_2} {f : XY} [] [] (hf : ) (s : Set X) :
f '' interior (f '' s)
theorem IsOpenMap.nhds_le {X : Type u_1} {Y : Type u_2} {f : XY} [] [] (hf : ) (x : X) :
nhds (f x) Filter.map f (nhds x)
theorem IsOpenMap.of_nhds_le {X : Type u_1} {Y : Type u_2} {f : XY} [] [] (hf : ∀ (x : X), nhds (f x) Filter.map f (nhds x)) :
theorem IsOpenMap.of_sections {X : Type u_1} {Y : Type u_2} {f : XY} [] [] (h : ∀ (x : X), ∃ (g : YX), ContinuousAt g (f x) g (f x) = x ) :
theorem IsOpenMap.of_inverse {X : Type u_1} {Y : Type u_2} {f : XY} [] [] {f' : YX} (h : ) (l_inv : ) (r_inv : ) :
theorem IsOpenMap.to_quotientMap {X : Type u_1} {Y : Type u_2} {f : XY} [] [] (open_map : ) (cont : ) (surj : ) :

A continuous surjective open map is a quotient map.

theorem IsOpenMap.interior_preimage_subset_preimage_interior {X : Type u_1} {Y : Type u_2} {f : XY} [] [] (hf : ) {s : Set Y} :
theorem IsOpenMap.preimage_interior_eq_interior_preimage {X : Type u_1} {Y : Type u_2} {f : XY} [] [] (hf₁ : ) (hf₂ : ) (s : Set Y) :
theorem IsOpenMap.preimage_closure_subset_closure_preimage {X : Type u_1} {Y : Type u_2} {f : XY} [] [] (hf : ) {s : Set Y} :
theorem IsOpenMap.preimage_closure_eq_closure_preimage {X : Type u_1} {Y : Type u_2} {f : XY} [] [] (hf : ) (hfc : ) (s : Set Y) :
theorem IsOpenMap.preimage_frontier_subset_frontier_preimage {X : Type u_1} {Y : Type u_2} {f : XY} [] [] (hf : ) {s : Set Y} :
theorem IsOpenMap.preimage_frontier_eq_frontier_preimage {X : Type u_1} {Y : Type u_2} {f : XY} [] [] (hf : ) (hfc : ) (s : Set Y) :
theorem IsOpenMap.of_isEmpty {X : Type u_1} {Y : Type u_2} [] [] [h : ] (f : XY) :
theorem isOpenMap_iff_nhds_le {X : Type u_1} {Y : Type u_2} {f : XY} [] [] :
∀ (x : X), nhds (f x) Filter.map f (nhds x)
theorem isOpenMap_iff_interior {X : Type u_1} {Y : Type u_2} {f : XY} [] [] :
∀ (s : Set X), f '' interior (f '' s)
theorem Inducing.isOpenMap {X : Type u_1} {Y : Type u_2} {f : XY} [] [] (hi : ) (ho : IsOpen ()) :

An inducing map with an open range is an open map.

theorem IsClosedMap.id {X : Type u_1} [] :
theorem IsClosedMap.comp {X : Type u_1} {Y : Type u_2} {Z : Type u_3} {f : XY} {g : YZ} [] [] [] (hg : ) (hf : ) :
theorem IsClosedMap.closure_image_subset {X : Type u_1} {Y : Type u_2} {f : XY} [] [] (hf : ) (s : Set X) :
closure (f '' s) f ''
theorem IsClosedMap.of_inverse {X : Type u_1} {Y : Type u_2} {f : XY} [] [] {f' : YX} (h : ) (l_inv : ) (r_inv : ) :
theorem IsClosedMap.of_nonempty {X : Type u_1} {Y : Type u_2} {f : XY} [] [] (h : ∀ (s : Set X), IsClosed (f '' s)) :
theorem IsClosedMap.isClosed_range {X : Type u_1} {Y : Type u_2} {f : XY} [] [] (hf : ) :
@[deprecated IsClosedMap.isClosed_range]
theorem IsClosedMap.closed_range {X : Type u_1} {Y : Type u_2} {f : XY} [] [] (hf : ) :

Alias of IsClosedMap.isClosed_range.

theorem IsClosedMap.to_quotientMap {X : Type u_1} {Y : Type u_2} {f : XY} [] [] (hcl : ) (hcont : ) (hsurj : ) :
theorem Inducing.isClosedMap {X : Type u_1} {Y : Type u_2} {f : XY} [] [] (hf : ) (h : ) :
theorem isClosedMap_iff_closure_image {X : Type u_1} {Y : Type u_2} {f : XY} [] [] :
∀ (s : Set X), closure (f '' s) f ''
theorem isClosedMap_iff_clusterPt {X : Type u_1} {Y : Type u_2} {f : XY} [] [] :
∀ (s : Set X) (y : Y), ∃ (x : X), f x = y

A map f : X → Y is closed if and only if for all sets s, any cluster point of f '' s is the image by f of some cluster point of s. If you require this for all filters instead of just principal filters, and also that f is continuous, you get the notion of proper map. See isProperMap_iff_clusterPt.

theorem IsClosedMap.closure_image_eq_of_continuous {X : Type u_1} {Y : Type u_2} {f : XY} [] [] (f_closed : ) (f_cont : ) (s : Set X) :
closure (f '' s) = f ''
theorem IsClosedMap.lift'_closure_map_eq {X : Type u_1} {Y : Type u_2} {f : XY} [] [] (f_closed : ) (f_cont : ) (F : ) :
Filter.lift' () closure = Filter.map f (Filter.lift' F closure)
theorem IsClosedMap.mapClusterPt_iff_lift'_closure {X : Type u_1} {Y : Type u_2} {f : XY} [] [] {F : } (f_closed : ) (f_cont : ) {y : Y} :
theorem OpenEmbedding.isOpenMap {X : Type u_1} {Y : Type u_2} {f : XY} [] [] (hf : ) :
theorem OpenEmbedding.map_nhds_eq {X : Type u_1} {Y : Type u_2} {f : XY} [] [] (hf : ) (x : X) :
Filter.map f (nhds x) = nhds (f x)
theorem OpenEmbedding.open_iff_image_open {X : Type u_1} {Y : Type u_2} {f : XY} [] [] (hf : ) {s : Set X} :
IsOpen (f '' s)
theorem OpenEmbedding.tendsto_nhds_iff {Y : Type u_2} {Z : Type u_3} {ι : Type u_4} {g : YZ} [] [] {f : ιY} {l : } {y : Y} (hg : ) :
Filter.Tendsto f l (nhds y) Filter.Tendsto (g f) l (nhds (g y))
theorem OpenEmbedding.tendsto_nhds_iff' {X : Type u_1} {Y : Type u_2} {Z : Type u_3} {f : XY} {g : YZ} [] [] (hf : ) {l : } {x : X} :
Filter.Tendsto (g f) (nhds x) l Filter.Tendsto g (nhds (f x)) l
theorem OpenEmbedding.continuousAt_iff {X : Type u_1} {Y : Type u_2} {Z : Type u_3} {f : XY} {g : YZ} [] [] [] (hf : ) {x : X} :
theorem OpenEmbedding.continuous {X : Type u_1} {Y : Type u_2} {f : XY} [] [] (hf : ) :
theorem OpenEmbedding.open_iff_preimage_open {X : Type u_1} {Y : Type u_2} {f : XY} [] [] (hf : ) {s : Set Y} (hs : s ) :
theorem openEmbedding_of_embedding_open {X : Type u_1} {Y : Type u_2} {f : XY} [] [] (h₁ : ) (h₂ : ) :
theorem Embedding.toOpenEmbedding_of_surjective {X : Type u_1} {Y : Type u_2} {f : XY} [] [] (hf : ) (hsurj : ) :

A surjective embedding is an OpenEmbedding.

theorem openEmbedding_iff_embedding_open {X : Type u_1} {Y : Type u_2} {f : XY} [] [] :
theorem openEmbedding_of_continuous_injective_open {X : Type u_1} {Y : Type u_2} {f : XY} [] [] (h₁ : ) (h₂ : ) (h₃ : ) :
theorem openEmbedding_iff_continuous_injective_open {X : Type u_1} {Y : Type u_2} {f : XY} [] [] :
theorem openEmbedding_id {X : Type u_1} [] :
theorem OpenEmbedding.comp {X : Type u_1} {Y : Type u_2} {Z : Type u_3} {f : XY} {g : YZ} [] [] [] (hg : ) (hf : ) :
theorem OpenEmbedding.isOpenMap_iff {X : Type u_1} {Y : Type u_2} {Z : Type u_3} {f : XY} {g : YZ} [] [] [] (hg : ) :
theorem OpenEmbedding.of_comp_iff {X : Type u_1} {Y : Type u_2} {Z : Type u_3} {g : YZ} [] [] [] (f : XY) (hg : ) :
theorem OpenEmbedding.of_comp {X : Type u_1} {Y : Type u_2} {Z : Type u_3} {g : YZ} [] [] [] (f : XY) (hg : ) (h : OpenEmbedding (g f)) :
theorem OpenEmbedding.of_isEmpty {X : Type u_1} {Y : Type u_2} [] [] [] (f : XY) :
theorem ClosedEmbedding.tendsto_nhds_iff {X : Type u_1} {Y : Type u_2} {ι : Type u_4} {f : XY} [] [] {g : ιX} {l : } {x : X} (hf : ) :
Filter.Tendsto g l (nhds x) Filter.Tendsto (f g) l (nhds (f x))
theorem ClosedEmbedding.continuous {X : Type u_1} {Y : Type u_2} {f : XY} [] [] (hf : ) :
theorem ClosedEmbedding.isClosedMap {X : Type u_1} {Y : Type u_2} {f : XY} [] [] (hf : ) :
theorem ClosedEmbedding.closed_iff_image_closed {X : Type u_1} {Y : Type u_2} {f : XY} [] [] (hf : ) {s : Set X} :
IsClosed (f '' s)
theorem ClosedEmbedding.closed_iff_preimage_closed {X : Type u_1} {Y : Type u_2} {f : XY} [] [] (hf : ) {s : Set Y} (hs : s ) :
theorem closedEmbedding_of_embedding_closed {X : Type u_1} {Y : Type u_2} {f : XY} [] [] (h₁ : ) (h₂ : ) :
theorem closedEmbedding_of_continuous_injective_closed {X : Type u_1} {Y : Type u_2} {f : XY} [] [] (h₁ : ) (h₂ : ) (h₃ : ) :
theorem closedEmbedding_id {X : Type u_1} [] :
theorem ClosedEmbedding.comp {X : Type u_1} {Y : Type u_2} {Z : Type u_3} {f : XY} {g : YZ} [] [] [] (hg : ) (hf : ) :
theorem ClosedEmbedding.closure_image_eq {X : Type u_1} {Y : Type u_2} {f : XY} [] [] (hf : ) (s : Set X) :
closure (f '' s) = f ''