## Lecture slides

- Propositional Logic
- Propositional Logic
- Normal Forms, DPLL
- First order logic
- First order logic
- First order logic, Theory of equality
- Equality logic with uninterpreted functions
- Equality logic with uninterpreted functions
- Equality logic with uninterpreted functions
- Linear arithmetic, Simplex
- Simplex, Fourier-Motzkin
- The Omega test
- The Omega test, Difference logic
- Bit-Vectors
- Bit Flattening
- Presburger Arithmetic, Theory of array
- Combining decision procedures
- Combining decision procedures, Eliminating quantifiers
- Quantified Boolean Formulas, QDLA
- General Quantification, E-Matching
- Array Property Fragment
- Dafny, Program Correctness (Binary Search) (Linear Search) (Bubble Sort)
- Program Correctness, Loop Invariant
- Hoare Logic, Weakest Precondition, Strongest Postcondition
- WP Rules, Weakest Liberal Precondition, SP Rules
- SP Rules, Termination

## Assignments

## Homework

## Project ideas

- Implement the Omega test algorithm.
- Implement BST APIs in Dafny and verify that the BST property holds at each node in the BST.
- Implement the CDCL algorithm for SAT solving.
- Implement a solver for Bit-vectors.

## Books

- The calculus of computation: decision procedures with applications to verification, by Aaron R.Bradley and Zohar Manna
- Decision Procedures: An Algorithmic Point of View, by Daniel Kroening and Ofer Strichman

## Feedback

Feedback
## Acknowledgements

Some slides are taken from the Decision Procedures Website, and some are taken from The Calculus of Computation course.