1 / 19

CVC4 for Sygus Comp 2017

Explore the powerful features of CVC4 for SyGuS comp 2017, offering cutting-edge techniques for synthesis and refutation using SMT solving. Benefit from optimizations and improvements in grammar construction, I/O example handling, and more.

ronaldk
Download Presentation

CVC4 for Sygus Comp 2017

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

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 R f.x.P(f,x) + NegatedSynthesis Conjecture (+ syntactic restrictions R)

  3. Refutation-Based Synthesis in SMT R 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 SyGuS Enumerative SyGuS Enumerative 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 Other Second-Order Synthesis Conjectures Input/OutputExamples Partially Single Invocation Conjectures Single Invocation Conjectures

  5. CVC4 for Sygus Comp 2017 GENERAL PBE With Syntactic Restrictions CLIA . INV Without Syntactic Restrictions Other Second-Order Synthesis Conjectures Input/OutputExamples Partially Single Invocation 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: 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” fStr:=x|“_”|“Dr”|++(fStr,fStr) substr(fStr,fInt,fInt) fInt:=0 | 1 | +(fInt,fInt)

  8. PBE Strings Algorithm R: 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” fStr:=x|“_”|“Dr”|++(fStr,fStr) substr(fStr,fInt,fInt) fInt:=0 | 1 | +(fInt,fInt) Enumerate x “_” “Dr” substr(x,0,1) substr(x,1,1) substr(x,0,2) substr(“Dr”,0,1) …

  9. PBE Strings Algorithm R: 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” fStr:=x|“_”|“Dr”|++(fStr,fStr) substr(fStr,fInt,fInt) fInt:=0 | 1 | +(fInt,fInt) 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.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” fStr:=x|“_”|“Dr”|++(fStr,fStr) substr(fStr,fInt,fInt) fInt:=0 | 1 | +(fInt,fInt) 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.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” fStr:=x|“_”|“Dr”|++(fStr,fStr) substr(fStr,fInt,fInt) fInt:=0 | 1 | +(fInt,fInt) 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.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” fStr:=x|“_”|“Dr”|++(fStr,fStr) substr(fStr,fInt,fInt) fInt:=0 | 1 | +(fInt,fInt) 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: 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” fStr:=x|“_”|“Dr”|++(fStr,fStr) substr(fStr,fInt,fInt) fInt:=0 | 1 | +(fInt,fInt) 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: 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” fStr:=x|“_”|“Dr”|++(fStr,fStr) substr(fStr,fInt,fInt) fInt:=0 | 1 | +(fInt,fInt) …no enumerated value is prefix! 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.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” fStr:=x|“_”|“Dr”|++(fStr,fStr) substr(fStr,fInt,fInt) fInt:=0 | 1 | +(fInt,fInt) Backtrack 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.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” fStr:=x|“_”|“Dr”|++(fStr,fStr) substr(fStr,fInt,fInt) fInt:=0 | 1 | +(fInt,fInt) 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.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” fStr:=x|“_”|“Dr”|++(fStr,fStr) substr(fStr,fInt,fInt) fInt:=0 | 1 | +(fInt,fInt) 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.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” fStr:=x|“_”|“Dr”|++(fStr,fStr) substr(fStr,fInt,fInt) fInt:=0 | 1 | +(fInt,fInt) 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.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” fStr:=x|“_”|“Dr”|++(fStr,fStr) substr(fStr,fInt,fInt) fInt:=0 | 1 | +(fInt,fInt) f=lx.++(“Dr”,“_”,x,”_”,substr(x,0,1))  Return

More Related