-
Notifications
You must be signed in to change notification settings - Fork 277
SMT2 parser: use hash tables instead of if() ... else... #5143
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
0b4db94
to
4ce9a7e
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.
This PR failed Diffblue compatibility checks (cbmc commit: 0b4db94).
Build URL: https://travis-ci.com/diffblue/test-gen/builds/130035567
Status will be re-evaluated on next push.
Common spurious failures include: the cbmc commit has disappeared in the mean time (e.g. in a force-push); the author is not in the list of contributors (e.g. first-time contributors); compatibility was already broken by an earlier merge.
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.
✔️
Passed Diffblue compatibility checks (cbmc commit: 4ce9a7e).
Build URL: https://travis-ci.com/diffblue/test-gen/builds/130040813
4ce9a7e
to
2f7c9fb
Compare
Codecov Report
@@ Coverage Diff @@
## develop #5143 +/- ##
==========================================
+ Coverage 67.08% 67.1% +0.01%
==========================================
Files 1149 1149
Lines 94035 94073 +38
==========================================
+ Hits 63086 63123 +37
- Misses 30949 30950 +1
Continue to review full report at Codecov.
|
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.
✔️
Passed Diffblue compatibility checks (cbmc commit: 2f7c9fb).
Build URL: https://travis-ci.com/diffblue/test-gen/builds/130524976
This doesn't allow declaration of variables that have the same names as variables in function signatures, which would be allowed by SMT. e.g.,
|
This refactors the SMT2 parser to use hash tables instead of chains of if()...else if()... for commands. This enables extensions, and may have a performance benefit as the number of commands grows.
This refactors the SMT2 parser to use hash tables instead of chains of if()...else if()... for sorts. This enables extensions, and may have a performance benefit as the number of sorts grows.
This refactors the SMT2 parser to use hash tables instead of chains of if()...else if()... for expressions. This enables extensions, and may have a performance benefit as the number of expressions grows.
2f7c9fb
to
a8aa594
Compare
Indeed; will make that a separate PR! |
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.
✔️
Passed Diffblue compatibility checks (cbmc commit: a8aa594).
Build URL: https://travis-ci.com/diffblue/test-gen/builds/130873673
SMT-LIB2 function definitions have scopes for the identifiers of the parameters. This was raised in #5143.
I think the lack of local variable tracking may also affect let expressions |
Another failing case. Needs to expand function applications:
This invariant fails because the procedure isn't implemented for function_applications
|
SMT-LIB2 function definitions have scopes for the identifiers of the parameters. The same holds for let expressions. This was raised in #5143.
Indeed, added a test for that. |
The problem here is that we don't have an integer solver. The example works on bit-vectors. |
SMT-LIB2 function definitions have scopes for the identifiers of the parameters. The same holds for let expressions. This was raised in #5143. The need to make the scoped identifiers unique will be removed once the IR bindings have scopes.
SMT-LIB2 function definitions have scopes for the identifiers of the parameters. The same holds for let expressions. This was raised in #5143. The need to make the scoped identifiers unique will be removed once the IR bindings have scopes.
This refactors the SMT2 parser to use hash tables instead of chains of
if()...else if()...
for commands, sorts and expressions.This enables extensions, and may have a performance benefit as the number of commands/expressions/sorts grows.