doc-src/IsarRef/Thy/document/ML_Tactic.tex
author ballarin
Tue, 28 Oct 2008 11:03:07 +0100
changeset 28699 32b6a8f12c1c
parent 27249 f339dc43ce9f
child 30172 afdf7808cfd0
permissions -rw-r--r--
Removed 'includes meta_term_syntax' and 'includes meta_conjunction_syntax'.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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
%
26852
a31203f58b20 misc tuning;
wenzelm
parents: 26846
diff changeset
    23
\isamarkupchapter{ML tactic expressions%
26846
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
26902
8db1e960d636 updated generated file;
wenzelm
parents: 26852
diff changeset
    29
  in unstructured sequences of \hyperlink{command.apply}{\mbox{\isa{\isacommand{apply}}}} commands.
26846
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,
26902
8db1e960d636 updated generated file;
wenzelm
parents: 26852
diff changeset
    41
  method \hyperlink{method.simp}{\mbox{\isa{simp}}} replaces all of \verb|simp_tac|~/ \verb|asm_simp_tac|~/ \verb|full_simp_tac|~/ \verb|asm_full_simp_tac|, there
26846
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.\
27249
f339dc43ce9f updated generated file;
wenzelm
parents: 27210
diff changeset
    63
  \verb|res_inst_tac|).
26846
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
26907
75466ad27dd7 updated generated file;
wenzelm
parents: 26902
diff changeset
    70
  Basically, the set of Isar tactic emulations \hyperlink{method.rule-tac}{\mbox{\isa{rule{\isacharunderscore}tac}}},
75466ad27dd7 updated generated file;
wenzelm
parents: 26902
diff changeset
    71
  \hyperlink{method.erule-tac}{\mbox{\isa{erule{\isacharunderscore}tac}}}, \hyperlink{method.drule-tac}{\mbox{\isa{drule{\isacharunderscore}tac}}}, \hyperlink{method.frule-tac}{\mbox{\isa{frule{\isacharunderscore}tac}}} (see
26846
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
26902
8db1e960d636 updated generated file;
wenzelm
parents: 26852
diff changeset
    75
  use the plain \hyperlink{method.rule}{\mbox{\isa{rule}}} method (see
26846
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
26902
8db1e960d636 updated generated file;
wenzelm
parents: 26852
diff changeset
    77
  \hyperlink{method.erule}{\mbox{\isa{erule}}}, \hyperlink{method.drule}{\mbox{\isa{drule}}}, \hyperlink{method.frule}{\mbox{\isa{frule}}} (see
26846
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
26907
75466ad27dd7 updated generated file;
wenzelm
parents: 26902
diff changeset
    79
  only supported by the actual \hyperlink{method.rule-tac}{\mbox{\isa{rule{\isacharunderscore}tac}}} version.
26846
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}} \\
27249
f339dc43ce9f updated generated file;
wenzelm
parents: 27210
diff changeset
    88
    \verb|res_inst_tac|~\isa{{\isachardoublequote}ctxt\ {\isacharbrackleft}{\isacharparenleft}x\isactrlsub {\isadigit{1}}{\isacharcomma}\ t\isactrlsub {\isadigit{1}}{\isacharparenright}{\isacharcomma}\ {\isasymdots}{\isacharbrackright}\ a\ {\isadigit{1}}{\isachardoublequote}} & &
26846
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}} \\
27249
f339dc43ce9f updated generated file;
wenzelm
parents: 27210
diff changeset
    92
    \verb|res_inst_tac|~\isa{{\isachardoublequote}ctxt\ {\isacharbrackleft}{\isacharparenleft}x\isactrlsub {\isadigit{1}}{\isacharcomma}\ t\isactrlsub {\isadigit{1}}{\isacharparenright}{\isacharcomma}\ {\isasymdots}{\isacharbrackright}\ a\ i{\isachardoublequote}} & &
26846
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
26902
8db1e960d636 updated generated file;
wenzelm
parents: 26852
diff changeset
    98
  changing the order of subgoals with \hyperlink{command.defer}{\mbox{\isa{\isacommand{defer}}}} or \hyperlink{command.prefer}{\mbox{\isa{\isacommand{prefer}}}} (see \secref{sec:tactic-commands}).%
26846
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.\
26902
8db1e960d636 updated generated file;
wenzelm
parents: 26852
diff changeset
   108
  \cite{isabelle-ref}) are all covered by the \hyperlink{method.simp}{\mbox{\isa{simp}}} and
26907
75466ad27dd7 updated generated file;
wenzelm
parents: 26902
diff changeset
   109
  \hyperlink{method.simp-all}{\mbox{\isa{simp{\isacharunderscore}all}}} methods (see \secref{sec:simplifier}).  Note that
26846
2e6726015771 removed obsolete conversion guide -- converted only section on tactics;
wenzelm
parents:
diff changeset
   110
  there is no individual goal addressing available, simplification
26902
8db1e960d636 updated generated file;
wenzelm
parents: 26852
diff changeset
   111
  acts either on the first goal (\hyperlink{method.simp}{\mbox{\isa{simp}}}) or all goals
26907
75466ad27dd7 updated generated file;
wenzelm
parents: 26902
diff changeset
   112
  (\hyperlink{method.simp-all}{\mbox{\isa{simp{\isacharunderscore}all}}}).
26846
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}
26902
8db1e960d636 updated generated file;
wenzelm
parents: 26852
diff changeset
   116
    \verb|asm_full_simp_tac|~\isa{{\isachardoublequote}{\isacharat}{\isacharbraceleft}simpset{\isacharbraceright}\ {\isadigit{1}}{\isachardoublequote}} & & \hyperlink{method.simp}{\mbox{\isa{simp}}} \\
26907
75466ad27dd7 updated generated file;
wenzelm
parents: 26902
diff changeset
   117
    \verb|ALLGOALS|~(\verb|asm_full_simp_tac|~\isa{{\isachardoublequote}{\isacharat}{\isacharbraceleft}simpset{\isacharbraceright}{\isachardoublequote}}) & & \hyperlink{method.simp-all}{\mbox{\isa{simp{\isacharunderscore}all}}} \\[0.5ex]
26902
8db1e960d636 updated generated file;
wenzelm
parents: 26852
diff changeset
   118
    \verb|simp_tac|~\isa{{\isachardoublequote}{\isacharat}{\isacharbraceleft}simpset{\isacharbraceright}\ {\isadigit{1}}{\isachardoublequote}} & & \hyperlink{method.simp}{\mbox{\isa{simp}}}~\isa{{\isachardoublequote}{\isacharparenleft}no{\isacharunderscore}asm{\isacharparenright}{\isachardoublequote}} \\
8db1e960d636 updated generated file;
wenzelm
parents: 26852
diff changeset
   119
    \verb|asm_simp_tac|~\isa{{\isachardoublequote}{\isacharat}{\isacharbraceleft}simpset{\isacharbraceright}\ {\isadigit{1}}{\isachardoublequote}} & & \hyperlink{method.simp}{\mbox{\isa{simp}}}~\isa{{\isachardoublequote}{\isacharparenleft}no{\isacharunderscore}asm{\isacharunderscore}simp{\isacharparenright}{\isachardoublequote}} \\
8db1e960d636 updated generated file;
wenzelm
parents: 26852
diff changeset
   120
    \verb|full_simp_tac|~\isa{{\isachardoublequote}{\isacharat}{\isacharbraceleft}simpset{\isacharbraceright}\ {\isadigit{1}}{\isachardoublequote}} & & \hyperlink{method.simp}{\mbox{\isa{simp}}}~\isa{{\isachardoublequote}{\isacharparenleft}no{\isacharunderscore}asm{\isacharunderscore}use{\isacharparenright}{\isachardoublequote}} \\
8db1e960d636 updated generated file;
wenzelm
parents: 26852
diff changeset
   121
    \verb|asm_lr_simp_tac|~\isa{{\isachardoublequote}{\isacharat}{\isacharbraceleft}simpset{\isacharbraceright}\ {\isadigit{1}}{\isachardoublequote}} & & \hyperlink{method.simp}{\mbox{\isa{simp}}}~\isa{{\isachardoublequote}{\isacharparenleft}asm{\isacharunderscore}lr{\isacharparenright}{\isachardoublequote}} \\
26846
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
26902
8db1e960d636 updated generated file;
wenzelm
parents: 26852
diff changeset
   134
  Isar methods usually share the same base name, such as \hyperlink{method.blast}{\mbox{\isa{blast}}}, \hyperlink{method.fast}{\mbox{\isa{fast}}}, \hyperlink{method.clarify}{\mbox{\isa{clarify}}} etc.\ (see
26846
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,
26902
8db1e960d636 updated generated file;
wenzelm
parents: 26852
diff changeset
   170
  arbitrary ML tactic code may be invoked via the \hyperlink{method.tactic}{\mbox{\isa{tactic}}}
26846
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
26907
75466ad27dd7 updated generated file;
wenzelm
parents: 26902
diff changeset
   196
  all goals internally, notably \hyperlink{method.simp-all}{\mbox{\isa{simp{\isacharunderscore}all}}} (see
26846
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%
26902
8db1e960d636 updated generated file;
wenzelm
parents: 26852
diff changeset
   203
\verb|  (resolve_tac \<dots>))|, is usually better expressed using the \hyperlink{method.intro}{\mbox{\isa{intro}}} and \hyperlink{method.elim}{\mbox{\isa{elim}}} methods of Isar (see
26846
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: