Superoptimizer: a look at the smallest program
ASPLOS II Proceedings of the second international conference on Architectual support for programming languages and operating systems
An efficient method of computing static single assignment form
POPL '89 Proceedings of the 16th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Eliminating branches using a superoptimizer and the GNU C compiler
PLDI '92 Proceedings of the ACM SIGPLAN 1992 conference on Programming language design and implementation
TELS: learning text editing tasks from examples
Watch what I do
The geometer's sketchpad: programming by geometry
Watch what I do
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
Version Space Algebra and its Application to Programming by Demonstration
ICML '00 Proceedings of the Seventeenth International Conference on Machine Learning
On the Use of Inductive Reasoning in Program Synthesis: Prejudice and Prospects
LOPSTR '94/META '94 Proceedings of the 4th International Workshops on Logic Programming Synthesis and Transformation - Meta-Programming in Logic
Deductive Composition of Astronomical Software from Subroutine Libraries
CADE-12 Proceedings of the 12th International Conference on Automated Deduction
AutoBayes: a system for generating data analysis programs from statistical models
Journal of Functional Programming
Jungloid mining: helping to navigate the API jungle
Proceedings of the 2005 ACM SIGPLAN conference on Programming language design and implementation
Programming by sketching for bit-streaming programs
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
Proceedings of the 2007 ACM SIGPLAN conference on Programming language design and implementation
Synthesizing Switching Logic Using Constraint Solving
VMCAI '09 Proceedings of the 10th International Conference on Verification, Model Checking, and Abstract Interpretation
Synthesis from Component Libraries
FOSSACS '09 Proceedings of the 12th International Conference on Foundations of Software Science and Computational Structures: Held as Part of the Joint European Conferences on Theory and Practice of Software, ETAPS 2009
From program verification to program synthesis
Proceedings of the 37th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Synthesizing switching logic for safety and dwell-time requirements
Proceedings of the 1st ACM/IEEE International Conference on Cyber-Physical Systems
Oracle-guided component-based program synthesis
Proceedings of the 32nd ACM/IEEE International Conference on Software Engineering - Volume 1
Dimensions in program synthesis
Proceedings of the 12th international ACM SIGPLAN symposium on Principles and practice of declarative programming
Binary translation using peephole superoptimizers
OSDI'08 Proceedings of the 8th USENIX conference on Operating systems design and implementation
A simple inductive synthesis methodology and its applications
Proceedings of the ACM international conference on Object oriented programming systems languages and applications
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
Spreadsheet table transformations from examples
Proceedings of the 32nd ACM SIGPLAN conference on Programming language design and implementation
Synthesis for regular specifications over unbounded domains
Proceedings of the 2010 Conference on Formal Methods in Computer-Aided Design
Synthesizing geometry constructions
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
Synthesizing data structure manipulations from storyboards
Proceedings of the 19th ACM SIGSOFT symposium and the 13th European conference on Foundations of software engineering
Synthesizing method sequences for high-coverage testing
Proceedings of the 2011 ACM international conference on Object oriented programming systems languages and applications
POPL '12 Proceedings of the 39th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Spreadsheet data manipulation using examples
Communications of the ACM
Program analysis using quantifier-elimination heuristics
TAMC'12 Proceedings of the 9th Annual international conference on Theory and Applications of Models of Computation
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
ATVA'12 Proceedings of the 10th international conference on Automated Technology for Verification and Analysis
From relational verification to SIMD loop synthesis
Proceedings of the 18th ACM SIGPLAN symposium on Principles and practice of parallel programming
Proceedings of the eighteenth international conference on Architectural support for programming languages and operating systems
TRANSIT: specifying protocols with concolic snippets
Proceedings of the 34th ACM SIGPLAN conference on Programming language design and implementation
SmartSynth: synthesizing smartphone automation scripts from natural language
Proceeding of the 11th annual international conference on Mobile systems, applications, and services
SemFix: program repair via semantic analysis
Proceedings of the 2013 International Conference on Software Engineering
Data-driven equivalence checking
Proceedings of the 2013 ACM SIGPLAN international conference on Object oriented programming systems languages & applications
Synthesis modulo recursive functions
Proceedings of the 2013 ACM SIGPLAN international conference on Object oriented programming systems languages & applications
Growing solver-aided languages with rosette
Proceedings of the 2013 ACM international symposium on New ideas, new paradigms, and reflections on programming & software
On the simplicity of synthesizing linked data structure operations
Proceedings of the 12th international conference on Generative programming: concepts & experiences
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
Automated Reasoning and Mathematics
Model-based synthesis of control software from system-level formal specifications
ACM Transactions on Software Engineering and Methodology (TOSEM)
Hi-index | 0.02 |
We consider the problem of synthesizing loop-free programs that implement a desired functionality using components from a given library. Specifications of the desired functionality and the library components are provided as logical relations between their respective input and output variables. The library components can be used at most once, and hence the library is required to contain a reasonable overapproximation of the multiset of the components required. We solve the above component-based synthesis problem using a constraint-based approach that involves first generating a synthesis constraint, and then solving the constraint. The synthesis constraint is a first-order ∃∀ logic formula whose size is quadratic in the number of components. We present a novel algorithm for solving such constraints. Our algorithm is based on counterexample guided iterative synthesis paradigm and uses off-the-shelf SMT solvers. We present experimental results that show that our tool Brahma can efficiently synthesize highly nontrivial 10-20 line loop-free bitvector programs. These programs represent a state space of approximately 2010 programs, and are beyond the reach of the other tools based on sketching and superoptimization.