Changing the Direction of a Rule


Direction is a value attached to every assertion which determines whether inferencing involving the assertion is done at assert time or at ask time. There are two possible values for direction: :forward (inferencing done at assert time) and :backward (inferencing done at ask time).

Any Cyc formula which begins with #$implies (a rule) defaults to direction :backward. All other assertions default to direction :forward.

[Change Direction] may be used to change the direction of an assertion. When you click [Change Direction], it prompts for the new direction. When you click the "Change Direction" button, the interface queues the operations to unassert the old assertion and reassert it with the new direction.

The most common reason to change the direction of an assertion is to make a rule :forward. When a rule is :backward, it is only considered when the KB is queried with backward inference allowed. But when a rule is made :forward, inference is immediately performed to draw conclusions based on that rule and relevant GAFs in the KB. Whenever forward assertions are made, forward rules are tested to see if they are applicable.

Backward GAFs are exactly analogous to backward rules: they are not used in forward inference. So if you change the direction of some GAF to:backward, it will not be considered at the time of any subsequent assertions, only during queries which allow backward inference. This is currently rare in the Cyc KB, but it can be used in cases where the cyclist wishes to suppress forward inference in particular cases.