1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
type t =
  | ALL
  | AUFLIA
  | AUFLIRA
  | AUFNIRA
  | LIA
  | LRA
  | QF_ABV
  | QF_AUFBV
  | QF_AUFLIA
  | QF_AX
  | QF_BV
  | QF_BVFP
  | QF_IDL
  | QF_LIA
  | QF_LRA
  | QF_NIA
  | QF_NRA
  | QF_RDL
  | QF_S
  | QF_UF
  | QF_UFBV
  | QF_UFIDL
  | QF_UFLIA
  | QF_UFLRA
  | QF_UFNRA
  | UFLRA
  | UFNIA

let pp fmt = function
  | ALL -> Fmt.string fmt "ALL"
  | AUFLIA -> Fmt.string fmt "AUFLIA"
  | AUFLIRA -> Fmt.string fmt "AUFLIRA"
  | AUFNIRA -> Fmt.string fmt "AUFNIRA"
  | LIA -> Fmt.string fmt "LIA"
  | LRA -> Fmt.string fmt "LRA"
  | QF_ABV -> Fmt.string fmt "QF_ABV"
  | QF_AUFBV -> Fmt.string fmt "QF_AUFBV"
  | QF_AUFLIA -> Fmt.string fmt "QF_AUFLIA"
  | QF_AX -> Fmt.string fmt "QF_AX"
  | QF_BV -> Fmt.string fmt "QF_BV"
  | QF_BVFP -> Fmt.string fmt "QF_BVFP"
  | QF_IDL -> Fmt.string fmt "QF_IDL"
  | QF_LIA -> Fmt.string fmt "QF_LIA"
  | QF_LRA -> Fmt.string fmt "QF_LRA"
  | QF_NIA -> Fmt.string fmt "QF_NIA"
  | QF_NRA -> Fmt.string fmt "QF_NRA"
  | QF_RDL -> Fmt.string fmt "QF_RDL"
  | QF_S -> Fmt.string fmt "QF_S"
  | QF_UF -> Fmt.string fmt "QF_UF"
  | QF_UFBV -> Fmt.string fmt "QF_UFBV"
  | QF_UFIDL -> Fmt.string fmt "QF_UFIDL"
  | QF_UFLIA -> Fmt.string fmt "QF_UFLIA"
  | QF_UFLRA -> Fmt.string fmt "QF_UFLRA"
  | QF_UFNRA -> Fmt.string fmt "QF_UFNRA"
  | UFLRA -> Fmt.string fmt "UFLRA"
  | UFNIA -> Fmt.string fmt "UFNIA"

let of_string logic =
  match logic with
  | "ALL" -> Ok ALL
  | "AUFLIA" -> Ok AUFLIA
  | "AUFLIRA" -> Ok AUFLIRA
  | "AUFNIRA" -> Ok AUFNIRA
  | "LIA" -> Ok LIA
  | "LRA" -> Ok LRA
  | "QF_ABV" -> Ok QF_ABV
  | "QF_AUFBV" -> Ok QF_AUFBV
  | "QF_AUFLIA" -> Ok QF_AUFLIA
  | "QF_AX" -> Ok QF_AX
  | "QF_BV" -> Ok QF_BV
  | "QF_BVFP" -> Ok QF_BVFP
  | "QF_IDL" -> Ok QF_IDL
  | "QF_LIA" -> Ok QF_LIA
  | "QF_LRA" -> Ok QF_LRA
  | "QF_NIA" -> Ok QF_NIA
  | "QF_NRA" -> Ok QF_NRA
  | "QF_RDL" -> Ok QF_RDL
  | "QF_S" -> Ok QF_S
  | "QF_UF" -> Ok QF_UF
  | "QF_UFBV" -> Ok QF_UFBV
  | "QF_UFIDL" -> Ok QF_UFIDL
  | "QF_UFLIA" -> Ok QF_UFLIA
  | "QF_UFLRA" -> Ok QF_UFLRA
  | "QF_UFNRA" -> Ok QF_UFNRA
  | "UFLRA" -> Ok UFLRA
  | "UFNIA" -> Ok UFNIA
  | _ -> Error (`Msg (Fmt.str "unknown logic %s" logic))