No-name Verifier

Build Instructions

From manju (CVSROOT=:ext:manju.cs.berkeley.edu:/home/cvs-repository), checkout five repositories:

  $ cvs checkout smbase
  $ cvs checkout ast
  $ cvs checkout elkhound
  $ cvs checkout elsa
  $ cvs checkout verifier

In each of the first four (smbase through elsa), do

  $ ./configure
  $ make
  $ make check

Then in verifier, just do

  $ ./configure
  $ make

You can do make check in verifier, but Simplify will be required.

Connecting to Simplify

Note: If you run the verifier on manju, Simplify has already been installed in /opt/escjava-1.2.4/bin/Simplify and the run-Simplify script knows about it, so nothing more needs to be done to set up Simplify.

Download ESC/Java from Compaq. Unpack the escjava-X.Y.Z.tar.Z tarball somewhere (say, /opt). Then modify the run-Simplify script in the verifier directory so it points at the Simplify binary.

(Sorry this isn't more automated.)

Now, you should be able to

  $ cd verifier
  $ make check

Connecting to Kettle

Check out the Kettle repository from manju alongside the other source directories (Kettle should be a sibling of verifier). Then do

  $ ./configure --with-matchrule --with-cases
  $ make

Now it should work to

  $ cd verifier
  $ ./regrtest -group kettle

Toolchain

The runvml script automates the following steps in the verification of a C program:

When something goes wrong, it's a good idea to inspect the files produced at each step. The runvml script works fine as a black box when things are working, but it's too far removed from the action when things are broken.