-
Notifications
You must be signed in to change notification settings - Fork 62
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
Error: Uninterpreted constant used at incompatible types #597
Comments
I should also point out that this problem does not occur when you put an explicit lambda there instead of a defined constant. But then you run into issue #569 after the prover (rightly) finds a counterexample.
|
Here's another variation: The
But if the predicate's arguments are tuples, then we get the same error that we got above with function arguments.
This is surprising because first-order argument types should be translated as symbolic variables in SBV, not as uninterpreted functions. |
The what4 backend also has a similar problem. Here it appears that it is also trying to translate tuple-typed arguments as uninterpreted functions (which it shouldn't). Furthermore, producing an uninterpreted function fails when the name starts with an underscore.
|
When you use
prove
with a predicate that is not an explicit lambda, it invents names for the arguments, which all happen to be a single underscore "_". Then, since those arguments have function types, the proof backend turns them into uninterpreted functions. The problem is that the functions have the same name but different types, which causes the error in SBV.If we use the same type for each, then SBV doesn't throw an error, but it does confuse the two arguments and the proof succeeds when it shouldn't:
The text was updated successfully, but these errors were encountered: