diff -r 1884c40f1539 -r e467ae7aa808 src/Doc/Implementation/Tactic.thy --- a/src/Doc/Implementation/Tactic.thy Sun Oct 18 21:30:01 2015 +0200 +++ b/src/Doc/Implementation/Tactic.thy Sun Oct 18 22:57:09 2015 +0200 @@ -93,14 +93,14 @@ maps a given goal state (represented as a theorem, cf.\ \secref{sec:tactical-goals}) to a lazy sequence of potential successor states. The underlying sequence implementation is lazy - both in head and tail, and is purely functional in \emph{not} + both in head and tail, and is purely functional in \<^emph>\not\ supporting memoing.\footnote{The lack of memoing and the strict nature of ML requires some care when working with low-level sequence operations, to avoid duplicate or premature evaluation of results. It also means that modified runtime behavior, such as timeout, is very hard to achieve for general tactics.} - An \emph{empty result sequence} means that the tactic has failed: in + An \<^emph>\empty result sequence\ means that the tactic has failed: in a compound tactic expression other tactics might be tried instead, or the whole refinement step might fail outright, producing a toplevel error message in the end. When implementing tactics from @@ -108,7 +108,7 @@ mapping regular error conditions to an empty result; only serious faults should emerge as exceptions. - By enumerating \emph{multiple results}, a tactic can easily express + By enumerating \<^emph>\multiple results\, a tactic can easily express the potential outcome of an internal search process. There are also combinators for building proof tools that involve search systematically, see also \secref{sec:tacticals}. @@ -120,7 +120,7 @@ must not change the main conclusion (apart from instantiating schematic goal variables). - Tactics with explicit \emph{subgoal addressing} are of the form + Tactics with explicit \<^emph>\subgoal addressing\ are of the form @{text "int \ tactic"} and may be applied to a particular subgoal (counting from 1). If the subgoal number is out of range, the tactic should fail with an empty result sequence, but must not raise @@ -229,14 +229,14 @@ subsection \Resolution and assumption tactics \label{sec:resolve-assume-tac}\ -text \\emph{Resolution} is the most basic mechanism for refining a +text \\<^emph>\Resolution\ is the most basic mechanism for refining a subgoal using a theorem as object-level rule. - \emph{Elim-resolution} is particularly suited for elimination rules: + \<^emph>\Elim-resolution\ is particularly suited for elimination rules: it resolves with a rule, proves its first premise by assumption, and finally deletes that assumption from any new subgoals. - \emph{Destruct-resolution} is like elim-resolution, but the given + \<^emph>\Destruct-resolution\ is like elim-resolution, but the given destruction rules are first turned into canonical elimination - format. \emph{Forward-resolution} is like destruct-resolution, but + format. \<^emph>\Forward-resolution\ is like destruct-resolution, but without deleting the selected assumption. The @{text "r/e/d/f"} naming convention is maintained for several different kinds of resolution rules and tactics. @@ -520,7 +520,7 @@ section \Tacticals \label{sec:tacticals}\ -text \A \emph{tactical} is a functional combinator for building up +text \A \<^emph>\tactical\ is a functional combinator for building up complex tactics from simpler ones. Common tacticals perform sequential composition, disjunctive choice, iteration, or goal addressing. Various search strategies may be expressed via @@ -572,7 +572,7 @@ \<^descr> @{text "tac\<^sub>1"}~@{ML_op APPEND}~@{text "tac\<^sub>2"} concatenates the possible results of @{text "tac\<^sub>1"} and @{text "tac\<^sub>2"}. Unlike - @{ML_op "ORELSE"} there is \emph{no commitment} to either tactic, so + @{ML_op "ORELSE"} there is \<^emph>\no commitment\ to either tactic, so @{ML_op "APPEND"} helps to avoid incompleteness during search, at the cost of potential inefficiencies. @@ -688,7 +688,7 @@ @{ML_type "int -> tactic"} can be used together with tacticals that act like ``subgoal quantifiers'': guided by success of the body tactic a certain range of subgoals is covered. Thus the body tactic - is applied to \emph{all} subgoals, \emph{some} subgoal etc. + is applied to \<^emph>\all\ subgoals, \<^emph>\some\ subgoal etc. Suppose that the goal state has @{text "n \ 0"} subgoals. Many of these tacticals address subgoal ranges counting downwards from