The Department of Computer Science & Engineering
SNePS main page

SNePS 2.7.1 Release Notes

The following is a list of changes in SNePS version 2.7.1. Only changes that are visible to the SNePS user are listed.
SNePS 2.7.1 also includes some additional improvements.
  1. The command (beliefs-about {nodeset}* context-specifier) has been added. It returns a set of all the nodes, asserted in the given context, that dominate the nodes described by the nodesets.

  1. In SNePS 2.7.0, an attempt to use the &=>-Introduction rule caused a Lisp error. That has been fixed, and &=>-Introduction works in SnePS 2.7.1.
  2. In SNePS 2.7.0, the v=>-Introduction rule did not work. Moreover, the v=>-Introduction rule, as documented in the SNePS 2.7 User's Manual is incorrect. In SnePS 2.7.1, the v=>-Introduction rule works as long as there is only a single antecedent. The v=>-Introduction rule for multiple antecedents is not yet implemented.
  3. In certain circumstances, activate and activate! caused an error. That has been fixed.
  4. The snepslogCommand beliefs-about pTermSet [.] has been added. It returns a set of all the asserted wffs that dominate the terms described by pTermSet.
  5. The function (nl-tell string) has been added. It may be called from the top-level Lisp listener in the snepslog package. Assuming that a lexicon and GATN grammar have been loaded, nl-tell passes string to the parser, and returns a string containing whatever the parser returns.
  6. Linebreaks may occur in input to the SNePSLOG reader, but if the input looks like it might end prematurely, the character "\" (without the quotation marks) may be placed before the end-of-line to indicate that the input continues on the next line. For example, the wff p() => q(). may end just before the => if and only if the line with p() ends with a "\". This is also very useful in a define-frame commane if you want to put the documentation string on the next line. Previously, this was an undocumented feature, but "-" was used instead of "\", which caused problems if a linebreak occurred in a path just after a converse relation, like subclass-.
  7. SNePSLOG now allows the use of and, or, nand, nor, xor, and iff, each followed by a termSet. For example, all(x)(Entity(x) => xor{Animal(x), Vegetable(x), Mineral(x)}).

  1. In certain circumstances, activate caused an error. That has been fixed.
  2. See the note about &=>-Introduction under SNePSLOG, above.
  3. See the note about v=>-Introduction under SNePSLOG, above.

  1. Restriction sets in node supports and in contexts have been eliminated in favor of a global set of minimal nogoods. A minimal nogood is a set of hypotheses that is known to be inconsistent, such that no subset of it is known to be inconsistent.

  1. Consider the following knowledge base:
    : andor(1,1){aheadIs(wall), aheadIs(corridor)}.
      wff3!:  andor(1,1){aheadIs(corridor),aheadIs(wall)}    
    : andor(1,1){holding(person), holding(noOne)}.
      wff6!:  andor(1,1){holding(noOne),holding(person)}    
    : holding(noOne).
      wff5!:  holding(noOne)    
    : aheadIs(corridor).
      wff2!:  aheadIs(corridor)    
    Now, ask a question whose answer looks like a state constraint.
    : (holding(noOne) and aheadIs(wall))?
      wff9!:  andor(0,1){holding(noOne),aheadIs(wall)}  {<der,{wff2,wff3},{}>}  
    If we now do
    : perform believe(aheadIs(wall))
    In SNePS 2.7.0, holding(noOne) will no longer be asserted, even though wff9 will no longer be asserted once wff2 is disbelieved. This is fixed in SNePS 2.7.1.

Last modified: Thu Apr 29 08:58:50 2010
Stuart C. Shapiro <>