Top Banner
Software Verification with Satisfiability Modulo Theories Nikolaj Bjørner Microsoft Research SSFT 2014, Menlo Park
40

Software Verification with Satisfiability Modulo Theories

Dec 06, 2021

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Software Verification with Satisfiability Modulo Theories

Software Verification withSatisfiability Modulo Theories

Nikolaj Bjørner Microsoft Research

SSFT 2014, Menlo Park

Page 2: Software Verification with Satisfiability Modulo Theories

Contents

A primer on SMT with Z3

SMT & Verification by Assertion Checking

- Boogie GC, Quantifiers, Theories

SMT & Verification by Assertion Inference- Symbolic Software Model Checking,

Horn Clauses

Page 3: Software Verification with Satisfiability Modulo Theories

SMT & Verification

Program Property+

Boogie/Dafny

SLAM, Yogi, DASH,Z3-Horn, Duality,

HSF, LiquidSAGE, Pex

Verification with

AuxiliaryInvariants

SynthesizeAuxiliaryinvariantsFind

bugs

Page 4: Software Verification with Satisfiability Modulo Theories
Page 5: Software Verification with Satisfiability Modulo Theories

– Backed by Proof Plumbers

Leonardo de Moura, Nikolaj Bjørner, Christoph Wintersteiger

Not all is hopeless

Page 6: Software Verification with Satisfiability Modulo Theories

A primer on SMT with Z3

Page 8: Software Verification with Satisfiability Modulo Theories

Program Verification

Auditing

Type Safety

Over-Approximation

Under-Approximation

Testing

Analysis

Synthesis

SAGE

HAVOC

SLAyer

BEK

Some Microsoft Tools based on

Page 10: Software Verification with Satisfiability Modulo Theories

SAT IN A NUTSHELL

Page 11: Software Verification with Satisfiability Modulo Theories

SAT in a nutshell

(Tie Shirt) (Tie Shirt) (Tie Shirt)

Page 12: Software Verification with Satisfiability Modulo Theories

SMT IN A NUTSHELL

Page 13: Software Verification with Satisfiability Modulo Theories

Is formula satisfiablemodulo theory T ?

SMT solvers have

specialized algorithms for T

Satisfiability Modulo Theories (SMT)

Page 14: Software Verification with Satisfiability Modulo Theories

ArithmeticArray TheoryUninterpreted

Functions

𝑠𝑒𝑙𝑒𝑐𝑡(𝑠𝑡𝑜𝑟𝑒 𝑎, 𝑖, 𝑣 , 𝑖) = 𝑣𝑖 ≠ 𝑗 ⇒ 𝑠𝑒𝑙𝑒𝑐𝑡(𝑠𝑡𝑜𝑟𝑒 𝑎, 𝑖, 𝑣 , 𝑗) = 𝑠𝑒𝑙𝑒𝑐𝑡(𝑎, 𝑗)

𝑥 + 2 = 𝑦 ⇒ 𝑓 𝑠𝑒𝑙𝑒𝑐𝑡 𝑠𝑡𝑜𝑟𝑒 𝑎, 𝑥, 3 , 𝑦 − 2 = 𝑓(𝑦 − 𝑥 + 1)

Satisfiability Modulo Theories (SMT)

Page 15: Software Verification with Satisfiability Modulo Theories

SMT SOLVING IN A NUTSHELL

Job Shop Scheduling

Page 16: Software Verification with Satisfiability Modulo Theories

Job Shop Scheduling

Machines

Jobs

P = NP? Laundry 𝜁 𝑠 = 0 ⇒ 𝑠 =1

2+ 𝑖𝑟

Tasks

Page 17: Software Verification with Satisfiability Modulo Theories

Constraints:

Precedence: between two tasks of the same job

Resource: Machines execute at most one job at a time

4

132

𝑠𝑡𝑎𝑟𝑡2,2. . 𝑒𝑛𝑑2,2 ∩ 𝑠𝑡𝑎𝑟𝑡4,2. . 𝑒𝑛𝑑4,2 = ∅

Job Shop Scheduling

Page 18: Software Verification with Satisfiability Modulo Theories

Constraints: Encoding:

Precedence: 𝑡2,3 - start time of job 2 on mach 3

𝑑2,3 - duration ofjob 2 on mach 3

𝑡2,3 + 𝑑2,3 ≤ 𝑡2,4Resource:

4

132

𝑠𝑡𝑎𝑟𝑡2,2. . 𝑒𝑛𝑑2,2 ∩ 𝑠𝑡𝑎𝑟𝑡4,2. . 𝑒𝑛𝑑4,2 = ∅

𝑡2,2 + 𝑑2,2 ≤ 𝑡4,2∨

𝑡4,2 + d4,2 ≤ 𝑡2,2

Not convex

Job Shop Scheduling

Page 19: Software Verification with Satisfiability Modulo Theories

Job Shop Scheduling

Page 20: Software Verification with Satisfiability Modulo Theories

Job Shop Scheduling

case split

case split

Efficient solvers:

- Floyd-Warshal algorithm

- Ford-Fulkerson algorithm

𝑧 − 𝑧 = 5 – 2 – 3 – 2 = −2 < 0

Page 21: Software Verification with Satisfiability Modulo Theories

THEORIES

Page 22: Software Verification with Satisfiability Modulo Theories

Theories

Uninterpreted functions

Page 23: Software Verification with Satisfiability Modulo Theories

Uninterpreted functions

Arithmetic (linear)

Theories

Page 24: Software Verification with Satisfiability Modulo Theories

Uninterpreted functions

Arithmetic (linear)

Bit-vectors

Theories

Page 25: Software Verification with Satisfiability Modulo Theories

Uninterpreted functions

Arithmetic (linear)

Bit-vectors

Algebraic data-types

Theories

Page 26: Software Verification with Satisfiability Modulo Theories

Uninterpreted functions

Arithmetic (linear)

Bit-vectors

Algebraic data-types

Arrays

Theories

Page 27: Software Verification with Satisfiability Modulo Theories

Uninterpreted functions

Arithmetic (linear)

Bit-vectors

Algebraic data-types

Arrays

Polynomial Arithmetic

Theories

Page 28: Software Verification with Satisfiability Modulo Theories

QUANTIFIERS

Page 29: Software Verification with Satisfiability Modulo Theories

Quantifier Elimination

[B. IJCAR 2010]

Presburger Arithmetic, Algebraic Data-types,Quadratic polynomials

SMT integration to prune branches

Page 30: Software Verification with Satisfiability Modulo Theories

MBQI: Model based Quantifier Instantiation

[de Moura, Ge. CAV 2008][Bonachnia, Lynch, de Moura CADE 2009][de Moura, B. IJCAR 2010]

Page 31: Software Verification with Satisfiability Modulo Theories

MODELS, PROOFS, CORES & SIMPLIFICATION

Page 32: Software Verification with Satisfiability Modulo Theories

Logical Formula

Sat/Model

Models

Page 33: Software Verification with Satisfiability Modulo Theories

ProofsLogical Formula

Unsat/Proof

Page 34: Software Verification with Satisfiability Modulo Theories

Simplification

Simplify

Logical Formula

Page 35: Software Verification with Satisfiability Modulo Theories

Cores

Logical Formula

Unsat. Core

Page 36: Software Verification with Satisfiability Modulo Theories

TACTICS, SOLVERS

Page 37: Software Verification with Satisfiability Modulo Theories

Tactics

Composition of tactics:

•(then t s)

•(par-then t s) applies t to the input goal and s to every subgoal produced by t in parallel.

•(or-else t s)

•(par-or t s) applies t and s in parallel until one of them succeed.

•(repeat t)

•(repeat t n)

•(try-for t ms)

•(using-params t params) Apply the given tactic using the given parameters.

Page 38: Software Verification with Satisfiability Modulo Theories

Solvers

• Tactics take goals and reduce to sub-goals

• Solvers take tactics and serve as logical contexts.

• push

• add

• check

• model, core, proof

• pop

Page 39: Software Verification with Satisfiability Modulo Theories

APIS

C

C++ python OCaml

.NETJava

Page 40: Software Verification with Satisfiability Modulo Theories

Summary

Z3 supports several theories– Using a default combination

– Providing custom tactics for special combinations

Z3 is more than sat/unsat– Models, proofs, unsat cores,

– simplification, quantifier elimination are tactics

Prototype with python/smt-lib2– Implement using smt-lib2/programmatic API