2

I'm trying to understand the statement and I can't find any thing about the -1/4 at the the end of the object term. I've tried searching but I'm not even sure what to search for.

exists(A,object(B,A,apple,countable,na,eq,1)-1/4).
false
  • 10,264
  • 13
  • 101
  • 209
  • That term is equivalent to `exists(A, '-'(object(B,A,apple,countable,na,eq,1), '/'(1,4)))`. – lurker Jul 14 '17 at 10:46

1 Answers1

4

The second argument of exists/2 are two terms in pair notation. One term being object(_A,A,apple,countable,na,eq,1) and the other being the 1/4. You can see this if you try the following query:

   ?- exists(A,X-Y).
X = object(_A,A,apple,countable,na,eq,1),
Y = 1/4

And since the second term is an arithmetic expression, you can evaluate it using is/2:

   ?- exists(A,X-Y), Z is Y.
X = object(_A,A,apple,countable,na,eq,1),
Y = 1/4,
Z = 0.25

The functor (-)/2 is often used to denote pairs. As pointed out by @lurker in the comments, the canonical form is -(X,Y) but since (-)/2 is defined as an infix operator in Prolog, both notations are equivalent. To see that consider the following query:

   ?- X-Y = -(X,Y).

true
tas
  • 8,100
  • 3
  • 14
  • 22