doc-src/IsarRef/Thy/document/Generic.tex
changeset 44237 9cbcab5c780a
parent 44236 f8944cb2468f
child 44238 3f1469de9e47
     1.1 --- a/doc-src/IsarRef/Thy/document/Generic.tex	Sat Jun 11 15:03:31 2011 +0200
     1.2 +++ b/doc-src/IsarRef/Thy/document/Generic.tex	Sat Jun 11 15:36:46 2011 +0200
     1.3 @@ -1656,12 +1656,8 @@
     1.4    \item \hyperlink{method.safe}{\mbox{\isa{safe}}} repeatedly performs safe steps on all subgoals.
     1.5    It is deterministic, with at most one outcome.
     1.6  
     1.7 -  \item \hyperlink{method.clarify}{\mbox{\isa{clarify}}} performs a series of safe steps as follows.
     1.8 -
     1.9 -  No splitting step is applied; for example, the subgoal \isa{{\isaliteral{22}{\isachardoublequote}}A\ {\isaliteral{5C3C616E643E}{\isasymand}}\ B{\isaliteral{22}{\isachardoublequote}}} is left as a conjunction.  Proof by assumption, Modus Ponens,
    1.10 -  etc., may be performed provided they do not instantiate unknowns.
    1.11 -  Assumptions of the form \isa{{\isaliteral{22}{\isachardoublequote}}x\ {\isaliteral{3D}{\isacharequal}}\ t{\isaliteral{22}{\isachardoublequote}}} may be eliminated.  The safe
    1.12 -  wrapper tactical is applied.
    1.13 +  \item \hyperlink{method.clarify}{\mbox{\isa{clarify}}} performs a series of safe steps without
    1.14 +  splitting subgoals; see also \verb|clarify_step_tac|.
    1.15  
    1.16    \item \hyperlink{method.clarsimp}{\mbox{\isa{clarsimp}}} acts like \hyperlink{method.clarify}{\mbox{\isa{clarify}}}, but also does
    1.17    simplification.  Note that if the Simplifier context includes a
    1.18 @@ -1671,6 +1667,53 @@
    1.19  \end{isamarkuptext}%
    1.20  \isamarkuptrue%
    1.21  %
    1.22 +\isamarkupsubsection{Single-step tactics%
    1.23 +}
    1.24 +\isamarkuptrue%
    1.25 +%
    1.26 +\begin{isamarkuptext}%
    1.27 +\begin{matharray}{rcl}
    1.28 +    \indexdef{}{ML}{safe\_step\_tac}\verb|safe_step_tac: Proof.context -> int -> tactic| \\
    1.29 +    \indexdef{}{ML}{inst\_step\_tac}\verb|inst_step_tac: Proof.context -> int -> tactic| \\
    1.30 +    \indexdef{}{ML}{step\_tac}\verb|step_tac: Proof.context -> int -> tactic| \\
    1.31 +    \indexdef{}{ML}{slow\_step\_tac}\verb|slow_step_tac: Proof.context -> int -> tactic| \\
    1.32 +    \indexdef{}{ML}{clarify\_step\_tac}\verb|clarify_step_tac: Proof.context -> int -> tactic| \\
    1.33 +  \end{matharray}
    1.34 +
    1.35 +  These are the primitive tactics behind the (semi)automated proof
    1.36 +  methods of the Classical Reasoner.  By calling them yourself, you
    1.37 +  can execute these procedures one step at a time.
    1.38 +
    1.39 +  \begin{description}
    1.40 +
    1.41 +  \item \verb|safe_step_tac|~\isa{{\isaliteral{22}{\isachardoublequote}}ctxt\ i{\isaliteral{22}{\isachardoublequote}}} performs a safe step on
    1.42 +  subgoal \isa{i}.  The safe wrapper tacticals are applied to a
    1.43 +  tactic that may include proof by assumption or Modus Ponens (taking
    1.44 +  care not to instantiate unknowns), or substitution.
    1.45 +
    1.46 +  \item \verb|inst_step_tac| is like \verb|safe_step_tac|, but allows
    1.47 +  unknowns to be instantiated.
    1.48 +
    1.49 +  \item \verb|step_tac|~\isa{{\isaliteral{22}{\isachardoublequote}}ctxt\ i{\isaliteral{22}{\isachardoublequote}}} is the basic step of the proof
    1.50 +  procedure.  The unsafe wrapper tacticals are applied to a tactic
    1.51 +  that tries \verb|safe_tac|, \verb|inst_step_tac|, or applies an unsafe
    1.52 +  rule from the context.
    1.53 +
    1.54 +  \item \verb|slow_step_tac| resembles \verb|step_tac|, but allows
    1.55 +  backtracking between using safe rules with instantiation (\verb|inst_step_tac|) and using unsafe rules.  The resulting search space
    1.56 +  is larger.
    1.57 +
    1.58 +  \item \verb|clarify_step_tac|~\isa{{\isaliteral{22}{\isachardoublequote}}ctxt\ i{\isaliteral{22}{\isachardoublequote}}} performs a safe step
    1.59 +  on subgoal \isa{i}.  No splitting step is applied; for example,
    1.60 +  the subgoal \isa{{\isaliteral{22}{\isachardoublequote}}A\ {\isaliteral{5C3C616E643E}{\isasymand}}\ B{\isaliteral{22}{\isachardoublequote}}} is left as a conjunction.  Proof by
    1.61 +  assumption, Modus Ponens, etc., may be performed provided they do
    1.62 +  not instantiate unknowns.  Assumptions of the form \isa{{\isaliteral{22}{\isachardoublequote}}x\ {\isaliteral{3D}{\isacharequal}}\ t{\isaliteral{22}{\isachardoublequote}}}
    1.63 +  may be eliminated.  The safe wrapper tactical is applied.
    1.64 +
    1.65 +  \end{description}%
    1.66 +\end{isamarkuptext}%
    1.67 +\isamarkuptrue%
    1.68 +%
    1.69  \isamarkupsection{Object-logic setup \label{sec:object-logic}%
    1.70  }
    1.71  \isamarkuptrue%