aboutsummaryrefslogtreecommitdiffhomepage
path: root/doc/RefMan-gal.tex
diff options
context:
space:
mode:
authorGravatar herbelin <herbelin@85f007b7-540e-0410-9357-904b9bb8a0f7>2001-04-09 07:44:54 +0000
committerGravatar herbelin <herbelin@85f007b7-540e-0410-9357-904b9bb8a0f7>2001-04-09 07:44:54 +0000
commitfba8b0b43b633d48dba995b1133ce88ef992d2ce (patch)
tree697733d1122d31421dbe33bffee5f379c42dc15e /doc/RefMan-gal.tex
parentc5564614cd3f8a95cb4f8ebe560d7d3ac72c40cf (diff)
Ajout syntaxe et regles let-in
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@8176 85f007b7-540e-0410-9357-904b9bb8a0f7
Diffstat (limited to 'doc/RefMan-gal.tex')
-rw-r--r--doc/RefMan-gal.tex32
1 files changed, 24 insertions, 8 deletions
diff --git a/doc/RefMan-gal.tex b/doc/RefMan-gal.tex
index 1bc2ada37..b38a589d0 100644
--- a/doc/RefMan-gal.tex
+++ b/doc/RefMan-gal.tex
@@ -281,7 +281,7 @@ chapter \ref{Addoc-syntax}.
& $|$ & \sort \\
& $|$ & {\term} {\tt ->} {\term} \\
& $|$ & {\tt (} {\nelist{\typedidents}{;}} {\tt )} {\term}\\
- & $|$ & {\tt [} {\nelist{\idents}{;}} {\tt ]} {\term}\\
+ & $|$ & {\tt [} {\nelist{\localdecls}{;}} {\tt ]} {\term}\\
& $|$ & {\tt (} \nelist{\term}{} {\tt )}\\
& $|$ & {\tt \zeroone{\annotation}} {\tt Cases} {\term} {\tt of}
\sequence{\eqn}{|} {\tt end}\\
@@ -295,7 +295,10 @@ chapter \ref{Addoc-syntax}.
{\annotation} & ::= & \verb!<! {\term} \verb!>!\\
& & \\
{\typedidents} & ::= & \nelist{\ident}{,} {\tt :} {\term}\\
-{\idents} & ::= & \nelist{\ident}{,} \zeroone{{\tt :} {\term}}\\
+{\localassums} & ::= & \nelist{\ident}{,} \zeroone{{\tt :} {\term}}\\
+{\localdef} & ::= & {\ident} {\tt :=} {\term} \zeroone{{\tt :} {\term}}\\
+{\localdecls} & ::= & \localassums \\
+ & $|$ & {\localdef} \\
& & \\
{\fixpointbody} & ::= & {\ident} {\tt [} \nelist{\typedidents}{;} {\tt ]}\verb.:.
{\term} \verb.:=. {\term} \\
@@ -364,16 +367,19 @@ the notation {\tt [} {\ident$_{1}$} {\tt ,} {\ldots} {\tt ,}
{\ident$_{n}$} {\tt :} \type {\tt ]} {\term} stands for
{\tt [} {\ident$_{1}$} {\tt :} \type {\tt ](} {\ldots}
{\tt ([} {\ident$_{n}$} {\tt :} \type {\tt ]} {\term} {\tt )}
-\ldots {\tt )} and the notation {\tt [} {\typedidents$_{1}$} {\tt ;}
-{\ldots} {\tt ;} {\typedidents$_{m}$} {\tt ]} {\term} is a shorthand
-for {\tt [}~{\typedidents$_{1}$} {\tt ](} {\ldots} {\tt ([}
-{\typedidents$_{m}$} {\tt ]} {\term} {\tt )}\\ {\tt [} {\ident$_{1}$}
-{\tt ,} {\ldots} {\tt ,} {\ident$_{n}$} {\tt :} \type {\tt ]} {\term}.
+\ldots {\tt )} and the notation {\tt [} {\localassums$_{1}$} {\tt ;}
+{\ldots} {\tt ;} {\localassums$_{m}$} {\tt ]} {\term} is a shorthand
+for {\tt [}~{\localassums$_{1}$} {\tt ](} {\ldots} {\tt ([}
+{\localassums$_{m}$} {\tt ]} {\term} {\tt )}.
\medskip
-\Rem The types of variables may be omitted in an
+\Rem The types of variables may be omitted in an
abstraction when they can be synthetized by the system.
+\Rem Local definitions may appear inside brackets mixed with
+assumptions. Obviously, this is expanded into unary abstractions
+separated by let-in's.
+
\subsection{Products}
\index{products}
@@ -402,6 +408,16 @@ denotes the application of the term \term$_0$ to the arguments
{\tt (} {\term$_0$} {\term$_1$} {\tt )} {\ldots} {\term$_n$} {\tt )}:
associativity is to the left.
+\subsection{Local definitions (let-in)}
+\index{Local definitions}
+\index{let-in}
+
+{\tt [}{\ident}{\tt :=}{\term$_1$}{\tt ]}{\term$_2$} denotes the local
+binding of \term$_1$ to the variable $\ident$ in \term$_2$.
+
+\medskip
+Rem The expression {\tt [}{\ident}{\tt :=}{\term$_1$}{\tt :}{\type}{\tt ]}{\term$_2$} is equivalent to {\tt [}{\ident}{\tt :=(}{\term$_1$}{\tt ::}{\type}{\tt )]}{\term$_2$}.
+
\subsection{Definition by case analysis}
\index{Cases@{\tt Cases\ldots of\ldots end}}