Remember that a query foo(X) is really asking something akin to whether (in predicate logic) X foo(X). How do we ask X foo(X)? The answer, for situations where there are (obviously) a finite set of solutions is to use one of two special built-in predicates.