sig
  type t
  and unop = Neg | Cast | Sqrt
  and binop = Add | Sub | Mul | Div | Mod | Pow
  and typ = Real | Int | Single | Double | Extended | Quad
  and round = Near | Zero | Up | Down | Rnd
  type expr =
      Cst of Apron.Coeff.t
    | Dim of Apron.Dim.t
    | Unop of Apron.Texpr0.unop * Apron.Texpr0.expr * Apron.Texpr0.typ *
        Apron.Texpr0.round
    | Binop of Apron.Texpr0.binop * Apron.Texpr0.expr * Apron.Texpr0.expr *
        Apron.Texpr0.typ * Apron.Texpr0.round
  external of_expr : Apron.Texpr0.expr -> Apron.Texpr0.t
    = "camlidl_texpr0_ap_texpr0_of_expr"
  external copy : Apron.Texpr0.t -> Apron.Texpr0.t
    = "camlidl_texpr0_ap_texpr0_copy"
  external of_linexpr : Apron.Linexpr0.t -> Apron.Texpr0.t
    = "camlidl_texpr0_ap_texpr0_of_linexpr"
  external to_expr : Apron.Texpr0.t -> Apron.Texpr0.expr
    = "camlidl_texpr0_ap_texpr0_to_expr"
  external cst : Apron.Coeff.t -> Apron.Texpr0.t
    = "camlidl_texpr0_ap_texpr0_cst"
  external dim : Apron.Dim.t -> Apron.Texpr0.t
    = "camlidl_texpr0_ap_texpr0_dim"
  external unop :
    Apron.Texpr0.unop ->
    Apron.Texpr0.t ->
    Apron.Texpr0.typ -> Apron.Texpr0.round -> Apron.Texpr0.t
    = "camlidl_texpr0_ap_texpr0_unop"
  external binop :
    Apron.Texpr0.binop ->
    Apron.Texpr0.typ ->
    Apron.Texpr0.round -> Apron.Texpr0.t -> Apron.Texpr0.t -> Apron.Texpr0.t
    = "camlidl_texpr0_ap_texpr0_binop"
  external is_interval_cst : Apron.Texpr0.t -> bool
    = "camlidl_texpr0_ap_texpr0_is_interval_cst"
  external is_interval_linear : Apron.Texpr0.t -> bool
    = "camlidl_texpr0_ap_texpr0_is_interval_linear"
  external is_interval_polynomial : Apron.Texpr0.t -> bool
    = "camlidl_texpr0_ap_texpr0_is_interval_polynomial"
  external is_interval_polyfrac : Apron.Texpr0.t -> bool
    = "camlidl_texpr0_ap_texpr0_is_interval_polyfrac"
  external is_scalar : Apron.Texpr0.t -> bool
    = "camlidl_texpr0_ap_texpr0_is_scalar"
  val string_of_unop : Apron.Texpr0.unop -> string
  val string_of_binop : Apron.Texpr0.binop -> string
  val string_of_typ : Apron.Texpr0.typ -> string
  val string_of_round : Apron.Texpr0.round -> string
  val print_unop : Format.formatter -> Apron.Texpr0.unop -> unit
  val print_binop : Format.formatter -> Apron.Texpr0.binop -> unit
  val print_typ : Format.formatter -> Apron.Texpr0.typ -> unit
  val print_round : Format.formatter -> Apron.Texpr0.round -> unit
  val print_expr :
    (Apron.Dim.t -> string) -> Format.formatter -> Apron.Texpr0.expr -> unit
  val print :
    (Apron.Dim.t -> string) -> Format.formatter -> Apron.Texpr0.t -> unit
  val print_sprint_unop :
    Apron.Texpr0.unop -> Apron.Texpr0.typ -> Apron.Texpr0.round -> string
  val print_sprint_binop :
    Apron.Texpr0.binop -> Apron.Texpr0.typ -> Apron.Texpr0.round -> string
  val print_precedence_of_unop : Apron.Texpr0.unop -> int
  val print_precedence_of_binop : Apron.Texpr0.binop -> int
end