src/HOL/Tools/SMT/cvc4_interface.ML
author wenzelm
Mon, 15 Feb 2016 14:55:44 +0100
changeset 62337 d3996d5873dd
parent 59552 ae50c9b82444
child 66551 4df6b0ae900d
permissions -rw-r--r--
proper syntax;
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
58360
dee1fd1cc631 added interface for CVC4 extensions
blanchet
parents:
diff changeset
     1
(*  Title:      HOL/Tools/SMT/cvc4_interface.ML
58369
149fb885dcd8 fixed authorship
blanchet
parents: 58360
diff changeset
     2
    Author:     Jasmin Blanchette, TU Muenchen
58360
dee1fd1cc631 added interface for CVC4 extensions
blanchet
parents:
diff changeset
     3
dee1fd1cc631 added interface for CVC4 extensions
blanchet
parents:
diff changeset
     4
Interface to CVC4 based on an extended version of SMT-LIB.
dee1fd1cc631 added interface for CVC4 extensions
blanchet
parents:
diff changeset
     5
*)
dee1fd1cc631 added interface for CVC4 extensions
blanchet
parents:
diff changeset
     6
dee1fd1cc631 added interface for CVC4 extensions
blanchet
parents:
diff changeset
     7
signature CVC4_INTERFACE =
dee1fd1cc631 added interface for CVC4 extensions
blanchet
parents:
diff changeset
     8
sig
dee1fd1cc631 added interface for CVC4 extensions
blanchet
parents:
diff changeset
     9
  val smtlib_cvc4C: SMT_Util.class
dee1fd1cc631 added interface for CVC4 extensions
blanchet
parents:
diff changeset
    10
end;
dee1fd1cc631 added interface for CVC4 extensions
blanchet
parents:
diff changeset
    11
dee1fd1cc631 added interface for CVC4 extensions
blanchet
parents:
diff changeset
    12
structure CVC4_Interface: CVC4_INTERFACE =
dee1fd1cc631 added interface for CVC4 extensions
blanchet
parents:
diff changeset
    13
struct
dee1fd1cc631 added interface for CVC4 extensions
blanchet
parents:
diff changeset
    14
dee1fd1cc631 added interface for CVC4 extensions
blanchet
parents:
diff changeset
    15
val smtlib_cvc4C = SMTLIB_Interface.smtlibC @ ["cvc4"]
dee1fd1cc631 added interface for CVC4 extensions
blanchet
parents:
diff changeset
    16
dee1fd1cc631 added interface for CVC4 extensions
blanchet
parents:
diff changeset
    17
dee1fd1cc631 added interface for CVC4 extensions
blanchet
parents:
diff changeset
    18
(* interface *)
dee1fd1cc631 added interface for CVC4 extensions
blanchet
parents:
diff changeset
    19
dee1fd1cc631 added interface for CVC4 extensions
blanchet
parents:
diff changeset
    20
local
dee1fd1cc631 added interface for CVC4 extensions
blanchet
parents:
diff changeset
    21
  fun translate_config ctxt =
59552
ae50c9b82444 use more permissive logic for CVC4 (in case both reals and datatypes appear)
blanchet
parents: 59018
diff changeset
    22
    {logic = K "(set-logic ALL_SUPPORTED)\n", fp_kinds = [BNF_Util.Least_FP, BNF_Util.Greatest_FP],
58360
dee1fd1cc631 added interface for CVC4 extensions
blanchet
parents:
diff changeset
    23
     serialize = #serialize (SMTLIB_Interface.translate_config ctxt)}
dee1fd1cc631 added interface for CVC4 extensions
blanchet
parents:
diff changeset
    24
in
dee1fd1cc631 added interface for CVC4 extensions
blanchet
parents:
diff changeset
    25
dee1fd1cc631 added interface for CVC4 extensions
blanchet
parents:
diff changeset
    26
val _ =
dee1fd1cc631 added interface for CVC4 extensions
blanchet
parents:
diff changeset
    27
  Theory.setup (Context.theory_map (SMT_Translate.add_config (smtlib_cvc4C, translate_config)))
dee1fd1cc631 added interface for CVC4 extensions
blanchet
parents:
diff changeset
    28
dee1fd1cc631 added interface for CVC4 extensions
blanchet
parents:
diff changeset
    29
end
dee1fd1cc631 added interface for CVC4 extensions
blanchet
parents:
diff changeset
    30
dee1fd1cc631 added interface for CVC4 extensions
blanchet
parents:
diff changeset
    31
end;