Zulip Chat Archive

Stream: maths

Topic: Defining initial ordinals


Pedro Sánchez Terraf (Feb 17 2023 at 14:43):

As part of #17972 defining the Borel hierarchy, I had included a definition of the first uncountable ordinal ω₁. But after a short discussion during the PR process, we came to the realization that it would be better to have a general definition of the inital ordinals instead. This would supersede the definition of the former.

So, my proposal for implementing this definition is the following:

  • Redefine ordinal.omega as a function,

    noncomputable def omega (x : ordinal.{u}) : ordinal.{u} := (aleph x).ord
    
  • If it is required for consistency, also define the corresponding omega' using docs#cardinal.aleph'.

@Violeta Hernández suggested that the original docs#ordinal.omega could be renamed to omega_0, in analogy to ℵ₀; I would add setting up omega_1 for omega 1 (notation: ω₁) since it is very fundamental—I wish it was possible to have subscript arguments, is it? (@Junyan Xu thinks it's not, perphaps in Lean 4? Adding an underscore to the notation, then?).

I'm not sure if theorem names involving ..._omega need to be renamed to ..._omega_0, if older occurrences of ASCII omega are consistently be replaced by ω.

As suggested during the review, this proposal would be part of separare PR.

What are your thoughts?

Reid Barton (Feb 17 2023 at 14:46):

I would suggest leaving omega alone, and adding a new name for the new thing

Reid Barton (Feb 17 2023 at 14:48):

Also, not sure this is a good idea, but this does actually work...

Pedro Sánchez Terraf (Feb 17 2023 at 15:01):

Reid Barton said:

I would suggest leaving omega alone, and adding a new name for the new thing

Well, it seems that ordinal.initial is available (not that I like it very much :sweat_smile:). I'll think of alternatives, but I'm open to suggestions.

Yaël Dillies (Feb 17 2023 at 15:03):

Pedro Sánchez Terraf said:

I'm not sure if theorem names involving ..._omega need to be renamed to ..._omega_0, if older occurrences of ASCII omega are consistently be replaced by ω.

In fact, this already happened to docs#cardinal.aleph_0, so I see no reason to not do the same here.

Reid Barton (Feb 17 2023 at 15:06):

The difference is one writes 0\aleph_0, but never ω0\omega_0.

Pedro Sánchez Terraf (Feb 17 2023 at 15:11):

Reid Barton said:

The difference is one writes 0\aleph_0, but never ω0\omega_0.

You are right, though the notation appears in some ancient books. Also, people outside set theory seldom writes ω\omega :smile:, at least in that sense

Violeta Hernández (Feb 17 2023 at 22:09):

I think that, in the face of inconsistent math conventions, we do have the power to bend things a little for our own convenience

Violeta Hernández (Feb 17 2023 at 22:09):

I'm an omega_0 supporter

Reid Barton (Feb 20 2023 at 06:36):

I don't think consistency is a great argument. Because now instead of "everyone calls it ω\omega", we would have "everyone calls it ω\omega, except mathlib that calls it ω0\omega_0".

Pedro Sánchez Terraf (Feb 27 2023 at 19:03):

Thanks for the feedback. Change of plans then:

  • Leave omega alone (sic);
  • Define initial i as the ith initial ordinal (zero-based, as aleph):

    namespace ordinal
    noncomputable def initial (x : ordinal.{u}) : ordinal.{u} := (aleph x).ord
    end ordinal
    
  • Actually, the ii-th initial ordinal is denoted by ωi\omega_i in the literature, so I came up with:

    localized "notation (name := ordinal.initial) `ω_` := ordinal.initial" in ordinal
    

    somehow indicating a subscript. E.g.

    open_locale ordinal
    example : ω_ 0 = ω := by {unfold initial, simp}
    

Is the last bullet reasonable? (Is there a way to omit the space, as in ω_0?)

Reid Barton (Feb 27 2023 at 19:20):

I don't know if it is possible to make it work without the space but I think it would be sort of confusing anyways (given that ω_0 is a perfectly valid identifier).

Violeta Hernández (Feb 28 2023 at 05:18):

Reid Barton said:

I don't think consistency is a great argument. Because now instead of "everyone calls it ω\omega", we would have "everyone calls it ω\omega, except mathlib that calls it ω0\omega_0".

I'm arguing for internal consistency, not consistency with the literature.

Violeta Hernández (Feb 28 2023 at 05:20):

I don't believe omega_0 should be all that contentious. We have omega_α for every other ordinal α, after all.

Violeta Hernández (Feb 28 2023 at 05:21):

But initial is a fine compromise.

Pedro Sánchez Terraf (Mar 06 2023 at 20:16):

Violeta Hernández said:

But initial is a fine compromise.

What should I do now? A different approach to what I suggested during my old PR review is to PR just this, wait for it to be merged, and then git merge master borel_hierarchy to update my branch with this change.

Is this reasonable?


Last updated: Dec 20 2023 at 11:08 UTC