sig
type cst =
[ `Apron of Apron.Coeff.t | `Bint of (bool * int) * int | `Bool of bool ]
type unop =
[ `Apron of Apron.Texpr1.unop * Apron.Texpr1.typ * Apron.Texpr1.round
| `Not ]
type bbinop = [ `And | `EQ | `GEQ | `GT | `LEQ | `LT | `NEQ | `Or ]
type binop =
[ `Apron of Apron.Texpr1.binop * Apron.Texpr1.typ * Apron.Texpr1.round
| `Bool of Syntax.bbinop ]
type 'a expr =
[ `Binop of Syntax.binop * 'a Syntax.expr * 'a Syntax.expr
| `Cst of Syntax.cst
| `If of 'a Syntax.expr * 'a Syntax.expr * 'a Syntax.expr
| `In of 'a Syntax.expr * 'a Syntax.expr list
| `Ref of 'a
| `Unop of Syntax.unop * 'a Syntax.expr ]
val print_cst : Format.formatter -> Syntax.cst -> unit
val print_unop : Format.formatter -> Syntax.unop -> unit
val print_bbinop : Format.formatter -> Syntax.bbinop -> unit
val print_binop : Format.formatter -> Syntax.binop -> unit
val print_expr :
(Format.formatter -> 'a -> unit) ->
Format.formatter -> 'a Syntax.expr -> unit
exception Error of string
val to_expr0 : 'a Env.t -> 'a Cond.t -> 'a Syntax.expr -> 'a Expr0.t
val to_expr1 : 'a Env.t -> 'a Cond.t -> 'a Syntax.expr -> 'a Expr1.t
val to_listexpr1 :
'a Env.t -> 'a Cond.t -> 'a Syntax.expr list -> 'a Expr1.List.t
val to_listexpr2 :
?normalize:bool ->
?reduce:bool ->
?careset:bool ->
'a Env.t -> 'a Cond.t -> 'a Syntax.expr list -> 'a Expr2.List.t
val to_boolexpr2 :
?normalize:bool ->
?reduce:bool ->
?careset:bool ->
'a Env.t -> 'a Cond.t -> 'a Syntax.expr -> 'a Expr2.Bool.t
val error : ('a, Format.formatter, unit, 'b) Pervasives.format4 -> 'a
val is_zero : 'a Syntax.expr -> bool
val precedence_of_unop : Syntax.unop -> int
val precedence_of_binop : Syntax.binop -> int
val precedence_of_expr : 'a Syntax.expr -> int
val cst_to_expr0 :
'a Env.t -> 'a Cond.t -> [< Syntax.cst ] -> 'a Expr0.expr
val apply_bbinop :
'a Env.t ->
'a Cond.t ->
Syntax.bbinop -> 'a Expr0.expr -> 'a Expr0.expr -> 'a Expr0.Bool.t
val apply_binop :
'a Env.t ->
'a Cond.t -> Syntax.binop -> 'a Expr0.t -> 'a Expr0.t -> 'a Expr0.t
end