package lutin

  1. Overview
  2. Docs

Internal (normal) representation of expressions.

type t

Normal expressions type.

type subst = (string * Value.num) * t
val is_a_constant : t -> bool

is_a_constant ne returns true iff ne is a constant.

val dimension : t -> int

dimension ne returns the number of variables involved in ne

type split_res =
  1. | Split of string * Value.num * t
  2. | No_solution
  3. | Dont_know

split ne returns a monome (a,x) of ne (where x is not "", namely a is not the constant of ne) as well as the rest of the expr, namely, ne-a.x.

If it is a monome over integers, we return such a couple iff a divide the rest.

We suppose that the dimension is > 0.

val split : t -> split_res
val neg_nexpr : t -> t

neg_nexpr ne returns the opposite of ne, namely, -ne.

val opposite : t -> t

Various operations over normal expression.

val add : t -> t -> t
val diff : t -> t -> t
val mult : t -> t -> t
val modulo : t -> t -> t
val div : t -> t -> t
val quot : t -> t -> t