Results 1 - 10
of
10
Discovering Algebraic Specifications from Java Classes
- In ECOOP
, 2003
"... We present and evaluate an automatic tool for extracting algebraic specifications from Java classes. Our tool maps a Java class to an algebraic signature and then uses the signature to generate a large number of terms. The tool evaluates these terms and based on the results of the evaluation, it pro ..."
Abstract
-
Cited by 68 (4 self)
- Add to MetaCart
We present and evaluate an automatic tool for extracting algebraic specifications from Java classes. Our tool maps a Java class to an algebraic signature and then uses the signature to generate a large number of terms. The tool evaluates these terms and based on the results of the evaluation, it proposes equations. Finally, the tool generalizes equations to axioms and eliminates many redundant axioms. Since our tool uses dynamic information, it is not guaranteed to be sound or complete. However, we manually inspected the axioms generated in our experiments and found them all to be correct.
A systematic survey of program comprehension through dynamic analysis
, 2008
"... Program comprehension is an important activity in software maintenance, as software must be sufficiently understood before it can be properly modified. The study of a program’s execution, known as dynamic analysis, has become a common technique in this respect and has received substantial attention ..."
Abstract
-
Cited by 22 (9 self)
- Add to MetaCart
Program comprehension is an important activity in software maintenance, as software must be sufficiently understood before it can be properly modified. The study of a program’s execution, known as dynamic analysis, has become a common technique in this respect and has received substantial attention from the research community, particularly over the last decade. These efforts have resulted in
Learning Programs from Traces Using Version Space Algebra
- K-CAP'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 19 (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 program-step 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.
System Identification, Approximation and Complexity
- International Journal of General Systems
, 1977
"... This paper is concerned with establishing broadly-based system-theoretic foundations and practical techniques for the problem of system identification that are rigorous, intuitively clear and conceptually powerful. A general formulation is first given in which two order relations are postulated on a ..."
Abstract
-
Cited by 17 (9 self)
- Add to MetaCart
This paper is concerned with establishing broadly-based system-theoretic foundations and practical techniques for the problem of system identification that are rigorous, intuitively clear and conceptually powerful. A general formulation is first given in which two order relations are postulated on a class of models: a constant one of complexity; and a variable one of approximation induced by an observed behaviour. An admissible model is such that any less complex model is a worse approximation. The general problem of identification is that of finding the admissible subspace of models induced by a given behaviour. It is proved under very general assumptions that, if deterministic models are required then nearly all behaviours require models of nearly maximum complexity. A general theory of approximation between models and behaviour is then developed based on subjective probability concepts and semantic information theory The role of structural constraints such as causality, locality, finite memory, etc., are then discussed as rules of the game. These concepts and results are applied to the specific problem or stochastic automaton, or grammar, inference. Computational results are given to demonstrate that the theory is complete and fully operational. Finally the formulation of identification proposed in this paper is analysed in terms of Klir’s epistemological hierarchy and both are discussed in terms of the rich philosophical literature on the acquisition of knowledge. 1
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 15 (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, domain-specific 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 domain-independent 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 13 (6 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 cross-fertilization between them.
Induction, Pure and Simple
- INFORMATION AND CONTROL 35, 276--336 (1977)
, 1977
"... Induction is the process by which we reason from the particular to the general; In this paper we use ideas from the theory of abstract machines and recursion theory to study this process. We focus on pure induction in which the conclusions "go beyond the information given " in the premises from whic ..."
Abstract
-
Cited by 11 (6 self)
- Add to MetaCart
Induction is the process by which we reason from the particular to the general; In this paper we use ideas from the theory of abstract machines and recursion theory to study this process. We focus on pure induction in which the conclusions "go beyond the information given " in the premises from which they are derived and on simple induction, which is rather a stark kind of induction that deals with computable predicates on the integers in rather straightforward ways. Our basic question is "What are the relationships between the kinds of abstract machinery we bring to bear on the job of doing induction and our ability to do that job well? " Our conclusions are as follows: (1) If we use only the abstract machinery of the digital computer in a computing center (which we assume to be capable of only evaluating totally computable functionals or functionals in 210 of the Arithmetic Hierarchy) then a single inductive procedure can only develop finitely many sound theories. (2) If we use only the abstract machinery of the mathematician (which we assume to be the machinery required to evaluate a functional in 271 of the Arithmetic Hierarchy) then we can develop inductive
Discovering documentation for java container classes
- IEEE Transactions on Software Engineering
, 2007
"... Modern programs make extensive use of reusable software libraries. For example, we found that 17 % to 30 % of the classes in a number of large Java applications use the container classes from the java.util package. Given this extensive code reuse in Java programs, it is important for the reusable in ..."
Abstract
-
Cited by 10 (0 self)
- Add to MetaCart
Modern programs make extensive use of reusable software libraries. For example, we found that 17 % to 30 % of the classes in a number of large Java applications use the container classes from the java.util package. Given this extensive code reuse in Java programs, it is important for the reusable interfaces to have clear and unambiguous documentation. Unfortunately, most documentation is expressed in English, and therefore does not always satisfy these requirements. Worse yet, there is no way of checking that the documentation is consistent with the associated code. Formal specifications present an alternative which does not suffer from these problems; however, formal specifications are notoriously hard to write. To alleviate this difficulty, we have implemented a tool which automatically derives documentation in the form of formal specifications. Our tool probes Java classes by invoking them on dynamically generated tests and captures the information observed during their execution as algebraic axioms. While the tool is not complete or correct from a formal perspective we demonstrate that it discovers many useful axioms when applied to container classes. These axioms then form an initial formal documentation of the class they describe. 1
INFORMATION AND CONTROL 35, 276--336 (1977) Induction, Pure and Simple
"... Induction is the process by which we reason from the particular to the general; In this paper we use ideas from the theory of abstract machines and recursion theory to study this process. We focus on pure induction in which the conclusions "go beyond the information given " in the premises from whic ..."
Abstract
- Add to MetaCart
Induction is the process by which we reason from the particular to the general; In this paper we use ideas from the theory of abstract machines and recursion theory to study this process. We focus on pure induction in which the conclusions "go beyond the information given " in the premises from which they are derived and on simple induction, which is rather a stark kind of induction that deals with computable predicates on the integers in rather straightforward ways. Our basic question is "What are the relationships between the kinds of abstract machinery we bring to bear on the job of doing induction and our ability to do that job well? " Our conclusions are as follows: (1) If we use only the abstract machinery of the digital computer in a computing center (which we assume to be capable of only evaluating totally computable functionals or functionals in 210 of the Arithmetic Hierarchy) then a single inductive procedure can only develop finitely many sound theories. (2) If we use only the abstract machinery of the mathematician (which we assume to be the machinery required to evaluate a functional in 271 of the Arithmetic Hierarchy) then we can develop inductive
Discovering Algebraic Specifications for Java Classes
, 2004
"... Modern programs make extensive use of reusable software libraries. For example, a study of a number of large Java applications shows that between 17 % and 30 % of the classes in those applications use the container classes from the java.util package. Given this extensive code reuse in Java programs, ..."
Abstract
- Add to MetaCart
Modern programs make extensive use of reusable software libraries. For example, a study of a number of large Java applications shows that between 17 % and 30 % of the classes in those applications use the container classes from the java.util package. Given this extensive code reuse in Java programs, it is important for the reusable interfaces to have clear and unambiguous documentation. Unfortunately, most documentation is expressed in English, and therefore does not always satisfy the above requirements. Worse yet, there is no way of checking that the documentation is consistent with the associated code. Formal specifications, such as algebraic specifications, do not suffer from these problems; however, they are notoriously hard to write. To alleviate this difficulty we describe a tool that automatically derives documentation for interfaces of Java classes. Our tool probes Java classes by invoking them on dynamically generated tests and captures the information observed during their execution as algebraic axioms. While the tool is not complete or correct from a formal perspective we demonstrate that it significantly alleviates the task of writing formal documentation for reusable components. 1

