Lecture 0: Introduction

COMS E6998 Formal Verification of System Software
Fall 2018
Ronghui Gu

1. This course is about …

2. Why should we care?

3. Goal of Formal Verification

4. Methods to Achieve the Goal

4.1 Testing?

Program testing can be used to show the presence of bugs, but never to show their absence. – Edsger Dijkstra

4.2 Algorithmic Verification?

  bool av (program p) {
    if (p has bugs) {
      return false;
    }
    return true;
  }

4.3 Deductive Verification?

5. Holy Grail of Formal Verification

Soundness: If the verification method reports no failure, then the program under examination has no bug Completeness: If the verification method reports a failure, then the program under examination has a bug Termination: The verification method will terminate, giving back an answer.

6. Methods for Formal Verification

However not all is lost! Sound and terminating systems can prove the correctness of virtually every program we would care about.

The scientific community continuously pushes the limits of these systems to extreme levels!