]> matita.cs.unibo.it Git - helm.git/blobdiff - helm/ocaml/tactics/doc/main.tex
ocaml 3.09 transition
[helm.git] / helm / ocaml / tactics / doc / main.tex
index 32c6832df2ee83d0e4e65e55e0fa2ae8ddfad6de..00208b0c25724c2efac60938aae49d77332067c4 100644 (file)
@@ -1,4 +1,4 @@
-\documentclass[a4paper,draft]{article}
+\documentclass[a4paper]{article}
 
 \usepackage{a4wide}
 \usepackage{pifont}
 \newcommand{\MATITA}{\ding{46}\textsf{\textbf{Matita}}}
 
 \title{Continuationals semantics for \MATITA}
-\author{Enrico Tassi \qquad Stefano Zacchiroli \\
+\author{Claudio Sacerdoti Coen \quad Enrico Tassi \quad Stefano Zacchiroli \\
 \small Department of Computer Science, University of Bologna \\
 \small Mura Anteo Zamboni, 7 -- 40127 Bologna, ITALY \\
-\small \{\texttt{tassi}, \texttt{zacchiro}\}\texttt{@cs.unibo.it}}
+\small \{\texttt{sacerdot}, \texttt{tassi}, \texttt{zacchiro}\}\texttt{@cs.unibo.it}}
+
+\newcommand{\MATHIT}[1]{\ensuremath{\mathit{#1}}}
+\newcommand{\MATHTT}[1]{\ensuremath{\mathtt{#1}}}
+
+\newcommand{\DOT}{\ensuremath{\mbox{\textbf{.}}}}
+\newcommand{\SEMICOLON}{\ensuremath{\mbox{\textbf{;}}}}
+\newcommand{\BRANCH}{\ensuremath{\mbox{\textbf{[}}}}
+\newcommand{\SHIFT}{\ensuremath{\mbox{\textbf{\textbar}}}}
+\newcommand{\POS}[1]{\ensuremath{#1\mbox{\textbf{:}}}}
+\newcommand{\MERGE}{\ensuremath{\mbox{\textbf{]}}}}
+\newcommand{\FOCUS}[1]{\ensuremath{\mathtt{focus}~#1}}
+\newcommand{\UNFOCUS}{\ensuremath{\mathtt{unfocus}}}
+\newcommand{\SKIP}{\MATHTT{skip}}
+\newcommand{\TACTIC}[1]{\ensuremath{\mathtt{tactic}~#1}}
 
-\newcommand{\DOT}{\mbox{\textbf{.}}}
-\newcommand{\SEMICOLON}{\mbox{\textbf{;}}}
-\newcommand{\BRANCH}{\mbox{\textbf{[}}}
-\newcommand{\SHIFT}{\mbox{\textbf{\textbar}}}
-\newcommand{\MERGE}{\mbox{\textbf{]}}}
 \newcommand{\APPLY}[1]{\ensuremath{\mathtt{apply}~\mathit{#1}}}
-\newcommand{\SKIP}{\ensuremath{\mathtt{skip}}}
-\newcommand{\TACTICAL}[1]{\ensuremath{\mathtt{tactical}~\mathit{#1}}}
-\newcommand{\GOTO}[2]{\ensuremath{\mathtt{goal} ~ #1 ~ #2}}
-
-\newcommand{\GOAL}{\ensuremath{\mathit{goal}}}
-\newcommand{\GOALSWITCH}{\ensuremath{\mathit{goal\_switch}}}
-\newcommand{\LIST}{\ensuremath{\mathtt{list}}}
-\newcommand{\BOOL}{\ensuremath{\mathtt{bool}}}
-\newcommand{\STACK}{\ensuremath{\mathtt{stack}}}
-\newcommand{\OPEN}[1]{\ensuremath{\mathtt{Open}~#1}}
-\newcommand{\CLOSED}[1]{\ensuremath{\mathtt{Closed}~#1}}
+
+\newcommand{\GOAL}{\MATHIT{goal}}
+\newcommand{\SWITCH}{\MATHIT{switch}}
+\newcommand{\LIST}{\MATHTT{list}}
+\newcommand{\INT}{\MATHTT{int}}
+\newcommand{\OPEN}{\MATHTT{Open}}
+\newcommand{\CLOSED}{\MATHTT{Closed}}
 
 \newcommand{\SEMOP}[1]{|[#1|]}
 \newcommand{\TSEMOP}[1]{{}_t|[#1|]}
-\newcommand{\SEM}[5]{\SEMOP{#1}_{#2,#3,#4,#5}}
+\newcommand{\SEM}[3][\xi]{\SEMOP{#2}_{{#1},{#3}}}
+\newcommand{\ENTRY}[4]{\langle#1,#2,#3,#4\rangle}
 \newcommand{\TSEM}[3]{\TSEMOP{#1}_{#2,#3}}
 
-\newcommand{\FUN}[2]{\ensuremath{\mathit{#1}(#2)}}
-\newcommand{\FILTERFUN}[2]{\FUN{filter}{#1,#2}}
-\newcommand{\MAPFUN}[2]{\FUN{map}{#1,#2}}
-\newcommand{\DEEPMAPFUN}[2]{\FUN{deep\_map}{#1,#2}}
-% \newcommand{\ISCLOSEDFUN}{\ensuremath{\mathit{is\_closed}}}
-\newcommand{\ISOPENFUN}{\ensuremath{\mathit{is\_open}}}
-% \newcommand{\OPENFUN}{\ensuremath{\mathit{open}}}
-\newcommand{\CLOSEFUN}{\ensuremath{\mathit{close}}}
-\newcommand{\GOALOFFUN}{\ensuremath{\mathit{goal\_of}}}
+\newcommand{\GIN}[1][1]{\ensuremath{[l_{#1};\cdots;l_n]}}
+
+\newcommand{\ZEROPOS}{\MATHIT{zero\_pos}}
+\newcommand{\INITPOS}{\MATHIT{init\_pos}}
+\newcommand{\ISFRESH}{\MATHIT{is\_fresh}}
+\newcommand{\FILTER}{\MATHIT{filter}}
+\newcommand{\FILTEROPEN}{\MATHIT{filter\_open}}
+\newcommand{\ISOPEN}{\MATHIT{is\_open}}
+\newcommand{\DEEPCLOSE}{\MATHIT{deep\_close}}
+\newcommand{\REMOVEGOALS}{\MATHIT{remove\_goals}}
+\newcommand{\GOALS}{\MATHIT{open\_goals}}
+
+\newcommand{\BRANCHTAG}{\ensuremath{\mathtt{B}}}
+\newcommand{\FOCUSTAG}{\ensuremath{\mathtt{F}}}
+
+\newlength{\sidecondlen}
+\setlength{\sidecondlen}{2cm}
 
 \begin{document}
 \maketitle
 
-\section{Foo}
-
-\subsection{Language}
-
-\[
-\begin{array}{rcll}
- C & ::= & & \mbox{(\textbf{continuationals})} \\
-   &     & \DOT & \mbox{(dot)} \\
-   &  |  & C ~ \SEMICOLON ~ C & \mbox{(semicolon)} \\
-   &  |  & \BRANCH & \mbox{(branch)} \\
-   &  |  & \SHIFT & \mbox{(shift)} \\
-   &  |  & \MERGE & \mbox{(merge)} \\
-   &  |  & \GOTO{n}{C} & \mbox{(goto)} \\
-   &  |  & \TACTICAL{T} & \mbox{(tactical)} \\[2ex]
-
- T & ::= & & \mbox{(\textbf{tacticals})} \\
-   &     & \APPLY{tac} & \mbox{(tactic application)} \\
-   &  |  & \SKIP & \mbox{(closed goal skipping)} \\
-\end{array}
-\]
-
-\subsection{Status}
-
-\[
-\begin{array}{rcll}
- \mathit{status} & = & \xi\times\Gamma\times\tau\times\kappa & \\
- \xi & & & \mbox{(metasenv)} \\
- \Gamma & = & \GOALSWITCH~\LIST~\STACK & \mbox{(context)} \\
- \GOALSWITCH & = & \OPEN{n} \quad | \quad \CLOSED{n} & \\
- \tau & = & \GOAL~\LIST~\STACK & \mbox{(todo)} \\
- \kappa & = & \GOAL~\LIST~\STACK & \mbox{(dot continuations)} \\
-\end{array}
-\]
-
-\subsection{Semantics}
-
-\[
-\begin{array}{rcll}
- \SEMOP{\cdot} & : & C -> \mathit{status} -> \mathit{status} &
-  \mbox{(continuationals semantics)} \\
- \TSEMOP{\cdot} & : & T -> \xi -> \GOALSWITCH ->
-  \xi\times\GOAL~\LIST\times\GOAL~\LIST & \mbox{(tacticals semantics)} \\
-\end{array}
-\]
-
-\[
-\begin{array}{rcl}
- \mathit{apply\_tac} & : & \mathit{tac} -> \xi -> \GOAL ->
-  \xi\times\GOAL~\LIST\times\GOAL~\LIST \\[1ex]
- \mathit{filter} & : & (\alpha->\BOOL)->\alpha~\LIST->\alpha~\LIST \\
- \mathit{map} & : & (\alpha->\beta)->\alpha~\LIST->\beta~\LIST \\
- \mathit{deep\_map} & :
-  & (\alpha->\beta)->\alpha~\LIST~\STACK->\beta~\LIST~\STACK \\[1ex]
-%  \ISCLOSEDFUN & : & \GOALSWITCH -> \BOOL \\
- \ISOPENFUN & : & \GOALSWITCH -> \BOOL \\
- \CLOSEFUN & : & \GOALSWITCH -> \GOALSWITCH \\[1ex]
-%  \OPENFUN & : & \GOAL -> \GOALSWITCH \\[1ex]
- \GOALOFFUN & : & \GOALSWITCH -> \GOAL \\
-\end{array}
-\]
-
-\[
-\begin{array}{rlcc}
- \TSEM{\APPLY{tac}}{\xi}{\OPEN{n}} & =
- & \mathit{apply\_tac}(\mathit{tac},\xi,n) & \\
- \TSEM{\SKIP}{\xi}{\CLOSED{n}} & = & \langle \xi, [], [n]\rangle & \\
-\end{array}
-\]
-
-\[
-\begin{array}{rcl}
- \SEM{\TACTICAL{T}}{\xi}{[g_1;\dots;g_n]::\Gamma}{\tau}{\kappa}
- & =
- & \langle\xi_n,
-   \MAPFUN{\mathtt{Open}}{G^O_n}::\DEEPMAPFUN{\CLOSEFUN}{G^C_n,\Gamma},
-   \tau\setminus G^C_n,\kappa\setminus G^O_n\rangle
- \\[1ex]
-
- \multicolumn{3}{l}{\hspace{2em}\mathit{where} ~
- \left\{
- \begin{array}{rcll}
-  \langle\xi_0, G^O_0, G^C_0\rangle & = & \langle\xi, [], []\rangle \\
-  \langle\xi_{i+1}, G^O_{i+1}, G^C_{i+1}\rangle
-  & =
-  & \langle\xi_i, G^O_i, G^C_i\rangle
-  & g_{i+1}\in G^C_i \\
-  \langle\xi_{i+1}, G^O_{i+1}, G^C_{i+1}\rangle
-  & =
-  & \langle\xi, (G^O_i\setminus G^C)\cup G^O, G^C_i\cup G^C\rangle
-  & g_{i+1}\not\in G^C_i \\
-  & & \mathit{where} ~ \langle\xi,G^O,G^C\rangle=\TSEM{T}{\xi_i}{g_{i+1}}
-  \\
- \end{array}
- \right.
- }
- \\[2ex]
-
- \SEM{C_1 ~ \SEMICOLON ~ C_2}{\xi}{\Gamma}{\tau}{\kappa}
- & =
- & \SEM{C_2}{\xi'}{\Gamma'}{\tau'}{\kappa'}
- \\[1ex]
-
- & & \mathit{where} ~
- \langle\xi',\Gamma',\tau',\kappa',\rangle =
- \SEM{C_1}{\xi}{\Gamma}{\tau}{\kappa}
- \\[2ex]
-
- \SEM{~\DOT~}{\xi}{(g::G)::\Gamma}{\tau}{K::\kappa}
- & =
- & \langle\xi, [g]::\Gamma, \tau,
-   (\MAPFUN{\mathtt{Open}}{\FILTERFUN{\ISOPENFUN}{G}}\cup K)::\kappa\rangle
- \\[2ex]
-
- \SEM{~\DOT~}{\xi}{[]::\Gamma}{\tau}{(n::N)::\kappa}
- & =
- & \langle\xi, [\OPEN{n}]::\Gamma, \tau, N::\kappa\rangle
- \\[2ex]
-
- \SEM{~\BRANCH~}{\xi}{[g_1;\dots;g_n]::\Gamma}{\tau}{\kappa}
- & =
- & \langle\xi, [g_1]::[g_2;\dots;g_n]::\Gamma, []::\tau, []::\kappa\rangle
- \\[2ex]
-
- \SEM{~\SHIFT~}{\xi}{G::[g_i;\dots;g_n]::\Gamma}{T::\tau}{K::\kappa}
- & =
- & \langle\xi,
-   [g_i]::[g_{i+1};\dots;g_n]::\Gamma,
-   (T\cup\MAPFUN{\GOALOFFUN}{\FILTERFUN{\ISOPENFUN}{G}}\cup K)::\tau,
-   []::\kappa\rangle
- \\[2ex]
-
- \SEM{~\MERGE~}{\xi}{G::[g_i;\dots;g_n]::\Gamma}{T::\tau}{K::\kappa}
- & =
- & \langle\xi,
-   (T
-    \cup\FILTERFUN{\ISOPENFUN}{G}
-    \cup[g_i;\dots;g_n]
-    \cup\MAPFUN{\mathtt{Open}}{K})::\Gamma,
-   \tau,
-   \kappa\rangle
- \\[2ex]
-
- \SEM{\GOTO{n}{C}}{\xi}{\Gamma}{\tau}{\kappa}
- & = 
- & \langle \xi',\Gamma',\tau',\kappa' \rangle
- \\[1ex]
-
- & & \mathit{where} ~
- \langle \xi', []::\Gamma', []::\tau', []::\kappa' \rangle
- = \SEM{C}{\xi}{[\OPEN{n}]::\Gamma}{[]::\tau}{[]::\kappa}
- \\[2ex]
-
-\end{array}
-\]
+\input{body.tex}
 
 \end{document}