RFR: 8376223: Add modeling interfaces for algebraic structures: groups, rings, and fields

Kevin Bourrillion duke at openjdk.org
Fri Jan 23 21:17:14 UTC 2026


On Fri, 23 Jan 2026 19:50:49 GMT, Joe Darcy <darcy at openjdk.org> wrote:

> First cut at adding modeling interfaces for the algebraic structures of rings, groups, and fields.

Sorry for digression.

> Note 32-bit int arithmetic is a ring -- Integer.MIN_VALUE is its own additive inverse.

While I may not convince anyone all at once, I feel solidly that this is not the right way to think of this. int does not model Z_2^32 all that successfully. Looked at that way, it has no business having a division operator, or being comparable, etc. But more to the point, if we center *typical real-world* use cases in our minds, it should be clear that the "wraparound" behavior is a *failure* mode, where the representation is *failing* to model the intended value. (Cases where wraparound is actually *desired* by the user exist but are just too rare to focus on here.)

In general, it's muddying whenever we try to talk about whether a Java type "is" a ring/field/etc.. I'd suggest we can only speak fruitfully when we draw a clean distinction between (a) what values the type is trying to model and (b) what is its (almost always imperfect) *representation* for those values. As much as possible the result of an operation should still qualify as a decent representation of the correct result; but in overflow cases it just won't be.

-------------

PR Comment: https://git.openjdk.org/valhalla/pull/1957#issuecomment-3792479586


More information about the valhalla-dev mailing list