ppx_compare Prover

Reviewed By: sblackshear

Differential Revision: D4232416

fbshipit-source-id: de7026b
master
Josh Berdine 8 years ago committed by Facebook Github Bot
parent 47368b8ae6
commit 6e322d96e8

@ -25,10 +25,6 @@ let compute_max_from_nonempty_int_list l =
let compute_min_from_nonempty_int_list l = let compute_min_from_nonempty_int_list l =
IList.hd (IList.sort IntLit.compare_value l) IList.hd (IList.sort IntLit.compare_value l)
let exp_pair_compare (e1, e2) (f1, f2) =
let c1 = Exp.compare e1 f1 in
if c1 <> 0 then c1 else Exp.compare e2 f2
let rec list_rev_acc acc = function let rec list_rev_acc acc = function
| [] -> acc | [] -> acc
| x:: l -> list_rev_acc (x:: acc) l | x:: l -> list_rev_acc (x:: acc) l
@ -76,11 +72,8 @@ module DiffConstr : sig
end = struct end = struct
type t = Exp.t * Exp.t * IntLit.t type t = Exp.t * Exp.t * IntLit.t [@@deriving compare]
let compare (e1, e2, n) (f1, f2, m) =
let c1 = exp_pair_compare (e1, e2) (f1, f2) in
if c1 <> 0 then c1 else IntLit.compare_value n m
let equal entry1 entry2 = compare entry1 entry2 = 0 let equal entry1 entry2 = compare entry1 entry2 = 0
let to_leq (e1, e2, n) = let to_leq (e1, e2, n) =
@ -131,7 +124,7 @@ end = struct
let sort_then_remove_redundancy constraints = let sort_then_remove_redundancy constraints =
let constraints_sorted = IList.sort compare constraints in let constraints_sorted = IList.sort compare constraints in
let have_same_key (e1, e2, _) (f1, f2, _) = exp_pair_compare (e1, e2) (f1, f2) = 0 in let have_same_key (e1, e2, _) (f1, f2, _) = [%compare: Exp.t * Exp.t] (e1, e2) (f1, f2) = 0 in
remove_redundancy have_same_key [] constraints_sorted remove_redundancy have_same_key [] constraints_sorted
let remove_redundancy constraints = let remove_redundancy constraints =
@ -146,7 +139,7 @@ end = struct
| constr:: rest, constr':: rest' -> | constr:: rest, constr':: rest' ->
let e1, e2, n = constr in let e1, e2, n = constr in
let f1, f2, m = constr' in let f1, f2, m = constr' in
let c1 = exp_pair_compare (e1, e2) (f1, f2) in let c1 = [%compare: Exp.t * Exp.t] (e1, e2) (f1, f2) in
if c1 = 0 && IntLit.lt n m then if c1 = 0 && IntLit.lt n m then
combine acc_todos acc_seen constraints_new rest' combine acc_todos acc_seen constraints_new rest'
else if c1 = 0 then else if c1 = 0 then

Loading…
Cancel
Save