sig
  type 'a expr =
      [ `Conc of 'Expr.expr * 'Expr.expr
      | `Conv of 'Expr.expr
      | `Inter of 'Expr.expr * 'Expr.expr
      | `Star of 'Expr.expr
      | `Un
      | `Union of 'Expr.expr * 'Expr.expr
      | `Var of 'a
      | `Zero ]
  type 'a rklm =
      [ `Conc of 'Expr.rklm * 'Expr.rklm
      | `Inter of 'Expr.rklm * 'Expr.rklm
      | `Star of 'Expr.rklm
      | `Union of 'Expr.rklm * 'Expr.rklm
      | `Var of 'a ]
  type 'a rkli =
      [ `Conc of 'Expr.rkli * 'Expr.rkli
      | `Inter of 'Expr.rkli * 'Expr.rkli
      | `Un
      | `Union of 'Expr.rkli * 'Expr.rkli
      | `Var of 'a
      | `Zero ]
  type 'a rkl =
      [ `Conc of 'Expr.rkl * 'Expr.rkl
      | `Inter of 'Expr.rkl * 'Expr.rkl
      | `Union of 'Expr.rkl * 'Expr.rkl
      | `Var of 'a
      | `Zero ]
  type 'a ground =
      [ `Conc of 'Expr.ground * 'Expr.ground
      | `Inter of 'Expr.ground * 'Expr.ground
      | `Var of 'a ]
  type comp = [ `Eq | `Geq | `Gt | `Incomp | `Leq | `Lt | `Neq ]
  type 'a eqs = Expr.comp * 'Expr.expr * 'Expr.expr
end