Module Pprod


module Pprod: sig  end
Theory of power products.
Author(s): Harald Ruess


Power products are of th form x1^n1 * ... * xk^nk, where xi^ni represents the variable xi raised to the n, where n is any integer, positive or negative, except for 0, and * is nary multiplication; in addition xi^1 is reduced to xi, x1,...,xn are ordered from left-to-right such that Term.cmp xi xj < 0 (see Term.cmp) for i < j. In particular, every xi occurs only one in a power product.

module Sig: Acsym.SIG
val d_interp : Term.t -> Term.t * Term.t
Same as Acsym.TERM.
Parameters:
? : Term.t
val is_interp : Term.t -> bool
Parameters:
? : Term.t
val iterate : Term.t -> int -> Term.t
Parameters:
? : Term.t
? : int
val multiplicity : Term.t -> Term.t -> int
Parameters:
? : Term.t
? : Term.t
val decompose : Term.t -> (Term.t * int) * Term.t option
Parameters:
? : Term.t
val fold : (Term.t -> int -> 'a -> 'a) -> Term.t -> 'a -> 'a
Parameters:
? : Term.t -> int -> 'a -> 'a
? : Term.t
? : 'a
val iter : (Term.t -> int -> unit) -> Term.t -> unit
Parameters:
? : Term.t -> int -> unit
? : Term.t
val sigma : Sym.pprod -> Term.t list -> Term.t
Parameters:
f : Sym.pprod
al : Term.t list
val map : (Term.t -> Term.t) -> Term.t -> Term.t
Parameters:
f : Term.t -> Term.t
a : Term.t
val mk_mult : Term.t -> Term.t -> Term.t
Constructing a term for representing a * b. The result is a nonlinear term.
Parameters:
a : Term.t
b : Term.t
val mk_multl : Term.t list -> Term.t
Parameters:
al : Term.t list
val mk_expt : Term.t -> int -> Term.t
Parameters:
a : Term.t
n : int
val divide : Term.t -> Term.t * int -> Term.t
Divide a of the form x * ... y^m ... *z by y^n, where n <= m.
Parameters:
a : Term.t
(y,n) : Term.t * int
val dom : (Term.t -> Dom.t) -> Sym.pprod -> Term.t list -> Dom.t
tau lookup op al returns a constraint in Cnstrnt.t given a lookup function, which is applied to each noninterpreted term, and by propagation using abstract domain operations for the interpreted symbols. If lookup raises Not_found for one uninterpreted subterm (not equal to op(al)), the result is Cnstrnt.real.
Parameters:
lookup : Term.t -> Dom.t
op : Sym.pprod
al : Term.t list
val dom_of : Term.t -> Dom.t
Abstract constraint interpretation
Parameters:
a : Term.t