Generated by GPT-5-mini| Proof General | |
|---|---|
| Name | Proof General |
| Developer | Andrew W. Appel, William E. Byrd, Carsten Schürmann, others |
| Released | 2000 |
| Latest release | (various forks and updates) |
| Programming language | Emacs Lisp, Scheme, OCaml |
| Operating system | GNU/Linux, macOS, Microsoft Windows |
| Genre | text editor front-end for proof assistants |
| License | GPL |
Proof General
Proof General is an Emacs-based front-end designed to interact with interactive proof assistants and theorem provers. It provides a unified interface for proof script development, interaction, and navigation that integrates with editors such as GNU Emacs and ecosystems including Coq, Isabelle, and HOL. Originating from collaborations among researchers in formal methods, it shaped workflows in mechanized reasoning, program verification, and proof engineering.
Proof General was initiated around 2000 by researchers including Andrew W. Appel and Carsten Schürmann to support interaction with the Coq proof assistant and to streamline proof development pioneered in projects at institutions such as Princeton University and Technische Universität München. Early milestones include integration with CoqProofGeneral efforts, adoption in verification projects like the CompCert C compiler verification led by Xavier Leroy, and extensions to support systems such as Isabelle/HOL developed at the University of Cambridge and Technische Universität München. Over time, forks and derivatives emerged from communities around Université Paris-Sud, INRIA, and groups involved with HOL Light and PVS, leading to parallel maintenance by contributors at institutions such as Cornell University and University of Oxford.
Proof General provides features designed for interactive theorem proving workflows: synchronized script playback with proof assistants, multi-window proof state inspection, and scripted automation hooks used in large formalization efforts like CompCert, seL4 microkernel verification at NICTA, and the CakeML project. It supports breakpoint-like stepping, undo/redo of proof commands, and context-sensitive syntax highlighting informed by parsers from projects such as Coq Platform and Isabelle. Integration points include command-response protocols similar to those used by Proof General clients in communication with assistants like Coq and Isabelle, plus support for batch processing and continuous integration pipelines used in formal developments submitted to venues such as the International Conference on Interactive Theorem Proving and Certified Programs and Proofs.
Proof General historically supported a wide range of proof assistants including Coq, Isabelle/HOL, HOL4, HOL Light, PVS, and proof engines used in the OCaml ecosystem. Community-maintained adapters added support for systems such as Lean in early stages, experimental front ends for the Agda dependently typed system, and connectors to theorem provers used in projects at Carnegie Mellon University and Microsoft Research. Support often depended on the availability of machine-readable protocols or textual command interfaces implemented by the respective projects, for example the command protocol of Isabelle or the vernacular of Coq.
Proof General is implemented primarily in Emacs Lisp with supplemental components in Scheme or OCaml for adapter code where necessary. Its architecture follows a client-like model: the Emacs front end manages buffers, markers, and synchronization, while companion adapters translate buffer regions into commands for external proof engines such as Coq or Isabelle. The system uses Emacs primitives for incremental parsing and overlays, and leverages tooling developed in ecosystems like GNU Emacs package management. Inter-process communication relies on process pipes and standard input/output semantics familiar from projects like OCaml compilers and the command-line interfaces of proof systems maintained at institutions such as INRIA.
Users write proof scripts in Emacs buffers and advance the proof state by stepping commands; this model parallels interactive debugging workflows used in software projects at Google and research labs at Microsoft Research. Typical workflows include writing lemmas, invoking tactics provided by assistants like Coq or Isabelle, inspecting goals, and replaying script segments. Proof General supports session management and project structuring akin to build systems used in formal development, enabling integration with continuous integration services used in research groups at University of Cambridge and industrial verification at companies with formal methods teams.
Development has been community-driven, with contributions from academics and engineers at organizations including Princeton University, Cornell University, INRIA, and Microsoft Research. Mailing lists, workshops associated with conferences such as the International Conference on Interactive Theorem Proving and the Coq Workshop, and repository hosting on platforms used by projects like GitHub facilitated collaboration. As newer editor front ends (e.g., native IDEs and integrations for Visual Studio Code) emerged, maintenance of Proof General became distributed across forks and institutional maintainers, often coordinated through academic collaborations and contributions from students and researchers.
Proof General had significant impact on the practice of interactive theorem proving by standardizing an Emacs-centric workflow and enabling large-scale formalizations exemplified by projects like CompCert, seL4 microkernel verification, and mechanized mathematics efforts at Cambridge University and INRIA. It influenced later tools and integrations in environments such as Visual Studio Code extensions for theorem provers and informed pedagogy in courses at institutions like Princeton University and University of Cambridge. Criticisms centered on Emacs dependence and the learning curve compared with modern IDEs, prompting alternative front ends and renewed tooling efforts in communities around Lean, Coq Platform, and Isabelle.
Category:Software