Skip to content

Commit 7bc2841

Browse files
committed
chore(SetTheory/Ordinal/Topology): deprecate theorems about Ordinal.bsup (leanprover-community#37667)
In preparation to deprecating `Ordinal.bsup` entirely. See leanprover-community#17033.
1 parent be4dc1a commit 7bc2841

1 file changed

Lines changed: 36 additions & 39 deletions

File tree

Mathlib/SetTheory/Ordinal/Topology.lean

Lines changed: 36 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -12,24 +12,24 @@ public import Mathlib.Topology.Order.Monotone
1212
public import Mathlib.Topology.Order.SuccPred
1313

1414
/-!
15-
### Topology of ordinals
15+
# Topology of ordinals
1616
1717
We prove some miscellaneous results involving the order topology of ordinals.
1818
19-
### Main results
19+
## Main results
2020
21-
* `Ordinal.isClosed_iff_iSup` / `Ordinal.isClosed_iff_bsup`: A set of ordinals is closed iff it's
21+
* `Ordinal.isClosed_iff_iSup`: A set of ordinals is closed iff it's
2222
closed under suprema.
23-
* `Ordinal.isNormal_iff_strictMono_and_continuous`: A characterization of normal ordinal
24-
functions.
2523
* `Ordinal.enumOrd_isNormal_iff_isClosed`: The function enumerating the ordinals of a set is
2624
normal iff the set is closed.
27-
-/
2825
29-
@[expose] public section
26+
## Todo
3027
28+
Most things in this file should be generalized to other well-orders, or to Scott-Hausdorff
29+
topologies.
30+
-/
3131

32-
noncomputable section
32+
@[expose] public noncomputable section
3333

3434
universe u v
3535

@@ -60,8 +60,6 @@ theorem mem_closure_tfae (a : Ordinal.{u}) (s : Set Ordinal) :
6060
a ∈ closure (s ∩ Iic a),
6161
(s ∩ Iic a).Nonempty ∧ sSup (s ∩ Iic a) = a,
6262
∃ t, t ⊆ s ∧ t.Nonempty ∧ BddAbove t ∧ sSup t = a,
63-
∃ (o : Ordinal.{u}), o ≠ 0 ∧ ∃ (f : ∀ x < o, Ordinal),
64-
(∀ x hx, f x hx ∈ s) ∧ bsup.{u, u} o f = a,
6563
∃ (ι : Type u), Nonempty ι ∧ ∃ f : ι → Ordinal, (∀ i, f i ∈ s) ∧ ⨆ i, f i = a] := by
6664
tfae_have 12 := by
6765
simpa only [mem_closure_iff_nhdsWithin_neBot, inter_comm s, nhdsWithin_inter',
@@ -75,21 +73,14 @@ theorem mem_closure_tfae (a : Ordinal.{u}) (s : Set Ordinal) :
7573
tfae_have 34
7674
| h => ⟨_, inter_subset_left, h.1, bddAbove_Iic.mono inter_subset_right, h.2
7775
tfae_have 45 := by
78-
rintro ⟨t, hts, hne, hbdd, rfl⟩
79-
have hlub : IsLUB t (sSup t) := isLUB_csSup hne hbdd
80-
let ⟨y, hyt⟩ := hne
81-
classical
82-
refine ⟨_, (add_pos_of_right zero_lt_one (sSup t)).ne',
83-
fun x _ ↦ if x ∈ t then x else y, fun x _ => ?_, ?_⟩
84-
· simp only
85-
split_ifs with h <;> exact hts ‹_›
86-
· refine le_antisymm (bsup_le fun x _ => ?_) (csSup_le hne fun x hx => ?_)
87-
· split_ifs <;> exact hlub.1 ‹_›
88-
· refine (if_pos hx).symm.trans_le (le_bsup _ _ <| (hlub.1 hx).trans_lt (lt_succ _))
89-
tfae_have 56 := by
90-
rintro ⟨o, h₀, f, hfs, rfl⟩
91-
exact ⟨_, nonempty_toType_iff.2 h₀, familyOfBFamily o f, fun _ => hfs _ _, rfl⟩
92-
tfae_have 61 := by
76+
rintro ⟨t, ht, ht₀, ht₁, rfl⟩
77+
rw [bddAbove_iff_small] at ht₁
78+
refine ⟨Shrink t, ?_, Subtype.val ∘ (equivShrink _).symm, ?_, ?_⟩
79+
· have := ht₀.to_subtype
80+
exact (equivShrink _).symm.nonempty
81+
· simpa [← (equivShrink t).forall_congr_left (p := (·.1 ∈ s))]
82+
· simp [(equivShrink t).symm.iSup_comp, ← sSup_eq_iSup']
83+
tfae_have 51 := by
9384
rintro ⟨ι, hne, f, hfs, rfl⟩
9485
exact closure_mono (range_subset_iff.2 hfs) <| csSup_mem_closure (range_nonempty f)
9586
(bddAbove_range.{u, u} f)
@@ -98,21 +89,28 @@ theorem mem_closure_tfae (a : Ordinal.{u}) (s : Set Ordinal) :
9889
theorem mem_closure_iff_iSup :
9990
a ∈ closure s ↔
10091
∃ (ι : Type u) (_ : Nonempty ι) (f : ι → Ordinal), (∀ i, f i ∈ s) ∧ ⨆ i, f i = a := by
101-
apply ((mem_closure_tfae a s).out 0 5).trans
92+
apply ((mem_closure_tfae a s).out 0 4).trans
10293
simp_rw [exists_prop]
10394

10495
theorem mem_iff_iSup_of_isClosed (hs : IsClosed s) :
10596
a ∈ s ↔ ∃ (ι : Type u) (_hι : Nonempty ι) (f : ι → Ordinal),
10697
(∀ i, f i ∈ s) ∧ ⨆ i, f i = a := by
10798
rw [← mem_closure_iff_iSup, hs.closure_eq]
10899

100+
@[deprecated mem_closure_iff_iSup (since := "2026-04-05")]
109101
theorem mem_closure_iff_bsup :
110102
a ∈ closure s ↔
111103
∃ (o : Ordinal) (_ho : o ≠ 0) (f : ∀ a < o, Ordinal),
112104
(∀ i hi, f i hi ∈ s) ∧ bsup.{u, u} o f = a := by
113-
apply ((mem_closure_tfae a s).out 0 4).trans
114-
simp_rw [exists_prop]
105+
rw [mem_closure_iff_iSup]
106+
constructor
107+
· rintro ⟨ι, _, f, hf, rfl⟩
108+
exact ⟨_, by simp, bfamilyOfFamily f, fun i hi ↦ hf .., bsup_eq_iSup f⟩
109+
· rintro ⟨o, ho, f, hf, rfl⟩
110+
exact ⟨_, by simpa, familyOfBFamily _ f, fun i ↦ hf .., iSup_eq_bsup f⟩
115111

112+
set_option linter.deprecated false in
113+
@[deprecated mem_closure_iff_iSup (since := "2026-04-05")]
116114
theorem mem_closed_iff_bsup (hs : IsClosed s) :
117115
a ∈ s ↔
118116
∃ (o : Ordinal) (_ho : o ≠ 0) (f : ∀ a < o, Ordinal),
@@ -128,6 +126,7 @@ theorem isClosed_iff_iSup :
128126
rcases mem_closure_iff_iSup.1 hx with ⟨ι, hι, f, hf, rfl⟩
129127
exact h hι f hf
130128

129+
@[deprecated isClosed_iff_iSup (since := "2026-04-05")]
131130
theorem isClosed_iff_bsup :
132131
IsClosed s ↔
133132
∀ {o : Ordinal}, o ≠ 0 → ∀ f : ∀ a < o, Ordinal,
@@ -158,17 +157,15 @@ theorem enumOrd_isNormal_iff_isClosed (hs : ¬ BddAbove s) :
158157
ext x
159158
change (enumOrdOrderIso s hs _).val = f x
160159
rw [OrderIso.apply_symm_apply]
161-
· rw [isClosed_iff_bsup] at h
162-
suffices enumOrd s a ≤ bsup.{u, u} a fun b (_ : b < a) => enumOrd s b from
163-
this.trans (bsup_le H)
164-
obtain ⟨b, hb⟩ := enumOrd_surjective hs (h ha.ne_bot (fun b _ => enumOrd s b)
165-
fun b _ => enumOrd_mem hs b)
166-
rw [← hb]
167-
apply Hs.monotone
168-
by_contra! hba
169-
apply (Hs (lt_succ b)).not_ge
170-
rw [hb]
171-
exact le_bsup.{u, u} _ _ (ha.succ_lt hba)
160+
· have := csSup_mem_closure (ha.nonempty_Iio.image (enumOrd s)) (bddAbove_of_small _)
161+
have := h.closure_eq ▸ closure_mono (t := s) ?_ this
162+
· apply (Set.image_subset_range ..).trans_eq
163+
rw [range_enumOrd hs]
164+
· apply (enumOrd_le_of_forall_lt this _).trans
165+
· apply csSup_le'
166+
grind [upperBounds]
167+
· exact fun b hb ↦ (enumOrd_strictMono hs (lt_add_one b)).trans_le <|
168+
le_csSup (bddAbove_of_small _) <| Set.mem_image_of_mem _ (ha.add_one_lt hb)
172169

173170
open Set Filter Set.Notation
174171

0 commit comments

Comments
 (0)