Mlsem_system.Asttype pcustom = {pname : string;pdom : Mlsem_types.Ty.t -> Mlsem_types.Ty.t;proj : Mlsem_types.Ty.t -> Mlsem_types.Ty.t;pgen : bool;}type ccustom = {cname : string;cdom : Mlsem_types.Ty.t -> Mlsem_types.Ty.t list list;cons : Mlsem_types.Ty.t list -> Mlsem_types.Ty.t;cgen : bool;}type projection = | Pi of int * int| PiField of string| PiFieldOpt of string| Hd| Tl| PiTag of Mlsem_types.Tag.t| PCustom of pcustomtype constructor = | Tuple of int| Cons| Rec of string list * bool| Tag of Mlsem_types.Tag.t| Enum of Mlsem_types.Enum.t| Join of int| Meet of int| Negate| Ternary of Mlsem_types.Ty.t| Normalize| CCustom of ccustomtype e = | Value of Mlsem_types.GTy.t| Var of Mlsem_common.Variable.t| Constructor of constructor * t list| Lambda of Mlsem_types.GTy.t * Mlsem_common.Variable.t * t| LambdaRec of (Mlsem_types.GTy.t * Mlsem_common.Variable.t * t) list| Ite of t * Mlsem_types.GTy.t * t * t| App of t * t| Operation of operation * t| Projection of projection * t| Let of Mlsem_types.Ty.t list * Mlsem_common.Variable.t * t * t| TypeCast of t * Mlsem_types.GTy.t * check| TypeCoerce of t * Mlsem_types.GTy.t * check| Alt of t * tand t = Mlsem_common.Eid.t * eval fv : t -> Mlsem_common.VarSet.tval vars : t -> Mlsem_common.VarSet.tval apply_subst : Mlsem_types.Subst.t -> t -> tval pp : Stdlib.Format.formatter -> t -> unitval pp_e : Stdlib.Format.formatter -> e -> unitval pp_check : Stdlib.Format.formatter -> check -> unitval pp_projection : Stdlib.Format.formatter -> projection -> unitval pp_constructor : Stdlib.Format.formatter -> constructor -> unitval pp_operation : Stdlib.Format.formatter -> operation -> unitval pp_pcustom : Stdlib.Format.formatter -> pcustom -> unitval pp_ccustom : Stdlib.Format.formatter -> ccustom -> unitval domain_of_proj : projection -> Mlsem_types.Ty.t -> Mlsem_types.Ty.tval proj : projection -> Mlsem_types.Ty.t -> Mlsem_types.Ty.tval domains_of_construct :
constructor ->
Mlsem_types.Ty.t ->
Mlsem_types.Ty.t list listval construct : constructor -> Mlsem_types.Ty.t list -> Mlsem_types.Ty.tval fun_of_operation : operation -> Mlsem_types.TyScheme.tval coerce : check -> Mlsem_types.GTy.t -> t -> t