-
Notifications
You must be signed in to change notification settings - Fork 64
Some additional SMTLib2.6 support #139
Comments
If you can provide an example (as per stp/stp#365), then I can also take a look at implementing it for Boolector as well. However, things are currently in-flux for Boolector in favour of Aina/Mathias's new solver (Bitwuzla). I am not sure they're taking feature PRs against Boolector before Bitwuzla comes out (later this year). |
The following example uses |
I’m (genuinely) happy to take a look at this; I just need to wait on my second paragraph (the work is worthless for you if it is unlikely to get merged). |
No problem, this isn't urgent for me, I just wanted to be sure I got a test case in the ticket before I forgot. |
I already looked into adding support for (reset-assertions) a while ago and it's not that easy to add because of Boolector's current architecture. @robdockins is there a specific reason why you use (reset-assertions) + global-declarations instead of push/pop? |
The most ordinary use case does use push/pop because that's what makes the most sense when you are working "locally" according to the control-flow of a program. However, sometimes you want to break focus on one area and transition to a different focus. The easiest way to do this is to reset the solver state and establish a new context by pushing fresh frames and asserting new path conditions. I could do that by manually popping all the currently pushed frames, and being careful never to assert anything at top level... but it's more bookeeping and would be a code path specific to solvers that don't support In short, there's other workarounds, but I prefer to use the most direct methods when possible, especially if those methods can be generic across as many solvers as possible. It helps to prevent subtle solver-specific bugs |
We may be able to add support for the |
Currently, my workaround is to just At any rate, |
An initial push works, but doing this by default hurts performance. We could however add an option to enable this behavior, what do you think @robdockins . |
If such an option existed, I'd probably use it. When using the incremental mode, I'm usually deep inside a stack of frames anyway. |
Boolector is not actively maintained and developed anymore. It was succeeded by Bitwuzla and the repository is now archived. |
It would be convenient for some use cases I have if boolector supported the
get-info
andreset-assertions
commands from SMTLib2.6 (cf http://smtlib.cs.uiowa.edu/papers/smt-lib-reference-v2.6-r2017-07-18.pdf)The text was updated successfully, but these errors were encountered: