Reading List
I will add entries to this list as we get to them.
- Matt Kaufmann, Panagiotis Manolios, and J Strother Moore.
Computer-Aided Reasoning: An Approach.
Kluwer Academic Publishers, July 2000.
- Mechanized
Formal Reasoning about Programs and Computing Machines, Bob
Boyer and J Moore, in R. Veroff (ed.), Automated Reasoning
and Its Applications: Essays in Honor of Larry Wos, MIT
Press, 1996. This paper explains a formalization style that has
been extremely successful in enabling mechanized reasoning about
programs and machines, illustrated in ACL2. This paper presents
the so-called ``small machine'' model, an extremely simple
processor whose state consists of the program counter, a RAM, an
execute-only program space, a control stack and a flag. The
paper explains how to prove theorems about such models.
-
The JavaTM Virtual Machine specification by Sun.
- Why
Functional Programming Matters by John Hughes. The question
of what is a functional programming language came up in class.
This is a nice paper on the topic. A possible project is to
examine the issues in extending ACL2 so that it has some of the
features of modern functional programming languages such as
Haskell. See the next item.
- A Short Introduction to Haskell
This is available from the Haskell Web page and is related
to the previous item.
-
ACL2 Theorems about Commercial Microprocessors, Bishop Brock,
Matt Kaufmann and J Moore, in M. Srivas and A. Camilleri (eds.)
Proceedings of Formal Methods in Computer-Aided Design (FMCAD'96),
Springer-Verlag, pp. 275-293, 1996. The paper sketches the system
and two industrial applications: the AMD5K86 floating-point
division proof and the Motorola CAP DSP model.
-
A Mechanically Checked Proof of IEEE Compliance of a
Register-Transfer-Level Specification of the AMD K7 Floating Point
Multiplication, Division and Square Root Instructions, David
Russinoff, Advanced Micro Devices, Inc., January, 1998. This
paper is a tour de force in mechanical verification. The paper
describes a mechanically verified proof of correctness of the
floating-point multiplication, division, and square root
instructions of The AMD K7 microprocessor. The instructions, which
are based on Goldschmidt's Algorithm, are implemented in hardware
and represented by register-transfer level specifications, the
primitives of which are logical operations on bit vectors. On the
other hand, the statements of correctness, derived from IEEE
Standard 754, are arithmetic in nature and considerably more
abstract. Therefore, the paper develops a theory of bit vectors
and their role in floating-point representations and rounding,
extending previous work in connection with the K5 FPU. The
paper then presents the hardware model and a rigorous and detailed
proof of its correctness. All of the definitions, lemmas, and
theorems have been formally encoded in the ACL2 logic, and every
step in the proof has been mechanically checked with the ACL2
prover.
- The FM9001
Microprocessor: Its Formal Specification and Mechanical
Correctness Proof.
Pointers to papers describing the FM9001, a
microprocessor that was formally verified all the way to the
netlist level, are given. The FM9001 was fabricated by LSI Logic and rigourous
testing has not uncovered any errors. The FM9001 also serves as
the target for the verified assembler, Piton, which in turn
serves as the target of the verified Gypsy compiler. All these
systems comprise the CLI Stack. References to the CLI Stack papers
are given at the bottom of the Web page.
- Some of you have asked me to recommend books on set
theory. Here are two.
- Keith Devlin. The Joy of Sets: Fundamentals of
Contemporary Set Theory, Second
Edition. Springer-Verlag, 1992. A excellent introduction to
axiomatic set theory.
- Paul R. Halmos. Naive Set Theory. Van Nostrand,
1960. A classic book on set theory that is too elementary
for our purposes, but does a really good job on the topics
it covers.
- Here are some books on logic that are very good.
- H.-D. Ebbinghaus and J. Flum and W. Thomas. Mathematical Logic, Second
Edition. Springer-Verlag, 1994. An excellent introduction to
mathematical logic.
- Joseph Robert Shoenfield. Mathematical Logic. A K
Peters Limited, 2001. A reprint of the classic.
- Raymond M. Smullyan. First-Order Logic. Dover
Publications, Incorporated, January 1995.
- Herbert B. Enderton. A Mathematical Introduction to Logic.
Academic Press, 1972