Skip to content

Commit 4d6689a

Browse files
committed
feat: an infinite type has a "pathological relation" (leanprover-community#37965)
In the sense that `{y | ¬ r x y}` and `{x | r x y}` are both of cardinal `< #α`.
1 parent 07ee0f0 commit 4d6689a

3 files changed

Lines changed: 33 additions & 19 deletions

File tree

Counterexamples/Phillips.lean

Lines changed: 5 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -457,27 +457,13 @@ along horizontals). Such a set cannot be measurable as it would contradict Fubin
457457
We need the continuum hypothesis to construct it.
458458
-/
459459

460-
460+
-- TODO: deprecate in favor of `Cardinal.exists_rel_mk_fibers_lt`
461461
theorem sierpinski_pathological_family (Hcont : #ℝ = ℵ₁) :
462462
∃ f : ℝ → Set ℝ, (∀ x, (univ \ f x).Countable) ∧ ∀ y, {x : ℝ | y ∈ f x}.Countable := by
463-
rcases Cardinal.exists_ord_eq ℝ with ⟨r, hr, H⟩
464-
refine ⟨fun x => {y | r x y}, fun x => ?_, fun y => ?_⟩
465-
· have : univ \ {y | r x y} = {y | r y x} ∪ {x} := by
466-
ext y
467-
simp only [true_and, mem_univ, mem_setOf_eq, mem_insert_iff, union_singleton, mem_diff]
468-
rcases trichotomous_of r x y with (h | rfl | h)
469-
· simp only [h, not_or, false_iff, not_true]
470-
constructor
471-
· rintro rfl; exact irrefl_of r y h
472-
· exact asymm h
473-
· simp only [true_or, iff_true]; exact irrefl x
474-
· simp only [h, iff_true, or_true]; exact asymm h
475-
rw [this]
476-
apply Countable.union _ (countable_singleton _)
477-
rw [← Cardinal.le_aleph0_iff_set_countable, ← Cardinal.lt_aleph_one_iff, ← Hcont]
478-
exact Cardinal.card_typein_lt x H
479-
· rw [← Cardinal.le_aleph0_iff_set_countable, ← Cardinal.lt_aleph_one_iff, ← Hcont]
480-
exact Cardinal.card_typein_lt y H
463+
obtain ⟨r, hr₁, hr₂⟩ := Cardinal.exists_rel_mk_fibers_lt ℝ
464+
refine ⟨fun x ↦ setOf (r x), ?_, ?_⟩
465+
· simpa [Hcont, ← Set.compl_eq_univ_diff] using hr₁
466+
· simpa [Hcont] using hr₂
481467

482468
/-- A family of sets in `ℝ` which only miss countably many points, but such that any point is
483469
contained in only countably many of them. -/

Mathlib/SetTheory/Cardinal/Arithmetic.lean

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -264,6 +264,12 @@ theorem add_lt_of_lt {a b c : Cardinal} (hc : ℵ₀ ≤ c) (h1 : a < c) (h2 : b
264264
(lt_or_ge (max a b) ℵ₀).elim (fun h => (add_lt_aleph0 h h).trans_le hc) fun h => by
265265
rw [add_eq_self h]; exact max_lt h1 h2
266266

267+
theorem add_one_lt_of_lt {a b : Cardinal} (hb : ℵ₀ ≤ b) (ha : a < b) : a + 1 < b :=
268+
add_lt_of_lt hb ha (one_lt_aleph0.trans_le hb)
269+
270+
theorem one_add_lt_of_lt {a b : Cardinal} (hb : ℵ₀ ≤ b) (ha : a < b) : 1 + a < b :=
271+
add_lt_of_lt hb (one_lt_aleph0.trans_le hb) ha
272+
267273
theorem eq_of_add_eq_of_aleph0_le {a b c : Cardinal} (h : a + b = c) (ha : a < c) (hc : ℵ₀ ≤ c) :
268274
b = c := by
269275
apply le_antisymm
@@ -313,6 +319,15 @@ theorem add_one_eq {a : Cardinal} (ha : ℵ₀ ≤ a) : a + 1 = a :=
313319
theorem mk_add_one_eq {α : Type*} [Infinite α] : #α + 1 = #α :=
314320
add_one_eq (aleph0_le_mk α)
315321

322+
theorem mk_Iic_lt {α : Type*} [LinearOrder α] [WellFoundedLT α] (i : α)
323+
(h : ord #α = typeLT α) (hα : ℵ₀ ≤ #α) : #(Iic i) < #α := by
324+
rw [← Iio_insert, mk_insert self_notMem_Iio]
325+
exact add_one_lt_of_lt hα (mk_Iio_lt i h)
326+
327+
theorem mk_Ici_lt {α : Type*} [LinearOrder α] [WellFoundedGT α] (i : α)
328+
(h : ord #α = typeLT αᵒᵈ) (hα : ℵ₀ ≤ #α) : #(Ici i) < #α :=
329+
mk_Iic_lt (OrderDual.toDual i) h hα
330+
316331
protected theorem eq_of_add_eq_add_left {a b c : Cardinal} (h : a + b = a + c) (ha : a < ℵ₀) :
317332
b = c := by
318333
rcases le_or_gt ℵ₀ b with hb | hb
@@ -340,6 +355,15 @@ protected theorem eq_of_add_eq_add_right {a b c : Cardinal} (h : a + b = c + b)
340355

341356
end add
342357

358+
/-- Infinite types permit a relation where fewer elements than its cardinality
359+
are missed along all verticals and fewer elements than its cardinality are hit
360+
along all horizontals. -/
361+
theorem exists_rel_mk_fibers_lt (α : Type*) [Infinite α] :
362+
∃ r : α → α → Prop, (∀ x, #{y // ¬ r x y} < #α) ∧ (∀ y, #{x // r x y} < #α) := by
363+
obtain ⟨α, _, hα⟩ := exists_ord_eq_type_lt α
364+
refine ⟨LT.lt, fun x ↦ ?_, fun y ↦ mk_Iio_lt _ hα⟩
365+
simpa using mk_Iic_lt _ hα (aleph0_le_mk _)
366+
343367
/-! ### Properties of `ciSup` -/
344368
section ciSup
345369

Mathlib/SetTheory/Ordinal/Basic.lean

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1184,6 +1184,10 @@ theorem mk_Iio_lt [LinearOrder α] [WellFoundedLT α] (i : α) (h : ord #α = ty
11841184
#(Iio i) < #α :=
11851185
card_typein_lt (r := LT.lt) i h
11861186

1187+
theorem mk_Ioi_lt {α : Type*} [LinearOrder α] [WellFoundedGT α] (i : α) (h : ord #α = typeLT αᵒᵈ) :
1188+
#(Ioi i) < #α :=
1189+
mk_Iio_lt (OrderDual.toDual i) h
1190+
11871191
@[deprecated mk_Iio_lt (since := "2026-04-12")]
11881192
theorem mk_Iio_toType_ord_lt {c : Cardinal} (i : c.ord.ToType) : #(Iio i) < c := by
11891193
simpa using mk_Iio_lt i

0 commit comments

Comments
 (0)