src/Doc/Isar_Ref/Proof.thy
changeset 60618 4c79543cc376
parent 60578 c708dafe2220
child 61164 2a03ae772c60
--- a/src/Doc/Isar_Ref/Proof.thy	Tue Jun 30 10:40:42 2015 +0200
+++ b/src/Doc/Isar_Ref/Proof.thy	Tue Jun 30 15:20:56 2015 +0200
@@ -706,6 +706,7 @@
     @{command_def ".."} & : & @{text "proof(prove) \<rightarrow> proof(state) | local_theory | theory"} \\
     @{command_def "."} & : & @{text "proof(prove) \<rightarrow> proof(state) | local_theory | theory"} \\
     @{command_def "sorry"} & : & @{text "proof(prove) \<rightarrow> proof(state) | local_theory | theory"} \\
+    @{method_def standard} & : & @{text method} \\
   \end{matharray}
 
   Arbitrary goal refinement via tactics is considered harmful.
@@ -740,11 +741,11 @@
   an intelligible manner.
 
   Unless given explicitly by the user, the default initial method is
-  @{method_ref (Pure) rule} (or its classical variant @{method_ref
-  rule}), which applies a single standard elimination or introduction
-  rule according to the topmost symbol involved.  There is no separate
-  default terminal method.  Any remaining goals are always solved by
-  assumption in the very last step.
+  @{method standard}, which subsumes at least @{method_ref (Pure) rule} or
+  its classical variant @{method_ref (HOL) rule}. These methods apply a
+  single standard elimination or introduction rule according to the topmost
+  logical connective involved. There is no separate default terminal method.
+  Any remaining goals are always solved by assumption in the very last step.
 
   @{rail \<open>
     @@{command proof} method?
@@ -784,9 +785,9 @@
   @{text "apply"}~@{text "m\<^sub>1"}) is already sufficient to see the
   problem.
 
-  \item ``@{command ".."}'' is a \emph{default
-  proof}\index{proof!default}; it abbreviates @{command "by"}~@{text
-  "rule"}.
+  \item ``@{command ".."}'' is a \emph{standard
+  proof}\index{proof!standard}; it abbreviates @{command "by"}~@{text
+  "standard"}.
 
   \item ``@{command "."}'' is a \emph{trivial
   proof}\index{proof!trivial}; it abbreviates @{command "by"}~@{text
@@ -803,6 +804,19 @@
   The most important application of @{command "sorry"} is to support
   experimentation and top-down proof development.
 
+  \item @{method standard} refers to the default refinement step of some
+  Isar language elements (notably @{command proof} and ``@{command ".."}'').
+  It is \emph{dynamically scoped}, so the behaviour depends on the
+  application environment.
+
+  In Isabelle/Pure, @{method standard} performs elementary introduction~/
+  elimination steps (@{method_ref (Pure) rule}), introduction of type
+  classes (@{method_ref intro_classes}) and locales (@{method_ref
+  intro_locales}).
+
+  In Isabelle/HOL, @{method standard} also takes classical rules into
+  account (cf.\ \secref{sec:classical}).
+
   \end{description}
 \<close>
 
@@ -910,12 +924,12 @@
   before applying it to the goal.  Thus @{method (Pure) rule} without facts
   is plain introduction, while with facts it becomes elimination.
 
-  When no arguments are given, the @{method (Pure) rule} method tries to pick
-  appropriate rules automatically, as declared in the current context
-  using the @{attribute (Pure) intro}, @{attribute (Pure) elim},
-  @{attribute (Pure) dest} attributes (see below).  This is the
-  default behavior of @{command "proof"} and ``@{command ".."}''
-  (double-dot) steps (see \secref{sec:proof-steps}).
+  When no arguments are given, the @{method (Pure) rule} method tries to
+  pick appropriate rules automatically, as declared in the current context
+  using the @{attribute (Pure) intro}, @{attribute (Pure) elim}, @{attribute
+  (Pure) dest} attributes (see below). This is included in the standard
+  behaviour of @{command "proof"} and ``@{command ".."}'' (double-dot) steps
+  (see \secref{sec:proof-steps}).
 
   \item @{attribute (Pure) intro}, @{attribute (Pure) elim}, and
   @{attribute (Pure) dest} declare introduction, elimination, and