aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--doc/sphinx/addendum/program.rst14
-rw-r--r--doc/sphinx/addendum/ring.rst4
-rw-r--r--doc/sphinx/language/gallina-extensions.rst28
-rw-r--r--doc/sphinx/refman-preamble.rst60
-rw-r--r--doc/sphinx/refman-preamble.sty22
5 files changed, 24 insertions, 104 deletions
diff --git a/doc/sphinx/addendum/program.rst b/doc/sphinx/addendum/program.rst
index cbb5c0db8a..5cffe9e435 100644
--- a/doc/sphinx/addendum/program.rst
+++ b/doc/sphinx/addendum/program.rst
@@ -162,7 +162,7 @@ Program Definition
This command types the value term in Russell and generates proof
obligations. Once solved using the commands shown below, it binds the
- final |Coq| term to the name ``ident`` in the environment.
+ final |Coq| term to the name :n:`@ident` in the environment.
.. exn:: @ident already exists.
:name: @ident already exists. (Program Definition)
@@ -170,12 +170,12 @@ Program Definition
.. cmdv:: Program Definition @ident : @type := @term
- It interprets the type ``type``, potentially generating proof
+ It interprets the type :n:`@type`, potentially generating proof
obligations to be resolved. Once done with them, we have a |Coq|
- type |type_0|. It then elaborates the preterm ``term`` into a |Coq|
- term |term_0|, checking that the type of |term_0| is coercible to
- |type_0|, and registers ``ident`` as being of type |type_0| once the
- set of obligations generated during the interpretation of |term_0|
+ type :n:`@type__0`. It then elaborates the preterm :n:`@term` into a |Coq|
+ term :n:`@term__0`, checking that the type of :n:`@term__0` is coercible to
+ :n:`@type__0`, and registers :n:`@ident` as being of type :n:`@type__0` once the
+ set of obligations generated during the interpretation of :n:`@term__0`
and the aforementioned coercion derivation are solved.
.. exn:: In environment … the term: @term does not have type @type. Actually, it has type ...
@@ -185,7 +185,7 @@ Program Definition
This is equivalent to:
- :g:`Program Definition ident : forall binders, type := fun binders => term`.
+ :n:`Program Definition @ident : forall {* @binder }, @type := fun {* @binder } => @term`.
.. TODO refer to production in alias
diff --git a/doc/sphinx/addendum/ring.rst b/doc/sphinx/addendum/ring.rst
index 76174e32b5..2a321b5cbf 100644
--- a/doc/sphinx/addendum/ring.rst
+++ b/doc/sphinx/addendum/ring.rst
@@ -1,8 +1,12 @@
+.. |bdi| replace:: :math:`\beta\delta\iota`
.. |ra| replace:: :math:`\rightarrow_{\beta\delta\iota}`
.. |la| replace:: :math:`\leftarrow_{\beta\delta\iota}`
.. |eq| replace:: `=`:sub:`(by the main correctness theorem)`
.. |re| replace:: ``(PEeval`` `v` `ap`\ ``)``
.. |le| replace:: ``(Pphi_dev`` `v` ``(norm`` `ap`\ ``))``
+.. |N| replace:: ``N``
+.. |nat| replace:: ``nat``
+.. |Z| replace:: ``Z``
.. _theringandfieldtacticfamilies:
diff --git a/doc/sphinx/language/gallina-extensions.rst b/doc/sphinx/language/gallina-extensions.rst
index 8fcbeea570..18b05e47d3 100644
--- a/doc/sphinx/language/gallina-extensions.rst
+++ b/doc/sphinx/language/gallina-extensions.rst
@@ -361,16 +361,12 @@ can be alternatively written
Definition not (b:bool) := if b then false else true.
-More generally, for an inductive type with constructors |C_1| and |C_2|,
-we have the following equivalence
+More generally, for an inductive type with constructors :n:`@ident__1`
+and :n:`@ident__2`, the following terms are equal:
-::
+:n:`if @term__0 {? {? as @name } return @term } then @term__1 else @term__2`
- if term [dep_ret_type] then term₁ else term₂ ≡
- match term [dep_ret_type] with
- | C₁ _ … _ => term₁
- | C₂ _ … _ => term₂
- end
+:n:`match @term__0 {? {? as @name } return @term } with | @ident__1 {* _ } => @term__1 | @ident__2 {* _ } => @term__2 end`
.. example::
@@ -398,11 +394,13 @@ constructions. There are two variants of them.
First destructuring let syntax
++++++++++++++++++++++++++++++
-The expression :g:`let (`\ |ident_1|:g:`, … ,` |ident_n|\ :g:`) :=` |term_0|\ :g:`in` |term_1| performs
-case analysis on |term_0| which must be in an inductive type with one
-constructor having itself :math:`n` arguments. Variables |ident_1| … |ident_n| are
-bound to the :math:`n` arguments of the constructor in expression |term_1|. For
-instance, the definition
+The expression :n:`let ( {*, @ident__i } ) := @term__0 in @term__1`
+performs case analysis on :n:`@term__0` whose type must be an
+inductive type with exactly one constructor. The number of variables
+:n:`@ident__i` must correspond to the number of arguments of this
+contrustor. Then, in :n:`@term__1`, these variables are bound to the
+arguments of the constructor in :n:`@term__0`. For instance, the
+definition
.. coqtop:: reset all
@@ -417,7 +415,7 @@ can be alternatively written
Definition fst (A B:Set) (p:A * B) := let (x, _) := p in x.
Notice that reduction is different from regular :g:`let … in …`
-construction since it happens only if |term_0| is in constructor form.
+construction since it happens only if :n:`@term__0` is in constructor form.
Otherwise, the reduction is blocked.
The pretty-printing of a definition by matching on a irrefutable
@@ -2286,7 +2284,7 @@ which they reside into another one. A *class* is either a sort
(denoted by the keyword ``Sortclass``), a product type (denoted by the
keyword ``Funclass``), or a type constructor (denoted by its name), e.g.
an inductive type or any constant with a type of the form
-``forall (`` |x_1| : |A_1| ) … ``(``\ |x_n| : |A_n|\ ``)``, `s` where `s` is a sort.
+:n:`forall {+ @binder }, @sort`.
Then the user is able to apply an object that is not a function, but
can be coerced to a function, and more generally to consider that a
diff --git a/doc/sphinx/refman-preamble.rst b/doc/sphinx/refman-preamble.rst
index de95eda989..a31d778af6 100644
--- a/doc/sphinx/refman-preamble.rst
+++ b/doc/sphinx/refman-preamble.rst
@@ -11,60 +11,18 @@
.. role:: smallcaps
-.. |A_1| replace:: `A`\ :math:`_{1}`
-.. |A_n| replace:: `A`\ :math:`_{n}`
-.. |arg_1| replace:: `arg`\ :math:`_{1}`
-.. |arg_n| replace:: `arg`\ :math:`_{n}`
-.. |bdi| replace:: :math:`\beta\delta\iota`
-.. |binder_1| replace:: `binder`\ :math:`_{1}`
-.. |binder_n| replace:: `binder`\ :math:`_{n}`
-.. |binders_1| replace:: `binders`\ :math:`_{1}`
-.. |binders_n| replace:: `binders`\ :math:`_{n}`
-.. |C_1| replace:: `C`\ :math:`_{1}`
.. |c_1| replace:: `c`\ :math:`_{1}`
-.. |C_2| replace:: `C`\ :math:`_{2}`
.. |c_i| replace:: `c`\ :math:`_{i}`
.. |c_n| replace:: `c`\ :math:`_{n}`
.. |Cic| replace:: :smallcaps:`Cic`
-.. |class_1| replace:: `class`\ :math:`_{1}`
-.. |class_2| replace:: `class`\ :math:`_{2}`
.. |Coq| replace:: :smallcaps:`Coq`
.. |CoqIDE| replace:: :smallcaps:`CoqIDE`
.. |eq_beta_delta_iota_zeta| replace:: `=`\ :math:`_{\beta\delta\iota\zeta}`
.. |Gallina| replace:: :smallcaps:`Gallina`
-.. |ident_0| replace:: `ident`\ :math:`_{0}`
-.. |ident_1,1| replace:: `ident`\ :math:`_{1,1}`
-.. |ident_1,k_1| replace:: `ident`\ :math:`_{1,k_1}`)
-.. |ident_1| replace:: `ident`\ :math:`_{1}`
-.. |ident_2| replace:: `ident`\ :math:`_{2}`
-.. |ident_3| replace:: `ident`\ :math:`_{3}`
-.. |ident_i| replace:: `ident`\ :math:`_{i}`
-.. |ident_j| replace:: `ident`\ :math:`_{j}`
-.. |ident_k| replace:: `ident`\ :math:`_{k}`
-.. |ident_n,1| replace:: `ident`\ :math:`_{n,1}`
-.. |ident_n,k_n| replace:: `ident`\ :math:`_{n,k_n}`
-.. |ident_n| replace:: `ident`\ :math:`_{n}`
.. |Latex| replace:: :smallcaps:`LaTeX`
.. |L_tac| replace:: `L`:sub:`tac`
.. |Ltac| replace:: `L`:sub:`tac`
.. |ML| replace:: :smallcaps:`ML`
-.. |mod_0| replace:: `mod`\ :math:`_{0}`
-.. |mod_1| replace:: `mod`\ :math:`_{1}`
-.. |mod_2| replace:: `mod`\ :math:`_{1}`
-.. |mod_n| replace:: `mod`\ :math:`_{n}`
-.. |module_0| replace:: `module`\ :math:`_{0}`
-.. |module_1| replace:: `module`\ :math:`_{1}`
-.. |module_expression_0| replace:: `module_expression`\ :math:`_{0}`
-.. |module_expression_1| replace:: `module_expression`\ :math:`_{1}`
-.. |module_expression_i| replace:: `module_expression`\ :math:`_{i}`
-.. |module_expression_n| replace:: `module_expression`\ :math:`_{n}`
-.. |module_n| replace:: `module`\ :math:`_{n}`
-.. |module_type_0| replace:: `module_type`\ :math:`_{0}`
-.. |module_type_1| replace:: `module_type`\ :math:`_{1}`
-.. |module_type_i| replace:: `module_type`\ :math:`_{i}`
-.. |module_type_n| replace:: `module_type`\ :math:`_{n}`
-.. |N| replace:: ``N``
-.. |nat| replace:: ``nat``
.. |OCaml| replace:: :smallcaps:`OCaml`
.. |p_1| replace:: `p`\ :math:`_{1}`
.. |p_i| replace:: `p`\ :math:`_{i}`
@@ -79,24 +37,6 @@
.. |t_i| replace:: `t`\ :math:`_{i}`
.. |t_m| replace:: `t`\ :math:`_{m}`
.. |t_n| replace:: `t`\ :math:`_{n}`
-.. |f_1| replace:: `f`\ :math:`_{1}`
-.. |f_i| replace:: `f`\ :math:`_{i}`
-.. |f_m| replace:: `f`\ :math:`_{m}`
-.. |f_n| replace:: `f`\ :math:`_{n}`
-.. |u_1| replace:: `u`\ :math:`_{1}`
-.. |u_i| replace:: `u`\ :math:`_{i}`
-.. |u_m| replace:: `u`\ :math:`_{m}`
-.. |u_n| replace:: `u`\ :math:`_{n}`
-.. |term_0| replace:: `term`\ :math:`_{0}`
-.. |term_1| replace:: `term`\ :math:`_{1}`
-.. |term_2| replace:: `term`\ :math:`_{2}`
-.. |term_n| replace:: `term`\ :math:`_{n}`
-.. |type_0| replace:: `type`\ :math:`_{0}`
-.. |type_1| replace:: `type`\ :math:`_{1}`
-.. |type_2| replace:: `type`\ :math:`_{2}`
-.. |type_3| replace:: `type`\ :math:`_{3}`
-.. |type_n| replace:: `type`\ :math:`_{n}`
.. |x_1| replace:: `x`\ :math:`_{1}`
.. |x_i| replace:: `x`\ :math:`_{i}`
.. |x_n| replace:: `x`\ :math:`_{n}`
-.. |Z| replace:: ``Z``
diff --git a/doc/sphinx/refman-preamble.sty b/doc/sphinx/refman-preamble.sty
index 90a63a5a2d..718a54ba8f 100644
--- a/doc/sphinx/refman-preamble.sty
+++ b/doc/sphinx/refman-preamble.sty
@@ -1,40 +1,26 @@
-\newcommand{\alors}{\textsf{then}}
-\newcommand{\alter}{\textsf{alter}}
\newcommand{\as}{\kw{as}}
\newcommand{\Assum}[3]{\kw{Assum}(#1)(#2:#3)}
-\newcommand{\bool}{\textsf{bool}}
\newcommand{\case}{\kw{case}}
-\newcommand{\conc}{\textsf{conc}}
\newcommand{\cons}{\textsf{cons}}
\newcommand{\consf}{\textsf{consf}}
-\newcommand{\conshl}{\textsf{cons\_hl}}
\newcommand{\Def}[4]{\kw{Def}(#1)(#2:=#3:#4)}
\newcommand{\emptyf}{\textsf{emptyf}}
\newcommand{\End}{\kw{End}}
\newcommand{\kwend}{\kw{end}}
-\newcommand{\EqSt}{\textsf{EqSt}}
\newcommand{\even}{\textsf{even}}
\newcommand{\evenO}{\textsf{even}_\textsf{O}}
\newcommand{\evenS}{\textsf{even}_\textsf{S}}
-\newcommand{\false}{\textsf{false}}
-\newcommand{\filter}{\textsf{filter}}
\newcommand{\Fix}{\kw{Fix}}
\newcommand{\fix}{\kw{fix}}
\newcommand{\for}{\textsf{for}}
\newcommand{\forest}{\textsf{forest}}
-\newcommand{\from}{\textsf{from}}
\newcommand{\Functor}{\kw{Functor}}
-\newcommand{\haslength}{\textsf{has\_length}}
-\newcommand{\hd}{\textsf{hd}}
-\newcommand{\ident}{\textsf{ident}}
\newcommand{\In}{\kw{in}}
\newcommand{\Ind}[4]{\kw{Ind}[#2](#3:=#4)}
\newcommand{\ind}[3]{\kw{Ind}~[#1]\left(#2\mathrm{~:=~}#3\right)}
\newcommand{\Indp}[5]{\kw{Ind}_{#5}(#1)[#2](#3:=#4)}
\newcommand{\Indpstr}[6]{\kw{Ind}_{#5}(#1)[#2](#3:=#4)/{#6}}
-\newcommand{\injective}{\kw{injective}}
\newcommand{\kw}[1]{\textsf{#1}}
-\newcommand{\lb}{\lambda}
\newcommand{\length}{\textsf{length}}
\newcommand{\letin}[3]{\kw{let}~#1:=#2~\kw{in}~#3}
\newcommand{\List}{\textsf{list}}
@@ -45,7 +31,6 @@
\newcommand{\ModS}[2]{{\kw{Mod}}({#1}:{#2})}
\newcommand{\ModType}[2]{{\kw{ModType}}({#1}:={#2})}
\newcommand{\mto}{.\;}
-\newcommand{\Nat}{\mathbb{N}}
\newcommand{\nat}{\textsf{nat}}
\newcommand{\Nil}{\textsf{nil}}
\newcommand{\nilhl}{\textsf{nil\_hl}}
@@ -57,13 +42,10 @@
\newcommand{\ovl}[1]{\overline{#1}}
\newcommand{\Pair}{\textsf{pair}}
\newcommand{\plus}{\mathsf{plus}}
-\newcommand{\Prod}{\textsf{prod}}
\newcommand{\SProp}{\textsf{SProp}}
\newcommand{\Prop}{\textsf{Prop}}
\newcommand{\return}{\kw{return}}
\newcommand{\Set}{\textsf{Set}}
-\newcommand{\si}{\textsf{if}}
-\newcommand{\sinon}{\textsf{else}}
\newcommand{\Sort}{\mathcal{S}}
\newcommand{\Str}{\textsf{Stream}}
\newcommand{\Struct}{\kw{Struct}}
@@ -71,9 +53,7 @@
\newcommand{\tl}{\textsf{tl}}
\newcommand{\tree}{\textsf{tree}}
\newcommand{\trii}{\triangleright_\iota}
-\newcommand{\true}{\textsf{true}}
\newcommand{\Type}{\textsf{Type}}
-\newcommand{\unfold}{\textsf{unfold}}
\newcommand{\WEV}[3]{\mbox{$#1[] \vdash #2 \lra #3$}}
\newcommand{\WEVT}[3]{\mbox{$#1[] \vdash #2 \lra$}\\ \mbox{$ #3$}}
\newcommand{\WF}[2]{{\mathcal{W\!F}}(#1)[#2]}
@@ -87,5 +67,3 @@
\newcommand{\WTE}[3]{\WT{E}{#1}{#2}{#3}}
\newcommand{\WTEG}[2]{\WTE{\Gamma}{#1}{#2}}
\newcommand{\WTM}[3]{\WT{#1}{}{#2}{#3}}
-\newcommand{\zeroone}[1]{[{#1}]}
-\newcommand{\zeros}{\textsf{zeros}}