System Description: Teyjus—A Compiler and Abstract Machine Based Implementation of λProlog

  • Gopalan Nadathur
  • Dustin J. Mitchell
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 1632)


The logic programming language λProlog is based on the intuitionistic theory of higher-order hereditary Harrop formulas, a logic that significantly extends the theory of Horn clauses. A systematic exploitation of features in the richer logic endows λProlog with capabilities at the programming level that are not present in traditional logic programming languages. Several studies have established the value of λProlog as a language for implementing systems that manipulate formal objects such as formulas, programs, proofs and types. Towards harnessing these benefits, methods have been developed for realizing this language efficiently. This work has culminated in the description of an abstract machine and compiler based implementation scheme. An actual implementation of λProlog based on these ideas has recently been completed. The planned presentation will exhibit this system—called Teyjus—and will also illuminate the metalanguage capabilities of λProlog.


Logic Program Logic Programming Horn Clause Abstract Machine Goal Structure 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    B. Barras, S. Boutin, C. Cornes, J. Courant, J.C. Filliatre, E. Giménez, H. Herbelin, G. Huet, C. Muñoz, C. Murthy, C. Parent, C. Paulin, A. Saïbi, and B. Werner. The Coq Proof Assistant Reference Manual-Version V6.1. Technical Report 0203, INRIA, August 1997.Google Scholar
  2. 2.
    Pascal Brisset and Olivier Ridoux. The compilation of λProlog and its execution with MALI. Publication Interne No 687, IRISA, Rennes, November 1992.Google Scholar
  3. 3.
    Amy Felty. Implementing tactics and tacticals in a higher-order logic programming language. Journal of Automated Reasoning, 11(1):43–81, August 1993.zbMATHCrossRefMathSciNetGoogle Scholar
  4. 4.
    Richard A. Hagen and Peter J. Robinson. Qu-Prolog 4.3 reference manual. Technical Report 99-03, Software Verification Research Centre, School of Information Technology, University of Queensland, 1999.Google Scholar
  5. 5.
    John Hannan and Dale Miller. From operational semantics to abstract machines. Mathematical Structures in Computer Science, 2(4):415–459, 1992.zbMATHMathSciNetCrossRefGoogle Scholar
  6. 6.
    Keehang Kwon, Gopalan Nadathur, and Debra Sue Wilson. Implementing polymorphic typing in a logic programming language. Computer Languages, 20(1):25–42, 1994.zbMATHCrossRefGoogle Scholar
  7. 7.
    Dale Miller and Gopalan Nadathur. A logic programming approach to manipulating formulas and programs. In Seif Haridi, editor, IEEE Symposium on Logic Programming, pages 379–388. IEEE Computer Society Press, September 1987.Google Scholar
  8. 8.
    Dale Miller, Gopalan Nadathur, Frank Pfenning, and Andre Scedrov. Uniform proofs as a foundation for logic programming. Annals of Pure and Applied Logic, 51:125–157, 1991.CrossRefMathSciNetzbMATHGoogle Scholar
  9. 9.
    Gopalan Nadathur. A proof procedure for the logic of hereditary Harrop formulas. Journal of Automated Reasoning, 11(1):115–145, August 1993.zbMATHCrossRefMathSciNetGoogle Scholar
  10. 10.
    Gopalan 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
  11. 11.
    Gopalan Nadathur, Bharat Jayaraman, and Keehang Kwon. Scoping constructs in logic programming: Implementation problems and their solution. Journal of Logic Programming, 25(2):119–161, November 1995.zbMATHCrossRefMathSciNetGoogle Scholar
  12. 12.
    Gopalan Nadathur, Bharat Jayaraman, and Debra Sue 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
  13. 13.
    Gopalan Nadathur and Dale Miller. An overview of λProlog. In Kenneth A. Bowen and Robert A. Kowalski, editors, Fifth International Logic Programming Conference, pages 810–827. MIT Press, August 1988.Google Scholar
  14. 14.
    Gopalan Nadathur and Guanshan Tong. Realizing modularity in λProlog. Technical Report TR-97-07, Department of Computer Science, University of Chicago, August 1997. To appear in Journal of Functional and Logic Programming.Google Scholar
  15. 15.
    Gopalan Nadathur and Debra Sue Wilson. A notation for lambda terms: A generalization of environments. Theoretical Computer Science, 198(1-2):49–98, 1998.zbMATHCrossRefMathSciNetGoogle Scholar
  16. 16.
    Lawrence C. Paulson. Isabelle: A Generic Theorem Prover, volume 828of Lecture Notes in Computer Science. Springer Verlag, 1994.zbMATHGoogle Scholar
  17. 17.
    Frank Pfenning. Logic programming in the LF logical framework. In Gérard Huet and Gordon D. Plotkin, editors, Logical Frameworks. Cambridge University Press, 1991.Google Scholar
  18. 18.
    Frank Pfenning and Conal 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
  19. 19.
    D.H.D. Warren. An abstract Prolog instruction set. Technical Note 309, SRI International, October 1983.Google Scholar
  20. 20.
    Philip Wickline and Dale Miller. The Terzo 1.1b implementation of λProlog. Distribution in NJ-SML source files. See, April 1997.

Copyright information

© Springer-Verlag Berlin Heidelberg 1999

Authors and Affiliations

  • Gopalan Nadathur
    • 1
  • Dustin J. Mitchell
    • 1
  1. 1.Department of Computer ScienceUniversity of Chicago Ryerson HallChicago

Personalised recommendations