
diff -r 8411f242e094 -r 3f85b675601c ProgTutorial/Essential.thy
--- a/ProgTutorial/Essential.thy	Thu Jun 21 08:39:02 2012 +0100
+++ b/ProgTutorial/Essential.thy	Thu Jun 21 11:08:02 2012 +0100
@@ -1966,11 +1966,12 @@
 
  
 text {*
-  One often wants to know the theorems that are involved in proving 
-  a theorem. They can be obtained by introspecting the theorem.
-  To introspect a theorem, let us define the following three functions that 
-  analyse the @{ML_type_ind proof_body} data-structure from the structure 
-  @{ML_struct Proofterm}.
+  Sometimes one wants to know the theorems that are involved in
+  proving a theorem, especially when the proof is by @{text
+  auto}. These theorems can be obtained by introspecting the proved theorem.
+  To introspect a theorem, let us define the following three functions
+  that analyse the @{ML_type_ind proof_body} data-structure from the
+  structure @{ML_struct Proofterm}.
 *}
 
 ML %grayML{*fun pthms_of (PBody {thms, ...}) = map #2 thms 
@@ -2032,8 +2033,8 @@
   "[\"HOL.conjunct2\", \"HOL.conjunct1\", \"HOL.conjI\", \"Pure.protectD\", 
   \"Pure.protectI\"]"}
 
-  The theorems @{thm [source] protectD} and @{thm [source]
-  protectI} that are internal theorems are always part of a
+  The theorems @{thm [source] Pure.protectD} and @{thm [source]
+  Pure.protectI} that are internal theorems are always part of a
   proof in Isabelle. Note also that applications of @{text assumption} do not
   count as a separate theorem, as you can see in the following code.
 
@@ -2077,6 +2078,11 @@
   "[\"HOL.spec\", \"HOL.and_def\", \"HOL.mp\", \"HOL.impI\", \"Pure.protectD\",
   \"Pure.protectI\"]"}
 
+  \begin{exercise}
+  Have a look at the theorems that are used when a lemma is ``proved''
+  by \isacommand{sorry}? 
+  \end{exercise}
+
   \begin{readmore} 
   The data-structure @{ML_type proof_body} is implemented
   in the file @{ML_file "Pure/proofterm.ML"}. The implementation 




