There are five main controlled-retrieval forms, summarized as follows:
One use of :forc is to guarantee that certain slots always hold some value. For example, one might express ``Every car has a steering wheel.'' as:
(:rules cars ((steering-wheel ?c ?w) <- (:forc ?w (steering-wheel ?c ?w))))Care must be taken with such rules, however, as they can easily cause infinite loops (e.g., ``Every man has a father'') -- see [Crawford, 90].
It is used for definite descriptions, when a referring phrase is presumed to designate a unique entity.