sig
  type 'a 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 hash : 'Manager.t -> 'Abstract0.t -> int
    = "camlidl_abstract0_ap_abstract0_hash"
  external approximate : 'Manager.t -> 'Abstract0.t -> int -> unit
    = "camlidl_abstract0_ap_abstract0_approximate"
  external fdump : 'Manager.t -> 'Abstract0.t -> unit
    = "camlidl_abstract0_ap_abstract0_fdump"
  val print :
    (int -> string) -> Stdlib.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 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 -> bool
    = "camlidl_abstract0_ap_abstract0_is_bottom"
  external is_top : 'Manager.t -> 'Abstract0.t -> bool
    = "camlidl_abstract0_ap_abstract0_is_top"
  external is_leq : 'Manager.t -> 'Abstract0.t -> 'Abstract0.t -> bool
    = "camlidl_abstract0_ap_abstract0_is_leq"
  external is_eq : 'Manager.t -> 'Abstract0.t -> 'Abstract0.t -> bool
    = "camlidl_abstract0_ap_abstract0_is_eq"
  external sat_lincons : 'Manager.t -> 'Abstract0.t -> Lincons0.t -> bool
    = "camlidl_abstract0_ap_abstract0_sat_lincons"
  external sat_tcons : 'Manager.t -> 'Abstract0.t -> Tcons0.t -> bool
    = "camlidl_abstract0_ap_abstract0_sat_tcons"
  external sat_interval :
    'Manager.t -> 'Abstract0.t -> Dim.t -> Interval.t -> bool
    = "camlidl_abstract0_ap_abstract0_sat_interval"
  external is_dimension_unconstrained :
    'Manager.t -> 'Abstract0.t -> Dim.t -> bool
    = "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 bound_texpr :
    'Manager.t -> 'Abstract0.t -> Texpr0.t -> Interval.t
    = "camlidl_abstract0_ap_abstract0_bound_texpr"
  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_tcons_array : 'Manager.t -> 'Abstract0.t -> Tcons0.t array
    = "camlidl_abstract0_ap_abstract0_to_tcons_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 meet_tcons_array :
    'Manager.t -> 'Abstract0.t -> Tcons0.t array -> 'Abstract0.t
    = "camlidl_abstract0_ap_abstract0_meet_tcons_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 meet_tcons_array_with :
    'Manager.t -> 'Abstract0.t -> Tcons0.t array -> unit
    = "camlidl_abstract0_ap_abstract0_meet_tcons_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_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_texpr_array :
    'Manager.t ->
    'Abstract0.t ->
    Dim.t array -> Texpr0.t array -> 'Abstract0.t option -> 'Abstract0.t
    = "camlidl_abstract0_ap_abstract0_assign_texpr_array"
  external substitute_texpr_array :
    'Manager.t ->
    'Abstract0.t ->
    Dim.t array -> Texpr0.t array -> 'Abstract0.t option -> 'Abstract0.t
    = "camlidl_abstract0_ap_abstract0_substitute_texpr_array"
  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 assign_texpr_array_with :
    'Manager.t ->
    'Abstract0.t ->
    Dim.t array -> Texpr0.t array -> 'Abstract0.t option -> unit
    = "camlidl_abstract0_ap_abstract0_assign_texpr_array_with"
  external substitute_texpr_array_with :
    'Manager.t ->
    'Abstract0.t ->
    Dim.t array -> Texpr0.t array -> 'Abstract0.t option -> unit
    = "camlidl_abstract0_ap_abstract0_substitute_texpr_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 apply_dimchange2 :
    'Manager.t -> 'Abstract0.t -> Dim.change2 -> bool -> 'Abstract0.t
    = "camlidl_abstract0_ap_abstract0_apply_dimchange2"
  external permute_dimensions :
    'Manager.t -> 'Abstract0.t -> Dim.perm -> '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 apply_dimchange2_with :
    'Manager.t -> 'Abstract0.t -> Dim.change2 -> bool -> unit
    = "camlidl_abstract0_ap_abstract0_apply_dimchange2_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 of_lincons_array :
    'Manager.t -> int -> int -> Lincons0.t array -> 'Abstract0.t
  val of_tcons_array :
    'Manager.t -> int -> int -> Tcons0.t array -> 'Abstract0.t
  val assign_linexpr :
    'Manager.t ->
    'Abstract0.t ->
    Dim.t -> Linexpr0.t -> 'Abstract0.t option -> 'Abstract0.t
  val substitute_linexpr :
    'Manager.t ->
    'Abstract0.t ->
    Dim.t -> Linexpr0.t -> 'Abstract0.t option -> 'Abstract0.t
  val assign_texpr :
    'Manager.t ->
    'Abstract0.t ->
    Dim.t -> Texpr0.t -> 'Abstract0.t option -> 'Abstract0.t
  val substitute_texpr :
    'Manager.t ->
    'Abstract0.t ->
    Dim.t -> Texpr0.t -> 'Abstract0.t option -> 'Abstract0.t
  val assign_linexpr_with :
    'Manager.t ->
    'Abstract0.t -> Dim.t -> Linexpr0.t -> 'Abstract0.t option -> unit
  val substitute_linexpr_with :
    'Manager.t ->
    'Abstract0.t -> Dim.t -> Linexpr0.t -> 'Abstract0.t option -> unit
  val assign_texpr_with :
    'Manager.t ->
    'Abstract0.t -> Dim.t -> Texpr0.t -> 'Abstract0.t option -> unit
  val substitute_texpr_with :
    'Manager.t ->
    'Abstract0.t -> Dim.t -> Texpr0.t -> 'Abstract0.t option -> unit
  val print_array :
    ?first:(unit, Stdlib.Format.formatter, unit) Stdlib.format ->
    ?sep:(unit, Stdlib.Format.formatter, unit) Stdlib.format ->
    ?last:(unit, Stdlib.Format.formatter, unit) Stdlib.format ->
    (Stdlib.Format.formatter -> '-> unit) ->
    Stdlib.Format.formatter -> 'a array -> unit
end