| 58360 |      1 | (*  Title:      HOL/Tools/SMT/cvc4_interface.ML
 | 
| 58369 |      2 |     Author:     Jasmin Blanchette, TU Muenchen
 | 
| 58360 |      3 | 
 | 
|  |      4 | Interface to CVC4 based on an extended version of SMT-LIB.
 | 
|  |      5 | *)
 | 
|  |      6 | 
 | 
|  |      7 | signature CVC4_INTERFACE =
 | 
|  |      8 | sig
 | 
|  |      9 |   val smtlib_cvc4C: SMT_Util.class
 | 
| 66551 |     10 |   val hosmtlib_cvc4C: SMT_Util.class
 | 
| 58360 |     11 | end;
 | 
|  |     12 | 
 | 
|  |     13 | structure CVC4_Interface: CVC4_INTERFACE =
 | 
|  |     14 | struct
 | 
|  |     15 | 
 | 
| 66551 |     16 | val cvc4C = ["cvc4"]
 | 
|  |     17 | val smtlib_cvc4C = SMTLIB_Interface.smtlibC @ cvc4C
 | 
|  |     18 | val hosmtlib_cvc4C = SMTLIB_Interface.hosmtlibC @ cvc4C
 | 
| 58360 |     19 | 
 | 
|  |     20 | 
 | 
|  |     21 | (* interface *)
 | 
|  |     22 | 
 | 
|  |     23 | local
 | 
| 66551 |     24 |   fun translate_config order ctxt =
 | 
|  |     25 |     {order = order,
 | 
|  |     26 |      logic = K "(set-logic ALL_SUPPORTED)\n",
 | 
|  |     27 |      fp_kinds = [BNF_Util.Least_FP, BNF_Util.Greatest_FP],
 | 
|  |     28 |      serialize = #serialize (SMTLIB_Interface.translate_config order ctxt)}
 | 
| 58360 |     29 | in
 | 
|  |     30 | 
 | 
| 66551 |     31 | val _ = Theory.setup (Context.theory_map
 | 
|  |     32 |   (SMT_Translate.add_config (smtlib_cvc4C, translate_config SMT_Util.First_Order) #>
 | 
|  |     33 |    SMT_Translate.add_config (hosmtlib_cvc4C, translate_config SMT_Util.Higher_Order)))
 | 
| 58360 |     34 | 
 | 
|  |     35 | end
 | 
|  |     36 | 
 | 
|  |     37 | end;
 |