-(* module Ptset =
-struct
- include Set.Make (struct type t = int let compare = (-) end)
- let hash = Hashtbl.hash
-end
- *)
-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))