-
Notifications
You must be signed in to change notification settings - Fork 33
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
WIP: Simplify preprocess #242
base: next
Are you sure you want to change the base?
Conversation
fbe009b
to
5715299
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
A few things seem strange to me in this PR. Most of them I wrote in comments, but from a more global point of view:
- the expression simplifier is somewhat modular, but only with respect to booleans, which is a specialization that I find weird. I'd much prefer if arithmetic simplification would be done modularly, by the arithmetic theory, etc...
- the definitions of values is very (too much) specific, and actually incorrect with respect to the arbitrary precision integers that alt-ergo should be able to handle
Indeed, the simplifyer now uses Zarith in place of floats.
You are right, I didn't took time to use theories for solving constant expressions as the preprocess was initially design to be fully agnostic. I extended the signature of theory to include arithmetic solving. We could export the type |
9894b52
to
8ea095d
Compare
934bedf
to
306d432
Compare
306d432
to
c8da33a
Compare
3b4255d
to
16bb313
Compare
93beaa3
to
8cc7afa
Compare
cced136
to
c3055eb
Compare
The preprocessing of a formula sometimes allow Alt-Ergo to discard useless patterns (especially on ite where the condition is trivial).
Three options are included in this PR:
-simplify [y|n]
activates (disactivates) the prepreocessing-simplify-th
activates the use the theory in the simplification