Abella (original) (raw)
Description
Abella is an interactive theorem prover based on lambda-tree syntax. This means that Abella is well-suited for reasoning about the meta-theory of programming languages and other logical systems which manipulate objects with binding. For example, the following applications are included in the distribution of Abella.
- Various results on the lambda calculus involving big-step evaluation, small-step evaluation, and typing judgments
- Cut-admissibility for a sequent calculus
- Part 1a andPart 2a of thePOPLmark challenge
- Takahashi's proof of the Church-Rosser theorem
- Tait's logical relations argument for weak normalization of the simply-typed lambda calculus
- Girard's proof of strong normalization of the simply-typed lambda calculus
- Some π-calculus meta-theory
- Relation between β-reduction and paths in λ-calculus
Consult the full list of examples for more details.
Abella uses a two-level logic approach to reasoning. Specifications are made in the logic of hereditary Harrop formulas using lambda-tree syntax. This logic is executable and is a subset of theλProlog language (see the Teyjus system for an implementation of this language). The reasoning logic of Abella is the culmination of a series of extensions to proof theory for the treatment of definitions, lambda-tree syntax, and generic judgments. The reasoning logic of Abella is able to encode the semantics of our specification logic as a definition and thereby reason over specifications in that logic. More information about this approach and the logics involved is available in the publications section.
For an introduction to using Abella, please read this walkthrough of an example Abella session which covers a proof of subject reduction in the lambda calculus.
Some of the design differences between Abella and proof assistants such as Rocq and Agda are describe in Miller's talk Proof Theory and Type Theory: Distinct Foundations for Designing Proof Assistants presented at a workshop in Banff in June 2025.
Download
The current version of Abella is 2.0.8, released on October 31, 2023.
- The easiest way to install Abella is through OPAM:
- If you don't/can't use OPAM, download and compile the source tarball (GitHub mirror). This requires an OCaml installation (version 4.12 or later) andDune.
- Some instructions for adapting pre-2.0.x Abella proof scripts to 2.0.x are also available.
- Prior releases of Abella are also available, but not actively supported.
The changelog lists significant changes between versions. The development of Abella is tracked on GitHub. If you don't mind living on the bleeding edge, you can also try using the current development snapshot, available as a tarball or a zip.
Documentation
- A comprehensive tutorial on Abella has been published in the Journal of Formalized Reasoning. This is the best reference for starting from scratch.
- New users are encouraged to read the walkthrough of an example Abella session.
- After the first walkthrough, users are encouraged to continue with the advanced walkthrough.
- NEW! A tutorial on schematic polymorphism is available for version 2.0.6 onwards.
- After both walkthroughs, users should be ready to understand any of the examples included in the distribution of Abella.
- The Abella reference guide has a brief description of syntax, commands, and tactics.
- The Abella mailing list is open for questions and discussions.
Support
- Abella is under active development.
- For bug reports and feature requests, please use the issues tracker on the official repository.
- For other kinds of feedback, for inquiries about support, and for discussions about the use and development of Abella, please use the Abella mailing list.
Some Relevant Publications
- A framework for specifying, prototyping, and reasoning about computational systems, by Andrew Gacek, Ph.D. thesis, University of Minnesota, September 2009. [ bib |arXiv |slides |PDF ]
- A two-level logic approach to reasoning about computations, by Andrew Gacek, Dale Miller, and Gopalan Nadathur, Journal of Automated Reasoning, 49:241--273, 2012. [ bib |arXiv |PDF ]
- Nominal abstraction, by Andrew Gacek, Dale Miller, and Gopalan Nadathur, Information and Computation, 209(1): 48--73, 2011. [ bib |arXiv |PDF ]
- The Abella interactive theorem prover (system description), by Andrew Gacek, Proceedings of IJCAR 2008 (A. Armando, P. Baumgartner, and G. Dowek, eds.), Lecture Notes in Artificial Intelligence, vol. 5195, Springer, August 2008, pp. 154-161. [ bib |slides | PDF ]
- Reasoning About Higher-Order Relational Specifications, by Yuting Wang, Kaustuv Chaudhuri, Andrew Gacek, and Gopalan Nadathur, Proceedings of PPDP 2013 (to appear). [ bib |arxiv |PDF ]
- Reasoning in Abella about structural operational semantics specifications, by Andrew Gacek, Dale Miller, and Gopalan Nadathur, International Workshop on Logical Frameworks and Meta-Languages: Theory and Practice (LFMTP 2008) (A. Abel and C. Urban, eds.), Electronic Notes in Theoretical Computer Science, no. 228, 2008, pp. 85-100. [ bib |slides | PDF ]
- A proof theory for generic judgments, by Dale Miller and Alwen Tiu, ACM Transactions on Computational Logic 6 (2005), no. 4, 749-783. [ bib |PDF ]
- Reasoning with higher-order abstract syntax in a logical framework, by Raymond McDowell and Dale Miller, ACM Transactions on Computational Logic 3 (2002), no. 1, 80-136. [ bib |PDF ]
- An Overview of λProlog, by Gopalan Nadathur and Dale Miller, Fifth International Logic Programming Conference (Seattle), MIT Press, August 1988, pp. 810-827. [ bib |PDF ]
- Publications that used Abella to build formal proofs
Contributors
- The original Abella system was designed and implemented by Andrew Gacek, who also developed its logical foundations in collaboration with Dale Miller and Gopalan Nadathur.
- The extension of Abella to include a richer specification logic starting from version 2.0.0 was carried out byYuting Wang (Shanghai Jiao Tong University) and Kaustuv Chaudhuri (INRIA).
- A number of people have contributed to the design and the library of examples in Abella. The following are some of the main contributors, listed in alphabetical order.
- David Baelde (ENS Rennes)
- Dale Miller (INRIA and LIX/Ecole Polytechnique)
- Gopalan Nadathur (UMN)
- Alwen Tiu (ANU)
- Todd Wilson (CSU Fresno)
History
The Abella system represents a collaboration between a group at the University of Minnesota led by Gopalan Nadathur and the Parsifal team atINRIA Saclay – Île-de-France and LIX/Ecole Polytechnique led by Dale Miller. Work on Abella began as part of an NSF-funded project at the University of Minnesota aimed at developing flexible frameworks for specifying, prototyping and reasoning about computational processes. Gopalan Nadathur provided guidance in the design of that version of Abella and he and Dale Miller contributed to the specific logic that Abella is based on. The recent extension of Abella to support a richer specification logic has been the result of a transatlantic collaboration supported by the Recent Advances in Proof Theory (RAPT) Associated Team, led by Kaustuv Chaudhuri (INRIA, France); international participants of this team include a group at McGill University (Canada) led by Brigitte Pientka and a group at the University of Minnesota (USA) led by Gopalan Nadathur. Work on this extension at the University of Minnesota has been supported by the NSF under the grants CCF-0917140 and OISE-1045885. As a part of this effort, Yuting Wang designed and implemented the extension to higher-order hereditary Harrop formulas as the specification language. Subsequent work, carried out by Gopalan Nadathur and Yuting Wang and supported by the NSF Grant CCF-1617771, has resulted in the addition of a form of schematic polymorphism to Abella. The reasoning logic underlying Abella builds on the previous work of several people, most prominently Alwen Tiu, Dale Miller and Raymond McDowell. Work on Abella has benefited from several comments and encouragement provided by Alwen Tiu and David Baelde who have also been amongst the first users of the system. Todd Wilson has created several large developments in Abella and has incorporated its use into some of his graduate courses; his resulting feedback has been invaluable for increasing the usability and robustness of the system.
Funding
Work on Abella was funded in its early stages by a grant from Boston Scientific. Subsequent funding has been provided by the National Science Foundation through the Grants CCR-0429572, CCF-0917140, OISE-1045885, and CCF-1617771. The first two NSF grants also included supplementary funding from the OISE for Slimmer, an international collaborative project between the University of Minnesota and the Parsifal group at Ecole Polytechnique and INRIA, France. Support for the French portion of this collaboration has been provided by a sequence of Associated Team grants from INRIA.
Opinions, findings, and conclusions or recommendations expressed in this work are those of the authors and do not necessarily reflect the views of the National Science Foundation or the other funding sources.