[SMT-LIB] SMTLIB resources - tutorial, Java tool, API, and Eclipse plug-in

cok@frontiernet.net cok at frontiernet.net
Mon Jan 3 09:38:31 EST 2011


SMT-LIB community:

I'd like to (pre-)announce a number of SMT-LIB resources.
These are available from http://www.grammatech.com/resources/smt 
[see the DISCLAIMER below].
In particular, feedback and comments are highly welcome.  These
are all early versions and will be corrected and modified based
on input received.

1) A tutorial - at the request of the SMT-LIB authors, I've written a
   tutorial on SMT-LIB v.2, with examples and a more informal, explanatory
   style than the formal reference manual.
STATUS: The first complete draft is out for comment; a revision will be
   issued once comments are received.  You are welcome to add your comments
   to those I have directly solicited. If you would find this useful to your
   students (particularly, perhaps, with the Eclipse plug-in below), I would
   be very interested in some collaboration.

2) jSMTLIB.jar - This Java (Java 1.6) software package includes the
following capabilities [If you absolutely need Java 1.5 support, let me know]:
  a) an application that parses and type-checks SMT-LIB scripts (from files,
     direct user input, or through a network port)
  b) a Java API for programmatically creating and working with SMT-LIB scripts
     (and designed to be extensible - able to add commands, new concrete syntax,
     new back-end adapters, additional logics and theories, eventually new
     expression syntax)
  c) adapters that connect SMT-LIB to the input languages of some
     SMT solvers that do not (yet) (completely) conform to SMT-LIBv2
     (in particular, so far, Simplify 1.5.4, Yices 1.0.28, CVC3 2.2, Z3 2.11
      on Cygwin/Windows)
STATUS: the package is available: (2.a) is documented and tested; the documentation
    for (2.b) is in progress; the implementations for (2.c) exist as early alpha
    versions but are not yet complete. 

    I'd welcome interaction with individuals interested in using the API; the API
    is at present directed toward providing OpenJML a connection to SMT solvers
    through SMT-LIBv2, but its design would benefit from having other applications
    as well. (OpenJML is an implementation of JML tools, in particular ESC/Java2,
    built on OpenJDK - contact me if you are interested in that separate activity.)

3) A user guide for jSMTLIB.jar
STATUS: Available and documents the jSMTLIB application (2a); the documentation of
   the Java API (2b), the adapter implementations (2c), and the Eclipse plug-in (4) 
   are underway.

4) An Eclipse plug-in that encapsulates the jSMTLIB tool. This plug-in provides a
   custom SMT-LIB-aware GUI editor, with syntax coloring and with standard Eclipse 
   problem markers for parse and type errors.  It allows sending a script to a 
   back-end SMT solver for execution, receiving and displaying the results in the GUI. 
   Features such as grammar and type-aware navigation, refactoring tools, and
   a host of would-be-nice GUI embellishments are in progress.
STATUS: Exists, works, and is available from the standard plug-in update site
    http://www.grammatech.com/resources/smt/jSMTLIB-UpdateSite (online help 
   documentation is in draft form) (Eclipse 3.6, using Java 1.6)

"5") I also have a validation suite for SMT-LIBv2 tools, that checks conformity to
   the SMT-LIBv2 standard. (It checks conformity of command syntax and semantics,
   not of the SMT solving capability.) I will make a public release once it is more 
   automated and has had more experience with tools under development; 
   in the meantime, I would be happy to share the suite's assessment of
   any tool under development, if the developers contact me.

[DISCLAIMER: Though these items are hosted at grammatech.com, they are not products
of GrammaTech, my employer, nor supported or warranted by the company.
The usual disclaimer is included in the material - "AS IS" with no warranties, etc.
The standard license is for academic or not-for-profit use; if you want to include
them in other material or use them in a commercial product, please contact me.]

David Cok
 


More information about the SMT-LIB mailing list