The first part of the course will cover the following topics.
- Boolean Logic. Normal forms, decision trees, BDDs, HornSAT, 2SAT, 3SAT, NP-completeness, applications, CDCL SAT solving.
- First Order Logic. Syntax and semantics of first-order logic, basic model theory, basic proof theory, Godel's completeness theorem, the compactness theorem, the Lowenheim-Skolem theorems, Godel's incompleteness theorems, non-standard models, applications.
- Set Theory. Naive vs axiomatic set theory, axiomatic set theory in FOL, ordinals and cardinals, foundations of mathematics.
- Reasoning about Programs. Syntax and semantics of the core ACL2s programming language (a simple LISP-based language with contracts), recursion, equational reasoning, contracts, testing, induction, termination analysis.
- Interactive Theorem Proving. Driving the theorem prover, the "method", term-rewriting, proof structuring methods, examining failed proof attempts, symbolic evaluation, applications.
- Decision Problems. Basic decidability and undecidability results in FOL and recursion theory.
- Reactive Systems. Transition systems, temporal logics, mu-calculus, safety and liveness, automata on infinite objects, simulation, bisimulation, refinement.
- Decision Procedures. SMT (Satisfiability modulo theories), MPMT (Mathematical programming modulo theories), Presburger arithmetic.
- Applications. Software verification, synthesis, security, automated testing, requirements analysis.
The second part of the course will consist of student presentations.
- Presentations. Students will select a small set of papers on a topic they want to explore in more detail and they will prepare and deliver a presentation in class.
- Projects. Students will select a semester-long research project to work on. I will routinely throw out project ideas. Students can work in groups of 1-2. We will have a mini-conference at the end of the semester to which every group will submit a project report. The reports will be evaluated by a program committee consisting of all the students in the class. We will use a conference management system like Easychair for this purpose. The best project will receive a prize.
The intended audience is Ph.D. students who want to explore the use of formal methods in their research (e.g., students in FM, PL, Security, Systems or Databases). The prerequisite is "mathematical maturity," but what is lacking in maturity can often be compensated for with enthusiasm. Motivated Undergraduate and Masters students are also welcome. If you're not sure if this class is appropriate for you, feel free to contact me.
Grades will be based on projects, presentations and class participation.