λProlog, also written lambda Prolog, is a logic programming language featuring polymorphic typing, modular programming, and higher-order programming. These extensions to Prolog are derived from the higher-order hereditary Harrop formulas used to justify the foundations of λProlog. Higher-order quantification, simply typed λ-terms, and higher-order unification gives λProlog the basic supports needed to capture the λ-tree syntax approach to higher-order abstract syntax, an approach to representing syntax that maps object-level bindings to programming language bindings. Programmers in λProlog need not deal with bound variable names: instead various declarative devices are available to deal with binder scopes and their instantiations. Since 1986, λProlog has received numerous implementations. As of 2013, the language and its implementations are still actively being developed.
The Abella theorem prover has been designed to provide an interactive environment for proving theorems about the declarative core of λProlog.
- The Teyjus λProlog compiler is the most recent and effective implementation to date. This compiler project is led by Gopalan Nadathur and various of his colleagues and students.
- The Abella prover can be used to prove theorems about λProlog programs and specifications.
Tutorials and Texts
- Dale Miller and Gopalan Nadathur have written the book Programming with higher-order logic, published by Cambridge University Press in June 2012.
- Amy Felty has written in 1997 a tutorial on lambda Prolog and its Applications to Theorem Proving (Archived by WebCite ).
- John Hannan has written a tutorial on Program Analysis in lambda Prolog for the 1998 PLILP Conference.
- Olivier Ridoux has written Lambda-Prolog de A à Z... ou presque (163 pages, French). It is available as PostScript, PDF, and html.
- Nadathur, Gopalan; Dustin Mitchell (1999). "System Description: Teyjus - A Compiler and Abstract Machine Based Implementation of lambda Prolog". Conference on Automated Deduction. LNAI 1632: 287-291. doi:10.1007/3-540-48660-7_25.
|This programming language–related article is a stub. You can help Wikipedia by expanding it.|