1. This course is about …
- Formal Verification
- Theories and practices
- How to use Coq to verify code
2. Why should we care?
- Software systems run everywhere and even control our lives
- We have to trust them but they are not trustworthy due to program errors
- TheDAO (decentralized autonomous organization) attack (double-spend attack), 3.6M ETH lost
3. Goal of Formal Verification
- Prove (or verify) the absence of program errors
- Easy? NO!
- A number of ways to approach the problem
4. Methods to Achieve the Goal
4.1 Testing?
- Can we use testing to prove correctness/incorrectness?
- No! May need an infinite testsuit