sig
  type t = { mutable abstract0 : Abstract0.t; mutable env : Environment.t; }
  type box1 = {
    mutable interval_array : Interval.t array;
    mutable box1_env : Environment.t;
  }
  val copy : Manager.t -> Abstract1.t -> Abstract1.t
  val size : Manager.t -> Abstract1.t -> int
  val minimize : Manager.t -> Abstract1.t -> unit
  val canonicalize : Manager.t -> Abstract1.t -> unit
  val approximate : Manager.t -> Abstract1.t -> '-> int -> unit
  val is_minimal : Manager.t -> Abstract1.t -> Manager.tbool
  val is_canonical : Manager.t -> Abstract1.t -> Manager.tbool
  external fdump : Manager.t -> Abstract1.t -> unit
    = "camlidl_abstract1_ap_abstract1_fdump"
  val print : Format.formatter -> Abstract1.t -> unit
  external bottom : Manager.t -> Environment.t -> Abstract1.t
    = "camlidl_abstract1_ap_abstract1_bottom"
  external top : Manager.t -> Environment.t -> Abstract1.t
    = "camlidl_abstract1_ap_abstract1_top"
  external of_box :
    Manager.t ->
    Environment.t -> Var.t array -> Interval.t array -> Abstract1.t
    = "camlidl_abstract1_ap_abstract1_of_box"
  external of_lincons_array :
    Manager.t -> Environment.t -> Lincons1.earray -> Abstract1.t
    = "camlidl_abstract1_ap_abstract1_of_lincons_array"
  val manager : Abstract1.t -> Manager.t
  val env : Abstract1.t -> Environment.t
  val abstract0 : Abstract1.t -> Abstract0.t
  val is_bottom : Manager.t -> Abstract1.t -> Manager.tbool
  val is_top : Manager.t -> Abstract1.t -> Manager.tbool
  external is_leq : Manager.t -> Abstract1.t -> Abstract1.t -> Manager.tbool
    = "camlidl_abstract1_ap_abstract1_is_leq"
  external is_eq : Manager.t -> Abstract1.t -> Abstract1.t -> Manager.tbool
    = "camlidl_abstract1_ap_abstract1_is_eq"
  external sat_lincons :
    Manager.t -> Abstract1.t -> Lincons1.t -> Manager.tbool
    = "camlidl_abstract1_ap_abstract1_sat_lincons"
  external sat_interval :
    Manager.t -> Abstract1.t -> Var.t -> Interval.t -> Manager.tbool
    = "camlidl_abstract1_ap_abstract1_sat_interval"
  external is_variable_unconstrained :
    Manager.t -> Abstract1.t -> Var.t -> Manager.tbool
    = "camlidl_abstract1_ap_abstract1_is_variable_unconstrained"
  external bound_variable : Manager.t -> Abstract1.t -> Var.t -> Interval.t
    = "camlidl_abstract1_ap_abstract1_bound_variable"
  external bound_linexpr :
    Manager.t -> Abstract1.t -> Linexpr1.t -> Interval.t
    = "camlidl_abstract1_ap_abstract1_bound_linexpr"
  val to_box : Manager.t -> Abstract1.t -> Abstract1.box1
  val to_lincons_array : Manager.t -> Abstract1.t -> Lincons1.earray
  val to_generator_array : Manager.t -> Abstract1.t -> Generator1.earray
  external meet : Manager.t -> Abstract1.t -> Abstract1.t -> Abstract1.t
    = "camlidl_abstract1_ap_abstract1_meet"
  external meet_array : Manager.t -> Abstract1.t array -> Abstract1.t
    = "camlidl_abstract1_ap_abstract1_meet_array"
  external meet_lincons_array :
    Manager.t -> Abstract1.t -> Lincons1.earray -> Abstract1.t
    = "camlidl_abstract1_ap_abstract1_meet_lincons_array"
  external join : Manager.t -> Abstract1.t -> Abstract1.t -> Abstract1.t
    = "camlidl_abstract1_ap_abstract1_join"
  external join_array : Manager.t -> Abstract1.t array -> Abstract1.t
    = "camlidl_abstract1_ap_abstract1_join_array"
  external add_ray_array :
    Manager.t -> Abstract1.t -> Generator1.earray -> Abstract1.t
    = "camlidl_abstract1_ap_abstract1_add_ray_array"
  external meet_with : Manager.t -> Abstract1.t -> Abstract1.t -> unit
    = "camlidl_abstract1_ap_abstract1_meet_with"
  external meet_lincons_array_with :
    Manager.t -> Abstract1.t -> Lincons1.earray -> unit
    = "camlidl_abstract1_ap_abstract1_meet_lincons_array_with"
  external join_with : Manager.t -> Abstract1.t -> Abstract1.t -> unit
    = "camlidl_abstract1_ap_abstract1_join_with"
  external add_ray_array_with :
    Manager.t -> Abstract1.t -> Generator1.earray -> unit
    = "camlidl_abstract1_ap_abstract1_add_ray_array_with"
  external assign_linexpr :
    Manager.t ->
    Abstract1.t -> Var.t -> Linexpr1.t -> Abstract1.t option -> Abstract1.t
    = "camlidl_abstract1_ap_abstract1_assign_linexpr"
  external substitute_linexpr :
    Manager.t ->
    Abstract1.t -> Var.t -> Linexpr1.t -> Abstract1.t option -> Abstract1.t
    = "camlidl_abstract1_ap_abstract1_substitute_linexpr"
  external assign_linexpr_array :
    Manager.t ->
    Abstract1.t ->
    Var.t array -> Linexpr1.t array -> Abstract1.t option -> Abstract1.t
    = "camlidl_abstract1_ap_abstract1_assign_linexpr_array"
  external substitute_linexpr_array :
    Manager.t ->
    Abstract1.t ->
    Var.t array -> Linexpr1.t array -> Abstract1.t option -> Abstract1.t
    = "camlidl_abstract1_ap_abstract1_substitute_linexpr_array"
  external assign_linexpr_with :
    Manager.t ->
    Abstract1.t -> Var.t -> Linexpr1.t -> Abstract1.t option -> unit
    = "camlidl_abstract1_ap_abstract1_assign_linexpr_with"
  external substitute_linexpr_with :
    Manager.t ->
    Abstract1.t -> Var.t -> Linexpr1.t -> Abstract1.t option -> unit
    = "camlidl_abstract1_ap_abstract1_substitute_linexpr_with"
  external assign_linexpr_array_with :
    Manager.t ->
    Abstract1.t ->
    Var.t array -> Linexpr1.t array -> Abstract1.t option -> unit
    = "camlidl_abstract1_ap_abstract1_assign_linexpr_array_with"
  external substitute_linexpr_array_with :
    Manager.t ->
    Abstract1.t ->
    Var.t array -> Linexpr1.t array -> Abstract1.t option -> unit
    = "camlidl_abstract1_ap_abstract1_substitute_linexpr_array_with"
  external forget_array :
    Manager.t -> Abstract1.t -> Var.t array -> bool -> Abstract1.t
    = "camlidl_abstract1_ap_abstract1_forget_array"
  external forget_array_with :
    Manager.t -> Abstract1.t -> Var.t array -> bool -> unit
    = "camlidl_abstract1_ap_abstract1_forget_array_with"
  external change_environment :
    Manager.t -> Abstract1.t -> Environment.t -> bool -> Abstract1.t
    = "camlidl_abstract1_ap_abstract1_change_environment"
  external minimize_environment : Manager.t -> Abstract1.t -> Abstract1.t
    = "camlidl_abstract1_ap_abstract1_minimize_environment"
  external rename_array :
    Manager.t -> Abstract1.t -> Var.t array -> Var.t array -> Abstract1.t
    = "camlidl_abstract1_ap_abstract1_rename_array"
  external change_environment_with :
    Manager.t -> Abstract1.t -> Environment.t -> bool -> unit
    = "camlidl_abstract1_ap_abstract1_change_environment_with"
  external minimize_environment_with : Manager.t -> Abstract1.t -> unit
    = "camlidl_abstract1_ap_abstract1_minimize_environment_with"
  external rename_array_with :
    Manager.t -> Abstract1.t -> Var.t array -> Var.t array -> unit
    = "camlidl_abstract1_ap_abstract1_rename_array_with"
  external expand :
    Manager.t -> Abstract1.t -> Var.t -> Var.t array -> Abstract1.t
    = "camlidl_abstract1_ap_abstract1_expand"
  external fold : Manager.t -> Abstract1.t -> Var.t array -> Abstract1.t
    = "camlidl_abstract1_ap_abstract1_fold"
  external expand_with :
    Manager.t -> Abstract1.t -> Var.t -> Var.t array -> unit
    = "camlidl_abstract1_ap_abstract1_expand_with"
  external fold_with : Manager.t -> Abstract1.t -> Var.t array -> unit
    = "camlidl_abstract1_ap_abstract1_fold_with"
  external widening : Manager.t -> Abstract1.t -> Abstract1.t -> Abstract1.t
    = "camlidl_abstract1_ap_abstract1_widening"
  external widening_threshold :
    Manager.t -> Abstract1.t -> Abstract1.t -> Lincons1.earray -> Abstract1.t
    = "camlidl_abstract1_ap_abstract1_widening_threshold"
  external closure : Manager.t -> Abstract1.t -> Abstract1.t
    = "camlidl_abstract1_ap_abstract1_closure"
  external closure_with : Manager.t -> Abstract1.t -> unit
    = "camlidl_abstract1_ap_abstract1_closure_with"
end