We represent logical implications as rules. For example, the logical assertion that
can be represented by the forward-chaining rule :
Intuitively, such a rule says that whenever we learn a relation (spouse f g) we should immediately conclude (spouse g f). Such forward-chaining (``if-added'' ) rules are generally used to maintain invariants in the knowledge-base.
Algernon also allows backward-chaining (``if-needed'' ) rules. For example,
Intuitively, this rule says that if you need to find an aunt of John then you should look for a parent of John, and then a sister of that parent. Notice that the antecedent of this rule is an access path. All rules in Algernon must define access paths. Thus the implication:
is not allowed since the only way to ``fire'' this rule would be to search globally for all frames in the knowledge-base that have a sister relation with other frames.
The backward-chaining rule (1) represents the content of the logical implication
but with the added knowledge (or restriction) that the implication should only be used to satisfy a query of aunt(John,y).