tuned module arrangement;
authorwenzelm
Wed, 23 Dec 2015 16:38:23 +0100
changeset 61919 b3d68dff610b
parent 61918 0f9e0106c378
child 61920 0df21d79fe32
tuned module arrangement;
src/HOL/Eisbach/method_closure.ML
--- a/src/HOL/Eisbach/method_closure.ML	Wed Dec 23 16:33:15 2015 +0100
+++ b/src/HOL/Eisbach/method_closure.ML	Wed Dec 23 16:38:23 2015 +0100
@@ -29,7 +29,7 @@
 structure Method_Closure: METHOD_CLOSURE =
 struct
 
-(* context data *)
+(* context data for ML antiquotation *)
 
 structure Data = Generic_Data
 (
@@ -62,6 +62,8 @@
           (Method.map_source o map) (Token.transform phi) text))));
 
 
+(* context data for method definition *)
+
 structure Local_Data = Proof_Data
 (
   type T =
@@ -114,16 +116,7 @@
         in text end));
 
 
-fun check_attrib ctxt attrib =
-  let
-    val name = Binding.name_of attrib;
-    val pos = Binding.pos_of attrib;
-    val named_thm = Named_Theorems.check ctxt (name, pos);
-    val parser: Method.modifier parser =
-      Args.$$$ name -- Args.colon >>
-        K {init = I, attribute = Named_Theorems.add named_thm, pos = pos};
-  in (named_thm, parser) end;
-
+(* evaluate method text *)
 
 fun method_evaluate text ctxt =
   let
@@ -143,6 +136,12 @@
     val text' = (Method.map_source o map) (Token.transform morphism) text;
   in method_evaluate text' end;
 
+
+
+(** Isar command **)
+
+local
+
 fun setup_local_method binding lthy =
   let
     val full_name = Local_Theory.full_name lthy binding;
@@ -153,29 +152,21 @@
     |> Method.local_setup binding (Scan.succeed get_method) "(internal)"
   end;
 
+fun check_attrib ctxt attrib =
+  let
+    val name = Binding.name_of attrib;
+    val pos = Binding.pos_of attrib;
+    val named_thm = Named_Theorems.check ctxt (name, pos);
+    val parser: Method.modifier parser =
+      Args.$$$ name -- Args.colon >>
+        K {init = I, attribute = Named_Theorems.add named_thm, pos = pos};
+  in (named_thm, parser) end;
+
 fun dummy_named_thm named_thm =
   Context.proof_map
     (Named_Theorems.clear named_thm
       #> Named_Theorems.add_thm named_thm Drule.free_dummy_thm);
 
-fun parse_method_args method_names =
-  let
-    fun bind_method (name, text) ctxt =
-      let
-        val method = method_evaluate text;
-        val inner_update = method o update_dynamic_method (name, K (method ctxt));
-      in update_dynamic_method (name, inner_update) ctxt end;
-
-    fun rep [] x = Scan.succeed [] x
-      | rep (t :: ts) x = ((method_text >> pair t) ::: rep ts) x;
-  in rep method_names >> fold bind_method end;
-
-
-
-(** Isar command **)
-
-local
-
 fun parse_term_args args =
   Args.context :|-- (fn ctxt =>
     let
@@ -212,6 +203,18 @@
         (map Term.dest_Var args ~~ ts) Vartab.empty;
   in Envir.Envir {maxidx = ~1, tenv = tenv, tyenv = tyenv} end;
 
+fun parse_method_args method_names =
+  let
+    fun bind_method (name, text) ctxt =
+      let
+        val method = method_evaluate text;
+        val inner_update = method o update_dynamic_method (name, K (method ctxt));
+      in update_dynamic_method (name, inner_update) ctxt end;
+
+    fun rep [] x = Scan.succeed [] x
+      | rep (t :: ts) x = ((method_text >> pair t) ::: rep ts) x;
+  in rep method_names >> fold bind_method end;
+
 fun gen_method add_fixes name vars uses declares methods source lthy =
   let
     val (uses_internal, lthy1) = lthy