+let print_finite fmt e conv =
+ Format.fprintf fmt "{";
+ Pretty.print_list ~sep:"," QName.print fmt (conv e);
+ Format.fprintf fmt "}"
+
+let printer fmt e test conv inv is_any =
+ if test e then print_finite fmt e conv
+ else
+ let () = Format.fprintf fmt "%s" Pretty.big_sigma in
+ if not (is_any e) then begin Format.fprintf fmt "-";print_finite fmt (inv e) conv end
+
+let print fmt e = printer fmt e is_finite elements complement is_any
+
+let specials = [ QName.document; QName.text; QName.text ]
+let notstar = from_list specials
+let star = diff any notstar
+let node = any
+let text = singleton QName.text
+
+module Weak =
+struct
+ include FiniteCofinite.Weak(Ptset.Weak(QName))
+ let print fmt e = printer fmt e is_finite elements complement is_any
+ let notstar = from_list specials
+ let star = diff any notstar
+ let node = any
+ let text = singleton QName.text
+end