src/HOL/Tools/SMT/smt_solver.ML
changeset 41059 d2b1fc1b8e19
parent 40981 67f436af0638
child 41062 304cfdbc6475
--- a/src/HOL/Tools/SMT/smt_solver.ML	Mon Dec 06 16:54:22 2010 +0100
+++ b/src/HOL/Tools/SMT/smt_solver.ML	Tue Dec 07 14:53:12 2010 +0100
@@ -8,6 +8,7 @@
 sig
   (*configuration*)
   type interface = {
+    class: SMT_Config.class,
     extra_norm: SMT_Normalize.extra_norm,
     translate: SMT_Translate.config }
   datatype outcome = Unsat | Sat | Unknown
@@ -57,6 +58,7 @@
 (* configuration *)
 
 type interface = {
+  class: SMT_Config.class,
   extra_norm: SMT_Normalize.extra_norm,
   translate: SMT_Translate.config }
 
@@ -195,13 +197,10 @@
 
 fun set_has_datatypes with_datatypes translate =
   let
-    val {prefixes, header, strict, builtins, serialize} = translate
-    val {builtin_typ, builtin_num, builtin_fun, has_datatypes} = builtins
+    val {prefixes, header, is_fol, has_datatypes, serialize} = translate
     val with_datatypes' = has_datatypes andalso with_datatypes
-    val builtins' = {builtin_typ=builtin_typ, builtin_num=builtin_num,
-      builtin_fun=builtin_fun, has_datatypes=with_datatypes}
-    val translate' = {prefixes=prefixes, header=header, strict=strict,
-      builtins=builtins', serialize=serialize}
+    val translate' = {prefixes=prefixes, header=header, is_fol=is_fol,
+      has_datatypes=with_datatypes', serialize=serialize}
   in (with_datatypes', translate') end
 
 fun trace_assumptions ctxt irules idxs =
@@ -219,7 +218,7 @@
 fun gen_solver name info rm ctxt irules =
   let
     val {env_var, is_remote, options, interface, reconstruct, ...} = info
-    val {extra_norm, translate} = interface
+    val {extra_norm, translate, ...} = interface
     val (with_datatypes, translate') =
       set_has_datatypes (Config.get ctxt C.datatypes) translate
     val cmd = (rm, env_var, is_remote, name)
@@ -284,6 +283,7 @@
   let
     val {name, env_var, is_remote, options, interface, outcome, cex_parser,
       reconstruct, default_max_relevant} = cfg
+    val {class, ...} = interface
 
     fun core_oracle () = cfalse
 
@@ -294,7 +294,7 @@
   in
     Thm.add_oracle (Binding.name name, core_oracle) #-> (fn (_, ocl) =>
     Context.theory_map (Solvers.map (Symtab.update_new (name, solver ocl)))) #>
-    Context.theory_map (C.add_solver name)
+    Context.theory_map (C.add_solver (name, class))
   end
 
 end