CIS 890: Logic-based Program Analysis and Verification

Course Home
http://www.cis.ksu.edu/~ab/Courses/890/fall06/index.html
Location
Nichols 236
Meeting Times
Tuesday & Thursday, 9:30-10:45 AM
Instructors
Office
Anindya Banerjee
John Hatcliff
Robby
Nichols 324B
Nichols 324D
Nichols 212

Prerequisite

The prerequisite for this class is CIS 771 (Program Verification)

Topics

(NB: The topics and the order in which the topics are covered might change according to student interests and instructors' whims).
  • Course overview

  • Program verification for simple imperative programs: Propositional and predicate logic; Hoare logic; Predicate transformers -- weakest precondition, strongest postcondition; Applications to information flow

  • Program verification for heap manipulating programs : Basics of Separation logic; Applications to concurrency; Smallfoot; Applications to information flow; Applications to shape analysis

  • Decision Procedures : Basics; Invariant generation overview; Invariant generation details; Induction; Decision procedures in ESC/Java

  • Other topics : Automatic termination proofs of programs.

Assignments and Grading

You will be given 1-2 assignments on each topic covered in the course. Assignments will involve pencil and paper exercises as well as tool-based exercises that involve use of ESC/Java, Bogor/Kiasan, Smallfoot. We might have some student presentations.

This is a graduate class. We are here to learn. Therefore we will not talk about grades.

Papers covered

Case studies

Acknowledgement

We are indebted to Prof. Zohar Manna and Aaron Bradley for their help with this course and for allowing us to use their lecture notes.