Journal Article10.1145/1993316.1993557
Path-based inductive synthesis for program inversion
Saurabh Srivastava,Sumit Gulwani,Swarat Chaudhuri,Jeffrey S. Foster +3 more
- 04 Jun 2011
- Vol. 46, Iss: 6, pp 492-503
TL;DR: The problem of semi-automated inversion of imperative programs, which has the potential to make it much easier and less error prone to write programs that naturally pair as inverses, is investigated and a novel synthesis technique called Path-based inductive synthesis (PINS) is proposed.
read more
Abstract: In this paper, we investigate the problem of semi-automated inversion of imperative programs, which has the potential to make it much easier and less error prone to write programs that naturally pair as inverses, such as insert/delete operations, compressors/decompressors, and so on. Viewing inversion as a subproblem of program synthesis, we propose a novel synthesis technique called Path-based inductive synthesis (PINS) and apply it to inversion. PINS starts from a program P and a template T for its inverse. PINS then iteratively refines the space of template instantiations by exploring paths in the composition of P and T with symbolic execution. PINS uses an SMT solver to intelligently guide the refinement process, based on the paths explored so far. The key idea motivating this approach is the small path-bound hypothesis: that the behavior of a program can be summarized with a small, carefully chosen set of its program paths.We evaluated PINS by using it to invert 14 programs such as compressors (e.g., Lempel-Ziv-Welch), encoders (e.g., UUEncode), and arithmetic operations (e.g., vector rotation). Most of these examples are difficult or impossible to invert using prior techniques, but PINS was able to invert all of them. We also found that a semi-automated technique we developed to mine a template from the program to be inverted worked well. In our experiments, PINS takes between one second to thirty minutes to synthesize inverses. We believe this proof-of-concept implementation demonstrates the viability of the PINS approach to program synthesis.
read more
Chat with Paper
AI Agents for this Paper
Find similar papers on Google Scholar, PubMed and Arxiv
Write a critical review of this paper
Analyze citations of this paper to find unaddressed research gaps
Citations
Synthesizing geometry constructions
Sumit Gulwani,Vijay Anand Korthikanti,Ashish Tiwari +2 more
- 04 Jun 2011
TL;DR: This paper describes a new program synthesis technique based on three key insights based on reduction of symbolic reasoning to concrete reasoning, extending the instruction set of the programming language with higher level primitives, and pruning the forward exhaustive search using a goal-directed heuristic.
Synthesizing number transformations from input-output examples
Rishabh Singh,Sumit Gulwani +1 more
- 07 Jul 2012
TL;DR: A framework that can learn number transformations from very few input-output examples is presented, and an inductive synthesis algorithm for manipulating data types that have numbers as a constituent sub-type such as date, unit, and time is obtained.
SQUARES: a SQL synthesizer using query reverse engineering
Pedro Orvalho,Miguel Terra-Neves,Miguel Ventura,Ruben Martins,Vasco M. Manquinho +4 more
- 01 Aug 2020
TL;DR: A novel enumeration-based SQL synthesizer SQUARES is proposed, that uses a new line representation where each program line with its own subtree is represented, which allows a faster enumeration of programs when compared to the usual tree-based encoding.
Combining Induction, Deduction, and Structure for Verification and Synthesis
Sanjit A. Seshia
- 09 Oct 2015
TL;DR: In this paper, the authors characterize two trends that show great promise in meeting the hardness of underlying decision problems: reduction to synthesis and integration of traditional, deductive methods with inductive inference using hypotheses about system structure.
Automatic program inversion using symbolic transducers
Qinheping Hu,Loris D'Antoni +1 more
- 14 Jun 2017
TL;DR: A fully-automated technique for inverting functional programs that operate over lists such as string encoders and decoders, and shows that the transition inversion problem can be expressed as an instance of the syntax-guided synthesis framework.
37
References
A universal algorithm for sequential data compression
Jacob Ziv,A. Lempel +1 more
TL;DR: The compression ratio achieved by the proposed universal code uniformly approaches the lower bounds on the compression ratios attainable by block-to-variable codes and variable- to-block codes designed to match a completely specified source.
Symbolic execution and program testing
TL;DR: A particular system called EFFIGY which provides symbolic execution for program testing and debugging is described, which interpretively executes programs written in a simple PL/I style programming language.
A Technique for High-Performance Data Compression
TL;DR: A new compression algorithm is introduced that is based on principles not found in existing commercial methods in that it dynamically adapts to the redundancy characteristics of the data being compressed, and serves to illustrate system problems inherent in using any compression scheme.
2.6K
•Book
The science of programming
David Gries
- 01 Jan 1981
TL;DR: Describes basic programming principles and their step-by- step applications and shows how to apply them to real-world problems.
1.5K
Related Papers (5)
Saurabh Srivastava,Sumit Gulwani,Jeffrey S. Foster +2 more
- 17 Jan 2010
Susmit Jha,Sumit Gulwani,Sanjit A. Seshia,Ashish Tiwari +3 more
- 01 May 2010
Sumit Gulwani,Susmit Jha,Ashish Tiwari,Ramarathnam Venkatesan +3 more
- 04 Jun 2011