| author | wenzelm |
| Thu, 08 May 2008 12:29:18 +0200 | |
| changeset 26849 | df50bc1249d7 |
| parent 26846 | 2e6726015771 |
| child 26852 | a31203f58b20 |
| permissions | -rw-r--r-- |
|
26846
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
1 |
% |
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
2 |
\begin{isabellebody}%
|
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
3 |
\def\isabellecontext{ML{\isacharunderscore}Tactic}%
|
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
4 |
% |
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
5 |
\isadelimtheory |
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
6 |
\isanewline |
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
7 |
\isanewline |
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
8 |
% |
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
9 |
\endisadelimtheory |
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
10 |
% |
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
11 |
\isatagtheory |
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
12 |
\isacommand{theory}\isamarkupfalse%
|
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
13 |
\ ML{\isacharunderscore}Tactic\isanewline
|
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
14 |
\isakeyword{imports}\ Main\isanewline
|
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
15 |
\isakeyword{begin}%
|
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
16 |
\endisatagtheory |
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
17 |
{\isafoldtheory}%
|
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
18 |
% |
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
19 |
\isadelimtheory |
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
20 |
% |
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
21 |
\endisadelimtheory |
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
22 |
% |
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
23 |
\isamarkupchapter{ML tactic expressions \label{sec:conv-tac}%
|
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
24 |
} |
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
25 |
\isamarkuptrue% |
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
26 |
% |
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
27 |
\begin{isamarkuptext}%
|
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
28 |
Isar Proof methods closely resemble traditional tactics, when used |
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
29 |
in unstructured sequences of \mbox{\isa{\isacommand{apply}}} commands.
|
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
30 |
Isabelle/Isar provides emulations for all major ML tactics of |
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
31 |
classic Isabelle --- mostly for the sake of easy porting of existing |
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
32 |
developments, as actual Isar proof texts would demand much less |
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
33 |
diversity of proof methods. |
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
34 |
|
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
35 |
Unlike tactic expressions in ML, Isar proof methods provide proper |
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
36 |
concrete syntax for additional arguments, options, modifiers etc. |
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
37 |
Thus a typical method text is usually more concise than the |
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
38 |
corresponding ML tactic. Furthermore, the Isar versions of classic |
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
39 |
Isabelle tactics often cover several variant forms by a single |
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
40 |
method with separate options to tune the behavior. For example, |
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
41 |
method \mbox{\isa{simp}} replaces all of \verb|simp_tac|~/ \verb|asm_simp_tac|~/ \verb|full_simp_tac|~/ \verb|asm_full_simp_tac|, there
|
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
42 |
is also concrete syntax for augmenting the Simplifier context (the |
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
43 |
current ``simpset'') in a convenient way.% |
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
44 |
\end{isamarkuptext}%
|
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
45 |
\isamarkuptrue% |
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
46 |
% |
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
47 |
\isamarkupsection{Resolution tactics%
|
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
48 |
} |
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
49 |
\isamarkuptrue% |
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
50 |
% |
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
51 |
\begin{isamarkuptext}%
|
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
52 |
Classic Isabelle provides several variant forms of tactics for |
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
53 |
single-step rule applications (based on higher-order resolution). |
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
54 |
The space of resolution tactics has the following main dimensions. |
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
55 |
|
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
56 |
\begin{enumerate}
|
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
57 |
|
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
58 |
\item The ``mode'' of resolution: intro, elim, destruct, or forward |
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
59 |
(e.g.\ \verb|resolve_tac|, \verb|eresolve_tac|, \verb|dresolve_tac|, |
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
60 |
\verb|forward_tac|). |
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
61 |
|
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
62 |
\item Optional explicit instantiation (e.g.\ \verb|resolve_tac| vs.\ |
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
63 |
\verb|res_inst_tac|). |
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
64 |
|
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
65 |
\item Abbreviations for singleton arguments (e.g.\ \verb|resolve_tac| |
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
66 |
vs.\ \verb|rtac|). |
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
67 |
|
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
68 |
\end{enumerate}
|
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
69 |
|
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
70 |
Basically, the set of Isar tactic emulations \mbox{\isa{rule{\isacharunderscore}tac}},
|
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
71 |
\mbox{\isa{erule{\isacharunderscore}tac}}, \mbox{\isa{drule{\isacharunderscore}tac}}, \mbox{\isa{frule{\isacharunderscore}tac}} (see
|
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
72 |
\secref{sec:tactics}) would be sufficient to cover the four modes,
|
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
73 |
either with or without instantiation, and either with single or |
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
74 |
multiple arguments. Although it is more convenient in most cases to |
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
75 |
use the plain \mbox{\isa{rule}} method (see
|
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
76 |
\secref{sec:pure-meth-att}), or any of its ``improper'' variants
|
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
77 |
\mbox{\isa{erule}}, \mbox{\isa{drule}}, \mbox{\isa{frule}} (see
|
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
78 |
\secref{sec:misc-meth-att}). Note that explicit goal addressing is
|
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
79 |
only supported by the actual \mbox{\isa{rule{\isacharunderscore}tac}} version.
|
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
80 |
|
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
81 |
With this in mind, plain resolution tactics correspond to Isar |
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
82 |
methods as follows. |
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
83 |
|
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
84 |
\medskip |
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
85 |
\begin{tabular}{lll}
|
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
86 |
\verb|rtac|~\isa{{\isachardoublequote}a\ {\isadigit{1}}{\isachardoublequote}} & & \isa{{\isachardoublequote}rule\ a{\isachardoublequote}} \\
|
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
87 |
\verb|resolve_tac|~\isa{{\isachardoublequote}{\isacharbrackleft}a\isactrlsub {\isadigit{1}}{\isacharcomma}\ {\isasymdots}{\isacharbrackright}\ {\isadigit{1}}{\isachardoublequote}} & & \isa{{\isachardoublequote}rule\ a\isactrlsub {\isadigit{1}}\ {\isasymdots}{\isachardoublequote}} \\
|
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
88 |
\verb|res_inst_tac|~\isa{{\isachardoublequote}{\isacharbrackleft}{\isacharparenleft}x\isactrlsub {\isadigit{1}}{\isacharcomma}\ t\isactrlsub {\isadigit{1}}{\isacharparenright}{\isacharcomma}\ {\isasymdots}{\isacharbrackright}\ a\ {\isadigit{1}}{\isachardoublequote}} & &
|
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
89 |
\isa{{\isachardoublequote}rule{\isacharunderscore}tac\ x\isactrlsub {\isadigit{1}}\ {\isacharequal}\ t\isactrlsub {\isadigit{1}}\ {\isasymAND}\ {\isasymdots}\ {\isasymIN}\ a{\isachardoublequote}} \\[0.5ex]
|
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
90 |
\verb|rtac|~\isa{{\isachardoublequote}a\ i{\isachardoublequote}} & & \isa{{\isachardoublequote}rule{\isacharunderscore}tac\ {\isacharbrackleft}i{\isacharbrackright}\ a{\isachardoublequote}} \\
|
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
91 |
\verb|resolve_tac|~\isa{{\isachardoublequote}{\isacharbrackleft}a\isactrlsub {\isadigit{1}}{\isacharcomma}\ {\isasymdots}{\isacharbrackright}\ i{\isachardoublequote}} & & \isa{{\isachardoublequote}rule{\isacharunderscore}tac\ {\isacharbrackleft}i{\isacharbrackright}\ a\isactrlsub {\isadigit{1}}\ {\isasymdots}{\isachardoublequote}} \\
|
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
92 |
\verb|res_inst_tac|~\isa{{\isachardoublequote}{\isacharbrackleft}{\isacharparenleft}x\isactrlsub {\isadigit{1}}{\isacharcomma}\ t\isactrlsub {\isadigit{1}}{\isacharparenright}{\isacharcomma}\ {\isasymdots}{\isacharbrackright}\ a\ i{\isachardoublequote}} & &
|
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
93 |
\isa{{\isachardoublequote}rule{\isacharunderscore}tac\ {\isacharbrackleft}i{\isacharbrackright}\ x\isactrlsub {\isadigit{1}}\ {\isacharequal}\ t\isactrlsub {\isadigit{1}}\ {\isasymAND}\ {\isasymdots}\ {\isasymIN}\ a{\isachardoublequote}} \\
|
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
94 |
\end{tabular}
|
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
95 |
\medskip |
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
96 |
|
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
97 |
Note that explicit goal addressing may be usually avoided by |
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
98 |
changing the order of subgoals with \mbox{\isa{\isacommand{defer}}} or \mbox{\isa{\isacommand{prefer}}} (see \secref{sec:tactic-commands}).%
|
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
99 |
\end{isamarkuptext}%
|
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
100 |
\isamarkuptrue% |
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
101 |
% |
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
102 |
\isamarkupsection{Simplifier tactics%
|
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
103 |
} |
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
104 |
\isamarkuptrue% |
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
105 |
% |
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
106 |
\begin{isamarkuptext}%
|
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
107 |
The main Simplifier tactics \verb|simp_tac| and variants (cf.\ |
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
108 |
\cite{isabelle-ref}) are all covered by the \mbox{\isa{simp}} and
|
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
109 |
\mbox{\isa{simp{\isacharunderscore}all}} methods (see \secref{sec:simplifier}). Note that
|
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
110 |
there is no individual goal addressing available, simplification |
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
111 |
acts either on the first goal (\mbox{\isa{simp}}) or all goals
|
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
112 |
(\mbox{\isa{simp{\isacharunderscore}all}}).
|
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
113 |
|
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
114 |
\medskip |
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
115 |
\begin{tabular}{lll}
|
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
116 |
\verb|asm_full_simp_tac|~\isa{{\isachardoublequote}{\isacharat}{\isacharbraceleft}simpset{\isacharbraceright}\ {\isadigit{1}}{\isachardoublequote}} & & \mbox{\isa{simp}} \\
|
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
117 |
\verb|ALLGOALS|~(\verb|asm_full_simp_tac|~\isa{{\isachardoublequote}{\isacharat}{\isacharbraceleft}simpset{\isacharbraceright}{\isachardoublequote}}) & & \mbox{\isa{simp{\isacharunderscore}all}} \\[0.5ex]
|
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
118 |
\verb|simp_tac|~\isa{{\isachardoublequote}{\isacharat}{\isacharbraceleft}simpset{\isacharbraceright}\ {\isadigit{1}}{\isachardoublequote}} & & \mbox{\isa{simp}}~\isa{{\isachardoublequote}{\isacharparenleft}no{\isacharunderscore}asm{\isacharparenright}{\isachardoublequote}} \\
|
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
119 |
\verb|asm_simp_tac|~\isa{{\isachardoublequote}{\isacharat}{\isacharbraceleft}simpset{\isacharbraceright}\ {\isadigit{1}}{\isachardoublequote}} & & \mbox{\isa{simp}}~\isa{{\isachardoublequote}{\isacharparenleft}no{\isacharunderscore}asm{\isacharunderscore}simp{\isacharparenright}{\isachardoublequote}} \\
|
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
120 |
\verb|full_simp_tac|~\isa{{\isachardoublequote}{\isacharat}{\isacharbraceleft}simpset{\isacharbraceright}\ {\isadigit{1}}{\isachardoublequote}} & & \mbox{\isa{simp}}~\isa{{\isachardoublequote}{\isacharparenleft}no{\isacharunderscore}asm{\isacharunderscore}use{\isacharparenright}{\isachardoublequote}} \\
|
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
121 |
\verb|asm_lr_simp_tac|~\isa{{\isachardoublequote}{\isacharat}{\isacharbraceleft}simpset{\isacharbraceright}\ {\isadigit{1}}{\isachardoublequote}} & & \mbox{\isa{simp}}~\isa{{\isachardoublequote}{\isacharparenleft}asm{\isacharunderscore}lr{\isacharparenright}{\isachardoublequote}} \\
|
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
122 |
\end{tabular}
|
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
123 |
\medskip% |
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
124 |
\end{isamarkuptext}%
|
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
125 |
\isamarkuptrue% |
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
126 |
% |
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
127 |
\isamarkupsection{Classical Reasoner tactics%
|
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
128 |
} |
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
129 |
\isamarkuptrue% |
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
130 |
% |
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
131 |
\begin{isamarkuptext}%
|
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
132 |
The Classical Reasoner provides a rather large number of variations |
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
133 |
of automated tactics, such as \verb|blast_tac|, \verb|fast_tac|, \verb|clarify_tac| etc.\ (see \cite{isabelle-ref}). The corresponding
|
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
134 |
Isar methods usually share the same base name, such as \mbox{\isa{blast}}, \mbox{\isa{fast}}, \mbox{\isa{clarify}} etc.\ (see
|
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
135 |
\secref{sec:classical}).%
|
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
136 |
\end{isamarkuptext}%
|
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
137 |
\isamarkuptrue% |
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
138 |
% |
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
139 |
\isamarkupsection{Miscellaneous tactics%
|
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
140 |
} |
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
141 |
\isamarkuptrue% |
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
142 |
% |
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
143 |
\begin{isamarkuptext}%
|
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
144 |
There are a few additional tactics defined in various theories of |
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
145 |
Isabelle/HOL, some of these also in Isabelle/FOL or Isabelle/ZF. |
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
146 |
The most common ones of these may be ported to Isar as follows. |
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
147 |
|
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
148 |
\medskip |
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
149 |
\begin{tabular}{lll}
|
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
150 |
\verb|stac|~\isa{{\isachardoublequote}a\ {\isadigit{1}}{\isachardoublequote}} & & \isa{{\isachardoublequote}subst\ a{\isachardoublequote}} \\
|
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
151 |
\verb|hyp_subst_tac|~\isa{{\isadigit{1}}} & & \isa{hypsubst} \\
|
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
152 |
\verb|strip_tac|~\isa{{\isadigit{1}}} & \isa{{\isachardoublequote}{\isasymapprox}{\isachardoublequote}} & \isa{{\isachardoublequote}intro\ strip{\isachardoublequote}} \\
|
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
153 |
\verb|split_all_tac|~\isa{{\isadigit{1}}} & & \isa{{\isachardoublequote}simp\ {\isacharparenleft}no{\isacharunderscore}asm{\isacharunderscore}simp{\isacharparenright}\ only{\isacharcolon}\ split{\isacharunderscore}tupled{\isacharunderscore}all{\isachardoublequote}} \\
|
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
154 |
& \isa{{\isachardoublequote}{\isasymapprox}{\isachardoublequote}} & \isa{{\isachardoublequote}simp\ only{\isacharcolon}\ split{\isacharunderscore}tupled{\isacharunderscore}all{\isachardoublequote}} \\
|
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
155 |
& \isa{{\isachardoublequote}{\isasymlless}{\isachardoublequote}} & \isa{{\isachardoublequote}clarify{\isachardoublequote}} \\
|
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
156 |
\end{tabular}%
|
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
157 |
\end{isamarkuptext}%
|
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
158 |
\isamarkuptrue% |
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
159 |
% |
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
160 |
\isamarkupsection{Tacticals%
|
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
161 |
} |
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
162 |
\isamarkuptrue% |
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
163 |
% |
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
164 |
\begin{isamarkuptext}%
|
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
165 |
Classic Isabelle provides a huge amount of tacticals for combination |
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
166 |
and modification of existing tactics. This has been greatly reduced |
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
167 |
in Isar, providing the bare minimum of combinators only: ``\isa{{\isachardoublequote}{\isacharcomma}{\isachardoublequote}}'' (sequential composition), ``\isa{{\isachardoublequote}{\isacharbar}{\isachardoublequote}}'' (alternative
|
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
168 |
choices), ``\isa{{\isachardoublequote}{\isacharquery}{\isachardoublequote}}'' (try), ``\isa{{\isachardoublequote}{\isacharplus}{\isachardoublequote}}'' (repeat at least
|
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
169 |
once). These are usually sufficient in practice; if all fails, |
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
170 |
arbitrary ML tactic code may be invoked via the \mbox{\isa{tactic}}
|
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
171 |
method (see \secref{sec:tactics}).
|
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
172 |
|
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
173 |
\medskip Common ML tacticals may be expressed directly in Isar as |
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
174 |
follows: |
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
175 |
|
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
176 |
\medskip |
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
177 |
\begin{tabular}{lll}
|
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
178 |
\isa{{\isachardoublequote}tac\isactrlsub {\isadigit{1}}{\isachardoublequote}}~\verb|THEN|~\isa{{\isachardoublequote}tac\isactrlsub {\isadigit{2}}{\isachardoublequote}} & & \isa{{\isachardoublequote}meth\isactrlsub {\isadigit{1}}{\isacharcomma}\ meth\isactrlsub {\isadigit{2}}{\isachardoublequote}} \\
|
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
179 |
\isa{{\isachardoublequote}tac\isactrlsub {\isadigit{1}}{\isachardoublequote}}~\verb|ORELSE|~\isa{{\isachardoublequote}tac\isactrlsub {\isadigit{2}}{\isachardoublequote}} & & \isa{{\isachardoublequote}meth\isactrlsub {\isadigit{1}}\ {\isacharbar}\ meth\isactrlsub {\isadigit{2}}{\isachardoublequote}} \\
|
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
180 |
\verb|TRY|~\isa{tac} & & \isa{{\isachardoublequote}meth{\isacharquery}{\isachardoublequote}} \\
|
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
181 |
\verb|REPEAT1|~\isa{tac} & & \isa{{\isachardoublequote}meth{\isacharplus}{\isachardoublequote}} \\
|
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
182 |
\verb|REPEAT|~\isa{tac} & & \isa{{\isachardoublequote}{\isacharparenleft}meth{\isacharplus}{\isacharparenright}{\isacharquery}{\isachardoublequote}} \\
|
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
183 |
\verb|EVERY|~\isa{{\isachardoublequote}{\isacharbrackleft}tac\isactrlsub {\isadigit{1}}{\isacharcomma}\ {\isasymdots}{\isacharbrackright}{\isachardoublequote}} & & \isa{{\isachardoublequote}meth\isactrlsub {\isadigit{1}}{\isacharcomma}\ {\isasymdots}{\isachardoublequote}} \\
|
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
184 |
\verb|FIRST|~\isa{{\isachardoublequote}{\isacharbrackleft}tac\isactrlsub {\isadigit{1}}{\isacharcomma}\ {\isasymdots}{\isacharbrackright}{\isachardoublequote}} & & \isa{{\isachardoublequote}meth\isactrlsub {\isadigit{1}}\ {\isacharbar}\ {\isasymdots}{\isachardoublequote}} \\
|
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
185 |
\end{tabular}
|
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
186 |
\medskip |
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
187 |
|
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
188 |
\medskip \verb|CHANGED| (see \cite{isabelle-ref}) is usually not
|
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
189 |
required in Isar, since most basic proof methods already fail unless |
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
190 |
there is an actual change in the goal state. Nevertheless, ``\isa{{\isachardoublequote}{\isacharquery}{\isachardoublequote}}'' (try) may be used to accept \emph{unchanged} results as
|
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
191 |
well. |
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
192 |
|
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
193 |
\medskip \verb|ALLGOALS|, \verb|SOMEGOAL| etc.\ (see |
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
194 |
\cite{isabelle-ref}) are not available in Isar, since there is no
|
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
195 |
direct goal addressing. Nevertheless, some basic methods address |
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
196 |
all goals internally, notably \mbox{\isa{simp{\isacharunderscore}all}} (see
|
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
197 |
\secref{sec:simplifier}). Also note that \verb|ALLGOALS| can be
|
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
198 |
often replaced by ``\isa{{\isachardoublequote}{\isacharplus}{\isachardoublequote}}'' (repeat at least once), although
|
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
199 |
this usually has a different operational behavior, such as solving |
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
200 |
goals in a different order. |
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
201 |
|
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
202 |
\medskip Iterated resolution, such as \verb|REPEAT (FIRSTGOAL|\isasep\isanewline% |
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
203 |
\verb| (resolve_tac \<dots>))|, is usually better expressed using the \mbox{\isa{intro}} and \mbox{\isa{elim}} methods of Isar (see
|
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
204 |
\secref{sec:classical}).%
|
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
205 |
\end{isamarkuptext}%
|
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
206 |
\isamarkuptrue% |
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
207 |
% |
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
208 |
\isadelimtheory |
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
209 |
% |
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
210 |
\endisadelimtheory |
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
211 |
% |
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
212 |
\isatagtheory |
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
213 |
\isacommand{end}\isamarkupfalse%
|
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
214 |
% |
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
215 |
\endisatagtheory |
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
216 |
{\isafoldtheory}%
|
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
217 |
% |
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
218 |
\isadelimtheory |
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
219 |
% |
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
220 |
\endisadelimtheory |
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
221 |
\isanewline |
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
222 |
\end{isabellebody}%
|
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
223 |
%%% Local Variables: |
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
224 |
%%% mode: latex |
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
225 |
%%% TeX-master: "root" |
|
2e6726015771
removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff
changeset
|
226 |
%%% End: |