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
Polymorphism and Z3 not playing nicely #453
Comments
Defaulting to minisat sounds like a good step whilst we find a more long-term solution. The alternative is the sat_fallback_for_smt option, which runs minisat alongside z3 and falls back to minisat if z3 ever fails... but if we know it's definitely going to fail then that doesn't sound very useful. |
I looked at this code not so long ago in #300 - there we partially handle it if the "polymorphism" is actually just an indexed family of monomorphic functions. This looks like it's more involved though. Seems to me that the thing to do would be to keep the mechanism in #300 and either:
|
Just to note, that even with the fix #455 in place, we still receive an error when carrying out the above run command. However, the error is totally different (see below). It is linked to the interaction between polymorphism and UWA. As the UWA implementation is set to totally change, I am not going to fix this now.
|
To clarify #455 has nothing to do with this issue. On further investigation, this issue is caused by current UWA implementation incorrectly creating constraints between sorts. As UWA implementation is set to change, I don't propose to fix now, but will leave this issue open so that we can revisit once new UWA implementation goes in. |
As pointed out by Andrei on slack:
I guess this is unsurprising, because Z3 has no support for polymorphism. We need to decide how best to handle the combination of AVATAR using Z3 as solver and polymorphism. Or should we only use minisat if we detect polymorphism?
The text was updated successfully, but these errors were encountered: