Skip to main content

An Universal Resolving Algorithm for Inverse Computation of Lazy Languages

  • Conference paper
Perspectives of Systems Informatics (PSI 2006)

Part of the book series: Lecture Notes in Computer Science ((LNTCS,volume 4378))

Abstract

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.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 39.99
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 54.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. Abramov, S.M.: Metavychislenija i logicheskoe programmirovanie (Metacomputation and logic programming) (In Russian). Programmirovanie 3, 31–44 (1991)

    Google Scholar 

  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)

    Chapter  Google Scholar 

  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)

    Article  MATH  MathSciNet  Google Scholar 

  4. Albert, E., Vidal, G.: The narrowing-driven approach to functional logic program specialization. New Generation Computing 20(1), 3–26 (2002)

    Article  MATH  MathSciNet  Google Scholar 

  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. 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. 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. Hanus, M.: The integration of functions into logic programming: from theory to practice. Journal of Logic Programming 19 & 20, 583–628 (1994)

    Article  MathSciNet  Google Scholar 

  9. Hanus, M.: Curry: an integrated functional logic language (version 0.8). Report, University of Kiel (2003)

    Google Scholar 

  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)

    MATH  MathSciNet  Google Scholar 

  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)

    Article  MATH  Google Scholar 

  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)

    Chapter  Google Scholar 

  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. 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. Secher, J.P.: Driving in the jungle. In: Danvy, O., Filinski, A. (eds.) PADO 2001. LNCS, vol. 2053, pp. 198–217. Springer, Heidelberg (2001)

    Chapter  Google Scholar 

  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)

    Chapter  Google Scholar 

  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)

    Chapter  Google Scholar 

  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. Turchin, V.F.: The concept of a supercompiler. ACM Transactions on Programming Languages and Systems 8(3), 292–325 (1986)

    Article  MATH  MathSciNet  Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Irina Virbitskaite Andrei Voronkov

Rights and permissions

Reprints and permissions

Copyright information

© 2007 Springer-Verlag Berlin Heidelberg

About this paper

Cite this paper

Abramov, S., Glück, R., Klimov, Y. (2007). An Universal Resolving Algorithm for Inverse Computation of Lazy Languages . In: Virbitskaite, I., Voronkov, A. (eds) Perspectives of Systems Informatics. PSI 2006. Lecture Notes in Computer Science, vol 4378. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-540-70881-0_6

Download citation

  • DOI: https://doi.org/10.1007/978-3-540-70881-0_6

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-540-70880-3

  • Online ISBN: 978-3-540-70881-0

  • eBook Packages: Computer ScienceComputer Science (R0)

Publish with us

Policies and ethics