Superoptimizer: a look at the smallest program
ASPLOS II Proceedings of the second international conference on Architectual support for programming languages and operating systems
Watch what I do: programming by demonstration
Watch what I do: programming by demonstration
Journal of Computer and System Sciences
A Methodology for LISP Program Construction from Examples
Journal of the ACM (JACM)
A Deductive Approach to Program Synthesis
ACM Transactions on Programming Languages and Systems (TOPLAS)
Denali: a goal-directed superoptimizer
PLDI '02 Proceedings of the ACM SIGPLAN 2002 Conference on Programming language design and implementation
Hacker's Delight
Algorithmic Program DeBugging
Machine Learning
Machine Learning
Version Space Algebra and its Application to Programming by Demonstration
ICML '00 Proceedings of the Seventeenth International Conference on Machine Learning
Deductive Composition of Astronomical Software from Subroutine Libraries
CADE-12 Proceedings of the 12th International Conference on Automated Deduction
Jungloid mining: helping to navigate the API jungle
Proceedings of the 2005 ACM SIGPLAN conference on Programming language design and implementation
Context-sensitive domain-independent algorithm composition and selection
Proceedings of the 2006 ACM SIGPLAN conference on Programming language design and implementation
Automatic generation of peephole superoptimizers
Proceedings of the 12th international conference on Architectural support for programming languages and operating systems
Combinatorial sketching for finite programs
Proceedings of the 12th international conference on Architectural support for programming languages and operating systems
Inductive Synthesis of Functional Programs: An Explanation Based Generalization Approach
The Journal of Machine Learning Research
Constant depth circuits, Fourier transform, and learnability
SFCS '89 Proceedings of the 30th Annual Symposium on Foundations of Computer Science
Binary translation using peephole superoptimizers
OSDI'08 Proceedings of the 8th USENIX conference on Operating systems design and implementation
Dimensions in program synthesis
Proceedings of the 12th international ACM SIGPLAN symposium on Principles and practice of declarative programming
Writing and using program specifications
Proceedings of the FSE/SDP workshop on Future of software engineering research
Automating string processing in spreadsheets using input-output examples
Proceedings of the 38th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Synthesizing geometry constructions
Proceedings of the 32nd ACM SIGPLAN conference on Programming language design and implementation
Synthesis of loop-free programs
Proceedings of the 32nd ACM SIGPLAN conference on Programming language design and implementation
Spreadsheet table transformations from examples
Proceedings of the 32nd ACM SIGPLAN conference on Programming language design and implementation
Path-based inductive synthesis for program inversion
Proceedings of the 32nd ACM SIGPLAN conference on Programming language design and implementation
Efficiently solving quantified bit-vector formulas
Proceedings of the 2010 Conference on Formal Methods in Computer-Aided Design
Synthesizing data structure manipulations from storyboards
Proceedings of the 19th ACM SIGSOFT symposium and the 13th European conference on Foundations of software engineering
Interactive synthesis of code snippets
CAV'11 Proceedings of the 23rd international conference on Computer aided verification
Bugs, moles and skeletons: symbolic reasoning for software development
IJCAR'10 Proceedings of the 5th international conference on Automated Reasoning
Learning semantic string transformations from examples
Proceedings of the VLDB Endowment
Sciduction: combining induction, deduction, and structure for verification and synthesis
Proceedings of the 49th Annual Design Automation Conference
Spreadsheet data manipulation using examples
Communications of the ACM
Automated synthesis of symbolic instruction encodings from I/O samples
Proceedings of the 33rd ACM SIGPLAN conference on Programming Language Design and Implementation
Proceedings of the 34th International Conference on Software Engineering
Synthesizing number transformations from input-output examples
CAV'12 Proceedings of the 24th international conference on Computer Aided Verification
Synthesis of insulin pump controllers from safety specifications using Bayesian model validation
International Journal of Bioinformatics Research and Applications
Program extrapolation with jennisys
Proceedings of the ACM international conference on Object oriented programming systems languages and applications
Efficiently solving quantified bit-vector formulas
Formal Methods in System Design
From relational verification to SIMD loop synthesis
Proceedings of the 18th ACM SIGPLAN symposium on Principles and practice of parallel programming
TRANSIT: specifying protocols with concolic snippets
Proceedings of the 34th ACM SIGPLAN conference on Programming language design and implementation
SemFix: program repair via semantic analysis
Proceedings of the 2013 International Conference on Software Engineering
CAV'13 Proceedings of the 25th international conference on Computer Aided Verification
Symbolic optimization with SMT solvers
Proceedings of the 41st ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages
Partial synthesis through sampling with and without specification
Proceedings of the International Conference on Computer-Aided Design
Hi-index | 0.02 |
We present a novel approach to automatic synthesis of loop-free programs. The approach is based on a combination of oracle-guided learning from examples, and constraint-based synthesis from components using satisfiability modulo theories (SMT) solvers. Our approach is suitable for many applications, including as an aid to program understanding tasks such as deobfuscating malware. We demonstrate the efficiency and effectiveness of our approach by synthesizing bit-manipulating programs and by deobfuscating programs.