sig
type 'a symbol =
'a Bdd.Env.symbol = {
compare : 'a -> 'a -> int;
marshal : 'a -> string;
unmarshal : string -> 'a;
mutable print : Format.formatter -> 'a -> unit;
}
type typ = [ `Int | `Real ]
type ('a, 'b) typ_of_var = 'a -> 'b constraint 'b = [> Apronexpr.typ ]
module Lin :
sig
type 'a term = Mpqf.t * 'a
type 'a t = { cst : Mpqf.t; lterm : 'a Apronexpr.Lin.term list; }
val normalize :
'a Apronexpr.symbol -> 'a Apronexpr.Lin.t -> 'a Apronexpr.Lin.t
val compare_lterm :
'a Apronexpr.symbol ->
'a Apronexpr.Lin.term list -> 'a Apronexpr.Lin.term list -> int
val compare :
'a Apronexpr.symbol ->
'a Apronexpr.Lin.t -> 'a Apronexpr.Lin.t -> int
val var : 'a -> 'a Apronexpr.Lin.t
val zero : 'a Apronexpr.Lin.t
val one : 'a Apronexpr.Lin.t
val cst : Mpqf.t -> 'a Apronexpr.Lin.t
val add :
'a Apronexpr.symbol ->
'a Apronexpr.Lin.t -> 'a Apronexpr.Lin.t -> 'a Apronexpr.Lin.t
val sub :
'a Apronexpr.symbol ->
'a Apronexpr.Lin.t -> 'a Apronexpr.Lin.t -> 'a Apronexpr.Lin.t
val scale : Mpqf.t -> 'a Apronexpr.Lin.t -> 'a Apronexpr.Lin.t
val negate : 'a Apronexpr.Lin.t -> 'a Apronexpr.Lin.t
val support : 'a Apronexpr.symbol -> 'a Apronexpr.Lin.t -> 'a PSette.t
val substitute_by_var :
'a Apronexpr.symbol ->
'a Apronexpr.Lin.t -> ('a, 'a) PMappe.t -> 'a Apronexpr.Lin.t
val normalize_as_constraint : 'a Apronexpr.Lin.t -> 'a Apronexpr.Lin.t
val print :
'a Apronexpr.symbol -> Format.formatter -> 'a Apronexpr.Lin.t -> unit
val to_linexpr1 :
'a Apronexpr.symbol ->
Apron.Environment.t -> 'a Apronexpr.Lin.t -> Apron.Linexpr1.t
end
module Poly :
sig
type 'a varexp = 'a * int
type 'a monomial = 'a Apronexpr.Poly.varexp list
type 'a term = Mpqf.t * 'a Apronexpr.Poly.monomial
type 'a t = 'a Apronexpr.Poly.term list
val compare_varexp :
'a Apronexpr.symbol ->
'a Apronexpr.Poly.varexp -> 'a Apronexpr.Poly.varexp -> int
val compare_monomial :
'a Apronexpr.symbol ->
'a Apronexpr.Poly.monomial -> 'a Apronexpr.Poly.monomial -> int
val normalize_monomial :
'a Apronexpr.symbol ->
'a Apronexpr.Poly.monomial -> 'a Apronexpr.Poly.monomial
val normalize :
'a Apronexpr.symbol -> 'a Apronexpr.Poly.t -> 'a Apronexpr.Poly.t
val normalize_full :
'a Apronexpr.symbol -> 'a Apronexpr.Poly.t -> 'a Apronexpr.Poly.t
val compare :
'a Apronexpr.symbol ->
'a Apronexpr.Poly.t -> 'a Apronexpr.Poly.t -> int
val cst : Mpqf.t -> 'a Apronexpr.Poly.t
val var : 'a -> 'a Apronexpr.Poly.t
val add :
'a Apronexpr.symbol ->
'a Apronexpr.Poly.t -> 'a Apronexpr.Poly.t -> 'a Apronexpr.Poly.t
val sub :
'a Apronexpr.symbol ->
'a Apronexpr.Poly.t -> 'a Apronexpr.Poly.t -> 'a Apronexpr.Poly.t
val scale :
'a Apronexpr.symbol ->
Mpqf.t * 'a Apronexpr.Poly.monomial ->
'a Apronexpr.Poly.t -> 'a Apronexpr.Poly.t
val mul :
'a Apronexpr.symbol ->
'a Apronexpr.Poly.t -> 'a Apronexpr.Poly.t -> 'a Apronexpr.Poly.t
val div :
'a Apronexpr.symbol ->
'a Apronexpr.Poly.t -> 'a Apronexpr.Poly.t -> 'a Apronexpr.Poly.t
val negate : 'a Apronexpr.Poly.t -> 'a Apronexpr.Poly.t
val support : 'a Apronexpr.symbol -> 'a Apronexpr.Poly.t -> 'a PSette.t
val substitute_by_var :
'a Apronexpr.symbol ->
'a Apronexpr.Poly.t -> ('a, 'a) PMappe.t -> 'a Apronexpr.Poly.t
val normalize_as_constraint :
'a Apronexpr.Poly.t -> 'a Apronexpr.Poly.t
val print :
'a Apronexpr.symbol ->
Format.formatter -> 'a Apronexpr.Poly.t -> unit
end
module Tree :
sig
type unop = Apron.Texpr1.unop = Neg | Cast | Sqrt
type binop = Apron.Texpr1.binop = Add | Sub | Mul | Div | Mod
type typ =
Apron.Texpr1.typ =
Real
| Int
| Single
| Double
| Extended
| Quad
type round = Apron.Texpr1.round = Near | Zero | Up | Down | Rnd
type 'a t =
Cst of Apron.Coeff.t
| Var of 'a
| Unop of Apronexpr.Tree.unop * 'a Apronexpr.Tree.t *
Apronexpr.Tree.typ * Apronexpr.Tree.round
| Binop of Apronexpr.Tree.binop * 'a Apronexpr.Tree.t *
'a Apronexpr.Tree.t * Apronexpr.Tree.typ * Apronexpr.Tree.round
val support : 'a Apronexpr.symbol -> 'a Apronexpr.Tree.t -> 'a PSette.t
val substitute_by_var :
'a Apronexpr.Tree.t -> ('a, 'a) PMappe.t -> 'a Apronexpr.Tree.t
val print :
'a Apronexpr.symbol ->
Format.formatter -> 'a Apronexpr.Tree.t -> unit
val compare :
'a Apronexpr.symbol ->
'a Apronexpr.Tree.t -> 'a Apronexpr.Tree.t -> int
end
val lin_of_poly :
'a Apronexpr.symbol -> 'a Apronexpr.Poly.t -> 'a Apronexpr.Lin.t
val lin_of_tree :
'a Apronexpr.symbol -> 'a Apronexpr.Tree.t -> 'a Apronexpr.Lin.t
val poly_of_tree :
'a Apronexpr.symbol -> 'a Apronexpr.Tree.t -> 'a Apronexpr.Poly.t
val tree_of_lin : 'a Apronexpr.Lin.t -> 'a Apronexpr.Tree.t
val tree_of_poly : 'a Apronexpr.Poly.t -> 'a Apronexpr.Tree.t
type 'a t =
Lin of 'a Apronexpr.Lin.t
| Poly of 'a Apronexpr.Poly.t
| Tree of 'a Apronexpr.Tree.t
type 'a expr = 'a Apronexpr.t
val var :
'a Apronexpr.symbol ->
('a, [> Apronexpr.typ ]) Apronexpr.typ_of_var -> 'a -> 'a Apronexpr.t
val zero : 'a Apronexpr.t
val one : 'a Apronexpr.t
val cst : Apron.Coeff.t -> 'a Apronexpr.t
val add :
'a Apronexpr.symbol ->
?typ:Apron.Texpr1.typ ->
?round:Apron.Texpr1.round ->
'a Apronexpr.t -> 'a Apronexpr.t -> 'a Apronexpr.t
val sub :
'a Apronexpr.symbol ->
?typ:Apron.Texpr1.typ ->
?round:Apron.Texpr1.round ->
'a Apronexpr.t -> 'a Apronexpr.t -> 'a Apronexpr.t
val mul :
'a Apronexpr.symbol ->
?typ:Apron.Texpr1.typ ->
?round:Apron.Texpr1.round ->
'a Apronexpr.t -> 'a Apronexpr.t -> 'a Apronexpr.t
val div :
'a Apronexpr.symbol ->
?typ:Apron.Texpr1.typ ->
?round:Apron.Texpr1.round ->
'a Apronexpr.t -> 'a Apronexpr.t -> 'a Apronexpr.t
val gmod :
'a Apronexpr.symbol ->
?typ:Apron.Texpr1.typ ->
?round:Apron.Texpr1.round ->
'a Apronexpr.t -> 'a Apronexpr.t -> 'a Apronexpr.t
val negate : 'a Apronexpr.t -> 'a Apronexpr.t
val cast :
?typ:Apron.Texpr1.typ ->
?round:Apron.Texpr1.round -> 'a Apronexpr.t -> 'a Apronexpr.t
val sqrt :
?typ:Apron.Texpr1.typ ->
?round:Apron.Texpr1.round -> 'a Apronexpr.t -> 'a Apronexpr.t
val support : 'a Apronexpr.symbol -> 'a Apronexpr.t -> 'a PSette.t
val substitute_by_var :
'a Apronexpr.symbol ->
'a Apronexpr.t -> ('a, 'a) PMappe.t -> 'a Apronexpr.t
val normalize : 'a Apronexpr.symbol -> 'a Apronexpr.t -> 'a Apronexpr.t
val equal : 'a Apronexpr.symbol -> 'a Apronexpr.t -> 'a Apronexpr.t -> bool
val hash : 'a Apronexpr.symbol -> 'a Apronexpr.t -> int
val compare :
'a Apronexpr.symbol -> 'a Apronexpr.t -> 'a Apronexpr.t -> int
val normalize_as_constraint : 'a Apronexpr.t -> 'a Apronexpr.t
val is_dependent_on_integer_only :
('a, [> Apronexpr.typ ]) Apronexpr.typ_of_var -> 'a Apronexpr.t -> bool
val typ_of_expr :
('a, [> Apronexpr.typ ]) Apronexpr.typ_of_var ->
'a Apronexpr.t -> [ `Int | `Real ]
val print :
'a Apronexpr.symbol -> Format.formatter -> 'a Apronexpr.t -> unit
val print_typ : Format.formatter -> [> Apronexpr.typ ] -> unit
val to_texpr0 :
'a Apronexpr.symbol ->
Apron.Environment.t -> 'a Apronexpr.t -> Apron.Texpr0.t
val to_texpr1 :
'a Apronexpr.symbol ->
Apron.Environment.t -> 'a Apronexpr.t -> Apron.Texpr1.t
val to_apron :
'a Apronexpr.symbol ->
Apron.Environment.t ->
'a Apronexpr.t ->
[ `Linexpr1 of Apron.Linexpr1.t | `Texpr1 of Apron.Texpr1.t ]
module Condition :
sig
type typ =
Apron.Tcons1.typ =
EQ
| SUPEQ
| SUP
| DISEQ
| EQMOD of Apron.Scalar.t
type 'a t = Apronexpr.Condition.typ * 'a Apronexpr.expr
val make :
('a, [> Apronexpr.Condition.typ ]) Apronexpr.typ_of_var ->
Apronexpr.Condition.typ ->
'a Apronexpr.expr ->
[ `Bool of bool | `Cond of 'a Apronexpr.Condition.t ]
val negate :
('a, [> Apronexpr.Condition.typ ]) Apronexpr.typ_of_var ->
'a Apronexpr.Condition.t -> 'a Apronexpr.Condition.t
val support :
'a Apronexpr.symbol -> 'a Apronexpr.Condition.t -> 'a PSette.t
val print :
'a Apronexpr.symbol ->
Format.formatter -> 'a Apronexpr.Condition.t -> unit
val compare :
'a Apronexpr.symbol ->
'a Apronexpr.Condition.t -> 'a Apronexpr.Condition.t -> int
val to_tcons0 :
'a Apronexpr.symbol ->
Apron.Environment.t -> 'a Apronexpr.Condition.t -> Apron.Tcons0.t
val to_tcons1 :
'a Apronexpr.symbol ->
Apron.Environment.t -> 'a Apronexpr.Condition.t -> Apron.Tcons1.t
val to_apron :
'a Apronexpr.symbol ->
Apron.Environment.t ->
'a Apronexpr.Condition.t ->
[ `Lincons1 of Apron.Lincons1.t | `Tcons1 of Apron.Tcons1.t ]
end
end