A.12.1 The defdetpred form

The syntax of this form is

(defdetpred < name > < num args > < body >)

which defines a simple predicate that just runs lisp code and doesn't have to unify any variables. Arguments are referenced with: (special-arg <argnum> ) . The body succeeds by default, but if a failure case arises, use: (detpred-fail <name> <num args> ) .

For example

(defdetpred my-integer 1
  (unless (integerp (special-arg 0))
  (detpred-fail my-integer 1)))

KnowledgeWorks and Prolog User Guide (Windows version) - 11 Jul 2006