package coq

  1. Overview
  2. Docs
Legend:
Library
Module
Module type
Parameter
Class
Class type

coq 8.16.0

Libraries

This package provides the following libraries (via ocamlobjinfo):

coq-core.boot

Documentation:

coq-core.clib

Documentation:

coq-core.config

Documentation:

coq-core.engine

Documentation:

  • UnivSubst
  • UnivProblem
  • UnivNames Local universe name <-> level mapping
  • UnivMinim
  • UnivGen
  • UState This file defines universe unification states which are part of evarmaps. Most of the API below is reexported in Evd. Consider using higher-level primitives when needed.
  • Evar_kinds The kinds of existential variable
  • Nameops Identifiers and names
  • Evd This file defines the pervasive unification state used everywhere in Coq tactic engine. It is very low-level and most of the functions exported here are irrelevant to the standard API user. Consider using Evarutil, Sigma or Proofview instead.
  • EConstr
  • Namegen This file features facilities to generate fresh names.
  • Termops This file defines various utilities for term manipulation that are not needed in the kernel.
  • Logic_monad This file implements the low-level monadic operations used by the tactic monad. The monad is divided into two layers: a non-logical layer which consists in operations which will not (or cannot) be backtracked in case of failure (input/output or persistent state) and a logical layer which handles backtracking, proof manipulation, and any other effect which needs to backtrack.
  • Proofview_monad This file defines the datatypes used as internal states by the tactic monad, and specialises the Logic_monad to these types. It should not be used directly. Consider using Proofview instead.
  • Evarutil This module provides useful higher-level functions for evar manipulation.
  • Proofview This files defines the basic mechanism of proofs: the proofview type is the state which tactics manipulate (a global state for existential variables, together with the list of goals), and the type 'a tactic is the (abstract) type of tactics modifying the proof state and returning a value of type 'a.
  • Ftactic This module defines potentially focussing tactics. They are used by Ltac to emulate the historical behaviour of always-focussed tactics while still allowing to remain global when the goal is not needed.

coq-core.gramlib

Documentation:

coq-core.interp

Documentation:

coq-core.kernel

Documentation:

  • Evar This module defines existential variables, which are isomorphic to int. Nonetheless, casting from an int to a variable is deemed unsafe, so that to keep track of such casts, one has to use the provided unsafe_of_int function.
  • Uint63
  • Float64_common
  • Float64
  • Names This file defines a lot of different notions of names used pervasively in the kernel as well as in other places. The essential datatypes exported by this API are:
  • Parray
  • Univ
  • Sorts
  • Vmvalues Values
  • Context The modules defined below represent a local context as defined by Chapter 4 in the Reference Manual:
  • Esubst Explicit substitutions
  • UGraph
  • Constr This file defines the most important datatype of Coq, namely kernel terms, as well as a handful of generic manipulation functions.
  • CPrimitives
  • TransparentState
  • Conv_oracle
  • Vars
  • Term
  • Cooking
  • Retroknowledge
  • Mod_subst
  • Opaqueproof This module implements the handling of opaque proof terms. Opaque proof terms are special since:
  • Vmbytecodes
  • Vmopcodes
  • Vmemitcodes
  • Declarations This module defines the internal representation of global declarations. This includes global constants/axioms, mutual inductive definitions, modules and module types
  • Entries This module defines the entry types for global declarations. This information is entered in the environments. This includes global constants/axioms, mutual inductive definitions, modules and module types
  • Declareops Operations concerning types in Declarations : constant_body, mutual_inductive_body, module_body ...
  • Environ Unsafe environments. We define here a datatype for environments. Since typing is not yet defined, it is not possible to check the informations added in environments, and that is why we speak here of ``unsafe'' environments.
  • Primred
  • CClosure
  • Reduction
  • Type_errors Type errors. \label{typeerrors}
  • Inductive
  • Vmlambda
  • Vmbytegen
  • Vmsymtable
  • Vm Debug printing
  • Vconv
  • Nativevalues This modules defines the representation of values internally used by the native compiler. Be careful when removing apparently dead code from this interface, as it may be used by programs generated at runtime.
  • Nativelambda
  • Nativecode This file defines the mllambda code generation phase of the native compiler. mllambda represents a fragment of ML, and can easily be printed to OCaml code.
  • Nativelib This file provides facilities to access OCaml compiler and dynamic linker, used by the native compiler.
  • Nativeconv This module implements the conversion test by compiling to OCaml code
  • Typeops
  • Discharge
  • Relevanceops We can take advantage of non-cumulativity of SProp to avoid fully retyping terms when we just want to know if they inhabit some proof-irrelevant type.
  • Term_typing
  • Modops
  • Subtyping
  • Section Kernel implementation of sections.
  • InferCumulativity
  • IndTyping
  • Indtypes
  • Mod_typing Main functions for translating module entries
  • Nativelibrary This file implements separate compilation for libraries in the native compiler
  • Safe_typing

coq-core.lib

Documentation:

  • Util
  • Control Global control of Coq.
  • Pp Coq document type.
  • Loc
  • CErrors This modules implements basic manipulations of errors for use throughout Coq's code.
  • Stateid
  • Feedback
  • Flags Global options of the system.
  • CWarnings
  • System
  • CDebug
  • Spawn
  • Rtree
  • Pp_diff Computes the differences between 2 Pp's and adds additional tags to a Pp to highlight them. Strings are split into tokens using the Coq lexer, then the lists of tokens are diffed using the Myers algorithm. A fixup routine, shorten_diff_span, shortens the span of the diff result in some cases.
  • ObjFile
  • LStream Extending streams with a (non-canonical) location function
  • Hook This module centralizes the notions of hooks. Hooks are pointers that are to be set at runtime exactly once.
  • Genarg Generic arguments used by the extension mechanisms of several Coq ASTs.
  • Envars This file provides a high-level interface to the environment variables needed by Coq to run (such as coqlib). The values of these variables may come from different sources (shell environment variables, command line options, options set at the time Coq was build).
  • CAst
  • DAst Lazy AST node wrapper. Only used for glob_constr as of today.
  • Core_plugins_findlib_compat
  • CoqProject_file
  • CProfile
  • Aux_file
  • AcyclicGraph Graphs representing strict orders

coq-core.library

Documentation:

  • Summary This module registers the declaration of global tables, which will be kept in synchronization during the various backtracks of the system.
  • Globnames
  • Libnames
  • Nametab This module contains the tables for globalization.
  • Libobject Libobject declares persistent objects, given with methods:
  • Global This module defines the global environment of Coq. The functions below are exactly the same as the ones in Safe_typing, operating on that global environment. add_* functions perform name verification, i.e. check that the name given as argument match those provided by Safe_typing.
  • Lib Lib: record of operations, backtrack, low-level sections
  • Goptions This module manages customization parameters at the vernacular level
  • Coqlib Indirection between logical names and global references.

coq-core.parsing

Documentation:

coq-core.plugins.btauto

Documentation:

coq-core.plugins.cc

Documentation:

coq-core.plugins.derive

Documentation:

coq-core.plugins.extraction

Documentation:

coq-core.plugins.firstorder

Documentation:

coq-core.plugins.funind

Documentation:

coq-core.plugins.ltac

Documentation:

coq-core.plugins.ltac2

Documentation:

coq-core.plugins.micromega

Documentation:

coq-core.plugins.nsatz

Documentation:

coq-core.plugins.number_string_notation

Documentation:

coq-core.plugins.ring

Documentation:

coq-core.plugins.rtauto

Documentation:

coq-core.plugins.ssreflect

Documentation:

coq-core.plugins.ssrmatching

Documentation:

coq-core.plugins.tauto

Documentation:

coq-core.plugins.tutorial.p0

Documentation:

coq-core.plugins.tutorial.p1

Documentation:

coq-core.plugins.tutorial.p2

Documentation:

coq-core.plugins.tutorial.p3

Documentation:

coq-core.plugins.zify

Documentation:

coq-core.pretyping

Documentation:

  • Reductionops Reduction Functions.
  • Inductiveops The following three functions are similar to the ones defined in Inductive, but they expect an env
  • Arguments_renaming
  • Retyping This family of functions assumes its constr argument is known to be well-typable. It does not type-check, just recompute the type without any costly verifications. On non well-typable terms, it either produces a wrong result or raise an anomaly. Use with care. It doesn't handle predicative universes too.
  • Vnorm
  • Geninterp Interpretation functions for generic arguments and interpreted Ltac values.
  • Glob_term Untyped intermediate terms
  • Locus Locus : positions in hypotheses and goals
  • Ltac_pretype
  • Pattern
  • Cbv
  • Glob_ops
  • Structures
  • Patternops
  • Constr_matching This module implements pattern-matching on terms
  • Pretype_errors
  • Evarsolve
  • Locusops Utilities on or_var
  • Find_subterm Finding subterms, possibly up to some unification function, possibly at some given occurrences
  • Evardefine
  • Evarconv
  • Typing This module provides the typing machine with existential variables and universes.
  • Tacred
  • Coercionops
  • Heads This module is about the computation of an approximation of the head symbol of defined constants and local definitions; it provides the function to compute the head symbols and a table to store the heads
  • Program A bunch of Coq constants used by Program
  • Typeclasses_errors
  • Typeclasses
  • Coercion
  • Keys
  • Unification
  • GlobEnv Type of environment extended with naming and ltac interpretation data
  • Cases
  • Pretyping This file implements type inference. It maps glob_constr (i.e. untyped terms whose names are located) to constr. In particular, it drives complex pattern-matching problems ("match") into elementary ones, insertion of coercions and resolution of implicit arguments.
  • Nativenorm This module implements normalization by evaluation to OCaml code
  • Indrec Errors related to recursors building
  • Detyping

coq-core.printing

Documentation:

  • Ppextend
  • Genprint Entry point for generic printers
  • Pputils
  • Ppconstr This module implements pretty-printers for constr_expr syntactic objects and their subcomponents.
  • Proof_diffs
  • Printer These are the entry points for printing terms, context, tac, ...

coq-core.proofs

Documentation:

  • Tactypes Tactic-related types that are not totally Ltac specific and still used in lower API. It's not clear whether this is a temporary API or if this is meant to stay.
  • Logic Legacy proof engine. Do not use in newly written code.
  • Tacmach Operations for handling terms under a local typing context.
  • Refine The primitive refine tactic used to fill the holes in partial proofs. This is the recommended way to write tactics when the proof term is easy to write down. Note that this is not the user-level refine tactic defined in Ltac which is actually based on the one below.
  • Goal_select
  • Proof
  • Proof_bullet
  • Miscprint Printing of intro_pattern
  • Goal Don't use this module.
  • Evar_refiner Refinement of existential variables.
  • Clenv This file defines clausenv, which is a deprecated way to handle open terms in the proof engine. Most of the API here is legacy except for the evar-based clauses.

coq-core.stm

Documentation:

coq-core.sysinit

Documentation:

coq-core.tactics

Documentation:

  • Dnet Generic discrimination net implementation over recursive types. This module implements a association data structure similar to tries but working on any types (not just lists). It is a term indexing datastructure, a generalization of the discrimination nets described for example in W.W.McCune, 1992, related also to generalized tries Hinze, 2000.
  • Term_dnet Dnets on constr terms.
  • Genredexpr Reduction expressions
  • Hipattern High-order patterns
  • Ppred
  • Cbn
  • Redops
  • Redexpr Interpretation layer of redexprs such as hnf, cbv, etc.
  • Tacticals
  • Tactics Main tactics defined in ML. This file is huge and should probably be split in more reasonable units at some point. Because of its size and age, the implementation features various styles and stages of the proof engine. This has to be uniformized someday.
  • DeclareScheme
  • Ind_tables This module provides support for registering inductive scheme builders, declaring schemes and generating schemes on demand
  • Elimschemes Induction/recursion schemes
  • Eqschemes This file builds schemes relative to equality inductive types
  • Equality
  • Dn
  • Btermdn Discrimination nets with bounded depth.
  • Hints
  • Autorewrite This files implements the autorewrite tactic.
  • Rewrite TODO: document and clean me!
  • Elim Eliminations tactics.
  • Inv
  • Auto This files implements auto and related automation tactics
  • Eqdecide
  • Eauto
  • Contradiction
  • Class_tactics This files implements typeclasses eauto
  • Abstract

coq-core.top_printers

Documentation:

coq-core.toplevel

Documentation:

coq-core.vernac

Documentation:

coq-core.vm

Documentation:

coqide-server.core

Documentation:

coqide-server.protocol

Documentation: