# Proof General — Organize your proofs! [![Build Status](https://travis-ci.org/ProofGeneral/PG.svg?branch=master)](https://travis-ci.org/ProofGeneral/PG) [![MELPA](http://melpa.org/packages/proof-general-badge.svg)](https://melpa.org/#/proof-general) ## Overview Proof General is a generic Emacs interface for proof assistants. The aim of the Proof General project is to provide a powerful, generic environment for using interactive proof assistants. This is version 4.5-git of Proof General. ## About Proof General branches Two editions of Proof General are currently available: * the (legacy) REPL-based, stable version of Proof General, gathered in the [master](https://github.com/ProofGeneral/PG/tree/master) branch, and licensed under GPLv2; * the (newest) Coq-specific, experimental version of Proof General, supporting asynchronous proof processing, gathered in the [async](https://github.com/ProofGeneral/PG/tree/async) branch, and licensed under GPLv3+. ## Installing Proof General ### Using MELPA (recommended procedure) [MELPA](https://melpa.org/) is a repository of Emacs packages. Skip this step if you already use MELPA. Otherwise, add the following to your `.emacs` and restart Emacs: ```elisp (require 'package) (let* ((no-ssl (and (memq system-type '(windows-nt ms-dos)) (not (gnutls-available-p)))) (proto (if no-ssl "http" "https"))) (add-to-list 'package-archives (cons "melpa" (concat proto "://melpa.org/packages/")) t)) (package-initialize) ``` **Note:** If you switch to MELPA from a previously manually-installed Proof General, make sure you removed the old versions of Proof General from your Emacs context (by removing from your `.emacs` the line loading `PG/generic/proof-site`, or by uninstalling the proofgeneral package provided by your OS package manager). Then, run M-x package-refresh-contents RET followed by M-x package-install RET proof-general RET to install and byte-compile `proof-general`. You can now open a Coq file (`.v`), an EasyCrypt file (`.ec`), or a PhoX file (`.phx`) to automatically load the corresponding major mode. ### Using Git (manual compilation procedure) Remove old versions of Proof General, clone the PG repo from GitHub and byte-compile the sources: ```sh git clone https://github.com/ProofGeneral/PG ~/.emacs.d/lisp/PG cd ~/.emacs.d/lisp/PG make ``` Then add the following to your `.emacs`: ```elisp ;; Open .v files with Proof General's Coq mode (load "~/.emacs.d/lisp/PG/generic/proof-site") ``` If Proof General complains about a version mismatch, make sure that the shell's `emacs` is indeed your usual Emacs. If not, run the Makefile again with an explicit path to Emacs. On macOS in particular you'll probably need something like ```sh make clean; make EMACS=/Applications/Emacs.app/Contents/MacOS/Emacs ``` ## Keeping Proof General up-to-date ### Using MELPA As explained in the [MELPA documentation](https://melpa.org/#/getting-started), updating all MELPA packages in one go is as easy as typing M-x package-list-packages RET then r (**r**efresh the package list), U (mark **U**pgradable packages), and x (e**x**ecute the installs and deletions). ### Using Git Assuming you have cloned the repo in `~/.emacs.d/lisp/PG`, you would have to run: ```sh cd ~/.emacs.d/lisp/PG make clean git pull make ``` ## More info See: * [INSTALL](INSTALL) for installation details * [COPYING](COPYING) for license details * [COMPATIBILITY](COMPATIBILITY) for version compatibility information * [FAQ.md](FAQ.md) for frequently asked questions * [coq/README](coq/README) for additional notes specific to the Coq prover Links: * [https://proofgeneral.github.io/doc](https://proofgeneral.github.io/doc) for online documentation of Proof General * [http://proofgeneral.inf.ed.ac.uk/mailinglist](http://proofgeneral.inf.ed.ac.uk/mailinglist) for mailing list information Supported proof assistants: * [Coq](https://coq.inria.fr/) * [EasyCrypt](http://www.easycrypt.info/) * [PhoX](http://www.lama.univ-savoie.fr/pagesmembres/raffalli/phox.html) Proof General used to support other proof assistants, but those instances are no longer maintained nor available in the MELPA package: * Legacy support of [Isabelle](http://www.cl.cam.ac.uk/research/hvg/Isabelle/) and [LEGO](http://www.dcs.ed.ac.uk/home/lego) * Experimental support of: CCC, ACL2, HOL98, Hol-Light, Lambda-Clam, Shell, Twelf * Obsolete instances: Demoisa, Lambda-Clam, Plastic A few example proofs are included in each prover subdirectory. ## Contributing Contributions to this repository are placed under the BSD-3 license. As BSD-3 is compatible with both GPLv2 and GPLv3+, this means that we can merge them in both `master` and `async` branches if need be, using the same license as the rest of the codebase, while you keep all the rights on your code. For more info, see .