Skip to content
GitLab
Projects Groups Snippets
  • /
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in / Register
  • Iris Iris
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 171
    • Issues 171
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 15
    • Merge requests 15
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Releases
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Repository
  • Wiki
    • Wiki
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • Iris
  • IrisIris
  • Merge requests
  • !636

register make_laterable as modality

  • Review changes

  • Download
  • Email patches
  • Plain diff
Merged Ralf Jung requested to merge ralf/make_laterable into master Feb 12, 2021
  • Overview 33
  • Commits 10
  • Pipelines 13
  • Changes 8

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 Jun 17, 2021 by Ralf Jung
Assignee
Assign to
Reviewers
Request review from
Time tracking
Source branch: ralf/make_laterable