Skip to main content

The Metalanguage λprolog and Its Implementation

  • Conference paper
  • First Online:
Functional and Logic Programming (FLOPS 2001)

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

Included in the following conference series:

Abstract

Stimulated by concerns of software certification especially as it relates to mobile code, formal structures such as specifications and proofs are beginning to play an explicit role in computing. In represent- ing and manipulating such structures, an approach is needed that pays attention to the binding operation that is present in them. The language λProlog provides programming support for a higher-order treatment of abstract syntax that is especially suited to this task. This support is realized by enhancing the traditional strength of logic programming in the metalanguage realm with an ability for dealing directly with binding structure. This paper identifies the features of Prolog that endow it with such a capability, illustrates their use and and describes methods for their implementation. Also discussed is a new realization of Prolog called Teyjus that incorporates the implementation ideas presented.

Acknowledgements

B. Jayaraman, K. Kwon and D.S. Wilson assisted in the design of the Prolog abstract machine and L. Headley, D.J. Mitchell, S.-M. Perng and G. Tong helped in the implementation of the Teyjus system. Support for this work has been provided by NSF at different stages under the grants CCR-8905825, CCR-9208465, CCR-9596119, CCR-9803849 and CCR-0096322.

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. M. Abadi, L. Cardelli, P.-L. Curien, and J.-J. Lévy. Explicit substitutions. Journal of Functional Programming, 1(4):375–416, 1991.

    Article  MathSciNet  Google Scholar 

  2. A. W. Appel and A. P. Felty. Lightweight lemmas in λProlog. In International Conference on Logic Programming, pages 411–425. MIT Press, November 1999.

    Google Scholar 

  3. P. Brisset and O. Ridoux. Naive reverse can be linear. In K. Furukawa, editor, Eighth International Logic Programming Conference, pages 857–870. MIT Press, June 1991.

    Google Scholar 

  4. P. Brisset and O. Ridoux. The compilation of λProlog and its execution with MALI. Publication Interne 687, IRISA, 1992.

    Google Scholar 

  5. G. Dowek, T. Hardin, and C. Kirchner. Higher-order unification via explicit substitutions. Information and Computation, 157:183–235, 2000.

    Article  MathSciNet  Google Scholar 

  6. A. Felty. Implementing tactics and tacticals in a higher-order logic programming language. Journal of Automated Reasoning, 11(1):43–81, August 1993.

    Article  MathSciNet  Google Scholar 

  7. J. Hannan and D. Miller. From operational semantics to abstract machines. Mathematical Structures in Computer Science, 2(4):415–459, 1992.

    Article  MathSciNet  Google Scholar 

  8. G. Huet. A unification algorithm for typed λ-calculus. Theoretical Computer Science, 1:27-57, 1975.

    Article  MathSciNet  Google Scholar 

  9. G. Huet and B. Lang. Proving and applying program transformations expressed with second-order patterns. Acta Informatica, 11:31–55, 1978.

    Article  MathSciNet  Google Scholar 

  10. K. Kwon, G. Nadathur, and D.S. Wilson. Implementing polymorphic typing in a logic programming language. Computer Languages, 20(1):25–42, 1994.

    Article  Google Scholar 

  11. J. Lamping. An algorithm for optimal lambda calculus reduction. In Seventeenth Annual ACM Symposium on Principles of Programming Languages, pages 16–30. ACM Press, 1990.

    Google Scholar 

  12. J.-J. Lévy. Optimal reductions in the lambda-calculus. In J.P. Seldin and J.R. Hindley, editors, To H.B. Curry: Essays on Combinatory Logic, Lambda Calculus and Formalism, pages 159–191. Academic Press, 1980.

    Google Scholar 

  13. C. Liang. Let-polymorphism and eager type schemes. In TAPSOFT ’97: Theory and Practice of Software Development, pages 490–501. Springer Verlag LNCS Vol. 1214, 1997.

    Chapter  Google Scholar 

  14. S. Michaylov and F. Pfenning. An empirical study of the runtime behavior of higher-order logic programs. In D. Miller, editor, Proceedings of the Workshop on the λProlog Programming Language, pages 257–271, July 1992. Available as University of Pennsylvania Technical Report MS-CIS-92-86.

    Google Scholar 

  15. D. Miller. A logic programming language with lambda-abstraction, function variables, and simple unification. Journal of Logic and Computation, 1(4):497–536, 1991.

    Article  MathSciNet  Google Scholar 

  16. D. Miller. Unification under a mixed prefix. Journal of Symbolic Computation, 14:321–358, 1992.

    Article  MathSciNet  Google Scholar 

  17. D. Miller. A proposal for modules in λProlog. In R. Dyckho, editor, Proceedings of the 1993 Workshop on Extensions to Logic Programming, pages 206–221. Springer-Verlag, 1994. Volume 798 of Lecture Notes in Computer Science.

    Google Scholar 

  18. D. Miller, G. Nadathur, F. Pfenning, and A. Scedrov. Uniform proofs as a foundation for logic programming. Annals of Pure and Applied Logic, 51:125–157, 1991.

    Article  MathSciNet  Google Scholar 

  19. G. Nadathur. A proof procedure for the logic of hereditary Harrop formulas. Journal of Automated Reasoning, 11(1):115–145, August 1993.

    Article  MathSciNet  Google Scholar 

  20. G. Nadathur. An explicit substitution notation in a λProlog implementation. Technical Report TR-98-01, Department of Computer Science, University of Chicago, January 1998.

    Google Scholar 

  21. G. Nadathur. A fine-grained notation for lambda terms and its use in intensional operations. Journal of Functional and Logic Programming, 1999(2), March 1999.

    Google Scholar 

  22. G. Nadathur, B. Jayaraman, and K. Kwon. Scoping constructs in logic programming: Implementation problems and their solution. Journal of Logic Programming, 25(2):119–161, November 1995.

    Article  MathSciNet  Google Scholar 

  23. G. Nadathur, B. Jayaraman, and D.S. Wilson. Implementation considerations for higher-order features in logic programming. Technical Report CS-1993-16, Department of Computer Science, Duke University, June 1993.

    Google Scholar 

  24. G. Nadathur and D. Miller. Higher-order logic programming. In D. Gabbay, C. Hogger, and A. Robinson, editors, Handbook of Logic in Artificial Intelligence and Logic Programming, volume 5, pages 499–590. Oxford University Press, 1998.

    Google Scholar 

  25. G. Nadathur and D.J. Mitchell. System description: Teyjus—a compiler and abstract machine based implementation of λProlog. In H. Ganzinger, editor, Automated Deduction-CADE-16, number 1632 in Lecture Notes in Artificial Intelligence, pages 287–291. Springer-Verlag, July 1999.

    Google Scholar 

  26. G. Nadathur and F. Pfenning. The type system of a higher-order logic programming language. In F. Pfenning, editor, Types in Logic Programming, pages 245–283. MIT Press, 1992.

    Google Scholar 

  27. G. Nadathur and G. Tong. Realizing modularity in λProlog. Journal of Functional and Logic Programming, 1999(9), April 1999.

    Google Scholar 

  28. G. Nadathur and D. S. Wilson. A notation for lambda terms: A generalization of environments. Theoretical Computer Science, 198(1-2):49–98, 1998.

    Article  MathSciNet  Google Scholar 

  29. G.C. Necula. Proof-carrying code. In 24th Annual ACM Symposium on Principles of Programming Languages, pages 106–119. ACM Press, January 1997.

    Google Scholar 

  30. F. Pfenning. Logic programming in the LF logical framework. In G. Huet and G.D. Plotkin, editors, Logical Frameworks, pages 149–181. Cambridge University Press, 1991.

    Google Scholar 

  31. F. Pfenning and C. Elliott. Higher-order abstract syntax. In Proceedings of the ACM-SIGPLAN Conference on Programming Language Design and Implementation, pages 199–208. ACM Press, June 1988.

    Google Scholar 

  32. F. Pfenning and C. Schürmann. System description: Twelf-a meta-logical framework for deductive systems. In H. Ganzinger, editor, Proceedings of the 16th International Conference on Automated Deduction (CADE-16), pages 202–206, Trento, Italy, July 1999. Springer-Verlag LNAI 1632.

    Google Scholar 

  33. O. Ridoux. MALIv06: Tutorial and reference manual. Publication Interne 611, IRISA, 1991.

    Google Scholar 

  34. N. Shankar. Proof search in the intuitionistic sequent calculus. In D. Kapur, editor, Automated Deduction-CADE-11, number 607 in Lecture Notes in Computer Science, pages 522–536. Springer Verlag, June 1992.

    Google Scholar 

  35. D.H.D. Warren. An abstract Prolog instruction set. Technical Note 309, SRI International, October 1983.

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2001 Springer-Verlag Berlin Heidelberg

About this paper

Cite this paper

Nadathur, G. (2001). The Metalanguage λprolog and Its Implementation. In: Kuchen, H., Ueda, K. (eds) Functional and Logic Programming. FLOPS 2001. Lecture Notes in Computer Science, vol 2024. Springer, Berlin, Heidelberg. https://doi.org/10.1007/3-540-44716-4_1

Download citation

  • DOI: https://doi.org/10.1007/3-540-44716-4_1

  • Published:

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-540-41739-2

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

  • eBook Packages: Springer Book Archive

Publish with us

Policies and ethics