\documentclass[11pt]{article} \usepackage[latin1]{inputenc} \usepackage[T1]{fontenc} \input{./title} \input{./macros} \begin{document} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Changes 6.3.1 ===> 7.0 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \shorttitle{Changes from {\Coq} V6.3.1 to {\Coq} V7} This document describes the main differences between Coq V7 and V6.3.1. This new version of Coq is characterized by fixed bugs, and improvement of implicit arguments synthesis and speed in tactic applications. \section{Changes overview} The new major version number is explained by a deep restructuration of the implementation code of Coq. From a user point of view, Coq V7 is characterized by the following novelties: \begin{itemize} \item A mini-language to write tactics with high-level pattern-matching on goals (see section \ref{Tactics}) \item A primitive let-in constructions (see section \ref{Metatheory}) \item Structuration of the name space and access to names by the dot notation (see section \ref{Metatheory}) \item A command to export theories to XML to be used with rendering tools by Bologna University (see section \ref{Tools}) \item Various improvements, including a search facilities by pattern provided by Yves Bertot (see section \ref{Tools}) \item As usual, several bugs fixed and a lot of new ones introduced \end{itemize} Incompatibilities are described in section \ref{Incompatibilities}. Please notice that extraction and the {\texttt Program/Realizer} tactic are unavailable in Coq V7. Developpers of tactics in ML are invited to read section \ref{Developers}. \section{Tactics} \label{Tactics} \def\ltac{{\cal L}_{tac}} \begin{description} \item[The main novelty is $\ltac$,] a mini-language contributed by David Delahaye to write tactics with high-level pattern-matching on goals. A separate documentation entitled $\ltac$ is available in the archive or at the author page http://logical.inria.fr/~delahaye. \item[Other changes] \begin{itemize} \item {\texttt Tauto} and {\texttt Intuition} has been rewritten in $\ltac$. This has introduced some changes in the hypotheses names generated by {\texttt Intuition}. The previous versions of {\texttt Tauto} and {\texttt Intuition} remains available under the names ???.\\ \item Redondant or incompatible instantiations in {\texttt Apply ... with ...} now correctly trapped \end{itemize} \item[Program/Realizer] is unavailable in Coq V7. \end{description} \section{Toplevel commands} \begin{description} \item[New searching mechanism by pattern] contributed by Yves Bertot \begin{itemize} \item {\texttt SearchPattern {\term}.} This command displays the name and type of all theorems of the current context whose statement's conclusion matches the expression {\term} where holes in the latter are denoted by ``{\texttt ?}''. \begin{coq_example} Require Arith. SearchPattern (plus ? ?)=?. \end{coq_example} Patterns need not be linear: you can express that the same expression must occur in two places by using indexed `{\texttt ?}''. \begin{coq_example} Require Arith. SearchPattern (plus ?1 ?)=?1. \end{coq_example} \item {\texttt SearchRewrite {\term}.} This command displays the name and type of all theorems of the current context whose statement's conclusion is an equality of which one side matches the expression {\term =}. Holes in {\term} are denoted by ``{\texttt ?}''. \begin{coq_example} Require Arith. SearchRewrite (plus ? ?). \end{coq_example} \end{itemize} \begin{Variants} \item {\tt SearchPattern {\term} inside {\module$_1$}...{\module$_n$}}\\ This restricts the search to constructions defined in modules {\module$_1$}...{\module$_n$}. \item {\tt SearchPattern {\term} outside {\module}.}\\ This restricts the search to constructions not defined in modules {\module$_1$}...{\module$_n$}. \item {\tt SearchRewrite {\term} inside {\module$_1$}...{\module$_n$}.}\\ This restricts the search to constructions defined in modules {\module$_1$}...{\module$_n$}. \item {\tt SearchRewrite {\term} outside {\module$_1$}...{\module$_n$}.}\\ This restricts the search to constructions not defined in modules {\module$_1$}...{\module$_n$}. \end{Variants} \item {\texttt Search {\ident}} has been extended to accept qualified identifiers and the {\tt inside} and {\tt outside} restrictions as {\texttt SearchPattern} and {\texttt SearchRewrite}. \end{description} \section{Language} \label{Language} \subsection{Names} \begin{description} \item[Structured absolute names] The naming strategy for constructions has been made clearer. A Coq name is now unique and has the form \begin{quote} {\texttt Coq.Init.Logic.Equality.eq} \end{quote} {\texttt eq} is the name of the construction. {\texttt Coq} means {\texttt eq} is a construction of the standard library of Coq. {\texttt Init} means it is defined in directory {\texttt Init} of the standard library of Coq. {\texttt Logic} means it is defined in file {\texttt Logic.v} of the directory {\texttt Init} in the standard library of Coq. {\texttt Equality} means it is defined in section {\texttt Equality} of the file {\texttt Logic.v} in the directory {\texttt Init} of the standard library of Coq. Of course, there is no limit to the number of directory to traverse to find the corresponding file and no limit to the number of section to traverse in the file to find the corresponding definition. \item[Dot notation] Almost all commands accept the ``.'' notation to write absolute names. \item[Open mechanism] Usually all required modules ({\texttt .vo} files) and closed sections are ``open'' by default. This means that constructions there can be accessed just by their identifier. \item[Bug] with identifiers ended by a number greater than $2^{31}$ fixed. \end{description} \section{Tools} \label{Tools} \begin{description} \item[Consistency check for {\texttt .vo} files] A check-sum test avoids to require inconsistent {\texttt .vo} files. \item[Optimal compiler] If your architecture supports it, the native version of {\texttt coqtop} and {\texttt coqc} is used by default. \item[Miscellaneous] \begin{itemize} \item {\texttt do\_Makefile} is now called {\texttt coq\_makefile}. \end{itemize} \end{description} \section{Incompatibilities} \label{Incompatibilities} You could have to modify your vernacular source for the following reasons: \begin{itemize} \item {\texttt Intuition} now remove true hypotheses. \item In all cases, the ``.vo'' files are not compatible and should be recompiled. \item[Extraction] is currently unavailable in Coq V7. \item[Program/Realizer] tactics are currently unavailable in Coq V7. \item[Linear] tactic is discontinued. \end{itemize} \section{New users contributions} \begin{description} \item[Binary Decision Diagrams] provided by Kumar Verma (Dyade) \item[A distributed reference counter] (part of a garbage collector) provided by Jean Duprat (ENS-Lyon) \end{description} \section{Installation procedure} \subsection{Uninstalling Coq} \paragraph{Warning} It is strongly recommended to clean-up the V6.3 Coq library directory before you install the new version. Use the option to coqtop \texttt{-uninstall} that will remove the binaries and the library files of Coq V6.3 on a Unix system. \subsection{OS Issues -- Requirements} \subsubsection{Unix users} You need Objective Caml version 2.01 or later, and the corresponding Camlp4 version to compile the system. Both are available by anonymous ftp at: \\ \verb|ftp://ftp.inria.fr/Projects/Cristal|. \bigskip \noindent Binary distributions are available for the following architectures: \bigskip \begin{tabular}{l|c|r} {\bf OS } & {\bf Processor} & {name of the package}\\ \hline Linux & 80386 and higher & coq-6.3.1-Linux-i386.tar.gz \\ Solaris & Sparc & coq-6.3.1-solaris-sparc.tar.gz\\ Digital & Alpha & coq-6.3.1-OSF1-alpha.tar.gz\\ \end{tabular} \bigskip There is also rpm packages for Linux. \bigskip If your configuration is in the above list, you don't need to install Caml and Camlp4 and to compile the system: just download the package and install the binaries in the right place. \subsubsection{MS Windows users} A binary distribution is available for PC under MS Windows 95/98/NT. The package is named coq-6.3.1-win.zip. For installation information see the files INSTALL.win and README.win. \end{document} % Local Variables: % mode: LaTeX % TeX-master: t % End: % $Id$