ProgTutorial/Essential.thy
changeset 552 82c482467d75
parent 551 be361e980acf
child 553 c53d74b34123
--- a/ProgTutorial/Essential.thy	Sat Aug 31 08:07:45 2013 +0100
+++ b/ProgTutorial/Essential.thy	Sun Dec 15 23:49:05 2013 +0000
@@ -1769,7 +1769,7 @@
 
   @{ML_response_fake [display,gray,linenos]
   "Thm.reflexive @{cterm \"True\"}
-  |> Simplifier.rewrite_rule [@{thm True_def}]
+  |> Simplifier.rewrite_rule @{context} [@{thm True_def}]
   |> pretty_thm @{context}
   |> pwriteln"
   "(\<lambda>x. x) = (\<lambda>x. x) \<equiv> (\<lambda>x. x) = (\<lambda>x. x)"}
@@ -1785,7 +1785,7 @@
   replaces all object connectives by equivalents in the meta logic. For example
 
   @{ML_response_fake [display, gray]
-  "Object_Logic.rulify @{thm foo_test2}"
+  "Object_Logic.rulify @{context} @{thm foo_test2}"
   "\<lbrakk>?A; ?B\<rbrakk> \<Longrightarrow> ?C"}
 
   The transformation in the other direction can be achieved with function
@@ -1794,9 +1794,9 @@
   @{ML_response_fake [display,gray]
   "let
   val thm = @{thm foo_test1}
-  val meta_eq = Object_Logic.atomize (cprop_of thm)
+  val meta_eq = Object_Logic.atomize @{context} (cprop_of thm)
 in
-  Raw_Simplifier.rewrite_rule [meta_eq] thm
+  Raw_Simplifier.rewrite_rule @{context} [meta_eq] thm
 end"
   "?A \<longrightarrow> ?B \<longrightarrow> ?C"}
 
@@ -1815,19 +1815,19 @@
   following function for atomizing a theorem.
 *}
 
-ML %grayML{*fun atomize_thm thm =
+ML %grayML{*fun atomize_thm ctxt thm =
 let
   val thm' = forall_intr_vars thm
-  val thm'' = Object_Logic.atomize (cprop_of thm')
+  val thm'' = Object_Logic.atomize ctxt (cprop_of thm')
 in
-  Raw_Simplifier.rewrite_rule [thm''] thm'
+  Raw_Simplifier.rewrite_rule ctxt [thm''] thm'
 end*}
 
 text {*
   This function produces for the theorem @{thm [source] list.induct}
 
   @{ML_response_fake [display, gray]
-  "atomize_thm @{thm list.induct}"
+  "atomize_thm @{context} @{thm list.induct}"
   "\<forall>P list. P [] \<longrightarrow> (\<forall>a list. P list \<longrightarrow> P (a # list)) \<longrightarrow> P list"}
 
   Theorems can also be produced from terms by giving an explicit proof.