doc-src/IsarRef/Thy/Generic.thy
changeset 43366 9cbcab5c780a
parent 43365 f8944cb2468f
child 43367 3f1469de9e47
equal deleted inserted replaced
43365:f8944cb2468f 43366:9cbcab5c780a
  1066   \begin{description}
  1066   \begin{description}
  1067 
  1067 
  1068   \item @{method safe} repeatedly performs safe steps on all subgoals.
  1068   \item @{method safe} repeatedly performs safe steps on all subgoals.
  1069   It is deterministic, with at most one outcome.
  1069   It is deterministic, with at most one outcome.
  1070 
  1070 
  1071   \item @{method clarify} performs a series of safe steps as follows.
  1071   \item @{method clarify} performs a series of safe steps without
  1072 
  1072   splitting subgoals; see also @{ML clarify_step_tac}.
  1073   No splitting step is applied; for example, the subgoal @{text "A \<and>
       
  1074   B"} is left as a conjunction.  Proof by assumption, Modus Ponens,
       
  1075   etc., may be performed provided they do not instantiate unknowns.
       
  1076   Assumptions of the form @{text "x = t"} may be eliminated.  The safe
       
  1077   wrapper tactical is applied.
       
  1078 
  1073 
  1079   \item @{method clarsimp} acts like @{method clarify}, but also does
  1074   \item @{method clarsimp} acts like @{method clarify}, but also does
  1080   simplification.  Note that if the Simplifier context includes a
  1075   simplification.  Note that if the Simplifier context includes a
  1081   splitter for the premises, the subgoal may still be split.
  1076   splitter for the premises, the subgoal may still be split.
       
  1077 
       
  1078   \end{description}
       
  1079 *}
       
  1080 
       
  1081 
       
  1082 subsection {* Single-step tactics *}
       
  1083 
       
  1084 text {*
       
  1085   \begin{matharray}{rcl}
       
  1086     @{index_ML safe_step_tac: "Proof.context -> int -> tactic"} \\
       
  1087     @{index_ML inst_step_tac: "Proof.context -> int -> tactic"} \\
       
  1088     @{index_ML step_tac: "Proof.context -> int -> tactic"} \\
       
  1089     @{index_ML slow_step_tac: "Proof.context -> int -> tactic"} \\
       
  1090     @{index_ML clarify_step_tac: "Proof.context -> int -> tactic"} \\
       
  1091   \end{matharray}
       
  1092 
       
  1093   These are the primitive tactics behind the (semi)automated proof
       
  1094   methods of the Classical Reasoner.  By calling them yourself, you
       
  1095   can execute these procedures one step at a time.
       
  1096 
       
  1097   \begin{description}
       
  1098 
       
  1099   \item @{ML safe_step_tac}~@{text "ctxt i"} performs a safe step on
       
  1100   subgoal @{text i}.  The safe wrapper tacticals are applied to a
       
  1101   tactic that may include proof by assumption or Modus Ponens (taking
       
  1102   care not to instantiate unknowns), or substitution.
       
  1103 
       
  1104   \item @{ML inst_step_tac} is like @{ML safe_step_tac}, but allows
       
  1105   unknowns to be instantiated.
       
  1106 
       
  1107   \item @{ML step_tac}~@{text "ctxt i"} is the basic step of the proof
       
  1108   procedure.  The unsafe wrapper tacticals are applied to a tactic
       
  1109   that tries @{ML safe_tac}, @{ML inst_step_tac}, or applies an unsafe
       
  1110   rule from the context.
       
  1111 
       
  1112   \item @{ML slow_step_tac} resembles @{ML step_tac}, but allows
       
  1113   backtracking between using safe rules with instantiation (@{ML
       
  1114   inst_step_tac}) and using unsafe rules.  The resulting search space
       
  1115   is larger.
       
  1116 
       
  1117   \item @{ML clarify_step_tac}~@{text "ctxt i"} performs a safe step
       
  1118   on subgoal @{text i}.  No splitting step is applied; for example,
       
  1119   the subgoal @{text "A \<and> B"} is left as a conjunction.  Proof by
       
  1120   assumption, Modus Ponens, etc., may be performed provided they do
       
  1121   not instantiate unknowns.  Assumptions of the form @{text "x = t"}
       
  1122   may be eliminated.  The safe wrapper tactical is applied.
  1082 
  1123 
  1083   \end{description}
  1124   \end{description}
  1084 *}
  1125 *}
  1085 
  1126 
  1086 
  1127