symbolic program analysis as satisfiability modulo theories

59
Symbolicprogramanalysis as SatisfiabilityModuloTheories Nikolaj Bjørner Microsoft Research Based on joint work with Kryštof Hoder, Ken McMillan, Leonardo de Moura, Andrey Rybalchenko

Upload: ernst

Post on 23-Feb-2016

47 views

Category:

Documents


1 download

DESCRIPTION

Symbolic program analysis as Satisfiability Modulo Theories. Nikolaj Bjørner Microsoft Research Based on joint work with Kryštof Hoder , Ken McMillan, Leonardo de Moura, Andrey Rybalchenko. Background: Z3 - Efficient SMT Solver. Many custom solvers: Free f unctions - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Symbolic  program analysis   as  Satisfiability Modulo  Theories

Symbolic program analysis as Satisfiability Modulo

Theories

Nikolaj BjørnerMicrosoft Research

Based on joint work with Kryštof Hoder, Ken McMillan, Leonardo de Moura, Andrey Rybalchenko

Page 2: Symbolic  program analysis   as  Satisfiability Modulo  Theories

Background:Z3 - Efficient SMT SolverMany custom solvers:Free functionsLinear Arithmetic Bit-vectorsAlgebraic data-typesArraysPolynomialsQuantifiers

Several Applications:Analysis, Testing, …

from http://rise4fun.com/z3

Leonardo de Moura, B, Christoph Wintersteiger

Page 3: Symbolic  program analysis   as  Satisfiability Modulo  Theories

Tools using Z3 featuresArrray

s

Bit-Vector

s

Arithmeti

cQuanti

-fier Inst

Quanti-fier-elim

SLAyer

SAGE Models

Simplifier

Proofs

Cores

IsabelleHOL4

APIEngine

Page 4: Symbolic  program analysis   as  Satisfiability Modulo  Theories

Tools using Z3 for fixedpointsSLAyer

SAGE

Predicate Based MC

Sep. Logic

Interpolating MC

BDD MC

Fixed-PointMethodology

Abstract Interpretatio

n

SimulationRelation

Logic Programmin

g

Houdini

Datalog

GateKeeper

Summaries

Abstraction

Refinement

Havoc Poirot Corral

Page 5: Symbolic  program analysis   as  Satisfiability Modulo  Theories

Engines for Recursive Predicates

Points-to analysis

Contract Checking Symbolic

Software Checking

µZ3

Datalog + Relational domains

Property Directed Reachability solver

Services for other solvers(Quantifier elimination,Fold-unfold simplification)

Page 6: Symbolic  program analysis   as  Satisfiability Modulo  Theories

Engines for Recursive PredicatesRecursive predicates:

Expressed as Horn clauses + query

µZ: Portfolio of solvers and services for fixed-points:

Bottom-up Datalog Engine- Finite Tables (e.g., Hash-tables, B-Trees)- Symbolic Tables (e.g., BDDs)- Composition of Relations: - Abstract interpretation domains - Reduced products

Symbolic Engine Modulo Theories- Generalized Property Directed Reachability

CAV 2011[Hoder, Bjørner, de Moura]

SAT 2012[Hoder, Bjørner]

Points-to analysis

Contract Checking

Symbolic Software Checking

GateKeeper(sparse hash-

tables)Magnus MadsenKOP2 database

(using magic sets)DKAL

(encoding Primal Infon Logic)

Bebop benchmarks(evaluate PDR

generalized to PDA)

Corral samples(evaluate PDR

Modulo Arithmetic)

Some “anecdotal” experience

Page 7: Symbolic  program analysis   as  Satisfiability Modulo  Theories

mc(x) = x-10 if x > 100mc(x) = mc(mc(x+11)) if x 100

assert (mc(x) 91)

Motivation: Recursive Procedures

Page 8: Symbolic  program analysis   as  Satisfiability Modulo  Theories

Formulate as Horn clauses.

mc() mc() mc() mc() mc()

Solve for mc

Motivation: Recursive Procedures

Page 9: Symbolic  program analysis   as  Satisfiability Modulo  Theories

Formulate as Predicate Transformer:

Check:

Motivation: Recursive Procedures

Page 10: Symbolic  program analysis   as  Satisfiability Modulo  Theories

Instead of computing then checking

Suffices to find post-fixed point satisfying:

Motivation: Recursive Procedures

Page 11: Symbolic  program analysis   as  Satisfiability Modulo  Theories

Program Verification (Safety)

as Solving least fixed-points

as Satisfiability of Horn clauses

Program Verification as SMT

[Bjørner, McMillan, Rybalchenko, SMT workshop 2012]

Hilbert Sausage Factory: [Grebenshchikov, Lopes, Popeea, Rybalchenko et.al. PLDI 2012]

Page 12: Symbolic  program analysis   as  Satisfiability Modulo  Theories

Old but NewShould really not be a surprise:- 90’s Program Analyses using Datalog- Existential Fixedpoint Logic for Hoare Logic [Blass,

Gurevich]- Induction-less induction, …Under-appreciated:- Many language-specific tools using custom analysis - “.. but there has to be a catch” [FOL < FOL+Transitivity]- A flurry of recent progress on Modern Symbolic

Model checking tools/algorithms. Claim: they are all strategies for Horn Clause satisfiability.

The Quest: Horn Clause Satisfiability

Page 13: Symbolic  program analysis   as  Satisfiability Modulo  Theories

Verification condition

HAVOC Dafny

Program annotated withinductive invariants

Verification Tool Workflow

Page 14: Symbolic  program analysis   as  Satisfiability Modulo  Theories

Corral

Verification condition

HAVOC Dafny

Verification Tool WorkflowHoudini Slicing

Inductive variableselection

Program partially annotated withinductive invariants

Page 15: Symbolic  program analysis   as  Satisfiability Modulo  Theories

Duality

Corral

Why, LLVMHorn Clauses

HAVOC Dafny

Program partially annotated withinductive invariants

HSF

IC3UFO MCMTSAFARI

Verification Condition Generators can already produce Horn Clauses

Leon

Synergy

Kind

Aligator

Envisioned: Verification Tool Workflow

Page 16: Symbolic  program analysis   as  Satisfiability Modulo  Theories

Procedures Horn Formulas

Summary as commands

Verifying procedure calls

Page 17: Symbolic  program analysis   as  Satisfiability Modulo  Theories

Modular Concurrency Horn Clauses

[Predicate Abstraction and Refinement for Verifying Multi-Threaded ProgramsGupta, Popeea, Rybalchenko, POPL 2011]

Page 18: Symbolic  program analysis   as  Satisfiability Modulo  Theories

Horn Clauses

Γ⊢ {𝑥 :𝜏|𝑃 (𝑥)}→ {𝑦 :𝜎|𝑄(𝑥 , 𝑦 )}≺ {𝑥 :𝜏|𝑃 ′ (𝑥)}→ {𝑦 :𝜎|𝑄 ′ (𝑥 , 𝑦)}

Extract sufficient Horn Conditions

Page 19: Symbolic  program analysis   as  Satisfiability Modulo  Theories

Generalized Horn Formulas

In a nutshell, solving partial correctness amounts to checking truth value of formulas of the form:

E.g., satisfiability of:

Page 20: Symbolic  program analysis   as  Satisfiability Modulo  Theories

Generalized Horn Formulas

Handling background axioms:

Remark:Abductive Logic Programming amounts to symbolic simulation: - - is consistent

eg. solve for negation of above formula:

Page 21: Symbolic  program analysis   as  Satisfiability Modulo  Theories

A New PDR Engine for Fixedpoints

PDR (aka. IC3) – Property Directed Reachability algorithmBreakthrough in Symbolic Model Checking of Hardware [Aaron Bradley, VMCAI 2011]

Transition Decomposes main stepsSystem ÷ priority queueFormulation

Procedures Regular vs. Push Down systems

Beyond Linear Real ArithmeticPropositional - Timed Automata Decision ProcedureLogic - Interpolants from models

Original Algorithm Description in code.Tough to digest. Rule + strategy description could help deconstruct the steps.

Original Algorithm Applies to Hardware (Finite State Automata). Software has procedure calls.

Original Algorithm is for Finite State SystemsOpen question what it meant to incorporate Infinite State systems (= theories)

[Hoder & Bjørner, SAT 2012]

Page 22: Symbolic  program analysis   as  Satisfiability Modulo  Theories

PDR as a Transition SystemObjective is to solve for R such that

Elements of PDR encoded as transitions:

Over-approximate reachable states

Search for counter-examples to Resolve and Propagate conflicts

Page 23: Symbolic  program analysis   as  Satisfiability Modulo  Theories

PDR as a Transition SystemObjective is to solve for R such that

Initialize:

Main invariant:

𝑺𝒂𝒇𝒆 ¿ ¿ 𝑹𝟏≔ 𝒕𝒓𝒖𝒆 ¿↖ ¿↗ ¿↖ ¿

¿¿¿ F (𝑹𝟎 )¿

𝑺𝒂𝒇𝒆 ¿ ¿ 𝑹𝒊+𝟏 ¿↖ ¿↗ ¿↖ ¿

¿¿¿ F (𝑹𝒊 )¿

Page 24: Symbolic  program analysis   as  Satisfiability Modulo  Theories

PDR a visual overview

Search for over-approximations of states

Is valid?

Page 25: Symbolic  program analysis   as  Satisfiability Modulo  Theories

PDR

Initially: N = 0, start with

Is valid?

Page 26: Symbolic  program analysis   as  Satisfiability Modulo  Theories

PDRIs valid?

Unfold to the next level if

Page 27: Symbolic  program analysis   as  Satisfiability Modulo  Theories

PDRIs valid?

Main Invariant is established for N = 1

Page 28: Symbolic  program analysis   as  Satisfiability Modulo  Theories

PDRIs valid?

Model

Page 29: Symbolic  program analysis   as  Satisfiability Modulo  Theories

PDRIs valid?

C,

Page 30: Symbolic  program analysis   as  Satisfiability Modulo  Theories

PDRIs valid?

Unfold to the next level if

Page 31: Symbolic  program analysis   as  Satisfiability Modulo  Theories

PDR

Etc.

Is valid?

Page 32: Symbolic  program analysis   as  Satisfiability Modulo  Theories

PDR

Etc.

Is valid?

Page 33: Symbolic  program analysis   as  Satisfiability Modulo  Theories

PDRIs valid?

Valid Formula is valid if

is a post-fixed point implies

Page 34: Symbolic  program analysis   as  Satisfiability Modulo  Theories

PDRIs valid?

Induction w

Page 35: Symbolic  program analysis   as  Satisfiability Modulo  Theories

PDRIs valid?

Induction w

Page 36: Symbolic  program analysis   as  Satisfiability Modulo  Theories

PDRIs valid?

Induction w

Page 37: Symbolic  program analysis   as  Satisfiability Modulo  Theories

PDRIs valid?

Induction w

Page 38: Symbolic  program analysis   as  Satisfiability Modulo  Theories

PDRIs valid?

Induction w

Monotonicity of F

Page 39: Symbolic  program analysis   as  Satisfiability Modulo  Theories

PDRIs valid?

Induction w

Page 40: Symbolic  program analysis   as  Satisfiability Modulo  Theories

PDRIs valid?

Induction w

Page 41: Symbolic  program analysis   as  Satisfiability Modulo  Theories

PDRIs valid?

Decide

Page 42: Symbolic  program analysis   as  Satisfiability Modulo  Theories

PDRIs valid?

Decide

Page 43: Symbolic  program analysis   as  Satisfiability Modulo  Theories

Non-linear fixed-pointsRecall:

Is feasible?

Start with summary

feasible?

Yes, e.g., Is reachable? (in

Page 44: Symbolic  program analysis   as  Satisfiability Modulo  Theories

Non-linear transformersR=90

M(87) = M(M(98)) = M(M(M(109))) = M(M(99))= M(M(M(110))) = M(M(100)) = M(M(M(111))) = M(M(101)) = M(91) = M(M(102)) = M(92) = M(M(103)) = M(93) …

Checking against controls depth, but potentially wide tree.Our approach: build DAG by sharing states. Sharing is cheap, even no sharing works on Bebop

Benchmarks from the SLAMResearch toolkit

Page 45: Symbolic  program analysis   as  Satisfiability Modulo  Theories

Arithmetic

R(0,0,0,0). Initial statesT(L,M,Y1,Y2,L’,M’,Y1’,Y2’)R(L,M,Y1,Y2) R(L’,M’,Y1’,Y2’) Reachable states R(2,2,Y1,Y2) false Is unsafe state reachable?Step(L,L’,Y1,Y2,Y1’) T(L,M,Y1,Y2,L’,M,Y1’,Y2) P1 takes a stepStep(M,M’,Y2,Y1,Y2’) T(L,M,Y1,Y2,L,M’,Y1,Y2’) P2 takes a stepStep(0,1,Y1,Y2,Y2+1) (Y1 Y2 Y2 = 0) Step(1,2,Y1,Y2,Y1) Step(2,3,Y1,Y2,Y1) Step(3,0,Y1,Y2,0)

Mutual Exclusion

Clauses have model

Page 46: Symbolic  program analysis   as  Satisfiability Modulo  Theories

Search: Mile-high perspective

F (𝐼 )𝐼 F2(𝐼 ) B (¬𝑆 ) ¬𝑆Conflict

ResolutionConflict

PropagationConflict

Propagation

Page 47: Symbolic  program analysis   as  Satisfiability Modulo  Theories

PDR(T): Conflict Resolution

Conflict Resolution

Conflict ResolutionGet Generalization from Farkas

Lemma Eg., resolve away blue internal

variables

𝒀 𝟐≥𝒀 𝟏+𝟏∧𝒀 𝟏≥𝟎 𝒀 𝟐≤0𝒀 𝟐≥𝟏𝒀 𝟐≤0 ∧

Page 48: Symbolic  program analysis   as  Satisfiability Modulo  Theories

PDR(T): Conflict Resolution

Conflict Resolution

𝑴=𝟏→𝒀 𝟐≥𝟏 𝑴=𝟏→𝒀 𝟐≥𝟏 𝑴=𝟏→𝒀 𝟐≥𝟏Conflict PropagationConflict Propagation

Page 49: Symbolic  program analysis   as  Satisfiability Modulo  Theories

PDR(T): Generalization from T-lemmas

Can we satisfy? Initial states

Reachable states Unsafe state is unreachable

is unsatisfiable

E.g., there is unsat core of:

Unsat proof uses T-lemmas

Page 50: Symbolic  program analysis   as  Satisfiability Modulo  Theories

PDR(T): Generalization from T-lemmas

Can we satisfy? Initial states

Reachable states Unsafe state is unreachable

Unsat proof uses T-lemmas

Page 51: Symbolic  program analysis   as  Satisfiability Modulo  Theories

PDR(LRA): Timed automataObservation:

PDR + Model refinement using Farkas strengthening

is a decision procedure for timed push-down systems

Justification:

Every lemma produced is a sum of differences from the input~Acyclic path in difference graph.

Finite set of Farkas lemmas possible.

Page 52: Symbolic  program analysis   as  Satisfiability Modulo  Theories

N+1 degrees of separationObjective:

synthesize inductive invariant proving property.

Reaching objective with interpolants: Synthesize interpolants, use for proving invariants. Be

admired.Synthesize interpolants, evaluate on random formulas. Admire

them.Write papers about interpolants. Admire the

theorems.Review papers about generating interpolants. Watch Kevin

Bacon.

Reaching objective with PDR:…. Nevertheless, interpolants sneak in.

Page 53: Symbolic  program analysis   as  Satisfiability Modulo  Theories

What is a Craig Interpolant?Suppose A Craig Interpolant is formula

Horn version. Establish satisfiability of:

and find solution for

Page 54: Symbolic  program analysis   as  Satisfiability Modulo  Theories

PDR(T): Interpolants as a side-effect

Intermediary solutions:

Observation: Farkas strengthening computes a “DAG interpolant” for LRA

i.e., solves for non-recursive Horn clauses

Page 55: Symbolic  program analysis   as  Satisfiability Modulo  Theories

SummaryThe question is: Quantified Horn Clause Satisfiability Modulo Theories

PDR Generalized:- as an abstract Transition System- for Horn Clause Satisfiability over Theory of

Arithmetic

- Using Farkas to generalize failed counter-example traces - Difference Logic – a Model Checking algorithm for Timed Automata- Interpolants from Model refinements

- Propagate also properties for predicates (so far inefficient)

http://rise4fun.com/Z3Py/tutorial/fixedpoints

Page 56: Symbolic  program analysis   as  Satisfiability Modulo  Theories

PDR as a Transition System

Page 57: Symbolic  program analysis   as  Satisfiability Modulo  Theories
Page 58: Symbolic  program analysis   as  Satisfiability Modulo  Theories

Bottom-up Datalog: Engine

Restarts

Compilation

RelationalAlgebraAbstractMachine

Page 59: Symbolic  program analysis   as  Satisfiability Modulo  Theories

Bottom-up Datalog: RelationsTables

Hash-table

BDD

Bit-vectors

Relations

SMT

Explanations

External

Abstractions

Intervals

Bounds

Compositions

Relation product

xy

z10

10

+ =

Intervals Bounds

Pentagons = +