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