src/Pure/Isar/isar_cmd.ML
changeset 22087 a13299166175
parent 21955 c1a6fad248ca
child 22116 6917be2e647d
--- a/src/Pure/Isar/isar_cmd.ML	Fri Jan 19 13:09:33 2007 +0100
+++ b/src/Pure/Isar/isar_cmd.ML	Fri Jan 19 13:09:35 2007 +0100
@@ -11,6 +11,7 @@
   val add_defs: (bool * bool) * ((bstring * string) * Attrib.src list) list -> theory -> theory
   val apply_theorems: (thmref * Attrib.src list) list -> theory -> thm list * theory
   val apply_theorems_i: (thm list * attribute list) list -> theory -> thm list * theory
+  val declaration: string -> local_theory -> local_theory
   val have: ((string * Attrib.src list) * (string * string list) list) list ->
     bool -> Proof.state -> Proof.state
   val hence: ((string * Attrib.src list) * (string * string list) list) list ->
@@ -141,6 +142,14 @@
 fun apply_theorems_i args = apfst (maps snd) o PureThy.note_thmss_i "" [(("", []), args)];
 
 
+(* declarations *)
+
+val declaration =
+  Context.use_let "val declaration: morphism -> Context.generic -> Context.generic"
+  "Context.map_proof (LocalTheory.declaration declaration)"
+  #> Context.proof_map;
+
+
 (* goals *)
 
 fun goal opt_chain goal stmt int =
@@ -207,7 +216,7 @@
 val welcome = Toplevel.imperative (writeln o Session.welcome);
 
 val exit = Toplevel.keep (fn state =>
-  (Context.set_context (try Toplevel.theory_of state); raise Toplevel.TERMINATE));
+  (Context.set_context (try Toplevel.generic_theory_of state); raise Toplevel.TERMINATE));
 
 val quit = Toplevel.imperative quit;
 
@@ -274,14 +283,14 @@
 (* use ML text *)
 
 fun use path = Toplevel.keep (fn state =>
-  Context.setmp (try Toplevel.theory_of state) (ThyInfo.load_file false) path);
+  Context.setmp (try Toplevel.generic_theory_of state) (ThyInfo.load_file false) path);
 
 (*passes changes of theory context*)
-val use_mltext_theory = Toplevel.theory' o Context.use_mltext_theory;
+val use_mltext_theory = Toplevel.theory' o (Context.theory_map oo Context.use_mltext_update);
 
 (*ignore result theory context*)
 fun use_mltext v txt = Toplevel.keep' (fn verb => fn state =>
-  (Context.use_mltext txt (v andalso verb) (try Toplevel.theory_of state)));
+  (Context.use_mltext txt (v andalso verb) (try Toplevel.generic_theory_of state)));
 
 val use_commit = Toplevel.imperative Secure.commit;
 
@@ -494,7 +503,7 @@
 
 fun present _ txt true node = OuterSyntax.check_text txt (SOME node)
   | present f (s, _) false node =
-      Context.setmp (try (Toplevel.cases_node Context.theory_of Proof.theory_of) node) f s;
+      Context.setmp (try (Toplevel.cases_node I (Context.Proof o Proof.context_of)) node) f s;
 
 fun present_local_theory f (loc, txt) = Toplevel.present_local_theory loc (present f txt);
 fun present_proof f txt = Toplevel.print o Toplevel.present_proof (present f txt);