Zulip Chat Archive
Stream: maths
Topic: Cardinal.lift as an InitialSeg
Violeta Hernández (Sep 17 2024 at 21:23):
In #16347, I make docs#Cardinal.lift an docs#InitialSeg. This is a structure that sees little use in the current API, but I believe doing this has a lot of advantages. I'll paraphrase what I said in that PR.
Most crucially, being an initial segment embedding from Cardinal.{u}
into Cardinal.{max u v}
is precisely the property that characterizes lift
, as it essentially encodes the mathematical intuition that one is "just a subset of the other". As such, most of the order properties of lift
, such as docs#Cardinal.lift_lt, docs#Cardinal.lift_succ, docs#Cardinal.lift_iSup, as well as some others like docs#Cardinal.lift_lift and the (to be added) Cardinal.lift_aleph
, all follow from this initial segment structure (even if most of these lemmas are still missing in that generality).
The only cons I can see for this change is that dot notation breaks (in exactly two lines of code, mind you), and that the InitialSeg
structure might be unfamiliar to people using the API (though conversely, using the structure more should alleviate that).
Violeta Hernández (Sep 17 2024 at 21:24):
@Yaël Dillies
Violeta Hernández (Sep 17 2024 at 21:25):
To be clear, if this refactor goes through, I also plan on doing the same with docs#Ordinal.lift
Eric Wieser (Sep 19 2024 at 00:36):
A pattern sometimes used here is to keep foo
around as the simp-normal form, but introduce a fooHom
(or here, fooInitialSeg`) to use when building proofs of those theorems
Violeta Hernández (Sep 19 2024 at 00:38):
I think that pattern is successful when the bundled structure isn't something you necessarily care about, or when it's hard to build it up all at once. I'm arguing this is not one of those cases.
Eric Wieser (Sep 19 2024 at 09:27):
Often the reason for preferring that pattern is "there are multiple incompatible bundlings possible, so to avoid having to pick a preferred one we prefer the unbundled spelling"
Violeta Hernández (Sep 19 2024 at 09:50):
I do admit there's one other possible bundling that makes sense, which is a ring homomorphism
Violeta Hernández (Sep 19 2024 at 22:02):
Or, when the target universe is strictly larger, a principal segment embedding
Violeta Hernández (Sep 19 2024 at 22:09):
Alright, maybe it does make sense to have the unbundled version separate
Violeta Hernández (Sep 19 2024 at 22:23):
Should it just be called Cardinal.lift.initialSeg
?
Eric Wieser (Sep 19 2024 at 22:30):
liftInitialSeg
is slightly more common
Violeta Hernández (Sep 20 2024 at 01:03):
I should note docs#Ordinal.lift.initialSeg exists
Violeta Hernández (Sep 20 2024 at 01:03):
Should that be renamed at some point?
Violeta Hernández (Sep 20 2024 at 08:44):
Also, here's another question: what about docs#Ordinal.typein ?
Violeta Hernández (Sep 20 2024 at 08:45):
I think that has a much stronger case for being made into a PrincipalSeg
Violeta Hernández (Sep 20 2024 at 08:49):
There is no other reasonable structure to give it. No one is using dot notation with this. And also, we didn't have any problem with making docs#Ordinal.enum into a RelIso
a month or so ago.
Eric Wieser (Sep 20 2024 at 09:57):
Violeta Hernández said:
I should note docs#Ordinal.lift.initialSeg exists
In that case being locally consistent is fine.
Last updated: May 02 2025 at 03:31 UTC