Leonardo de Moura and Nikolaj Bjrner Microsoft Research - - PowerPoint PPT Presentation

leonardo de moura and nikolaj bj rner microsoft research
SMART_READER_LITE
LIVE PREVIEW

Leonardo de Moura and Nikolaj Bjrner Microsoft Research - - PowerPoint PPT Presentation

Leonardo de Moura and Nikolaj Bjrner Microsoft Research Verification/Analysis tools need some form of Symbolic Reasoning Verification/Analysis tools need some form of Symbolic Reasoning Many Flavors: SAT Solvers SMT Solvers First-order


slide-1
SLIDE 1

Leonardo de Moura and Nikolaj Bjørner Microsoft Research

slide-2
SLIDE 2

Verification/Analysis tools need some form of Symbolic Reasoning

slide-3
SLIDE 3

Verification/Analysis tools need some form of Symbolic Reasoning

Many Flavors: SAT Solvers SMT Solvers First-order Theorem Provers Computer Algebra Systems

slide-4
SLIDE 4

Is formula F satisfiable modulo theory T ?

slide-5
SLIDE 5

Is formula F satisfiable modulo theory T ?

Arithmetic, Bit-vectors, Arrays, Inductive data-types, ….

slide-6
SLIDE 6

Example:

1>2

Satisfiable if the symbols 1,2 and > are uninterpreted. |M| = {  } M(1) = M(2) =  M(>) = { (, ) } Unsatisfiable modulo the theory arithmetic

slide-7
SLIDE 7

b + 2 = c and f(select(store(a,b,3), c-2) ≠ f(c-b+1)

slide-8
SLIDE 8

b + 2 = c and f(select(store(a,b,3), c-2) ≠ f(c-b+1)

slide-9
SLIDE 9

Array Theory

b + 2 = c and f(select(store(a,b,3), c-2) ≠ f(c-b+1)

slide-10
SLIDE 10

b + 2 = c and f(select(store(a,b,3), c-2) ≠ f(c-b+1)

slide-11
SLIDE 11

Test case generation Verifying Compilers Predicate Abstraction Invariant Generation Type Checking Model Based Testing

slide-12
SLIDE 12

VCC

Hyper-V

Terminator T-2 NModel

HAVOC F7 SAGE Vigilante

SpecExplorer

Prefix

slide-13
SLIDE 13

A theory T is a set of first-order sentences. F is satisfiable modulo T iff TF is satisfiable.

slide-14
SLIDE 14

a, i, v. select(store(a, i, v),i) = v a, i, j, v: i = j  select(store(a, i, v), j) = select(a, j)

slide-15
SLIDE 15

a, i, v. select(store(a, i, v),i) = v a, i, j, v: i = j  select(store(a, i, v), j) = select(a, j)

We say store is a combinator.

slide-16
SLIDE 16

a, i, v. select(store(a, i, v),i) = v a, i, j, v: i = j  select(store(a, i, v), j) = select(a, j) a, i, v. store(a, i, v)[i] = v a, i, j, v: i = j  store(a, i, v)[j] = a[i]

slide-17
SLIDE 17

It is used to model the memory in Hardware/Software verification/analysis tools

slide-18
SLIDE 18

a, b: (i: a[i] = b[i])  a = b

slide-19
SLIDE 19

We have arrays from T1 to T2 T1 does not need to be the Integers

slide-20
SLIDE 20

a = store(b, 0, 5), b = store(c, 1, 10), c[0] = 2 M(a) = { 0  5, 1  10, else  0 } M(b) = { 0  2, 1  10, else  0 } M(c) = { 0  2, else  0 }

slide-21
SLIDE 21

1962 - McCarthy proposes the Basic Array Theory. 1968 - Kaplan solves the satisfiability problem. 1981 - Nelson propose a simple procedure based on (lazy) instantiation (PhD thesis). 2001 - Stump, Barrett, Dill and Levitt propose a procedure for extentional arrays. 2005 - Lazy instantiation is used in Yices (it wins all array divisions in SMT-COMP from 2005 - 2007). 2005 - Kapur and Zarba propose the reduction approach (many array-like theories are described). 2006 - Bradley, Manna and Sipma propose a procedure for a rich decidable array fragment.

slide-22
SLIDE 22

2008 - Goel, Krstic and Fuchs formalize the lazy instantiation approach. 2008 - Bofill, Nieuwenhuis, Oliveras, Rodriguez-Carbonell and Rubio propose the store-reduction approach “Model-Based” approaches: 2007 - Ganesh and Dill, “a decision procedure for bitvectors and arrays”, CAV’07 2008 - Brummayer and Biere, “lemmas on demand for the extentional theory of arrays”, SMT’08

slide-23
SLIDE 23

“Rewrite-Based” approaches: 2002 - Lynch and Morawska, “Automatic Decidability”, LICS 2005 - Armando, Bonacina, Ranise and Schulz propose the rewrite based approach. Arrays in hardware verification: 1994 - Burch and Dill, “Automatic Verification of pipelined microprocessor control”, CAV 2006 - Manolios, Srinivasan, Vroon, “Automatic memory reductions for RTL model verification”, ICCAD More relevant work can be found in our paper…

slide-24
SLIDE 24

Recipe: Given a formula F

1) Collect all array terms in F 2) Collect all indices in F 3) Instantiate array axioms using 1 and 2

F’ = F  Instances

4) Execute EUF solver on F’

Array theory is a local theory extension.

slide-25
SLIDE 25

a = store(b, i, v), a[j]  v, c[k] = v, i = j array terms: a, b, store(b, i, v), c indices: i, j, k

slide-26
SLIDE 26

a = store(b, i, v), a[j]  v, c[k] = v, i = j array terms: a, b, store(b, i, v), c indices: i, j, k Instances: store(a, i, v)[i] = v, store(a, j, v)[j] = v, … i = j  store(a, i, v)[j] = a[i], … Problem: Many useless instances!

slide-27
SLIDE 27

a = store(b, i, v), a[j]  v, c[k] = v, i = j array terms: a, b, store(b, i, v), c indices: i, j, k Instances: store(a, i, v)[i] = v, store(a, j, v)[j] = v, … i = j  store(a, i, v)[j] = a[i], … Problem: Many useless instances!

Lazy instantiation: select a small subset of instances. (more later)

slide-28
SLIDE 28

A generalization of the Array theory CAL: Combinatory Array Logic New filters for minimizing the number of instances A simple architecture for non-stably infinite theories We want arrays of bit-vectors.

slide-29
SLIDE 29

v,i: K(v)[i] = v a1,…, an, i: mapf(a1,…, an)[i] = f(a1[i], …, an[i])

slide-30
SLIDE 30

v,i: K(v)[i] = v a1,…, an, i: mapf(a1,…, an)[i] = f(a1[i], …, an[i])

Suggested by Stump, Barrett, Dill, Levitt Their procedure works for infinite-domain satisfiability.

slide-31
SLIDE 31

v,i: K(v)[i] = v a1,…, an, i: mapf(a1,…, an)[i] = f(a1[i], …, an[i])

“Family” of combinators. We can instantiate it with any f.

slide-32
SLIDE 32

mapf( , ) =

… … v1 v2 v3 v4 v5 … … w1 w2 w3 w4 w5 … … f(v1,w1) f(v2,w2) f(v3,w3) f(v4,w4) f(v5,w5)

slide-33
SLIDE 33

Set of T as an Array from T to Boolean   K(false) {a}  store(, a, true) a  S  S[a] S1  S2  map(S1, S2) S1  S2  map(S1, S2)

slide-34
SLIDE 34

Set of T as an Array from T to Boolean   K(false) {a}  store(, a, true) a  S  S[a] S1  S2  map(S1, S2) S1  S2  map(S1, S2) But not cardinality |S|, power-set, …

slide-35
SLIDE 35

Bag of T as an Array from T to Integer   K(0) {a}  store(, a, 1) mult(a, B)  B[a] B1  B2  map+(B1, B2) B1  B2  mapmin(B1, B2)

slide-36
SLIDE 36

mapite( ,

… … T F T T F … … w1 w2 w3 w4 w5 … … v1 v2 v3 v4 v5

, ) =

… … v1 w2 v3 v4 w5

slide-37
SLIDE 37

Support for equality and uninterpreted functions (EUF) Set of strongly disjoint theories (more later) Clauses and literals Boolean terms a  t – a is a name for the term t a:  – a has sort  a  b – a and b are equal in the current context

slide-38
SLIDE 38

a  b – a and b are equal in the current context a  t – a is a name for the term t a:() – a is an array from  to 

slide-39
SLIDE 39

Extensionality is applied to every pair of array constants. Upwards propagation distributes index over all modifications of same array.

slide-40
SLIDE 40

Extensionality is applied to every pair of array constants. Upwards propagation distributes index over all modifications of same array. Delay the application of ext and . Only works for unsatisfiable instances.

slide-41
SLIDE 41

Ignore “congruent” axiom instances

slide-42
SLIDE 42

Extensionality is applied to every pair of array constants. Restrict to constants asserted to be different or foreign. We say a is foreign if there is b s.t. a  b and b is the argument of an uninterpreted function symbol.

slide-43
SLIDE 43

Example: a = store(b, i, v), b[i] = v, f(a)  f(b)

slide-44
SLIDE 44

We do not need to add the extensionality axiom for (a,b) if they are already known to be disequal.

slide-45
SLIDE 45

We do not need to add the extensionality axiom for (a,b) if they are already known to be disequal.

b1

Typo in the paper! Should be b1

slide-46
SLIDE 46

Scenario from software verification Bunch of facts about the initial state of the heap a0[i0] = v0, a0[i1] = v1, a0[i2] = v2, … Perform a series of updates a1= store(a0, j1, w1), a2= store(a1, j2, w2), … Check some property on the final heap an[k]  v

slide-47
SLIDE 47

store(a, i, v1) = store(b, i, v2), i  k, a[k]  b[k]

slide-48
SLIDE 48
slide-49
SLIDE 49
slide-50
SLIDE 50
slide-51
SLIDE 51

Potentially unsound if F only has models M where M() is finite.

slide-52
SLIDE 52

We also have a restricted version of map using linear stratification (see paper for details). Default-value extension (new theory symbol ), and alternative for and

slide-53
SLIDE 53

Efficient Core Strongly disjoint theories + Unintepreted functions Strongly disjoint theory  Sort disjoint Examples: Arithmetic, Bitvectors and Booleans All other theories are reduced to this core. Not covered today: inductive datatypes.

slide-54
SLIDE 54

Arrays are useful in practice. They are used in many verification tools at Microsoft. CAL is a useful extension of the array theory. Simple combination architecture. Efficient and easy to implement.

slide-55
SLIDE 55

Arrays are useful in practice. They are used in many verification tools at Microsoft. CAL is a useful extension of the array theory. Simple combination architecture. Efficient and easy to implement.

Thank You!