-
Notifications
You must be signed in to change notification settings - Fork 52
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
RobSubstitution::match is unsound #445
Comments
Interesting. That's a good point to reimplement the function I guess, because it's quite long and messy. |
Awesome, thanks @joe-hauns ! If you don't get to it lmk and I'll do something (if only assert and crash), this seems quite critical to fix otherwise it will trip somebody up in future. |
If we are re-implementing, we may want to consider introducing the same Line 319 in e979a7e
Line 362 in e979a7e
Why we have so many different matching routines is another topic for discussion! |
@joe-hauns does #508 fix this, perhaps? |
Just discovered an unsoundness in
RobSubstitution::match
vampire/Kernel/RobSubstitution.cpp
Line 470 in e979a7e
Function claims to successfully matc term
f(g(x), x)
withf(g(x),g(x))
when of course they are not matchable. To see this, please insert the following unit test intotUnificationWithAbstraction
and see the result:The issue is caused by the code ignoring pairs of terms with the same content. This is unsound when it comes to matching.
The text was updated successfully, but these errors were encountered: