Projection factorisations in partial evaluation
Projection factorisations in partial evaluation
Improving binding times without explicit CPS-conversion
LFP '92 Proceedings of the 1992 ACM conference on LISP and functional programming
Jones optimality, binding-time improvements, and the strength of program specializers
ASIA-PEPM '02 Proceedings of the ASIAN symposium on Partial evaluation and semantics-based program manipulation
The Use of Metasystem Transition in Theorem Proving and Program Optimization
Proceedings of the 7th Colloquium on Automata, Languages and Programming
Program Construction, International Summer Schoo
A reversible programming language and its invertible self-interpreter
Proceedings of the 2007 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
Semi-inversion of functional parameters
PEPM '08 Proceedings of the 2008 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
Completion after Program Inversion of Injective Functions
Electronic Notes in Theoretical Computer Science (ENTCS)
Automatic partial inversion of inductively sequential functions
IFL'06 Proceedings of the 18th international conference on Implementation and application of functional languages
Report on an implementation of a semi-inverter
PSI'06 Proceedings of the 6th international Andrei Ershov memorial conference on Perspectives of systems informatics
Proving injectivity of functions via program inversion in term rewriting
FLOPS'10 Proceedings of the 10th international conference on Functional and Logic Programming
Reversible machine code and its abstract processor architecture
CSR'07 Proceedings of the Second international conference on Computer Science: theory and applications
Hi-index | 0.00 |
An inverse of a program is a program that takes the output of the original program and produces its input. A semi-inverse of a program is a program that takes some of the input and some of the output of the original program and produces the remaining input and output. Inversion is, hence, a special case of semi-inversion. We propose a method for inverting and semi-inverting programs written as guarded equations. The semi-inversion process is divided into four phases: Translation of equations into a relational form, refining operators, determining evaluation order for each equation of the semi-inverted functions and translation of semi-inverted functions back to the original syntax. In cases where the method fails to semi-invert a program, it can suggest which additional parts of the programs input or output are needed to make it work.