Reading List
This is a list of relevant reading material. In your copious free
time, you might want to have a look at some of these
papers/books. I will periodically add more entries to this list
as the class progresses.
Required Textbooks
  
  - 
      Mathematical Logic, Second Edition. H.-D. Ebbinghaus and J.
      Flum and W. Thomas. Springer-Verlag, 1994. 
  
   
- 
      Computer-Aided
      Reasoning: An Approach. Matt Kaufmann, Panagiotis Manolios, and J Strother
      Moore. Kluwer Academic Publishers, June, 2000.
  
   
- 
      Term Rewriting and All That. Franz Baader and Tobias
      Nipkow. Cambridge University Press, 1998.
      
  
   
- 
      Model Checking.  Edmund M. Clarke, Jr., Orna Grumberg, and Doron A.
      Peled.  MIT Press, 1999.
      
  
 
Recommended books and papers
  -  Computer-Aided
      Reasoning: ACL2 Case Studies. Matt Kaufmann, Panagiotis Manolios, and J
      Strother Moore (eds.). Kluwer Academic Publishers, June, 2000. (ISBN: 0-7923-7849-0)For students interested in ACL2 and/or
      software/hardware case studies:
      Note:I have several copies that I can lend out for
      the semester.  Also, a paperback version is available on
      the 
      Web.  This is much cheaper than the hardcover
      version.
  
      
  
- 
      Handbook of Automated Reasoning. In 2 volumes /Editors Alan Robinson
      and Andrei Voronkov. - Amsterdam [etc.] : Elsevier ; Cambridge, Mass. MIT Press
      (ISBN: 0-262-18223-8).   For students interested in the
      theory of formal methods.
  
  
- 
      Formal Modelling and Analysis of Security Protocols. Peter Ryan
      and Steve Schneider.  Addison Wesley, 2001. (ISBN:
      0-201-67471-8)
      For students interested in security.
  
  
- Here are some books on logic that are very good.
    
      - 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, Second Edition. A Mathematical
	  Introduction to Logic.  Academic Press,  2000.
    
 
    
- Here are some books on set theory that I recommend.
    
      - 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 computability theory (aka recursive
       function theory) that I recommend.
    
      - Hartley Rogers. Theory of Recursive Functions and
	  Effective Computability.  The classic book on the
	  subject.
	  
      
- Cutland. Computability.  A more elementary
	  introduction to computability theory.
	  
    
 
   
- 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.
  
   
- 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.
  
   
- Mechanizing Proof: Computing, Risk, and Trust
    (Inside Technology) by Donald A. MacKenzie. 
    MIT Press, 2001.  MacKenzie compares proof as traditionally
      conducted by human mathematicians, and formal, mechanized
      proof. He interviewed many of the
      key players and carefully describes the history of the subject.