src/HOL/Tools/SMT/z3_interface.ML
changeset 36898 8e55aa1306c5
child 36899 bcd6fce5bf06
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/HOL/Tools/SMT/z3_interface.ML	Wed May 12 23:54:02 2010 +0200
@@ -0,0 +1,37 @@
+(*  Title:      HOL/Tools/SMT/z3_interface.ML
+    Author:     Sascha Boehme, TU Muenchen
+
+Interface to Z3 based on a relaxed version of SMT-LIB.
+*)
+
+signature Z3_INTERFACE =
+sig
+  val interface: SMT_Translate.config
+
+  val is_builtin: term -> bool
+end
+
+structure Z3_Interface: Z3_INTERFACE =
+struct
+
+fun z3_builtin_fun bf c ts =
+  (case Const c of
+    @{term "op / :: real => _"} => SOME ("/", ts)
+  | _ => bf c ts)
+
+
+val {prefixes, strict, builtins, serialize} = SMTLIB_Interface.interface
+val {builtin_typ, builtin_num, builtin_fun} = builtins
+
+val interface = {
+  extra_norm = 
+  translate = {
+    prefixes = prefixes,
+    strict = strict,
+    builtins = {
+      builtin_typ = builtin_typ,
+      builtin_num = builtin_num,
+      builtin_fun = z3_builtin_fun builtin_fun},
+    serialize = serialize}}
+
+end