-
Notifications
You must be signed in to change notification settings - Fork 10
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
Filtering does not terminate on a small set of unifiers. #11
Comments
Sorry for the long delay in responding. Your example is quite subtle and I wanted a second opinion. Santiago Escobar sescobar@upv.es provided me with the following analysis: This theory is not AC-coherent, since the term “s(s(0)) + s(0) + (0 * s(0))” cannot be reduced to “s(s(0)) + s(0)”. Note that you should use “get variants” instead of “reduce”. The problem is not the Y variable in the inner position but the outermost plus symbol. eq [sub] : (X * Y) + X + Z = X + Z [variant] . but then it does not have the finite variant property anymore. The variant unify command does not terminate. However, there is a fix for the theory if you have a non-empty sort for Stk. fmod SUB-STACK is Now all commands finish and the filtered version returns only one most general unifier. So despite the lack of AC-coherence, your example should have terminated and exposes a rather subtle bug in the variant subsumption algorithm which never terminates. I plan to fix it in a future public alpha release. May I use your example in the Maude test suite? Steven Eker |
Thank you very much for the detailed response, this is quite interesting and I appreciate the time that you all took to look at my example. Feel free to use the example in your test suite. |
I've fixed the bug in Alpha152 and added your example to the test suite as |
Using Maude 3.3.1 on Ubuntu 20.04 and an Intel processor, I'm loading Maude with a file containing the following:
Running
variant unify in SUB-STACK : R:Stk =? S:Stk + T:Stk .
provides a set of 5 unifiers as expected. However, adding thefiltered
keywordfiltered variant unify in SUB-STACK : R:Stk =? S:Stk + T:Stk .
does not terminate. I am wondering if this is a bug, or maybe because the rules I'm working with have poor properties.Curiously, a slightly more complicated example
filtered variant unify in SUB-STACK : R:Stk * mk(0) =? S:Stk + T:Stk .
terminates quickly with 2 unifiers.Thanks in advance.
The text was updated successfully, but these errors were encountered: