Module Texpr0


module Texpr0: sig .. end

type t 

type unop =
| Neg
| Cast
| Sqrt
Unary operators

type binop =
| Add
| Sub
| Mul
| Div
| Mod
Binary operators

type typ =
| Real
| Int
| Single
| Double
| Extended
| Quad
Destination type for rounding

type round =
| Near
| Zero
| Up
| Down
| Rnd
Rounding direction

APRON tree expressions of level 0

type expr =
| Cst of Coeff.t
| Dim of Dim.t
| Unop of unop * expr * typ * round
| Binop of binop * expr * expr * typ * round
User type for tree expressions

Constructors and Destructor


val of_expr : expr -> t
General constructor (actually the most efficient
val copy : t -> t
Copy
val of_linexpr : Linexpr0.t -> t
Conversion
val to_expr : t -> expr
General destructor

Incremental constructors


val cst : Coeff.t -> t
val dim : Dim.t -> t
val unop : unop -> t -> typ -> round -> t
val binop : binop ->
typ -> round -> t -> t -> t

Tests


val is_interval_cst : t -> bool
val is_interval_linear : t -> bool
val is_interval_polynomial : t -> bool
val is_interval_polyfrac : t -> bool
val is_scalar : t -> bool

Printing


val string_of_unop : unop -> string
val string_of_binop : binop -> string
val string_of_typ : typ -> string
val string_of_round : round -> string
val print_unop : Format.formatter -> unop -> unit
val print_binop : Format.formatter -> binop -> unit
val print_typ : Format.formatter -> typ -> unit
val print_round : Format.formatter -> round -> unit
val print_expr : (Dim.t -> string) -> Format.formatter -> expr -> unit
Print a tree expression, using a function converting from dimensions to names
val print : (Dim.t -> string) -> Format.formatter -> t -> unit
Print an abstract tree expression, using a function converting from dimensions to names

Internal usage for level 1


val print_sprint_unop : unop -> typ -> round -> string
val print_sprint_binop : binop -> typ -> round -> string
val print_precedence_of_unop : unop -> int
val print_precedence_of_binop : binop -> int