Results 1 - 10
of
16
A Roadmap to Metacomputation by Supercompilation
, 1996
"... This paper gives a gentle introduction to Turchin's supercompilation and its applications in metacomputation with an emphasis on recent developments. First, a complete supercompiler, including positive driving and generalization, is defined for a functional language and illustrated with examples. Th ..."
Abstract
-
Cited by 33 (4 self)
- Add to MetaCart
This paper gives a gentle introduction to Turchin's supercompilation and its applications in metacomputation with an emphasis on recent developments. First, a complete supercompiler, including positive driving and generalization, is defined for a functional language and illustrated with examples. Then a taxonomy of related transformers is given and compared to the supercompiler. Finally, we put supercompilation into the larger perspective of metacomputation and consider three metacomputation tasks: specialization, composition, and inversion.
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 first-order 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 18 (3 self)
- Add to MetaCart
We present an algorithm for inverse computation in a first-order 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 S-Graph, and shows some remarkable results for the inverse computation of functional programs such as pattern matching and the inverse interpretation of While-programs.
NREVERSAL of Fortune -- The Thermodynamics of Garbage Collection
- In ACM Sigplan Notices
, 1977
"... The need to reverse a computation arises in many contexts---debugging, 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 13 (0 self)
- Add to MetaCart
The need to reverse a computation arises in many contexts---debugging, 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 analysis---liveness 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 assigned-to variables. We propose an abstract computer model and a programming language---Y-Lisp---whose 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, Y-Lisp 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., update-in-place, and compile-time garbage collection may be more easily performed, because the
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 first-order, functional programming language. We discusst he principles behind the algorithm, including a three-step approach based on the notion of a p ..."
Abstract
-
Cited by 12 (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 first-order, functional programming language. We discusst he principles behind the algorithm, including a three-step 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.
Partial inversion of constructor term rewriting systems
- In Proc. of the 16th Int’l Conf. on Term Rewriting and Applications (RTA 2005
, 2005
"... Abstract. Partial-inversion compilers generate programs which compute some unknown inputs of given programs from a given output and the rest of inputs whose values are already given. In this paper, we propose a partial-inversion compiler of constructor term rewriting systems. The compiler automatica ..."
Abstract
-
Cited by 11 (3 self)
- Add to MetaCart
Abstract. Partial-inversion compilers generate programs which compute some unknown inputs of given programs from a given output and the rest of inputs whose values are already given. In this paper, we propose a partial-inversion compiler of constructor term rewriting systems. The compiler automatically generates a conditional term rewriting system, and then unravels it to an unconditional system. To improve the efficiency of inverse computation, we show that innermost strategy is usable to obtain all solutions if the generated system is right-linear. 1
Running Programs Backwards: the Logical Inversion of Imperative
, 2003
"... Imperative programs can be inverted directly from their forward-directed 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 9 (0 self)
- Add to MetaCart
Imperative programs can be inverted directly from their forward-directed 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.
Metacomputation as a Tool for Formal Linguistic Modeling
- Cybernetics and Systems '94
, 1994
"... We consider the principle "a new model is a model of an existing one" as the main scheme for deriving new linguistic models by metacomputation. We derive the basic requirements for metacomputation by a structural analysis of different model definitions, and show that in order to automate the creatio ..."
Abstract
-
Cited by 6 (5 self)
- Add to MetaCart
We consider the principle "a new model is a model of an existing one" as the main scheme for deriving new linguistic models by metacomputation. We derive the basic requirements for metacomputation by a structural analysis of different model definitions, and show that in order to automate the creation of linguistic models the following operations on linguistic models have to be performed by metacomputation effectively and efficiently: composition, inversion, and specialization of algorithms. This may also serve as a unifying paradigm for different program transformation approaches. 1. INTRODUCTION During the last decades we have witnessed tremendous technological breakthroughs in the development and application of computers. The introduction of the computer was an evolutionary step in the control of formal linguistic models, a metasystem transition (MST). As a result the number of linguistic models created and used has significantly increased. The method of modern science is, in its e...
Semantics Modifiers: An Approach To Non-Standard Semantics Of Programming Languages
- Third Fuji International Symposium on Functional and Logic Programming
, 1998
"... this paper, semantics modifiers exist for a wide class of computational problems, including non-standard computation, program analysis and ..."
Abstract
-
Cited by 5 (3 self)
- Add to MetaCart
this paper, semantics modifiers exist for a wide class of computational problems, including non-standard computation, program analysis and
From Standard To Non-Standard Semantics By Semantics Modifiers
, 2001
"... An approach for systematically modifying the semantics of programming languages by semantics modifiers is described. Semantics modifiers are a class of programs that allow the development of general and reusable "semantics components". Language independence is achieved through the interpretive ap ..."
Abstract
-
Cited by 3 (3 self)
- Add to MetaCart
An approach for systematically modifying the semantics of programming languages by semantics modifiers is described. Semantics modifiers are a class of programs that allow the development of general and reusable "semantics components". Language independence is achieved through the interpretive approach: an interpreter serves as a mediator between the new language and the language for which the non-standard semantics was implemented. Inverse computation, equivalence transformation and neighborhood analysis are shown to be semantics modifiers. Experiments with these modifiers show the computational feasibility of this approach. Seven modifier projections are given which allow the e#cient implementation of non-standard interpreters and non-standard compilers by program specialization or other powerful program transformation methods.

