The Coq proof assistant

This is not the latest version of The Coq proof assistant available.

  • 1
  • 2
  • 3

8.9.0 | Updated: 21 Jan 2019



Downloads of v 8.9.0:


Software Author(s):


  • 1
  • 2
  • 3
The Coq proof assistant 8.9.0

This is not the latest version of The Coq proof assistant available.

  • 1
  • 2
  • 3

All Checks are Passing

3 Passing Tests

Validation Testing Passed

Verification Testing Passed


Scan Testing Successful:

No detections found in any package files


To install The Coq proof assistant, run the following command from the command line or from PowerShell:


To upgrade The Coq proof assistant, run the following command from the command line or from PowerShell:


To uninstall The Coq proof assistant, run the following command from the command line or from PowerShell:


NOTE: This applies to both open source and commercial editions of Chocolatey.

1. Ensure you are set for organizational deployment

Please see the organizational deployment guide

  • Open Source or Commercial:
    • Proxy Repository - Create a proxy nuget repository on Nexus, Artifactory Pro, or a proxy Chocolatey repository on ProGet. Point your upstream to Packages cache on first access automatically. Make sure your choco clients are using your proxy repository as a source and NOT the default community repository. See source command for more information.
    • You can also just download the package and push it to a repository Download

3. Enter your internal repository url

(this should look similar to

4. Choose your deployment method:

choco upgrade coq -y --source="'STEP 3 URL'" [other options]

See options you can pass to upgrade.

See best practices for scripting.

Add this to a PowerShell script or use a Batch script with tools and in places where you are calling directly to Chocolatey. If you are integrating, keep in mind enhanced exit codes.

If you do use a PowerShell script, use the following to ensure bad exit codes are shown as failures:

choco upgrade coq -y --source="'STEP 3 URL'"

Write-Verbose "Exit code was $exitCode"
$validExitCodes = @(0, 1605, 1614, 1641, 3010)
if ($validExitCodes -contains $exitCode) {
  Exit 0

Exit $exitCode

- name: Ensure coq installed
    name: coq
    state: present
    version: 8.9.0
    source: STEP 3 URL

See docs at

chocolatey_package 'coq' do
  action    :install
  version  '8.9.0'
  source   'STEP 3 URL'

See docs at

    Name: coq,
    Version: 8.9.0,
    Source: STEP 3 URL

Requires Otter Chocolatey Extension. See docs at

cChocoPackageInstaller coq
   Name     = 'coq'
   Ensure   = 'Present'
   Version  = '8.9.0'
   Source   = 'STEP 3 URL'

Requires cChoco DSC Resource. See docs at

package { 'coq':
  provider => 'chocolatey',
  ensure   => '8.9.0',
  source   => 'STEP 3 URL',

Requires Puppet Chocolatey Provider module. See docs at

salt '*' chocolatey.install coq version="8.9.0" source="STEP 3 URL"

See docs at

5. If applicable - Chocolatey configuration/installation

See infrastructure management matrix for Chocolatey configuration elements and examples.

Private CDN cached downloads available for licensed customers. Never experience 404 breakages again! Learn more...

This package was approved as a trusted package on 26 Apr 2019.


Coq is a formal proof management system. It provides a formal language to write mathematical definitions, executable algorithms and theorems together with an environment for semi-interactive development of machine-checked proofs. Typical applications include the certification of properties of programming languages (e.g. the CompCert compiler certification project, or the Bedrock verified low-level programming library), the formalization of mathematics (e.g. the full formalization of the Feit-Thompson theorem or homotopy type theory) and teaching.

Coq implements a program specification and mathematical higher-level language called Gallina that is based on an expressive formal language called the Calculus of Inductive Constructions that itself combines both a higher-order logic and a richly-typed functional programming language. Through a vernacular language of commands, Coq allows:

  • to define functions or predicates, that can be evaluated efficiently;
  • to state mathematical theorems and software specifications;
  • to interactively develop formal proofs of these theorems;
  • to machine-check these proofs by a relatively small certification "kernel";
  • to extract certified programs to languages like Objective Caml, Haskell or Scheme.

As a proof development system, Coq provides interactive proof methods, decision and semi-decision algorithms, and a tactic language for - letting the user define its own proof methods. Connection with external computer algebra system or theorem provers is available.

As a platform for the formalization of mathematics or the development of programs, Coq provides support for high-level notations, implicit contents and various other useful kinds of macros.

$ErrorActionPreference = 'Stop'

$packageArgs = @{
  packageName    = $env:ChocolateyPackageName
  fileType       = 'exe'
  url            = ''
  url64bit       = ''
  softwareName   = 'coq*'
  checksum       = 'f09433a6429f3801b10fba227b4f859f7d87f894379cc7266a240af0d8a2e01c'
  checksumType   = 'sha256'
  checksum64     = '26e11e8b14dd870525b229dde169f4f2e2c0fea9ee4704b5358554f553d83918'
  checksumType64 = 'sha256'
  silentArgs     = '/S'
  validExitCodes = @(0)

Install-ChocolateyPackage @packageArgs
$ErrorActionPreference = 'Stop'

$packageArgs = @{
  packageName    = $env:ChocolateyPackageName
  softwareName   = 'coq*'
  fileType       = 'exe'
  silentArgs     = '/S'
  validExitCodes = @(@(0))

$uninstalled = $false

[array]$key = Get-UninstallRegistryKey @packageArgs

if ($key.Count -eq 1) {
  $key | ForEach-Object {
    $packageArgs['file'] = "$($_.UninstallString)"

    Uninstall-ChocolateyPackage @packageArgs
elseif ($key.Count -eq 0) {
  Write-Warning "$packageName has already been uninstalled by other means."
elseif ($key.Count -gt 1) {
  Write-Warning "$($key.Count) matches found!"
  Write-Warning "To prevent accidental data loss, no programs will be uninstalled."
  Write-Warning "Please alert the package maintainer that the following keys were matched:"
  $key | ForEach-Object { Write-Warning "- $($_.DisplayName)" }

Log in or click on link to see number of positives.

In cases where actual malware is found, the packages are subject to removal. Software sometimes has false positives. Moderators do not necessarily validate the safety of the underlying software, only that a package retrieves software from the official distribution point and/or validate embedded software against official distribution point (where distribution rights allow redistribution).

Chocolatey Pro provides runtime protection from possible malware.

Version Downloads Last Updated Status
The Coq proof assistant 8.13.0 151 Monday, January 11, 2021 Approved
The Coq proof assistant 8.12.1 149 Monday, November 16, 2020 Approved
The Coq proof assistant 8.12.0 248 Monday, July 27, 2020 Approved
The Coq proof assistant 8.11.2 179 Tuesday, June 9, 2020 Approved
The Coq proof assistant 8.11.1 186 Wednesday, April 8, 2020 Approved
The Coq proof assistant 8.11.0 258 Thursday, January 30, 2020 Approved
The Coq proof assistant 8.10.2 306 Friday, November 29, 2019 Approved
The Coq proof assistant 8.10.1 158 Monday, October 28, 2019 Approved
The Coq proof assistant 8.10.0 148 Tuesday, October 8, 2019 Approved

Package Changelog

Software Release Notes

Coq version 8.9 contains the result of refinements and stabilization of features and deprecations or removals of deprecated features, cleanups of the internals of the system and API along with a few new features. This release includes many user-visible changes, including deprecations that are documented in and new features that are documented in the reference manual. Here are the most important changes:

  • Kernel: mutually recursive records are now supported, by Pierre-Marie Pédrot.

  • Notations:

    • Support for autonomous grammars of terms called "custom entries", by Hugo Herbelin.

    • Deprecated notations of the standard library will be removed in the next version of Coq, see the file for a script to ease porting, by Jason Gross and Jean-Christophe Léchenet.

    • Added the Numeral Notation command for registering decimal numeral notations for custom types, by Daniel de Rauglaudre, Pierre Letouzey and Jason Gross.

  • Tactics: Introduction tactics intro/intros on a goal that is an existential variable now force a refinement of the goal into a dependent product rather than failing, by Hugo Herbelin.

  • Decision procedures: deprecation of tactic romega in favor of lia and removal of fourier, replaced by lra which subsumes it, by Frédéric Besson, Maxime Dénès, Vincent Laporte and Laurent Théry.

  • Proof language: focusing bracket { now supports named goals, e.g. [x]:{ will focus on a goal (existential variable) named x, by Théo Zimmermann.

  • SSReflect: the implementation of delayed clear was simplified by Enrico Tassi: the variables are always renamed using inaccessible names when the clear switch is processed and finally cleared at the end of the intro pattern. In addition to that, the use-and-discard flag {} typical of rewrite rules can now be also applied to views, e.g. => {}/v applies v and then clears v.

  • Vernacular:

    • Experimental support for attributes on commands, by Vincent Laporte, as in #[local] Lemma foo : bar. Tactics and tactic notations now support the deprecated attribute.

    • Removed deprecated commands Arguments Scope and Implicit Arguments in favor of Arguments, with the help of Jasper Hugunin.

    • New flag Uniform Inductive Parameters by Jasper Hugunin to avoid repeating uniform parameters in constructor declarations.

    • New commands Hint Variables and Hint Constants, by Matthieu Sozeau, for controlling the opacity status of variables and constants in hint databases. It is recommended to always use these commands after creating a hint databse with Create HintDb.

    • Multiple sections with the same name are now allowed, by Jasper Hugunin.

  • Library: additions and changes in the VectorDef, Ascii, and String libraries. Syntax notations are now available only when using Import of libraries and not merely Require, by various contributors (source of incompatibility, see for details).

  • Toplevels: coqtop and coqide can now display diffs between proof steps in color, using the Diffs option, by Jim Fehrle.

  • Documentation: we integrated a large number of fixes to the new Sphinx documentation by various contributors, coordinated by Clément Pit-Claudel and Théo Zimmermann.

  • Tools: removed the gallina utility and the homebrewed Emacs mode.

  • Packaging: as in Coq 8.8.2, the Windows installer now includes many more external packages that can be individually selected for installation, by Michael Soegtrop.

Version 8.9 also comes with a bunch of smaller-scale changes and improvements regarding the different components of the system. Most important ones are documented in the file.

On the implementation side, the dev/doc/ file documents the numerous changes to the implementation and improvements of interfaces. The file provides guidelines on porting a plugin to the new version and a plugin development tutorial kept in sync with Coq was introduced by Yves Bertot The new dev/doc/critical-bugs file documents the known critical bugs of Coq and affected releases.

The efficiency of the whole system has seen improvements thanks to contributions from Gaëtan Gilbert, Pierre-Marie Pédrot, and Maxime Dénès.

Maxime Dénès, Emilio Jesús Gallego Arias, Gaëtan Gilbert, Michael Soegtrop, Théo Zimmermann worked on maintaining and improving the continuous integration system.

The OPAM repository for Coq packages has been maintained by Guillaume Melquiond, Matthieu Sozeau, Enrico Tassi with contributions from many users. A list of packages is available at

The 54 contributors for this version are Léo Andrès, Rin Arakaki, Benjamin Barenblat, Langston Barrett, Siddharth Bhat, Martin Bodin, Simon Boulier, Timothy Bourke, Joachim Breitner, Tej Chajed, Arthur Charguéraud, Pierre Courtieu, Maxime Dénès, Andres Erbsen, Jim Fehrle, Julien Forest, Emilio Jesus Gallego Arias, Gaëtan Gilbert, Matěj Grabovský, Jason Gross, Samuel Gruetter, Armaël Guéneau, Hugo Herbelin, Jasper Hugunin, Ralf Jung, Sam Pablo Kuper, Ambroise Lafont, Leonidas Lampropoulos, Vincent Laporte, Peter LeFanu Lumsdaine, Pierre Letouzey, Jean-Christophe Léchenet, Nick Lewycky, Yishuai Li, Sven M. Hallberg, Assia Mahboubi, Cyprien Mangin, Guillaume Melquiond, Perry E. Metzger, Clément Pit-Claudel, Pierre-Marie Pédrot, Daniel R. Grayson, Kazuhiko Sakaguchi, Michael Soegtrop, Matthieu Sozeau, Paul Steckler, Enrico Tassi, Laurent Théry, Anton Trunov, whitequark, Théo Winterhalter, Zeimer, Beta Ziliani, Théo Zimmermann.

Many power users helped to improve the design of the new features via the issue and pull request system, the Coq development mailing list or the [email protected] mailing list. It would be impossible to mention exhaustively the names of everybody who to some extent influenced the development.

Version 8.9 is the fourth release of Coq developed on a time-based development cycle. Its development spanned 7 months from the release of Coq 8.8. The development moved to a decentralized merging process during this cycle. Guillaume Melquiond was in charge of the release process and is the maintainer of this release. This release is the result of ~2,000 commits and ~500 PRs merged, closing 75+ issues.

The Coq development team welcomed Vincent Laporte, a new Coq engineer working with Maxime Dénès in the Coq consortium.

Discussion for the The Coq proof assistant Package

Ground Rules:

  • This discussion is only about The Coq proof assistant and the The Coq proof assistant package. If you have feedback for Chocolatey, please contact the Google Group.
  • This discussion will carry over multiple versions. If you have a comment about a particular version, please note that in your comments.
  • The maintainers of this Chocolatey Package will be notified about new comments that are posted to this Disqus thread, however, it is NOT a guarantee that you will get a response. If you do not hear back from the maintainers after posting a message below, please follow up by using the link on the left side of this page or follow this link to contact maintainers. If you still hear nothing back, please follow the package triage process.
  • Tell us what you love about the package or The Coq proof assistant, or tell us what needs improvement.
  • Share your experiences with the package, or extra configuration or gotchas that you've found.
  • If you use a url, the comment will be flagged for moderation until you've been whitelisted. Disqus moderated comments are approved on a weekly schedule if not sooner. It could take between 1-5 days for your comment to show up.
comments powered by Disqus