Term.MakeSourcemodule A : Sigs.HASHABLEmodule B : Sigs.HASHABLEtype 'a op = 'a operator = | Not : unary op| Sext : size -> unary op| Uext : size -> unary op| Restrict : int interval -> unary op| Plus : binary op| Minus : _ op| Mul : binary op| Udiv : binary op| Urem : binary op| Sdiv : binary op| Srem : binary op| Or : binary op| And : binary op| Xor : binary op| Concat : binary op| Lsl : binary op| Lsr : binary op| Asr : binary op| Rol : binary op| Ror : binary op| Eq : binary op| Diff : binary op| Ule : binary op| Ult : binary op| Uge : binary op| Ugt : binary op| Sle : binary op| Slt : binary op| Sge : binary op| Sgt : binary optype ('k, 'a, 'b) term = private ('k, 'a, 'b) t = | Var : {hash : int;size : size;name : string;label : 'a;} -> ([< `Var | `Loc | `Exp ], 'a, _) term| Load : {hash : int;len : size;dir : endianness;mutable addr : ([ `Exp ], 'a, 'b) term;label : 'b;} -> ([< `Mem | `Loc | `Exp ], 'a, 'b) term| Cst : Bitvector.t -> ([< `Cst | `Exp ], _, _) term| Unary : {} -> ([< `Unary | `Exp ], 'a, 'b) term| Binary : {hash : int;size : size;f : binary operator;mutable x : ([ `Exp ], 'a, 'b) term;mutable y : ([ `Exp ], 'a, 'b) term;} -> ([< `Binary | `Exp ], 'a, 'b) term| Ite : {hash : int;size : size;mutable c : ([ `Exp ], 'a, 'b) term;mutable t : ([ `Exp ], 'a, 'b) term;mutable e : ([ `Exp ], 'a, 'b) term;} -> ([< `Ite | `Exp ], 'a, 'b) termconstant bv creates a constant expression from the bitvector bv.
binary f x y creates a binary application of f on x and y.
shift_(left|right) e q shifts expression e by quantity q, padding with zeroes
restrict lo hi e creates Dba.ExprUnary(Restrict(lo, hi), e) if hi >= lo && lo >=0.
ones n creates a constant expression of value 1 with length n. I.e.; it has (n - 1) zeros in binary.
Raw constructors
_unary f x creates a unary application of f on x.
_binary f x y creates a binary application of f on x and y.