X-Git-Url: http://git.nguyen.vg/gitweb/?p=tatoo.git;a=blobdiff_plain;f=src%2Fptset.ml;h=f9bbd03eb6074f96d7d6148ec099b3b75ff47ebb;hp=ee0370a12390e7c42e6c63e3571b51e524e5ecab;hb=974dacbf4f625bfd8ea83db69d6b346050141fea;hpb=6b66008811639324be623a42037b60e02056772c diff --git a/src/ptset.ml b/src/ptset.ml index ee0370a..f9bbd03 100644 --- a/src/ptset.ml +++ b/src/ptset.ml @@ -15,7 +15,7 @@ (***********************************************************************) (* - Time-stamp: + Time-stamp: *) (* Modified by Kim Nguyen *) @@ -26,10 +26,10 @@ INCLUDE "utils.ml" -include Sigs.PTSET +include Ptset_sig module type HConsBuilder = - functor (H : Sigs.AUX.HashedType) -> Hcons.S with type data = H.t + functor (H : Common_sig.HashedType) -> Hcons.S with type data = H.t module Builder (HCB : HConsBuilder) (H : Hcons.Abstract) : S with type elt = H.t = @@ -42,7 +42,7 @@ struct | Branch of int * int * 'a * 'a module rec Node : Hcons.S with type data = Data.t = HCB(Data) - and Data : Sigs.AUX.HashedType with type t = Node.t set = + and Data : Common_sig.HashedType with type t = Node.t set = struct type t = Node.t set let equal x y = @@ -52,7 +52,7 @@ struct | Branch(b1,i1,l1,r1), Branch(b2,i2,l2,r2) -> b1 == b2 && i1 == i2 && (Node.equal l1 l2) && (Node.equal r1 r2) - | _ -> false + | (Empty|Leaf _|Branch _), _ -> false let hash = function | Empty -> 0 @@ -84,8 +84,9 @@ struct let singleton k = leaf k let is_singleton n = - match Node.node n with Leaf _ -> true - | _ -> false + match Node.node n with + | Leaf _ -> true + | Branch _ | Empty -> false let mem (k:elt) n = let kid = Uid.to_int (H.uid k) in @@ -352,9 +353,9 @@ struct | Branch (p1,m1,l1,r1), Branch (p2,m2,l2,r2) -> if m1 == m2 && p1 == p2 then intersect l1 l2 || intersect r1 r2 - else if m1 < m2 && match_prefix p2 p1 m1 then + else if m1 > m2 && match_prefix p2 p1 m1 then intersect (if zero_bit p2 m1 then l1 else r1) s2 - else if m1 > m2 && match_prefix p1 p2 m2 then + else if m1 < m2 && match_prefix p1 p2 m2 then intersect s1 (if zero_bit p1 m2 then l2 else r2) else false