-
Notifications
You must be signed in to change notification settings - Fork 44
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
Use set variables for \ceil simplification rules? #729
Comments
I think the frontend doesn't currently support a variable name to start with @dwightguth what do you think? does this seem reasonable? would it be easier to add support for set variables directly in the K Frontend parser? |
This is one of only a few issues blocking our progress on the KEVM single-opcode proofs, and it seems relatively simple, so I would like to prioritize it for the next iteration. |
There is another way we could handle this in the backend which I want to consider. If we have a symbol
The backend could produce the defined-argument conditions |
@ehildenb The EVM opcode proofs which are affected by this are:
|
In the frontend's
domains.k
, we define simplification rules such as:This causes an error in the backend in contexts where one of the arguments of
/Int
or%Int
may, itself, be undefined, for example in the expression(X /Int Y) /Int Z
. Applying one of these simplification rules generates a remainder because we cannot unconditionally unifyI1:Int
withX /Int Y
, which may not be defined. The backend throws an error when simplification rules produce a remainder (and rightly so).I would propose that we express these simplification rules using set variables,
which is more verbose, but does not create any remainders. @traiansf, you have worked on our set variables support in the past; can the frontend support something like this? Or, can you suggest another way to handle this problem?
The text was updated successfully, but these errors were encountered: