AltErgoLib.Adt
type 'a abstract =
| Constr of {
c_name : Hstring.t;
c_ty : Ty.t;
c_args : (Hstring.t * 'a) list;
}
| Select of {
d_name : Hstring.t;
d_ty : Ty.t;
d_arg : 'a;
| Tester of {
t_name : Hstring.t;
t_arg : 'a;
| Alien of 'a
module type ALIEN = sig ... end
module Shostak (X : ALIEN) : Sig.SHOSTAK with type r = X.r and type t = X.r abstract