ciao-lang / ciao

Ciao is a modern Prolog implementation that builds up from a logic-based simple kernel designed to be portable, extensible, and modular.
https://ciao-lang.org
GNU Lesser General Public License v3.0
272 stars 21 forks source link

subsumes_term/2 incorrect #84

Open UWN opened 1 year ago

UWN commented 1 year ago

(using Playground)

?- subsumes_term(X, f(X)).
{ERROR: No handle found for thrown exception error(existence_error(procedure,'user:subsumes_term'/2),'user:subsumes_term'/2)}
% unexpected

aborted
?- use_module(library(terms_check),[subsumes_term/2]).
Note: module terms_check already in executable, just made visible
yes % should not be necessary 
?- subsumes_term(f(X,Y), f(Z,Z)).

yes
?- subsumes_term(f(Z,Z), f(X,Y)).

no
?- subsumes_term(g(X), g(f(X))).

yes, unexpected.
?- subsumes_term(X, f(X)).

yes, unexpected.

Note that the definition of subsumes_term/2 has two conditions a and b. Cor.2 since 2012-02-15, reported as #32 2016-10-26.