Source file solver_dispatcher.ml
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
open Solver_type
let is_available = function
| Z3_solver -> Z3_mappings.is_available
| Bitwuzla_solver -> Bitwuzla_mappings.is_available
| Colibri2_solver -> Colibri2_mappings.is_available
| Cvc5_solver -> Cvc5_mappings.is_available
| Altergo_solver -> Altergo_mappings.is_available
let available =
List.filter is_available
[ Z3_solver; Bitwuzla_solver; Colibri2_solver; Cvc5_solver ]
let mappings_of_solver : Solver_type.t -> (module Mappings.S_with_fresh) =
function
| Z3_solver -> (module Z3_mappings)
| Bitwuzla_solver -> (module Bitwuzla_mappings)
| Colibri2_solver -> (module Colibri2_mappings)
| Cvc5_solver -> (module Cvc5_mappings)
| Altergo_solver -> (module Altergo_mappings)
let solver =
match available with
| [] -> Error (`Msg "no available solver")
| solver :: _ -> Ok (mappings_of_solver solver)