Rewrites for SMT Solvers using Syntax-Guided Enumeration ( Work in Progress )

In this paper, we explore a development paradigm for SMT solver developers where rewrite rules are suggested to the developer using syntax-guided enumeration. We capitalize on the recent advances in enumerative syntax-guided synthesis (SyGuS) techniques for efficiently enumerating terms in a grammar of interest, and novel sampling techniques for testing equivalence between terms. We present our preliminary experience with this feature in the SMT solver cvc4, showing its impact on its rewriting capabilities using several internal metrics, and its subsequent impact on solving bit-vector and string constraints.

[1]  Alexander Aiken,et al.  Automatic generation of peephole superoptimizers , 2006, ASPLOS XII.

[2]  Dawson R. Engler,et al.  KLEE: Unassisted and Automatic Generation of High-Coverage Tests for Complex Systems Programs , 2008, OSDI.

[3]  Sumit Gulwani,et al.  Automating string processing in spreadsheets using input-output examples , 2011, POPL '11.

[4]  Armando Solar-Lezama,et al.  Word Equations with Length Constraints: What's Decidable? , 2012, Haifa Verification Conference.

[5]  Trevor Hansen,et al.  A constraint solver and its application to machine code test generation , 2012 .

[6]  Takuya Akiba,et al.  Calibrating Research in Program Synthesis Using 72,000 Hours of Programmer Time , 2013 .

[7]  Dawson R. Engler,et al.  Expression Reduction from Programs in a Symbolic Binary Executor , 2013, SPIN.

[8]  Alexander Aiken,et al.  Stochastic superoptimization , 2012, ASPLOS '13.

[9]  Henry S. Warren Hacker's Delight, Second Edition , 2013 .

[10]  Alexander Nadel Bit-Vector Rewriting with Automatic Rule Generation , 2014, CAV.

[11]  Mukund Raghothaman,et al.  Language to Specify Syntax-Guided Synthesis Problems , 2014, ArXiv.

[12]  Cesare Tinelli,et al.  A DPLL(T) Theory Solver for a Theory of Strings and Regular Expressions , 2014, CAV.

[13]  Sebastian Buchwald Optgen: A Generator for Local Optimizations , 2015, CC.

[14]  Viktor Kuncak,et al.  Counterexample-Guided Quantifier Instantiation for Synthesis in SMT , 2015, CAV.

[15]  Meng Wu,et al.  Synthesis of Fault-Attack Countermeasures for Cryptographic Circuits , 2016, CAV.

[16]  Armando Solar-Lezama,et al.  Automatic Generation of Formula Simplifiers based on Conditional Rewrite Rules , 2016, ArXiv.

[17]  David Lo,et al.  S3: syntax- and semantic-guided repair synthesis via programming by examples , 2017, ESEC/SIGSOFT FSE.

[18]  Cesare Tinelli,et al.  Scaling Up DPLL(T) String Solvers Using Context-Dependent Simplification , 2017, CAV.

[19]  Arjun Radhakrishna,et al.  Scaling Enumerative Program Synthesis via Divide and Conquer , 2017, TACAS.

[20]  Cesare Tinelli,et al.  SyGuS Techniques in the Core of an SMT Solver , 2017, SYNT@CAV.

[21]  Cesare Tinelli,et al.  Designing Theory Solvers with Extensions , 2017, FroCoS.

[22]  Cesare Tinelli,et al.  On Solving Quantified Bit-Vectors using Invertibility Conditions , 2018, CAV.