Symbolic Simulation: An ACL2 Approach

Executable formal specification can allow engineers to test (or simulate) the specified system on concrete data before the system is implemented. This is beginning to gain acceptance and is just the formal analogue of the standard practice of building simulators in conventional programming languages such as C. A largely unexplored but potentially very useful next step is symbolic simulation, the "execution" of the formal specification on indeterminant data. With the right interface, this need not require much additional training of the engineers using the tool. It allows many tests to be collapsed into one. Furthermore, it familiarizes the working engineer with the abstractions and notation used in the design, thus allowing team members to speak clearly to one another. We illustrate these ideas with a formal specification of a simple computing machine in ACL2. We sketch some requirements on the interface, which we call a symbolic spreadsheet.

[1]  Mandayam K. Srivas,et al.  A Tutorial Introduction to PVS , 1998 .

[2]  Robert S. Boyer,et al.  Mechanized formal reasoning about programs and computing machines , 1997 .

[3]  David M. Russinoff A Mechanically Checked Proof of IEEE Compliance of the Floating Point Multiplication, Division and Square Root Algorithms of the AMD-K7™ Processor , 1998, LMS J. Comput. Math..

[4]  Bishop Brock,et al.  ACL2 Theorems About Commercial Microprocessors , 1996, FMCAD.

[5]  Robert S. Boyer,et al.  Proving Theorems about LISP Functions , 1973, JACM.

[6]  Matt Kaufmann,et al.  ACL2 Support for Verification Projects (Invited Talk) , 1998, CADE.

[7]  J. Strother Moore,et al.  An Industrial Strength Theorem Prover for a Logic Based on Common Lisp , 1997, IEEE Trans. Software Eng..

[8]  Karl N. Levitt,et al.  SELECT - a formal system for testing and debugging programs by symbolic execution , 1975, Reliable Software.

[9]  Matthew Wilding,et al.  Transforming the Theorem Prover into a Digital Design Tool: From Concept Car to Off-Road Vehicle , 1998, CAV.

[10]  J. Strother Moore,et al.  Computational logic : structure sharing and proof of program properties , 1973 .

[11]  Robert S. Boyer,et al.  A computational logic handbook , 1979, Perspectives in computing.

[12]  Susan L. Gilfeather,et al.  Architecture of a complex arithmetic processor for communication signal processing , 1994, Optics & Photonics.

[13]  David A. Greve Symbolic Simulation of the JEM1 Microprocessor , 1998, FMCAD.