2
2
3
3
open ! Core
4
4
5
+ let debug = false
5
6
let pat = Re. (compile (seq [ opt (char '-' ); rep1 digit ]))
6
7
7
8
let input =
@@ -26,7 +27,7 @@ let make_rules i (px, py, pz, vx, vy, vz) ~context ~x0 ~y0 ~z0 ~vx0 ~vy0 ~vz0 =
26
27
27
28
let main () =
28
29
let context = Z3. mk_context [] in
29
- let solver = Z3.Solver. mk_simple_solver context in
30
+ let solver = Z3.Solver. mk_solver context None in
30
31
let x0, y0, z0, vx0, vy0, vz0 =
31
32
( Z3.Arithmetic.Integer. mk_const_s context " x0"
32
33
, Z3.Arithmetic.Integer. mk_const_s context " y0"
@@ -41,12 +42,12 @@ let main () =
41
42
~f: (make_rules ~context ~x0 ~y0 ~z0 ~vx0 ~vy0 ~vz0 )
42
43
in
43
44
Z3.Solver. add solver rules;
44
- print_endline (Z3.Solver. to_string solver);
45
+ if debug then print_endline (Z3.Solver. to_string solver);
45
46
match Z3.Solver. check solver [] with
46
47
| UNSATISFIABLE | UNKNOWN -> raise_s [% message " no solution" ]
47
48
| SATISFIABLE ->
48
49
let model = Z3.Solver. get_model solver |> Option. value_exn in
49
- print_endline (Z3.Model. to_string model);
50
+ if debug then print_endline (Z3.Model. to_string model);
50
51
let ans =
51
52
let get var =
52
53
Z3.Model. get_const_interp_e model var
@@ -59,6 +60,4 @@ let main () =
59
60
print_s [% sexp (ans : int )]
60
61
;;
61
62
62
- (* TODO: Why is this so much slower than printing the SMT and then plugging it
63
- into z3 at the command line? *)
64
63
let () = main ()
0 commit comments