104 val configured_sat_solvers = map fst o dynamic_list |
104 val configured_sat_solvers = map fst o dynamic_list |
105 val smart_sat_solver_name = fst o hd o dynamic_list |
105 val smart_sat_solver_name = fst o hd o dynamic_list |
106 |
106 |
107 fun sat_solver_spec name = |
107 fun sat_solver_spec name = |
108 let |
108 let |
109 val dyn_list = dynamic_list false |
109 val dyns = dynamic_list false |
110 fun enum_solvers solvers = |
110 fun enum_solvers solvers = |
111 commas (distinct (op =) (map (quote o fst) solvers)) |
111 commas (distinct (op =) (map (quote o fst) solvers)) |
112 in |
112 in |
113 (name, the (AList.lookup (op =) dyn_list name) ()) |
113 (name, the (AList.lookup (op =) dyns name) ()) |
114 handle Option.Option => |
114 handle Option.Option => |
115 error (if AList.defined (op =) static_list name then |
115 error (if AList.defined (op =) static_list name then |
116 "The SAT solver " ^ quote name ^ " is not configured. The \ |
116 "The SAT solver " ^ quote name ^ " is not configured. The \ |
117 \following solvers are configured:\n" ^ |
117 \following solvers are configured:\n" ^ |
118 enum_solvers dyn_list ^ "." |
118 enum_solvers dyns ^ "." |
119 else |
119 else |
120 "Unknown SAT solver " ^ quote name ^ ". The following \ |
120 "Unknown SAT solver " ^ quote name ^ ". The following \ |
121 \solvers are supported:\n" ^ enum_solvers static_list ^ ".") |
121 \solvers are supported:\n" ^ enum_solvers static_list ^ ".") |
122 end |
122 end |
123 |
123 |