sig
  type t = { mutable texpr0 : Texpr0.t; mutable env : Environment.t; }
  type unop = Texpr0.unop = Neg | Cast | Sqrt
  type binop = Texpr0.binop = Add | Sub | Mul | Div | Mod
  type typ = Texpr0.typ = Real | Int | Single | Double | Extended | Quad
  type round = Texpr0.round = Near | Zero | Up | Down | Rnd
  type expr =
      Cst of Coeff.t
    | Var of Var.t
    | Unop of Texpr1.unop * Texpr1.expr * Texpr1.typ * Texpr1.round
    | Binop of Texpr1.binop * Texpr1.expr * Texpr1.expr * Texpr1.typ *
        Texpr1.round
  val of_expr : Environment.t -> Texpr1.expr -> Texpr1.t
  val copy : Texpr1.t -> Texpr1.t
  val of_linexpr : Linexpr1.t -> Texpr1.t
  val to_expr : Texpr1.t -> Texpr1.expr
  external cst : Environment.t -> Coeff.t -> Texpr1.t
    = "camlidl_texpr1_ap_texpr1_cst"
  external var : Environment.t -> Var.t -> Texpr1.t
    = "camlidl_texpr1_ap_texpr1_var"
  external unop :
    Texpr0.unop -> Texpr1.t -> Texpr0.typ -> Texpr0.round -> Texpr1.t
    = "camlidl_texpr1_ap_texpr1_unop"
  external binop :
    Texpr0.binop ->
    Texpr1.t -> Texpr1.t -> Texpr0.typ -> Texpr0.round -> Texpr1.t
    = "camlidl_texpr1_ap_texpr1_binop"
  val is_interval_cst : Texpr1.t -> bool
  val is_interval_linear : Texpr1.t -> bool
  val is_interval_polynomial : Texpr1.t -> bool
  val is_interval_polyfrac : Texpr1.t -> bool
  val is_scalar : Texpr1.t -> bool
  external extend_environment : Texpr1.t -> Environment.t -> Texpr1.t
    = "camlidl_texpr1_ap_texpr1_extend_environment"
  external extend_environment_with : Texpr1.t -> Environment.t -> unit
    = "camlidl_texpr1_ap_texpr1_extend_environment_with"
  val get_texpr0 : Texpr1.t -> Texpr0.t
  val get_env : Texpr1.t -> Environment.t
  val string_of_unop : Texpr1.unop -> string
  val string_of_binop : Texpr1.binop -> string
  val string_of_typ : Texpr1.typ -> string
  val string_of_round : Texpr1.round -> string
  val print_unop : Format.formatter -> Texpr1.unop -> unit
  val print_binop : Format.formatter -> Texpr1.binop -> unit
  val print_typ : Format.formatter -> Texpr1.typ -> unit
  val print_round : Format.formatter -> Texpr1.round -> unit
  val print_expr : Format.formatter -> Texpr1.expr -> unit
  val print : Format.formatter -> Texpr1.t -> unit
end