Disjoint unions and products of topological spaces #
This file constructs sums (disjoint unions) and products of topological spaces and sets up their basic theory, such as criteria for maps into or out of these constructions to be continuous; descriptions of the open sets, neighborhood filters, and generators of these constructions; and their behavior with respect to embeddings and other specific classes of maps.
We also provide basic homeomorphisms, to show that sums and products are commutative, associative and distributive (up to homeomorphism).
Implementation note #
The constructed topologies are defined using induced and coinduced topologies
along with the complete lattice structure on topologies. Their universal properties
(for example, a map X → Y × Z
is continuous if and only if both projections
X → Y
, X → Z
are) follow easily using order-theoretic descriptions of
continuity. With more work we can also extract descriptions of the open sets,
neighborhood filters and so on.
Tags #
product, sum, disjoint union
Postcomposing f
with Prod.fst
is continuous
Precomposing f
with Prod.fst
is continuous
Postcomposing f
with Prod.fst
is continuous at x
Precomposing f
with Prod.fst
is continuous at (x, y)
Precomposing f
with Prod.fst
is continuous at x : X × Y
Postcomposing f
with Prod.snd
is continuous
Precomposing f
with Prod.snd
is continuous
Postcomposing f
with Prod.snd
is continuous at x
Precomposing f
with Prod.snd
is continuous at (x, y)
Precomposing f
with Prod.snd
is continuous at x : X × Y
If f x y
is continuous in x
for all y ∈ s
,
then the set of x
such that f x
maps s
to t
is closed.
Alias of Continuous.prodMap
.
A version of continuous_inf_dom_left
for binary functions
A version of continuous_inf_dom_right
for binary functions
A version of continuous_sInf_dom
for binary functions
Alias of ContinuousAt.prodMap
.
A version of ContinuousAt.prodMap
that avoids Prod.fst
/Prod.snd
by assuming that the point is (x, y)
.
Alias of ContinuousAt.prodMap'
.
A version of ContinuousAt.prodMap
that avoids Prod.fst
/Prod.snd
by assuming that the point is (x, y)
.
Continuous functions on products are continuous in their first argument
Alias of Continuous.curry_left
.
Continuous functions on products are continuous in their first argument
Continuous functions on products are continuous in their second argument
Alias of Continuous.curry_right
.
Continuous functions on products are continuous in their second argument
A product of induced topologies is induced by the product map
Prod.fst
maps neighborhood of x : X × Y
within the section Prod.snd ⁻¹' {x.2}
to 𝓝 x.1
.
The first projection in a product of topological spaces sends open sets to open sets.
Prod.snd
maps neighborhood of x : X × Y
within the section Prod.fst ⁻¹' {x.1}
to 𝓝 x.2
.
The second projection in a product of topological spaces sends open sets to open sets.
Alias of isQuotientMap_fst
.
Alias of isQuotientMap_snd
.
The product of two dense sets is a dense set.
If f
and g
are maps with dense range, then Prod.map f g
has dense range.
Alias of DenseRange.prodMap
.
If f
and g
are maps with dense range, then Prod.map f g
has dense range.
Alias of Topology.IsInducing.prodMap
.
Alias of Topology.IsInducing.prodMap
.
Alias of Topology.isInducing_const_prod
.
Alias of Topology.isInducing_prod_const
.
Alias of Topology.IsEmbedding.prodMap
.
Alias of Topology.IsEmbedding.prodMap
.
Alias of IsOpenMap.prodMap
.
Alias of Topology.IsOpenEmbedding.prodMap
.
Alias of Topology.IsOpenEmbedding.prodMap
.
Alias of isEmbedding_graph
.
Alias of isEmbedding_prodMk
.
Alias of continuous_sumElim
.
Alias of Continuous.sumElim
.
Alias of Topology.IsOpenEmbedding.inl
.
Alias of Topology.IsOpenEmbedding.inl
.
Alias of Topology.IsOpenEmbedding.inr
.
Alias of Topology.IsOpenEmbedding.inr
.
Alias of Topology.IsEmbedding.inr
.
Alias of Topology.IsClosedEmbedding.inl
.
Alias of Topology.IsClosedEmbedding.inl
.
Alias of Topology.IsClosedEmbedding.inr
.
Alias of Topology.IsClosedEmbedding.inr
.
Alias of continuous_sumMap
.
Alias of Continuous.sumMap
.
Alias of isOpenMap_sumElim
.
Alias of IsOpenMap.sumElim
.
Sum of two homeomorphisms.
Equations
Instances For
Product of two homeomorphisms.
Equations
Instances For
X ⊕ Y
is homeomorphic to Y ⊕ X
.
Equations
- Homeomorph.sumComm X Y = { toEquiv := Equiv.sumComm X Y, continuous_toFun := ⋯, continuous_invFun := ⋯ }
Instances For
(X ⊕ Y) ⊕ Z
is homeomorphic to X ⊕ (Y ⊕ Z)
.
Equations
- Homeomorph.sumAssoc X Y Z = { toEquiv := Equiv.sumAssoc X Y Z, continuous_toFun := ⋯, continuous_invFun := ⋯ }
Instances For
Four-way commutativity of the disjoint union. The name matches add_add_add_comm
.
Equations
- Homeomorph.sumSumSumComm X Y W Z = { toEquiv := Equiv.sumSumSumComm X Y W Z, continuous_toFun := ⋯, continuous_invFun := ⋯ }
Instances For
X × Y
is homeomorphic to Y × X
.
Equations
- Homeomorph.prodComm X Y = { toEquiv := Equiv.prodComm X Y, continuous_toFun := ⋯, continuous_invFun := ⋯ }
Instances For
(X × Y) × Z
is homeomorphic to X × (Y × Z)
.
Equations
- Homeomorph.prodAssoc X Y Z = { toEquiv := Equiv.prodAssoc X Y Z, continuous_toFun := ⋯, continuous_invFun := ⋯ }
Instances For
Four-way commutativity of prod
. The name matches mul_mul_mul_comm
.
Equations
- Homeomorph.prodProdProdComm X Y W Z = { toEquiv := Equiv.prodProdProdComm X Y W Z, continuous_toFun := ⋯, continuous_invFun := ⋯ }
Instances For
X × {*}
is homeomorphic to X
.
Equations
- Homeomorph.prodPUnit X = { toEquiv := Equiv.prodPUnit X, continuous_toFun := ⋯, continuous_invFun := ⋯ }
Instances For
{*} × X
is homeomorphic to X
.
Equations
Instances For
The sum of X
with any empty topological space is homeomorphic to X
.
Equations
- Homeomorph.sumEmpty X Y = { toEquiv := Equiv.sumEmpty X Y, continuous_toFun := ⋯, continuous_invFun := ⋯ }
Instances For
The sum of X
with any empty topological space is homeomorphic to X
.
Equations
- Homeomorph.emptySum X Y = (Homeomorph.sumComm Y X).trans (Homeomorph.sumEmpty X Y)
Instances For
(X ⊕ Y) × Z
is homeomorphic to X × Z ⊕ Y × Z
.
Equations
Instances For
X × (Y ⊕ Z)
is homeomorphic to X × Y ⊕ X × Z
.
Equations
- Homeomorph.prodSumDistrib = (Homeomorph.prodComm X (Y ⊕ Z)).trans (Homeomorph.sumProdDistrib.trans ((Homeomorph.prodComm Y X).sumCongr (Homeomorph.prodComm Z X)))