Skip to main content

Higher-order narrowing with definitional trees

  • Regular Papers
  • Conference paper
  • First Online:
Rewriting Techniques and Applications (RTA 1996)

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

Included in the following conference series:

Abstract

Functional logic languages with a sound and complete operational semantics are mainly based on narrowing. Due to the huge search space of simple narrowing, steadily improved narrowing strategies have been developed in the past. Needed narrowing is currently the best narrowing strategy for first-order functional logic programs due to its optimality properties w.r.t. the length of derivations and the number of computed solutions. In this paper, we extend the needed narrowing strategy to higher-order functions and λ-terms as data structures. By the use of definitional trees, our strategy computes only incomparable solutions. Thus, it is the first calculus for higher-order functional logic programming which provides for such an optimality result. Since we allow higher-order logical variables denoting λ-terms, applications go beyond current functional and logic programming languages.

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. Definitional trees. In Proc. of the 3rd International Conference on Algebraic and Logic Programming, pages 143–157. Springer LNCS 632, 1992.

    Google Scholar 

  2. S. Antoy, R. Echahed, and M. Hanus. A needed narrowing strategy. In Proc. 21st ACM Symposium on Principles of Programming Languages, pages 268–279, Portland, 1994.

    Google Scholar 

  3. Andrea Asperti and Cosimo Laneve. Interaction systems I: The theory of optimal reductions. Mathematical Structures in Computer Science, 4:457–504, 1994.

    Google Scholar 

  4. J. Avenhaus and C. A. Loría-Sáenz. Higher-order conditional rewriting and narrowing. In Jean-Pierre Jouannaud, editor, 1st International Conference on Constraints in Computational Logics, München, Germany, September 1994. Springer LNCS 845.

    Google Scholar 

  5. Hendrik Pieter Barendregt. The Lambda Calculus, its Syntax and Semantics. North Holland, 2nd edition, 1984.

    Google Scholar 

  6. E. Giovannetti, G. Levi, C. Moiso, and C. Palamidessi. Kernel LEAF: A logic plus functional language. Journal of Computer and System Sciences, 42(2):139–185, 1991.

    Article  Google Scholar 

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

    Article  Google Scholar 

  8. M. Hanus. Efficient translation of lazy functional logic programs into Prolog. In Proc. Fifth International Workshop on Logic Program Synthesis and Transformation, pages 252–266. Springer LNCS 1048, 1995.

    Google Scholar 

  9. M. Harms and C. Prehofer. Higher-order narrowing with definitional trees. Technical report 96-2, RWTH Aachen, 1996.

    Google Scholar 

  10. J.R. Hindley and J. P. Seldin. Introduction to Combinators and λ-Calculus. Cambridge University Press, 1986.

    Google Scholar 

  11. Jan Willem Klop. Combinatory Reduction Systems. Mathematical Centre Tracts 127. Mathematisch Centrum, Amsterdam, 1980.

    Google Scholar 

  12. Dale Miller. A logic programming language with lambda-abstraction, function variables, and simple unification. J. Logic and Computation, 1:497–536, 1991.

    Google Scholar 

  13. J.J. Moreno-Navarro and M. Rodríguez-Artalejo. Logic programming with functions and predicates: The language BABEL. Journal of Logic Programming, 12:191–223, 1992.

    Article  Google Scholar 

  14. Tobias Nipkow. Higher-order critical pairs. In Proc. 6th IEEE Symp. Logic in Computer Science, pages 342–349, 1991.

    Google Scholar 

  15. Vincent van Oostrom. Confluence for Abstract and Higher-Order Rewriting. PhD thesis, Vrije Universiteit, 1994. Amsterdam.

    Google Scholar 

  16. Vincent van Oostrom. Higher-order families, 1996. In this volume.

    Google Scholar 

  17. Christian Prehofer. Higher-order narrowing. In Proc. Ninth Annual IEEE Symposium on Logic in Computer Science, pages 507–516. IEEE Computer Society Press, 1994.

    Google Scholar 

  18. Christian Prehofer. A Call-by-Need Strategy for Higher-Order Functional-Logic Programming. In J. Lloyd, editor, Logic Programming. Proc. of the 1995 International Symposium, pages 147–161. MIT Press, 1995.

    Google Scholar 

  19. Christian Prehofer. Solving Higher-order Equations: From Logic to Programming. PhD thesis, TU München, 1995. Also appeared as Technical Report I9508.

    Google Scholar 

  20. J.R. Slagle. Automated theorem-proving for theories with simplifiers, commutativity, and associativity. Journal of the ACM, 21(4):622–642, 1974.

    Article  Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Harald Ganzinger

Rights and permissions

Reprints and permissions

Copyright information

© 1996 Springer-Verlag Berlin Heidelberg

About this paper

Cite this paper

Hanus, M., Prehofer, C. (1996). Higher-order narrowing with definitional trees. In: Ganzinger, H. (eds) Rewriting Techniques and Applications. RTA 1996. Lecture Notes in Computer Science, vol 1103. Springer, Berlin, Heidelberg. https://doi.org/10.1007/3-540-61464-8_48

Download citation

  • DOI: https://doi.org/10.1007/3-540-61464-8_48

  • Published:

  • Publisher Name: Springer, Berlin, Heidelberg

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

  • Online ISBN: 978-3-540-68596-8

  • eBook Packages: Springer Book Archive

Publish with us

Policies and ethics