# 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 : Stdlib.Format.formatter -> unop -> unit

    val print_binop : Stdlib.Format.formatter -> binop -> unit

    val print_typ : Stdlib.Format.formatter -> typ -> unit

    val print_round : Stdlib.Format.formatter -> round -> unit

    val print_expr : (Dim.t -> string) -> Stdlib.Format.formatter -> expr -> unit

Print a tree expression, using a function converting from dimensions to names

    val print : (Dim.t -> string) -> Stdlib.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