sig
  val print_expr :
    ([< `Conc of 'a * 'a
      | `Conv of 'a
      | `Inter of 'a * 'a
      | `Star of 'a
      | `Un
      | `Union of 'a * 'a
      | `Var of string
      | `Zero ]
     as 'a) ->
    string
  val print_comp :
    [< `Eq | `Geq | `Gt | `Incomp | `Leq | `Lt | `Neq ] -> string
  val print_eq :
    [< `Eq | `Geq | `Gt | `Incomp | `Leq | `Lt | `Neq ] *
    ([< `Conc of 'a * 'a
      | `Conv of 'a
      | `Inter of 'a * 'a
      | `Star of 'a
      | `Un
      | `Union of 'a * 'a
      | `Var of string
      | `Zero ]
     as 'a) *
    '-> string
  val get_string : string -> string Expr.expr
  val get_eq : string -> Expr.comp * string Expr.expr * string Expr.expr
end