MathlibAnnex/Topology/ClosureSpace/Induced.lean
Exact source · gss-v0.5.0
Fixed commit original · Raw UTF-8 source · Back to GSS Companion
Select a source link from a manuscript to highlight its exact range.
Technical identity
- Commit
ac405356bb98afed954da9b9c795d23cc8d5d149- SHA-256
64a0d2355ea9c300164e97dff1586d978d1922e5afebf0bf2dae4657e90445ed- Bytes
- 4595
1/-2Copyright (c) 2026 Ryotaro Tanaka. All rights reserved.3Released under Apache 2.0 license as described in the file LICENSE.4Authors: Ryotaro Tanaka5-/6module78public import MathlibAnnex.Topology.ClosureSpace.Maps910/-!11# Induced and subspace closures1213The induced closure is `s ↦ f ⁻¹' d.closure (f '' s)`, with no assumption on `f`.14A subspace is the special case of a subtype inclusion. This is not a quotient topology.15-/1617@[expose] public section1819set_option autoImplicit false2021universe u v w2223namespace ClosureSpace2425variable {α : Type u} {β : Type v} {γ : Type w}2627/-- Pull back a closure space along any function. -/28def induced (d : ClosureSpace β) (f : α → β) : ClosureSpace α where29toClosureOperator := ClosureOperator.mk'30(fun s => f ⁻¹' d.closure (f '' s))31(by32intro s t h x hx33exact d.closure_mono (Set.image_mono h) hx)34(by35intro s x hx36exact d.subset_closure (f '' s) ⟨x, hx, rfl⟩)37(by38intro s x hx39exact d.closure_min (Set.image_preimage_subset f _)40(d.isClosed_closure (f '' s)) hx)41map_empty' := by42change f ⁻¹' d.closure (f '' ∅) = ∅43rw [Set.image_empty, d.closure_empty, Set.preimage_empty]4445@[simp]46theorem induced_closure (d : ClosureSpace β) (f : α → β) (s : Set α) :47(d.induced f).closure s = f ⁻¹' d.closure (f '' s) := rfl4849theorem continuous_induced (d : ClosureSpace β) (f : α → β) :50(d.induced f).Continuous d f := by51intro s y hy52rcases hy with ⟨x, hx, rfl⟩53exact hx5455/-- The universal property for a map into an induced closure space. -/56theorem continuous_induced_iff (c : ClosureSpace α) (d : ClosureSpace γ)57(f : β → γ) (g : α → β) :58c.Continuous (d.induced f) g ↔ c.Continuous d (f ∘ g) := by59constructor60· intro h61exact (continuous_induced d f).comp h62· intro h s y hy63rcases hy with ⟨x, hx, rfl⟩64change f (g x) ∈ d.closure (f '' (g '' s))65simpa only [Set.image_image, Function.comp_def] using h s ⟨x, hx, rfl⟩6667theorem isTopologizable_induced {d : ClosureSpace β} (hd : d.IsTopologizable)68(f : α → β) : (d.induced f).IsTopologizable := by69intro s t70change f ⁻¹' d.closure (f '' (s ∪ t)) =71(f ⁻¹' d.closure (f '' s)) ∪ (f ⁻¹' d.closure (f '' t))72rw [Set.image_union, hd, Set.preimage_union]7374theorem image_induced_closure (d : ClosureSpace β) (f : α → β)75(hf : Function.Surjective f) (s : Set α) :76f '' (d.induced f).closure s = d.closure (f '' s) := by77apply Set.Subset.antisymm (continuous_induced d f s)78intro y hy79obtain ⟨x, rfl⟩ := hf y80exact ⟨x, hy, rfl⟩8182/-- An equivalence is a homeomorphism from its induced closure space. -/83def homeomorphInduced (d : ClosureSpace β) (e : α ≃ β) :84Homeomorph (d.induced e) d :=85Homeomorph.ofImageClosure (d.induced e) d e86(image_induced_closure d e e.surjective)8788/-- The closure on a subset, represented on its subtype. -/89def subspace (c : ClosureSpace α) (A : Set α) : ClosureSpace A :=90c.induced (Subtype.val : A → α)9192@[simp]93theorem subspace_closure (c : ClosureSpace α) (A : Set α) (s : Set A) :94(c.subspace A).closure s =95(Subtype.val : A → α) ⁻¹' c.closure ((Subtype.val : A → α) '' s) := rfl9697/-- In ambient-set notation the subspace closure is intersection with the subset. -/98theorem image_subspace_closure (c : ClosureSpace α) (A : Set α) (s : Set A) :99(Subtype.val : A → α) '' (c.subspace A).closure s =100A ∩ c.closure ((Subtype.val : A → α) '' s) := by101apply Set.ext102intro x103constructor104· rintro ⟨y, hy, rfl⟩105exact ⟨y.property, hy⟩106· rintro ⟨hxA, hx⟩107exact ⟨⟨x, hxA⟩, hx, rfl⟩108109theorem continuous_subtype_val (c : ClosureSpace α) (A : Set α) :110(c.subspace A).Continuous c (Subtype.val : A → α) :=111continuous_induced c Subtype.val112113/-- Pullback of a T0 closure is T0 precisely when the inducing map is injective. -/114theorem isT0_induced_iff (d : ClosureSpace β) (hd : d.IsT0) (f : α → β) :115(d.induced f).IsT0 ↔ Function.Injective f := by116constructor117· intro h x y hxy118apply h x y119· exact d.subset_closure (f '' {y}) ⟨y, Set.mem_singleton y, hxy.symm⟩120· exact d.subset_closure (f '' {x}) ⟨x, Set.mem_singleton x, hxy⟩121· intro hf x y hxy hyx122apply hf123apply hd (f x) (f y)124· change f x ∈ d.closure (f '' {y}) at hxy125simpa only [Set.image_singleton] using hxy126· change f y ∈ d.closure (f '' {x}) at hyx127simpa only [Set.image_singleton] using hyx128129end ClosureSpace