Skip to main content

A verified implementation of narrowing

  • Conference paper
  • First Online:
Programming Languages: Implementations, Logics and Programs (PLILP 1995)

Part of the book series: Lecture Notes in Computer Science ((LNCS,volume 982))

  • 196 Accesses

Abstract

Although there exist a lot of deterministic implementations of functional logic programming languages, up to now, none of them has been verified. For abolishing this grievance, we present a simple implementation of the leftmost outermost narrowing strategy for a restricted functional logic programming language and prove its correctness.

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

Access this chapter

Institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. S. Antoy, R. Echahed, and M. Hanus. A needed narrowing strategy. In POPL'94, pages 268–279. Portland, 1994.

    Google Scholar 

  2. L. Augustsson. A compiler for lazy ML. In Proceedings of the ACM Symposium on Lisp and Functional Programming, pages 218–227, 1984.

    Google Scholar 

  3. E. Börger, F. Lopez-Fraguas, and M. Rodriguez-Artalejo. A model for mathematical analysis of functional logic languages and their implementations. In IFIP'94, Vol. I, pages 410–415. IFIP Transactions A-51, 1994. North-Holland.

    Google Scholar 

  4. E. Börger and D. Rosenzweig. The WAM — definition and compiler correctness. Technical Report TR-14/92, Dipartimento di Informatica, Universita di Pisa, 1992.

    Google Scholar 

  5. R. Echahed. On completeness of narrowing strategies. In CAAP'88, pages 89–101. Springer-Verlag, 1988. LNCS 299.

    Google Scholar 

  6. J. Engelfriet and H. Vogler. Modular tree transducers. Theoretical Computer Science, 78:267–304, 1991.

    Google Scholar 

  7. H. Faßbender. E-Unifikation für primitiv-rekursive Baumfunktionen. PhD thesis, Universität Ulm, Fakultät für Informatik, März 1995.

    Google Scholar 

  8. H. Faßbender and H. Vogler. A universal unification algorithm based on unification-driven leftmost outermost narrowing. Acta Cybernetica, 11(3):139–167, 1994.

    Google Scholar 

  9. M. Fay. First-order unification in an equational theory. In Proceeding of the 4th workshop on automated deduction, Austin, pages 161–167, 1979.

    Google Scholar 

  10. Y. Gurevich. Evolving algebras. A tutorial introduction. Bulletin of the EATCS, 43:264–284, 1991.

    Google Scholar 

  11. W. Hans, R. Loogen, and S. Winkler. On the interaction of lazy evaluation and backtracking. In PLILP'92, pages 355–369. Springer-Verlag, 1992. LNCS 631.

    Google Scholar 

  12. M. Hanus. The integration of functions into logic programming: From theory to practice. Journal of Logic Programming, 19,20:583–628, 1994.

    Google Scholar 

  13. J.M. Hullot. Canonical forms and unification. In Proceedings of the 5th conference on automated deduction, pages 318–334. Springer-Verlag, 1980. LNCS 87.

    Google Scholar 

  14. T. Johnsson. Efficient compilation of lazy evaluation. SIGPLAN Notices, 6:58–69, 1984.

    Google Scholar 

  15. H. Kuchen, R. Loogen, J.J. Moreno-Navarro, and M. Rodriguez-Artalejo. Graphbased implementation of a functional logic language. In ESOP'90, pages 271–290. Springer-Verlag, 1990. LNCS 432.

    Google Scholar 

  16. D. Lester. The G-Machine as a representation of stack semantics. In Functional Programming Languages and Computer Architecture, pages 46–59. Springer-Verlag, 1987. LNCS 274.

    Google Scholar 

  17. J.J. Moreno-Navarro, H. Kuchen, R. Loogen, and M. Rodriguez-Artalejo. Lazy narrowing in a graph machine. In ALP'90, pages 298–317. Springer-Verlag, 1990. LNCS 463.

    Google Scholar 

  18. J.J. Moreno-Navarro and M. Rodriguez-Artalejo. Logic-programming with functions and predicates: the language BABEL. Journal of Logic Programming, 12:191–223, 1992.

    Google Scholar 

  19. A. Mück. CAMEL: an extension of the categorical abstract machine to compile functional/logic programs. In PLILP'92. Springer-Verlag, 1992. LNCS 631.

    Google Scholar 

  20. A. Mück. CAMEL: a verified abstract machine for functional logic programming. In A. Mück, editor, Proceedings of the Second International Workshop on Functional/ Logic Programming. University of Munich, Number 9311, 1993.

    Google Scholar 

  21. Rinus Plasmeijer and Marko van Eekelen. Functional Programming and Parallel Graph Rewriting. International Computer Science Series. Addison Wesley, 1993.

    Google Scholar 

  22. U.S. Reddy. Narrowing as the operational semantics of functional languages. In Symposium on Logic Programming, pages 138–151. IEEE Comp. Soc. Press, 1985.

    Google Scholar 

  23. D.H.D. Warren. An abstract prolog instruction set. Technical Report 309, SRI International, 1983.

    Google Scholar 

  24. J.H. You. Enumerating outer narrowing derivations for constructor-based term rewriting systems. Journal of Symbolic Computation, 7:319–341, 1989.

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Manuel Hermenegildo S. Doaitse Swierstra

Rights and permissions

Reprints and permissions

Copyright information

© 1995 Springer-Verlag Berlin Heidelberg

About this paper

Cite this paper

Faßbender, H. (1995). A verified implementation of narrowing. In: Hermenegildo, M., Swierstra, S.D. (eds) Programming Languages: Implementations, Logics and Programs. PLILP 1995. Lecture Notes in Computer Science, vol 982. Springer, Berlin, Heidelberg. https://doi.org/10.1007/BFb0026814

Download citation

  • DOI: https://doi.org/10.1007/BFb0026814

  • Published:

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-540-60359-7

  • Online ISBN: 978-3-540-45048-1

  • eBook Packages: Springer Book Archive

Publish with us

Policies and ethics