module Arith: sig end
val num : Mpa.Q.t -> Sym.t
val multq : Mpa.Q.t -> Sym.t
val add : Sym.t
Theory-specific recognizers
|
val is_interp : Term.t -> bool
val d_num : Term.t -> Mpa.Q.t option
val d_multq : Term.t -> (Mpa.Q.t * Term.t) option
val d_add : Term.t -> Term.t list option
val monomials : Term.t -> Term.t list
val is_num : Term.t -> bool
val is_zero : Term.t -> bool
val is_one : Term.t -> bool
val is_q : Mpa.Q.t -> Term.t -> bool
val is_multq : Term.t -> bool
val is_diophantine : Term.t -> bool
val mk_num : Mpa.Q.t -> Term.t
val mk_zero : Term.Map.key
val mk_one : Term.t
val mk_two : Term.t
val poly_of : Term.t -> Mpa.Q.t * Term.t list
val of_poly : Mpa.Q.t -> Term.Map.key list -> Term.Map.key
val mono_of : Term.t -> Mpa.Q.t * Term.t
val of_mono : Mpa.Q.t -> Term.Map.key -> Term.Map.key
val fold : (Mpa.Q.t -> Term.t -> 'a -> 'a) -> Term.t -> 'a -> 'a
val mk_multq : Mpa.Q.t -> Term.Map.key -> Term.Map.key
val mk_addq : Mpa.Q.t -> Term.t -> Term.t
val mk_add : Term.Map.key -> Term.Map.key -> Term.Map.key
Parameters: |
a |
: |
Term.Map.key
|
b |
: |
Term.Map.key
|
|
val mk_addl : Term.Map.key list -> Term.Map.key
val mk_incr : Term.t -> Term.Map.key
val mk_neg : Term.Map.key -> Term.Map.key
val mk_sub : Term.Map.key -> Term.Map.key -> Term.Map.key
Parameters: |
a |
: |
Term.Map.key
|
b |
: |
Term.Map.key
|
|
val map : (Term.Map.key -> Term.Map.key) -> Term.Map.key -> Term.Map.key
Mapping a term transformer f
over a
.
Parameters: |
f |
: |
Term.Map.key -> Term.Map.key
|
a |
: |
Term.Map.key
|
|
val replace : Term.Map.key -> Term.t -> Term.Map.key -> Term.Map.key
Replacing a variable with a term.
Parameters: |
a |
: |
Term.Map.key
|
x |
: |
Term.t
|
e |
: |
Term.Map.key
|
|
val apply : Term.Map.key -> Term.Map.key Term.Map.t -> Term.Map.key
Application of a substitution.
Parameters: |
a |
: |
Term.Map.key
|
m |
: |
Term.Map.key Term.Map.t
|
|
val sigma : Sym.arith -> Term.Map.key list -> Term.Map.key
Interface for sigmatizing arithmetic terms.
val tau : Term.t -> Dom.t
Domain interpretation.
val qsolve : Term.Map.key * Term.Map.key -> (Term.Map.key * Term.Map.key) option
Parameters: |
(a,b) |
: |
Term.Map.key * Term.Map.key
|
|
val mk_fresh : unit -> Term.Map.key
module Euclid: sig end
val zsolve : Term.Map.key * Term.Map.key -> (Term.t * Term.Map.key) list
Parameters: |
(a,b) |
: |
Term.Map.key * Term.Map.key
|
|
val vectorize : Term.t list -> Euclid.t list * Term.t list
val general : Euclid.t list ->
Euclid.t * Euclid.t list -> Term.Map.key list * Term.Map.key list
Compute the general solution of a linear Diophantine
equation with coefficients al
, the gcd d
of al
and a particular solution pl
. In the case of four
coeffients, compute, for example,
(p0 p1 p2 p3) + k0/d * (a1 -a0 0 0) + k1/d * (0 a2 -a1 0) + k2/d * (0 0 a3 -a2)
Here, k0
, k1
, and k2
are fresh variables. Note that
any basis of the vector space of solutions xl
of the
equation al * xl = 0
would be appropriate.
Parameters: |
al |
: |
Euclid.t list
|
(d,pl) |
: |
Euclid.t * Euclid.t list
|
|
val integer_solve : bool Pervasives.ref
val solve : Fact.equal -> Fact.equal list
val isolate : Term.t -> Term.Map.key * Term.Map.key -> Term.Map.key
Isolate y
in a solved equality x = a
.
Parameters: |
y |
: |
Term.t
|
(x,a) |
: |
Term.Map.key * Term.Map.key
|
|