Skip to content

Commit a58e079

Browse files
committed
start
1 parent 77fa41e commit a58e079

2 files changed

Lines changed: 30 additions & 11 deletions

File tree

Mathlib/SetTheory/Cardinal/Cofinality/Club.lean

Lines changed: 25 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,7 @@ Authors: Violeta Hernández Palacios
66
module
77

88
public import Mathlib.Order.DirSupClosed
9-
public import Mathlib.Order.IsNormal
10-
public import Mathlib.SetTheory.Cardinal.Cofinality.Basic
9+
public import Mathlib.SetTheory.Cardinal.Cofinality.Ordinal
1110

1211
/-!
1312
# Club sets
@@ -27,7 +26,7 @@ public section
2726

2827
universe u v
2928

30-
open Cardinal Order
29+
open Cardinal Order Ordinal Set
3130

3231
/-- A club set is closed under suprema and cofinal. -/
3332
structure IsClub {α : Type*} [LinearOrder α] (s : Set α) where
@@ -51,7 +50,7 @@ protected theorem univ : IsClub (α := α) .univ :=
5150
⟨.univ, .univ⟩
5251

5352
protected theorem union (hs : IsClub s) (ht : IsClub t) : IsClub (s ∪ t) :=
54-
⟨hs.dirSupClosed.union ht.dirSupClosed, hs.isCofinal.mono Set.subset_union_left⟩
53+
⟨hs.dirSupClosed.union ht.dirSupClosed, hs.isCofinal.mono subset_union_left⟩
5554

5655
theorem isLUB_mem (hs : IsClub s) (ht : t ⊆ s) (ht₀ : t.Nonempty) (hx : IsLUB t x) : x ∈ s :=
5756
hs.dirSupClosed ht ht₀ (.of_linearOrder _) hx
@@ -63,12 +62,12 @@ theorem csSup_mem {α} [ConditionallyCompleteLinearOrder α] {s t : Set α}
6362
theorem sInter_of_orderTop {s : Set (Set α)} [OrderTop α] (hs : ∀ x ∈ s, IsClub x) :
6463
IsClub (⋂₀ s) := by
6564
refine ⟨.sInter fun x hx ↦ (hs x hx).dirSupClosed, ?_⟩
66-
rw [isCofinal_iff_top_mem, Set.mem_sInter]
65+
rw [isCofinal_iff_top_mem, mem_sInter]
6766
exact fun x hx ↦ (hs x hx).isCofinal.top_mem
6867

6968
theorem iInter_of_orderTop {ι : Type*} {f : ι → Set α} [OrderTop α] (hs : ∀ i, IsClub (f i)) :
7069
IsClub (⋂ i, f i) := by
71-
rw [← Set.sInter_range]
70+
rw [← sInter_range]
7271
exact .sInter_of_orderTop (by simpa)
7372

7473
theorem sInter_of_cof_le_one {s : Set (Set α)} (hα : cof α ≤ 1) (hs : ∀ x ∈ s, IsClub x) :
@@ -80,7 +79,7 @@ theorem sInter_of_cof_le_one {s : Set (Set α)} (hα : cof α ≤ 1) (hs : ∀ x
8079

8180
theorem iInter_of_cof_le_one {ι : Type*} {f : ι → Set α} (hα : cof α ≤ 1) (hs : ∀ i, IsClub (f i)) :
8281
IsClub (⋂ i, f i) := by
83-
rw [← Set.sInter_range]
82+
rw [← sInter_range]
8483
exact .sInter_of_cof_le_one hα (by simpa)
8584

8685
section WellFoundedLT
@@ -102,7 +101,7 @@ protected theorem sInter {s : Set (Set α)} (hα : cof α ≠ ℵ₀) (hsα : #s
102101
refine .of_not_isCofinal fun hg ↦ (cof_le hg).not_gt (hα.trans_le' ?_)
103102
simpa using mk_range_le_lift (f := g)
104103
refine ⟨_, fun t ht ↦ ?_, le_csSup hg ⟨0, rfl⟩⟩
105-
apply (hs t ht).isLUB_mem (t := .range fun n ↦ f ⟨t, ht⟩ (g n)) _ (Set.range_nonempty _)
104+
apply (hs t ht).isLUB_mem (t := .range fun n ↦ f ⟨t, ht⟩ (g n)) _ (range_nonempty _)
106105
· refine ⟨?_, fun b hb ↦ csSup_le' ?_⟩ <;> rintro _ ⟨n, rfl⟩
107106
· apply (le_csSup (.of_not_isCofinal _) _).trans (le_csSup hg ⟨n + 1, rfl⟩)
108107
· exact fun hg' ↦ (cof_le hg').not_gt (mk_range_le.trans_lt hsα)
@@ -113,14 +112,14 @@ protected theorem sInter {s : Set (Set α)} (hα : cof α ≠ ℵ₀) (hsα : #s
113112
protected theorem iInter {ι : Type u} {f : ι → Set α} (hα : cof α ≠ ℵ₀)
114113
(hι : Cardinal.lift.{v} #ι < Cardinal.lift.{u} (cof α)) (hf : ∀ i, IsClub (f i)) :
115114
IsClub (⋂ i, f i) := by
116-
rw [← Set.sInter_range]
115+
rw [← sInter_range]
117116
refine IsClub.sInter hα ?_ (by simpa)
118117
rw [← Cardinal.lift_lt]
119118
exact mk_range_le_lift.trans_lt hι
120119

121120
protected theorem inter {s t : Set α} (hα : cof α ≠ ℵ₀) (hs : IsClub s) (ht : IsClub t) :
122121
IsClub (s ∩ t) := by
123-
rw [← Set.sInter_pair]
122+
rw [← sInter_pair]
124123
have H : ∀ x ∈ ({s, t} : Set _), IsClub x := by simpa [hs]
125124
obtain hα | hα' := hα.lt_or_gt
126125
· rw [cof_lt_aleph0_iff] at hα
@@ -134,7 +133,7 @@ theorem _root_.Order.IsNormal.isClub_fixedPoints {f : α → α} (hα : cof α
134133
IsClub f.fixedPoints := by
135134
cases isEmpty_or_nonempty α; · simp
136135
refine ⟨fun s hs hs₀ _ a ha ↦ (hf.map_isLUB ha hs₀).unique ?_, fun a ↦ ?_⟩
137-
· rwa [Set.image_congr hs, Set.image_id']
136+
· rwa [image_congr hs, image_id']
138137
· cases topOrderOrNoTopOrder α with
139138
| inl => use ⊤; simpa using hf.strictMono.id_le ⊤
140139
| inr h =>
@@ -145,5 +144,20 @@ theorem _root_.Order.IsNormal.isClub_fixedPoints {f : α → α} (hα : cof α
145144
((aleph0_le_cof.lt_of_ne' hα).trans_le' ?_)
146145
simpa using mk_range_le_lift (f := fun n : ℕ ↦ f^[n] a)
147146

147+
/-- Every cofinal set of order type `(cof α).ord` has a club superset of the same order type. -/
148+
theorem ord_cof_eq_isClub_of_isCofinal (hs : IsCofinal s) (hsα : typeLT s = (cof α).ord) :
149+
∃ t, s ⊆ t ∧ IsClub t ∧ typeLT t = (cof α).ord := by
150+
obtain hα | hα := le_or_gt (cof α) ℵ₀
151+
· refine ⟨s, subset_rfl, ⟨?_, hs⟩, hsα⟩
152+
apply dirSupClosed_of
153+
sorry
154+
155+
variable (α) in
156+
/-- Every well-order has a club subset of order type `(cof α).ord`. -/
157+
theorem ord_cof_eq_isClub : ∃ t : Set α, IsClub t ∧ typeLT t = (cof α).ord := by
158+
obtain ⟨s, hs, hs'⟩ := ord_cof_eq α
159+
obtain ⟨t, -, ht, ht'⟩ := ord_cof_eq_isClub_of_isCofinal hs hs'
160+
exact ⟨t, ht, ht'⟩
161+
148162
end WellFoundedLT
149163
end IsClub

Mathlib/SetTheory/Ordinal/Basic.lean

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -165,6 +165,11 @@ theorem type_eq {α β} {r : α → α → Prop} {s : β → β → Prop} [IsWel
165165
type r = type s ↔ Nonempty (r ≃r s) :=
166166
Quotient.eq'
167167

168+
theorem type_lt_eq {α β} [LinearOrder α] [LinearOrder β] [WellFoundedLT α] [WellFoundedLT β] :
169+
typeLT α = typeLT β ↔ Nonempty (α ≃o β) := by
170+
rw [type_eq]
171+
exact ⟨fun ⟨h⟩ ↦ ⟨OrderIso.ofRelIsoLT h⟩, fun ⟨h⟩ ↦ ⟨h.toRelIsoLT⟩⟩
172+
168173
theorem _root_.RelIso.ordinal_type_eq {α β} {r : α → α → Prop} {s : β → β → Prop} [IsWellOrder α r]
169174
[IsWellOrder β s] (h : r ≃r s) : type r = type s :=
170175
type_eq.2 ⟨h⟩

0 commit comments

Comments
 (0)