The Department of Computer Science & Engineering
SNePS main page

SNePS 2.6.1 Release Notes

  1. Previously, the functions + and & took only two arguments. Now they can take zero or more.

  2. The function show has been added. It uses the dot graph-drawing program to produce a graphical version of parts of a SNePS network. The dot program, which is part of Graphviz, must be downloaded separately from AT&T Labs-Research.

  3. Previously, if you created a node with a name consisting of all lower-case letters, or with a name whose first letter was upper case and whose subsequent letters were lower case, then any node name with different case conventions would be recognized as that earlier node. Now case is preserved just as it is in ACL version 6.

  1. Previously, if one set *infertrace* to nil in SNePSLOG, and then got into lisp and back into SNePSLOG, *infertrace* was reset to :surface. Now, that won't happen.

  2. Previously, an SNePSUL command could not be used as a SNePSLOG individual constant. That has been fixed.

  3. There was a bug in the SNePSLOG generator when using Mode 2. That has been fixed.

  4. SNePSLOG commands activate and activate! have been added. activate builds a term or wff and performs forward inference on all asserted propositions that dominate it. activate! builds a wff, asserts it, and performs forward inference on it and on all asserted propositions that dominate it. Both activate and activate! use the SNePSUL command activate, which was available since SNePS 2.5.

  5. SNePSLOG commands ask, askifnot, askwh, and askwhnot have been added. They each take a wff as argument and do backward inference on it. Then ask prints the inferred positive instances of wff, askifnot prints the inferred negative instances of wff, askwh prints the individuals in inferred positive instances that are substituted for the free variables in wff, and askwhnot prints the individuals in inferred negative instances that are substituted for the free variables in wff.

  1. Previously if, during inference, it was discovered that the wrong number of argument-propositons in an and-or or a thresh were asserted or their negations were asserted, the undefined function stop was called. Now, sneps-error is called instead.

    In the future, this situation should trigger SNeBR.

  2. A function sneps:negate.n has been added. Now, when the negation of a proposition is entered by the user or inferred by the system, the first applicable of the following transformations is made:
    • ~~P --> P
    • ~andor(0, j){P1, ..., Pn} --> andor(j+1, n){P1, ..., Pn}
    • ~andor(i, n){P1, ..., Pn} --> andor(0, i-1){P1, ..., Pn}
    • ~andor(i, j){P1, ..., Pn} --> thresh(i, j){P1, ..., Pn}
    • ~thresh(i, j){P1, ..., Pn} --> andor(i, j){P1, ..., Pn}
    • ~P --> andor(0, 0){P}
    We refer to the results of this transformation as the canonicalized negation of P.

  3. Any attempt to build the negation of a belief P, results in the canonicalized negation of P.

  4. Any attempt to build an and-entailment with only one antecedent, instead builds an or-entailment.

  5. Previously, SNIP would not backchain through an explicit negation. For example, the following inference would not be done:
    all(x)(andor(1,1){eatsgrass(x), predator(x)}).
    all(x)(~predator(x) => prey(x)).
    That has now been fixed.

  1. Previously, it occasionally happened that a hypothesis was also recorded as having been derived from itself. That has been fixed.

  2. SNeBR recognizes the canonicalized negations of beliefs.

  1. The believe act has been enhanced. Previously, if believe was performed on some proposition, P, and andor(0,0){P}, was asserted, it would be disbelieved first. Now, the following are checked:
    1. If any negation of P, as determined by sneps:negate.n (see above), is asserted, it is disbelieved.

    2. If andor(i,1){P, Q, ...} and Q are asserted (for any i), Q is disbelieved.

  2. An snsequence that specified one act to be performed repeatedly, only did it once. Now, it is done repeatedly correctly.

  3. Previously when believe was performed on a non-hypothesis, an error resulted, but no error message was issued. Now a clear message is issued, and an error is not raised.

  4. Previously, when no plan was found to achieve some goal, a bad DEAD END error message was issued. Now that error message is clearer.

  5. The sneps-error error message was improved.

Last modified: Tue Sep 15 10:51:37 EDT 2009
Stuart C. Shapiro <>