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