Zulip Chat Archive
Stream: combinatorial-games
Topic: Hessenberg operations
Violeta Hernández (Jul 26 2025 at 20:34):
There's some work regarding Hessenberg (natural) operations on ordinals that I never was able to get into Mathlib. I'm wondering if it might be worth putting it in this repo instead.
Violeta Hernández (Jul 26 2025 at 20:36):
The main results I'm interested in are:
w^x # w^y = w^x + w^yfory < xw^(x # y) = w^x ⨳ w^y
Violeta Hernández (Jul 26 2025 at 20:37):
These essentially formalize the concept that natural addition is equivalent to adding up Cantor Normal Forms term by term, and that natural multiplication is equivalent to multiplying Cantor Normal Forms as polynomials.
Violeta Hernández (Jul 26 2025 at 20:40):
I do have somewhat of a general design question. Should we be defining natural operations as belonging in Ordinal, or do we keep them to NatOrdinal?
Violeta Hernández (Jul 26 2025 at 20:44):
I think the latter should be better. It does require us to use more casts to write down results, but in return we don't have to transfer all of the order/ring theorems fromNatOrdinal back to Ordinal
Violeta Hernández (Aug 11 2025 at 15:36):
We have about 150 boilerplate lines of code to set up the type aliases docs#NatOrdinal and docs#Nimber, which are basically identical save for replacing the word NatOrdinal with Nimber.
Violeta Hernández (Aug 11 2025 at 15:37):
Would it be feasible/make sense/be nice to turn these into a single macro, and put it in some other file?
Violeta Hernández (Aug 11 2025 at 15:38):
It'd be nice if we could simply write #ordinal_alias NatOrdinal or whatnot and be done with that.
Violeta Hernández (Aug 11 2025 at 15:42):
If nothing else it'd keep those two aliases in sync
Violeta Hernández (Aug 11 2025 at 16:46):
Actually, what do you think about renaming Ordinal.toNatOrdinal → NatOrdinal.of and NatOrdinal.toOrdinal → NatOrdinal.val?
Violeta Hernández (Aug 11 2025 at 16:48):
Not only does it make writing the macro much easier, but it also should make a lot of theorem names much shorter.
Violeta Hernández (Aug 11 2025 at 17:17):
#186 for the rename and #188 for the macro
Violeta Hernández (Aug 11 2025 at 21:01):
Ok I have a more mathematical question now
Violeta Hernández (Aug 11 2025 at 21:03):
As I mentioned earlier, base w exponentiation interacts nicely with natural operations, as you have w^(x # y) = w^x ⨳ w^y
Violeta Hernández (Aug 11 2025 at 21:04):
In fact this identity still holds if you replace w by any finite ordinal, or by any additively principal ordinal.
Violeta Hernández (Aug 11 2025 at 21:05):
But it doesn't work in general, as e.g. (w + 1)^(1 # 1) = w^2 + w + 1 ≠ w^2 + w * 2 + 1 = (w + 1) ⨳ (w + 1).
Violeta Hernández (Aug 11 2025 at 21:08):
Which means that we can't really define exponentiation on NatOrdinal as just exponentiation on Ordinal and expect it to work
Violeta Hernández (Aug 11 2025 at 21:08):
Now, here's my idea
Violeta Hernández (Aug 11 2025 at 21:08):
What if we defined exponentiation on NatOrdinal through transfinite recursion?
Violeta Hernández (Aug 11 2025 at 21:10):
Specifically, x^0 = 1, x^(y + 1) = x^y ⨳ x, and for limit ordinals, take limits
Aaron Liu (Aug 11 2025 at 21:11):
I think if you do that you just get regular ordinal exponentiation
Violeta Hernández (Aug 11 2025 at 21:11):
Nope
Violeta Hernández (Aug 11 2025 at 21:11):
The (w + 1)^2 example is different
Aaron Liu (Aug 11 2025 at 21:11):
oh wait you're using the natural product
Violeta Hernández (Aug 11 2025 at 21:11):
Yeah
Aaron Liu (Aug 11 2025 at 21:11):
yeah that's different
Violeta Hernández (Aug 11 2025 at 21:11):
This natural exponentiation should be the same as ordinal exponentiation for finite bases and base w
Violeta Hernández (Aug 11 2025 at 21:12):
My conjecture is that this exponentiation satisfies x^(y # z) = x^y ⨳ x^z always
Aaron Liu (Aug 11 2025 at 21:12):
so here's my thoughts
Junyan Xu (Aug 11 2025 at 21:14):
image.png
image.png
Has this paper https://arxiv.org/abs/1501.05747 been discussed before?
Junyan Xu (Aug 11 2025 at 21:15):
maybe you've defined the super-Jacobsthal exponentiation?
Violeta Hernández (Aug 11 2025 at 21:16):
Oh yeah Theorem 3.2 is exactly what I wanted
Aaron Liu (Aug 11 2025 at 21:18):
regular addition x + y is the order type of x ⊕ₗ y (lexographic order)
natural addition x # y can be defined as the largest ordinal admitting a monotone surjection from x ⊕ y (disjoint union order)
regular multiplication x * y is the order type of y ×ₗ x (lexographic order)
natural multiplication x ⨳ y can be defined as the largest ordinal admitting a monotone surjection from y × x (pointwise order)
regular exponentiation x ^ y is the order type of Lex (y →₀ x) (lexographic order)
what properties does "the largest ordinal admitting a monotone surjection from y →₀ x (pointwise order)" satisfy?
Aaron Liu (Aug 11 2025 at 21:21):
is this one of the operations in that table shown above?
Violeta Hernández (Aug 11 2025 at 21:22):
Actually x * y is the order type of y × x because Cantor really wanted normality on the right argument
Aaron Liu (Aug 11 2025 at 21:23):
oh whoops
Aaron Liu (Aug 11 2025 at 21:23):
yeah that tracks
Violeta Hernández (Aug 11 2025 at 21:28):
This is a great question though
Violeta Hernández (Aug 11 2025 at 21:33):
Since 2 -> x with the pointwise order is order isomorphic to x × x with the pointwise order, this agrees with the natural product
Aaron Liu (Aug 11 2025 at 21:36):
does this only depend on the cardinality of y?
Aaron Liu (Aug 11 2025 at 21:37):
I think you can permute y however you want
Aaron Liu (Aug 11 2025 at 21:38):
I guess this is actually taking an ordinal to a cardinal power, since the order type of y doesn't actually matter
Aaron Liu (Aug 11 2025 at 21:41):
hmmmm
Aaron Liu (Aug 11 2025 at 21:42):
the coproduct in the category of preorders is the disjoint sum
the product in the category of preorders is the pointwise cartesian product
maybe what we actually want here is the internal hom in the category of preorders???
Aaron Liu (Aug 11 2025 at 21:42):
that would be the monotone functions y →o x, with the pointwise order
Aaron Liu (Aug 11 2025 at 21:43):
and then take the largest ordinal admitting a monotone surjection
Aaron Liu (Aug 11 2025 at 21:44):
this gives you an order which actually depends on the order in y
Violeta Hernández (Aug 11 2025 at 23:08):
Hi sorry I'm back
Aaron Liu (Aug 11 2025 at 23:36):
welcome back
Violeta Hernández (Aug 11 2025 at 23:55):
Yeah you're right this is a cardinal exponentiation
Violeta Hernández (Aug 11 2025 at 23:55):
Restricting to monotone functions wouldn't work
Violeta Hernández (Aug 11 2025 at 23:56):
Or rather you'd get something where m^n isn't even equal to natural number exponentiation for finite m, n
Aaron Liu (Aug 11 2025 at 23:59):
so do we just use super-jacobsthal exponentiation?
Violeta Hernández (Aug 11 2025 at 23:59):
I think it's by far the best choice
Violeta Hernández (Aug 12 2025 at 00:00):
We can then prove
a^(b + c) = a^b * a^cof (w^a) = (of w)^aof (w^a) + of (w^b) = of (w^a + w^b)forb ≤ a
Violeta Hernández (Aug 12 2025 at 00:00):
These three results combined prove that natural addition/multiplication is indeed the sum and product of CNFs as polynomials
Violeta Hernández (Aug 12 2025 at 00:01):
(though it's probably more of a chore to prove and use that result verbatim than to just use these results instead)
Violeta Hernández (Aug 18 2025 at 07:39):
I have a proof of the third bullet point in an old Mathlib branch. I could revive it.
Violeta Hernández (Aug 18 2025 at 07:40):
I don't know proofs for 1 and 2, but I imagine they're a "follow your gut" argument
Violeta Hernández (Aug 18 2025 at 07:47):
Oh yeah, 1 is pretty easy. If c is a successor, then a^(b + c + 1) = a^(b + c) * a = a^b * a^(c + 1) by induction. Likewise for b. So suppose both are limits.
Violeta Hernández (Aug 18 2025 at 07:47):
Then you can prove that every ordinal less than a^(b + c) is less than a^b * a^c, and viceversa.
Violeta Hernández (Aug 18 2025 at 08:10):
Specifically, if x < a^(b + c), then x < a^(b' + c) for some b' < b, meaning x < a^b' * a^c < a^b * a^c, or analogously with c.
Violeta Hernández (Aug 18 2025 at 08:12):
And if x < a^b * a^c, then x + y * z < a^b * y + a^c * z for some y < a^b and c < a^z, meaning x < a^b' * a^c + a^b * a^c' for some b' < b, c' < c, and thus x < a^(max (b' + c) (b + c') + 1) < a^(b + c).
Violeta Hernández (Sep 09 2025 at 12:33):
I recently tried to define super-jacobsthal exponentiation. I was able to prove that a^(b + c) = a^b * a^c. But generally this just wasn't very useful in proving results about w^x.
Violeta Hernández (Sep 09 2025 at 12:33):
There isn't really any application of this exponentiatial to game theory (it doesn't even match surreal exponentiation). So I'm split on whether we could formalize it for its own sake, or whether it's better to just not.
Violeta Hernández (Sep 09 2025 at 12:34):
Leaning towards the latter, because there's a lot of these intermediate operations on ordinals and they just aren't relevant to what we're doing
Aaron Liu (Sep 09 2025 at 13:03):
Violeta Hernández said:
There isn't really any application of this exponentiatial to game theory (it doesn't even match surreal exponentiation).
What is surreal exponentiation?
Violeta Hernández (Sep 09 2025 at 13:05):
exp(a * ln(b))
Violeta Hernández (Sep 09 2025 at 13:06):
Where the exponential is Gonshor's exponential and the logarithm is its inverse
Violeta Hernández (Sep 11 2025 at 15:28):
Actually, here's an idea
Violeta Hernández (Sep 11 2025 at 15:28):
What if we overload the ω^ notation for NatOrdinal?
Violeta Hernández (Sep 11 2025 at 15:30):
That's probably the easiest way to talk about ω-exponentiation in NatOrdinal
Violeta Hernández (Sep 11 2025 at 15:30):
That way we don't have to constantly write of (ω ^ x.val), nor do we have to define any other kinds of exponentiation
Aaron Liu (Sep 11 2025 at 15:41):
which exponential is this
Violeta Hernández (Sep 11 2025 at 15:42):
My proposal is doing the following:
noncomputable instance : Wpow NatOrdinal where
wpow x := of (ω ^ x.val)
Violeta Hernández (Sep 11 2025 at 15:42):
Where Wpow is our custom notation typeclass that we currently use on IGame and Surreal
Aaron Liu (Sep 11 2025 at 15:45):
this is copying exponentiation from Ordinal (but only with base ω)?
Violeta Hernández (Sep 11 2025 at 15:45):
Yes
Violeta Hernández (Sep 11 2025 at 15:45):
ω-exponentation on NatOrdinal is much better behaved than exponentiation in general
Violeta Hernández (Sep 11 2025 at 15:45):
So I think it's fine to special-case it
Aaron Liu (Sep 11 2025 at 15:48):
what's the use case for this
Violeta Hernández (Sep 11 2025 at 15:48):
Proving the characterization of natural operations
Violeta Hernández (Sep 11 2025 at 15:49):
Natural addition is adding the base-ω Cantor normal forms, natural multiplication is multiplying them as polynomials
Violeta Hernández (Sep 11 2025 at 15:49):
I don't think we need to prove these results verbatim
Violeta Hernández (Sep 11 2025 at 15:49):
The same way I don't think we need to prove "nimber addition is XORing the base 2 CNFs"
Violeta Hernández (Sep 11 2025 at 15:50):
But we should prove the results that lead to this
Violeta Hernández (Sep 11 2025 at 15:51):
Which are:
a ≤ b → ω^ b * n + ω^ a = of (ω ^ b.val * n + ω ^ a.val)ω^ (a + b) = ω^ a * ω^ b
Violeta Hernández (Sep 11 2025 at 15:51):
The first of these is actually needed to prove ω-exponentiation on Surreal matches that of NatOrdinal
Aaron Liu (Sep 11 2025 at 15:52):
seems fine enough
Aaron Liu (Sep 11 2025 at 15:52):
I don't disapprove
Violeta Hernández (Sep 11 2025 at 21:39):
Violeta Hernández (Sep 11 2025 at 21:40):
I prove both of these results, and use them to show the ω-map on NatOrdinal coincides with that of Surreal
Kevin Buzzard (Sep 12 2025 at 10:29):
Violeta Hernández said:
Do you not have a fancy linky thing like FLT#123 ? You should ask for one! Decide on what string you want before the # and my guess is that someone will sort it out.
Aaron Liu (Sep 12 2025 at 10:30):
vihdzp/combinatorial-games#240
Aaron Liu (Sep 12 2025 at 10:30):
It works
Violeta Hernández (Sep 12 2025 at 12:44):
Can we get a custom CGT#123 string? Much easier to write down.
Aaron Liu (Sep 12 2025 at 13:04):
that would definitely be better
Kevin Buzzard (Sep 12 2025 at 13:08):
Violeta Hernández said:
Can we get a custom CGT#123 string? Much easier to write down.
My guess is "yes but you have to ping the right person and this person is almost certainly not subscribed to this channel". Try asking in #general or something?
Violeta Hernández (Sep 12 2025 at 19:59):
Violeta Hernández (Sep 12 2025 at 19:59):
It works!
Violeta Hernández (Sep 13 2025 at 18:05):
(deleted)
Violeta Hernández (Sep 15 2025 at 03:04):
Violeta Hernández (Sep 15 2025 at 03:04):
There we go
Last updated: Dec 20 2025 at 21:32 UTC