--- a/src/Tools/Code/code_ml.ML Thu Jul 08 16:19:24 2010 +0200
+++ b/src/Tools/Code/code_ml.ML Thu Jul 08 16:19:24 2010 +0200
@@ -1,4 +1,4 @@
-(* Title: Tools/code/code_ml.ML
+(* Title: Tools/Code/code_ml.ML
Author: Florian Haftmann, TU Muenchen
Serializer for SML and OCaml.
@@ -7,10 +7,13 @@
signature CODE_ML =
sig
val target_SML: string
+ val target_OCaml: string
val evaluation_code_of: theory -> string -> string
-> Code_Thingol.naming -> Code_Thingol.program -> string list -> string * string option list
val print_tuple: (Code_Printer.fixity -> 'a -> Pretty.T)
-> Code_Printer.fixity -> 'a list -> Pretty.T option
+ val check_SML: theory -> Path.T -> unit
+ val check_OCaml: theory -> Path.T -> unit
val setup: theory -> theory
end;
@@ -950,6 +953,17 @@
serialize_ml target (SOME (K ())) print_sml_module print_sml_stmt (SOME struct_name) true, literals_sml));
+(** formal checking of compiled code **)
+
+fun check_SML thy = Code_Target.external_check thy target_SML
+ "ISABELLE_PROCESS" (fn p => Path.append p (Path.explode "ROOT.ML"))
+ (fn isabelle => fn p => fn _ => isabelle ^ " -r -q -u Pure");
+
+fun check_OCaml thy = Code_Target.external_check thy target_OCaml
+ "EXEC_OCAML" (fn p => Path.append p (Path.explode "ROOT.ocaml"))
+ (fn ocaml => fn p => fn _ => ocaml ^ " -w pu nums.cma " ^ File.shell_path p);
+
+
(** Isar setup **)
fun isar_seri_sml module_name =