Synthesis of Domain Specific Encoders for Bit- Vector Solvers - - PowerPoint PPT Presentation

synthesis of domain specific encoders for bit vector
SMART_READER_LITE
LIVE PREVIEW

Synthesis of Domain Specific Encoders for Bit- Vector Solvers - - PowerPoint PPT Presentation

Synthesis of Domain Specific Encoders for Bit- Vector Solvers Jeevana Priya Inala with Rohit Singh, Armando Solar-Lezama Appears in SAT16 High-level constraint to CNF clauses SMT solver SAT solver High-level constraint CNF clauses msb


slide-1
SLIDE 1

Synthesis of Domain Specific Encoders for Bit- Vector Solvers

Jeevana Priya Inala

with Rohit Singh, Armando Solar-Lezama

Appears in SAT’16

slide-2
SLIDE 2

SMT solver High-level constraint SAT solver CNF clauses

x y

  • 1
  • 2

lsb msb

ite

>

….

High-level constraint to CNF clauses

slide-3
SLIDE 3

Goal: Synthesize better code for this translation

….

Is this the “best” encoding?

High-level constraint to CNF clauses

y1 ∨ x1 ∨ t1 y1 ∨ x1 ∨ t1 y1 ∨ x1 ∨ t1 y1 ∨ x1 ∨ t1 t2 ∨ t1 t2 ∨ y0 t2 ∨ x0 t1 ∨ y0 ∨ x0 ∨ t2 t3 ∨ y1 t3 ∨ x1 y1 ∨ x1 ∨ t3

  • 1 ∨ t2
  • 1 ∨ t3

t2 ∨ t3 ∨ o1

SMT solver High-level constraint SAT solver CNF clauses

x y

  • 1
  • 2

lsb msb

ite

>

….

  • 1 ∨ x0 ∨ o20
  • 1 ∨ x0 ∨ o20
  • 1 ∨ y0 ∨ o20
  • 1 ∨ y0 ∨ o20

x0 ∨ y0 ∨ o20 x0 ∨ y0 ∨ o20

  • 1 ∨ x1 ∨ o21
  • 1 ∨ x1 ∨ o21
  • 1 ∨ y1 ∨ o21
  • 1 ∨ y1 ∨ o21

x1 ∨ y1 ∨ o21 x1 ∨ y1 ∨ o21

slide-4
SLIDE 4

How SAT solvers work?

  • SAT solvers use unit propagation to infer variable

assignments

slide-5
SLIDE 5

How SAT solvers work?

  • SAT solvers use unit propagation to infer variable

assignments

Current variables assignment x1 = F, x2 = T, x3 = F, x4 = F

slide-6
SLIDE 6

How SAT solvers work?

x1 ∨ x2 ∨ x4 ∨ x5 false

  • SAT solvers use unit propagation to infer variable

assignments

Current variables assignment x1 = F, x2 = T, x3 = F, x4 = F Unit clause

slide-7
SLIDE 7

How SAT solvers work?

x1 ∨ x2 ∨ x4 ∨ x5

  • SAT solvers use unit propagation to infer variable

assignments

Current variables assignment x1 = F, x2 = T, x3 = F, x4 = F, x5 = T

slide-8
SLIDE 8

Criteria for a good encoding

  • Maximal propagation
  • Maximize what we learn through unit propagations
  • Fewer clauses
  • Fewer variables
slide-9
SLIDE 9

1

y1 ∨ x1 ∨ t1 y1 ∨ x1 ∨ t1 y1 ∨ x1 ∨ t1 y1 ∨ x1 ∨ t1 t2 ∨ t1 t2 ∨ y0 t2 ∨ x0 t1 ∨ y0 ∨ x0 ∨ t2 t3 ∨ y1 t3 ∨ x1 y1 ∨ x1 ∨ t3

  • 1 ∨ t2
  • 1 ∨ t3

t2 ∨ t3 ∨ o1

  • 1 ∨ x0 ∨ o20
  • 1 ∨ x0 ∨ o20
  • 1 ∨ y0 ∨ o20
  • 1 ∨ y0 ∨ o20

x0 ∨ y0 ∨ o20 x0 ∨ y0 ∨ o20

  • 1 ∨ x1 ∨ o21
  • 1 ∨ x1 ∨ o21
  • 1 ∨ y1 ∨ o21
  • 1 ∨ y1 ∨ o21

x1 ∨ y1 ∨ o21 x1 ∨ y1 ∨ o21

x1 = 1

Unit prop

− − − − − − → o21 = 1

x y

  • 1
  • 2

lsb msb

ite

>

1

Composing encodings does not preserve optimality

slide-10
SLIDE 10

Focus on

  • ptimizing

encodings for these patterns

slide-11
SLIDE 11

What patterns to target? How do we come up with “optimal” encoding for a pattern? Do these encodings actually improve the performance?

slide-12
SLIDE 12

What patterns to target? How do we come up with “optimal” encoding for a pattern? Do these encodings actually improve the performance?

Synthesis of Encodings (Sketch) Auto-tuning (Machine Learning) Pattern Finding (Sampling) Corpus of benchmarks Encodings Optimal solver Patterns

x y

ite

>

slide-13
SLIDE 13

Related Work

  • Automatic Generation of Propagation Complete SAT

Encodings (VMCAI’16)

  • Algorithm configuration for solver parameters
  • Logic synthesis based SMT solvers
slide-14
SLIDE 14

Synthesis of Encodings (Sketch) Auto-tuning (Machine Learning) Pattern Finding (Sampling) Corpus of benchmarks Encodings Optimal solver Patterns

x y

ite

>

slide-15
SLIDE 15

Synthesis as a SyGus problem

Boolean predicate P CNF clauses C Specification Template

Sketch (SyGus solver)

Correct program

slide-16
SLIDE 16

Templates

t1 = true t2 = true for i from N to 1 : t3 = newV ar t4 = newV ar clause({x[i], y[i], o[i]}) clause({x[i], t1, t3}) clause({x[i], t2, o[i], t4}) clause({x[i], o[i], t3}) clause({x[i], y[i], o[i]}) clause({x[i], t2, o[i]}) clause({x[i], t2, t4}) clause({y[i], t2, t4}) clause({y[i], o[i], t3}) clause({y[i], t1, t3}) clause({y[i], o[i], t3}) clause({t1, t3}) clause({t1, o[i], t3}) clause({t2, t4}) clause({t3, t4}) t1 = t3 t2 = t4

Boolean predicate P CNF clauses C

  • = ITEN((GTN, x, y), x, y)

x y

  • lsb

msb

ite

>

slide-17
SLIDE 17

Templates

  • = ITEN((GTN, x, y), x, y)

t1 = true t2 = true for i from N to 1 : t3 = newV ar t4 = newV ar clause({x[i], y[i], o[i]}) clause({x[i], t1, t3}) clause({x[i], t2, o[i], t4}) clause({x[i], o[i], t3}) clause({x[i], y[i], o[i]}) clause({x[i], t2, o[i]}) clause({x[i], t2, t4}) clause({y[i], t2, t4}) clause({y[i], o[i], t3}) clause({y[i], t1, t3}) clause({y[i], o[i], t3}) clause({t1, t3}) clause({t1, o[i], t3}) clause({t2, t4}) clause({t3, t4}) t1 = t3 t2 = t4

Boolean predicate P CNF clauses C

x y

  • lsb

msb

ite

>

slide-18
SLIDE 18

Templates

  • = ITEN((GTN, x, y), x, y)

t1 = true t2 = true for i from N to 1 : t3 = newV ar t4 = newV ar clause({x[i], y[i], o[i]}) clause({x[i], t1, t3}) clause({x[i], t2, o[i], t4}) clause({x[i], o[i], t3}) clause({x[i], y[i], o[i]}) clause({x[i], t2, o[i]}) clause({x[i], t2, t4}) clause({y[i], t2, t4}) clause({y[i], o[i], t3}) clause({y[i], t1, t3}) clause({y[i], o[i], t3}) clause({t1, t3}) clause({t1, o[i], t3}) clause({t2, t4}) clause({t3, t4}) t1 = t3 t2 = t4

Boolean predicate P CNF clauses C

x y

  • lsb

msb

ite

>

slide-19
SLIDE 19

Templates

  • = ITEN((GTN, x, y), x, y)

t1 = true t2 = true for i from N to 1 : t3 = newV ar t4 = newV ar clause({x[i], y[i], o[i]}) clause({x[i], t1, t3}) clause({x[i], t2, o[i], t4}) clause({x[i], o[i], t3}) clause({x[i], y[i], o[i]}) clause({x[i], t2, o[i]}) clause({x[i], t2, t4}) clause({y[i], t2, t4}) clause({y[i], o[i], t3}) clause({y[i], t1, t3}) clause({y[i], o[i], t3}) clause({t1, t3}) clause({t1, o[i], t3}) clause({t2, t4}) clause({t3, t4}) t1 = t3 t2 = t4

Boolean predicate P CNF clauses C

x y

  • lsb

msb

ite

>

slide-20
SLIDE 20

Templates

t1 = ?? t2 = ?? for i from ?? to ?? : t3 = newV ar t4 = newV ar genClauses(x[i], y[i], o[i], t1, t2, t3, t4) t1 = t3 t2 = t4

slide-21
SLIDE 21

Synthesis as a SyGus problem

Boolean predicate P CNF clauses C Specification Template

Sketch (SyGus solver)

Correct program

slide-22
SLIDE 22

Specification

Correctness: ∀σ. P(σ) = C(σ)

σ = variables assignment

Boolean predicate P CNF clauses C

P(σ) = C(σ) = T a ∨ c ∨ d a ∨ c ∨ d a ∨ b ∨ d a ∨ b ∨ d b ∨ c ∨ d b ∨ c ∨ d d ∨ e d ∨ e d = ite(a, b, c) ∧ e = d T ∨ F ∨ F T ∨ T ∨ T F ∨ T ∨ F F ∨ F ∨ T T ∨ F ∨ F F ∨ T ∨ T T ∨ F F ∨ T a = T, b = T, c = F, d = T, e = T

slide-23
SLIDE 23

Specification

Correctness: ∀σ. P(σ) = C(σ)

σ = variables assignment

Boolean predicate P CNF clauses C

P(σ) = C(σ) = F a ∨ c ∨ d a ∨ c ∨ d a ∨ b ∨ d a ∨ b ∨ d b ∨ c ∨ d b ∨ c ∨ d d ∨ e d ∨ e d = ite(a, b, c) ∧ e = d F ∨ F ∨ F F ∨ T ∨ T T ∨ T ∨ F T ∨ F ∨ T T ∨ F ∨ F F ∨ T ∨ T T ∨ F F ∨ T a = F, b = T, c = F, d = T, e = T

slide-24
SLIDE 24

Maximal Propagation

Specification

Boolean predicate P CNF clauses C

a ∨ c ∨ d a ∨ c ∨ d a ∨ b ∨ d a ∨ b ∨ d b ∨ c ∨ d b ∨ c ∨ d d ∨ e d ∨ e d = ite(a, b, c) ∧ e = d b = T, c = T ∀σ. satisfiable(σ, P) = ⇒

slide-25
SLIDE 25

Specification

Boolean predicate P CNF clauses C

a ∨ c ∨ d a ∨ c ∨ d a ∨ b ∨ d a ∨ b ∨ d b ∨ c ∨ d b ∨ c ∨ d d ∨ e d ∨ e d = ite(a, b, c) ∧ e = d b = T, c = T = ⇒ e = T ∀xi, bi. (forces(σ, P, xi, bi) = ⇒ ∀σ. satisfiable(σ, P) = ⇒

Maximal Propagation

slide-26
SLIDE 26

Specification

Boolean predicate P CNF clauses C

a ∨ c ∨ d a ∨ c ∨ d a ∨ b ∨ d a ∨ b ∨ d b ∨ c ∨ d b ∨ c ∨ d d ∨ e d ∨ e d = ite(a, b, c) ∧ e = d a ∨ T ∨ d a ∨ F ∨ d a ∨ T ∨ d a ∨ F ∨ d T ∨ T ∨ d F ∨ F ∨ d d ∨ e d ∨ e b = T, c = T = ⇒ e = T ∀σ. satisfiable(σ, P) = ⇒ ∀xi, bi. (forces(σ, P, xi, bi) = ⇒

Maximal Propagation

UP(C, σ) v extend(σ, xi, bi))

slide-27
SLIDE 27

Specification

Boolean predicate P CNF clauses C

a ∨ c ∨ d a ∨ c ∨ d a ∨ b ∨ d a ∨ b ∨ d b ∨ c ∨ d b ∨ c ∨ d d ∨ e d ∨ e d = ite(a, b, c) ∧ e = d = ⇒ e = T b = T, c = T, d = T a ∨ T ∨ F a ∨ F ∨ T a ∨ T ∨ F a ∨ F ∨ T T ∨ T ∨ F F ∨ F ∨ T T ∨ e F ∨ e ∀σ. satisfiable(σ, P) = ⇒ ∀xi, bi. (forces(σ, P, xi, bi) = ⇒

Maximal Propagation

UP(C, σ) v extend(σ, xi, bi))

slide-28
SLIDE 28

Specification

Boolean predicate P CNF clauses C

a ∨ c ∨ d a ∨ c ∨ d a ∨ b ∨ d a ∨ b ∨ d b ∨ c ∨ d b ∨ c ∨ d d ∨ e d ∨ e d = ite(a, b, c) ∧ e = d = ⇒ e = T a ∨ T ∨ F a ∨ F ∨ T a ∨ T ∨ F a ∨ F ∨ T T ∨ T ∨ F F ∨ F ∨ T T ∨ e F ∨ e ∀σ. satisfiable(σ, P) = ⇒ ∀xi, bi. (forces(σ, P, xi, bi) = ⇒ b = T, c = T, d = T, e = T

Maximal Propagation

UP(C, σ) v extend(σ, xi, bi))

slide-29
SLIDE 29

Specification

Boolean predicate P CNF clauses C

a ∨ c ∨ d a ∨ c ∨ d a ∨ b ∨ d a ∨ b ∨ d b ∨ c ∨ d b ∨ c ∨ d d ∨ e d ∨ e d = ite(a, b, c) ∧ e = d a ∨ T ∨ F a ∨ F ∨ T a ∨ T ∨ F a ∨ F ∨ T T ∨ T ∨ F F ∨ F ∨ T T ∨ e F ∨ e ∀σ. satisfiable(σ, P) = ⇒ ∀xi, bi. (forces(σ, P, xi, bi) = ⇒ UP(C, σ) v extend(σ, xi, bi)) = ⇒ e = T b = T, c = T, d = T, e = T

Maximal Propagation

slide-30
SLIDE 30

Difficult for synthesis tools to reason about

Specification

Boolean predicate P CNF clauses C

Is there a better specification for maximal propagation?

∀σ. satisfiable(σ, P) = ⇒ ∀xi, bi. (forces(σ, P, xi, bi) = ⇒ UP(C, σ) v extend(σ, xi, bi))

Maximal Propagation

slide-31
SLIDE 31

Synthesis Friendly Spec

Boolean predicate P CNF clauses C

a ∨ c ∨ d a ∨ c ∨ d a ∨ b ∨ d a ∨ b ∨ d b ∨ c ∨ d b ∨ c ∨ d d ∨ e d ∨ e d = ite(a, b, c) ∧ e = d b = T, c = T a ∨ T ∨ d a ∨ F ∨ d a ∨ T ∨ d a ∨ F ∨ d T ∨ T ∨ d F ∨ F ∨ d d ∨ e d ∨ e is satisfiable No false clauses

  • 1. 8σ. satisfiable(σ, P) =

) C(σ) 6= false

slide-32
SLIDE 32

Synthesis Friendly Spec

Boolean predicate P CNF clauses C

a ∨ c ∨ d a ∨ c ∨ d a ∨ b ∨ d a ∨ b ∨ d b ∨ c ∨ d b ∨ c ∨ d d ∨ e d ∨ e d = ite(a, b, c) ∧ e = d b = T, c = T a ∨ T ∨ d a ∨ F ∨ d a ∨ T ∨ d a ∨ F ∨ d T ∨ T ∨ d F ∨ F ∨ d d ∨ e d ∨ e Can propagate e to T Has a unit clause

  • 1. 8σ. satisfiable(σ, P) =

) C(σ) 6= false

  • 2. ∀σ. maypropagate(σ, P) =

⇒ C(σ) has a unit clause

slide-33
SLIDE 33

Synthesis Friendly Spec

Boolean predicate P CNF clauses C

a ∨ c ∨ d a ∨ c ∨ d a ∨ b ∨ d a ∨ b ∨ d b ∨ c ∨ d b ∨ c ∨ d d ∨ e d ∨ e d = ite(a, b, c) ∧ e = d b = T, c = T, d = T a ∨ T ∨ F a ∨ F ∨ T a ∨ T ∨ F a ∨ F ∨ T T ∨ T ∨ F F ∨ F ∨ T T ∨ e F ∨ e Can still propagate e to T Has a unit clause

  • 1. 8σ. satisfiable(σ, P) =

) C(σ) 6= false

  • 2. ∀σ. maypropagate(σ, P) =

⇒ C(σ) has a unit clause

slide-34
SLIDE 34

Synthesis Friendly Spec

Boolean predicate P CNF clauses C

a ∨ c ∨ d a ∨ c ∨ d a ∨ b ∨ d a ∨ b ∨ d b ∨ c ∨ d b ∨ c ∨ d d ∨ e d ∨ e d = ite(a, b, c) ∧ e = d b = T, c = T, e = F a ∨ T ∨ d a ∨ F ∨ d a ∨ T ∨ d a ∨ F ∨ d T ∨ T ∨ d F ∨ F ∨ d d ∨ T d ∨ F Unsatisfiable Has unit clauses

  • 1. 8σ. satisfiable(σ, P) =

) C(σ) 6= false

  • 2. ∀σ. maypropagate(σ, P) =

⇒ C(σ) has a unit clause

  • 3. ∀σ. unsatisfiable(σ, P) =

⇒ C(σ) = false (or) C(σ) has a unit clause

slide-35
SLIDE 35

Synthesis Friendly Spec

Boolean predicate P CNF clauses C

a ∨ c ∨ d a ∨ c ∨ d a ∨ b ∨ d a ∨ b ∨ d b ∨ c ∨ d b ∨ c ∨ d d ∨ e d ∨ e d = ite(a, b, c) ∧ e = d a ∨ T ∨ T a ∨ F ∨ F a ∨ T ∨ T a ∨ F ∨ F T ∨ T ∨ T F ∨ F ∨ F F ∨ T T ∨ F b = T, c = T, e = F, d = F Also unsatisfiable Has a false clause

  • 1. 8σ. satisfiable(σ, P) =

) C(σ) 6= false

  • 2. ∀σ. maypropagate(σ, P) =

⇒ C(σ) has a unit clause

  • 3. ∀σ. unsatisfiable(σ, P) =

⇒ C(σ) = false (or) C(σ) has a unit clause

slide-36
SLIDE 36

Does this buy you anything?

  • 7 domains from bit-vector category in SMT Comp’15

* Excluding the benchmarks used for training

slide-37
SLIDE 37

Solve more problems

Benchmark Family Solved by CVC4 Our Solver Log-slicing (79) 33 62 ASP (365) 240 288 Mcm (61) 40 43 Brummayerbiere2 (33) 28 29 Float (62) 59 60 Brummayerbiere3 (40) 23 24 Bruttomesso (676) 623 623 TOTAL 1046 1129

slide-38
SLIDE 38

Solve more problems

83 more problems in total

Benchmark Family Solved by CVC4 Our Solver Log-slicing (79) 33 62 ASP (365) 240 288 Mcm (61) 40 43 Brummayerbiere2 (33) 28 29 Float (62) 59 60 Brummayerbiere3 (40) 23 24 Bruttomesso (676) 623 623 TOTAL 1046 1129

slide-39
SLIDE 39

Cross domain performance

Solver Domain log- slicing asp mcm brumma2 float brumma3 brutto log-slicing 62 58 36 59 32 35 35 asp 227 288 255 227 236 253 240 mcm 39 38 43 40 39 39 41 brumma2 29 28 28 29 29 29 29 float 57 57 59 57 60 60 59 brumma3 22 22 25 22 23 24 23 brutto 607 606 623 609 623 623 623

Best Worst

slide-40
SLIDE 40

What did it take?

  • Around 2000 benchmarks across 7 domains
  • Over 200 million nodes in the high level SMT constraints
  • Sampling generated ~2000 patterns (size <= 5)
  • ~2000 SyGus problems to solve
  • Generated ~40k to 160k lines of code per domain (30

lines per encoding)

  • 8 hours of auto-tuning per domain
  • On total, took 10-20 hours per domain with parallelism
  • f 30
slide-41
SLIDE 41

Conclusion

  • A framework to generate the code for translating high-

level constraints to CNF

  • Combined synthesis with pattern finding and auto-tuning

to generate domain specific solvers

  • Significant performance improvement compared to CVC4

THANK YOU