Lecture: SAT & SMT, Part 1
Date: 1/23/17
Reading
No summaries are necessary for this class.
Preparation
Install Z3.
Download the latest release 4.5.0 from https://github.com/Z3Prover/z3/releases.
Make sure the Python binding works.
You may need to add the path to Z3’s bin
directory to the environment variable PYTHONPATH
.
Class notes
- Administrative
- Class structure reminder
- First assignment due this Friday. Turn in via Blackboard.
- Too easy? Challenge problems too hard? Can be the basis for a project if so
- Use Piazza for questions
- Tools
- Dafny
- Coq
- Lean
- TLA+
- F*
- Rosette
- Isabelle/HOL
- Other interactive provers: ACL2, Twelf, PVS
- How to read a research paper
- Not reading a textbook. Be skeptical! But also look for good insights
you can use.
- Interact with the paper!
- The Verifying Compiler: A Grand Challenge for Computing Research
- Clear measure of success
- Research oriented: Industry very good at incremental advances
- Updates to the list of challenges he mentions
- Note the difference between a verified compiler and a verifying compiler
- We will read CompCert paper
- You can try out VCC
- Are we done?
- How important is verification of legacy code?
- Note reference to tremendous improvement in SAT solving
- Note repeated references to desire for trustworthy/secure software
- SAT/SMT: Why start here?
- Very successful
- Can be used for lots of things, not just verification
- Supports automation, which I’m a big fan of
- Z3 64-bit encoding example