blob: 15ecb8ea98f07186b532dfa4fdddfee604e94000 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
|
\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$
|