When a rule creates an object that depends on a specific set of preconditions, it is sometimes necessary to erase that object when those preconditions no longer hold. This is an example of truth maintenance .
KnowledgeWorks provides a mechanism to track logical dependencies between objects and preconditions which cause any dependent objects to be erased automatically. This is achieved using a
logical clause in a forward chaining rule, with a precondition of the form
The enclosed forward conditions in this clause are matched as normal, but if the rule fires and creates new objects (by
make-instance) then these objects are associated with the enclosed conditions. If the conditions are found to be false in the future, then the created objects are erased automatically (see erase).
NB: There can be at most one
logical clause in a rule (though it can contain multiple subclauses) and it must be the first clause in the rule. Other clauses can follow the logical clause, but they are not part of the logical dependency.
KnowledgeWorks and Prolog User Guide (Macintosh version) - 26 Feb 2015