module Abstract0:sig..end
type 'a t 
'a allows to distinguish abstract values with different underlying abstract domains.val set_gc : int -> unitval copy : 'a Apron.Manager.t -> 'a t -> 'a tval size : 'a Apron.Manager.t -> 'a t -> intval minimize : 'a Apron.Manager.t -> 'a t -> unitval canonicalize : 'a Apron.Manager.t -> 'a t -> unitval hash : 'a Apron.Manager.t -> 'a t -> intval approximate : 'a Apron.Manager.t -> 'a t -> int -> unitapproximate man abs alg perform some transformation on the abstract value, guided by the argument alg. The transformation may lose information.  The argument alg overrides the field algorithm of the structure of type Manager.funopt associated to ap_abstract0_approximate (commodity feature).val fdump : 'a Apron.Manager.t -> 'a t -> unitstdout C stream the internal representation of an abstract value, for debugging purposesval print : (int -> string) -> Format.formatter -> 'a t -> unitval bottom : 'a Apron.Manager.t -> int -> int -> 'a tval top : 'a Apron.Manager.t -> int -> int -> 'a tval of_box : 'a Apron.Manager.t ->
       int -> int -> Apron.Interval.t array -> 'a t
  of_box man intdim realdim array abstracts an hypercube defined by the array of intervals of size intdim+realdim
val dimension : 'a Apron.Manager.t -> 'a t -> Apron.Dim.dimensionval manager : 'a t -> 'a Apron.Manager.tval is_bottom : 'a Apron.Manager.t -> 'a t -> boolval is_top : 'a Apron.Manager.t -> 'a t -> boolval is_leq : 'a Apron.Manager.t -> 'a t -> 'a t -> boolval is_eq : 'a Apron.Manager.t -> 'a t -> 'a t -> boolval sat_lincons : 'a Apron.Manager.t -> 'a t -> Apron.Lincons0.t -> boolval sat_tcons : 'a Apron.Manager.t -> 'a t -> Apron.Tcons0.t -> boolval sat_interval : 'a Apron.Manager.t ->
       'a t -> Apron.Dim.t -> Apron.Interval.t -> booldim in interval ?val is_dimension_unconstrained : 'a Apron.Manager.t -> 'a t -> Apron.Dim.t -> boolval bound_dimension : 'a Apron.Manager.t -> 'a t -> Apron.Dim.t -> Apron.Interval.tval bound_linexpr : 'a Apron.Manager.t ->
       'a t -> Apron.Linexpr0.t -> Apron.Interval.t
  Implement a form of linear programming, where the argument linear expression is the one to optimize under the constraints induced by the abstract value.
val bound_texpr : 'a Apron.Manager.t ->
       'a t -> Apron.Texpr0.t -> Apron.Interval.tval to_box : 'a Apron.Manager.t -> 'a t -> Apron.Interval.t arrayval to_lincons_array : 'a Apron.Manager.t -> 'a t -> Apron.Lincons0.t arrayval to_tcons_array : 'a Apron.Manager.t -> 'a t -> Apron.Tcons0.t arrayval to_generator_array : 'a Apron.Manager.t -> 'a t -> Apron.Generator0.t arrayval meet : 'a Apron.Manager.t ->
       'a t -> 'a t -> 'a tval meet_array : 'a Apron.Manager.t -> 'a t array -> 'a tval meet_lincons_array : 'a Apron.Manager.t ->
       'a t -> Apron.Lincons0.t array -> 'a tval meet_tcons_array : 'a Apron.Manager.t ->
       'a t -> Apron.Tcons0.t array -> 'a tval join : 'a Apron.Manager.t ->
       'a t -> 'a t -> 'a tval join_array : 'a Apron.Manager.t -> 'a t array -> 'a tval add_ray_array : 'a Apron.Manager.t ->
       'a t -> Apron.Generator0.t array -> 'a t
   The generators should either lines or rays, not vertices.
val meet_with : 'a Apron.Manager.t -> 'a t -> 'a t -> unitval meet_lincons_array_with : 'a Apron.Manager.t -> 'a t -> Apron.Lincons0.t array -> unitval meet_tcons_array_with : 'a Apron.Manager.t -> 'a t -> Apron.Tcons0.t array -> unitval join_with : 'a Apron.Manager.t -> 'a t -> 'a t -> unitval add_ray_array_with : 'a Apron.Manager.t ->
       'a t -> Apron.Generator0.t array -> unitval assign_linexpr_array : 'a Apron.Manager.t ->
       'a t ->
       Apron.Dim.t array ->
       Apron.Linexpr0.t array -> 'a t option -> 'a tval substitute_linexpr_array : 'a Apron.Manager.t ->
       'a t ->
       Apron.Dim.t array ->
       Apron.Linexpr0.t array -> 'a t option -> 'a tval assign_texpr_array : 'a Apron.Manager.t ->
       'a t ->
       Apron.Dim.t array ->
       Apron.Texpr0.t array -> 'a t option -> 'a tval substitute_texpr_array : 'a Apron.Manager.t ->
       'a t ->
       Apron.Dim.t array ->
       Apron.Texpr0.t array -> 'a t option -> 'a tval assign_linexpr_array_with : 'a Apron.Manager.t ->
       'a t ->
       Apron.Dim.t array ->
       Apron.Linexpr0.t array -> 'a t option -> unitval substitute_linexpr_array_with : 'a Apron.Manager.t ->
       'a t ->
       Apron.Dim.t array ->
       Apron.Linexpr0.t array -> 'a t option -> unitval assign_texpr_array_with : 'a Apron.Manager.t ->
       'a t ->
       Apron.Dim.t array ->
       Apron.Texpr0.t array -> 'a t option -> unitval substitute_texpr_array_with : 'a Apron.Manager.t ->
       'a t ->
       Apron.Dim.t array ->
       Apron.Texpr0.t array -> 'a t option -> unitval forget_array : 'a Apron.Manager.t ->
       'a t -> Apron.Dim.t array -> bool -> 'a tval forget_array_with : 'a Apron.Manager.t ->
       'a t -> Apron.Dim.t array -> bool -> unitval add_dimensions : 'a Apron.Manager.t ->
       'a t -> Apron.Dim.change -> bool -> 'a tval remove_dimensions : 'a Apron.Manager.t ->
       'a t -> Apron.Dim.change -> 'a tval apply_dimchange2 : 'a Apron.Manager.t ->
       'a t -> Apron.Dim.change2 -> bool -> 'a tval permute_dimensions : 'a Apron.Manager.t ->
       'a t -> Apron.Dim.perm -> 'a tval add_dimensions_with : 'a Apron.Manager.t ->
       'a t -> Apron.Dim.change -> bool -> unitval remove_dimensions_with : 'a Apron.Manager.t -> 'a t -> Apron.Dim.change -> unitval apply_dimchange2_with : 'a Apron.Manager.t ->
       'a t -> Apron.Dim.change2 -> bool -> unitval permute_dimensions_with : 'a Apron.Manager.t -> 'a t -> Apron.Dim.perm option -> unit
val expand : 'a Apron.Manager.t ->
       'a t -> Apron.Dim.t -> int -> 'a texpand a dim n expands the dimension dim into itself + n
  additional dimensions.  It results in (n+1) unrelated dimensions having
  same relations with other dimensions. The (n+1) dimensions are put as
  follows: 
dimval fold : 'a Apron.Manager.t ->
       'a t -> Apron.Dim.t array -> 'a tfold a tdim fold the dimensions in the array tdim of size n>=1
  and put the result in the first dimension of the array. The other
  dimensions of the array are then removed (using
  ap_abstract0_permute_remove_dimensions).val expand_with : 'a Apron.Manager.t -> 'a t -> Apron.Dim.t -> int -> unitval fold_with : 'a Apron.Manager.t -> 'a t -> Apron.Dim.t array -> unitval widening : 'a Apron.Manager.t ->
       'a t -> 'a t -> 'a tval widening_threshold : 'a Apron.Manager.t ->
       'a t ->
       'a t -> Apron.Lincons0.t array -> 'a tval closure : 'a Apron.Manager.t -> 'a t -> 'a tval closure_with : 'a Apron.Manager.t -> 'a t -> unitval of_lincons_array : 'a Apron.Manager.t ->
       int -> int -> Apron.Lincons0.t array -> 'a tval of_tcons_array : 'a Apron.Manager.t ->
       int -> int -> Apron.Tcons0.t array -> 'a tval assign_linexpr : 'a Apron.Manager.t ->
       'a t ->
       Apron.Dim.t ->
       Apron.Linexpr0.t -> 'a t option -> 'a tval substitute_linexpr : 'a Apron.Manager.t ->
       'a t ->
       Apron.Dim.t ->
       Apron.Linexpr0.t -> 'a t option -> 'a tval assign_texpr : 'a Apron.Manager.t ->
       'a t ->
       Apron.Dim.t ->
       Apron.Texpr0.t -> 'a t option -> 'a tval substitute_texpr : 'a Apron.Manager.t ->
       'a t ->
       Apron.Dim.t ->
       Apron.Texpr0.t -> 'a t option -> 'a tval assign_linexpr_with : 'a Apron.Manager.t ->
       'a t ->
       Apron.Dim.t -> Apron.Linexpr0.t -> 'a t option -> unitval substitute_linexpr_with : 'a Apron.Manager.t ->
       'a t ->
       Apron.Dim.t -> Apron.Linexpr0.t -> 'a t option -> unitval assign_texpr_with : 'a Apron.Manager.t ->
       'a t ->
       Apron.Dim.t -> Apron.Texpr0.t -> 'a t option -> unitval substitute_texpr_with : 'a Apron.Manager.t ->
       'a t ->
       Apron.Dim.t -> Apron.Texpr0.t -> 'a t option -> unitval 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 -> 'a -> unit) -> Format.formatter -> 'a array -> unit