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 * 'Syntax.expr * 'Syntax.expr
      | `Cst of Syntax.cst
      | `If of 'Syntax.expr * 'Syntax.expr * 'Syntax.expr
      | `In of 'Syntax.expr * 'Syntax.expr list
      | `Ref of 'a
      | `Unop of Syntax.unop * '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 -> '-> unit) ->
    Format.formatter -> 'Syntax.expr -> unit
  exception Error of string
  val to_expr0 : 'Env.t -> 'Cond.t -> 'Syntax.expr -> 'Expr0.t
  val to_expr1 : 'Env.t -> 'Cond.t -> 'Syntax.expr -> 'Expr1.t
  val to_listexpr1 :
    'Env.t -> 'Cond.t -> 'Syntax.expr list -> 'Expr1.List.t
  val to_listexpr2 :
    ?normalize:bool ->
    ?reduce:bool ->
    ?careset:bool ->
    'Env.t -> 'Cond.t -> 'Syntax.expr list -> 'Expr2.List.t
  val to_boolexpr2 :
    ?normalize:bool ->
    ?reduce:bool ->
    ?careset:bool ->
    'Env.t -> 'Cond.t -> 'Syntax.expr -> 'Expr2.Bool.t
  val error : ('a, Format.formatter, unit, 'b) Pervasives.format4 -> 'a
  val is_zero : 'Syntax.expr -> bool
  val precedence_of_unop : Syntax.unop -> int
  val precedence_of_binop : Syntax.binop -> int
  val precedence_of_expr : 'Syntax.expr -> int
  val cst_to_expr0 :
    'Env.t -> 'Cond.t -> [< Syntax.cst ] -> 'Expr0.expr
  val apply_bbinop :
    'Env.t ->
    'Cond.t ->
    Syntax.bbinop -> 'Expr0.expr -> 'Expr0.expr -> 'Expr0.Bool.t
  val apply_binop :
    'Env.t ->
    'Cond.t -> Syntax.binop -> 'Expr0.t -> 'Expr0.t -> 'Expr0.t
end