Skip to content

register make_laterable as modality

Ralf Jung requested to merge ralf/make_laterable into master

Upamanyu (student at MIT) started looking into make_laterable, which made me realize that it might be worth properly registering this as a modality so we can do iModIntro. However, it turns out the old definition of make_laterable is not suited for that: it does not satisfy the lemma

  Lemma make_laterable_intro' Q :
    Laterable Q 
    Q -∗ make_laterable Q.

So, when doing iModIntro on a make_laterable, we couldn't just keep all Laterable things in the context -- we would additionally get an extra in front of each of them. To fix that I slightly changed the definition of make_laterable; most existing laws still hold (or become stronger), with one exception: there's now a in

  Lemma make_laterable_elim Q :
    make_laterable Q -∗  Q.

Still, I think the fact that make_laterable_intro' now holds shows that this is the better definition. Logically atomic triples (the only in-tree user of all this) are unaffected by this change, their API surface remains the same.

I also changed make_laterable_wand to a less surprising statement:

  Lemma make_laterable_wand Q1 Q2 :
    make_laterable (Q1 -∗ Q2) -∗ (make_laterable Q1 -∗ make_laterable Q2).

Sadly, for non-affine BIs, this does not imply the old way of stating that lemma, so that lemma also has to be kept around (under a new name):

  Lemma make_laterable_intuitionistic_wand Q1 Q2 :
     (Q1 -∗ Q2) -∗ (make_laterable Q1 -∗ make_laterable Q2).

So, overall I'd say this MR makes make_laterable much more well-behaved and better integrated into the IPM for affine BIs. Figuring out something reasonable for non-affine BIs remains future work.

When there are non-laterable things in the context, iModIntro will add a in front of them to make them laterable. The same approach is now also used by iAuIntro, though that requires a hack since we cannot actually use idModIntro on make_laterable here.

Future plans: #424

Edited by Ralf Jung

Merge request reports