Time/space trade-offs for reversible computation
SIAM Journal on Computing
Partial evaluation and automatic program generation
Partial evaluation and automatic program generation
Program Generation, Termination, and Binding-Time Analysis
GPCE '02 Proceedings of the 1st ACM SIGPLAN/SIGSOFT conference on Generative Programming and Component Engineering
Partial Evaluation - Practice and Theory, DIKU 1998 International Summer School
Proceedings of the 7th Colloquium on Automata, Languages and Programming
Time and Space Bounds for Reversible Simulation
ICALP '01 Proceedings of the 28th International Colloquium on Automata, Languages and Programming,
BTA Algorithms to Ensure Termination of Off-Line Partial Evaluation
Proceedings of the Second International Andrei Ershov Memorial Conference on Perspectives of System Informatics
Binding-Time Analysis in Partial Evaluation: One Size Does Not Fit All
PSI '99 Proceedings of the Third International Andrei Ershov Memorial Conference on Perspectives of System Informatics
CC '96 Proceedings of the 6th International Conference on Compiler Construction
The translation of ''go to'' programs to ''while'' programs
The translation of ''go to'' programs to ''while'' programs
MARS: an education-oriented MIPS assembly language simulator
Proceedings of the 37th SIGCSE technical symposium on Computer science education
A reversible programming language and its invertible self-interpreter
Proceedings of the 2007 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
Principles of a reversible programming language
Proceedings of the 5th conference on Computing frontiers
Reversible Flowchart Languages and the Structured Reversible Program Theorem
ICALP '08 Proceedings of the 35th international colloquium on Automata, Languages and Programming, Part II
Irreversibility and heat generation in the computing process
IBM Journal of Research and Development
Towards a reversible functional language
RC'11 Proceedings of the Third international conference on Reversible Computation
Partial evaluation of janus part 2: assertions and procedures
PSI'11 Proceedings of the 8th international conference on Perspectives of System Informatics
Hi-index | 0.00 |
A reversible programming language is a programming language in which you can only write reversible programs, i.e., programs that can be run both forwards (computing outputs from inputs) and backwards (computing inputs from outputs). It is interesting to study reversible programs and languages because computations on reversible computers (computers that only allow reversible programs) in theory can be done using less energy than computations on traditional irreversible computers. Janus is a reversible, structured imperative programming language. We present a partial evaluator for the full Janus language with the exception of procedure calls. The partial evaluator converts Janus programs into reversible flowcharts, specialises these using polyvariant specialisation and converts the result back to structured form. Reversibility adds some complications, which we address in the paper. We demonstrate the results by some small examples. We believe this to be the first partial evaluator for a deterministic reversible programming language.