The Department of Computer Science & Engineering
SNePS main page

SNePS 2.8 Release Notes

The following is a list of changes in SNePS version 2.8. Only changes that are visible to the SNePS user are listed.
SNePS 2.8 also includes some additional improvements.
  1. SNePS can now be compiled by Armed Bear Common Lisp (ABCL), which produces Java bytecode.

  2. Nodes whose identifiers are not readable by Lisp as symbols (e.g. numbers and identifiers with spaces in them) are now printed with escape brackets.

  3. When typing nodes, a user may use the escape character and escape brackets.

  1. In version 2.7.1, if an atomic symbol (individual constant, function symbol, etc.) began with a substring that matched any of the following: and, or, nand, nor, xor, iff, andor, thresh, or nexists
    it would be misparsed, or an error would result. For example, instanceOf(north, direction) would be parsed as instanceOf(~th, direction).
    That has now been fixed. However, now none of these connectives may immediately be followed by a blank, but must immediately be followed either by "{" or "(", whichever is appropriate.

  2. tell has been given optional format arguments. So instead of evaluating
    (tell (format nil "~A(~A)." 'Dog 'Fido))
    you may now do
    (tell "~A(~A)." 'Dog 'Fido)

  3. The character "!" is now optional at the end of a wffname. If the "!" is not the terminal character of the wffNameCommand (that is, is not the final character of the SNePSLOG command), it will be ignored.

  4. The macro (foreachsub variables subs &body forms) has been added to the tell/ask interface. For each substitution in subs, foreachsub evaluates the forms in forms with the variables in variables taking on the values specified by that substitution. This is particularly useful for processing the values returned by (askwh ...) or by (tell `askwh...').

  5. Individual constants whose identifiers are not readable by Lisp as symbols (e.g. numbers and strings with spaces in them) are now printed with escape brackets.

  6. The SNePSLOG parser can read individual constants containing the escape character and escape brackets.

  7. The show command now displays molecular nodes using their wff names.

  8. The attempt to assert a negated, universally quantified andor or thresh, such as ~(all(x)(B(a,x) <=> x)) previously caused an error. This has been fixed.

  1. Before if p(a) were an hypothesis of the current context, and p(a) |- r(a), then p(a)=>r(a) would not be inferred because SNIP didn't think that p(a) was introduced in the hypothetical context. That has now been fixed.

  1. SNeBR has been greatly improved. Previously, SNeBR performed manual nonprioritized belief revision in most cases, and automatic prioritized belief revision when a new belief was added by the believe act, but then only with direct contradictions between hypotheses. Now, the user can independently specify prioritized vs. nonprioritized and manual (now called "assisted") vs. automatic belief revision, and derived contradictions triggered by believe are recognized and handled. The user can also specify what epistemic entrenchment ordering function the system is to use during automatic belief revision. Several such ordering functions are supplied, and the user can define others. For the details, see Chapter 8 of the User's Manual.


Last modified: Tue Oct 21 13:50:56 2014
Stuart C. Shapiro <>