Zulip Chat Archive
Stream: maths
Topic: Cardinality of `ZFSet`
Daniel Weber (Dec 11 2024 at 14:33):
What is Lean capable of proving regarding the cardinality of docs#ZFSet, compared to the cardinality of e.g. Type
?
Daniel Weber (Dec 11 2024 at 14:33):
As an extreme example, is this axiom inconsistent?
import Mathlib
axiom ZF_small.{u} : Small.{0} ZFSet.{u}
Floris van Doorn (Dec 11 2024 at 15:30):
No. There should be a well-defined cardinality function ZFSet.{u} -> Cardinal.{u}
, and this function should be surjective.
Floris van Doorn (Dec 11 2024 at 15:31):
There are some other threads on Zulip about the cardinality of Type
. IIRC we have #Cardinal.{u} \le #Type u < Cardinal.{u+1}
, but whether the \le
is equality is independent of Lean.
Daniel Weber (Dec 11 2024 at 15:35):
Floris van Doorn said:
No. There should be a well-defined cardinality function
ZFSet.{u} -> Cardinal.{u}
, and this function should be surjective.
That's what I thought, but I didn't manage to prove it — how does the proof work?
Floris van Doorn (Dec 11 2024 at 15:52):
I think the following works:
construct the ordinals O = { s : ZFSet.{u} | s.IsOrdinal }
in ZFSet
and the canonical map f : O -> Ordinal.{u}
(I think this is doable, right?). Suppose that c : Ordinal.{u}
is the least ordinal not in the range of f
, take a well-order C : Type u
with order type c
. Then define a new ZFSet
indexed by C
which sends x : C
to the corresponding ordinal in ZFSet
(something like invFun f (typein _ x)
). This can be done with PSet.mk
+ choice, but maybe there is some better API for that (i.e. a "comprehension" function (α : Type u) → (α → ZFSet.{u}) → ZFSet.{u}
).
Floris van Doorn (Dec 11 2024 at 15:53):
Oh, the last step is docs#ZFSet.range.
Mario Carneiro (Dec 11 2024 at 17:31):
You should be able to prove that the cardinality of ZFSet.{u}
is the same as the cardinality of Cardinal.{u}
and Ordinal.{u}
, which I think has a name like docs#Cardinal.univ
Mario Carneiro (Dec 11 2024 at 17:34):
(This is unlike the situation for Type u
, which you cannot prove is the same cardinality as those three types because Type u
is not a quotient, e.g. there could be a very large number of empty types in it and the axioms don't rule this possibility out.)
Mario Carneiro (Dec 11 2024 at 17:36):
The way I would go about proving this is by setting up a bijection between the levels of the cumulative hierarchy and the beth function, and then proving that when is an inaccessible cardinal
Junyan Xu (Dec 11 2024 at 17:50):
von Neumann hierarchy is #17027 but apparently nothing about cardinality yet ...
Nir Paz (Dec 11 2024 at 21:51):
Basically the same proof as Mario's but might be easier to implement (for the ZFSet.{u} ≤ Ordinal.{u}
direction):
Define a well order on ZFSet.{u}
by extending a well order on V_k
to V_(k+1)
at every step. Then every prefix is a well order on a ZFSet.{u}
and is then Small.{u}
, so the supremum of the sizes of the prefixes, which is the size of ZFSet.{u}
, is univ.{u}
.
Nir Paz (Dec 11 2024 at 21:52):
This only uses that the Von Neumann hierarchy covers all sets.
Junyan Xu (Dec 12 2024 at 02:02):
I can't believe I just finished a proof! I got the idea of using WType early, but it took me a few hours to convince myself Cardinal.IsInaccessible.pow_le_of_lt
is true and to formalize the proof. This is only the upper bound though, I guess I'll leave the lower bound to you :)
import Mathlib
universe u
def wType := WType fun c : Cardinal.{u} ↦ c.out
def wTypeToPSet : wType.{u} → PSet.{u}
| WType.mk c f => PSet.mk c.out fun i ↦ wTypeToPSet (f i)
def wTypeToZFSet (x : wType.{u}) : ZFSet.{u} := .mk (wTypeToPSet x)
theorem mem_wTypeToZFSet_mk (s : ZFSet.{u}) (c f) :
s ∈ wTypeToZFSet (WType.mk c f) ↔ ∃ i : c.out, s = wTypeToZFSet (f i) := by
obtain ⟨s, rfl : ZFSet.mk _ = _⟩ := Quotient.mk_surjective s
simp_rw [wTypeToZFSet, wTypeToPSet, ZFSet.mk_mem_iff, (· ∈ ·), PSet.Mem, ZFSet.eq]
rfl
theorem wTypeToZFSet_surjective : Function.Surjective wTypeToZFSet :=
fun s ↦ s.inductionOn fun s ih ↦ by
choose x hx using ih
let T := Shrink s.toSet
use WType.mk _ fun y ↦ x _ ((Cardinal.outMkEquiv.trans (equivShrink s.toSet).symm) y).2
ext z; rw [mem_wTypeToZFSet_mk]
simp_rw [hx, eq_comm (a := z), ← Set.mem_range, ← Subtype.val.comp_apply, Set.range_comp,
Equiv.range_eq_univ, Set.image_univ, Subtype.range_val, z.mem_toSet]
lemma Cardinal.ne_zero_of_aleph0_le {c} (h : Cardinal.aleph0 ≤ c) : c ≠ 0 := by
rintro rfl; exact Cardinal.aleph0_ne_zero (le_zero_iff.mp h)
lemma Cardinal.pow_mono_left (c : Cardinal) : Monotone fun x : Cardinal ↦ x ^ c := by
rintro ⟨x⟩ ⟨y⟩ le; rcases c with ⟨c⟩
exact ⟨_, le.some.injective.comp_left (α := c)⟩
theorem Cardinal.IsInaccessible.pow_le_of_lt {c κ : Cardinal} (h : κ.IsInaccessible)
(lt : c < κ) : κ ^ c ≤ κ := by
obtain ⟨c, rfl : Cardinal.mk _ = _⟩ := Quotient.mk_surjective c
rw [← κ.mk_ord_toType, power_def, ← mk_univ]
have : @Set.univ (c → κ.ord.toType) =
⋃ i : κ.ord.toType, Set.range fun f : c → Set.Iio i ↦ (↑) ∘ f := by
rw [eq_comm, Set.eq_univ_iff_forall]
intro f
rw [← h.2.1.cof_eq, ← κ.ord.type_toType] at lt
have ⟨i, hi⟩ := Ordinal.lt_cof_type (Cardinal.mk_range_le (f := f).trans_lt lt)
exact Set.mem_iUnion.mpr ⟨i, fun j ↦ ⟨f j, hi _ ⟨j, rfl⟩⟩, rfl⟩
rw [this]
refine (mk_iUnion_le _).trans ((mul_le_max _ _).trans ?_)
have := ne_zero_of_aleph0_le h.1.le
rw [← κ.mk_ord_toType] at this
have := mk_ne_zero_iff.mp this
simp_rw [sup_le_iff, ciSup_le_iff (bddAbove_range _), mk_ord_toType]
refine ⟨⟨le_rfl, fun i ↦ mk_range_le.trans ?_⟩, h.1.le⟩
rw [← power_def]
refine (pow_mono_left _ (cantor _).le).trans ?_
simp_rw [← power_mul]
refine (h.2.2.2 _ <| mul_lt_of_lt h.1.le (mk_Iio_ord_toType _) lt).le
theorem ZFSet.cardinalMk : Cardinal.mk ZFSet.{u} ≤ Cardinal.univ.{u, u+1} :=
(Cardinal.mk_le_of_surjective wTypeToZFSet_surjective).trans <| WType.cardinalMk_le_of_le' <| by
refine (Cardinal.sum_le_sum _ (fun _ ↦ Cardinal.univ.{u,u+1})
fun _ ↦ Cardinal.univ_inaccessible.pow_le_of_lt (Cardinal.lift_lt_univ _)).trans ?_
rw [Cardinal.sum_const', Cardinal.mul_eq_right Cardinal.univ_inaccessible.1.le
Cardinal.mk_cardinal.le]
rw [Cardinal.mk_cardinal]
exact Cardinal.ne_zero_of_aleph0_le Cardinal.univ_inaccessible.1.le
Junyan Xu (Dec 12 2024 at 02:30):
Have people thought about redefining docs#PSet and docs#SetTheory.PGame as WTypes?
Mario Carneiro (Dec 12 2024 at 02:31):
We generally prefer to make inductive
definitions over using generic combinators where possible
Mario Carneiro (Dec 12 2024 at 02:32):
Instead, I think it would be better to have a deriving handler for proving that inductive types are equivalent to W types along the lines of haskell's deriving Generic
Junyan Xu (Dec 12 2024 at 12:09):
It would also be nice to automate this file by automatically constructing the surjection from a WType to the algebraic substructure generated by a set. Situations like DivisionRings that don't have a universal object is not very common, but even when a univeral object exists (like MvPolynomial for Algebra), WType could be used to determine the cardinality of the universal object. In fact the cardinality of MvPolynomial was previously determined using WType, but later refactored through the cardinality of Finsupp.
Violeta Hernández (Dec 12 2024 at 13:32):
I'm annoyed by the lack of a ping in this thread :stuck_out_tongue:
Violeta Hernández (Dec 12 2024 at 13:34):
I think this more general result should be true: if α
is a well-founded codirected order such that ¬ Small.{u} α
but Small.{u} (Iio x)
for every x
, then α
is equinumerous with Cardinal.{u}
(and Ordinal.{u}
).
Floris van Doorn (Dec 12 2024 at 13:39):
Violeta Hernández said:
I'm annoyed by the lack of a ping in this thread :P
A trick I just learned today: in the Zulip webpage, you can go to [Gear] > Personal Settings > Alert Words and add something like ZFSet
if you want to be notified about any message about ZFSet (or any other word).
Violeta Hernández (Dec 12 2024 at 13:40):
I have ordinal and cardinal as alert words, and I can see them marked in orange, but it didn't notify me :frown:
Violeta Hernández (Dec 12 2024 at 13:50):
Junyan Xu said:
von Neumann hierarchy is #17027 but apparently nothing about cardinality yet ...
It's not too difficult to show V_ o
is a small set through well-founded induction, it should be a similar proof to docs#SetTheory.Game.small_setOf_birthday_lt. Once you have that, it's immediate that #ZFSet ≤ univ * univ = univ
.
Violeta Hernández (Dec 12 2024 at 13:50):
No need to get into inaccessibles or beth cardinals
Mario Carneiro (Dec 12 2024 at 13:51):
well, I suggested that proof in part because those are also theorems I want to have for independent reasons
Violeta Hernández (Dec 12 2024 at 13:51):
(Though, that lemma on inaccessibles seems useful, as well as ℵ_ x = ℶ_ x = x
for x
an inaccessible)
Mario Carneiro (Dec 12 2024 at 13:52):
wow, monospace beth looks terrible
Violeta Hernández (Dec 12 2024 at 13:52):
On a related note, it'd be nice to get #18239 merged since it's currently blocking the von Neumann PR
Junyan Xu (Dec 12 2024 at 13:54):
The lemma on inaccessibles should be broken into two: c < κ.ord.cof → κ ^ c = κ ^< c
and κ.IsStrongLimit → c < κ → κ ^< c ≤ κ
where ^<
is docs#Cardinal.powerlt.
Mario Carneiro (Dec 12 2024 at 13:55):
I think you also have κ ^< κ ≤ κ
?
Violeta Hernández (Dec 12 2024 at 13:56):
Here's how to prove ℶ_ x = x
for inaccessibles. Since beth is a strictly monotonic function on well-orders, x ≤ ℶ_ x
. For the other direction, it suffices to prove ℶ_ y < x
for y < x
. Use ordinal induction. The case y = 0
as well as the successor case are trivial. For the limit case, use that the supremum of less than x
cardinals less than x
is also less than x
.
Violeta Hernández (Dec 12 2024 at 13:57):
Then ℵ_ x = x
follows from x ≤ ℵ_ x
and ℵ_ x ≤ ℶ_ x = x
Violeta Hernández (Dec 12 2024 at 13:57):
(this proof sketch does some conflation of ordinals and cardinals but the point stands)
Mario Carneiro (Dec 12 2024 at 13:57):
the property ℶ_ x = x
is also true in more generality than inaccessibles
Mario Carneiro (Dec 12 2024 at 13:58):
although the most precise precondition is being a beth fixed point, which is...
Violeta Hernández (Dec 12 2024 at 13:58):
Yeah of course, beth is a normal function and every normal function has a proper class of fixed points
Violeta Hernández (Dec 12 2024 at 13:58):
Mario Carneiro (Dec 12 2024 at 13:59):
yeah but what I mean is that you don't need to assume the full strength of inaccessible cardinal-ness to prove that a cardinal is a beth fixed point
Junyan Xu (Dec 12 2024 at 13:59):
Junyan Xu said:
The lemma on inaccessibles should be broken into two:
c < κ.ord.cof → κ ^ c = κ ^< c
andκ.IsStrongLimit → c < κ → κ ^< c ≤ κ
where^<
is docs#Cardinal.powerlt.
Sorry, it seems powerlt is not the right concept here. I want the base to be less than something, not the exponent.
Mario Carneiro (Dec 12 2024 at 14:00):
Are you sure?
Mario Carneiro (Dec 12 2024 at 14:00):
note that things switch around when you use arrow notation vs exponent notation
Junyan Xu (Dec 12 2024 at 14:02):
Yeah, the base is the codomain. If the domain (exponent) has cardinality less than the cofinality of the base, then the image lies in some initial segment. That's how my proof works.
Mario Carneiro (Dec 12 2024 at 14:03):
right, which suggests you should be using powerlt
Mario Carneiro (Dec 12 2024 at 14:04):
the theorem Cardinal.IsInaccessible.pow_le_of_lt
you gave is equivalent to showing that if kappa is inaccessible then κ ^< κ ≤ κ
Mario Carneiro (Dec 12 2024 at 14:05):
because κ ^< κ
is the supremum of κ ^ c
for c < κ
Junyan Xu (Dec 12 2024 at 14:08):
That's true, but in my intended refactoring of the lemma, I think c < κ.ord.cof → κ ^ c = κ ^< c
is only true if ^<
is interpreted as power_baselt.
Violeta Hernández (Dec 12 2024 at 14:08):
Can you hold off on refactoring anything relating to cofinality for a month or two
Mario Carneiro (Dec 12 2024 at 14:09):
I don't think any such thing was proposed?
Mario Carneiro (Dec 12 2024 at 14:09):
Junyan Xu is talking about refactoring the proof written just above
Violeta Hernández (Dec 12 2024 at 14:09):
Oh sorry we're still talking about the not-in-Mathlib pow_le_of_lt
lemma
Mario Carneiro (Dec 12 2024 at 14:10):
Junyan Xu said:
That's true, but in my intended refactoring of the lemma, I think
c < κ.ord.cof → κ ^ c = κ ^< c
is only true if^<
is interpreted as power_baselt.
yeah I find this theorem suspicious
Mario Carneiro (Dec 12 2024 at 14:11):
I don't think you need it, as I pointed out you can just talk about κ ^< κ
and then κ ^ c
for c < κ
Mario Carneiro (Dec 12 2024 at 14:11):
and κ ^ κ
and κ ^< c
for c < κ
don't really come up
Junyan Xu (Dec 12 2024 at 14:15):
Okay. I'm in a lecture so I'll think about it later.
Has Violeta defined def Ordinal.vonNeumann : Ordinal.{u} ↪ ZFSet.{u}
somewhere? That would give the lower bound. I almost finished proving it's injective.
Violeta Hernández (Dec 12 2024 at 14:15):
Yep, in the PR you linked above
Violeta Hernández (Dec 12 2024 at 14:16):
I didn't prove it's an injection, but that should follow easily from a < b → V_ a ∈ V_ b
which I did prove
Violeta Hernández (Dec 12 2024 at 14:16):
Junyan Xu (Dec 12 2024 at 14:16):
I think it also follows from docs#ZFSet.mem_irrefl
Junyan Xu (Dec 12 2024 at 14:17):
This is my definition:
def Ordinal.vonNeumann : Ordinal.{u} ↪ ZFSet.{u} where
toFun := WellFoundedLT.fix fun o ih ↦
ZFSet.range fun x ↦ ih _ ((equivShrink <| Set.Iio o).symm x).2
inj' o' o eq := by
contrapose! eq
wlog lt : o' < o
· exact (this _ _ eq.symm <| (le_of_not_lt lt).lt_of_ne' eq).symm
conv_rhs => rw [WellFoundedLT.fix_eq]
intro h
sorry
Junyan Xu (Dec 12 2024 at 14:21):
Oh, I'm defining the vN ordinal while you're defining one level of the vN hierarchy ... but I think mem_irrefl still yields a proof?
Violeta Hernández (Dec 12 2024 at 14:21):
Oh oops wrong von Neumann
Violeta Hernández (Dec 12 2024 at 14:22):
I'm pretty sure I had that in a Lean 3 branch
Violeta Hernández (Dec 12 2024 at 14:23):
In any case it's my planned next PR after #17001 goes through
Violeta Hernández (Dec 12 2024 at 14:23):
(which reminds me, there really should be a bot notifying about merge conflicts)
Junyan Xu (Dec 12 2024 at 14:38):
I've been using the Arc browser lately; it has a "live folder" for pull requests and in my experience if a PR gains a merge conflict it will pop out of the folder (probably due to added label) so you sees it immediately, even when the folder is collapsed.
image.png
https://techcrunch.com/2024/04/11/arc-browsers-live-folders-will-auto-update-tabs-for-you/
Junyan Xu (Dec 12 2024 at 15:03):
Finished the equality:
import Mathlib
universe u
def wType := WType fun c : Cardinal.{u} ↦ c.out
def wTypeToPSet : wType.{u} → PSet.{u}
| WType.mk c f => PSet.mk c.out fun i ↦ wTypeToPSet (f i)
def wTypeToZFSet (x : wType.{u}) : ZFSet.{u} := .mk (wTypeToPSet x)
-- extract a statement about ∈ ZFSet.mk (PSet.mk _ _)
theorem mem_wTypeToZFSet_mk (s : ZFSet.{u}) (c f) :
s ∈ wTypeToZFSet (WType.mk c f) ↔ ∃ i : c.out, s = wTypeToZFSet (f i) := by
rcases s; congrm (∃ _, ?_); exact ZFSet.eq.symm
theorem wTypeToZFSet_surjective : Function.Surjective wTypeToZFSet :=
fun s ↦ s.inductionOn fun s ih ↦ by
choose ih ih_spec using ih
use WType.mk _ fun x ↦ ih _ ((Cardinal.outMkEquiv.trans (equivShrink s.toSet).symm) x).2
ext z
simp_rw [mem_wTypeToZFSet_mk, ih_spec, eq_comm (a := z), ← Set.mem_range, ← Subtype.val.comp_apply,
Set.range_comp, Equiv.range_eq_univ, Set.image_univ, Subtype.range_val, z.mem_toSet]
lemma Cardinal.ne_zero_of_aleph0_le {c} (h : Cardinal.aleph0 ≤ c) : c ≠ 0 := by
rintro rfl; exact Cardinal.aleph0_ne_zero (le_zero_iff.mp h)
lemma Cardinal.pow_mono_left (c : Cardinal) : Monotone fun x : Cardinal ↦ x ^ c := by
rintro ⟨x⟩ ⟨y⟩ ⟨_, inj⟩; rcases c; exact ⟨_, inj.comp_left⟩
-- break into c < κ.ord.cof → κ ^ c = κ <^ c. and κ.StrongLimit → c < κ → κ <^ c ≤ κ.
theorem Cardinal.IsInaccessible.pow_le_of_lt {c κ : Cardinal} (h : κ.IsInaccessible)
(lt : c < κ) : κ ^ c ≤ κ := by
obtain ⟨c, rfl : Cardinal.mk _ = _⟩ := Quotient.mk_surjective c
rw [← κ.mk_ord_toType, power_def, ← mk_univ]
have : @Set.univ (c → κ.ord.toType) =
⋃ i : κ.ord.toType, Set.range fun f : c → Set.Iio i ↦ (↑) ∘ f := by
rw [eq_comm, Set.eq_univ_iff_forall]
intro f
rw [← h.2.1.cof_eq, ← κ.ord.type_toType] at lt
have ⟨i, hi⟩ := Ordinal.lt_cof_type (Cardinal.mk_range_le (f := f).trans_lt lt)
exact Set.mem_iUnion.mpr ⟨i, fun j ↦ ⟨f j, hi _ ⟨j, rfl⟩⟩, rfl⟩
rw [this]
refine (mk_iUnion_le _).trans ((mul_le_max _ _).trans ?_)
have := ne_zero_of_aleph0_le h.1.le
rw [← κ.mk_ord_toType] at this
have := mk_ne_zero_iff.mp this
simp_rw [sup_le_iff, ciSup_le_iff (bddAbove_range _), mk_ord_toType]
refine ⟨⟨le_rfl, fun i ↦ mk_range_le.trans ?_⟩, h.1.le⟩
rw [← power_def]
refine (pow_mono_left _ (cantor _).le).trans ?_
simp_rw [← power_mul]
refine (h.2.2.2 _ <| mul_lt_of_lt h.1.le (mk_Iio_ord_toType _) lt).le
theorem ZFSet.cardinalMk_le_univ : Cardinal.mk ZFSet.{u} ≤ Cardinal.univ.{u, u+1} :=
(Cardinal.mk_le_of_surjective wTypeToZFSet_surjective).trans <| WType.cardinalMk_le_of_le' <| by
refine (Cardinal.sum_le_sum _ (fun _ ↦ Cardinal.univ.{u,u+1})
fun _ ↦ Cardinal.univ_inaccessible.pow_le_of_lt (Cardinal.lift_lt_univ _)).trans ?_
rw [Cardinal.sum_const', Cardinal.mul_eq_right Cardinal.univ_inaccessible.1.le
Cardinal.mk_cardinal.le]
rw [Cardinal.mk_cardinal]
exact Cardinal.ne_zero_of_aleph0_le Cardinal.univ_inaccessible.1.le
noncomputable def Ordinal.vonNeumann : Ordinal.{u} ↪ ZFSet.{u} where
toFun := WellFoundedLT.fix fun o ih ↦
ZFSet.range fun x ↦ ih _ ((equivShrink <| Set.Iio o).symm x).2
inj' o' o eq := by
contrapose! eq
wlog lt : o' < o
· exact (this _ _ eq.symm <| (le_of_not_lt lt).lt_of_ne' eq).symm
conv_rhs => rw [WellFoundedLT.fix_eq]
refine fun h ↦ ne_of_mem_of_not_mem' (ZFSet.mem_range.mpr ⟨equivShrink _ ⟨o', lt⟩, ?_⟩)
(ZFSet.mem_irrefl _) h.symm
dsimp only
rw [Equiv.symm_apply_apply]
theorem ZFSet.cardinalUniv_le_mk : Cardinal.univ.{u, u+1} ≤ Cardinal.mk ZFSet.{u} := by
rw [Cardinal.univ_id]
exact ⟨Ordinal.vonNeumann⟩
theorem ZFSet.cardinalMk : Cardinal.mk ZFSet.{u} = Cardinal.univ.{u, u+1} :=
cardinalMk_le_univ.antisymm cardinalUniv_le_mk
Junyan Xu (Dec 12 2024 at 15:04):
Regarding IsInaccessible.pow_le_of_lt
, I still think it should be broken into a lemma about IsRegular/cofinality and another about IsStrongLimit, and that seems to necessitate the introduction of a powerBaseLT operation. (or I guess I'll just write it as a supremum)
Violeta Hernández (Dec 12 2024 at 16:06):
Please don't introduce a powerBaseLT
operation
Violeta Hernández (Dec 12 2024 at 16:06):
I think powerlt
is already questionable enough as is
Violeta Hernández (Dec 12 2024 at 16:09):
Otherwise yeah I think splitting up the lemma would be an improvement
Junyan Xu (Dec 12 2024 at 23:51):
Violeta Hernández said:
It's not too difficult to show
V_ o
is a small set through well-founded induction, it should be a similar proof to docs#SetTheory.Game.small_setOf_birthday_lt. Once you have that, it's immediate that#ZFSet ≤ univ * univ = univ
.
Well we already know every ZFSet is small: docs#ZFSet.small_toSet.
Mario Carneiro said:
the property
ℶ_ x = x
is also true in more generality than inaccessibles
Is there a more general and easy-to-state condition that the proof of Inaccessible -> beth fixed point should factor through? (the same for aleph?)
Violeta Hernández (Dec 13 2024 at 13:19):
- Oh of course, I'm being silly. Being able to define
V_ o
as aZFSet
already makes it small. - I don't know any other nicer condition to factor through. There might be some random large cardinal condition that's weaker than inaccessibles but still implies it, but even if that were true it would probably just make the argument more complicated.
Violeta Hernández (Dec 13 2024 at 13:19):
Aleph/beth fixed points are not really notable once you're past the initial surprise of their existence
Mario Carneiro (Dec 13 2024 at 15:52):
Junyan Xu said:
Is there a more general and easy-to-state condition that the proof of Inaccessible -> beth fixed point should factor through? (the same for aleph?)
Possibly κ ^< κ = κ
Junyan Xu (Dec 13 2024 at 16:06):
If is infinite and GCH holds, then implies , so , so but doesn't have to be an alpha/beta fixed point.
Junyan Xu (Dec 13 2024 at 16:49):
Assume and is not of the form , then for all , we have , so , showing that is a strong limit. Using this result, we then know that ; since we assume for , we conclude that , i.e. is regular. So the condition is not more general than inaccessibility.
(I found the SE question when I was trying to prove for inaccessible .)
Nir Paz (Dec 13 2024 at 17:56):
I don't think there is a better condition but a simple proof is that if k
is a strong limit than it has the form ב_λ
for a limit λ
, and then if k
is regular then cof(k)=cof(λ)=k
.
Dexin Zhang (Dec 13 2024 at 18:13):
There is a more general result, when is inaccessible. Then the cardinality of ZFSet
comes from (V_ Cardinal.univ.{u}.ord).toSet ≃ ZFSet.{u}
.
Violeta Hernández (Dec 13 2024 at 18:14):
It's not much more general of a result, since for infinite
Junyan Xu (Dec 14 2024 at 16:17):
A much shorter proof built on top of #17027 is formalized here.
Junyan Xu (Dec 15 2024 at 13:21):
Floris van Doorn said:
A trick I just learned today: in the Zulip webpage, you can go to [Gear] > Personal Settings > Alert Words and add something like
ZFSet
if you want to be notified about any message about ZFSet (or any other word).
Is there a way to subscribe to certain accounts?
Jason Rute (Dec 16 2024 at 01:30):
Violeta Hernández said:
I have ordinal and cardinal as alert words, and I can see them marked in orange, but it didn't notify me :(
I get better notifications in the new beta zulip app. https://blog.zulip.com/2024/12/12/new-flutter-mobile-app-beta/
Violeta Hernández (Jan 15 2025 at 14:38):
I opened #20749 introducing the "pre-beth" function, i.e. beth starting from zero. I don't think this is a standard mathematical object, but it slightly simplifies some proofs about beth; more importantly, this satisfies #(V_ o) = preBeth o
for every ordinal o
, and I plan to prove this in a follow-up.
Last updated: May 02 2025 at 03:31 UTC