Introduction
How to read this book
List of additional documentation
Credits
Credits: addendum for version 6.1
Credits: addendum for version 6.2
Credits: addendum for version 6.3
Credits: versions 7
Credits: version 8.0
Part I
The language
The
Gallina
specification language
Lexical conventions
Terms
The Vernacular
Extensions of
Gallina
Record types
Variants and extensions of
match
Section mechanism
Module system
Libraries and qualified names
Implicit arguments
Coercions
Printing constructions in full
The
Coq
library
The basic library
The standard library
Users' contributions
Calculus of Inductive Constructions
The terms
Typed terms
Conversion rules
Derived rules for environments
Inductive Definitions
Coinductive types
Cic
: the Calculus of Inductive Construction with impredicative
Set
The Module System
Modules and module types
Typing Modules
Part II
The proof engine
Vernacular commands
Displaying
Requests to the environment
Loading files
Compiled files
Loadpath
States and Reset
Quitting and debugging
Controlling display
Proof handling
Switching on/off the proof editing mode
Navigation in the proof tree
Displaying information
Tactics
Invocation of tactics
Explicit proof as a term
Basics
Negation and contradiction
Conversion tactics
Introductions
Eliminations (Induction and Case Analysis)
Equality
Equality and inductive sets
Inversion
Automatizing
The hints databases for
auto
and
eauto
Generation of induction principles with
Scheme
Generation of induction principles with
Functional Scheme
Simple tactic macros
The tactic language
Syntax
Semantics
Tactic toplevel definitions
Detailed examples of tactics
refine
eapply
Scheme
Functional Scheme
and
functional induction
inversion
autorewrite
quote
Using the tactical language
Part III
User extensions
Syntax extensions and interpretation scopes
Notations
Interpretation scopes
Abbreviations
Tactic Notations
Part IV
Practical tools
The
Coq
commands
Interactive use (
coqtop
)
Batch compilation (
coqc
)
Resource file
Environment variables
Options
Utilities
Building a toplevel extended with user tactics
Modules dependencies
Creating a
Makefile
for
Coq
modules
Documenting
Coq
files with coqdoc
Exporting
Coq
theories to XML
Embedded
Coq
phrases inside L
A
T
E
X documents
Coq
and
GNU Emacs
Module specification
Man pages
Coq
Integrated Development Environment
Managing files and buffers, basic edition
Interactive navigation into
Coq
scripts
Try tactics automatically
Vernacular commands, templates
Queries
Compilation
Customizations
Using unicode symbols
Building a custom
CoqIDE
with user
ML
code
Part V
Addendum to the Reference Manual
Presentation of the Addendum
Extended pattern-matching
Patterns
About patterns of parametric types
Matching objects of dependent types
Using pattern matching to write proofs
Pattern-matching on inductive objects involving local definitions
Pattern-matching and coercions
When does the expansion strategy fail ?
Implicit Coercions
General Presentation
Classes
Coercions
Identity Coercions
Inheritance Graph
Declaration of Coercions
Displaying Available Coercions
Activating the Printing of Coercions
Classes as Records
Coercions and Sections
Examples
Omega: a solver of quantifier-free problems in Presburger Arithmetic
Description of
omega
Using
omega
Technical data
Bugs
Extraction of programs in Objective Caml and Haskell
Generating ML code
Extraction options
Differences between
Coq
and ML type systems
Some examples
The
ring
tactic
What does this tactic?
The variables map
Is it automatic?
Concrete usage in
Coq
Add a ring structure
How does it work?
History of
ring
Discussion
The
setoid_replace
tactic
Description of
setoid_replace
Adding new setoid or morphisms
Adding new morphisms
The tactic itself
References
Global Index
Tactics Index
Vernacular Commands Index
Index of Error Messages
This document was translated from L
A
T
E
X by
H
E
V
E
A and H
A
C
H
A
.