100
Craig Interpolation for Integer Arithmetic: Results, Implementation, Experiences Philipp R¨ ummer Uppsala University IWIL Workshop March 10th, 2012 1 / 84

Craig Interpolation for Integer Arithmetic: Results ... · Outline Craig Interpolation for Presburger Arithmetic Motivation Craig’s theorem Results and methods for integers Implementation,

  • Upload
    others

  • View
    11

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Craig Interpolation for Integer Arithmetic: Results ... · Outline Craig Interpolation for Presburger Arithmetic Motivation Craig’s theorem Results and methods for integers Implementation,

Craig Interpolation for Integer Arithmetic:Results, Implementation, Experiences

Philipp Rummer

Uppsala University

IWIL WorkshopMarch 10th, 2012

1 / 84

Page 2: Craig Interpolation for Integer Arithmetic: Results ... · Outline Craig Interpolation for Presburger Arithmetic Motivation Craig’s theorem Results and methods for integers Implementation,

Outline

Craig Interpolation for Presburger Arithmetic

� Motivation

� Craig’s theorem

� Results and methods for integers

Implementation, Experiences

� Implementation in the theorem prover Princess

� Experiences with Scala for solvers

� Some experimental data

2 / 84

Page 3: Craig Interpolation for Integer Arithmetic: Results ... · Outline Craig Interpolation for Presburger Arithmetic Motivation Craig’s theorem Results and methods for integers Implementation,

Motivation: inference of invariants

Generic verification problem (“safety”)

{ pre } while (*) Body { post }

Standard approach: loop rule using invariant

pre⇒ φ { φ } Body { φ } φ⇒ post

{ pre } while (*) Body { post }

How to compute φ automatically?

3 / 84

Page 4: Craig Interpolation for Integer Arithmetic: Results ... · Outline Craig Interpolation for Presburger Arithmetic Motivation Craig’s theorem Results and methods for integers Implementation,

From intermediate assertions to invariants

{pre} Body; Body {post} ?

Bounded model checking problem !

Compute intermediate assertion ψ1

{pre} Body {ψ1} {ψ1} Body {post}

pre is invariant !

[ψ1 ⇒ pre] [otherwise]

[McMillan, 2003]4 / 84

Page 5: Craig Interpolation for Integer Arithmetic: Results ... · Outline Craig Interpolation for Presburger Arithmetic Motivation Craig’s theorem Results and methods for integers Implementation,

From intermediate assertions to invariants

{pre} Body; Body {post} ?

Bounded model checking problem !

Compute intermediate assertion ψ1

{pre} Body {ψ1} {ψ1} Body {post}

pre is invariant !

[ψ1 ⇒ pre]

[otherwise]

[McMillan, 2003]4 / 84

Page 6: Craig Interpolation for Integer Arithmetic: Results ... · Outline Craig Interpolation for Presburger Arithmetic Motivation Craig’s theorem Results and methods for integers Implementation,

From intermediate assertions to invariants

{pre} Body; Body {post} ?

Bounded model checking problem !

Compute intermediate assertion ψ1

{pre} Body {ψ1} {ψ1} Body {post}

pre is invariant !

[ψ1 ⇒ pre] [otherwise]

[McMillan, 2003]4 / 84

Page 7: Craig Interpolation for Integer Arithmetic: Results ... · Outline Craig Interpolation for Presburger Arithmetic Motivation Craig’s theorem Results and methods for integers Implementation,

From intermediate assertions to invariants

{pre ∨ ψ1} Body; Body {post} ?

Bounded model checking problem !

Compute intermediate assertion ψ2

{pre ∨ ψ1} Body {ψ2} {ψ2} Body {post}

pre is invariant !

[ψ1 ⇒ pre] [otherwise]

[McMillan, 2003]4 / 84

Page 8: Craig Interpolation for Integer Arithmetic: Results ... · Outline Craig Interpolation for Presburger Arithmetic Motivation Craig’s theorem Results and methods for integers Implementation,

From intermediate assertions to invariants

{pre ∨ ψ1} Body; Body {post} ?

Bounded model checking problem !

Compute intermediate assertion ψ2

{pre ∨ ψ1} Body {ψ2} {ψ2} Body {post}

pre ∨ ψ1 is invariant !

[ψ2 ⇒ pre ∨ ψ1] [otherwise]

[McMillan, 2003]4 / 84

Page 9: Craig Interpolation for Integer Arithmetic: Results ... · Outline Craig Interpolation for Presburger Arithmetic Motivation Craig’s theorem Results and methods for integers Implementation,

From intermediate assertions to invariants

{pre ∨ ψ1} Body; Body {post} ?

Bounded model checking problem !

Compute intermediate assertion ψ2

{pre ∨ ψ1} Body {ψ2} {ψ2} Body {post}

pre ∨ ψ1 is invariant !

[ψ2 ⇒ pre ∨ ψ1] . . .

[McMillan, 2003]4 / 84

Page 10: Craig Interpolation for Integer Arithmetic: Results ... · Outline Craig Interpolation for Presburger Arithmetic Motivation Craig’s theorem Results and methods for integers Implementation,

How to compute intermediate assertions?

{ pre }

VC generation

pre (s0)Body; → Body (s0, s1)Body → Body (s1, s2)

{ post } → post (s2)

Theorem (Craig, 1957)

Suppose A→ C is a valid FOL implication.Then there is a formula I (an interpolant) such that

� A→ I and I → C are valid,

� every non-logical symbol of I occurs in both A and C .

5 / 84

Page 11: Craig Interpolation for Integer Arithmetic: Results ... · Outline Craig Interpolation for Presburger Arithmetic Motivation Craig’s theorem Results and methods for integers Implementation,

How to compute intermediate assertions?

{ pre }

VC generation

pre (s0)Body; → Body (s0, s1)Body → Body (s1, s2)

{ post } → post (s2)

Theorem (Craig, 1957)

Suppose A→ C is a valid FOL implication.Then there is a formula I (an interpolant) such that

� A→ I and I → C are valid,

� every non-logical symbol of I occurs in both A and C .

5 / 84

Page 12: Craig Interpolation for Integer Arithmetic: Results ... · Outline Craig Interpolation for Presburger Arithmetic Motivation Craig’s theorem Results and methods for integers Implementation,

How to compute intermediate assertions?

{ pre }

VC generation

pre (s0)Body; → Body (s0, s1)

I (s1)

A(s0, s1)

C(s1, s2)

Body → Body (s1, s2){ post } → post (s2)

Theorem (Craig, 1957)

Suppose A→ C is a valid FOL implication.Then there is a formula I (an interpolant) such that

� A→ I and I → C are valid,

� every non-logical symbol of I occurs in both A and C .

5 / 84

Page 13: Craig Interpolation for Integer Arithmetic: Results ... · Outline Craig Interpolation for Presburger Arithmetic Motivation Craig’s theorem Results and methods for integers Implementation,

Illustration

C

A

6 / 84

Interpolation problem: A→ I → C

Page 14: Craig Interpolation for Integer Arithmetic: Results ... · Outline Craig Interpolation for Presburger Arithmetic Motivation Craig’s theorem Results and methods for integers Implementation,

Illustration

C

I

A

6 / 84

Interpolation problem: A→ I → C

Page 15: Craig Interpolation for Integer Arithmetic: Results ... · Outline Craig Interpolation for Presburger Arithmetic Motivation Craig’s theorem Results and methods for integers Implementation,

Example

Program with assertion:

if (a == 2*x && a >= 0) {

b = a / 2;

c = 3*b + 1;

assert (c > a);

}

As a verification condition:

a = 2*x & a >= 0

->

2*b <= a & a <= 2*b + 1

->

c = 3*b + 1

->

c > a

7 / 84

Page 16: Craig Interpolation for Integer Arithmetic: Results ... · Outline Craig Interpolation for Presburger Arithmetic Motivation Craig’s theorem Results and methods for integers Implementation,

Example

Program with assertion:

if (a == 2*x && a >= 0) {

b = a / 2;

c = 3*b + 1;

assert (c > a);

}

As a verification condition:

a = 2*x & a >= 0

->

2*b <= a & a <= 2*b + 1

-> // Interpolant: 3*b >= a

c = 3*b + 1

-> // Interpolant: c >= a + 1

c > a

7 / 84

Page 17: Craig Interpolation for Integer Arithmetic: Results ... · Outline Craig Interpolation for Presburger Arithmetic Motivation Craig’s theorem Results and methods for integers Implementation,

Other applications of interpolation

� Blocking lemmas for test-case generation

� Refinement of abstractions in CEGAR

� Computation of summaries

� Synthesis

8 / 84

Page 18: Craig Interpolation for Integer Arithmetic: Results ... · Outline Craig Interpolation for Presburger Arithmetic Motivation Craig’s theorem Results and methods for integers Implementation,

Interpolation + theories

Interpolation procedures need to support the program logic:

i n t a [ ] , i ;max = a [ 0 ] ;f o r ( i = 1 ; i < n ; ++i )

i f ( a [ i ] > max)max = a [ i ] ;

a s s e r t (max >= a [ i / 2 ] ) ;

E.g., combined use of linear integer arithmetic and arrays

9 / 84

Page 19: Craig Interpolation for Integer Arithmetic: Results ... · Outline Craig Interpolation for Presburger Arithmetic Motivation Craig’s theorem Results and methods for integers Implementation,

Relevant questions, given a logic L

� Is L closed under interpolation?

� Practical interpolation procedures for L

Definition

Logic L is closed under interpolation iffor all A,B ∈ F such that A⇒ B, there is an interpolantexpressible in L.

� In particular:Is quantifier-free fragment of L closed under interpolation?

10 / 84

Page 20: Craig Interpolation for Integer Arithmetic: Results ... · Outline Craig Interpolation for Presburger Arithmetic Motivation Craig’s theorem Results and methods for integers Implementation,

Interpolation for integers

Presburger Arithmetic (QPA)

t ∶∶= α ∣ c ∣ x ∣ αt +⋯ + αt

φ ∶∶= φ ∧ φ ∣ φ ∨ φ ∣ ¬φ ∣ φ→ φ ∣ ∀x .φ ∣ ∃x .φ

∣ t ≐ 0 ∣ t ≤ 0 ∣ α ∣ t

t . . . terms

φ . . . formulae

x . . . variables

c . . . constant symbols

α . . . integer literals (Z)

11 / 84

Page 21: Craig Interpolation for Integer Arithmetic: Results ... · Outline Craig Interpolation for Presburger Arithmetic Motivation Craig’s theorem Results and methods for integers Implementation,

Interpolation for integers

Presburger Arithmetic (QPA)

t ∶∶= α ∣ c ∣ x ∣ αt +⋯ + αt

φ ∶∶= φ ∧ φ ∣ φ ∨ φ ∣ ¬φ ∣ φ→ φ ∣ ∀x .φ ∣ ∃x .φ

∣ t ≐ 0 ∣ t ≤ 0 ∣ α ∣ t

Mainly considered here: the quantifier-free fragment (PA)

11 / 84

Page 22: Craig Interpolation for Integer Arithmetic: Results ... · Outline Craig Interpolation for Presburger Arithmetic Motivation Craig’s theorem Results and methods for integers Implementation,

Interpolation by quantifier elimination (QE)

Theorem (QE for Presburger Arithmetic)

For every formula φ in full QPA, there is an equivalentquantifier-free formula ψ that can effectively be computed.

12 / 84

Page 23: Craig Interpolation for Integer Arithmetic: Results ... · Outline Craig Interpolation for Presburger Arithmetic Motivation Craig’s theorem Results and methods for integers Implementation,

Interpolation by quantifier elimination (2)

Lemma

If A→ C is a valid implication, then

� ∃local-syms(A)(A) is the strongest interpolant,

� ∀local-syms(C)(C) is the weakest interpolant.

local-syms(A): symbols occurring in A, but not in Clocal-syms(C): . . .

Corollary

Both PA and QPA are closed under interpolation.

13 / 84

Page 24: Craig Interpolation for Integer Arithmetic: Results ... · Outline Craig Interpolation for Presburger Arithmetic Motivation Craig’s theorem Results and methods for integers Implementation,

Interpolation vs. QE

However . . .

� QE has high computational complexity

� strongest and weakest interpolants are often notneeded/desirable⇒ Larger interpolants, containing irrelevant information

14 / 84

Page 25: Craig Interpolation for Integer Arithmetic: Results ... · Outline Craig Interpolation for Presburger Arithmetic Motivation Craig’s theorem Results and methods for integers Implementation,

Proof-based interpolation techniques

Theorem prover

Implication A→ C

Proof of A→ C

Model

Proof lifting

Interpolating proof of A→ C

Craig interpolant A→ I → C

15 / 84

Page 26: Craig Interpolation for Integer Arithmetic: Results ... · Outline Craig Interpolation for Presburger Arithmetic Motivation Craig’s theorem Results and methods for integers Implementation,

Abstraction with interpolants

{pre} Body; Body {post} ?

Bounded model checking problem !

Compute intermediate assertion ψ1

Interpolant extractedfrom proof

⇒Abstraction from

unnecessary details

16 / 84

Page 27: Craig Interpolation for Integer Arithmetic: Results ... · Outline Craig Interpolation for Presburger Arithmetic Motivation Craig’s theorem Results and methods for integers Implementation,

Abstraction with interpolants

{pre} Body; Body {post} ?

Bounded model checking problem !

Compute intermediate assertion ψ1

⋯ Interpolant extractedfrom proof

⇒Abstraction from

unnecessary details

16 / 84

Page 28: Craig Interpolation for Integer Arithmetic: Results ... · Outline Craig Interpolation for Presburger Arithmetic Motivation Craig’s theorem Results and methods for integers Implementation,

Towards practical integer interpolation procedures

� Difference logic[McMillan, 2006]

� Integer equalities + divisibility constraints[Jain, Clarke, Grumberg, 2008]

� Unit-two-variable-per-inequality[Cimatti, Griggio, Sebastiani, 2009]

� Simplex-based, full PA[Lynch, Tang, 2008]⇒ Leaves local symbols/quantifiers in interpolants

17 / 84

Page 29: Craig Interpolation for Integer Arithmetic: Results ... · Outline Craig Interpolation for Presburger Arithmetic Motivation Craig’s theorem Results and methods for integers Implementation,

Towards practical interpolation procedures (2)

Proof-based methods for full PA:

� Sequent calculus-based[Brillout, Kroening, Rummer, Wahl, 2010]

� Simplex-based, special branch-and-cut rule[Kroening, Leroux, Rummer, 2010]

� Simplex-based, targeting SMT[Griggio, Le, Sebastiani, 2011]

� From Z3 proofs[McMillan, 2011]

18 / 84

Page 30: Craig Interpolation for Integer Arithmetic: Results ... · Outline Craig Interpolation for Presburger Arithmetic Motivation Craig’s theorem Results and methods for integers Implementation,

What makes interpolation over integers difficult?

19 / 84

Page 31: Craig Interpolation for Integer Arithmetic: Results ... · Outline Craig Interpolation for Presburger Arithmetic Motivation Craig’s theorem Results and methods for integers Implementation,

Reverse interpolants

Definition

Suppose A ∧B is unsatisfiable.A reverse interpolant is a formula I such that

� A→ I and B → ¬I are valid,

� every non-logical symbol of I occurs in both A and B.

Lemma

I is reverse interpolant for A ∧B⇐⇒

I is interpolant for A→ ¬B

20 / 84

Page 32: Craig Interpolation for Integer Arithmetic: Results ... · Outline Craig Interpolation for Presburger Arithmetic Motivation Craig’s theorem Results and methods for integers Implementation,

What makes interpolation over integers difficult?

Consider rational case:n

⋀i=1

ti ≤ 0

´¹¹¹¹¹¹¹¹¹¹¹¸¹¹¹¹¹¹¹¹¹¹¹¹¶A

∧m

⋀j=1

sj ≤ 0

´¹¹¹¹¹¹¹¹¹¹¹¹¸¹¹¹¹¹¹¹¹¹¹¹¹¶B

Lemma (Witnesses)

A ∧B is unsat over Q iffthere are non-negative {αi}ni=1,{βj}mj=1 such that:

n

∑i=1αi ti +

m

∑j=1βjsj ∈Q>0

Then:n

∑i=1αi ti ≤ 0 is a reverse interpolant

21 / 84

Page 33: Craig Interpolation for Integer Arithmetic: Results ... · Outline Craig Interpolation for Presburger Arithmetic Motivation Craig’s theorem Results and methods for integers Implementation,

What makes interpolation over integers difficult?

Consider rational case:n

⋀i=1

ti ≤ 0

´¹¹¹¹¹¹¹¹¹¹¹¸¹¹¹¹¹¹¹¹¹¹¹¹¶A

∧m

⋀j=1

sj ≤ 0

´¹¹¹¹¹¹¹¹¹¹¹¹¸¹¹¹¹¹¹¹¹¹¹¹¹¶B

Lemma (Witnesses)

A ∧B is unsat over Q iffthere are non-negative {αi}ni=1,{βj}mj=1 such that:

n

∑i=1αi ti +

m

∑j=1βjsj ∈Q>0

Then:n

∑i=1αi ti ≤ 0 is a reverse interpolant

21 / 84

Page 34: Craig Interpolation for Integer Arithmetic: Results ... · Outline Craig Interpolation for Presburger Arithmetic Motivation Craig’s theorem Results and methods for integers Implementation,

What makes interpolation over integers difficult?

Consider rational case:n

⋀i=1

ti ≤ 0

´¹¹¹¹¹¹¹¹¹¹¹¸¹¹¹¹¹¹¹¹¹¹¹¹¶A

∧m

⋀j=1

sj ≤ 0

´¹¹¹¹¹¹¹¹¹¹¹¹¸¹¹¹¹¹¹¹¹¹¹¹¹¶B

Lemma (Witnesses)

A ∧B is unsat over Q iffthere are non-negative {αi}ni=1,{βj}mj=1 such that:

n

∑i=1αi ti +

m

∑j=1βjsj ∈Q>0

Then:n

∑i=1αi ti ≤ 0 is a reverse interpolant

21 / 84

Page 35: Craig Interpolation for Integer Arithmetic: Results ... · Outline Craig Interpolation for Presburger Arithmetic Motivation Craig’s theorem Results and methods for integers Implementation,

What makes interpolation over integers difficult? (2)

Why does this not work for integers?

Over Z, additional rules are needed, such as:

� Branch-and-bound(unproblematic, but incomplete)

� Cutting planes, Gomory cuts

� Cuts-from-proofs

� Omega rule

⇒ Interpolation more intricate

22 / 84

Page 36: Craig Interpolation for Integer Arithmetic: Results ... · Outline Craig Interpolation for Presburger Arithmetic Motivation Craig’s theorem Results and methods for integers Implementation,

What makes interpolation over integers difficult? (2)

Why does this not work for integers?

Over Z, additional rules are needed, such as:

� Branch-and-bound(unproblematic, but incomplete)

� Cutting planes, Gomory cuts

� Cuts-from-proofs

� Omega rule

⇒ Interpolation more intricate

22 / 84

Page 37: Craig Interpolation for Integer Arithmetic: Results ... · Outline Craig Interpolation for Presburger Arithmetic Motivation Craig’s theorem Results and methods for integers Implementation,

What makes interpolation over integers difficult? (3)

Theorem

There is a family {An ∧Bn}n of PA formulae such that

� An ∧Bn is unsatisfiable,

� An ∧Bn has a cutting plane proof of size independent of n,

� all reverse interpolants have size at least linear in n.

(for the definition of PA shown earlier)

23 / 84

Page 38: Craig Interpolation for Integer Arithmetic: Results ... · Outline Craig Interpolation for Presburger Arithmetic Motivation Craig’s theorem Results and methods for integers Implementation,

What makes interpolation over integers difficult? (4)

Example:

An = − n < y + 2nx ∧ y + 2nx ≤ 0

Bn = 0 < y + 2nz ∧ y + 2nz ≤ n

All reverse interpolants for An ∧Bn are equivalent to:

In = (2n ∣ y) ∨ (2n ∣ y + 1) ∨ (2n ∣ y + 2) ∨⋯ ∨ (2n ∣ y + n − 1)

Problematic: mixed cuts

24 / 84

Page 39: Craig Interpolation for Integer Arithmetic: Results ... · Outline Craig Interpolation for Presburger Arithmetic Motivation Craig’s theorem Results and methods for integers Implementation,

What makes interpolation over integers difficult? (4)

Example:

An = − n < y + 2nx ∧ y + 2nx ≤ 0

Bn = 0 < y + 2nz ∧ y + 2nz ≤ n

All reverse interpolants for An ∧Bn are equivalent to:

In = (2n ∣ y) ∨ (2n ∣ y + 1) ∨ (2n ∣ y + 2) ∨⋯ ∨ (2n ∣ y + n − 1)

Problematic: mixed cuts

24 / 84

Page 40: Craig Interpolation for Integer Arithmetic: Results ... · Outline Craig Interpolation for Presburger Arithmetic Motivation Craig’s theorem Results and methods for integers Implementation,

Three main approaches to handle mixed cuts

� Fully expanded interpolants

� Restricted/taylor-made cut rule

� Extended interpolant language

Next:Comparison + unifying description

25 / 84

Page 41: Craig Interpolation for Integer Arithmetic: Results ... · Outline Craig Interpolation for Presburger Arithmetic Motivation Craig’s theorem Results and methods for integers Implementation,

Interpolation outline

Theorem prover

Implication A→ C

Proof of A→ C

Model

Proof lifting

Interpolating proof of A→ C

Craig interpolant A→ I → C

26 / 84

Page 42: Craig Interpolation for Integer Arithmetic: Results ... · Outline Craig Interpolation for Presburger Arithmetic Motivation Craig’s theorem Results and methods for integers Implementation,

Interpolation outline

Theorem prover

Implication A→ C

Proof of A→ C

Model

Proof lifting

Interpolating proof of A→ C

Craig interpolant A→ I → C

26 / 84

Page 43: Craig Interpolation for Integer Arithmetic: Results ... · Outline Craig Interpolation for Presburger Arithmetic Motivation Craig’s theorem Results and methods for integers Implementation,

Main non-interpolating proof rules

Closure rule (α > 0)

∗Γ, α ≤ 0 ⊢ ∆

close-ineq′

Linear combination of inequalities (α > 0, β > 0)

Γ, . . . , αs + βt ≤ 0 ⊢ ∆

Γ, s ≤ 0, t ≤ 0 ⊢ ∆ fm-elim′

Strengthening inequalities (subsumes rounding + cuts)

Γ, t ≐ 0 ⊢ ∆ Γ, t + 1 ≤ 0 ⊢ ∆

Γ, t ≤ 0 ⊢ ∆ strengthen′

27 / 84

Page 44: Craig Interpolation for Integer Arithmetic: Results ... · Outline Craig Interpolation for Presburger Arithmetic Motivation Craig’s theorem Results and methods for integers Implementation,

Example of non-interpolating proof

∗. . . , 3 ≤ 0 ⊢ ineq-close′

. . . , 3x ≤ 0, −2x + 1 ≤ 0 ⊢ fm-elim′⋯

. . . , 3x − 2 ≤ 0, −2x + 1 ≤ 0 ⊢ strengthen′ × 2

a + x ≤ 0, −a + 2x − 2 ≤ 0, −2x + 1 ≤ 0 ⊢ fm-elim′

28 / 84

Page 45: Craig Interpolation for Integer Arithmetic: Results ... · Outline Craig Interpolation for Presburger Arithmetic Motivation Craig’s theorem Results and methods for integers Implementation,

Interpolation outline

Theorem prover

PA implication A→ C

Proof of A→ C

Model

Proof lifting

Interpolating proof of A→ C

Craig interpolant A→ I → C

29 / 84

Page 46: Craig Interpolation for Integer Arithmetic: Results ... · Outline Craig Interpolation for Presburger Arithmetic Motivation Craig’s theorem Results and methods for integers Implementation,

Basic idea of proof lifting

annotation offormulae with labels

Õ××××

∗....Γ3 ⊢ ∆3

Γ2 ⊢ ∆2

Γ1 ⊢ ∆1....A ⊢ C

××××Öpropagation of

interpolants

Main idea: annotations track inequalities from A

30 / 84

Interpolation problem: A→ I → C

Page 47: Craig Interpolation for Integer Arithmetic: Results ... · Outline Craig Interpolation for Presburger Arithmetic Motivation Craig’s theorem Results and methods for integers Implementation,

Basic idea of proof lifting

annotation offormulae with labels

Õ××××

∗....Γ3 ⊢ ∆3

Γ2 ⊢ ∆2

Γ1 ⊢ ∆1....A ⊢ C

××××Öpropagation of

interpolants

Main idea: annotations track inequalities from A

30 / 84

Interpolation problem: A→ I → C

Page 48: Craig Interpolation for Integer Arithmetic: Results ... · Outline Craig Interpolation for Presburger Arithmetic Motivation Craig’s theorem Results and methods for integers Implementation,

Basic idea of proof lifting

annotation offormulae with labels

Õ××××

∗....Γ3 ⊢ ∆3

Γ2 ⊢ ∆2

Γ1 ⊢ ∆1....A∗ ⊢ C∗

××××Öpropagation of

interpolants

Main idea: annotations track inequalities from A

30 / 84

Interpolation problem: A→ I → C

Page 49: Craig Interpolation for Integer Arithmetic: Results ... · Outline Craig Interpolation for Presburger Arithmetic Motivation Craig’s theorem Results and methods for integers Implementation,

Basic idea of proof lifting

annotation offormulae with labels

Õ××××

∗....Γ3 ⊢ ∆3

Γ2 ⊢ ∆2

Γ∗1 ⊢ ∆∗1....

A∗ ⊢ C∗

××××Öpropagation of

interpolants

Main idea: annotations track inequalities from A

30 / 84

Interpolation problem: A→ I → C

Page 50: Craig Interpolation for Integer Arithmetic: Results ... · Outline Craig Interpolation for Presburger Arithmetic Motivation Craig’s theorem Results and methods for integers Implementation,

Basic idea of proof lifting

annotation offormulae with labels

Õ××××

∗....Γ3 ⊢ ∆3

Γ∗2 ⊢ ∆∗2

Γ∗1 ⊢ ∆∗1....

A∗ ⊢ C∗

××××Öpropagation of

interpolants

Main idea: annotations track inequalities from A

30 / 84

Interpolation problem: A→ I → C

Page 51: Craig Interpolation for Integer Arithmetic: Results ... · Outline Craig Interpolation for Presburger Arithmetic Motivation Craig’s theorem Results and methods for integers Implementation,

Basic idea of proof lifting

annotation offormulae with labels

Õ××××

∗....Γ∗3 ⊢ ∆∗

3

Γ∗2 ⊢ ∆∗2

Γ∗1 ⊢ ∆∗1....

A∗ ⊢ C∗

××××Öpropagation of

interpolants

Main idea: annotations track inequalities from A

30 / 84

Interpolation problem: A→ I → C

Page 52: Craig Interpolation for Integer Arithmetic: Results ... · Outline Craig Interpolation for Presburger Arithmetic Motivation Craig’s theorem Results and methods for integers Implementation,

Basic idea of proof lifting

annotation offormulae with labels

Õ××××

∗....Γ∗3 ⊢ ∆∗

3

Γ∗2 ⊢ ∆∗2

Γ∗1 ⊢ ∆∗1....

A∗ ⊢ C∗

××××Öpropagation of

interpolants

Main idea: annotations track inequalities from A

30 / 84

Interpolation problem: A→ I → C

Page 53: Craig Interpolation for Integer Arithmetic: Results ... · Outline Craig Interpolation for Presburger Arithmetic Motivation Craig’s theorem Results and methods for integers Implementation,

Basic idea of proof lifting

annotation offormulae with labels

Õ××××

∗....Γ∗3 ⊢ ∆∗

3 ▸ I3

Γ∗2 ⊢ ∆∗2

Γ∗1 ⊢ ∆∗1....

A∗ ⊢ C∗

××××Öpropagation of

interpolants

Main idea: annotations track inequalities from A

30 / 84

Interpolation problem: A→ I → C

Page 54: Craig Interpolation for Integer Arithmetic: Results ... · Outline Craig Interpolation for Presburger Arithmetic Motivation Craig’s theorem Results and methods for integers Implementation,

Basic idea of proof lifting

annotation offormulae with labels

Õ××××

∗....Γ∗3 ⊢ ∆∗

3 ▸ I3

Γ∗2 ⊢ ∆∗2 ▸ I2

Γ∗1 ⊢ ∆∗1....

A∗ ⊢ C∗

××××Öpropagation of

interpolants

Main idea: annotations track inequalities from A

30 / 84

Interpolation problem: A→ I → C

Page 55: Craig Interpolation for Integer Arithmetic: Results ... · Outline Craig Interpolation for Presburger Arithmetic Motivation Craig’s theorem Results and methods for integers Implementation,

Basic idea of proof lifting

annotation offormulae with labels

Õ××××

∗....Γ∗3 ⊢ ∆∗

3 ▸ I3

Γ∗2 ⊢ ∆∗2 ▸ I2

Γ∗1 ⊢ ∆∗1 ▸ I1....

A∗ ⊢ C∗

××××Öpropagation of

interpolants

Main idea: annotations track inequalities from A

30 / 84

Interpolation problem: A→ I → C

Page 56: Craig Interpolation for Integer Arithmetic: Results ... · Outline Craig Interpolation for Presburger Arithmetic Motivation Craig’s theorem Results and methods for integers Implementation,

Basic idea of proof lifting

annotation offormulae with labels

Õ××××

∗....Γ∗3 ⊢ ∆∗

3 ▸ I3

Γ∗2 ⊢ ∆∗2 ▸ I2

Γ∗1 ⊢ ∆∗1 ▸ I1....

A∗ ⊢ C∗ ▸ I

××××Öpropagation of

interpolants

Main idea: annotations track inequalities from A

30 / 84

Interpolation problem: A→ I → C

Page 57: Craig Interpolation for Integer Arithmetic: Results ... · Outline Craig Interpolation for Presburger Arithmetic Motivation Craig’s theorem Results and methods for integers Implementation,

Labelled formulae

Labelled formula Intuition

φ [φA] “φA is A-contribution to φ”φA is the partial interpolant of φ

31 / 84

Interpolation problem: A→ I → C

Page 58: Craig Interpolation for Integer Arithmetic: Results ... · Outline Craig Interpolation for Presburger Arithmetic Motivation Craig’s theorem Results and methods for integers Implementation,

Interpolating rules

Initialisation rule: t ≤ 0 comes from A

Γ, t ≤ 0 [t ≤ 0] ⊢ ∆ ▸ I

Γ, t ≤ 0 ⊢ ∆ ▸ Iipi-left-l

Initialisation rule: t ≤ 0 comes from C

Γ, t ≤ 0 [0 ≤ 0] ⊢ ∆ ▸ I

Γ, t ≤ 0 ⊢ ∆ ▸ Iipi-left-r

� Similarly for equations, etc.

32 / 84

Interpolation problem: A→ I → C

Page 59: Craig Interpolation for Integer Arithmetic: Results ... · Outline Craig Interpolation for Presburger Arithmetic Motivation Craig’s theorem Results and methods for integers Implementation,

Interpolating rules

Closure rule (α > 0)

∗Γ, α ≤ 0 [tA ≤ 0] ⊢ ∆ ▸ tA ≤ 0

close-ineq

Linear combination of inequalities (α > 0, β > 0)

Γ, . . . , αs + βt ≤ 0 [αsA + βtA ≤ 0] ⊢ ∆ ▸ I

Γ, s ≤ 0 [sA ≤ 0], t ≤ 0 [tA ≤ 0] ⊢ ∆ ▸ Ifm-elim

33 / 84

Page 60: Craig Interpolation for Integer Arithmetic: Results ... · Outline Craig Interpolation for Presburger Arithmetic Motivation Craig’s theorem Results and methods for integers Implementation,

How to interpolate strengthen′?

Γ, t ≐ 0 ⊢ ∆ Γ, t + 1 ≤ 0 ⊢ ∆

Γ, t ≤ 0 ⊢ ∆ strengthen′

Three sound & complete ways . . .

34 / 84

Page 61: Craig Interpolation for Integer Arithmetic: Results ... · Outline Craig Interpolation for Presburger Arithmetic Motivation Craig’s theorem Results and methods for integers Implementation,

1. Method: only do pure strengthening

Pure strengthen

Γ, t ≐ 0 [t ≐ 0] ⊢ ∆ ▸ IΓ, t + 1 ≤ 0 [t + 1 ≤ 0] ⊢ ∆ ▸ J

Γ, t ≤ 0 [t ≤ 0] ⊢ ∆ ▸ I ∨ Jstrengthen-l

Γ, t ≐ 0 [0 ≐ 0] ⊢ ∆ ▸ IΓ, t + 1 ≤ 0 [0 ≤ 0] ⊢ ∆ ▸ J

Γ, t ≤ 0 [0 ≤ 0] ⊢ ∆ ▸ I ∧ Jstrengthen-r

� Resembles Omega test

� Can lead to large proofs, but interpolants of linear size

� Integration with Simplex in [LPAR, 2010]⇒ Special branch-and-cut rule

35 / 84

Page 62: Craig Interpolation for Integer Arithmetic: Results ... · Outline Craig Interpolation for Presburger Arithmetic Motivation Craig’s theorem Results and methods for integers Implementation,

1. Method: only do pure strengthening

Pure strengthen

Γ, t ≐ 0 [t ≐ 0] ⊢ ∆ ▸ IΓ, t + 1 ≤ 0 [t + 1 ≤ 0] ⊢ ∆ ▸ J

Γ, t ≤ 0 [t ≤ 0] ⊢ ∆ ▸ I ∨ Jstrengthen-l

Γ, t ≐ 0 [0 ≐ 0] ⊢ ∆ ▸ IΓ, t + 1 ≤ 0 [0 ≤ 0] ⊢ ∆ ▸ J

Γ, t ≤ 0 [0 ≤ 0] ⊢ ∆ ▸ I ∧ Jstrengthen-r

� Resembles Omega test

� Can lead to large proofs, but interpolants of linear size

� Integration with Simplex in [LPAR, 2010]⇒ Special branch-and-cut rule

35 / 84

Page 63: Craig Interpolation for Integer Arithmetic: Results ... · Outline Craig Interpolation for Presburger Arithmetic Motivation Craig’s theorem Results and methods for integers Implementation,

Interpolating proof for previous example

∗. . . , 3 ≤ 0 [6x ≤ 0] ⊢ ▸ x ≤ 0

. . . , 3x ≤ 0 [3x ≤ 0], −2x + 1 ≤ 0 [0 ≤ 0] ⊢ ▸ x ≤ 0

. . . , 3x − 2 ≤ 0 [3x − 2 ≤ 0], −2x + 1 ≤ 0 [0 ≤ 0] ⊢ ▸ x ≤ 0

a + x ≤ 0 [a + x ≤ 0],−a + 2x − 2 ≤ 0 [−a + 2x − 2 ≤ 0],

−2x + 1 ≤ 0 [0 ≤ 0]⊢ ▸ x ≤ 0

Original proof

∗. . . , 3 ≤ 0 ⊢ ineq-close′

. . . , 3x ≤ 0, −2x + 1 ≤ 0 ⊢ fm-elim′⋯

. . . , 3x − 2 ≤ 0, −2x + 1 ≤ 0 ⊢ strengthen′ × 2

a + x ≤ 0, −a + 2x − 2 ≤ 0, −2x + 1 ≤ 0 ⊢ fm-elim′

36 / 84

Page 64: Craig Interpolation for Integer Arithmetic: Results ... · Outline Craig Interpolation for Presburger Arithmetic Motivation Craig’s theorem Results and methods for integers Implementation,

2. Method: allow mixed strengthening

General, mixed strengthen (“mixed cuts”)

Γ, t ≐ 0 [tA ≐ 0] ⊢ ∆ ▸ E

Γ, t + 1 ≤ 0 [tA ≤ 0] ⊢ ∆ ▸ I 0

Γ, t + 1 ≤ 0 [tA + 1 ≤ 0] ⊢ ∆ ▸ I 1

Γ, t ≤ 0 [tA ≤ 0] ⊢ ∆ ▸ I 1 ∨ (E ∧ I 0)strengthen

� Covers Omega test, Gomory cuts, etc.

� Interpolants can beexponentially larger than (non-interpolating) proofs

� Sometimes observed in practice:Proof can be constructed, but proof lifting times out

37 / 84

Page 65: Craig Interpolation for Integer Arithmetic: Results ... · Outline Craig Interpolation for Presburger Arithmetic Motivation Craig’s theorem Results and methods for integers Implementation,

2. Method: allow mixed strengthening

General, mixed strengthen (“mixed cuts”)

Γ, t ≐ 0 [tA ≐ 0] ⊢ ∆ ▸ E

Γ, t + 1 ≤ 0 [tA ≤ 0] ⊢ ∆ ▸ I 0

Γ, t + 1 ≤ 0 [tA + 1 ≤ 0] ⊢ ∆ ▸ I 1

Γ, t ≤ 0 [tA ≤ 0] ⊢ ∆ ▸ I 1 ∨ (E ∧ I 0)strengthen

� Covers Omega test, Gomory cuts, etc.

� Interpolants can beexponentially larger than (non-interpolating) proofs

� Sometimes observed in practice:Proof can be constructed, but proof lifting times out

37 / 84

Page 66: Craig Interpolation for Integer Arithmetic: Results ... · Outline Craig Interpolation for Presburger Arithmetic Motivation Craig’s theorem Results and methods for integers Implementation,

3. Method: bounded quantification

strengthen with bounded quantification

� Proofs + interpolants only grow linearly

� Interpolants contain bounded quantifiers

� Specialised versions for rounding possible [IJCAR, 2010]

� Related observation in [Griggio, Le, Sebastiani, 2011]:Mixed cuts can be interpolated concisely using integer division

38 / 84

Page 67: Craig Interpolation for Integer Arithmetic: Results ... · Outline Craig Interpolation for Presburger Arithmetic Motivation Craig’s theorem Results and methods for integers Implementation,

3. Method: bounded quantification

strengthen with bounded quantification

Γ, t ≐ 0 [tA ≐ 0] ⊢ ∆ ▸ E

Γ, t + 1 ≤ 0 [tA ≤ 0] ⊢ ∆ ▸ I 0

Γ, t + 1 ≤ 0 [tA + 1 ≤ 0] ⊢ ∆ ▸ I 1

Γ, t ≤ 0 [tA ≤ 0] ⊢ ∆ ▸ I 1 ∨ (E ∧ I 0)strengthen

� Proofs + interpolants only grow linearly

� Interpolants contain bounded quantifiers

� Specialised versions for rounding possible [IJCAR, 2010]

� Related observation in [Griggio, Le, Sebastiani, 2011]:Mixed cuts can be interpolated concisely using integer division

38 / 84

Page 68: Craig Interpolation for Integer Arithmetic: Results ... · Outline Craig Interpolation for Presburger Arithmetic Motivation Craig’s theorem Results and methods for integers Implementation,

3. Method: bounded quantification

strengthen with bounded quantification

Γ, t ≐ 0 [tA ≐ 0] ⊢ ∆ ▸ E

Γ, t + 1 ≤ 0 [tA ≤ 0] ⊢ ∆ ▸ I 0

Γ, t + 1 ≤ 0 [tA + 1 ≤ 0] ⊢ ∆ ▸ I 1

Γ, t ≤ 0 [tA ≤ 0] ⊢ ∆ ▸ I 1 ∨ (E ∧ I 0)strengthen

� Proofs + interpolants only grow linearly

� Interpolants contain bounded quantifiers

� Specialised versions for rounding possible [IJCAR, 2010]

� Related observation in [Griggio, Le, Sebastiani, 2011]:Mixed cuts can be interpolated concisely using integer division

38 / 84

Page 69: Craig Interpolation for Integer Arithmetic: Results ... · Outline Craig Interpolation for Presburger Arithmetic Motivation Craig’s theorem Results and methods for integers Implementation,

3. Method: bounded quantification

strengthen with bounded quantification

Γ, t ≐ 0 [tA ≐ 0] ⊢ ∆ ▸ E

Γ, t + 1 ≤ 0 [tA+p ≤ 0] ⊢ ∆ ▸ I (p)Γ, t ≤ 0 [tA ≤ 0] ⊢ ∆ ▸ I (1) ∨ (E ∧ I (0))

strengthen

� Proofs + interpolants only grow linearly

� Interpolants contain bounded quantifiers

� Specialised versions for rounding possible [IJCAR, 2010]

� Related observation in [Griggio, Le, Sebastiani, 2011]:Mixed cuts can be interpolated concisely using integer division

38 / 84

Page 70: Craig Interpolation for Integer Arithmetic: Results ... · Outline Craig Interpolation for Presburger Arithmetic Motivation Craig’s theorem Results and methods for integers Implementation,

3. Method: bounded quantification

strengthen with bounded quantification

Γ, t ≐ 0 [tA ≐ 0] ⊢ ∆ ▸ E

Γ, t + 1 ≤ 0 [tA+p ≤ 0] ⊢ ∆ ▸ I (p)

Γ, t ≤ 0 [tA ≤ 0] ⊢ ∆ ▸ ∃0 ≤ p ≤ 1.I (p) ∧ (p ≐ 1 ∨ E)

strengthen-bq

� Proofs + interpolants only grow linearly

� Interpolants contain bounded quantifiers

� Specialised versions for rounding possible [IJCAR, 2010]

� Related observation in [Griggio, Le, Sebastiani, 2011]:Mixed cuts can be interpolated concisely using integer division

38 / 84

Page 71: Craig Interpolation for Integer Arithmetic: Results ... · Outline Craig Interpolation for Presburger Arithmetic Motivation Craig’s theorem Results and methods for integers Implementation,

3. Method: bounded quantification

strengthen with bounded quantification

Γ, t ≐ 0 [tA ≐ 0] ⊢ ∆ ▸ E

Γ, t + 1 ≤ 0 [tA+p ≤ 0] ⊢ ∆ ▸ I (p)

Γ, t ≤ 0 [tA ≤ 0] ⊢ ∆ ▸ ∃0 ≤ p ≤ 1.I (p) ∧ (p ≐ 1 ∨ E)

strengthen-bq

� Proofs + interpolants only grow linearly

� Interpolants contain bounded quantifiers

� Specialised versions for rounding possible [IJCAR, 2010]

� Related observation in [Griggio, Le, Sebastiani, 2011]:Mixed cuts can be interpolated concisely using integer division

38 / 84

Page 72: Craig Interpolation for Integer Arithmetic: Results ... · Outline Craig Interpolation for Presburger Arithmetic Motivation Craig’s theorem Results and methods for integers Implementation,

Combining method 2 + 3

Observation, in practice:QE methods often eliminate bounded quantifiers without blowup

Theorem prover

Implication A→ C

Proof of A→ C

Proof lifting(method 2)

Quantifier-freeinterpolant I

Proof lifting(method 3)

Interpolant I ′ withbounded quantifiers

Quantifierelimination

39 / 84

Page 73: Craig Interpolation for Integer Arithmetic: Results ... · Outline Craig Interpolation for Presburger Arithmetic Motivation Craig’s theorem Results and methods for integers Implementation,

Combining method 2 + 3

Observation, in practice:QE methods often eliminate bounded quantifiers without blowup

Theorem prover

Implication A→ C

Proof of A→ C

Proof lifting(method 2)

Quantifier-freeinterpolant I

Proof lifting(method 3)

Interpolant I ′ withbounded quantifiers

Quantifierelimination

39 / 84

Page 74: Craig Interpolation for Integer Arithmetic: Results ... · Outline Craig Interpolation for Presburger Arithmetic Motivation Craig’s theorem Results and methods for integers Implementation,

Combining method 2 + 3

Observation, in practice:QE methods often eliminate bounded quantifiers without blowup

Theorem prover

Implication A→ C

Proof of A→ C

Proof lifting(method 2)

Quantifier-freeinterpolant I

Proof lifting(method 3)

Interpolant I ′ withbounded quantifiers

Quantifierelimination

39 / 84

Page 75: Craig Interpolation for Integer Arithmetic: Results ... · Outline Craig Interpolation for Presburger Arithmetic Motivation Craig’s theorem Results and methods for integers Implementation,

Ongoing work

Elimination of bounded quantifiers . . .

� Often leads to very concise interpolants

� Sometimes causes blowup(e.g., when encoding bitvector problems)

Ongoing: better integration of methods 2 + 3

� Detect in which cases bounded quantifiers are cheap toeliminate

Also ongoing:

� Experimental comparison of methods 1+2+3,in a model checker

40 / 84

Page 76: Craig Interpolation for Integer Arithmetic: Results ... · Outline Craig Interpolation for Presburger Arithmetic Motivation Craig’s theorem Results and methods for integers Implementation,

Implementations

Page 77: Craig Interpolation for Integer Arithmetic: Results ... · Outline Craig Interpolation for Presburger Arithmetic Motivation Craig’s theorem Results and methods for integers Implementation,

Implementations

Method 1: OpenSMT [LPAR, 2010]

� Simplex-based

� Branch-and-cut rule, avoiding mixed cuts

Method 2 + 3: Princess [IJCAR, 2010]

� Omega-based

� First interpolants with bounded quantifiers,then quantifier elimination (Omega)

� http://www.philipp.ruemmer.org/princess.shtml

42 / 84

Page 78: Craig Interpolation for Integer Arithmetic: Results ... · Outline Craig Interpolation for Presburger Arithmetic Motivation Craig’s theorem Results and methods for integers Implementation,

About Princess

� Started in 2007, slowly moving along(name “Princess” → complicated explanation)

� Entirely implemented in Scala

� Original motivation:Explore combination of FOL + theory reasoning

� Input logic:QPA + uninterpreted predicates/functions

43 / 84

Page 79: Craig Interpolation for Integer Arithmetic: Results ... · Outline Craig Interpolation for Presburger Arithmetic Motivation Craig’s theorem Results and methods for integers Implementation,

Combination of different prover architectures

Experiment in Princess:

� KE-tableau/DPLL FOL

� Theory procedures Arithmetic

� E-matching Axiomatisation of theories

� Free variables + constraints Quantifiers

� Interesting completeness results

� Proof generation (used for interpolation)

� Some features that are rather unique

44 / 84

Page 80: Craig Interpolation for Integer Arithmetic: Results ... · Outline Craig Interpolation for Presburger Arithmetic Motivation Craig’s theorem Results and methods for integers Implementation,

(In)Completeness of the Princess calculus

Lemma (Completeness)

Complete for fragments:

� FOL

� PA

� Purely existential formulae

� Purely universal formulae

� Universal formulae with finite parametrisation(same as ME(LIA))

� Valid formulae in the full logic are not enumerable[Halpern, 1991]

45 / 84

Page 81: Craig Interpolation for Integer Arithmetic: Results ... · Outline Craig Interpolation for Presburger Arithmetic Motivation Craig’s theorem Results and methods for integers Implementation,

About Scala

Java + functional features� Algebraic datatypes

� Pattern matching

� Type inference

� Higher-order functions

� Monads

� Actors, concurrent datatypes

� Developed by Martin Odersky’s group, EPFL

� Compilation to Java bytecode (primarily)

� Full access to Java libraries

� Is Scala a language usable for solver implementations?

46 / 84

Page 82: Craig Interpolation for Integer Arithmetic: Results ... · Outline Craig Interpolation for Presburger Arithmetic Motivation Craig’s theorem Results and methods for integers Implementation,

About Scala

Java + functional features� Algebraic datatypes

� Pattern matching

� Type inference

� Higher-order functions

� Monads

� Actors, concurrent datatypes

� Developed by Martin Odersky’s group, EPFL

� Compilation to Java bytecode (primarily)

� Full access to Java libraries

� Is Scala a language usable for solver implementations?

46 / 84

Page 83: Craig Interpolation for Integer Arithmetic: Results ... · Outline Craig Interpolation for Presburger Arithmetic Motivation Craig’s theorem Results and methods for integers Implementation,

Some observations and thoughts on Scala . . .

Page 84: Craig Interpolation for Integer Arithmetic: Results ... · Outline Craig Interpolation for Presburger Arithmetic Motivation Craig’s theorem Results and methods for integers Implementation,

Elegant APIs possible

val c = new ConstantTerm("c")

val d = new ConstantTerm("d")

val f = new IFunction("f", 1, false, false)

println(isSat(c >= 12 & c*2 < 40 & f(c-d) < 100))

Maybe more relevant for solver users than developers

48 / 84

Page 85: Craig Interpolation for Integer Arithmetic: Results ... · Outline Craig Interpolation for Presburger Arithmetic Motivation Craig’s theorem Results and methods for integers Implementation,

Elegant APIs possible

val c = new ConstantTerm("c")

val d = new ConstantTerm("d")

val f = new IFunction("f", 1, false, false)

println(isSat(c >= 12 & c*2 < 40 & f(c-d) < 100))

Maybe more relevant for solver users than developers

48 / 84

Page 86: Craig Interpolation for Integer Arithmetic: Results ... · Outline Craig Interpolation for Presburger Arithmetic Motivation Craig’s theorem Results and methods for integers Implementation,

Deployment

� Bytecode is very convenient

� However: Scala tends to generate many many classesE.g. in Princess: before compilation ≈ 350

after compilation ≈ 3000

� ProGuard (compression tool) is useful⇒ Generate one jar file, including all Scala libraries

49 / 84

Page 87: Craig Interpolation for Integer Arithmetic: Results ... · Outline Craig Interpolation for Presburger Arithmetic Motivation Craig’s theorem Results and methods for integers Implementation,

Performance? (disclaimer)

Princess was not developed in a very performance-oriented way:

� Mostly functional (immutable) datastructures

� No native datastructures (JNI)

� Generally:Correctness considered more important than efficiency

50 / 84

Page 88: Craig Interpolation for Integer Arithmetic: Results ... · Outline Craig Interpolation for Presburger Arithmetic Motivation Craig’s theorem Results and methods for integers Implementation,

Compared to other languages (Compiler shootout)

51 / 84

Page 89: Craig Interpolation for Integer Arithmetic: Results ... · Outline Craig Interpolation for Presburger Arithmetic Motivation Craig’s theorem Results and methods for integers Implementation,

JVM warm-upTi

me/

s

Repetitions

52 / 84

Page 90: Craig Interpolation for Integer Arithmetic: Results ... · Outline Craig Interpolation for Presburger Arithmetic Motivation Craig’s theorem Results and methods for integers Implementation,

JVM warm-up (2)

Caused by:

� Dynamic class loading

� Just-in-time compilation + optimisation

This means:

� Restarting solver between queries has to be avoided

� Load solver as a library (jar-file), or

� Run as a daemon

53 / 84

Page 91: Craig Interpolation for Integer Arithmetic: Results ... · Outline Craig Interpolation for Presburger Arithmetic Motivation Craig’s theorem Results and methods for integers Implementation,

Evaluation on AUFLIA benchmarks

AUFLIA+p (193) AUFLIA-p (193)

Z3 191 191

Princess 145 137CVC3 132 128

� Unsatisfiable AUFLIA benchmarks from SMT-comp 2011

� Intel Core i5 2-core, 3.2GHz, timeout 1200s, 4Gb

� http://www.philipp.ruemmer.org/princess.shtml

54 / 84

Page 92: Craig Interpolation for Integer Arithmetic: Results ... · Outline Craig Interpolation for Presburger Arithmetic Motivation Craig’s theorem Results and methods for integers Implementation,

Typical PA SAT queries in a model checker (Eldarica)

Sol

ving

tim

e Z3

(3.2

)/ms

Solving time Princess/ms

55 / 84

Page 93: Craig Interpolation for Integer Arithmetic: Results ... · Outline Craig Interpolation for Presburger Arithmetic Motivation Craig’s theorem Results and methods for integers Implementation,

Profiling Scala applications

Does not work

56 / 84

Page 94: Craig Interpolation for Integer Arithmetic: Results ... · Outline Craig Interpolation for Presburger Arithmetic Motivation Craig’s theorem Results and methods for integers Implementation,

Synthetic interpolation benchmarks (beginning 2011)

� Evaluation on SMT-LIB QF LIA benchmarks

� Partitionings:First k

10 ⋅ n benchmark conjuncts as A, rest as B(where n is total number of conjuncts, k ∈ {1, . . . ,9})

� Intel Xeon X5667 4-core, 3.07GHz, 12GB heap-space, Linux, timeout 900s.

http://www.philipp.ruemmer.org/princess.shtml

57 / 84

Page 95: Craig Interpolation for Integer Arithmetic: Results ... · Outline Craig Interpolation for Presburger Arithmetic Motivation Craig’s theorem Results and methods for integers Implementation,

Compared tools

� Princess, OpenSMT

� SMTInterpol: interpolating SMT solver from Uni Freiburg

� CSIsat: constraint-based interpolation for linear rationalarithmetic + unint. functions

� Omega: quantifier elimination procedure(strongest interpolants can be computed using QE)

58 / 84

Page 96: Craig Interpolation for Integer Arithmetic: Results ... · Outline Craig Interpolation for Presburger Arithmetic Motivation Craig’s theorem Results and methods for integers Implementation,

Experimental results

Multiplier Bitadder Mathsat Rings Convert16 unsat1 sat

17 unsat 100 unsat 294 unsat 38 unsat109 sat172 unkn.

Princess 8/1/41 7/0/63 44/13/396 130/0/209 38/82/334136/1623 298/76953 106/7007 233/5146 88.0/1

OpenSMT 5/1/45 7/0/63 74/15/666 9/0/81 37/0/33348.9/2357 103/23362 53.0/2020 59.9/4611 0.08/1

SMTInterpol 5/1/45 5/0/45 65/13/585 0/0/– 37/0/33324.4/48827 8.58/41077 45.7/126705 –/– 13.6/2

CSIsat 4/1/36 1/0/9 25/12/225— —

106/2640 0.56/188 70.8/12683Omega QE –/–/125 –/–/129 –/–/612 –/–/1474 –/–/296

109/15392 97.8/93181 169/101088 227/55307 15.4/2668

#unsat / #sat / #interpolants / average time (s) / average int. size

59 / 84

Page 97: Craig Interpolation for Integer Arithmetic: Results ... · Outline Craig Interpolation for Presburger Arithmetic Motivation Craig’s theorem Results and methods for integers Implementation,

Experimental results: interpolant sizesPrincess

Princess

Princess

Princess

60 / 84

Page 98: Craig Interpolation for Integer Arithmetic: Results ... · Outline Craig Interpolation for Presburger Arithmetic Motivation Craig’s theorem Results and methods for integers Implementation,

Experimental results: interpolant sizes (2)Princess

Princess

Princess

Princess

61 / 84

Page 99: Craig Interpolation for Integer Arithmetic: Results ... · Outline Craig Interpolation for Presburger Arithmetic Motivation Craig’s theorem Results and methods for integers Implementation,

Conclusions

Is Scala a language usable for solver implementations?

Pros

� Deployment

� Very elegant APIspossible

� Convenient

Cons

� Warm-up time of JVM

� Performance penalty stillsignificant

62 / 84

Page 100: Craig Interpolation for Integer Arithmetic: Results ... · Outline Craig Interpolation for Presburger Arithmetic Motivation Craig’s theorem Results and methods for integers Implementation,

Thanks for your attention!

63 / 84