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