CS 267 - Automated Verification - Spring 2023
Instructor:
Tevfik Bultan
Office: HFH 2104B
Office Hours: Monday/Wednesday 11:00-12:00
Class Times:
Monday/Wednesday 1:00-2:50 Location: PHELP 3526
Course Topics
This course will cover automated verification techniques focusing
mainly on model checking and software verification.
The tentative list of topics include:
- Safety and liveness properties, temporal logics
- Binary Decision Diagrams (BDDs) and symbolic model checkers
- Model checking using automata on infinite words, explicit
state model checkers
- SAT-solvers and bounded verification
- Software model checking
- Predicate abstraction
- Counter-example guided abstraction refinement
- Infinite state model checking
- Verification using SMT-solvers
- Modular verification
- Dynamic symbolic execution
- Probablistic program analysis
- Quantitative information flow
Course Work
There will be several homeworks (50% of the grade), a final (20% of the grade), and the
students will be required to do a course project (30% of the grade).
The papers related to the
topics discussed in the class will be given as reading assignments.
Announcements
- As was announced in the class:
- Take home final exam. Final exam has to be done individually, do not discuss the problems with anyone other than the instructor.
- HW3 deadline is extended to Monday, June 12th, 10:00AM.
- Take home final will be posted at the course webpage on June 12th at 9:00AM and it is due June 13th, 10:00AM.
- Final project report is due on June 15th Friday, 5:00pm.
- For HW3, take home final and final project report: You can turn in a hard copy to my mailbox at HFH 2108 or send a pdf file (please include 267 in the subject line) via email.
Office hours on May 22th are cancelled.
HW2 deadline extended: HW2 is due at the beginning of class (hard copy) May 15th, Monday
Project progress reports deadline extended: Project progress reports are due at the beginning of class (hard copy) on May 22th, Monday
Recommended Text
The following book is a good reference for model checking
techniques:
Model Checking,
E. M. Clarke, Orna Grumberg, Doron Peled,
ISBN 0-262-03270-8, 2000.
Related Tools
Specification Checkers
-
SPIN: An explicit state moodel checker
-
NuSMV: A new BDD-based symbolic model checker
-
Alloy : A SAT-based bounded data model verifier
-
PRISM model checker: A probabilistic model checker
-
UPPAAL: A model checker for real time systems
Program Checkers
-
CBMC: C Bounded Model Checker: A SAT-based bounded model checker for C
- KLEE: KLEE is a dynamic symbolic execution engine built on top of the LLVM compiler infrastructure
-
JPF/SPF: Java Path Finder/Symbolic Path Finder: An explicit state model checker
and a symbolic execution tool for Java
- Dafny: Dafny is a verification-aware programming language that has native support for recording specifications and is equipped with a static program verifier.
- angr: angr is an open-source binary analysis platform for Python. It combines both static and dynamic symbolic ("concolic") analysis, providing tools to solve a variety of tasks
Symbolic Manipulators and Satisfiability Solvers
-
Z3: An SMT (Satisfiability-Modula-Theories) solver
-
ABC: Automata-based Model Counter: an automata-based model counting constraint solver.