2 This file contains specifications of the SAT tools that
3 can be invoked from HOL.
4 Details of format in the comments following each field name.
6 {name (* solver name *)
7 url, (* source for downloading *)
8 executable, (* path to executable *)
9 good_exit, (* code return upon normal termination *)
10 notime_run, (* command to invoke solver on a file *)
11 time_run, (* command to invoke on a file and time *)
12 only_true (* true if only the true atoms are listed in models *)
13 failure_string, (* string whose presence indicates unsatisfiability *)
14 start_string, (* string signalling start of variable assignment *)
15 end_string} (* string signalling end of variable assignment *)
23 notime_run : string -> string * string -> string;
24 time_run : string -> (string * string) * int -> string;
26 failure_string : string;
27 start_string : string;
33 "http://www.ee.princeton.edu/~chaff/zchaff/zchaff.2001.2.17.linux.gz";
34 executable = "zchaff";
36 notime_run = (fun ex -> fun (infile,outfile) ->
37 (ex ^ " " ^ infile ^ " > " ^ outfile ^
38 "; zc2mso " ^ infile ^
39 " -m " ^ outfile ^ ".proof -z "^
40 (Filename.concat (!temp_path) "resolve_trace")^
42 (Filename.concat (!temp_path) "zc2mso_trace")));
43 time_run = (fun ex -> fun ((infile,outfile),time) ->
44 (ex ^ " " ^ infile ^ " " ^ (string_of_int time) ^ " > " ^ outfile));
46 failure_string = "UNSAT";
47 start_string = "Instance Satisfiable";
48 end_string = "Random Seed Used"}
52 url = "http://www.cs.chalmers.se/Cs/Research/FormalMethods/MiniSat/cgi/MiniSat_v1.13_linux.cgi";
53 executable = "minisat";
55 notime_run = (fun ex -> fun (infile,outfile) ->
56 (ex ^ " -r " ^ outfile ^" "^ infile ^ " > " ^ outfile ^".stats"));
57 time_run = (fun ex -> fun ((infile,outfile),time) ->
58 (ex ^ " " ^ infile ^ " " ^ (string_of_int time) ^ " > " ^ outfile));
60 failure_string = "UNSAT";
66 url = "http://www.cs.chalmers.se/Cs/Research/FormalMethods/MiniSat/cgi/MiniSat_v1.13_linux.cgi";
68 (match (Sys.os_type) with
69 "Win32" | "Cygwin" -> "minisat.exe"
72 notime_run = (fun ex -> fun (infile,outfile) ->
73 (ex ^ " -r " ^ outfile ^ " -p " ^ outfile ^ ".proof " ^ infile ^ " > " ^ outfile ^".stats"));
74 time_run = (fun ex -> fun ((infile,outfile),time) ->
75 (ex ^ " " ^ infile ^ " " ^ (string_of_int time) ^ " > " ^ outfile));
77 failure_string = "UNSAT";