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

Simplifications of consecutive Load and Store #66

Open
didriklundberg opened this issue May 23, 2019 · 1 comment
Open

Simplifications of consecutive Load and Store #66

didriklundberg opened this issue May 23, 2019 · 1 comment

Comments

@didriklundberg
Copy link
Member

When generating weakest preconditions for programs containing many BExp_Loads and BExp_Stores - meaning any programs which uses the stack and not only purely registers - the multiple memory updates cause an explosion of the WP size (increasingly so for larger bit sizes).

Memory is something that must eventually be handled in an efficient manner. Therefore we must be able to simplify this to a tractable size and smart format for the final proving step.

@totorigolo
Copy link
Member

One simple optimization would be to use FUPDATE_EQ, but only works with non simplified WP (i.e. too late). For simplified WP, I guess that something along those lines can be proved:

∀mem0 addr val1 val2.
  (mem1 = store (mem0, addr, val1)) /\ (mem2 = store (mem1, addr, val2))
  ==>
  (store (mem0, addr, val2) = mem2)

Is this what you had in mind?

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

No branches or pull requests

2 participants