smt unsat core minimization€¦ · 561 unsat smt-lib instances* avg. core size: z3: 820 clauses....

26
SMT Unsat Core Minimization OFER GUTHMANN , OFER STRICHMAN, ANNA TROSTANETSKI FMCAD2016 1 SMT MUCS

Upload: others

Post on 22-Jan-2021

6 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: SMT Unsat Core Minimization€¦ · 561 unsat SMT-LIB instances* Avg. core size: Z3: 820 clauses. Min:454 clauses. *Same instances seleScted in A. Cimatti, A. Griggio, and R. Sebastiani:

SMT Unsat Core MinimizationO F E R G U T H M A N N ,

O F E R S T R I C H M A N , A N N A T R O S TA N E T S K I

F M C A D 2 0 1 6

1SMT MUCS

Page 2: SMT Unsat Core Minimization€¦ · 561 unsat SMT-LIB instances* Avg. core size: Z3: 820 clauses. Min:454 clauses. *Same instances seleScted in A. Cimatti, A. Griggio, and R. Sebastiani:

Satisfiability Modulo Theories

Satisfiability Modulo Theories (SMT): decides satisfiability of

formulas over first order theories, by combining

◦ a SAT solver, and

◦ decision procedures for conjunctions of first order literals.

2SMT MUCS

Page 3: SMT Unsat Core Minimization€¦ · 561 unsat SMT-LIB instances* Avg. core size: Z3: 820 clauses. Min:454 clauses. *Same instances seleScted in A. Cimatti, A. Griggio, and R. Sebastiani:

SMT solvers use Boolean Abstraction

Let 𝜑 be an SMT formula

𝜑’s Boolean Abstraction, 𝑒 𝜑 , assigns a Boolean variable to every theory literal in 𝜑.

Example:

◦ 𝜑 = 𝑥 = 0 ∧ 𝑥 = 1 ∨ ¬ 𝑥 = 2

◦ 𝑒 𝜑 = 𝑒1 ∧ 𝑒2 ∨ ¬𝑒3◦ Boolean structure unchanged.

Decoding: 𝑑 𝑒1 ≔ 𝑥 = 0 , 𝑑 𝑒2 ≔ 𝑥 = 1 , etc.

3

𝑒1 𝑒2 𝑒3

SMT MUCS

Page 4: SMT Unsat Core Minimization€¦ · 561 unsat SMT-LIB instances* Avg. core size: Z3: 820 clauses. Min:454 clauses. *Same instances seleScted in A. Cimatti, A. Griggio, and R. Sebastiani:

The Minimal Unsat Core Problem (MUC)

Let 𝜑 be an unsat SMT formula (in CNF).

Find a minimal (i.e., irreducible) unsat core of 𝜑’s clauses.

𝜑 = 𝑎 ∧ ¬𝑎 ∨ 𝑏 ∧ ¬𝑎 ∨ ¬𝑏 ∧ 𝑏 ∨ 𝑐

𝐶 = 𝑎, ¬𝑎 ∨ 𝑏 , ¬𝑎 ∨ ¬𝑏

𝐶 is a minimal unsat core.

Many applications may benefit from finding a MUC:◦ Abstraction refinement.

◦ Formal equivalence verification.

◦ Decision procedures.

◦ Etc.

We know of no SMT MUC extractors in the public domain

4SMT MUCS

Page 5: SMT Unsat Core Minimization€¦ · 561 unsat SMT-LIB instances* Avg. core size: Z3: 820 clauses. Min:454 clauses. *Same instances seleScted in A. Cimatti, A. Griggio, and R. Sebastiani:

Deletion-based MUC Extraction (propositional case)

5

𝑹𝒆𝒎𝒐𝒗𝒆 𝒖𝒏𝒎𝒂𝒓𝒌𝒆𝒅𝒄𝒍𝒂𝒖𝒔𝒆 𝒄 ∈ 𝑪

𝑪

𝑹𝒆𝒕𝒖𝒓𝒏 𝑪𝒀𝒆𝒔

𝑴𝒂𝒓𝒌 𝒄, 𝒂𝒏𝒅𝒂𝒅𝒅 𝒊𝒕 𝒃𝒂𝒄𝒌 𝒕𝒐 𝑪

𝑨𝒍𝒍 𝒄𝒍𝒂𝒖𝒔𝒆𝒔𝒎𝒂𝒓𝒌𝒆𝒅?

𝑺𝑨𝑻 𝑪 ?

𝒀𝒆𝒔𝑵𝒐

𝑵𝒐

𝑪 ← 𝒄𝒐𝒓𝒆

SMT MUCS

Page 6: SMT Unsat Core Minimization€¦ · 561 unsat SMT-LIB instances* Avg. core size: Z3: 820 clauses. Min:454 clauses. *Same instances seleScted in A. Cimatti, A. Griggio, and R. Sebastiani:

Z3 and Cores

Z3 is an open-source competitive SMT solver:◦ Developed by Microsoft Research.

◦ Emits an unsat core (set of clauses used in proof).

◦ Uses high-level proof rules

*Diagram taken from L. Zhang and S. Malik: Validating SAT Solvers Using an Independent Resolution-Based Checker: Practical Implementations and Other Applications. 2003.

SMT MUCS 6

Unsat Core

Page 7: SMT Unsat Core Minimization€¦ · 561 unsat SMT-LIB instances* Avg. core size: Z3: 820 clauses. Min:454 clauses. *Same instances seleScted in A. Cimatti, A. Griggio, and R. Sebastiani:

HSmtMucA Deletion-based SMT MUC Extractor

7

𝑹𝒆𝒎𝒐𝒗𝒆 𝑼𝒏𝒎𝒂𝒓𝒌𝒆𝒅𝒄𝒍𝒂𝒖𝒔𝒆 𝒄 ∈ 𝑪

𝑪

𝑹𝒆𝒕𝒖𝒓𝒏 𝑪

𝑴𝒂𝒓𝒌 𝒄, 𝒂𝒏𝒅𝒂𝒅𝒅 𝒊𝒕 𝒃𝒂𝒄𝒌 𝒕𝒐 𝑪

𝑨𝒍𝒍 𝒄𝒍𝒂𝒖𝒔𝒆𝒔𝒎𝒂𝒓𝒌𝒆𝒅?

𝑺𝑨𝑻 𝑪 ?

𝒀𝒆𝒔𝑵𝒐

𝒀𝒆𝒔𝑵𝒐

𝑪 ← 𝒄𝒐𝒓𝒆

𝒁𝟑 𝑪 ?

SMT MUCS

Page 8: SMT Unsat Core Minimization€¦ · 561 unsat SMT-LIB instances* Avg. core size: Z3: 820 clauses. Min:454 clauses. *Same instances seleScted in A. Cimatti, A. Griggio, and R. Sebastiani:

Optimization: Rotation

* A. Belov and J. Marques-Silva. Accelerating MUS extraction with recursive model rotation. 2011.

Let 𝑐 be a marked clause.◦ 𝜑 ∖ 𝑐 is satisfiable.

◦ 𝛼 ⊨ 𝜑 ∖ 𝑐 .

Rotate(c, α)◦ Find α′ ≠ α and c′ ≠ c, s.t. α′ ⊨ φ ∖ c′

◦ By flipping variables in α that appear in c.

◦ If such c′ was found:

◦ Mark c′

◦ Rotate(c′, α′)

8SMT MUCS

Page 9: SMT Unsat Core Minimization€¦ · 561 unsat SMT-LIB instances* Avg. core size: Z3: 820 clauses. Min:454 clauses. *Same instances seleScted in A. Cimatti, A. Griggio, and R. Sebastiani:

Now in SMT: Theory Rotation

Let 𝑐 be a marked clause.◦ 𝜑 ∖ 𝑐 is satisfiable.

◦ 𝛼 ⊨ 𝑒 𝜑 ∖ 𝑐 .

Rotate(c, α)◦ Find α′ ≠ α and c′ ≠ c, s.t. α′ ⊨ e φ ∖ c′ :

◦ By flipping variables in α that appear in c.

◦ If such c′ was found:

◦ Mark c′

◦ Rotate(c′, α′)

The problem: the new assignment may not be T-consistent9

Recall: 𝑒 applies Boolean

abstraction

Recall: 𝑒 applies boolean

abstraction

SMT MUCS

Page 10: SMT Unsat Core Minimization€¦ · 561 unsat SMT-LIB instances* Avg. core size: Z3: 820 clauses. Min:454 clauses. *Same instances seleScted in A. Cimatti, A. Griggio, and R. Sebastiani:

Theory Rotation – Contradiction Example

𝜑 = 𝑥 = 0

𝑐

∧ ¬ 𝑥 = 0 ∨ 𝑥 = 1 ∧ ¬ 𝑥 = 0 ∨ 𝑥 = 2

𝑒 𝜑 = 𝑒1𝑒 𝑐

∧ ¬𝑒1 ∨ 𝑒2 ∧ ¬𝑒1 ∨ 𝑒3

For a model\interpretation where 𝑥 ⟼ 1 we have:

𝛼 ≔ 𝑒1, 𝑒3 ⟼ 𝐹, 𝑒2 ⟼ 𝑇

10SMT MUCS

Page 11: SMT Unsat Core Minimization€¦ · 561 unsat SMT-LIB instances* Avg. core size: Z3: 820 clauses. Min:454 clauses. *Same instances seleScted in A. Cimatti, A. Griggio, and R. Sebastiani:

Theory Rotation – Contradiction Example

𝜑 = 𝑥 = 0

𝑐

∧ ¬ 𝑥 = 0 ∨ 𝑥 = 1 ∧ ¬ 𝑥 = 0 ∨ 𝑥 = 2

𝑒 𝜑 = 𝑒1𝑒 𝑐

∧ ¬𝑒1 ∨ 𝑒2 ∧ ¬𝑒1 ∨ 𝑒3

For a model\interpretation where 𝑥 ⟼ 1 we have:

𝛼 ≔ 𝑒1, 𝑒3 ⟼ 𝐹, 𝑒2 ⟼ 𝑇

𝛼 ⊨ 𝑒 𝜑 ∖ 𝑐

Flipping 𝑒1 in 𝛼 results in a T−contradiction.◦ both e1 → 𝑥 = 0 and e2 → (𝑥 = 1) now hold.

11SMT MUCS

Page 12: SMT Unsat Core Minimization€¦ · 561 unsat SMT-LIB instances* Avg. core size: Z3: 820 clauses. Min:454 clauses. *Same instances seleScted in A. Cimatti, A. Griggio, and R. Sebastiani:

Theory Rotation - Solution

After finding (c’, 𝛼′), check if 𝛼′ is T-consistent.

If it is T-consistent use Rotate (c’, 𝛼′) as before.

If it’s not...◦ One possibility is to give up and stop the recursion.

◦ Let’s try and do better.

12SMT MUCS

Page 13: SMT Unsat Core Minimization€¦ · 561 unsat SMT-LIB instances* Avg. core size: Z3: 820 clauses. Min:454 clauses. *Same instances seleScted in A. Cimatti, A. Griggio, and R. Sebastiani:

Theory Rotation – Fixing a T-Contradiction

Try and find more variables to flip in 𝛼′.

Variables to flip: choose from 𝑐𝑜𝑟𝑒 𝛼′ .◦ If resulting 𝛼′′ still contradictory, recursively flip more vars.

◦ Recursion depth is determined heuristically.

𝛼′′ ⊨ 𝜑 ∖ 𝑐′′ and is T-consistent ⇒◦ mark 𝑐′′, and

◦ Rotate (𝑐′′, 𝛼′′).

13SMT MUCS

Page 14: SMT Unsat Core Minimization€¦ · 561 unsat SMT-LIB instances* Avg. core size: Z3: 820 clauses. Min:454 clauses. *Same instances seleScted in A. Cimatti, A. Griggio, and R. Sebastiani:

Adaptive Activation of Theory Rotation

Failed Theory Rotation can be costly.

Determine at runtime whether rotations is be continued:

First option:◦ Fail Bound: stop after 𝑥 consecutive failures.

◦ Failure: no clauses were marked.

Observation: Rotation success-rate declines through time.

14SMT MUCS

Page 15: SMT Unsat Core Minimization€¦ · 561 unsat SMT-LIB instances* Avg. core size: Z3: 820 clauses. Min:454 clauses. *Same instances seleScted in A. Cimatti, A. Griggio, and R. Sebastiani:

Adaptive Activation of Theory Rotation

Another option

◦ Dynamic Measurement: estimate 𝑡𝑠𝑚𝑡 <𝑡𝑟

𝑛𝑟to stop rotation.

◦ Problem: measurement is non-monotonic.

15SMT MUCS

0

100

200

300

400

500

600

0 200 400 600 800 1000 1200 1400 1600 1800 2000

Tim

e (m

s)

Iteration

Time cost per clause marking

SMT SAT check time

0

100

200

300

400

500

600

0 200 400 600 800 1000 1200 1400 1600 1800 2000

Tim

e (m

s)

Iteration

Time cost per clause marking

SMT SAT check time Rotation time

Page 16: SMT Unsat Core Minimization€¦ · 561 unsat SMT-LIB instances* Avg. core size: Z3: 820 clauses. Min:454 clauses. *Same instances seleScted in A. Cimatti, A. Griggio, and R. Sebastiani:

Adaptive Activation of Theory Rotation

Exponential smoothing: Given a stream of measurements

𝑡𝑠𝑚𝑡𝑖 , 𝑡𝑟𝑜𝑡𝑖 , 𝑛𝑟𝑜𝑡𝑖𝑖=1

𝑛define:

𝑇𝑠𝑚𝑡0 = 𝑡𝑠𝑚𝑡

0

𝑇𝑠𝑚𝑡𝑖 = 𝛼 ⋅ 𝑡𝑠𝑚𝑡

𝑖 + 1 − 𝛼 ⋅ 𝑇𝑠𝑚𝑡𝑖−1, 0 ≤ 𝛼 ≤ 1

◦ Do the same for 𝑇𝑟𝑜𝑡𝑖 and 𝑁𝑟𝑜𝑡

𝑖

Stop rotation when 𝑇𝑠𝑚𝑡𝑖 <

𝑇𝑟𝑜𝑡𝑖

𝑁𝑟𝑜𝑡𝑖 holds.

𝛼 chosen heuristically.

SMT MUCS 16

Page 17: SMT Unsat Core Minimization€¦ · 561 unsat SMT-LIB instances* Avg. core size: Z3: 820 clauses. Min:454 clauses. *Same instances seleScted in A. Cimatti, A. Griggio, and R. Sebastiani:

Adaptive Activation of Theory Rotation

Back to the example, now with exponential smoothing:

SMT MUCS 17

0

0.5

1

1.5

2

2.5

3

3.5

4

0

100

200

300

400

500

600

700

800

900

1000

1

21

33

44

58

67

76

88

99

10

7

11

8

12

7

13

6

14

7

15

6

16

5

17

1

18

0

18

9

19

8

20

7

21

6

22

3

23

5

24

5

25

1

25

7

26

4

27

1

27

8

28

4

29

4

30

3

30

9

31

6

32

5

33

3

34

1

34

8

35

4

36

1

36

9

Nu

mb

er o

f m

arke

d c

lau

ses

Tim

e (m

s)

Iteration

Time cost per clause marking(Uses exp. smoothing w. alpha = 0.1)

smt call time rotation call time (ratio) #clauses marked in rotation

Page 18: SMT Unsat Core Minimization€¦ · 561 unsat SMT-LIB instances* Avg. core size: Z3: 820 clauses. Min:454 clauses. *Same instances seleScted in A. Cimatti, A. Griggio, and R. Sebastiani:

Experimental Results – Avg. core size reduction

561 unsat SMT-LIB instances*

Avg. core size: ◦ Z3: 820 clauses.

◦ Min:454 clauses.

*Same instances seleScted in A. Cimatti, A. Griggio, and R. Sebastiani: Computing small unsatisfiablecores in satisfiability modulo theories. 2011.

SMT MUCS 18

Page 19: SMT Unsat Core Minimization€¦ · 561 unsat SMT-LIB instances* Avg. core size: Z3: 820 clauses. Min:454 clauses. *Same instances seleScted in A. Cimatti, A. Griggio, and R. Sebastiani:

Experimental Results – Theory Rotation

Reduces the number of (deletion) iterations.

19SMT MUCS

Page 20: SMT Unsat Core Minimization€¦ · 561 unsat SMT-LIB instances* Avg. core size: Z3: 820 clauses. Min:454 clauses. *Same instances seleScted in A. Cimatti, A. Griggio, and R. Sebastiani:

Experimental Results – Theory Rotation

Translates to a modest run-time improvement (~6%-10%)

Can be attributed to time spent on failed rotations, T-contradiction checks and additional var. flipping.

Best configuration is for Theory Rotation w. fail bound = 5

SMT MUCS 20

𝐶𝑜𝑛𝑓𝑖𝑔. Time(sec.)

T-checkTime (sec.)

T-ConflictsResolved

(base) 30.5 0.0 0.0

T-Rotate 29.7 1.4 20.8

T-Rotate b 5 28.9 1.0 10.2

T-Rotate b 7 29.2 1.2 12.3

T-Rotate exp 29.6 1.2 11.2

Page 21: SMT Unsat Core Minimization€¦ · 561 unsat SMT-LIB instances* Avg. core size: Z3: 820 clauses. Min:454 clauses. *Same instances seleScted in A. Cimatti, A. Griggio, and R. Sebastiani:

And now... Small Unsatisfiable Core (SUC)

[1] suggested an algorithm that finds a small (not necessarily minimal) SMT core◦ Based on MathSat and the propos. MUC extractor Muser2

We re-implemented [1] based on Z3 + HaifaMuc

We also tested a hybrid approach in which we find a small core and then minimize it with HSmtMuc

HAIFA SMT MUCS 21

[1] A. Cimatti, A. Griggio, and R. Sebastiani. Computing small unsatisfiable cores in satisfiability modulo theories (2011).

Page 22: SMT Unsat Core Minimization€¦ · 561 unsat SMT-LIB instances* Avg. core size: Z3: 820 clauses. Min:454 clauses. *Same instances seleScted in A. Cimatti, A. Griggio, and R. Sebastiani:

Small Unsatisfiable Core (SUC)

Our re-implementation with Z3 and HaifaMUC:◦ Requires proof logging (slows Z3 a lot).

◦ Requires a propositional encoding of Z3’s proof objects.

◦ Produces much larger proofs on avg. comparing to MathSat.

◦ Turned-out to be slower

SMT MUCS 22

MathSat Muser2Extract 𝑑(𝑟𝑜𝑜𝑡𝑠′)Proof

𝑒(𝑟𝑜𝑜𝑡𝑠 + 𝑙𝑒𝑚𝑚𝑎𝑠)𝑒(𝑟𝑜𝑜𝑡𝑠’) SUC

Page 23: SMT Unsat Core Minimization€¦ · 561 unsat SMT-LIB instances* Avg. core size: Z3: 820 clauses. Min:454 clauses. *Same instances seleScted in A. Cimatti, A. Griggio, and R. Sebastiani:

We also tried a hybrid approach

MathSat-based SUC + minimization with HSmtMuc.◦ Result is minimal.

The overall winner.

Less time-outs (HSmtMuc alone: 171 vs. Hybrid: 138).◦ (but higher runtime than HSmtMuc on instances that

completed, HSmtMuc: 22.9 sec. vs. Hybrid: 27.9 sec.).

23SMT MUCS

MathSat+

Muser2HSmtMuc

𝜑 𝑆𝑈𝐶 𝑀𝑈𝐶

Page 24: SMT Unsat Core Minimization€¦ · 561 unsat SMT-LIB instances* Avg. core size: Z3: 820 clauses. Min:454 clauses. *Same instances seleScted in A. Cimatti, A. Griggio, and R. Sebastiani:

Summary

HSmtMuc is the first SMT-MUC extractor in the public domain.◦ Based on Z3.

Best observed results:

MUC: the Hybrid algorithm◦ MathSat SUC extraction, followed by HSmtMuc.

SUC: ◦ MathSat SUC extraction.

More information & our implementation is available at http://strichman.net.technion.ac.il/

24SMT MUCS

Page 25: SMT Unsat Core Minimization€¦ · 561 unsat SMT-LIB instances* Avg. core size: Z3: 820 clauses. Min:454 clauses. *Same instances seleScted in A. Cimatti, A. Griggio, and R. Sebastiani:

Questions?

25SMT MUCS