-
Notifications
You must be signed in to change notification settings - Fork 273
prop_conv_solvert: introduce scopes #4510
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
Conversation
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.
Looks OK. CI is failing, though.
Tests for prop_conv and smt2 would be required. |
e670983
to
412d755
Compare
3a8968d
to
7503418
Compare
This will need #4931 to work. |
introduce binding_exprt [blocks: #4510]
This needs #4992. |
cd1bb95
to
ba1dde8
Compare
ba1dde8
to
95da272
Compare
95da272
to
8b0b79b
Compare
Now all in one directory.
This removes the handling of let expressions from prop_conv_solvert to prevent duplicating this functionality in boolbvt.
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.
- See admin comments about what's being promised vs what is delivered below.
- Could
array_comprehension_exprt
please also make use of scopes?
This is the biggest change to the solver interface since it got added to the codebase. Currently, bound identifiers (exists, forall, let, lambda, array_comprehension_exprt) must be unique; the solver loses soundness if that assumption is violated. This change introduces scopes for let, i.e., the uniqueness requirement is dropped. Nested scoping works as expected. This matches what SMT-LIB does, i.e., the renaming done in the SMT-LIB front-end can be dropped.
There are many more expressions with scope (forall and exists in particular). Will deliver! |
This is the biggest change to the solver interface since it got added to the codebase.
Currently, bound identifiers (exists, forall, let) must be unique; the solver looses soundness if that assumption is violated.
This change introduces scopes, i.e., the uniqueness requirement is dropped. Nested scoping works as expected. This matches what SMT-LIB does, i.e., the renaming done in the SMT-LIB front-end can be dropped.