fm-notes

Warning: Please note that this version of the notes is out of date. Currently, the authoritative, up-to-date version is located in the master branch of the repository on GitHub.

This repository serves as a log of my endeavour to learn to use and understand the Coq proof assistant. It may contain proofs, attempts at proofs, links to related resources (blogs, articles, papers, books), notes on logic, type theory, formal verification, theorem proving, automated reasoning, and much more.

I will try to only include things that seem useful, informative, interesting or cool, things that I forget, and tips and warnings regarding the subtleties of Coq. Therefore, if you want to learn Coq from scratch, I suggest you try one of the resources listed below.

I do not claim completeness, correctness, consistency or usefulness of any information contained herein.

On Coq

Coq is an interactive theorem prover and proof assistant based on an intensional intuitionistic type theory. The underlying formalism is called Calculus of Constructions (CoC) which is a dependently-typed λ-calculus and an intuitionistic higher-order logic. Its core is written in OCaml.

Tactics

Standard Coq contains many tactics for working with the proof state, some of which may be confused easily. The documentation on tactics may be the most informative and thorough part of the Coq reference manual, so it's worth a read if you're looking for a way to make your proofs more concise. See the Tactics Index and Chapter 8: Tactics in the reference manual.

The Ssreflect libary (see below) contains a more sensible and consistent set of tactics. Although its syntax is very different from the Coq standard, don't let this discourage you.

Useful resources

Blogs

Libraries and plug-ins

Applications

Papers and articles

Numerous journals, conferences and workshops, for instance, the Journal of Automated Reasoning, POPL, and CoqPL. For tools, see also page on the Coq website.

Related ACM Special Interest Groups: SIGPLAN, SIGLOG and SIGACT.

Journals and book series

(† denotes open-access journals)

Meta

Conferences and workshops

See the standalone file.

Proof assistants, provers and languages

Model checkers

SAT & SMT solvers

Other tools

Formal methods in practice

Learning resources

Courses, textbooks, papers, theses, competitions, influential figures in the field.

Type theory

Danny Gratzer's learn-tt is a fantastic resource for those interested in type and category theory. He presents all the terrific tools, textbooks, and papers that deal with both of these in a sensible and logical way, which is a quality that my repository will never have.

I'll only list here resources which he doesn't mention and which I personally find interesting.

Check out the TYPES mailing list as well.

Dependent types

Observational Type Theory

Cubical Type Theory

Written in 2015–2019 by Matěj Grabovský <matej at mgrabovsky dot net>

To the extent possible under law, the author has dedicated all copyright and related and neighboring rights to this software to the public domain worldwide. This software is distributed without any warranty.

You should have received a copy of the CC0 Public Domain Dedication along with this software. If not, see http://creativecommons.org/publicdomain/zero/1.0/.