Defines a new conflict resolution tactic named
tactic-name
. The
type
of the tactic may be
:static
if the body does not look into the slots of the objects making up the instantiation, otherwise
:dynamic
. The
lambda-list
binds to two instantiation objects and the function body
body
should return non-nil if and only if the first instantiation object is preferred to the second.
deftactic
also defines a function of the same and
body
can be preceded by a documentation string.
The newly defined tactic may be used as any in-built tactic.
(deftactic prefer-trucks :static (inst1 inst2)
(flet ((truck-p (obj) (typep obj 'truck)))
(and (some #'truck-p (inst-token inst1))
(notany #'truck-p (inst-token inst2)))))
The new tactic may be used in a
defcontext
form:
(defcontext my-context :strategy (prefer-trucks))
KnowledgeWorks and Prolog User Guide (Unix version) - 6 Dec 2011