Results 1  10
of
17
A Survey and Classification of some Program Transformation Approaches and Techniques
 In TC2 IFIP Working Conference on Program Specification and Transformation
, 1987
"... Program transformation is a means to formally develop efficient programs from lucid specifications. A representative sample of the diverse range of program transformation research is classified into several different approaches based upon the motivations for and styles of constructing such formal de ..."
Abstract

Cited by 44 (0 self)
 Add to MetaCart
Program transformation is a means to formally develop efficient programs from lucid specifications. A representative sample of the diverse range of program transformation research is classified into several different approaches based upon the motivations for and styles of constructing such formal developments. Individual techniques for supporting construction of developments are also surveyed, and are related to the various approaches.
The Paradigms of Programming
 Communications of the ACM
, 1979
"... tee) cited Professor Floyd for "helping to found the following important subfields of computer science: the theory of parsing, the semantics of programming languages, automatic program verification, automatic program synthesis, and analysis of algorithms." Professor Floyd, who received bo ..."
Abstract

Cited by 29 (0 self)
 Add to MetaCart
tee) cited Professor Floyd for "helping to found the following important subfields of computer science: the theory of parsing, the semantics of programming languages, automatic program verification, automatic program synthesis, and analysis of algorithms." Professor Floyd, who received both his A.B. and B.S. from the University of Chicago in 1953 and 1958, respectively, is a selftaught computer scientist. His study of computing began in 1956, when as a nightoperator for an IBM 650, he found the time to learn about programming between loads of card hoppers. Floyd implemented one of the first Algol 60 compilers, finishing his work on this project in 1962. In the process, he did some early work on compiler optimization. Subsequently, in the
The Third Homomorphism Theorem
, 1995
"... The Third Homomorphism Theorem is a folk theorem of the constructive algorithmics community. It states that a function on lists that can be computed both from left to right and from right to left is necessarily a list homomorphismit can be computed according to any parenthesization of the list. ..."
Abstract

Cited by 24 (3 self)
 Add to MetaCart
The Third Homomorphism Theorem is a folk theorem of the constructive algorithmics community. It states that a function on lists that can be computed both from left to right and from right to left is necessarily a list homomorphismit can be computed according to any parenthesization of the list. We formalize and prove the theorem, and use it to improveanO#n 2 # sorting algorithm to O#n log n#. 1Introduction List homomorphisms are those functions on #nite lists that promote through list concatenationthat is, functions h for which there exists a binary operator # such that, for all #nite lists x and y , h #x ++ y# = hx#hy where `++' denotes list concatenation. Such functions are ubiquitous in functional programming. Some examples of list homomorphisms are: # the identity function id ; # the map function map f , which applies a given function f to every elementof a list; # the function concat , which concatenates a list of lists into a single long list; # the function ...
Learning Programs from Traces Using Version Space Algebra
 KCAP'03
, 2003
"... While existing learning techniques can be viewed as inducing programs from examples, most research has focused on rather narrow classes of programs, e.g., decision trees or logic rules. In contrast, most of today's programs are written in languages such as C++ or Java. Thus, many tasks we wish to au ..."
Abstract

Cited by 22 (6 self)
 Add to MetaCart
While existing learning techniques can be viewed as inducing programs from examples, most research has focused on rather narrow classes of programs, e.g., decision trees or logic rules. In contrast, most of today's programs are written in languages such as C++ or Java. Thus, many tasks we wish to automate (e.g. programming by demonstration and software reverse engineering) might be best formulated as induction of code in a procedural language. In this paper we apply version space algebra [10] to learn such procedural programs given execution traces. We consider two variants of the problem (whether or not programstep information is included in the traces) and evaluate our implementation on a corpus of programs drawn from introductory computer science textbooks. We show that our system can learn correct programs from few traces.
Algebra of logic programming
 International Conference on Logic Programming
, 1999
"... At present, the field of declarative programming is split into two main areas based on different formalisms; namely, functional programming, which is based on lambda calculus, and logic programming, which is based on firstorder logic. There are currently several language proposals for integrating th ..."
Abstract

Cited by 20 (3 self)
 Add to MetaCart
At present, the field of declarative programming is split into two main areas based on different formalisms; namely, functional programming, which is based on lambda calculus, and logic programming, which is based on firstorder logic. There are currently several language proposals for integrating the expressiveness of these two models of computation. In this thesis we work towards an integration of the methodology from the two research areas. To this end, we propose an algebraic approach to reasoning about logic programs, corresponding to the approach taken in functional programming. In the first half of the thesis we develop and discuss a framework which forms the basis for our algebraic analysis and transformation methods. The framework is based on an embedding of definite logic programs into lazy functional programs in Haskell, such that both the declarative and the operational semantics of the logic programs are preserved. In spite of its conciseness and apparent simplicity, the embedding proves to have many interesting properties and it gives rise to an algebraic semantics of logic programming. It also allows us to reason about logic programs in a simple calculational style, using rewriting and the algebraic laws of combinators. In the embedding, the meaning of a logic program arises compositionally from the meaning of its constituent subprograms and the combinators that connect them. In the second half of the thesis we explore applications of the embedding to the algebraic transformation of logic programs. A series of examples covers simple program derivations, where our techniques simplify some of the current techniques. Another set of examples explores applications of the more advanced program development techniques from the Algebra of Programming by Bird and de Moor [18], where we expand the techniques currently available for logic program derivation and optimisation. To my parents, Sandor and Erzsebet. And the end of all our exploring Will be to arrive where we started And know the place for the first time.
Programming by Demonstration: a Machine Learning Approach
, 2001
"... Programming by demonstration (PBD) enables users to construct programs to automate repetitive tasks without writing a line of code. The key idea in PBD is to generalize from the user's demonstration of the program on a concrete example to a robust program that will work in new situations. Previous a ..."
Abstract

Cited by 19 (0 self)
 Add to MetaCart
Programming by demonstration (PBD) enables users to construct programs to automate repetitive tasks without writing a line of code. The key idea in PBD is to generalize from the user's demonstration of the program on a concrete example to a robust program that will work in new situations. Previous approaches to PBD have employed heuristic, domainspecific algorithms to generalize from a small number of examples. In this thesis, we formalize programming by demonstration as a machine learning problem: given the changes in the application state that result from the user's demonstrated actions, learn the sequence of instructions that map from one application state to the next. We propose a domainindependent machine learning approach to PBD that is capable of learning useful programs from a small number of examples. This approach addresses two difficult questions: (1) How do we construct the search space of possible program statements? (2) How do we search this large space efficiently? Our solution is based on the concept of version space algebra. Mitchell [55] formalized concept learning as a search through a version space of hypotheses consistent with the examples. Concept learning may be thought of as learning functions that map from an instance to a binary classification. In this work, we extend version spaces to apply to complex functions: functions that map from one complex object to another. We then present version space algebra, a means for combining several small spaces in order to construct complex version s...
On the Use of Inductive Reasoning in Program Synthesis: Prejudice and Prospects
 IN L. FRIBOURG AND F. TURINI (EDS), JOINT PROC. OF META'94 AND LOPSTR'94
, 1994
"... In this position paper, we give a critical analysis of the deductive and inductive approaches to program synthesis, and of the current research in these fields. From the shortcomings of these approaches and works, we identify future research directions for these fields, as well as a need for coopera ..."
Abstract

Cited by 12 (5 self)
 Add to MetaCart
In this position paper, we give a critical analysis of the deductive and inductive approaches to program synthesis, and of the current research in these fields. From the shortcomings of these approaches and works, we identify future research directions for these fields, as well as a need for cooperation and crossfertilization between them.
A Note on Synthesis and Classification of Sorting Algorithms
 Acta Informatica
, 1989
"... this paper, and the referees for their very helpful comments and constructive suggestions which greatly improved an earlier version of this paper. References ..."
Abstract

Cited by 7 (4 self)
 Add to MetaCart
this paper, and the referees for their very helpful comments and constructive suggestions which greatly improved an earlier version of this paper. References
Topdown Synthesis of Sorting Algorithms
, 1992
"... Traditionally sorting algorithms are classified according to their main operational characteristic, rather than their underlying logic. More recent work in program synthesis has exposed the logic of and hence the logical relationships between some sorting algorithms. Following the program synthesis ..."
Abstract

Cited by 5 (2 self)
 Add to MetaCart
Traditionally sorting algorithms are classified according to their main operational characteristic, rather than their underlying logic. More recent work in program synthesis has exposed the logic of and hence the logical relationships between some sorting algorithms. Following the program synthesis approach, and by using a logic programming system for deriving recursive logic procedures from their specifications, we have synthesised a large family of sorting algorithms in a strictly topdown manner. Such an approach not only produces algorithms which are guaranteed to be partially correct, it also provides a family tree showing clearly the relationships between its members. This paper contains c.4500 words, 15 pages, and 1 diagram. 1 Introduction Traditionally, algorithms are "discovered" first, and then proved correct. Sorting algorithms are no exception. More recently, work in program synthesis has been applied to the derivation of algorithms from their specifications. The main adva...
Language Extensibility via Firstclass Interpreters and Constructive Modules
 Columbia University, Department of Computer Science
, 1993
"... This document proposes these theses: ffl Firstclass interpreters offer a flexible means of language extensibility. ffl A simple module system can provide:  incremental specialization  program construction rather than program organization  static rather than dynamic composition of program ..."
Abstract

Cited by 2 (1 self)
 Add to MetaCart
This document proposes these theses: ffl Firstclass interpreters offer a flexible means of language extensibility. ffl A simple module system can provide:  incremental specialization  program construction rather than program organization  static rather than dynamic composition of programs  explicit rather than implicit control over composition The former two claims duplicate properties presently associated only with objectoriented programming, while we regard the latter two as improvements. 2 Introduction Software design is language design for particular problems. The functional programming community has stressed the power and flexibility of this view on many occasions [Hen82, AS85, Hug90, Wad87, HS88], and one of the goals of this thesis is to emphasize it once more. According to this point of view, a programming language is a vehicle for constructing problemspecific languages. Existing languages support this view to varying degrees, but few allow significant sem...