Skip to main content

Narrowing the narrowing space

  • Paradigm Integration
  • Conference paper
  • First Online:
Book cover Programming Languages: Implementations, Logics, and Programs (PLILP 1997)

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

Abstract

We introduce a framework for managing as a whole the space of a narrowing computation. The aim of our framework is to find a finite representation of an infinite narrowing space. This, in turn, allows us to replace an infinite enumeration of computed answers with an equivalent finite representation. We provide a semidecidable condition for this result. Our framework is intended to be used by implementations of functional logic programming languages. Our approach borrows from the memoization technique used in the implementation of functional languages. Since narrowing adds non-determinism and unifiers to functional evaluation, we develop a new approach based on graphs to memoize the outcome of a goal.

This work has been supported in part by the National Science Foundation under grants CCR-9406751, CCR-9410237, CCR-9624711.

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. D. Angluin and C. Smith. Inductive inference: Theory and methods Computing Surveys, 15(3):237–269, 1983.

    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. URL www.cs.pdx.edu/≈antoy/publications. html.

    Google Scholar 

  3. S. Antoy, R. Echahed, and M. Hanus. A parallel narrowing strategy. In 14th Int'l Conference on Logic Programming, Leuven, Belgium, July 1997. (to appear) URL www.cs.pdx.edu/≈antoy/publications.html.

    Google Scholar 

  4. A. Bockmayr, S. Krischer, and A. Werner. An optimal narrowing strategy for general canonical systems. In Proc. of the 3rd Intern. Workshop on Conditional Term Rewriting Systems, pages 483–497. Springer LNCS 656, 1992.

    Google Scholar 

  5. R.S. Boyer and J.S. Moore. Proving theorems about LISP functions. JACM, 22(1):129–144, Jan. 1975.

    Google Scholar 

  6. J. Darlington and Y. Guo. Narrowing and unification in functional programming — an evaluation mechanism for absolute set abstraction. In Proc. of the Conference on Rewriting Techniques and Applications, pages 92–108. Springer LNCS 355, 1989.

    Google Scholar 

  7. N. Dershowitz and J. Jouannaud. Rewrite systems. In J. van Leeuwen, editor, Handbook of Theoretical Computer Science B: Formal Methods and Semantics, chapter 6, pages 243–320. North Holland, Amsterdam, 1990.

    Google Scholar 

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

    Google Scholar 

  9. R. Echahed. Uniform narrowing strategies. In Proceedings of the Third International Conference on Algebraic and Logic Programming, pages 259–275, Volterra, Italy, September 1992.

    Google Scholar 

  10. M. J. Fay. First-order unification in an equational theory. In Proc. 4th Workshop on Automated Deduction, pages 161–167, Austin (Texas), 1979. Academic Press.

    Google Scholar 

  11. L. Fribourg. SLOG: A logic programming language interpreter based on clausal superposition and rewriting. In Proc. IEEE Internat. Symposium on Logic Programming, pages 172–184, Boston, 1985.

    Google Scholar 

  12. S.J. Garland and J.V. Guttag. Inductive methods for reasoning about abstract data types. In ACM SIGACT-SIGPLAN Symposium of Principles of Programming Languages, pages 219–228, 1988.

    Google Scholar 

  13. E. Giovannetti, G. Levi, C. Moiso, and C. Palamidessi. Kernel LEAF: a logic plus functional language. The Journal of Computer and System Sciences, 42:139–185, 1991.

    Google Scholar 

  14. W. Hans, R. Loogen, and S. Winkler. On the interaction of lazy evaluation and backtracking. In Proc. of the 4th International Symposium on Programming Language Implementation and Logic Programming, pages 355–369. Springer LNCS 631, 1992.

    Google Scholar 

  15. M. Hanus. Lazy narrowing with simplification. Computer Languages (to appear), 1997.

    Google Scholar 

  16. A. Herold. Narrowing techniques applied to idempotent unification. Technical Report SR-86-16, SEKI, 1986.

    Google Scholar 

  17. S. Hölldobler. Foundations of Equational Logic Programming. Springer LNCS 353, 1989.

    Google Scholar 

  18. G. Huet and J.-M. Hullot. Proofs by induction in equational theories with constructors. JCSS, 25:239–266, 1982.

    Google Scholar 

  19. J. W. Klop. Term Rewriting Systems. In S. Abramsky, D. Gabbay, and T. Maibaum, editors, Handbook of Logic in Computer Science, Vol. II, pages 1–112. Oxford University Press, 1992.

    Google Scholar 

  20. S. Krischer and A. Bockmayr. Detecting redundant narrowing derivations by the LSE-SL reducibility test. In Proc. RTA'91. Springer LNCS 488, 1991.

    Google Scholar 

  21. A. Middeldorp and E. Hamoen. Counterexamples to completeness results for basic narrowing (extended abstract). In Proceedings of the Third International Conference on Algebraic and Logic Programming, pages 244–258, Volterra, Italy, September 1992.

    Google Scholar 

  22. J. J. Moreno-Navarro, H. Kuchen, R. Loogen, and M. Rodriguez-Artalejo. Lazy narrowing in a graph machine. In Proc. Second International Conference on Algebraic and Logic Programming, pages 298–317. Springer LNCS 463, 1990.

    Google Scholar 

  23. 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.

    Google Scholar 

  24. W. Nutt, P. Réty, and G. Smolka. Basic narrowing revisited. Journal of Symbolic Computation, 7:295–317, 1989.

    Google Scholar 

  25. S. L. Peyton Jones. The implementation of Functional Programming Languages. Prentice-Hall International, Englewood Cliffs, N.J., 1987.

    Google Scholar 

  26. U. S. Reddy. Narrowing as the operational semantics of functional languages. In Proc. IEEE Internat. Symposium on Logic Programming, pages 138–151, Boston, 1985.

    Google Scholar 

  27. J.-H. You. Unification modulo an equality theory for equational logic programming. The Journal of Computer and System Sciences, 42(1):54–75, 1991.

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Hugh Glaser Pieter Hartel Herbert Kuchen

Rights and permissions

Reprints and permissions

Copyright information

© 1997 Springer-Verlag Berlin Heidelberg

About this paper

Cite this paper

Antoy, S., Ariola, Z.M. (1997). Narrowing the narrowing space. In: Glaser, H., Hartel, P., Kuchen, H. (eds) Programming Languages: Implementations, Logics, and Programs. PLILP 1997. Lecture Notes in Computer Science, vol 1292. Springer, Berlin, Heidelberg. https://doi.org/10.1007/BFb0033833

Download citation

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

  • Published:

  • Publisher Name: Springer, Berlin, Heidelberg

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

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

  • eBook Packages: Springer Book Archive

Publish with us

Policies and ethics