Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

veric/superprecise.v #603

Open
andrew-appel opened this issue Jul 15, 2022 · 0 comments
Open

veric/superprecise.v #603

andrew-appel opened this issue Jul 15, 2022 · 0 comments

Comments

@andrew-appel
Copy link
Collaborator

In veric/superprecise.v there are several ill-maintained lemmas that are now Aborted or commented-out. They relate to the superprecise property of an mpred, which is a stronger version of the standard separation-logic notion of precise. Once upon a time, superprecise was used in several ways in proving programs correct in Verifiable C, but now it seems no longer to be needed. (For example, even though many of those lemmas are commented out or Aborted, nobody complains.)

The difficulty in proving those lemmas arises if a val can have more than one representation in memory as a sequence of memvals. That could happen for two reasons:

  1. Defining address_mapsto using decode_val instead of encode_val, see issue Define address_mapsto by encode_val instead of decode_val? #602
  2. Vfloat or Vsingle could have nonunique representations as bit patterns.

I am not sure that reason 2 is real. That is, at one time I thought that a float val could have more than one flocq bit pattern, but I don't believe it now. And reason 1 might be resolved if issue #602 is resolved in favor of encode_val. Come to think of it, if it's true that Vfloat can have multiple representations, then that's why issue #602 must be resolved as "cannot use encode_val".

So therefore, to resolve this issue:
. Wait until issue #602 is resolved one way or the other. If "keep using decode_val", then simply close this issue with the remark that Fragment will inevitably mean that these predicates are not superprecise.
. Decide whether it's worth keeping the notion of superprecise and the proofs that several mpreds are superprecise; maybe it's not useful for anything. If not useful, delete veric/superprecise.v and close this issue.
. Otherwise, prove these lemmas.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant