sig
  type dim = int
  type texpr = Apron.Texpr0.t
  type lexpr = Apron.Linexpr0.t
  type tcons = Apron.Tcons0.t
  type lcons = Apron.Lincons0.t
  type scalar = Apron.Scalar.t
  type coeff = Apron.Coeff.t
  val qq_of_scalar : SrkApron.scalar -> QQ.t
  val qq_of_coeff : SrkApron.coeff -> QQ.t option
  val coeff_of_qq : QQ.t -> SrkApron.coeff
  module Env :
    sig
      type 'a t
      val pp : Format.formatter -> 'SrkApron.Env.t -> unit
      val empty : 'Syntax.context -> 'SrkApron.Env.t
      val of_set :
        'Syntax.context -> Syntax.Symbol.Set.t -> 'SrkApron.Env.t
      val of_enum :
        'Syntax.context -> Syntax.symbol BatEnum.t -> 'SrkApron.Env.t
      val of_list :
        'Syntax.context -> Syntax.symbol list -> 'SrkApron.Env.t
      val vars : 'SrkApron.Env.t -> Syntax.symbol BatEnum.t
      val dimensions : 'SrkApron.Env.t -> int BatEnum.t
      val mem : Syntax.symbol -> 'SrkApron.Env.t -> bool
      val int_dim : 'SrkApron.Env.t -> int
      val real_dim : 'SrkApron.Env.t -> int
      val dimension : 'SrkApron.Env.t -> int
      val var_of_dim : 'SrkApron.Env.t -> int -> Syntax.symbol
      val dim_of_var : 'SrkApron.Env.t -> Syntax.symbol -> int
      val filter :
        (Syntax.symbol -> bool) -> 'SrkApron.Env.t -> 'SrkApron.Env.t
    end
  type ('a, 'abs) property
  val pp : Format.formatter -> ('a, 'abs) SrkApron.property -> unit
  val show : ('a, 'abs) SrkApron.property -> string
  val get_manager : ('a, 'abs) SrkApron.property -> 'abs Apron.Manager.t
  val is_bottom : ('a, 'abs) SrkApron.property -> bool
  val is_top : ('a, 'abs) SrkApron.property -> bool
  val top :
    'abs Apron.Manager.t -> 'SrkApron.Env.t -> ('a, 'abs) SrkApron.property
  val bottom :
    'abs Apron.Manager.t -> 'SrkApron.Env.t -> ('a, 'abs) SrkApron.property
  val meet_tcons :
    ('a, 'abs) SrkApron.property ->
    SrkApron.tcons list -> ('a, 'abs) SrkApron.property
  val meet_lcons :
    ('a, 'abs) SrkApron.property ->
    SrkApron.lcons list -> ('a, 'abs) SrkApron.property
  val leq :
    ('a, 'abs) SrkApron.property -> ('a, 'abs) SrkApron.property -> bool
  val equal :
    ('a, 'abs) SrkApron.property -> ('a, 'abs) SrkApron.property -> bool
  val join :
    ('a, 'abs) SrkApron.property ->
    ('a, 'abs) SrkApron.property -> ('a, 'abs) SrkApron.property
  val meet :
    ('a, 'abs) SrkApron.property ->
    ('a, 'abs) SrkApron.property -> ('a, 'abs) SrkApron.property
  val widen :
    ('a, 'abs) SrkApron.property ->
    ('a, 'abs) SrkApron.property -> ('a, 'abs) SrkApron.property
  val exists :
    'abs Apron.Manager.t ->
    (Syntax.symbol -> bool) ->
    ('a, 'abs) SrkApron.property -> ('a, 'abs) SrkApron.property
  val add_vars :
    Syntax.symbol BatEnum.t ->
    ('a, 'abs) SrkApron.property -> ('a, 'abs) SrkApron.property
  val boxify : ('a, 'abs) SrkApron.property -> ('a, 'abs) SrkApron.property
  val rename :
    (Syntax.symbol -> Syntax.symbol) ->
    ('a, 'abs) SrkApron.property -> ('a, 'abs) SrkApron.property
  val lexpr_of_vec : 'SrkApron.Env.t -> Linear.QQVector.t -> SrkApron.lexpr
  val vec_of_lexpr : 'SrkApron.Env.t -> SrkApron.lexpr -> Linear.QQVector.t
  val texpr_of_term : 'SrkApron.Env.t -> 'Syntax.term -> SrkApron.texpr
  val term_of_texpr : 'SrkApron.Env.t -> SrkApron.texpr -> 'Syntax.term
  val tcons_geqz : SrkApron.texpr -> SrkApron.tcons
  val tcons_eqz : SrkApron.texpr -> SrkApron.tcons
  val tcons_gtz : SrkApron.texpr -> SrkApron.tcons
  val lcons_geqz : SrkApron.lexpr -> SrkApron.lcons
  val lcons_eqz : SrkApron.lexpr -> SrkApron.lcons
  val lcons_gtz : SrkApron.lexpr -> SrkApron.lcons
  val formula_of_property : ('a, 'abs) SrkApron.property -> 'Syntax.formula
  val eval_texpr : SrkApron.texpr -> Apron.Interval.t
end