next up previous contents index
Next: Universal Quantification Up: Special Forms Previous: Controlled Retrieval

Negation and Non-Monotonic Reasoning

(:neq  term1 term2)
Succeeds iff NOT term1 = term2. :neq is equivalent to (:lisp (not (eql 'term1 'term2))).

(:fail  form tex2html_wrap_inline1480 )
(:unp  form tex2html_wrap_inline1480 )
Unprovable. Succeeds exactly when a query of its path (i.e., form tex2html_wrap_inline1480 ) fails. :unp is used primarily in default rules. For example:
(:rules Birds
 ((flies ?x True) <- (:unp (not (flies ?x True)))
                     (:assume (normal ?x Birds flies))))
(:assume is discussed below). :unp is a non-monotonic form and to use it successfully you will probably have to understand something of the internals of how Algernon does inference (see section 2.3).

(:assume  predicate)
Adds predicate to the knowledge-base as an assumption. Assumptions differ from facts in two ways. First, an attempt is made to prove the negation of the predicate, and if this attempt succeeds, the :assume fails. Second, any future conclusion which depends on the assumption is tagged with the assumption, so that if the assumption is later withdrawn the conclusion is also withdrawn.

Micheal S. Hewett
Tue Oct 29 11:15:33 CST 1996