Skip to content

Commit 6471fc0

Browse files
committed
Theorem 17.*
1 parent 4c1e9aa commit 6471fc0

10 files changed

Lines changed: 497 additions & 288 deletions

File tree

Makefile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ check: generate
1313

1414
generate:
1515
slope generate Munkres.Defs
16+
slope generate Munkres.Defs.MA3209
1617
slope generate Munkres.Mathlib
1718
slope generate Munkres.Mathlib.Set
1819
slope generate Munkres.Mathlib.AccPt

Munkres/Defs.lean

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@ import Munkres.Defs.Conversions
44
import Munkres.Defs.Countable
55
import Munkres.Defs.IsBasisAt
66
import Munkres.Defs.IsSaturated
7+
import Munkres.Defs.MA3209
8+
import Munkres.Defs.MA3209.Separation
79
import Munkres.Defs.Metric.Basic
810
import Munkres.Defs.OpenCover
911
import Munkres.Defs.Separation

Munkres/Defs/MA3209.lean

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
import Munkres.Defs.MA3209.Separation
2+
set_option linter.style.longLine false
3+
4+
-- WARNING: THIS FILE IS AUTO-GENERATED.
Lines changed: 108 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,108 @@
1+
import Mathlib.Topology.Separation.Regular
2+
3+
universe u
4+
5+
namespace MA3209
6+
7+
section Definitions
8+
9+
variable (α : Type u) [TopologicalSpace α]
10+
11+
structure T₁ : Prop where
12+
t₁ {x y : α} : x ≠ y → ∃ U, IsOpen U ∧ x ∈ U ∧ y ∉ U
13+
14+
structure T₂ : Prop where
15+
t₂ {x y : α} : x ≠ y → ∃ U V, IsOpen U ∧ IsOpen V ∧ x ∈ U ∧ y ∈ V ∧ Disjoint U V
16+
17+
structure T₃ : Prop extends T₁ α where
18+
t₃ {x : α} {B} : x ∉ B → IsClosed B → ∃ U V, IsOpen U ∧ IsOpen V ∧ x ∈ U ∧ B ⊆ V ∧ Disjoint U V
19+
20+
structure T₄ : Prop extends T₁ α where
21+
t₄ {A B : Set α} : IsClosed A → IsClosed B → Disjoint A B →
22+
∃ U V, IsOpen U ∧ IsOpen V ∧ A ⊆ U ∧ B ⊆ V ∧ Disjoint U V
23+
24+
end Definitions
25+
26+
variable {X : Type u} [TopologicalSpace X]
27+
28+
protected theorem T₁.iff : T₁ X ↔ T1Space X
29+
:= by --
30+
rw [t1Space_iff_exists_open]
31+
exact ⟨fun h _ _ ↦ h.t₁, fun h ↦ { t₁ := (h ·) }⟩ -- ∎
32+
33+
theorem T₁.toT1 (h : T₁ X) : T1Space X := T₁.iff.mp h
34+
35+
protected theorem T₂.iff : T₂ X ↔ T2Space X
36+
:= by --
37+
rw [t2Space_iff]
38+
exact ⟨fun h _ _ ↦ h.t₂, fun h ↦ { t₂ := (h ·) }⟩ -- ∎
39+
40+
theorem T₂.toT2 (h : T₂ X) : T2Space X := T₂.iff.mp h
41+
42+
protected lemma T₃.iff : T₃ X ↔ T3Space X
43+
:= by --
44+
constructor
45+
· intro h₃
46+
haveI : T0Space X := h₃.toT1.t0Space
47+
refine { regular := ?_ }
48+
intro B x hB hxB
49+
rw [Filter.disjoint_iff]
50+
obtain ⟨U, V, hU, hV, hxU, hBV, h₃⟩ := h₃.t₃ hxB hB
51+
refine ⟨V, ?_, U, ?_, h₃.symm⟩
52+
· exact hV.mem_nhdsSet.mpr hBV
53+
· exact hU.mem_nhds hxU
54+
· intro h₃
55+
have h₁ : T₁ X := by
56+
rw [T₁.iff]
57+
exact instT1SpaceOfT0SpaceOfR0Space
58+
exact {
59+
t₁ := h₁.t₁
60+
t₃ {x B} hxB hB := by
61+
replace h₃ := h₃.toRegularSpace
62+
rw [regularSpace_iff] at h₃
63+
specialize h₃ hB hxB
64+
rw [Filter.disjoint_iff] at h₃
65+
obtain ⟨V', hV', U', hU', h₃⟩ := h₃
66+
rw [mem_nhds_iff] at hU'
67+
rw [mem_nhdsSet_iff_exists] at hV'
68+
obtain ⟨U, hUU', hU, hxU⟩ := hU'
69+
obtain ⟨V, hV, hBV, hVV'⟩ := hV'
70+
refine ⟨U, V, hU, hV, hxU, hBV, ?_⟩
71+
exact Set.disjoint_of_subset hUU' hVV' h₃.symm
72+
} -- ∎
73+
74+
theorem T₃.toT3 (h : T₃ X) : T3Space X := T₃.iff.mp h
75+
76+
protected lemma T₄.iff : T₄ X ↔ T4Space X
77+
:= by --
78+
constructor
79+
· intro h₄
80+
haveI : T1Space X := h₄.toT1
81+
refine { normal := ?_ }
82+
intro A B hA hB hd
83+
replace h₄ := h₄.t₄ hA hB hd
84+
obtain ⟨U, V, hU, hV, hAU, hBV, h₄⟩ := h₄
85+
rw [separatedNhds_iff_disjoint, Filter.disjoint_iff]
86+
refine ⟨U, ?_, V, ?_, h₄⟩
87+
· exact hU.mem_nhdsSet.mpr hAU
88+
· exact hV.mem_nhdsSet.mpr hBV
89+
· intro h₄
90+
have h₁ : T₁ X := by
91+
rw [T₁.iff]
92+
exact instT1SpaceOfT0SpaceOfR0Space
93+
exact {
94+
t₁ := h₁.t₁
95+
t₄ {A B} hA hB hd := by
96+
replace h₄ := h₄.normal A B hA hB hd
97+
rw [separatedNhds_iff_disjoint, Filter.disjoint_iff] at h₄
98+
obtain ⟨U', hU', V', hV', h₄⟩ := h₄
99+
rw [mem_nhdsSet_iff_exists] at hU' hV'
100+
obtain ⟨U, hU, hAU, hUU'⟩ := hU'
101+
obtain ⟨V, hV, hBV, hVV'⟩ := hV'
102+
refine ⟨U, V, hU, hV, hAU, hBV, ?_⟩
103+
exact Set.disjoint_of_subset hUU' hVV' h₄
104+
} -- ∎
105+
106+
theorem T₄.toT4 (h : T₄ X) : T4Space X := T₄.iff.mp h
107+
108+
end MA3209

Munkres/Mathlib/AccPt/Basic.lean

Lines changed: 35 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
1-
import Mathlib.Order.OmegaCompletePartialOrder
2-
import Mathlib.Topology.NhdsWithin
1+
import Mathlib.Topology.Separation.Basic
32
import Munkres.Defs.Basic
43

54
open Filter Set Munkres
@@ -27,7 +26,7 @@ theorem mem_closure_iff_accPt {x : α} : x ∈ closure s ↔ x ∈ s ∨ AccPt x
2726
exact clusterPt_principal -- ∎
2827

2928
--* closure A = A ∪ A'
30-
theorem AccPt.union_eq_closure : s ∪ { x | AccPt x (𝓟 s)} = closure s
29+
theorem AccPt.union_eq_closure : s ∪ { x | AccPt x (𝓟 s) } = closure s
3130
:= by --
3231
refine Set.ext fun x ↦ ?_
3332
simp only [mem_closure_iff_accPt]
@@ -85,3 +84,36 @@ example [h₀ : Nonempty α] : ∃ (A : Set α) (x : α) (f : ℕ → α),
8584
specialize h univ isOpen_univ trivial
8685
rw [sdiff_self, bot_eq_empty, inter_empty] at h
8786
exact Set.not_nonempty_empty h -- ∎
87+
88+
protected theorem AccPt.t1_infinite_iff [T1Space α]
89+
: AccPt x (𝓟 s) ↔ ∀ u, IsOpen u → x ∈ u → (u ∩ s).Infinite
90+
:= by --
91+
constructor
92+
· intro ha u hu hxu
93+
by_contra hf
94+
rw [not_infinite] at hf
95+
let t := u ∩ (s \ {x})
96+
have : t.Finite := hf.subset (inter_subset_inter_right _ diff_subset)
97+
-- `t.Finite → IsClosed t` follows from α being T1.
98+
have : IsOpen tᶜ := this.isClosed.isOpen_compl
99+
have hut : IsOpen (u ∩ tᶜ) := hu.inter this
100+
have hxut : x ∈ u ∩ tᶜ := by
101+
refine ⟨hxu, ?_⟩
102+
rw [mem_compl_iff, mem_inter_iff, mem_diff]
103+
push_neg
104+
intro _ _
105+
exact rfl
106+
rw [AccPt.iff] at ha
107+
specialize ha (u ∩ tᶜ) hut hxut
108+
rw [inter_right_comm, inter_compl_self t] at ha
109+
exact Set.not_nonempty_empty ha
110+
· intro hf
111+
rw [AccPt.iff]
112+
intro u hu hxu
113+
specialize hf u hu hxu
114+
obtain ⟨y, hne, hyu, hys⟩ : ∃ y ≠ x, y ∈ u ∩ s := by
115+
by_contra! h
116+
refine hf ?_
117+
have : u ∩ s ⊆ {x} := Set.compl_subset_compl.mp h
118+
exact (Set.finite_singleton x).subset this
119+
exact ⟨y, hyu, hys, hne⟩ -- ∎

0 commit comments

Comments
 (0)