-
Notifications
You must be signed in to change notification settings - Fork 76
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
Yices 2 default solver despite being 'optional' #165
Comments
I think it would be best to change the default solver from Yices to either Boolector or to Bitwuzla, and to make that a required dependency. For the vast majority of cases I've seen, they are faster than Yices and much faster than z3. According to the git history, the default in smtbmc was switched from z3 to yices around 5 years ago. I presume that was for performance reasons and the choice fell to Yices as Boolector became open-source only later (IIRC) and Bitwuzla is a more recent Boolector fork. Boolector and Bitwuzla do not support We could also add z3 as an automatic fallback in smtbmc when I'm not sure whether such an automated fallback for |
Why is z3 even non-optional, is that just a holdover from when it was the default or is it used somewhere else? If anything I think yices should be non-optional currently as that's what's used to generate the VCD for any engine that doesn't have native VCD generation. And yes, I agree that we should probably change that to boolector for performance reasons. I wouldn't do automatic fallback, maybe print a message instead. But can we even tell within sby what the design contains? |
z3 is just a holdover, it's only non-optional in that the installation guide still says so. We can check for allconst/allseq because |
Using smtbmc will default to Yices 2 (an optional solver) as opposed to z3 (a required solver). If Yices 2 is not installed any code using smtbmc will fail rather than trying with the available solver(s).
The text was updated successfully, but these errors were encountered: