NREVERSAL of Fortune - The Thermodynamics of Garbage Collection
IWMM '92 Proceedings of the International Workshop on Memory Management
Principles of inverse computation and the Universal resolving algorithm
The essence of computation
Reversibility for efficient computing
Reversibility for efficient computing
A Method for Automatic Program Inversion Based on LR(0) Parsing
Fundamenta Informaticae - Program Transformation: Theoretical Foundations and Basic Techniques. Part 1
A reversible programming language and its invertible self-interpreter
Proceedings of the 2007 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
Reversible computing and cellular automata—A survey
Theoretical Computer Science
Principles of a reversible programming language
Proceedings of the 5th conference on Computing frontiers
Logical reversibility of computation
IBM Journal of Research and Development
Partial evaluation of the reversible language janus
Proceedings of the 20th ACM SIGPLAN workshop on Partial evaluation and program manipulation
Reversible Computing: Fundamentals, Quantum Computing, and Applications
Reversible Computing: Fundamentals, Quantum Computing, and Applications
What do reversible programs compute?
FOSSACS'11/ETAPS'11 Proceedings of the 14th international conference on Foundations of software science and computational structures: part of the joint European conferences on theory and practice of software
Clean translation of an imperative reversible programming language
CC'11/ETAPS'11 Proceedings of the 20th international conference on Compiler construction: part of the joint European conferences on theory and practice of software
Describing and optimising reversible logic using a functional language
IFL'11 Proceedings of the 23rd international conference on Implementation and Application of Functional Languages
Reversible representation and manipulation of constructor terms in the heap
RC'13 Proceedings of the 5th international conference on Reversible Computation
Hi-index | 0.00 |
We identify concepts of reversibility for a functional language by means of a set of semantic rules with specific properties. These properties include injectivity along with local backward determinism, an important operational property for an efficient reversible language. We define a concise reversible first-order functional language in which access to the backward semantics is provided to the programmer by inverse function calls. Reversibility guarantees that in this language a backward run (inverse interpretation) is as fast as the corresponding forward run itself. By adopting a symmetric first-match policy for case expressions, we can write overlapping patterns in case branches, as is customary in ordinary functional languages, and also in leaf expressions, unlike existing inverse interpreter methods, which enables concise programs. In patterns, the use of a duplication/equality operator also simplifies inverse computation and program inversion. We discuss the advantages of a reversible functional language using example programs, including run-length encoding. Program inversion is seen to be as lightweight as for imperative reversible languages and realized by recursive descent. Finally, we show that the proposed language is r-Turing complete.