Top Banner
Nested Interpolants Matthias Heizmann Jochen Hoenicke Andreas Podelski University of Freiburg, Germany POPL 2010
32

Nested Interpolants - informatik.uni-freiburg.deheizmann/2010POPL... · Rajeev Alur Marrying words and trees (PODS 2007) Rajeev Alur, P. Madhusudan Adding nesting structure to words

May 25, 2020

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: Nested Interpolants - informatik.uni-freiburg.deheizmann/2010POPL... · Rajeev Alur Marrying words and trees (PODS 2007) Rajeev Alur, P. Madhusudan Adding nesting structure to words

Nested Interpolants

Matthias Heizmann Jochen Hoenicke Andreas Podelski

University of Freiburg, Germany

POPL 2010

Page 2: Nested Interpolants - informatik.uni-freiburg.deheizmann/2010POPL... · Rajeev Alur Marrying words and trees (PODS 2007) Rajeev Alur, P. Madhusudan Adding nesting structure to words
Page 3: Nested Interpolants - informatik.uni-freiburg.deheizmann/2010POPL... · Rajeev Alur Marrying words and trees (PODS 2007) Rajeev Alur, P. Madhusudan Adding nesting structure to words

Result

Interpolant-based software model checkingfor recursive programs

I avoid construction of an abstract program

I Hoare logic ! nested words

Page 4: Nested Interpolants - informatik.uni-freiburg.deheizmann/2010POPL... · Rajeev Alur Marrying words and trees (PODS 2007) Rajeev Alur, P. Madhusudan Adding nesting structure to words

Software model checking

Thomas Ball, Sriram K. Rajamani:

The SLAM project: debugging system software via static analysis. (POPL 2002)

Thomas A. Henzinger, Ranjit Jhala, Rupak Majumdar, Gregoire Sutre

Lazy abstraction. (POPL 2002)

Thomas A. Henzinger, Ranjit Jhala, Rupak Majumdar, Kenneth L. McMillan

Abstractions from proofs. (POPL 2004)

program abstract program invariant

theoremproving

modelchecking

Bottleneck: Construction of abstract program

Page 5: Nested Interpolants - informatik.uni-freiburg.deheizmann/2010POPL... · Rajeev Alur Marrying words and trees (PODS 2007) Rajeev Alur, P. Madhusudan Adding nesting structure to words

Software model checking

Thomas Ball, Sriram K. Rajamani:

The SLAM project: debugging system software via static analysis. (POPL 2002)

Thomas A. Henzinger, Ranjit Jhala, Rupak Majumdar, Gregoire Sutre

Lazy abstraction. (POPL 2002)

Thomas A. Henzinger, Ranjit Jhala, Rupak Majumdar, Kenneth L. McMillan

Abstractions from proofs. (POPL 2004)

program abstract program invariant

theoremproving

modelchecking

Bottleneck: Construction of abstract program

Page 6: Nested Interpolants - informatik.uni-freiburg.deheizmann/2010POPL... · Rajeev Alur Marrying words and trees (PODS 2007) Rajeev Alur, P. Madhusudan Adding nesting structure to words

Recent approaches:Avoid construction of abstract program

Franjo Ivancic, Ilya Shlyakhter, Aarti Gupta, Malay K. Ganai

Model checking C programs using F-SOFT (ICCD 2005)

Kenneth L. McMillan

Lazy abstraction with interpolants (CAV 2006)

Nels Beckman, Aditya V. Nori, Sriram K. Rajamani, Robert J. Simmons

Proofs from tests (ISSTA 2008)

Bhargav S. Gulavani, Supratik Chakraborty, Aditya V. Nori, Sriram K. Rajamani

Automatically refining abstract interpretations (TACAS 2008)

Page 7: Nested Interpolants - informatik.uni-freiburg.deheizmann/2010POPL... · Rajeev Alur Marrying words and trees (PODS 2007) Rajeev Alur, P. Madhusudan Adding nesting structure to words

One idea:Use interpolants to avoid construction of the abstract program

program abstract program invariant

theoremproving

modelchecking

interpolating theorem prover

Ranjit Jhala, Kenneth L. McMillan

A practical and complete approach to predicate refinement (TACAS 2006)

Kenneth L. McMillan

Lazy abstraction with interpolants (CAV 2006)

Quantified invariant generation using an interpolating saturation prover (TACAS 2008)

Open: Interpolants in interprocedural analysis

Page 8: Nested Interpolants - informatik.uni-freiburg.deheizmann/2010POPL... · Rajeev Alur Marrying words and trees (PODS 2007) Rajeev Alur, P. Madhusudan Adding nesting structure to words

One idea:Use interpolants to avoid construction of the abstract program

program abstract program invariant

theoremproving

modelchecking

interpolating theorem prover

Ranjit Jhala, Kenneth L. McMillan

A practical and complete approach to predicate refinement (TACAS 2006)

Kenneth L. McMillan

Lazy abstraction with interpolants (CAV 2006)

Quantified invariant generation using an interpolating saturation prover (TACAS 2008)

Open: Interpolants in interprocedural analysis

Page 9: Nested Interpolants - informatik.uni-freiburg.deheizmann/2010POPL... · Rajeev Alur Marrying words and trees (PODS 2007) Rajeev Alur, P. Madhusudan Adding nesting structure to words

Interprocedural static analysis - motivation

Recursive Programs?

Modularity!

Interprocedural analysis, a classical topic in programming languages

Micha Sharir, Amir Pnueli

Two approaches to interprocedural data flow analysis (1981)

Thomas W. Reps, Susan Horwitz, Shmuel Sagiv

Precise interprocedural dataflow analysis via graph reachability (POPL 1995)

Shaz Qadeer, Sriram K. Rajamani, Jakob Rehof

Summarizing procedures in concurrent programs (POPL 2004)

Page 10: Nested Interpolants - informatik.uni-freiburg.deheizmann/2010POPL... · Rajeev Alur Marrying words and trees (PODS 2007) Rajeev Alur, P. Madhusudan Adding nesting structure to words

Interprocedural static analysis - motivation

Recursive Programs?

Modularity!

Interprocedural analysis, a classical topic in programming languages

Micha Sharir, Amir Pnueli

Two approaches to interprocedural data flow analysis (1981)

Thomas W. Reps, Susan Horwitz, Shmuel Sagiv

Precise interprocedural dataflow analysis via graph reachability (POPL 1995)

Shaz Qadeer, Sriram K. Rajamani, Jakob Rehof

Summarizing procedures in concurrent programs (POPL 2004)

Page 11: Nested Interpolants - informatik.uni-freiburg.deheizmann/2010POPL... · Rajeev Alur Marrying words and trees (PODS 2007) Rajeev Alur, P. Madhusudan Adding nesting structure to words

Interprocedural static analysis - motivation

Recursive Programs?

Modularity!

Interprocedural analysis, a classical topic in programming languages

Micha Sharir, Amir Pnueli

Two approaches to interprocedural data flow analysis (1981)

Thomas W. Reps, Susan Horwitz, Shmuel Sagiv

Precise interprocedural dataflow analysis via graph reachability (POPL 1995)

Shaz Qadeer, Sriram K. Rajamani, Jakob Rehof

Summarizing procedures in concurrent programs (POPL 2004)

Page 12: Nested Interpolants - informatik.uni-freiburg.deheizmann/2010POPL... · Rajeev Alur Marrying words and trees (PODS 2007) Rajeev Alur, P. Madhusudan Adding nesting structure to words

Interpolants

Interpolant - for a proof

Given: Proof A ⇒ B

Interpolation: A ⇒ I ⇒ B .

... automatically generated by SMT solver (Craig interpolation)

Interpolant - for an execution traces

Given: Infeasible trace st1 . . . sti sti+1 . . . stn

Interpolation: post( true , st1 . . . sti ) ⊆ I ⊆ wp( sti+1 . . . stn , false )

... can be new formula, not contained in program

Page 13: Nested Interpolants - informatik.uni-freiburg.deheizmann/2010POPL... · Rajeev Alur Marrying words and trees (PODS 2007) Rajeev Alur, P. Madhusudan Adding nesting structure to words

Interpolants

Interpolant - for a proof

Given: Proof A ⇒ B

Interpolation: A ⇒ I ⇒ B .

... automatically generated by SMT solver (Craig interpolation)

Interpolant - for an execution traces

Given: Infeasible trace st1 . . . sti sti+1 . . . stn

Interpolation: post( true , st1 . . . sti ) ⊆ I ⊆ wp( sti+1 . . . stn , false )

... can be new formula, not contained in program

Page 14: Nested Interpolants - informatik.uni-freiburg.deheizmann/2010POPL... · Rajeev Alur Marrying words and trees (PODS 2007) Rajeev Alur, P. Madhusudan Adding nesting structure to words

Inductive interpolants

Construct sequence of interpolants I0 . . . In inductively

post( Ii , sti ) ⊆ Ii+1

suitable Hoare annotation to prove infeasibility of program slice

What if execution trace contains procedure calls?

Page 15: Nested Interpolants - informatik.uni-freiburg.deheizmann/2010POPL... · Rajeev Alur Marrying words and trees (PODS 2007) Rajeev Alur, P. Madhusudan Adding nesting structure to words

Inductive interpolants

Construct sequence of interpolants I0 . . . In inductively

post( Ii , sti ) ⊆ Ii+1

suitable Hoare annotation to prove infeasibility of program slice

What if execution trace contains procedure calls?

Page 16: Nested Interpolants - informatik.uni-freiburg.deheizmann/2010POPL... · Rajeev Alur Marrying words and trees (PODS 2007) Rajeev Alur, P. Madhusudan Adding nesting structure to words

Interpolants for interprocedural analysis

What is an interpolant for an interprocedural execution?

I state with a stack? locality of interpolant is lost

I only local valuations? call/return dependency lost, sequence of interpolants is not a proof

Page 17: Nested Interpolants - informatik.uni-freiburg.deheizmann/2010POPL... · Rajeev Alur Marrying words and trees (PODS 2007) Rajeev Alur, P. Madhusudan Adding nesting structure to words

Interpolants for interprocedural analysis

What is an interpolant for an interprocedural execution?

I state with a stack? locality of interpolant is lost

I only local valuations? call/return dependency lost, sequence of interpolants is not a proof

Page 18: Nested Interpolants - informatik.uni-freiburg.deheizmann/2010POPL... · Rajeev Alur Marrying words and trees (PODS 2007) Rajeev Alur, P. Madhusudan Adding nesting structure to words

Interpolants for interprocedural analysis

What is an interpolant for an interprocedural execution?

I state with a stack? locality of interpolant is lost

I only local valuations? call/return dependency lost, sequence of interpolants is not a proof

Page 19: Nested Interpolants - informatik.uni-freiburg.deheizmann/2010POPL... · Rajeev Alur Marrying words and trees (PODS 2007) Rajeev Alur, P. Madhusudan Adding nesting structure to words

Our gordian knot

How can we keep track of the call/return dependency in a sequence ofstates without a stack?

Page 20: Nested Interpolants - informatik.uni-freiburg.deheizmann/2010POPL... · Rajeev Alur Marrying words and trees (PODS 2007) Rajeev Alur, P. Madhusudan Adding nesting structure to words
Page 21: Nested Interpolants - informatik.uni-freiburg.deheizmann/2010POPL... · Rajeev Alur Marrying words and trees (PODS 2007) Rajeev Alur, P. Madhusudan Adding nesting structure to words

Nested words

Idea: Add call/return dependency explicitly to the word

Rajeev Alur

Marrying words and trees (PODS 2007)

Rajeev Alur, P. Madhusudan

Adding nesting structure to words (DLT 2006, J. ACM 56(3) 2009)

Rajeev Alur, Swarat Chaudhuri

Temporal reasoning for procedural programs (VMCAI 2010)

Page 22: Nested Interpolants - informatik.uni-freiburg.deheizmann/2010POPL... · Rajeev Alur Marrying words and trees (PODS 2007) Rajeev Alur, P. Madhusudan Adding nesting structure to words

Nested words

Idea: Add call/return dependency explicitly to the word

Rajeev Alur

Marrying words and trees (PODS 2007)

Rajeev Alur, P. Madhusudan

Adding nesting structure to words (DLT 2006, J. ACM 56(3) 2009)

Rajeev Alur, Swarat Chaudhuri

Temporal reasoning for procedural programs (VMCAI 2010)

Page 23: Nested Interpolants - informatik.uni-freiburg.deheizmann/2010POPL... · Rajeev Alur Marrying words and trees (PODS 2007) Rajeev Alur, P. Madhusudan Adding nesting structure to words

Nested interpolants

What is a sequence of interpolants for an interprocedural execution?

Idea: Define sequence interpolants with respect to nested trace

post(Ii , Ik , return

)⊆ Ii+1

Page 24: Nested Interpolants - informatik.uni-freiburg.deheizmann/2010POPL... · Rajeev Alur Marrying words and trees (PODS 2007) Rajeev Alur, P. Madhusudan Adding nesting structure to words

Nested interpolants

What is a sequence of interpolants for an interprocedural execution?

Idea: Define sequence interpolants with respect to nested trace

post(Ii , Ik , return

)⊆ Ii+1

Page 25: Nested Interpolants - informatik.uni-freiburg.deheizmann/2010POPL... · Rajeev Alur Marrying words and trees (PODS 2007) Rajeev Alur, P. Madhusudan Adding nesting structure to words

Control flow as nested word automata

procedure m(x) returns (res)

`0: if x>100

`1: res:=x-10

else

`2: xm := x+11

`3: call m

`4: xm := resm

`5: call m

`6: res := resm

`7: assert (x<=101 -> res=91)return m

McCarthy 91 function

`0

`1

`2

`3

`4

`5

`6

`7

`err

x>100

res:=x-10

x<=100

xm:=x+11 call m

xm:=resm

call m

res:=resm

return m ↑ `3

return m ↑ `5

x≤101∧res6=91

nested word automaton

Page 26: Nested Interpolants - informatik.uni-freiburg.deheizmann/2010POPL... · Rajeev Alur Marrying words and trees (PODS 2007) Rajeev Alur, P. Madhusudan Adding nesting structure to words

Floyd-Hoare proof as nested word automata

procedure m(x) returns (res){>}

`0: if x>100

{x ≥ 101}

`1: res:=x-10

else

{x ≤ 100}

`2: xm := x+11

{xm ≤ 111}

`3: call m

{resm ≤ 101}

`4: xm := resm{xm ≤ 101}

`5: call m

{resm = 91}

`6: res := resm{res = 91 ∨ (x ≥ 101 ∧ res = x − 10)}

`7: assert (x<=101 -> res=91)return m

McCarthy 91 function

>

x ≥ 101

x ≤ 100

xm ≤ 111

resm ≤ 101

xm ≤ 101

resm = 91

res = 91∨x≥101∧res =x−10

x>100

res:=x-10

x<=100

xm:=x+11 call m

xm:=resm

call m

res:=resm

return m ↑ xm≤111

return m ↑ xm≤101

nested word automaton

e.g. post(x ≤ 100 , xm:=x+11

)⊆ xm ≤ 111

Page 27: Nested Interpolants - informatik.uni-freiburg.deheizmann/2010POPL... · Rajeev Alur Marrying words and trees (PODS 2007) Rajeev Alur, P. Madhusudan Adding nesting structure to words

Floyd-Hoare proof as nested word automata

procedure m(x) returns (res){>}

`0: if x>100

{x ≥ 101}

`1: res:=x-10

else

{x ≤ 100}

`2: xm := x+11

{xm ≤ 111}

`3: call m

{resm ≤ 101}

`4: xm := resm{xm ≤ 101}

`5: call m

{resm = 91}

`6: res := resm{res = 91 ∨ (x ≥ 101 ∧ res = x − 10)}

`7: assert (x<=101 -> res=91)return m

McCarthy 91 function

>

x ≥ 101

x ≤ 100

xm ≤ 111

resm ≤ 101

xm ≤ 101

resm = 91

res = 91∨x≥101∧res =x−10

x>100

res:=x-10

x<=100

xm:=x+11 call m

xm:=resm

call m

res:=resm

return m ↑ xm≤111

return m ↑ xm≤101

nested word automaton

e.g. post(x ≤ 100 , xm:=x+11

)⊆ xm ≤ 111

Page 28: Nested Interpolants - informatik.uni-freiburg.deheizmann/2010POPL... · Rajeev Alur Marrying words and trees (PODS 2007) Rajeev Alur, P. Madhusudan Adding nesting structure to words

Constructing a proof of correctnessCompute sequence of nested interpolants

x<=100

xm:=x+11

call m

x>100

res:=x-10

return m

xm:=resm

call m

x>100

res:=x-10

return m

res:=resm

x≤101∧res6=91)

ϕ0 : x−1≤100

ϕ1 : x1m=x−1+11

ϕ2 : x2 =x1

m

ϕ5 : res5m= res4

ϕ6 : x6m= res5

m

ϕ7 : x7 =x6

m

ϕ10 : res10m = res9

ϕ11 : res11 = res10

m

ϕ12 : x−1 ≤ 100 ∧ res11 6= 91

ϕ3 : x2 >100

ϕ4 : res4 =x2−10

ϕ8 : x7 >100

ϕ9 : res9 =x7−10

I0 : >

I1 : x≤100

I2 : xm≤111 I3 : >

I4 : >

I5 : res≤x − 10I6 : resm≤101

I7 : xm≤101 I8 : >

I9 : x≥101

I10 : x≥101 ∧ res =x − 10I11 : resm = 91

I12 : res = 91

I13 : ⊥

infeasible nested trace π SSA of π sequence of interpolants for π

Page 29: Nested Interpolants - informatik.uni-freiburg.deheizmann/2010POPL... · Rajeev Alur Marrying words and trees (PODS 2007) Rajeev Alur, P. Madhusudan Adding nesting structure to words

Constructing a proof of correctnessNested interpolant automaton

I0 : >

I1 : x≤100

I2 : xm≤111 I3 : >

I4 : >

I5 : res≤x − 10I6 : resm≤101

I7 : xm≤101 I8 : >

I9 : x≥101

I10 : x≥101 ∧ res =x − 10I11 : resm = 91

I12 : res = 91

I13 : ⊥

sequence of interpolants for π

q0

q1

q2 q3

q4

q5q6

q7 q8

q9

q10q11

q12

q13

x<=100

xm:=x+11

call m

x>100

res:=x-10

return m ↑ q2

xm:=resm

call m

x>100

res:=x-10

return m ↑ q7

res:=resm

x≤101∧res6=91)

x<=100

x<=100

return m ↑ q7

return m ↑ q2

nested interpolant automaton

Page 30: Nested Interpolants - informatik.uni-freiburg.deheizmann/2010POPL... · Rajeev Alur Marrying words and trees (PODS 2007) Rajeev Alur, P. Madhusudan Adding nesting structure to words

Constructing a proof of correctnessNested interpolant automaton

I0 : >

I1 : x≤100

I2 : xm≤111 I3 : >

I4 : >

I5 : res≤x − 10I6 : resm≤101

I7 : xm≤101 I8 : >

I9 : x≥101

I10 : x≥101 ∧ res =x − 10I11 : resm = 91

I12 : res = 91

I13 : ⊥

x<=100

xm:=x+11

call m

x>100

res:=x-10

return m

xm:=resm

call m

x>100

res:=x-10

return m

res:=resm

x≤101∧res6=91)

sequence of interpolants for π

q0

q1

q2 q3

q4

q5q6

q7 q8

q9

q10q11

q12

q13

x<=100

xm:=x+11

call m

x>100

res:=x-10

return m ↑ q2

xm:=resm

call m

x>100

res:=x-10

return m ↑ q7

res:=resm

x≤101∧res6=91)

x<=100

x<=100

return m ↑ q7

return m ↑ q2

nested interpolant automaton

Page 31: Nested Interpolants - informatik.uni-freiburg.deheizmann/2010POPL... · Rajeev Alur Marrying words and trees (PODS 2007) Rajeev Alur, P. Madhusudan Adding nesting structure to words

Constructing a proof of correctnessCEGAR

recursive program P

P is correct P is incorrect

L(A) ∩ L(AP ) = ∅ ? π ∈ L(AΣ) ?

no

return nested error trace πsuch that

π ∈ L(A) ∩ L(AP )

no

return refined abstraction A := A ∩AIwhere

AI is a nested interpolant automatonsuch thatπ ∈ L(AI)

yes yes

start with Asuch that

L(A) ⊇ L(AΣ)

Page 32: Nested Interpolants - informatik.uni-freiburg.deheizmann/2010POPL... · Rajeev Alur Marrying words and trees (PODS 2007) Rajeev Alur, P. Madhusudan Adding nesting structure to words

Conclusion

Interpolant-based software model checkingfor recursive programs

I avoid construction of an abstract program

I Hoare logic ! nested words