An Universal Resolving Algorithm for Inverse Computation of Lazy Languages

  • Sergei Abramov
  • Robert Glück
  • Yuri Klimov
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 4378)


The Universal Resolving Algorithm was originally formulated for inverse computation of tail-recursive programs. We present an extension to general recursion that improves the efficiency and termination of inverse computation because partially produced output is used to reduce the search space. In addition, we present a transformation using a new unification-based equality operator. Examples demonstrate the advantages of the new technique. We found that these extensions can also improve inverse computation in the context of functional-logic languages.


Search Space Logic Program Logic Programming Operational Semantic Equality Test 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    Abramov, S.M.: Metavychislenija i logicheskoe programmirovanie (Metacomputation and logic programming) (In Russian). Programmirovanie 3, 31–44 (1991)Google Scholar
  2. 2.
    Abramov, S.M., Glück, R.: The universal resolving algorithm: inverse computation in a functional language. In: Backhouse, R., Oliveira, J.N. (eds.) MPC 2000. LNCS, vol. 1837, pp. 187–212. Springer, Heidelberg (2000)CrossRefGoogle Scholar
  3. 3.
    Abramov, S.M., Glück, R.: The universal resolving algorithm and its correctness: inverse computation in a functional language. Science of Computer Programming 43(2-3), 193–229 (2002)zbMATHCrossRefMathSciNetGoogle Scholar
  4. 4.
    Albert, E., Vidal, G.: The narrowing-driven approach to functional logic program specialization. New Generation Computing 20(1), 3–26 (2002)zbMATHMathSciNetCrossRefGoogle Scholar
  5. 5.
    Ershov, A.P.: On the essence of compilation. In: Neuhold, E. (ed.) Formal Description of Programming Concepts, pp. 391–420. North-Holland, Amsterdam (1978)Google Scholar
  6. 6.
    Glück, R., Klimov, A.V.: Occam’s razor in metacomputation: the notion of a perfect process tree. In: Cousot, P., et al. (eds.) WSA 1993. LNCS, vol. 724, pp. 112–123. Springer, Heidelberg (1993)Google Scholar
  7. 7.
    Glück, R., Sørensen, M.H.: Partial deduction and driving are equivalent. In: Penjam, J. (ed.) PLILP 1994. LNCS, vol. 844, pp. 165–181. Springer, Heidelberg (1994)Google Scholar
  8. 8.
    Hanus, M.: The integration of functions into logic programming: from theory to practice. Journal of Logic Programming 19 & 20, 583–628 (1994)CrossRefMathSciNetGoogle Scholar
  9. 9.
    Hanus, M.: Curry: an integrated functional logic language (version 0.8). Report, University of Kiel (2003)Google Scholar
  10. 10.
    Hoffmann, B., Plump, D.: Implementing term rewriting by jungle evaluation. Informatique Théorique et Applications/Theoretical Informatics and Applications 25(5), 445–472 (1991)zbMATHMathSciNetGoogle Scholar
  11. 11.
    Moreno-Navarro, J.J., Rodriguez-Artalejo, M.: Logic programming with functions and predicates: the language Babel. J. of Logic Programming 12(3), 191–223 (1992)zbMATHCrossRefGoogle Scholar
  12. 12.
    Mu, S.-C., Bird, R.: Inverting functions as folds. In: Boiten, E.A., Möller, B. (eds.) MPC 2002. LNCS, vol. 2386, pp. 209–232. Springer, Heidelberg (2002)CrossRefGoogle Scholar
  13. 13.
    Nemytykh, A.P., Pinchuk, V.A.: Program transformation with metasystem transitions: experiments with a supercompiler. In: Bjorner, D., Broy, M., Pottosin, I.V. (eds.) PSI 1996. LNCS, vol. 1181, pp. 249–260. Springer, Heidelberg (1996)Google Scholar
  14. 14.
    Romanenko, A.Y.: The generation of inverse functions in Refal. In: Bjørner, D., Ershov, A.P., Jones, N.D. (eds.) Partial Evaluation and Mixed Computation, pp. 427–444. North-Holland, Amsterdam (1988)Google Scholar
  15. 15.
    Secher, J.P.: Driving in the jungle. In: Danvy, O., Filinski, A. (eds.) PADO 2001. LNCS, vol. 2053, pp. 198–217. Springer, Heidelberg (2001)CrossRefGoogle Scholar
  16. 16.
    Secher, J.P., Sørensen, M.H.: On perfect supercompilation. In: Bjorner, D., Broy, M., Zamulin, A.V. (eds.) PSI 1999. LNCS, vol. 1755, pp. 113–127. Springer, Heidelberg (2000)CrossRefGoogle Scholar
  17. 17.
    Secher, J.P., Sørensen, M.H.: From checking to inference via driving and DAG grammars. In: ACM SIGPLAN Workshop on Partial Evaluation and Semantics-Based Program Manipulation, pp. 41–51. ACM Press, New York (2002)CrossRefGoogle Scholar
  18. 18.
    Turchin, V.F.: Equivalent transformations of recursive functions defined in Refal (In Russian). In: Tjeorija Jazykov i Mjetody Programmirovanija (Proceedings of the Symposium on the Theory of Languages and Programming Methods), Kiev-Alushta, USSR, pp. 31–42 (1972)Google Scholar
  19. 19.
    Turchin, V.F.: The concept of a supercompiler. ACM Transactions on Programming Languages and Systems 8(3), 292–325 (1986)zbMATHCrossRefMathSciNetGoogle Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2007

Authors and Affiliations

  • Sergei Abramov
    • 1
  • Robert Glück
    • 2
  • Yuri Klimov
    • 3
  1. 1.Program Systems Institute, Russian Academy of Sciences, RU-152140 Pereslavl-ZalesskyRussia
  2. 2.DIKU, Department of Computer Science, University of Copenhagen, DK-2100 CopenhagenDenmark
  3. 3.M.V. Keldysh Institute for Applied Mathematics, Russian Academy of Sciences, RU-125047 MoscowRussia

Personalised recommendations