Syllabus
 | Office: Office hours:
 Email:
 Phone:
 
 | WVH 332 by appointment
 pete@ccs
 617-373-3694
 
 | 
 | Course number: Web page:
 Locations:
  
  
 
 | CS G379 http://www.ccs.neu.edu/~pete/courses/Decision-Procedures/2007-Fall/
 Wednesday 4:30PM-6:00PM in 366 West Village Bldg H
 Exceptions: On 10/3, 10/17, 10/24, and 11/7 we will meet in Room 166 (same building)
 Friday 3:25PM-5:05PM in 270 West Village Bldg F
 
 | 
Course Description
This is a course on the state of the art in practical decision
procedures for various fragments of logic arising in software and
hardware verification.  We will cover decision procedures for logics
ranging from propositional logic to temporal logic to logics that
include arithmetic, uninterpreted functions, equality, arrays, etc.
We will also discuss abstraction, refinement, how to combine decision
procedures, and the ACL2 theorem proving system.
Teaching Philosophy
 
 My goal is to help you develop into critical,
independent-thinking, and creative scientists. In this course, I
will try to do this by giving you opportunities to grapple with
and gain technical mastery of recent results in decision
procedures.  You gain technical mastery by doing and, for the
most part, this occurs outside of the class. My role is to create
the opportunity for learning; it is only with your active
participation that learning truly takes place. 
 During lectures I try to explain, clarify, emphasize,
summarize, encourage, and motivate. I can also answer questions,
lead discussions, and ask questions. In class you have an
opportunity to test your understanding, so things work best if
you come to class prepared. We can then focus on the interesting
issues, rather than on covering material that you could just as
easily find in the readings. 
Textbooks
We will use the following textbook later in the semester.  
  - 
  Computer-Aided
  Reasoning: An Approach. Matt Kaufmann, Panagiotis Manolios, and J Strother
  Moore. Kluwer Academic Publishers, June, 2000. (ISBN: 0-7923-7744-3)
  
  
 Note: A paperback version is available  on
  the 
  Web.   This is much cheaper than the hardcover
  version.
The following books may be of interest, but are not required. 
Before buying any of these books, I suggest that you
evaluate them carefully first.  
  - For students interested in ACL2 and/or
      software/hardware case studies:
      
	-  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)
     
 Note: I have a few 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.
 
  
- For students interested in mathematical logic:
      
	- 
	  Mathematical Logic, Second Edition. H.-D. Ebbinghaus and J.
	  Flum and W. Thomas. Springer-Verlag, 1994. 
	
 
  
- For students interested in model checking:
      
	- 
	  Model Checking. Edmund M. Clarke, Jr., Orna Grumberg, and Doron
	  A. Peled. MIT Press, 1999. (ISBN: 0-262-03270-8)
	
 
  
- For students interested in the theory of formal methods:
    
      - 
	Handbook of Automated Reasoning. In 2 volumes /Editors Alan Robinson
	    and Andrei Voronkov. Elsevier & MIT Press, 2001
	    (ISBN: 0-262-18223-8)
	
-  Term Rewriting and All That. Franz Baader and Tobias
	Nipkow. Cambridge University Press, 1998. (ISBN:
	0-521-77920-0) 
	
 
Grading
Your grade will be based on the following.
 | Homework: Grading:
 2 Exams:
 Projects:
 
 | 30% 10%
 40%
 20%
 
 | 
Notes
 -  Various homework problems will be given, at the approximate
    rate of one assignment per every two weeks.  Late homeworks will
    not be accepted.
     
  
-  Each problem will be graded in a timely fasion by a class
     member, who is also responsible for handing out solutions.
     I will review the grading and the solutions you prepare and
     will assign a grade based on both the quality and timeliness
     of your work. If you grade an assignment,
     you do not have to do it and automatically get an A on it,
     but I expect you to fully understand it and the solutions
     you distribute.
     
     Part of the reason I am asking you to do
     this is that I expect you will learn a great deal in the
     process, e.g., students often choose to grade
     homeworks that are giving them difficulty.  In this way, the
     impact on their grade is minimized and they get a chance to
     really learn the material.
      
  
-  You are expected to do the homework assignments on your own
    without consulting other students or sources other than those
     used in class, unless I state otherwise.  You can talk to
     one another about high-level ideas and you can consult
     sources such as the Web about high-level ideas, but any
     significant insights into assignments gained from any source
     should be cited.
      The reason I give you homework is to help
     you understand the material and yourself.  Sometimes things
     that seemed obvious in class turn out to be more subtle than
     you expected.  Homework gives you the opportunity to show,
     yourself primarily and me secondarily, that you understand
     the concepts and their implications.  Sometimes I also ask
     that you read and develop some of the concepts on your own.
     The material we covered in class should act as the
     foundation that makes this possible.
       I will also give you opportunities to work in teams.
     Some of the homeworks and the project will allow you to work
     with other students.  I encourage you, but do not require
     you, to do this.
     
        
-  I will give you the exams after class and you will
     have until the next day at 5PM to return them to me.  I will
     try to give you exams that take about 2 hours to complete.
     This assumes that you prepared well for them and have
     internalized all the main concepts. Please do not expect to
     learn what you need while taking the exam; past experience
     indicates that this is a bad idea.  The reason I am giving
     you about a day to complete the exam is that I do not want
     you to stess over time constraints. (I feel compelled to say
     that as a graduate student I found taking tough exams under
     time constraints a useful experience.)
     Here are the rules for the take-home exams.  I trust you
     to abide by them. Do not consult outside sources when
     working on exams.  You can  use the class textbooks and
     handouts that I gave you, but you cannot use any other
     source without explicit permission from me.  A corollary is
     that there should be absolutely no discussion about any of
     the exam questions, with anyone other than me.
      
  
-  The projects can be group projects and can consists of 1,
      2, or 3 people. They have to be cleared by me. During
      class, I will toss out project ideas, but feel free to
      suggest projects based on your interests.
     Projects will be presented during class and a single
    project report is required.  In the past, several of these
    reports have been turned into papers, so try to write it like
    a conference paper.
      Every member of the team will evaluate the contributions
    of the other team members.
      
  
-   You are expected to do the reading before class.
     
     In class you have an opportunity to test your understanding,
     so things work best if you come to class prepared. We can
     then focus on the interesting issues, rather than on
     covering material that you could just as easily find in the
     readings. 
 
Tentative Syllabus
Here is an overview of the material that I would like to cover.
Topics that start with "Tour" mean we will cover them at a
high-level.  I reserve the right to make modifications based on
the interests of the class and/or time constraints.
  - Boolean Satisfiability
    - Efficiently decidable cases, including 2SAT & HORNSAT 
- NP-Completeness: 3-SAT & variants 
- Resolution 
- DPLL (Davis-Putnam-Loveland-Logemann) algorithm 
- Making DPLL fast: BCP, decision heuristics,
  backjumping, conflict-driven learning, restarts, etc. 
- Preprocessing & translation to CNF 
- BDDs (Boolean Decision Diagrams)
- Equivalence checking 
- Reductions to SAT
    -  Pseudo-Boolean satisfiability
-  Bit-vectors
-  Arrays
-  Bounded model checking and k-induction
-  Modeling & verification of systems
-  Applications
- Decision Procedures
    - Equality
- Uninterpreted functions
- Linear arithmetic
- Arrays
- Combining decision procedures 
- Satisfiability modulo theories 
- Tour of FOL First-Order Logic
    - Syntax, semantics & model theory
- Godel's completeness theorem
- Undecidability of FOL & arithmetic
- FOL as the foundations of mathematics
- Godel's incompleteness theorems
- ACL2 (A Computational Logic for Applicative Common Lisp)
    - The ACL2 programming language
- The ACL2 logic
- Mechanization of ACL2
- Simplification & rewriting
- Termination
- Verification case studies
- Tour of Model Checking
    - Reactive systems
- Temporal calculi, mu-calculus, fixpoints
- Temporal logics  (CTL*, LTL, CTL)
- Explicit model checking: algorithms, probabilistic verification & analysis
- Symbolic model checking: algorithms based on BDDs & SAT
- Tour of Refinement & Abstraction
    - Simulation & bisimulation
- Refinement 
- Conservative abstractions
- Abstract interpretation
 Last modified: Fri Sep  7 10:34:49 EDT 2007