Module Arith


module Arith: sig .. end

Expressions



type typ = [ `Int | `Real ] 
class type [[> typ ]] db = object .. end

Expressions



Linear expressions


module Lin: sig .. end

Polynomial expressions


module Poly: sig .. end

Tree expressions


module Tree: sig .. end
Tree expressions

Conversions


val lin_of_poly : Poly.expr -> Lin.expr
val lin_of_tree : Tree.expr -> Lin.expr
val poly_of_tree : Tree.expr -> Poly.expr
val tree_of_lin : Lin.expr -> Tree.expr
val tree_of_poly : Poly.expr -> Tree.expr

General expressions and operations



type expr =
| Lin of Lin.expr
| Poly of Poly.expr
| Tree of Tree.expr
val var : [> typ ] #db -> Var.t -> expr
val cst : Mpqf.t -> expr
val add : expr -> expr -> expr
val sub : expr -> expr -> expr
val mul : expr -> expr -> expr
val div : expr -> expr -> expr
val gmod : expr -> expr -> expr
val other : Var.t -> expr list -> expr
val negate : expr -> expr
val support : expr -> Var.Set.t
val rename : expr -> Var.t Var.Map.t -> expr
val normalize : expr -> expr
val equal : expr -> expr -> bool
val hash : expr -> int
val compare : expr -> expr -> int
val normalize_as_constraint : expr -> expr
val is_dependent_on_integer_only : [> typ ] #db -> expr -> bool
val typ_of_expr : [> typ ] #db -> expr -> [ `Int | `Real ]
val print : Format.formatter -> expr -> unit
val print_typ : Format.formatter -> [> typ ] -> unit

Constraints


module Condition: sig .. end