The goal of cs6964 in Spring 2008 is to provide an introduction to formal specification and verification techniques. The emphasis will be on semantically powerful specification languages coupled with deductive verification techniques. The primary focus of the course is obtaining experience with the construction of solid and useful formal specifications for a variety of CS artifacts (hardware, software, systems, etc.). A secondary focus is the production of formal proofs of system properties, and their automation.
| Instructor Konrad Slind (MEB 3436) | Office Hours: Tuesday after class, or by appointment |
| Class Time Tu/Thu, 10:45-12:05 | Class Room MEB 3105 |
The University Academic Calendar may be consulted for further information about drop dates and other important dates in the semester.
| Basic Logic | Specification Toolbox | Case Studies |
|---|---|---|
| Propositional Logic First Order Logic Higher Order Logic | Basic types Sets N and Recursive types Recursive Functions and Inductive Relations Dealing with Partiality Arrays, Matrices, and Words | Block ciphers
Regular Languages Hardware Programming Language Semantics Compilation Abstract Algebra How to write your own proof procedure |
You will need to know how to program in SML. If you don't already know it, you will have to learn it on your own, or come to me for some catch-up exercises.
The HOL-4 system will be used to gain experience in various aspects of formalization and theorem proving. The Description, Tutorial, and Logic documents can help in this quest. There is also a SourceForge homepage for this system. The documents are in constant revision; please send me any typos, mistakes, omissions, etc.
Other material of general utility in the area of theorem proving:
| Assignments | 35% |
| Project | 65% |
| Total | 100% |