Presentation is loading. Please wait.

Presentation is loading. Please wait.

CVC4 for Sygus Comp 2017 CVC4 is an SMT solver

Similar presentations


Presentation on theme: "CVC4 for Sygus Comp 2017 CVC4 is an SMT solver"— Presentation transcript:

1 CVC4 for Sygus Comp 2017 CVC4 is an SMT solver
Fourth generation of Cooperating Validity Checker (CVC, CVC Lite, CVC3, CVC4) Supports many theories: Linear arithmetic, bitvectors, UF, datatypes, arrays, sets, strings, … Supports quantified formulas Two approaches for refutation-based synthesis in SMT [Reynolds et al CAV 15] Counterexample-Guided  Instantiation (CEGQI) for single invocation properties Techniques Enumerative Syntax-guided synthesis (SyGuS) in DPLL(T)  …and (limited) hybrid approaches that combine the two

2 Refutation-Based Synthesis in SMT
f.x.P(f,x) + Negated Synthesis Conjecture (+ syntactic restrictions R)

3 Refutation-Based Synthesis in SMT
f.x.P(f,x) + SMT Solver SMT Solver or Counterexample Guided -Instantiation Enumerative SyGuS unsat unsat f = lx.t1 f = lx.t2

4 CVC4 for Sygus Comp 2017 Enumerative Enumerative SyGuS SyGuS
With Syntactic Restrictions + I/O Symmetry Breaking CEGQI + reconstruction CEGQI (trivially) Hybrid approaches Enumerative SyGuS (using default restrictions) Counterexample Guided -Instantiation Without Syntactic Restrictions Input/Output Examples Single Invocation Conjectures Partially Single Invocation Conjectures Other Second-Order Synthesis Conjectures

5 Input/Output Examples
CVC4 for Sygus Comp 2017 GENERAL PBE With Syntactic Restrictions CLIA INV Without Syntactic Restrictions Input/Output Examples Partially Single Invocation Conjectures Other Second-Order Synthesis Conjectures Single Invocation Conjectures

6 What’s new this Year For enumerative SyGuS approach (all tracks):
Key optimizations for the q.f. datatypes procedure to reduce #terms Improvements to symmetry breaking for search space pruning For INV track: Custom grammar construction E.g. include constants occurring in conjecture into grammar Improved use of templates For PBE track: New approaches to I/O example conjectures inspired by [Alur et al TACAS2017] Decision tree learning for ite-solutions for PBE Bit-Vectors Sequencing algorithm for concat-solutions for PBE Strings

7 PBE Strings Algorithm R:
fStr := x | “_” | “Dr”| ++(fStr,fStr) substr(fStr,fInt,fInt) fInt := 0 | 1 | +(fInt,fInt) f.x. x=“Alice”  f(x)=“Dr_Alice_A”  x=“Bob”  f(x)=“Dr_Bob_B”  x=“Carl”  f(x)=“Dr_Carl_C”  x=“David”  f(x)=“Dr_David_D”

8 PBE Strings Algorithm R:
fStr := x | “_” | “Dr”| ++(fStr,fStr) substr(fStr,fInt,fInt) fInt := 0 | 1 | +(fInt,fInt) Enumerate f.x. x=“Alice”  f(x)=“Dr_Alice_A”  x=“Bob”  f(x)=“Dr_Bob_B”  x=“Carl”  f(x)=“Dr_Carl_C”  x=“David”  f(x)=“Dr_David_D” x “_” “Dr” substr(x,0,1) substr(x,1,1) substr(x,0,2) substr(“Dr”,0,1)

9 PBE Strings Algorithm R:
fStr := x | “_” | “Dr”| ++(fStr,fStr) substr(fStr,fInt,fInt) fInt := 0 | 1 | +(fInt,fInt) f.x. x=“Alice”  f(x)=“Dr_Alice_A”  x=“Bob”  f(x)=“Dr_Bob_B”  x=“Carl”  f(x)=“Dr_Carl_C”  x=“David”  f(x)=“Dr_David_D” x “_” “Dr” substr(x,0,1) substr(x,1,1) substr(x,0,2) substr(“Dr”,0,1) Match

10 PBE Strings Algorithm R: f=lx.++(“Dr”,…)
fStr := x | “_” | “Dr”| ++(fStr,fStr) substr(fStr,fInt,fInt) fInt := 0 | 1 | +(fInt,fInt) f.x. x=“Alice”  f(x)=“Dr_Alice_A”  x=“Bob”  f(x)=“Dr_Bob_B”  x=“Carl”  f(x)=“Dr_Carl_C”  x=“David”  f(x)=“Dr_David_D” x “_” “Dr” substr(x,0,1) substr(x,1,1) substr(x,0,2) substr(“Dr”,0,1) Match f=lx.++(“Dr”,…)

11 PBE Strings Algorithm R: f=lx.++(“Dr”,“_”,…)
fStr := x | “_” | “Dr”| ++(fStr,fStr) substr(fStr,fInt,fInt) fInt := 0 | 1 | +(fInt,fInt) f.x. x=“Alice”  f(x)=“Dr_Alice_A”  x=“Bob”  f(x)=“Dr_Bob_B”  x=“Carl”  f(x)=“Dr_Carl_C”  x=“David”  f(x)=“Dr_David_D” x “_” “Dr” substr(x,0,1) substr(x,1,1) substr(x,0,2) substr(“Dr”,0,1) Match f=lx.++(“Dr”,“_”,…)

12 PBE Strings Algorithm R: f=lx.++(“Dr”,“_”,substr(x,0,1),…)
fStr := x | “_” | “Dr”| ++(fStr,fStr) substr(fStr,fInt,fInt) fInt := 0 | 1 | +(fInt,fInt) f.x. x=“Alice”  f(x)=“Dr_Alice_A”  x=“Bob”  f(x)=“Dr_Bob_B”  x=“Carl”  f(x)=“Dr_Carl_C”  x=“David”  f(x)=“Dr_David_D” x “_” “Dr” substr(x,0,1) substr(x,1,1) substr(x,0,2) substr(“Dr”,0,1) Match f=lx.++(“Dr”,“_”,substr(x,0,1),…)

13 PBE Strings Algorithm R:
fStr := x | “_” | “Dr”| ++(fStr,fStr) substr(fStr,fInt,fInt) fInt := 0 | 1 | +(fInt,fInt) f.x. x=“Alice”  f(x)=“Dr_Alice_A”  x=“Bob”  f(x)=“Dr_Bob_B”  x=“Carl”  f(x)=“Dr_Carl_C”  x=“David”  f(x)=“Dr_David_D” x “_” “Dr” substr(x,0,1) substr(x,1,1) substr(x,0,2) substr(“Dr”,0,1) Match f=lx.++(“Dr”,“_”,substr(x,0,1),substr(x,1,1),…)

14 PBE Strings Algorithm R:
fStr := x | “_” | “Dr”| ++(fStr,fStr) substr(fStr,fInt,fInt) fInt := 0 | 1 | +(fInt,fInt) …no enumerated value is prefix! f.x. x=“Alice”  f(x)=“Dr_Alice_A”  x=“Bob”  f(x)=“Dr_Bob_B”  x=“Carl”  f(x)=“Dr_Carl_C”  x=“David”  f(x)=“Dr_David_D” x “_” “Dr” substr(x,0,1) substr(x,1,1) substr(x,0,2) substr(“Dr”,0,1) Match f=lx.++(“Dr”,“_”,substr(x,0,1),substr(x,1,1),…)

15 PBE Strings Algorithm R: f=lx.++(“Dr”,“_”,…)
fStr := x | “_” | “Dr”| ++(fStr,fStr) substr(fStr,fInt,fInt) fInt := 0 | 1 | +(fInt,fInt) Backtrack f.x. x=“Alice”  f(x)=“Dr_Alice_A”  x=“Bob”  f(x)=“Dr_Bob_B”  x=“Carl”  f(x)=“Dr_Carl_C”  x=“David”  f(x)=“Dr_David_D” x “_” “Dr” substr(x,0,1) substr(x,1,1) substr(x,0,2) substr(“Dr”,0,1) Match f=lx.++(“Dr”,“_”,…)

16 PBE Strings Algorithm R: f=lx.++(“Dr”,“_”,x,…)
fStr := x | “_” | “Dr”| ++(fStr,fStr) substr(fStr,fInt,fInt) fInt := 0 | 1 | +(fInt,fInt) f.x. x=“Alice”  f(x)=“Dr_Alice_A”  x=“Bob”  f(x)=“Dr_Bob_B”  x=“Carl”  f(x)=“Dr_Carl_C”  x=“David”  f(x)=“Dr_David_D” x “_” “Dr” substr(x,0,1) substr(x,1,1) substr(x,0,2) substr(“Dr”,0,1) Match f=lx.++(“Dr”,“_”,x,…)

17 PBE Strings Algorithm R: f=lx.++(“Dr”,“_”,x,”_”,…)
fStr := x | “_” | “Dr”| ++(fStr,fStr) substr(fStr,fInt,fInt) fInt := 0 | 1 | +(fInt,fInt) f.x. x=“Alice”  f(x)=“Dr_Alice_A”  x=“Bob”  f(x)=“Dr_Bob_B”  x=“Carl”  f(x)=“Dr_Carl_C”  x=“David”  f(x)=“Dr_David_D” x “_” “Dr” substr(x,0,1) substr(x,1,1) substr(x,0,2) substr(“Dr”,0,1) Match f=lx.++(“Dr”,“_”,x,”_”,…)

18 PBE Strings Algorithm R: f=lx.++(“Dr”,“_”,x,”_”,substr(x,0,1))
fStr := x | “_” | “Dr”| ++(fStr,fStr) substr(fStr,fInt,fInt) fInt := 0 | 1 | +(fInt,fInt) f.x. x=“Alice”  f(x)=“Dr_Alice_A”  x=“Bob”  f(x)=“Dr_Bob_B”  x=“Carl”  f(x)=“Dr_Carl_C”  x=“David”  f(x)=“Dr_David_D” x “_” “Dr” substr(x,0,1) substr(x,1,1) substr(x,0,2) substr(“Dr”,0,1) Match f=lx.++(“Dr”,“_”,x,”_”,substr(x,0,1))

19 PBE Strings Algorithm R: f=lx.++(“Dr”,“_”,x,”_”,substr(x,0,1))
fStr := x | “_” | “Dr”| ++(fStr,fStr) substr(fStr,fInt,fInt) fInt := 0 | 1 | +(fInt,fInt) f.x. x=“Alice”  f(x)=“Dr_Alice_A”  x=“Bob”  f(x)=“Dr_Bob_B”  x=“Carl”  f(x)=“Dr_Carl_C”  x=“David”  f(x)=“Dr_David_D” f=lx.++(“Dr”,“_”,x,”_”,substr(x,0,1))  Return


Download ppt "CVC4 for Sygus Comp 2017 CVC4 is an SMT solver"

Similar presentations


Ads by Google