Why doesn't X-0 match with 20?

34 Views Asked by At

I have the following fact in my knowledge base: distance(c2, c5, 20, 1).

But when I try to query distance(c2, c5, X-0, 1), (or any other number instead of 0), this returns false. Why is that? Shouldn't X just bind to 20 since 20-0=20?

enter image description here

1

There are 1 best solutions below

3
brebs On BEST ANSWER

Prolog interprets that as a term with functor name dash and arity 2 - evidence:

?- Term = X-0, Term = -(X, 0), functor(Term, Name, Arity).
Term = X-0,
Name = (-),
Arity = 2.

Use e.g. is for arithmetic:

?- X = 5, Y is X - 0.
X = Y, Y = 5.

?- X = 5, Y is X-0.
X = Y, Y = 5.