Inverse interpretation is a semantics based, non-standard interpretation of programs. Given a program and a value, an inverse interpreter finds all or one of the inputs, that would yield the given value as output with normal forward evaluation. The Reverse Universal Resolving Algorithm is a new variant of the Universal Resolving Algorithm for inverse interpretation. The new variant outperforms the original algorithm in several cases, e.g., when unpacking a list using inverse interpretation of a pack program. It uses inverse driving as its main technique, which has not been described in detail before. Inverse driving may find application with, e.g., supercompilation, thus suggesting a new kind of program inverter.
Journal of Logic and Algebraic Programming, 2012, Vol 81, Issue 3, p. 314-330