Results 1  10
of
10
Programs with Common Sense
 Semantic Information Processing
, 1968
"... This paper will discuss programs to manipulate in a suitable formal lan guage (most likely a part of the predicate calculus) common instrumental statements. The basic program will draw immediate conclusions from a list of premises. These conclusions will be either declarative or imperative sentence ..."
Abstract

Cited by 332 (12 self)
 Add to MetaCart
This paper will discuss programs to manipulate in a suitable formal lan guage (most likely a part of the predicate calculus) common instrumental statements. The basic program will draw immediate conclusions from a list of premises. These conclusions will be either declarative or imperative sentences. When an imperative sentence is deduced the program takes a corresponding action. These actions may include printing sentences, moving sentences on lists. and reinitiating the basic deduction process on these lists. Facilities will be provided for communication with humans in the system via manual intervention and display devices connected to the computer
Steps toward artificial intelligence
 Computers and Thought
, 1961
"... Harvard University. The work toward attaining "artificial intelligence’ ’ is the center of considerable computer research, design, and application. The field is in its starting transient, characterized by many varied and independent efforts. Marvin Minsky has been requested to draw this work to ..."
Abstract

Cited by 180 (0 self)
 Add to MetaCart
Harvard University. The work toward attaining "artificial intelligence’ ’ is the center of considerable computer research, design, and application. The field is in its starting transient, characterized by many varied and independent efforts. Marvin Minsky has been requested to draw this work together into a coherent summary, supplement it with appropriate explanatory or theoretical noncomputer information, and introduce his assessment of the state of the art. This paper emphasizes the class of activities in which a generalpurpose computer, complete with a library of basic programs, is further programmed to perform operations leading to ever higherlevel information processing functions such as learning and problem solving. This informative article will be of real interest to both the general Proceedings reader and the computer specialist. The Guest Editor.
Combinators for bidirectional tree transformations: A linguistic approach to the view update problem
 In ACM SIGPLAN–SIGACT Symposium on Principles of Programming Languages (POPL
, 2005
"... We propose a novel approach to the view update problem for treestructured data: a domainspecific programming language in which all expressions denote bidirectional transformations on trees. In one direction, these transformations—dubbed lenses—map a “concrete ” tree into a simplified “abstract vie ..."
Abstract

Cited by 118 (15 self)
 Add to MetaCart
We propose a novel approach to the view update problem for treestructured data: a domainspecific programming language in which all expressions denote bidirectional transformations on trees. In one direction, these transformations—dubbed lenses—map a “concrete ” tree into a simplified “abstract view”; in the other, they map a modified abstract view, together with the original concrete tree, to a correspondingly modified concrete tree. Our design emphasizes both robustness and ease of use, guaranteeing strong wellbehavedness and totality properties for welltyped lenses. We identify a natural mathematical space of wellbehaved bidirectional transformations over arbitrary structures, study definedness and continuity in this setting, and state a precise connection with the classical theory of “update translation under a constant complement ” from databases. We then instantiate this semantic framework in the form of a collection of lens combinators that can be assembled to describe transformations on trees. These combinators include familiar constructs from functional programming (composition, mapping, projection, conditionals, recursion) together with some novel primitives for manipulating trees (splitting, pruning, copying, merging, etc.). We illustrate the expressiveness of these combinators by developing a number of bidirectional listprocessing transformations as derived forms. An extended example shows how our combinators can be used to define a lens that translates between a native HTML representation of browser bookmarks and a generic abstract bookmark format.
The Universal Resolving Algorithm: Inverse Computation in a Functional Language
 in Mathematics of Program Construction. Proceedings
, 2000
"... We present an algorithm for inverse computation in a firstorder functional language based on the notion of a perfect process tree. The Universal Resolving Algorithm (URA) introduced in this paper is sound and complete, and computes each solution, if it exists, in finite time. The algorithm has been ..."
Abstract

Cited by 23 (3 self)
 Add to MetaCart
We present an algorithm for inverse computation in a firstorder functional language based on the notion of a perfect process tree. The Universal Resolving Algorithm (URA) introduced in this paper is sound and complete, and computes each solution, if it exists, in finite time. The algorithm has been implemented for TSG, a typed dialect of SGraph, and shows some remarkable results for the inverse computation of functional programs such as pattern matching and the inverse interpretation of Whileprograms.
NREVERSAL of Fortune  The Thermodynamics of Garbage Collection
 In ACM Sigplan Notices
, 1977
"... The need to reverse a computation arises in many contextsdebugging, editor undoing, optimistic concurrency undoing, speculative computation undoing, trace scheduling, exception handling undoing, database recovery, optimistic discrete event simulations, subjunctive computing, etc. The need to anal ..."
Abstract

Cited by 14 (0 self)
 Add to MetaCart
The need to reverse a computation arises in many contextsdebugging, editor undoing, optimistic concurrency undoing, speculative computation undoing, trace scheduling, exception handling undoing, database recovery, optimistic discrete event simulations, subjunctive computing, etc. The need to analyze a reversed computation arises in the context of static analysisliveness analysis, strictness analysis, type inference, etc. Traditional means for restoring a computation to a previous state involve checkpoints; checkpoints require time to copy, as well as space to store, the copied material. Traditional reverse abstract interpretation produces relatively poor information due to its inability to guess the previous values of assignedto variables. We propose an abstract computer model and a programming languageYLispwhose primitive operations are injective and hence reversible, thus allowing arbitrary undoing without the overheads of checkpointing. Such a computer can be built from reversible conservative logic circuits, with the serendipitous advantage of dissipating far less heat than traditional Boolean AND/OR/NOT circuits. Unlike functional languages, which have one "state " for all times, YLisp has at all times one "state", with unique predecessor and successor states. Compiling into a reversible pseudocode can have benefits even when targeting a traditional computer. Certain optimizations, e.g., updateinplace, and compiletime garbage collection may be more easily performed, because the
Running Programs Backwards: the Logical Inversion of Imperative
, 2003
"... Imperative programs can be inverted directly from their forwarddirected program code with the use of logical inference. The relational semantics of imperative computations treats programs as logical relations over the observable state of the environment, which is taken to be the state of the variab ..."
Abstract

Cited by 13 (0 self)
 Add to MetaCart
Imperative programs can be inverted directly from their forwarddirected program code with the use of logical inference. The relational semantics of imperative computations treats programs as logical relations over the observable state of the environment, which is taken to be the state of the variables in memory. Program relations denote both forward and backward computations, and the direction of the computation depends upon the instantiation pattern of arguments in the relation. This view of inversion has practical applications when the relational semantics is treated as a logic program. Depending on the logic programming inference scheme used, execution of this relational program can compute the inverse of the imperative program. A number of nontrivial imperative computations can be inverted with minimal logic programming tools.
Principles of Inverse Computation and the Universal Resolving Algorithm
 IN THE ESSENCE OF COMPUTATION: COMPLEXITY, ANALYSIS, TRANSFORMATION
, 2002
"... We survey fundamental concept in inverse programming and present the Universal Resolving Algorithm (URA), an algorithm for inverse computation in a firstorder, functional programming language. We discusst he principles behind the algorithm, including a threestep approach based on the notion of a p ..."
Abstract

Cited by 13 (2 self)
 Add to MetaCart
We survey fundamental concept in inverse programming and present the Universal Resolving Algorithm (URA), an algorithm for inverse computation in a firstorder, functional programming language. We discusst he principles behind the algorithm, including a threestep approach based on the notion of a perfect process tree, and demonstrate our implementation with several examples. We explaint he idea of a semantics modifier for inverse computation which allows us to perform inverse computation in other programming languages via interpreters.
A Heuristic Approach to Program Inversion
, 1985
"... A notation is given for describing the inverse of multiple functions and of functions of multiple arguments. A technique based upon this notation is presented for taking a program written in pure LISP and automatically deriving a program which computes the inverse function of the given program. This ..."
Abstract

Cited by 11 (0 self)
 Add to MetaCart
A notation is given for describing the inverse of multiple functions and of functions of multiple arguments. A technique based upon this notation is presented for taking a program written in pure LISP and automatically deriving a program which computes the inverse function of the given program. This technique di#ers from previous such methods in its use of heuristics to invert conditionals. # x) 2 = x rather than LISP append reverse as given in [2], unary add1 and sub1, and sev 1. Introduction There are many applications in which it is useful to compute the inverse of some program, that is, to find another program such that feeding the output of the original program as input to the new program produces the original input. One such application is in programming by specification: one would like to define a program to compute the square root of a number by the equation ( supplying an actual iterative method of solving the equation. Another application of program inversion is in...
Transforming Interpreters into Inverse Interpreters by Partial Evaluation
 PEPM’03, JUNE 7, 2003, SAN DIEGO, CALIFORNIA, USA
, 2003
"... The experiments in this paper apply the idea of prototyping programming language tools from robust semantics: we used a partial evaluator (Similix) to turn interpreters into inverse interpreters. This way we generated inverse interpreters for several small languages including interpreters for Turing ..."
Abstract

Cited by 1 (1 self)
 Add to MetaCart
The experiments in this paper apply the idea of prototyping programming language tools from robust semantics: we used a partial evaluator (Similix) to turn interpreters into inverse interpreters. This way we generated inverse interpreters for several small languages including interpreters for Turing machines, an applied lambda calculus, a flowchart language, and a subset of Java bytecode. Limiting factors of offline partial evaluation were the polyvariant specialization scheme with its lack of generalization; advantages were the availability of higherorder values to specialize a breadthfirst tree traversal. This application of selfapplicable partial evaluation is different from the classical Futamura projections that tell us how to translate a program by specialization of an interpreter.
IOS Press Concepts, Structures, and Goals: Redefining
"... Abstract. In this paper we consider prior definitions of the terms “illdefined domain ” and “illdefined problem.” We then present alternate definitions that better support research at the intersection of Artificial Intelligence and Education. In our view both problems and domains are illdefined w ..."
Abstract
 Add to MetaCart
Abstract. In this paper we consider prior definitions of the terms “illdefined domain ” and “illdefined problem.” We then present alternate definitions that better support research at the intersection of Artificial Intelligence and Education. In our view both problems and domains are illdefined when essential concepts, relations, or criteria are un or underspecified, opentextured, or intractable requiring a solver to recharacterize them. This definition focuses on the core structural and pedagogical features that make problems and domains illdefined while providing a consistent and functional frame of reference for this special issue and for future work in this area. The concept of illdefinedness is an opentextured concept where no single static definition exists. We present the most suitable definition for the present goals of facilitating research in AI and Education, and addressing the pedagogical need to focus learners on addressing this ambiguity.