22 research outputs found

    Evolutionary Programming with the Aid of A Programmers' Apprentice

    Get PDF
    This report describes research done at the Artificial Intelligence Laboratory of the Massachusetts Institute of Technology. Support for the laboratory's artificial intelligence research is provided in part by the Office of Naval Research of the Department of Defense under Contract N00014-75-C-0522.MIT Artificial Intelligence Laboratory Department of Defense Office of Naval Researc

    Bibliographie

    Get PDF

    Program Understanding through Cliché Recognition

    Get PDF
    We propose research into automatic program understanding via recognition of common data structures and algorithms (clichés). Our goals are two-fold: first, to develop a theory of program structure which makes such recognition tractable; and second, to produce a program (named Inspector) which, given a Lisp program and a library of clichés, will construct a hierarchical decomposition of the program in terms of the clichés it uses. Our approach involves assuming constraints on the possible decompositions of programs according to the teleological relations between their parts. Programs are analyzed by translating them into a language-independent form and then parsing this representation in accordance with a context-free web grammar induced by the library of clichés. Decompositions produced by this analysis will in general be partial, since most programs will not be made up entirely of clichés. This work is motivated by the belief that identification of clichés used in program, together with knowledge of their properties, provides a sufficient basis for understanding large parts of that program's behavior. Inspector will become one component of a system of programs known as a programmer's apprentice, in which Inspector's output will be used to assist a programmer with program synthesis, debugging, and maintenance.MIT Artificial Intelligence Laborator

    Interfacing to the Programmer's Apprentice

    Get PDF
    This paper has been submitted to SoftFair, an IEEE/NBS/SIGSOFT co-sponsored conference on software development tools, techniques, and alternatives, which will be held at the Hyatt Regency Crystal City, Arlington, VA., July 26-28, 1983.In this paper, we discuss the design of a user interface to the Knowledge Based Editor (KBE), a prototype implementation of the Programmer's Apprentice. Although internally quite sophisticated, the KBE hides most of its internal mechanisms from the user, presenting a simplified model of its behavior which is flexible and easy to use. Examples are presented to illustrate the decisions which have led from high-level design principles such as "integration with existing tools" and "simplicity of user model" to a working implementation which is true to those principles.MIT Artificial Intelligence Laborator

    The Interaction Between Truth Maintenance, Equality, and Pattern-Directed Invocation: Issues of Completeness and Efficiency

    Get PDF
    We have implemented a reasoning system, called BREAD, which includes truth maintenance, equality, and pattern-directed invocation. This paper reports on the solution of two technical problems arising out of the interaction between these mechanisms. The first result is an algorithm which ensures the completeness of pattern-directed invocation with respect to equality. The second result is an algorithm which reduces a class of redundant proofs.MIT Artificial Intelligence Laborator

    A Step Towards Automatic Documentation

    Get PDF
    *Visiting Scientist on leave from Schlumberger-Doll Research. The views and conclusions contained in this paper are those of the author, and should not be interpreted as necessarily representing the official policies, either expressed or implied, of the Department of Defense, or the United States Government.This paper describes a system which automatically generates program documentation. Starting with a plan generated by analyzing the program, the system computes several kinds of summary information about the program. The most notable are: a summary of the cliched computations performed by the loops in the program, and a summary of the types and uses of the arguments to the program. Based on this information, a few English sentences are produced describing each function analysed.MIT Artificial Intelligence Laborator

    A Method, Based on Plans, for Understanding How a Loop Implements a Computation

    Get PDF
    This report describes research done at the Artificial Intelligence Laboratory of the Massachusetts Institute of Technology. Support for the laboratory's artificial intelligence research is provided in part by the Advanced Research Projects Agency of the Department of Defense under Office of Naval Research contract N00014-75-C-0643.The plan method analyzes the structure of a program. The plan which results from applying the method represents this structure by specifying how the parts of the program interact. This paper demonstrates the utility of the plan method by showing how a plan for a loop can be used to help prove the correctness of a loop. The plan does this by providing a convenient description of what the loop does. This paper also shows how a plan for a loop can be developed based on the code for the loop without the assistance of any commentary. This is possible primarily because most loops are built up in stereotyped ways according to a few fundamental plan types. An experiment is presented which supports the claim that a small number of plan types cover a large percentage of actual cases.MIT Artificial Intelligence Laboratory Department of Defense Advanced Research Projects Agenc

    Naive Problem Solving and Naive Mathematics

    Get PDF
    AI problem solvers have almost always been given a complete and correct axiomatization of their problem domain and of the operators available to change it. Here I discuss a paradigm for problem solving in which the problem solver initially is given only a list of available operators, with no indication as to the structure of the world or the behavior of the operators. Thus, to begin it is "blind" and can only stagger about in the world tripping over things until it begins to understand what is going on. Eventually it will learn enough to solve problems in the world as well as if it the world had been explained to it initially. I call this paradigm naive problem solving. The difficulty of adequately formalizing all but the most constrained domains makes naive problem solving desirable. I have implemented a naive problem solver that learns to stack blocks and to use an elevator. It learns by finding instances of "naive mathematical cliches" which are common mental models that are likely to be useful in any domain.MIT Artificial Intelligence Laborator

    Plan Recognition in a Programmer's Apprentice

    Get PDF
    This report describes research done at the Artificial Intelligence Laboratory of the Massachusetts Institute of Technology. Support for the Laboratory's artificial intelligence research is provided in part by the Advanced Research Projects Agency of the Department of Defense under the Office of Naval Research contract N00014-75-C-0643.Brief Statement of the Problem: Stated most generally, the proposed research is concerned with understanding and representing the teleological structure of engineered devices. More specifically, I propose to study the teleological structure of computer programs written in LISP which perform a wide range of non-numerical computations. The major theoretical goal of the research is to further develop a formal representation for teleological structure, called plans, which will facilitate both the abstract description of particular programs, and the compilation of a library of programming expertise in the domain of non-numerical computation. Adequacy of the theory will be demonstrated by implementing a system (to eventually become part of a LISP Programmer's Apprentice) which will be able to recognize various plans in LISP programs written by human programmers and thereby generate cogent explanations of how the programs work, including the detection of some programming errors.MIT Artificial Intelligence Laboratory Department of Defense Advanced Research Projects Agenc

    Formalizing the Expertise of the Assembly Language Programmer

    Get PDF
    A novel compiler strategy for generating high quality code is described. The quality of the code results from reimplementing the program in the target language using knowledge of the program's behavior. The research is a first step towards formalizing the expertise of the assembly language programmer. The ultimate goal is to formalize code generation and implementation techniques in the same way that parsing and code generation techniques have been formalized. An experimental code generator based on the reimplementation strategy will be constructed. The code generator will provide a framework for analyzing the costs, applicability, and effectiveness of various implementation techniques. Several common code generation problems will be studied. Code written by experienced programmers and code generated by a conventional optimizing compiler will provide standards of comparison.MIT Artificial Intelligence Laborator
    corecore