type inttype = [ | `Int| `Int32| `Int64| `Bigint
]type numtype = [ | inttype| `Float64
]type numconst = [ | `Int of int| `Int32 of Int32.t| `Int64 of Int64.t| `Bigint of Z.t| `Float64 of float
]type unary_num_op = [ | `Neg| `Not
]type binary_arith_op = [ | `Add| `Sub| `Mul| `Div| `Mod
]type binary_bitwise_op = [ | `And| `Or| `Xor| `Lsl| `Lsr| `Asr
]type binary_comparison = [ | `Lt| `Gt| `Lte| `Gte| `Eq
]type vector_type = [ | `Array| `Bytevec
]type mutability = [ | `Imm| `Mut
]type block_tag = private inttype case = [ | `Tag of int| `Deftag| `Intrange of int * int
]val fresh : string -> varand binding = [ | `Unnamed of t| `Named of var * t| `Recursive of (var * t) list
]val bind_val : t -> (t -> t) -> tval bind_rec : (t -> t) -> (t -> t) -> tval lambda : (t -> t) -> tval lambda2 : (t -> t -> t) -> tval if_ : t -> t -> t -> t