wip: intsolver

This commit is contained in:
Simon Cruanes 2022-01-14 13:50:07 -05:00
parent f713106514
commit 417f4cf8ec
No known key found for this signature in database
GPG key ID: EBFFF6F283F3A2B4
2 changed files with 16 additions and 8 deletions

View file

@ -96,10 +96,12 @@ module Make(A : ARG)
let empty : t = T_map.empty let empty : t = T_map.empty
let pp out (self:t) : unit = let pp out (self:t) : unit =
let pp_pair out (t,z) = Fmt.fprintf out "%a · %a" Z.pp z A.pp_term t in let pp_pair out (t,z) =
if Z.(z = one) then A.pp_term out t
else Fmt.fprintf out "%a · %a" Z.pp z A.pp_term t in
if is_empty self then Fmt.string out "0" if is_empty self then Fmt.string out "0"
else Fmt.fprintf out "(@[+@ %a@])" else Fmt.fprintf out "(@[%a@])"
Fmt.(iter ~sep:(return "@ ") pp_pair) (T_map.to_iter self) Fmt.(iter ~sep:(return "@ + ") pp_pair) (T_map.to_iter self)
let iter = T_map.iter let iter = T_map.iter
let return t : t = T_map.add t Z.one empty let return t : t = T_map.add t Z.one empty
@ -288,8 +290,12 @@ module Make(A : ARG)
Sat m (* TODO: model *) Sat m (* TODO: model *)
| Some (t, _) -> | Some (t, _) ->
Log.debugf 30 (fun k->k "(@[intsolver.elim-var@ %a@])" A.pp_term t); self.vars <- T_map.remove t self.vars;
assert false Log.debugf 30
(fun k->k "(@[intsolver.elim-var@ %a@ :remaining %d@])"
A.pp_term t (T_map.cardinal self.vars));
assert false (* TODO *)
end end

View file

@ -1,17 +1,18 @@
let tests : unit Alcotest.test list = let tests : unit Alcotest.test list =
List.flatten @@ [ List.flatten @@ [
[Sidekick_test_simplex.tests];
[Sidekick_test_intsolver.tests]; [Sidekick_test_intsolver.tests];
[Sidekick_test_simplex.tests];
[Sidekick_test_minicc.tests]; [Sidekick_test_minicc.tests];
Sidekick_test_util.tests; Sidekick_test_util.tests;
] ]
let props = let props =
List.flatten List.flatten
[ Sidekick_test_simplex.props; [
Sidekick_test_util.props;
Sidekick_test_intsolver.props; Sidekick_test_intsolver.props;
Sidekick_test_simplex.props;
Sidekick_test_util.props;
] ]
let () = let () =
@ -21,6 +22,7 @@ let () =
let argv= Array.of_list (a0::tl) in let argv= Array.of_list (a0::tl) in
Alcotest.run ~argv ~and_exit:true "arith tests" tests; Alcotest.run ~argv ~and_exit:true "arith tests" tests;
| a0::"qcheck"::tl -> | a0::"qcheck"::tl ->
Sidekick_util.Log.set_debug 50;
let argv= Array.of_list (a0::tl) in let argv= Array.of_list (a0::tl) in
CCFormat.set_color_default true; CCFormat.set_color_default true;
QCheck_runner.run_tests_main ~argv props QCheck_runner.run_tests_main ~argv props