sCASP
sCASP copied to clipboard
Unexpected bahaviour with respect to "more than one" predicate
Take the following sCASP specification where g is saying roughly that f holds for more than one value of its first argument in any context (value of the second argument of f):
f(a,c).
f(b,d).
equal(a,a).
equal(b,b).
g(A) :- f(A,_), f(B,_), not equal(A,B).
Unexpectedly sCASP happily finds a model for both g(a) and not g(a). Is this due to a misunderstanding on my side or is this considered a bug?
See https://swish.swi-prolog.org/p/strange.pl
Modifying the program to make f unary the behaviour is not observable.
f(a).
f(b).
equal(a,a).
equal(b,b).
g(A) :- f(A), f(B), not equal(A,B).
In the ciao version of sCASP the same behaviour can not be observed. So it sais that not g(a) is not provable in both versions.