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