let hash = Hashtbl.hash
end
*)
-include FiniteCofinite.Make(Ptset)
+module M : FiniteCofinite.S with type elt = Tag.t and type set = Ptset.Int.t =
+ FiniteCofinite.Make(Ptset.Int)
+include M
+
let tag t = singleton t
let pcdata = singleton Tag.pcdata
let attribute = singleton Tag.attribute
let star = diff any (cup pcdata attribute)
let node = neg attribute
+
+let print ppf t =
+ let print_set s =
+ Format.fprintf ppf "{";
+ Ptset.Int.iter
+ (fun t -> Format.fprintf ppf "'%s' " (Tag.to_string t))
+ s;
+ Format.fprintf ppf "}"
+ in
+ if is_finite t then
+ if is_empty t then
+ Format.fprintf ppf "∅" else print_set (positive t)
+ else
+ Format.fprintf ppf "Σ";
+ if not (is_any t) then
+ (Format.fprintf ppf "\\" ; print_set (negative t))