]> matita.cs.unibo.it Git - helm.git/commitdiff
fixed some type error
authorStefano Zacchiroli <zack@upsilon.cc>
Tue, 25 Oct 2005 15:36:46 +0000 (15:36 +0000)
committerStefano Zacchiroli <zack@upsilon.cc>
Tue, 25 Oct 2005 15:36:46 +0000 (15:36 +0000)
helm/ocaml/tactics/doc/main.tex

index 15091f009652379c7899f998d1482bd4ec694e1a..0680231a85ef725abfb8b96e430c33cbd76650bd 100644 (file)
@@ -1,4 +1,4 @@
-\documentclass[a4paper,draft]{article}
+\documentclass[a4paper]{article}
 
 \usepackage{a4wide}
 \usepackage{pifont}
@@ -23,7 +23,7 @@
 \newcommand{\POS}[1]{\ensuremath{#1\mbox{\textbf{:}}}}
 \newcommand{\MERGE}{\ensuremath{\mbox{\textbf{]}}}}
 \newcommand{\FOCUS}[1]{\ensuremath{\mathtt{focus}~#1}}
-\newcommand{\ENDFOCUS}{\ensuremath{\mathtt{unfocus}}}
+\newcommand{\UNFOCUS}{\ensuremath{\mathtt{unfocus}}}
 \newcommand{\SKIP}{\MATHTT{skip}}
 \newcommand{\TACTIC}[1]{\ensuremath{\mathtt{tactic}~#1}}
 
@@ -42,7 +42,7 @@
 \newcommand{\ENTRY}[4]{\langle#1,#2,#3,#4\rangle}
 \newcommand{\TSEM}[3]{\TSEMOP{#1}_{#2,#3}}
 
-\newcommand{\GIN}[1][1]{\ensuremath{[s_{#1};\cdots;s_n]}}
+\newcommand{\GIN}[1][1]{\ensuremath{[l_{#1};\cdots;l_n]}}
 
 \newcommand{\ZEROPOS}{\MATHIT{zero\_pos}}
 \newcommand{\INITPOS}{\MATHIT{init\_pos}}
 \newcommand{\FILTEROPEN}{\MATHIT{filter\_open}}
 \newcommand{\ISOPEN}{\MATHIT{is\_open}}
 \newcommand{\DEEPCLOSE}{\MATHIT{deep\_close}}
+\newcommand{\REMOVEGOALS}{\MATHIT{remove\_goals}}
+\newcommand{\GOALS}{\MATHIT{goals}}
 
 \newcommand{\BRANCHTAG}{\ensuremath{\mathtt{B}}}
-\newcommand{\FOCUSTAG}{\ensuremath{\mathtt{S}}}
+\newcommand{\FOCUSTAG}{\ensuremath{\mathtt{F}}}
 
 \newlength{\sidecondlen}
 \setlength{\sidecondlen}{2cm}
@@ -76,7 +78,8 @@
    &  |  & \POS{i} & \mbox{(relative positioning)} \\
    &  |  & \MERGE & \mbox{(merge)} \\[2ex]
    &  |  & \FOCUS{g_1,\dots,g_n} & \mbox{(absolute positioning)} \\
-   &  |  & \ENDFOCUS & \mbox{(unfocus)} \\[2ex]
+   &  |  & \UNFOCUS & \mbox{(unfocus)} \\[2ex]
+   &  |  & S ~ S & \mbox{(sequential composition)} \\[2ex]
    T & : := & & \mbox{(\textbf{tactics})}\\
      &   & \SKIP & \mbox{(skip)} \\
      & | & \mathtt{reflexivity} & \\
 
 \[
 \begin{array}{rcll}
+ \xi & & & \mbox{(proof status)} \\
+ \mathit{goal} & & & \mbox{(proof goal)} \\[2ex]
+
  \SWITCH & = & \OPEN~\mathit{goal} ~ | ~ \CLOSED~\mathit{goal} & \\
  \mathit{locator} & = & \INT\times\SWITCH & \\
  \mathit{tag} & = & \BRANCHTAG ~ | ~ \FOCUSTAG \\[2ex]
 
- \xi & = & (\INT\times\alpha)~\LIST& \mbox{(metasenv)} \\
  \Gamma & = & \mathit{locator}~\LIST & \mbox{(context)} \\
- \tau & = & \SWITCH~\LIST & \mbox{(todo)} \\
- \kappa & = & \SWITCH~\LIST & \mbox{(dot's future)} \\[2ex]
+ \tau & = & \mathit{locator}~\LIST & \mbox{(todo)} \\
+ \kappa & = & \mathit{locator}~\LIST & \mbox{(dot's future)} \\[2ex]
 
  \mathit{stack} & = & (\Gamma\times\tau\times\kappa\times\mathit{tag})~\LIST
  \\[2ex]
 
 \paragraph{Utilities}
 \begin{itemize}
- \item \ZEROPOS: map $g -> 0, \OPEN~g$
- \item \INITPOS: map $g -> i, \OPEN~g$
- \item \ISFRESH: $\OPEN~g, 0 -> true | \_ -> false$
- \item \FILTEROPEN: $G -> \FILTER(\ISOPEN,G)$
- \item \DEEPCLOSE: prende uno stack ed un insieme di goal da chiudere, traversa
-  lo stack rimuovendo le occorrenze dei goal da $\tau$ e $\kappa$ e marcandole
-  chiuse in $\Gamma$
+ \item $\ZEROPOS([g_1;\cdots;g_n]) =
+  [\langle 0,\OPEN~g_1\rangle;\cdots;\langle 0,\OPEN~g_n\rangle]$
+ \item $\INITPOS([\langle i_1,s_1\rangle;\cdots;\langle i_n,s_n\rangle]) =
+  [\langle 1,\OPEN~s_1\rangle;\cdots;\langle n,\OPEN~s_n\rangle]$
+ \item $\ISFRESH(s) =
+  \left\{
+  \begin{array}{ll}
+   \mathit{true} & \mathrm{if} ~ s = \langle n, \OPEN~g\rangle\land n > 0 \\
+   \mathit{false} & \mathrm{otherwise} \\
+  \end{array}
+  \right.$
+ \item $\FILTEROPEN(\mathit{locs})=
+  \left\{
+  \begin{array}{ll}
+   [] & \mathrm{if}~\mathit{locs} = [] \\
+   \langle i,\OPEN~g\rangle :: \FILTEROPEN(\mathit{tl})
+   & \mathrm{if}~\mathit{locs} = \langle i,\OPEN~g\rangle :: \mathit{tl} \\
+   \FILTEROPEN(\mathit{tl})
+   & \mathrm{if}~\mathit{locs} = \mathit{hd} :: \mathit{tl} \\
+  \end{array}
+  \right.$
+ \item $\REMOVEGOALS(G,\mathit{locs}) =
+  \left\{
+  \begin{array}{ll}
+   [] & \mathrm{if}~\mathit{locs} = [] \\
+   \REMOVEGOALS(G,\mathit{tl})
+   & \mathrm{if}~\mathit{locs} = \langle i,\OPEN~g\rangle :: \mathit{tl}
+     \land g\in G\\
+   hd :: \REMOVEGOALS(G,\mathit{tl})
+   & \mathrm{if}~\mathit{locs} = \mathit{hd} :: \mathit{tl} \\
+  \end{array}
+  \right.$
+ \item $\DEEPCLOSE(G,S)$: (intuition) given a set of goals $G$ and a stack $S$
+  it returns a new stack $S'$ identical to the given one with the exceptions
+  that each locator whose goal is in $G$ is marked as closed in $\Gamma$ stack
+  components and removed from $\tau$ and $\kappa$ components.
+ \item $\GOALS(S)$: (inutition) return all goals appearing in whatever position
+  on a given stack $S$.
 \end{itemize}
 
 \paragraph{Invariants}
 \begin{itemize}
- \item $\forall \ENTRY{\Gamma}{\tau}{\kappa}{t}, \forall s \in\tau\cup\kappa,
-  \exists g, s = \OPEN~g$ (i goal in $\tau$ e $\kappa$ sono aperti)
- \item la lista dei goal nel metasenv contiene tutti e soli i goal presenti
-  sullo stack
- \item lo stack puo' contenere goal duplicati nel caso di uso della select
+ \item $\forall~\mathrm{entry}~\ENTRY{\Gamma}{\tau}{\kappa}{t}, \forall s
+  \in\tau\cup\kappa, \exists g, s = \OPEN~g$ (each locator on the stack in
+  $\tau$ and $\kappa$ components has an \OPEN~switch).
+ \item Unless \FOCUS{} is used the stack contains no duplicate goals.
 \end{itemize}
 
 \subsection{Semantics}
  & =
  & \langle
    \xi_n,
-   \ENTRY{\ZEROPOS(G^o_n)}{\tau\setminus G^c_n}{\kappa\setminus G^o_n}{t}
+   \ENTRY{\Gamma'}{\tau'}{\kappa'}{t}
+%    \ENTRY{\ZEROPOS(G^o_n)}{\tau\setminus G^c_n}{\kappa\setminus G^o_n}{t}
    :: \DEEPCLOSE(G^c_n,S)
    \rangle
  \\[1ex]
-
  \multicolumn{3}{l}{\hspace{\sidecondlen}\mathit{where} ~
+  \Gamma' = \ZEROPOS(G^o_n)
+  \land \tau' = \REMOVEGOALS(G^c_n,\tau)
+  \land \kappa' = \REMOVEGOALS(G^o_n,\kappa)
+ }
+ \\[1ex]
+ \multicolumn{3}{l}{\hspace{\sidecondlen}\mathit{and} ~
  \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
-  & s_{i+1}\in G^c_i \\
+  & l_{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
-  & s_{i+1}\not\in G^c_i \\[1ex]
-  & & \mathit{where} ~ \langle\xi,G^o,G^c\rangle=\TSEM{T}{\xi_i}{s_{i+1}}
-  \\
+  & l_{i+1}\not\in G^c_i \\[1ex]
+  & & \mathit{where} ~ \langle\xi,G^o,G^c\rangle=\TSEM{T}{\xi_i}{l_{i+1}} \\
  \end{array}
  \right.
  }
- \\[2ex]
+ \\[6ex]
 
  \SEM{~\DOT~}{\ENTRY{\Gamma}{\tau}{\kappa}{t}::S}
  & =
- & \langle \xi, \ENTRY{s_1}{\tau}{\GIN[2]\cup\kappa}{t}::S \rangle
+ & \langle \xi, \ENTRY{l_1}{\tau}{\GIN[2]\cup\kappa}{t}::S \rangle
  \\[1ex]
- & & \mathrm{where} ~ \FILTEROPEN(\Gamma)=\GIN
+ & & \mathrm{where} ~ \FILTEROPEN(\Gamma)=\GIN \land n\geq 1
  \\[2ex]
 
- \SEM{~\DOT~}{\ENTRY{[]}{\tau}{s::\kappa}{t}::S}
+ \SEM{~\DOT~}{\ENTRY{\Gamma}{\tau}{l::\kappa}{t}::S}
  & =
- & \langle \xi, \ENTRY{\Gamma}{\tau}{\kappa}{t}::S \rangle
+ & \langle \xi, \ENTRY{[l]}{\tau}{\kappa}{t}::S \rangle
+ \\[1ex]
+ & & \mathrm{where} ~ \FILTEROPEN(\Gamma)=[]
  \\[2ex]
 
  \SEM{~\SEMICOLON~}{S} & = & \langle \xi, S \rangle \\[1ex]
  \SEM{~\BRANCH~}{\ENTRY{\GIN}{\tau}{\kappa}{t}::S}
  \quad 
  & =
- & \langle\xi, \ENTRY{s_1'}{[]}{[]}{\BRANCHTAG}
-   ::\ENTRY{[s_2';\cdots;s_n']}{\tau}{\kappa}{t}::S
+ & \langle\xi, \ENTRY{[l_1']}{[]}{[]}{\BRANCHTAG}
+   ::\ENTRY{[l_2';\cdots;l_n']}{\tau}{\kappa}{t}::S
  \\[1ex]
- & & \mathrm{where} ~ n\geq 2 ~ \land ~ \INITPOS(\GIN)=[s_1';\cdots;s_n']
+ & & \mathrm{where} ~ n\geq 2 ~ \land ~ \INITPOS(\GIN)=[l_1';\cdots;l_n']
  \\[2ex]
 
  \SEM{~\SHIFT~}
-  {\ENTRY{\Gamma}{\tau}{\kappa}{\BRANCHTAG}::\ENTRY{\GIN}{\tau'}{\kappa'}{t}::S}
+  {\ENTRY{\Gamma}{\tau}{\kappa}{\BRANCHTAG}::\ENTRY{\GIN}{\tau'}{\kappa'}{t'}
+  ::S}
  & =
  & \langle
-   \xi, \ENTRY{s_1}{[]}{[]}{\BRANCHTAG}
-       ::\ENTRY{\GIN[2]}{\tau'\cup\FILTEROPEN(\Gamma)}{\kappa'}{t}::S
+   \xi, \ENTRY{[l_1]}{\tau\cup\FILTEROPEN(\Gamma)}{[]}{\BRANCHTAG}
+       ::\ENTRY{\GIN[2]}{\tau'}{\kappa'}{t'}::S
    \rangle
+ \\[1ex]
+ & & \mathrm{where} ~ n\geq 1
  \\[2ex]
 
- \SEM{\POS{i}}
-  {\ENTRY{[s]}{[]}{[]}{\BRANCHTAG}::\ENTRY{\Gamma'}{\tau'}{\kappa'}{t'}::S}
+ \SEM{~\POS{i}~}
+  {\ENTRY{[l]}{[]}{[]}{\BRANCHTAG}::\ENTRY{\Gamma'}{\tau'}{\kappa'}{t'}::S}
  & =
- & \langle \xi, \ENTRY{s_i}{[]}{[]}{\BRANCHTAG}
-   ::\ENTRY{s_i :: (\Gamma'\setminus [s_i])}{\tau'}{\kappa'}{t'}::S \rangle
+ & \langle \xi, \ENTRY{[l_i]}{[]}{[]}{\BRANCHTAG}
+   ::\ENTRY{l :: (\Gamma'\setminus [l_i])}{\tau'}{\kappa'}{t'}::S \rangle
  \\[1ex]
- & & \mathrm{where} ~ \langle i,s'\rangle = s_i\in \Gamma'~\land~\ISFRESH(s)
+ & & \mathrm{where} ~ \langle i,l'\rangle = l_i\in \Gamma'~\land~\ISFRESH(l)
  \\[2ex]
 
- \SEM{\POS{i}}
+ \SEM{~\POS{i}~}
   {\ENTRY{\Gamma}{\tau}{\kappa}{\BRANCHTAG}
   ::\ENTRY{\Gamma'}{\tau'}{\kappa'}{t'}::S}
  & =
- & \langle \xi, \ENTRY{s_i}{[]}{[]}{\BRANCHTAG}
- ::\ENTRY{\Gamma'\setminus [s_i]}{\tau'\cup\FILTEROPEN(\Gamma)}{\kappa'}{t'}::S
+ & \langle \xi, \ENTRY{[l_i]}{[]}{[]}{\BRANCHTAG}
+ ::\ENTRY{\Gamma'\setminus [l_i]}{\tau'\cup\FILTEROPEN(\Gamma)}{\kappa'}{t'}::S
    \rangle
  \\[1ex]
- & & \mathrm{where} ~ \langle i, s'\rangle = s_i\in \Gamma'
+ & & \mathrm{where} ~ \langle i, l'\rangle = l_i\in \Gamma'
  \\[2ex]
 
  \SEM{~\MERGE~}
 
  \SEM{\FOCUS{g_1,\dots,g_n}}{S}
  & = 
- & \langle \xi, \ENTRY{[\OPEN~g_1;\cdots;\OPEN~g_n]}{[]}{[]}{\FOCUSTAG}::S
+ & \langle \xi, \ENTRY{[\OPEN~g_1;\cdots;\OPEN~g_n]}{[]}{[]}{\FOCUSTAG}
+   ::\DEEPCLOSE(S)
    \rangle
  \\[1ex]
  & & \mathrm{where} ~
- \forall ~ i=1,\dots,n,~\exists~\alpha_i,n_i,~\langle n_i,\alpha_i\rangle\in\xi
+ \forall i=1,\dots,n,~g_i\in\GOALS(S)
  \\[2ex]
 
- \SEM{\ENDFOCUS}{\ENTRY{[]}{[]}{[]}{\FOCUSTAG}::S}
+ \SEM{\UNFOCUS}{\ENTRY{[]}{[]}{[]}{\FOCUSTAG}::S}
  & = 
  & \langle \xi, S\rangle \\[2ex]