Undefined Predicates

By default, calling an undefined predicate is considered to be an error unless that predicate is known to be dynamic (see bas-run-dpr for an explanation of dynamic predicates). For example,

     | ?- f(x).
     ! Existence error in f/1
     ! procedure user:f/1 does not exist
     ! goal:  f(x)
     

You can change this behavior to make undefined predicates fail quietly by means of the built-in predicate unknown/2. There is also a facility, which allows you to have a predicate of your own called whenever an undefined predicate is called: see unknown_predicate_handler/3.