1
This directory contains a proof that the Burch and Dill notion of
2
correctness used by Sawada is satisfied by a trivial machine. Sawada's
3
original proof is in the directory sawada-model, which you can use to
4
compare with the files in this directory.
6
Below is the README file that comes with Sawada's proof script. To
7
Sawada's instructions on how to certify the books (which apply to both
8
this and the sawada-model directory) we add:
10
1. In the makefile set the variable ACL2 correctly (i.e., so that it
11
points to you local copy of ACL2).
13
2. In ihs.lisp, basic-def.lisp, trivia.lisp, and utils.lisp fix the
14
include book commands so that they point to the appropriate local
15
copy of the ACL2 books.
18
We have gone about defining the trivial machine in a way that
19
minimizes the differences between our files and those of Sawada.
20
Therefore, the only files that have been modified are model.lisp and
21
proof.lisp. In addition, any modifications are preceded by a comment
24
; *******************CHANGE********************
26
; *******************CHANGE********************
28
An overview of what we have done is:
30
1. We changed the definition of MA, i.e., we have defined another
31
pipelined machine. This is in model.lisp
33
2. We have proven the same final theorem as Sawada, i.e., we have
34
prove the new MA correct (with respect to the Burch and Dill
35
variant of correctness used by Sawada, which includes a "liveness"
36
property). This is in proof.lisp
38
3. We then prove about the new MA (in proof.lisp):
41
(implies (ma-state-p ma)
42
(and (equal (ma-pc (ma-stepn ma x n))
44
(equal (ma-regs (ma-stepn ma x n))
46
(equal (ma-mem (ma-stepn ma x n))
49
i.e., MA is a machine that never changes the programmer visible
50
components of the machine. Clearly, this should not be considered
51
correct, hence, we saw that the Burch and Dill notion of correctness
54
-----------------------------------------------
55
The Verification Proof Script for the Three-Stage Pipelined Machine
57
Author: Jun Sawada (sawada@cs.utexas.edu)
59
1. Files in this Directory
61
This directory contains the ACL2 books that define and verify the
62
three-stage pipelined machine discussed in the book.
63
There are three types of files: a makefile, files with the ".lisp"
64
extension, and files with the ".acl2" extension. The makefile is used
65
for the Unix make command. The files with ".lisp" extension are ACL2
66
books which includes the ACL2 functions and theorems. The files with
67
".acl2" extension are used during the certification process.
70
Following is the list of files with the ".lisp" extension:
72
b-ops-aux-def.lisp: Auxiliary definitions to the IHS library.
73
b-ops-aux.lisp: Auxiliary theorems to the IHS library.
74
basic-def.lisp: The definitions of basic machine components.
75
basic-lemmas.lisp: Basic theorems about the pipelined machine.
76
define-u-package.lisp: Book used to define package "u".
77
ihs.lisp: Loads the IHS library and set the proper theory.
78
model.lisp: The definition of the three-stage pipelined machine.
79
proof.lisp: Proof of the commutative diagram.
80
table-def.lisp: The definition of the intermediate abstraction MAETT.
81
trivia.lisp: Some trivial lemmas.
82
utils.lisp: Definitions of utility functions.
85
How to re-certify the ACL2 book:
87
1. You may have to modify the paths to the ACL2 public libraries. At
88
this moment, the ACL2 does not provide a uniform method to load ACL2
89
public libraries whose absolute path names may vary. For example, the
90
IHS libraries are typically found in the "ihs" directory of the "book"
91
directory of the root directory for the ACL2 source code, but the ACL2
92
root directory is decided when it is installed. If the load path to
93
the public libraries are not set properly, the certification process
94
fails. You may have to change all the paths one-by-one.