sig
  type t
  external set_gc : int -> unit = "camlidl_abstract0_ap_abstract0_set_gc"
  external copy : Manager.t -> Abstract0.t -> Abstract0.t
    = "camlidl_abstract0_ap_abstract0_copy"
  external size : Manager.t -> Abstract0.t -> int
    = "camlidl_abstract0_ap_abstract0_size"
  external minimize : Manager.t -> Abstract0.t -> unit
    = "camlidl_abstract0_ap_abstract0_minimize"
  external canonicalize : Manager.t -> Abstract0.t -> unit
    = "camlidl_abstract0_ap_abstract0_canonicalize"
  external approximate : Manager.t -> Abstract0.t -> int -> unit
    = "camlidl_abstract0_ap_abstract0_approximate"
  external is_minimal : Manager.t -> Abstract0.t -> Manager.tbool
    = "camlidl_abstract0_ap_abstract0_is_minimal"
  external is_canonical : Manager.t -> Abstract0.t -> Manager.tbool
    = "camlidl_abstract0_ap_abstract0_is_canonical"
  external fdump : Manager.t -> Abstract0.t -> unit
    = "camlidl_abstract0_ap_abstract0_fdump"
  val print : (int -> string) -> Format.formatter -> Abstract0.t -> unit
  external bottom : Manager.t -> int -> int -> Abstract0.t
    = "camlidl_abstract0_ap_abstract0_bottom"
  external top : Manager.t -> int -> int -> Abstract0.t
    = "camlidl_abstract0_ap_abstract0_top"
  external of_box :
    Manager.t -> int -> int -> Interval.t array -> Abstract0.t
    = "camlidl_abstract0_ap_abstract0_of_box"
  external of_lincons_array :
    Manager.t -> int -> int -> Lincons0.t array -> Abstract0.t
    = "camlidl_abstract0_ap_abstract0_of_lincons_array"
  external dimension : Manager.t -> Abstract0.t -> Dim.dimension
    = "camlidl_abstract0_ap_abstract0_dimension"
  external manager : Abstract0.t -> Manager.t
    = "camlidl_abstract0_ap_abstract0_manager"
  external is_bottom : Manager.t -> Abstract0.t -> Manager.tbool
    = "camlidl_abstract0_ap_abstract0_is_bottom"
  external is_top : Manager.t -> Abstract0.t -> Manager.tbool
    = "camlidl_abstract0_ap_abstract0_is_top"
  external is_leq : Manager.t -> Abstract0.t -> Abstract0.t -> Manager.tbool
    = "camlidl_abstract0_ap_abstract0_is_leq"
  external is_eq : Manager.t -> Abstract0.t -> Abstract0.t -> Manager.tbool
    = "camlidl_abstract0_ap_abstract0_is_eq"
  external sat_lincons :
    Manager.t -> Abstract0.t -> Lincons0.t -> Manager.tbool
    = "camlidl_abstract0_ap_abstract0_sat_lincons"
  external sat_interval :
    Manager.t -> Abstract0.t -> Dim.t -> Interval.t -> Manager.tbool
    = "camlidl_abstract0_ap_abstract0_sat_interval"
  external is_dimension_unconstrained :
    Manager.t -> Abstract0.t -> Dim.t -> Manager.tbool
    = "camlidl_abstract0_ap_abstract0_is_dimension_unconstrained"
  external bound_dimension : Manager.t -> Abstract0.t -> Dim.t -> Interval.t
    = "camlidl_abstract0_ap_abstract0_bound_dimension"
  external bound_linexpr :
    Manager.t -> Abstract0.t -> Linexpr0.t -> Interval.t
    = "camlidl_abstract0_ap_abstract0_bound_linexpr"
  external to_box : Manager.t -> Abstract0.t -> Interval.t array
    = "camlidl_abstract0_ap_abstract0_to_box"
  external to_lincons_array : Manager.t -> Abstract0.t -> Lincons0.t array
    = "camlidl_abstract0_ap_abstract0_to_lincons_array"
  external to_generator_array :
    Manager.t -> Abstract0.t -> Generator0.t array
    = "camlidl_abstract0_ap_abstract0_to_generator_array"
  external meet : Manager.t -> Abstract0.t -> Abstract0.t -> Abstract0.t
    = "camlidl_abstract0_ap_abstract0_meet"
  external meet_array : Manager.t -> Abstract0.t array -> Abstract0.t
    = "camlidl_abstract0_ap_abstract0_meet_array"
  external meet_lincons_array :
    Manager.t -> Abstract0.t -> Lincons0.t array -> Abstract0.t
    = "camlidl_abstract0_ap_abstract0_meet_lincons_array"
  external join : Manager.t -> Abstract0.t -> Abstract0.t -> Abstract0.t
    = "camlidl_abstract0_ap_abstract0_join"
  external join_array : Manager.t -> Abstract0.t array -> Abstract0.t
    = "camlidl_abstract0_ap_abstract0_join_array"
  external add_ray_array :
    Manager.t -> Abstract0.t -> Generator0.t array -> Abstract0.t
    = "camlidl_abstract0_ap_abstract0_add_ray_array"
  external meet_with : Manager.t -> Abstract0.t -> Abstract0.t -> unit
    = "camlidl_abstract0_ap_abstract0_meet_with"
  external meet_lincons_array_with :
    Manager.t -> Abstract0.t -> Lincons0.t array -> unit
    = "camlidl_abstract0_ap_abstract0_meet_lincons_array_with"
  external join_with : Manager.t -> Abstract0.t -> Abstract0.t -> unit
    = "camlidl_abstract0_ap_abstract0_join_with"
  external add_ray_array_with :
    Manager.t -> Abstract0.t -> Generator0.t array -> unit
    = "camlidl_abstract0_ap_abstract0_add_ray_array_with"
  external assign_linexpr :
    Manager.t ->
    Abstract0.t -> Dim.t -> Linexpr0.t -> Abstract0.t option -> Abstract0.t
    = "camlidl_abstract0_ap_abstract0_assign_linexpr"
  external substitute_linexpr :
    Manager.t ->
    Abstract0.t -> Dim.t -> Linexpr0.t -> Abstract0.t option -> Abstract0.t
    = "camlidl_abstract0_ap_abstract0_substitute_linexpr"
  external assign_linexpr_array :
    Manager.t ->
    Abstract0.t ->
    Dim.t array -> Linexpr0.t array -> Abstract0.t option -> Abstract0.t
    = "camlidl_abstract0_ap_abstract0_assign_linexpr_array"
  external substitute_linexpr_array :
    Manager.t ->
    Abstract0.t ->
    Dim.t array -> Linexpr0.t array -> Abstract0.t option -> Abstract0.t
    = "camlidl_abstract0_ap_abstract0_substitute_linexpr_array"
  external assign_linexpr_with :
    Manager.t ->
    Abstract0.t -> Dim.t -> Linexpr0.t -> Abstract0.t option -> unit
    = "camlidl_abstract0_ap_abstract0_assign_linexpr_with"
  external substitute_linexpr_with :
    Manager.t ->
    Abstract0.t -> Dim.t -> Linexpr0.t -> Abstract0.t option -> unit
    = "camlidl_abstract0_ap_abstract0_substitute_linexpr_with"
  external assign_linexpr_array_with :
    Manager.t ->
    Abstract0.t ->
    Dim.t array -> Linexpr0.t array -> Abstract0.t option -> unit
    = "camlidl_abstract0_ap_abstract0_assign_linexpr_array_with"
  external substitute_linexpr_array_with :
    Manager.t ->
    Abstract0.t ->
    Dim.t array -> Linexpr0.t array -> Abstract0.t option -> unit
    = "camlidl_abstract0_ap_abstract0_substitute_linexpr_array_with"
  external forget_array :
    Manager.t -> Abstract0.t -> Dim.t array -> bool -> Abstract0.t
    = "camlidl_abstract0_ap_abstract0_forget_array"
  external forget_array_with :
    Manager.t -> Abstract0.t -> Dim.t array -> bool -> unit
    = "camlidl_abstract0_ap_abstract0_forget_array_with"
  external add_dimensions :
    Manager.t -> Abstract0.t -> Dim.change -> bool -> Abstract0.t
    = "camlidl_abstract0_ap_abstract0_add_dimensions"
  external remove_dimensions :
    Manager.t -> Abstract0.t -> Dim.change -> Abstract0.t
    = "camlidl_abstract0_ap_abstract0_remove_dimensions"
  external permute_dimensions :
    Manager.t -> Abstract0.t -> Dim.perm option -> Abstract0.t
    = "camlidl_abstract0_ap_abstract0_permute_dimensions"
  external add_dimensions_with :
    Manager.t -> Abstract0.t -> Dim.change -> bool -> unit
    = "camlidl_abstract0_ap_abstract0_add_dimensions_with"
  external remove_dimensions_with :
    Manager.t -> Abstract0.t -> Dim.change -> unit
    = "camlidl_abstract0_ap_abstract0_remove_dimensions_with"
  external permute_dimensions_with :
    Manager.t -> Abstract0.t -> Dim.perm option -> unit
    = "camlidl_abstract0_ap_abstract0_permute_dimensions_with"
  external expand : Manager.t -> Abstract0.t -> Dim.t -> int -> Abstract0.t
    = "camlidl_abstract0_ap_abstract0_expand"
  external fold : Manager.t -> Abstract0.t -> Dim.t array -> Abstract0.t
    = "camlidl_abstract0_ap_abstract0_fold"
  external expand_with : Manager.t -> Abstract0.t -> Dim.t -> int -> unit
    = "camlidl_abstract0_ap_abstract0_expand_with"
  external fold_with : Manager.t -> Abstract0.t -> Dim.t array -> unit
    = "camlidl_abstract0_ap_abstract0_fold_with"
  external widening : Manager.t -> Abstract0.t -> Abstract0.t -> Abstract0.t
    = "camlidl_abstract0_ap_abstract0_widening"
  external widening_threshold :
    Manager.t ->
    Abstract0.t -> Abstract0.t -> Lincons0.t array -> Abstract0.t
    = "camlidl_abstract0_ap_abstract0_widening_threshold"
  external closure : Manager.t -> Abstract0.t -> Abstract0.t
    = "camlidl_abstract0_ap_abstract0_closure"
  external closure_with : Manager.t -> Abstract0.t -> unit
    = "camlidl_abstract0_ap_abstract0_closure_with"
  val print_array :
    ?first:(unit, Format.formatter, unit) Pervasives.format ->
    ?sep:(unit, Format.formatter, unit) Pervasives.format ->
    ?last:(unit, Format.formatter, unit) Pervasives.format ->
    (Format.formatter -> '-> unit) -> Format.formatter -> 'a array -> unit
end