Zulip Chat Archive
Stream: iris-lean
Topic: Why are sForall and sExists defined the way they are?
Markus de Medeiros (Mar 30 2025 at 11:42):
Anyone have any clue why sForall
and sExists
in BIBase
are defined like
sForall : (PROP → Prop) → PROP
sExists : (PROP → Prop) → PROP
instead of the way it's done in König's thesis as well as Rocq Iris?
sForall {A} : (A → PROP) → PROP
sExists {A} : (A → PROP) → PROP
Mario Carneiro (Mar 30 2025 at 11:55):
The reason for this is because the type of {A}
there is hidden and important
Mario Carneiro (Mar 30 2025 at 11:56):
it's {A : Type u}
, and it causes a universe bump in BIBase and also restricts the usage of forall to that particular type universe
Mario Carneiro (Mar 30 2025 at 11:56):
this is actually a problem in iris as well, it's just more well hidden there because of the use of template universe polymorphism
Mario Carneiro (Mar 30 2025 at 11:57):
by using sets instead and defining indexed forall in terms of set forall, it's possible to get the best of both worlds: no universe bump and you can index over types in any universe, even larger than the BIBase itself
Mario Carneiro (Mar 30 2025 at 11:59):
We have analogous difficulties when defining complete lattices in mathlib
Markus de Medeiros (Mar 30 2025 at 12:00):
Okay, cool. Am I understanding correctly that the "set" in the "set forall" is analogous to image of the function in the "Rocq forall"?
Mario Carneiro (Mar 30 2025 at 12:00):
yes
Last updated: May 02 2025 at 03:31 UTC