The String-to-String Correction Problem
Journal of the ACM (JACM)
The Complexity of Some Problems on Subsequences and Supersequences
Journal of the ACM (JACM)
Noncounting Context-Free Languages
Journal of the ACM (JACM)
Interactive Editing Systems: Part II
ACM Computing Surveys (CSUR)
A fast algorithm for computing longest common subsequences
Communications of the ACM
A linear space algorithm for computing maximal common subsequences
Communications of the ACM
Communications of the ACM
The use of grammatical inference for designing programming languages
Communications of the ACM
Experience with an applicative string processing language
POPL '80 Proceedings of the 7th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Introduction To Automata Theory, Languages, And Computation
Introduction To Automata Theory, Languages, And Computation
Polynomial Time Inference of Extended Regular Pattern Languages
Proceedings of RIMS Symposium on Software Science and Engineering
T: a dialect of Lisp or LAMBDA: The ultimate software tool
LFP '82 Proceedings of the 1982 ACM symposium on LISP and functional programming
A session with Tinker: Interleaving program testing with program design
LFP '80 Proceedings of the 1980 ACM conference on LISP and functional programming
Proceedings of the ACM SIGPLAN SIGOA symposium on Text manipulation
EMACS the extensible, customizable self-documenting display editor
Proceedings of the ACM SIGPLAN SIGOA symposium on Text manipulation
Grammatical complexity and inference
Grammatical complexity and inference
A study of grammatical inference
A study of grammatical inference
Programming by abstract demonstration.
Programming by abstract demonstration.
Programming by example
ACM Transactions on Programming Languages and Systems (TOPLAS)
A structural approach to the maintenance of structure-oriented environments
SDE 2 Proceedings of the second ACM SIGSOFT/SIGPLAN software engineering symposium on Practical software development environments
Inductive Inference: Theory and Methods
ACM Computing Surveys (CSUR)
On learning unions of pattern languages and tree patterns in the mistake bound model
Theoretical Computer Science
On Learning Unions of Pattern Languages and Tree Patterns
ALT '99 Proceedings of the 10th International Conference on Algorithmic Learning Theory
Spreadsheet table transformations from examples
Proceedings of the 32nd ACM SIGPLAN conference on Programming language design and implementation
Hi-index | 0.00 |
An editing by example system is an automatic program synthesis facility embedded in a text editor that can be used to solve repetitive text editing problems. The user provides the editor with a few examples of a text transformation. The system analyzes the examples and generalizes them into a program that can perform the transformation to the rest of the user's text. This paper presents the design, analysis, and implementation of a practical editing by example system. In particular, we study the problem of synthesizing a text processing program that generalizes the transformation implicitly described by a small number of input/output examples. We define a class of text processing programs called gap programs, characterize their computational power, study the problems associated with synthesizing them from examples, and derive an efficient heuristic that provably synthesizes a gap program from examples of its input/output behavior. We evaluate how well the gap program synthesis heuristic performs on the text encountered in practice. This evaluation inspires the development of several modifications to the gap program synthesis heuristic that act both to improve the quality of the hypotheses proposed by the system and to reduce the number of examples required to converge to a target program. The result is a gap program synthesis heuristic that can usually synthesize a target gap program from two or three input examples and a single output example. The editing by example system derived from this analysis has been embedded in a production text editor. The system is presented as a group of editor commands that use the standard interfaces of the editor to collect examples, show synthesized programs, and run them. By developing an editing by example system that solves a useful class of text processing problems, we demonstrate that program synthesis is feasible in the domain of text editing.