Documentation

Mathlib.Topology.Maps.Basic

Specific classes of maps between topological spaces #

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

(Open and closed maps need not be continuous.)

References #

Tags #

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

theorem Topology.IsInducing.induced {X : Type u_1} {Y : Type u_2} [TopologicalSpace Y] (f : XY) :
theorem Topology.IsInducing.comp {X : Type u_1} {Y : Type u_2} {Z : Type u_3} {f : XY} {g : YZ} [TopologicalSpace Y] [TopologicalSpace X] [TopologicalSpace Z] (hg : IsInducing g) (hf : IsInducing f) :
theorem Topology.IsInducing.of_comp_iff {X : Type u_1} {Y : Type u_2} {Z : Type u_3} {f : XY} {g : YZ} [TopologicalSpace Y] [TopologicalSpace X] [TopologicalSpace Z] (hg : IsInducing g) :
theorem Topology.IsInducing.of_comp {X : Type u_1} {Y : Type u_2} {Z : Type u_3} {f : XY} {g : YZ} [TopologicalSpace Y] [TopologicalSpace X] [TopologicalSpace Z] (hf : Continuous f) (hg : Continuous g) (hgf : IsInducing (g f)) :
theorem Topology.isInducing_iff_nhds {X : Type u_1} {Y : Type u_2} {f : XY} [TopologicalSpace Y] [TopologicalSpace X] :
IsInducing f ∀ (x : X), nhds x = Filter.comap f (nhds (f x))
theorem Topology.IsInducing.nhds_eq_comap {X : Type u_1} {Y : Type u_2} {f : XY} [TopologicalSpace Y] [TopologicalSpace X] (hf : IsInducing f) (x : X) :
nhds x = Filter.comap f (nhds (f x))
theorem Topology.IsInducing.basis_nhds {X : Type u_1} {Y : Type u_2} {ι : Type u_4} {f : XY} [TopologicalSpace Y] [TopologicalSpace X] {p : ιProp} {s : ιSet Y} (hf : IsInducing f) {x : X} (h_basis : (nhds (f x)).HasBasis p s) :
theorem Topology.IsInducing.nhdsSet_eq_comap {X : Type u_1} {Y : Type u_2} {f : XY} [TopologicalSpace Y] [TopologicalSpace X] (hf : IsInducing f) (s : Set X) :
theorem Topology.IsInducing.map_nhds_eq {X : Type u_1} {Y : Type u_2} {f : XY} [TopologicalSpace Y] [TopologicalSpace X] (hf : IsInducing f) (x : X) :
theorem Topology.IsInducing.map_nhds_of_mem {X : Type u_1} {Y : Type u_2} {f : XY} [TopologicalSpace Y] [TopologicalSpace X] (hf : IsInducing f) (x : X) (h : Set.range f nhds (f x)) :
Filter.map f (nhds x) = nhds (f x)
theorem Topology.IsInducing.mapClusterPt_iff {X : Type u_1} {Y : Type u_2} {f : XY} [TopologicalSpace Y] [TopologicalSpace X] (hf : IsInducing f) {x : X} {l : Filter X} :
MapClusterPt (f x) l f ClusterPt x l
theorem Topology.IsInducing.image_mem_nhdsWithin {X : Type u_1} {Y : Type u_2} {f : XY} [TopologicalSpace Y] [TopologicalSpace X] (hf : IsInducing f) {x : X} {s : Set X} (hs : s nhds x) :
f '' s nhdsWithin (f x) (Set.range f)
theorem Topology.IsInducing.tendsto_nhds_iff {Y : Type u_2} {Z : Type u_3} {ι : Type u_4} {g : YZ} [TopologicalSpace Y] [TopologicalSpace Z] {f : ιY} {l : Filter ι} {y : Y} (hg : IsInducing g) :
Filter.Tendsto f l (nhds y) Filter.Tendsto (g f) l (nhds (g y))
theorem Topology.IsInducing.continuousAt_iff {X : Type u_1} {Y : Type u_2} {Z : Type u_3} {f : XY} {g : YZ} [TopologicalSpace Y] [TopologicalSpace X] [TopologicalSpace Z] (hg : IsInducing g) {x : X} :
theorem Topology.IsInducing.continuous_iff {X : Type u_1} {Y : Type u_2} {Z : Type u_3} {f : XY} {g : YZ} [TopologicalSpace Y] [TopologicalSpace X] [TopologicalSpace Z] (hg : IsInducing g) :
theorem Topology.IsInducing.continuousAt_iff' {X : Type u_1} {Y : Type u_2} {Z : Type u_3} {f : XY} {g : YZ} [TopologicalSpace Y] [TopologicalSpace X] [TopologicalSpace Z] (hf : IsInducing f) {x : X} (h : Set.range f nhds (f x)) :
theorem Topology.IsInducing.continuous {X : Type u_1} {Y : Type u_2} {f : XY} [TopologicalSpace Y] [TopologicalSpace X] (hf : IsInducing f) :
theorem Topology.IsInducing.isClosed_iff {X : Type u_1} {Y : Type u_2} {f : XY} [TopologicalSpace Y] [TopologicalSpace X] (hf : IsInducing f) {s : Set X} :
IsClosed s ∃ (t : Set Y), IsClosed t f ⁻¹' t = s
theorem Topology.IsInducing.isClosed_iff' {X : Type u_1} {Y : Type u_2} {f : XY} [TopologicalSpace Y] [TopologicalSpace X] (hf : IsInducing f) {s : Set X} :
IsClosed s ∀ (x : X), f x closure (f '' s)x s
theorem Topology.IsInducing.isClosed_preimage {X : Type u_1} {Y : Type u_2} {f : XY} [TopologicalSpace Y] [TopologicalSpace X] (h : IsInducing f) (s : Set Y) (hs : IsClosed s) :
theorem Topology.IsInducing.isOpen_iff {X : Type u_1} {Y : Type u_2} {f : XY} [TopologicalSpace Y] [TopologicalSpace X] (hf : IsInducing f) {s : Set X} :
IsOpen s ∃ (t : Set Y), IsOpen t f ⁻¹' t = s
theorem Topology.IsInducing.setOf_isOpen {X : Type u_1} {Y : Type u_2} {f : XY} [TopologicalSpace Y] [TopologicalSpace X] (hf : IsInducing f) :
theorem Topology.IsInducing.dense_iff {X : Type u_1} {Y : Type u_2} {f : XY} [TopologicalSpace Y] [TopologicalSpace X] (hf : IsInducing f) {s : Set X} :
Dense s ∀ (x : X), f x closure (f '' s)
theorem Topology.IsEmbedding.induced {X : Type u_1} {Y : Type u_2} {f : XY} [t : TopologicalSpace Y] (hf : Function.Injective f) :
theorem Topology.IsEmbedding.isInducing {X : Type u_1} {Y : Type u_2} {f : XY} [TopologicalSpace X] [TopologicalSpace Y] (hf : IsEmbedding f) :
theorem Topology.IsEmbedding.mk' {X : Type u_1} {Y : Type u_2} [TopologicalSpace X] [TopologicalSpace Y] (f : XY) (inj : Function.Injective f) (induced : ∀ (x : X), Filter.comap f (nhds (f x)) = nhds x) :
theorem Topology.IsEmbedding.comp {X : Type u_1} {Y : Type u_2} {Z : Type u_3} {f : XY} {g : YZ} [TopologicalSpace X] [TopologicalSpace Y] [TopologicalSpace Z] (hg : IsEmbedding g) (hf : IsEmbedding f) :
theorem Topology.IsEmbedding.of_comp_iff {X : Type u_1} {Y : Type u_2} {Z : Type u_3} {f : XY} {g : YZ} [TopologicalSpace X] [TopologicalSpace Y] [TopologicalSpace Z] (hg : IsEmbedding g) :
theorem Topology.IsEmbedding.of_comp {X : Type u_1} {Y : Type u_2} {Z : Type u_3} {f : XY} {g : YZ} [TopologicalSpace X] [TopologicalSpace Y] [TopologicalSpace Z] (hf : Continuous f) (hg : Continuous g) (hgf : IsEmbedding (g f)) :
theorem Topology.IsEmbedding.of_leftInverse {X : Type u_1} {Y : Type u_2} [TopologicalSpace X] [TopologicalSpace Y] {f : XY} {g : YX} (h : Function.LeftInverse f g) (hf : Continuous f) (hg : Continuous g) :
theorem Function.LeftInverse.isEmbedding {X : Type u_1} {Y : Type u_2} [TopologicalSpace X] [TopologicalSpace Y] {f : XY} {g : YX} (h : LeftInverse f g) (hf : Continuous f) (hg : Continuous g) :

Alias of Topology.IsEmbedding.of_leftInverse.

theorem Topology.IsEmbedding.map_nhds_eq {X : Type u_1} {Y : Type u_2} {f : XY} [TopologicalSpace X] [TopologicalSpace Y] (hf : IsEmbedding f) (x : X) :
theorem Topology.IsEmbedding.map_nhds_of_mem {X : Type u_1} {Y : Type u_2} {f : XY} [TopologicalSpace X] [TopologicalSpace Y] (hf : IsEmbedding f) (x : X) (h : Set.range f nhds (f x)) :
Filter.map f (nhds x) = nhds (f x)
theorem Topology.IsEmbedding.tendsto_nhds_iff {Y : Type u_2} {Z : Type u_3} {ι : Type u_4} {g : YZ} [TopologicalSpace Y] [TopologicalSpace Z] {f : ιY} {l : Filter ι} {y : Y} (hg : IsEmbedding g) :
Filter.Tendsto f l (nhds y) Filter.Tendsto (g f) l (nhds (g y))
theorem Topology.IsEmbedding.continuous_iff {X : Type u_1} {Y : Type u_2} {Z : Type u_3} {f : XY} {g : YZ} [TopologicalSpace X] [TopologicalSpace Y] [TopologicalSpace Z] (hg : IsEmbedding g) :
theorem Topology.IsEmbedding.continuous {X : Type u_1} {Y : Type u_2} {f : XY} [TopologicalSpace X] [TopologicalSpace Y] (hf : IsEmbedding f) :

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 Topology.IsQuotientMap.comp {X : Type u_1} {Y : Type u_2} {Z : Type u_3} {f : XY} {g : YZ} [TopologicalSpace X] [TopologicalSpace Y] [TopologicalSpace Z] (hg : IsQuotientMap g) (hf : IsQuotientMap f) :
theorem Topology.IsQuotientMap.of_comp {X : Type u_1} {Y : Type u_2} {Z : Type u_3} {f : XY} {g : YZ} [TopologicalSpace X] [TopologicalSpace Y] [TopologicalSpace Z] (hf : Continuous f) (hg : Continuous g) (hgf : IsQuotientMap (g f)) :
theorem Topology.IsQuotientMap.of_inverse {X : Type u_1} {Y : Type u_2} {f : XY} [TopologicalSpace X] [TopologicalSpace Y] {g : YX} (hf : Continuous f) (hg : Continuous g) (h : Function.LeftInverse g f) :
theorem Topology.IsQuotientMap.continuous_iff {X : Type u_1} {Y : Type u_2} {Z : Type u_3} {f : XY} {g : YZ} [TopologicalSpace X] [TopologicalSpace Y] [TopologicalSpace Z] (hf : IsQuotientMap f) :
theorem Topology.IsQuotientMap.continuous {X : Type u_1} {Y : Type u_2} {f : XY} [TopologicalSpace X] [TopologicalSpace Y] (hf : IsQuotientMap f) :
theorem Topology.IsQuotientMap.isOpen_preimage {X : Type u_1} {Y : Type u_2} {f : XY} [TopologicalSpace X] [TopologicalSpace Y] (hf : IsQuotientMap f) {s : Set Y} :
theorem Topology.IsQuotientMap.isClosed_preimage {X : Type u_1} {Y : Type u_2} {f : XY} [TopologicalSpace X] [TopologicalSpace Y] (hf : IsQuotientMap f) {s : Set Y} :
theorem IsOpenMap.comp {X : Type u_1} {Y : Type u_2} {Z : Type u_3} {f : XY} {g : YZ} [TopologicalSpace X] [TopologicalSpace Y] [TopologicalSpace Z] (hg : IsOpenMap g) (hf : IsOpenMap f) :
theorem IsOpenMap.isOpen_range {X : Type u_1} {Y : Type u_2} {f : XY} [TopologicalSpace X] [TopologicalSpace Y] (hf : IsOpenMap f) :
theorem IsOpenMap.image_mem_nhds {X : Type u_1} {Y : Type u_2} {f : XY} [TopologicalSpace X] [TopologicalSpace Y] (hf : IsOpenMap f) {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} [TopologicalSpace X] [TopologicalSpace Y] (hf : IsOpenMap f) (x : X) :
theorem IsOpenMap.mapsTo_interior {X : Type u_1} {Y : Type u_2} {f : XY} [TopologicalSpace X] [TopologicalSpace Y] (hf : IsOpenMap f) {s : Set X} {t : Set Y} (h : Set.MapsTo f s t) :
theorem IsOpenMap.image_interior_subset {X : Type u_1} {Y : Type u_2} {f : XY} [TopologicalSpace X] [TopologicalSpace Y] (hf : IsOpenMap f) (s : Set X) :
theorem IsOpenMap.nhds_le {X : Type u_1} {Y : Type u_2} {f : XY} [TopologicalSpace X] [TopologicalSpace Y] (hf : IsOpenMap f) (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} [TopologicalSpace X] [TopologicalSpace Y] (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} [TopologicalSpace X] [TopologicalSpace Y] (h : ∀ (x : X), ∃ (g : YX), ContinuousAt g (f x) g (f x) = x Function.RightInverse g f) :
theorem IsOpenMap.of_inverse {X : Type u_1} {Y : Type u_2} {f : XY} [TopologicalSpace X] [TopologicalSpace Y] {f' : YX} (h : Continuous f') (l_inv : Function.LeftInverse f f') (r_inv : Function.RightInverse f f') :
theorem IsOpenMap.isQuotientMap {X : Type u_1} {Y : Type u_2} {f : XY} [TopologicalSpace X] [TopologicalSpace Y] (open_map : IsOpenMap f) (cont : Continuous f) (surj : Function.Surjective f) :

A continuous surjective open map is a quotient map.

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

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

theorem Dense.preimage {X : Type u_1} {Y : Type u_2} {f : XY} [TopologicalSpace X] [TopologicalSpace Y] {s : Set Y} (hs : Dense s) (hf : IsOpenMap f) :

Preimage of a dense set under an open map is dense.

theorem IsClosedMap.comp {X : Type u_1} {Y : Type u_2} {Z : Type u_3} {f : XY} {g : YZ} [TopologicalSpace X] [TopologicalSpace Y] [TopologicalSpace Z] (hg : IsClosedMap g) (hf : IsClosedMap f) :
theorem IsClosedMap.of_comp_surjective {X : Type u_1} {Y : Type u_2} {Z : Type u_3} {f : XY} {g : YZ} [TopologicalSpace X] [TopologicalSpace Y] [TopologicalSpace Z] (hf : Function.Surjective f) (hf' : Continuous f) (hfg : IsClosedMap (g f)) :
theorem IsClosedMap.closure_image_subset {X : Type u_1} {Y : Type u_2} {f : XY} [TopologicalSpace X] [TopologicalSpace Y] (hf : IsClosedMap f) (s : Set X) :
closure (f '' s) f '' closure s
theorem IsClosedMap.of_inverse {X : Type u_1} {Y : Type u_2} {f : XY} [TopologicalSpace X] [TopologicalSpace Y] {f' : YX} (h : Continuous f') (l_inv : Function.LeftInverse f f') (r_inv : Function.RightInverse f f') :
theorem IsClosedMap.of_nonempty {X : Type u_1} {Y : Type u_2} {f : XY} [TopologicalSpace X] [TopologicalSpace Y] (h : ∀ (s : Set X), IsClosed ss.NonemptyIsClosed (f '' s)) :
theorem IsClosedMap.isClosed_range {X : Type u_1} {Y : Type u_2} {f : XY} [TopologicalSpace X] [TopologicalSpace Y] (hf : IsClosedMap f) :
theorem IsClosedMap.isQuotientMap {X : Type u_1} {Y : Type u_2} {f : XY} [TopologicalSpace X] [TopologicalSpace Y] (hcl : IsClosedMap f) (hcont : Continuous f) (hsurj : Function.Surjective f) :
theorem Topology.IsInducing.isClosedMap {X : Type u_1} {Y : Type u_2} {f : XY} [TopologicalSpace X] [TopologicalSpace Y] (hf : IsInducing f) (h : IsClosed (Set.range f)) :
theorem isClosedMap_iff_closure_image {X : Type u_1} {Y : Type u_2} {f : XY} [TopologicalSpace X] [TopologicalSpace Y] :
IsClosedMap f ∀ (s : Set X), closure (f '' s) f '' closure s
theorem isClosedMap_iff_clusterPt {X : Type u_1} {Y : Type u_2} {f : XY} [TopologicalSpace X] [TopologicalSpace Y] :
IsClosedMap f ∀ (s : Set X) (y : Y), MapClusterPt y (Filter.principal s) f∃ (x : X), f x = y ClusterPt x (Filter.principal s)

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} [TopologicalSpace X] [TopologicalSpace Y] (f_closed : IsClosedMap f) (f_cont : Continuous f) (s : Set X) :
closure (f '' s) = f '' closure s
theorem IsClosedMap.lift'_closure_map_eq {X : Type u_1} {Y : Type u_2} {f : XY} [TopologicalSpace X] [TopologicalSpace Y] (f_closed : IsClosedMap f) (f_cont : Continuous f) (F : Filter X) :
theorem IsClosedMap.mapClusterPt_iff_lift'_closure {X : Type u_1} {Y : Type u_2} {f : XY} [TopologicalSpace X] [TopologicalSpace Y] {F : Filter X} (f_closed : IsClosedMap f) (f_cont : Continuous f) {y : Y} :
theorem Topology.IsOpenEmbedding.map_nhds_eq {X : Type u_1} {Y : Type u_2} {f : XY} [TopologicalSpace X] [TopologicalSpace Y] (hf : IsOpenEmbedding f) (x : X) :
Filter.map f (nhds x) = nhds (f x)
theorem Topology.IsOpenEmbedding.isOpen_iff_image_isOpen {X : Type u_1} {Y : Type u_2} {f : XY} [TopologicalSpace X] [TopologicalSpace Y] (hf : IsOpenEmbedding f) {s : Set X} :
theorem Topology.IsOpenEmbedding.tendsto_nhds_iff {Y : Type u_2} {Z : Type u_3} {ι : Type u_4} {g : YZ} [TopologicalSpace Y] [TopologicalSpace Z] {f : ιY} {l : Filter ι} {y : Y} (hg : IsOpenEmbedding g) :
Filter.Tendsto f l (nhds y) Filter.Tendsto (g f) l (nhds (g y))
theorem Topology.IsOpenEmbedding.tendsto_nhds_iff' {X : Type u_1} {Y : Type u_2} {Z : Type u_3} {f : XY} {g : YZ} [TopologicalSpace X] [TopologicalSpace Y] (hf : IsOpenEmbedding f) {l : Filter Z} {x : X} :
Filter.Tendsto (g f) (nhds x) l Filter.Tendsto g (nhds (f x)) l
theorem Topology.IsOpenEmbedding.continuousAt_iff {X : Type u_1} {Y : Type u_2} {Z : Type u_3} {f : XY} {g : YZ} [TopologicalSpace X] [TopologicalSpace Y] [TopologicalSpace Z] (hf : IsOpenEmbedding f) {x : X} :
theorem Topology.IsOpenEmbedding.isOpen_iff_preimage_isOpen {X : Type u_1} {Y : Type u_2} {f : XY} [TopologicalSpace X] [TopologicalSpace Y] (hf : IsOpenEmbedding f) {s : Set Y} (hs : s Set.range f) :

A surjective embedding is an IsOpenEmbedding.

Alias of Topology.IsEmbedding.isOpenEmbedding_of_surjective.


A surjective embedding is an IsOpenEmbedding.

theorem Topology.IsOpenEmbedding.comp {X : Type u_1} {Y : Type u_2} {Z : Type u_3} {f : XY} {g : YZ} [TopologicalSpace X] [TopologicalSpace Y] [TopologicalSpace Z] (hg : IsOpenEmbedding g) (hf : IsOpenEmbedding f) :
theorem Topology.IsOpenEmbedding.isOpenMap_iff {X : Type u_1} {Y : Type u_2} {Z : Type u_3} {f : XY} {g : YZ} [TopologicalSpace X] [TopologicalSpace Y] [TopologicalSpace Z] (hg : IsOpenEmbedding g) :
theorem Topology.IsOpenEmbedding.of_comp_iff {X : Type u_1} {Y : Type u_2} {Z : Type u_3} {g : YZ} [TopologicalSpace X] [TopologicalSpace Y] [TopologicalSpace Z] (f : XY) (hg : IsOpenEmbedding g) :
theorem Topology.IsOpenEmbedding.of_comp {X : Type u_1} {Y : Type u_2} {Z : Type u_3} {g : YZ} [TopologicalSpace X] [TopologicalSpace Y] [TopologicalSpace Z] (f : XY) (hg : IsOpenEmbedding g) (h : IsOpenEmbedding (g f)) :
theorem Topology.IsOpenEmbedding.image_mem_nhds {X : Type u_1} {Y : Type u_2} [TopologicalSpace X] [TopologicalSpace Y] {f : XY} (hf : IsOpenEmbedding f) {s : Set X} {x : X} :
f '' s nhds (f x) s nhds x
theorem Topology.IsClosedEmbedding.tendsto_nhds_iff {X : Type u_1} {Y : Type u_2} {ι : Type u_4} {f : XY} [TopologicalSpace X] [TopologicalSpace Y] {g : ιX} {l : Filter ι} {x : X} (hf : IsClosedEmbedding f) :
Filter.Tendsto g l (nhds x) Filter.Tendsto (f g) l (nhds (f x))
theorem Topology.IsClosedEmbedding.comp {X : Type u_1} {Y : Type u_2} {Z : Type u_3} {f : XY} {g : YZ} [TopologicalSpace X] [TopologicalSpace Y] [TopologicalSpace Z] (hg : IsClosedEmbedding g) (hf : IsClosedEmbedding f) :
theorem Topology.IsClosedEmbedding.closure_image_eq {X : Type u_1} {Y : Type u_2} {f : XY} [TopologicalSpace X] [TopologicalSpace Y] (hf : IsClosedEmbedding f) (s : Set X) :
closure (f '' s) = f '' closure s