Index of values


(*) [Euclid(Rat]
Multiplication.
(+) [Euclid(Rat]
Addition.
(/) [Euclid(Rat]
Inverse of Multiplication.
(<<<) [Var]
x <<< y holds iff cmp x y <= 0.
(<<<) [Term]
a <<< b iff cmp a b <= 0.

A
abs [Mpa.Q]
abstract [Infsys.ARITH]
abstract [Apply]
abstract x a lamgda-abstracts a.
abstract [Infsys.EQ]
(g[a]; e; p) ==> (g[x]; e, x = a; p) with a a nonvariable term, , a an i-pure term, , and x fresh.
acc1 [Tools]
acc1 acc f b calls f b to obtain (c, a).
acc2 [Tools]
acc2 acc f b1 b2 calls f b1 b2 to obtain (c, a).
accb [Tools]
accb acc p b calls p b.
accumulate [V]
Folding over the members of a specific equivalence class.
add [Trace]
add l activates the trace level l.
add [Mpa.Q]
add [Mpa.Z]
add [Dom]
add [D]
add d s adds a disequality d of the form x <> y to the disequality context s.
add [Context]
process s a extends the logical context s with an atom a.
add_at_exit [Tools]
Procedures f without parameters can be registered as exit procedures by add_to_exit f.
add_at_reset [Tools]
add_to_reset f registers f as a reset procedure
addl [Dom]
addl [Context]
all_ones [Bitv]
all_zeros [Bitv]
app [Th]
append [Bitv]
apply [Term.Subst]
apply [Sym.Cl]
apply [Product]
apply (x, b) a replaces uninterpreted occurrences of x in a with b, and returns a canonical form.
apply [Pretty]
apply [Solution.SET]
apply s x yields (b, rho) if x = b in s with justification rho; if x is not a dependent variable, Not_found is raised.
apply [Jst.Rel2]
Test binary term relation r on f a and f b.
apply [Jst.Rel1]
Test binary term relation r on f a and f b.
apply [Jst.Pred2]
Test predicate p on f(a).
apply [Jst.Pred]
Test predicate p on f(a).
apply [Jst.Eqtrans]
apply [Funarr.Flat]
Replace a variable x by y in a flat term a.
apply [Coproduct]
apply (x, b) for uninterpreted occurrences of x in a with b, and normalizes.
apply [Bitvector]
apply [Arith]
apply (x, b) a occurrences of x in a with b, and normalizes.
apply [Apply]
Replacing a variable with a term.
args_of [Term.App]
sym_of a returns the argument list l of an application a of the form App(_,l, _).
arr [Th]
arr_of [Combine.E]
assq [Term]
Association lists for terms.
atom_of [Atom]
Retrieve the atom from an atom-index pair.
axiom [Jst]
axioms_of [Jst]

B
bitv2nat [Bitvector]
Unsigned interpretation of a bitvector constant.
blit [Bitv]
bool [Pretty]
both_sides [Fact.Diseq]
both_sides [Fact.Equal]
branch [Infsys.ARITH]
branch [Infsys.EQ]
(g; e; p) ==> (g, c1; e; p) | ... | (g, cn; e; p) with e, p |= c1 \/ ... \/ cn, not e, p |= ci
bv [Th]
bw_and [Bitv]
bw_not [Bitv]
bw_or [Bitv]
bw_xor [Bitv]

C
c [Sym.Cl]
call [Trace]
call l name arg pp outputs a function call trace message if l is currently active by first outputting name followed by printing arg using the pp printer.
can [La]
replace s a substitutes dependent variables x in a with their right hand side b if x = b in s.
can [Combine]
Given an equality set e and a partition p as obtained from processing, can (e, p) a returns a term b equivalent to a in (e, p) together with a justification rho.
ceil [Mpa.Q]
cheap [Combine]
If cheap is set, Combine.simplify only performs cheap simplifications for disequalities and inequalities.
check_sat [Context]
check_sat s performs case-splitting and returns Some(splits', s') if there is a complete case-splitting path splits' yielding a satisfiable extension s' of s., None if all case-splittinig paths yield an inconsistent context.
choose [V]
choose s p x chooses a y which is congruent to x modulo s which satisfies p.
choose [Term]
choose p a chooses a variable of a which satisfies predicate p.
choose [Partition]
choose p apply x chooses an x' such that apply x' does not raise Not_found.
choose [Solution.DEP]
choose s y returns equality e of the form x = a if x is dependent on y; otherwise, Not_found is raised.
cl_of [Combine.E]
cmp [Var]
cmp x y realizes a total ordering on variables.
cmp [Term]
cmp a b realizes a total ordering on terms.
cmp [Sym]
cmp f g returns 0 iff eq f g holds, and cmp f g is positive iff cmp g f is negative.
cmp [Mpa.Q]
cmp [Dom]
cmp d e is 0 if eq d e holds, -1 if sub d e holds, 1 if sub e d holds. Otherwise the result is unspecified.
cnstrnt [V]
For a canonical variable x, cnstrnt s x returns the domain constraint associated with the equivalence class x.
cnstrnt [Partition]
cnstrnt s x returns a domain constraint on x, or raises Not_found if the interpretation of x is unconstrained.
cnstrnt_of [Var]
cnstrnt_of x returns the domain constraint of variable x.
cnstrnt_of [Term.Var]
cnstrnt_of x returns the domain constraint associated with x.
coefficient_choose [Arith.Monomials]
coefficient_of [Arith.Monomials.Neg]
coefficient_of [Arith.Monomials.Pos]
coefficient_of [Arith]
coi_enabled [Context]
Enable/Disable cone of influence.
compare [Term.Equal]
compare [Term.Var]
Total variable ordering.
compare [Term]
Total comparison on term which is designed to be fast.
compare [Name]
If s (t) is the string associated to n (m), then compare n m equals 0 iff eq n m.
compare [Mpa.Q]
compare [Mpa.Z]
compose [Term.Subst]
compose [Jst.Eqtrans]
If g a = (b, rho) and f b = (c, tau) with rho |- a = b and tau |- b = c, then compose f g a returns (c, sigma) with sigma |- a = c.
compose3 [Jst.Eqtrans]
compose3 f g h is defined as compose f (compose g h).
compose_partial1 [Jst.Eqtrans]
compose_partial1 f g a behaves like compose f g a when f does not throw an exception.
concat [Bitv]
config_of [Context]
constant_of [Arith]
If a is of the form q + a', then constant_of a returns q.
cop [Th]
cop_of [Combine.E]
copy [V]
Protect state against destructive updates.
copy [Partition]
copy p copies p to a partition which is observationally equal to p.
copy [Solution.SET]
copy [G]
copy [Combine.E]
copy [Bitv]
create [Bitv]
ctxt_of [Context]
ctxt_of s returns the logical context of s as a list of atoms.
current [Infsys.ARITH]
current [Infsys.EQ]

D
d_add [Arith]
d_add a returns Some(bl) if a is a function application with symbol Sym.Add.
d_atom [Prop]
d_conc [Sym.Bv]
d_const [Sym.Bv]
d_const [Bitvector]
Accessor for bitvector constants.
d_create [Funarr]
d_disj [Prop]
d_external [Var]
d_external [Term.Var]
d_iff [Prop]
d_interp [Propset]
d_interp [Pprod]
Same as Acsym.TERM.
d_interp [Funarr]
d_interp [Arith]
d_interp [Apply]
d_interp [Acsym.TERM]
If a is of the form b*c, then d_interp a returns (b, c).
d_interp [Ac.TERM]
If a is of the form b*c, then d_interp a returns (b, c).
d_ite [Prop]
d_let [Prop]
d_multq [Sym.Arith]
d_neg [Prop]
d_num [Sym.Arith]
d_num [Arith]
d_num a return q if a is a constant with function symbol Sym.Num(q), and raises Not_found otherwise.
d_of [Partition]
Accessing the variable disequalities of a partititioning.
d_reify [Sym.Cl]
d_select [Funarr]
d_select_update [Funarr]
d_select a returns (b, i, x, j) if a is of the form a[i:=x][j].
d_singleton [Clause]
d_sub [Sym.Bv]
d_uninterp [App]
For a term a such that is_uninterp a holds, d_uninterp a returns the uninterpreted function symbol and the argument list of a.
d_update [Funarr]
d_var [Prop]
debug [Version]
Level of debugging.
decompose [Pprod]
decompose [Acsym.TERM]
Decompose x*x*...*x*y*.... into (x, n) with n the multiplicity of x in a and y*....
decompose [Ac.TERM]
Decompose x*x*...*x*y*.... into (x, n) with n the multiplicity of x in a and y*....
def [Mpa.Q]
denominator [Mpa.Q]
dep [Solution.SET]
dep s y returns all x such that x = a in s, and the variable y occurs in a.
dep [Jst]
dep [Combine.E]
dep i s x returns a set ys of variables such that y in ys iff there is an x = a in s with y a subterm of a.
dep0 [Jst]
dep1 [Jst]
dep2 [Jst]
dep3 [Jst]
dep4 [Jst]
dep5 [Jst]
destruct [Term.Equal]
destruct [Term.App]
destruct a destructure an application a of the form App(f, l) into (f, l).
diff [V]
diff s1 s2 contains all variable equalities in s1 but not in s2.
diff [Partition]
diff p q contains all facts in p but not in q.
diff [Solution.SET]
diff s1 s2 contains all equalities in s1 that are not in s2.
diff [Infsys.LEVEL]
diff [D]
diff d1 d2 contains all disequalities in d1 not in d2.
diff [Context]
Difference.
diff [Combine.E]
diff s1 s2 returns the equality set s such that an equality e is in s iff if it is in s1 but not in s2.
difference [Infsys]
disapply [Apply]
Propagate a disequalities x <> y.
diseqs [Partition]
diseqs s x returns the set of all variable y disequal to x as stored in the variable disequality part d of the partitioning s.
diseqs [D]
diseqs s x returns set of disequalites of the form x <> y such that x <> y is represented in s.
disj [Jst.Pred]
Disjunction.
disjoint [Dom]
disjoint d e holds iff the denotations of d and e are disjoint.
disjunction [Shostak.T]
disjunction [Can.T]
dismerge [Partition]
diseq d s adds a disequality of the form x <> y to s.
dismerge [Infsys.ARITH]
dismerge [Infsys.EQ]
(g, a <> a; e; p) ==> (g; e'; p') with a, b i-pure, |= e', p' <=> |= e, p, a <> b.
div [Mpa.Q]
divexact [Mpa.Z]
divide [Pprod]
Divide a of the form x * ... y^m ... *z by y^n, where n <= m.
do_at_exit [Tools]
Procedures f registered by Tools.add_at_exit are called by do_at_exit().
do_at_reset [Tools]
do_at_reset().
dom [Pprod]
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.
dom [Combine]
dom p a returns a domain d for a term a together with a justification rho such that rho |- a in d.
dom [Arith]
dom_of [Var]
dom_of x returns the domain of interpretation of variable x, and raises Not_found if this domain is "unrestricted".
dom_of [Term.Var]
dom_of x returns the domain restriction associated with x (see Var.dom_of).
dom_of [Pprod]
Abstract constraint interpretation
dom_of [Arith]

E
empty [V]
The empty variable context.
empty [Term.Subst]
empty [Solution.EXT]
empty [Partition]
The empty partition.
empty [Solution.SET]
The empty equality set.
empty [Infsys.Config]
empty [G]
Empty set of inputs.
empty [D]
The empty disequality context.
empty [Context]
The empty logical context
empty [Combine.E]
The empty equality configuration.
eq [V]
eq s t holds iff s and t are identical.
eq [Term]
eq a b holds iff a and b are syntactically equal.
eq [Sym]
eq f g succeeds iff f and g represent the same function symbol.
eq [Partition]
eq s t holds if the respective equality, disequality, and constraint parts are identical, that is, stored in the same memory location.
eq [Name]
eq n m holds if the strings associated with n and m are equal.
eq [Solution.SET]
Test for identity of two solution sets.
eq [Infsys.LEVEL]
eq [G]
Identity test for input facts.
eq [Fact]
eq [Euclid.Rat]
Equality.
eq [Dom]
eq d e holds iff the denotation of d equals the denotation of e.
eq [D]
eq s t holds iff s and t are 'physically' equal.
eq [Context]
Identity test on contexts.
eq [Combine.E]
Identity test for two equality sets.
eq [Clause]
eql [Term]
eql al bl holds iff al and bl are of the form a1;...;an and b1;...;bn, respectively, and if eq ai bi holds for all i.
eqs_of [Context]
equal [Mpa.Q]
equal [Mpa.Z]
equal [Bitv]
equal [Atom]
Equality on atoms.
equality [Solution.SET]
equality s x yields an equality e of the form x = a with justification rho if x is a dependent variable.
euclid [Euclid.S]
Given two rational numbers p, q, euclid p q finds integers x, y, (p, q) satisfying p * x + q * y = (p, q), where (p, q) denotes the greatest common divisor of p, q.
exists [V]
exists s p x holds if p y holds for some y congruent to x modulo s.
exists [Th]
exists p holds if predicate p i holds for some i.
exists [Solution.DEP]
exists s p y holds iff p e holds for all equalities x = a with x dependent on y.
exists [Solution.SET]
exists f s checks if f e holds for all equalities e in s.
exists [Arith.Monomials.Neg]
exists [Arith.Monomials.Pos]
exists [Arith.Monomials]
exists_but [Th]
exists_but j p holds if predicate p i holds for some i <> j.
exit [Trace]
exit l name arg pp outputs a function exit trace message if l is currently active by first outputting name followed by printing arg using the pp printer.
expt [Mpa.Q]
expt [Mpa.Z]
expt [Dom]
ext [Solution.SET]
Return the value of the extension field.

F
f [Acsym.SIG]
f [Ac.SIG]
fail [Trace]
fail l exc outputs a failure warining if l is curently active, and raises exception exc.
fill [Bitv]
finalize [Infsys.ARITH]
finalize [Infsys.EQ]
Retrieve modified equality set.
find [V]
find s x returns the canonical representative of x of the equivalence class in s containing x together with a justification of the equality find s x = x.
find [Partition]
find s x returns the canonical representative of the equivalence class in the partitioning s containing the variable x.
find [Solution.SET]
find s x yields (b, rho) if x is a dependent variable in s with x = b; otherwise, (x, refl) is returned with refl a justification of x = x.
find [Combine.E]
find s th x is a if x = a is in the solution set for theory th in s; otherwise, the result is just x.
find [Can.OPS]
flag [Pretty]
floor [Mpa.Q]
floor [Euclid.Rat]
Floor function on rationals.
fold [V]
fold f s e applies f x (y, rho) for each x = y with justification rho in s and accumulates the result starting with e.
fold [Th]
fold f e applies f i to each theory i and accumulates the result, starting with e, in an unspecified order.
fold [Term.Subst]
fold [Term]
Fold operator fold f a e on terms applies argument function f to all variables in a and accumulates the results starting with e.
fold [Pprod]
fold [Partition]
fold [Solution.DEP]
fold s f y e accumulates, starting with e, applications of f to each equality x = a which x dependent on y.
fold [Solution.SET]
fold f s acc applies f e for each equality e in s and accumulates the result starting with acc.
fold [Bitvector]
fold f a e applies f at uninterpreted positions of a and accumulates the results starting with e.
fold [Arith.Monomials.Neg]
fold [Arith.Monomials.Pos]
fold [Arith.Monomials]
Folding over the non-constant monomials of an arithmetic term.
fold [Arith]
fold f a e applies f at uninterpreted positions of a and accumulates results starting with e.
fold [Acsym.TERM]
If a is of the form x1^m1*(x2^m2*...*xn^mn), then fold f a e is f x1 m1 (f x2 m2 (... (f xn mn e)...)).
fold [Ac.TERM]
If a is of the form x1^m1*(x2^m2*...*xn^mn), then fold f a e is f x1 m1 (f x2 m2 (... (f xn mn e)...)).
fold_left [Bitv]
fold_right [Bitv]
for_all [V]
for_all s p x holds if p y holds for all y congruent to x modulo s.
for_all [Th]
for_all p holds if predicate p i holds for all theories i.
for_all [Term]
forall p a holds if p x for all variables in a.
for_all [Solution.DEP]
for_all s p y holds iff p e holds for all equalities x = a with x dependent on y.
for_all [Solution.SET]
for_all f s checks if f e holds for all equalities e in s.
for_all [Arith.Monomials.Neg]
for_all [Arith.Monomials.Pos]
for_all [Arith.Monomials]
for_all [Arith]
for_all f holds iff f x holds for all top-level uninterpreted x in a.
for_all_but [Th]
for_all_but j p holds if predicate p i holds for all i <> j.
frac [Mpa.Q]
fresh_diseq [Partition]
Chooses a "fresh" variable disequality.
fresh_equal [Partition]
Chooses a "fresh" variable equality.
from_string [Bitv]
func [Trace]
func l name pp qq f provides a trace wrapper for function f for calling call before applying f and exit after applying f.
func2 [Trace]
fuse [Term.Subst]

G
g [Infsys]
Global variables for current input facts g, current variable partitioning p.
garbage_collection_enabled [V]
Switch for enabling/disabling garbage collection of noncanonical, internal variables.
gc [V]
gc filter s removes variables x in removable s, if the test filter x succeeds.
gc [Partition]
gc p s removes all noncanonical, internal variables x with p x.
gc [Combine]
gc c garbage collects internal variables in configuration c as introduced by Combine.process.
gcd [Mpa.Z]
ge [Mpa.Q]
ge [Mpa.Z]
get [Trace]
get () returns the set of currently active trace levels as a list.
get [Sym.Propset]
get [Sym.Cl]
get [Sym.Array]
get [Sym.Bv]
get [Sym.Pprod]
get [Sym.Coproduct]
get [Sym.Product]
get [Sym.Arith]
get [Sym.Uninterp]
get [Sym]
get f returns a theory-specific operator together with a tag for specifying the theory corresponding to f.
get [Jst.Mode]
get [G]
get g chooses a fact fct in g and returns this fact fct together with g where fct is removed.
get [Bitv]
get_clause [G]
get_clause g removes a clause cl in g or raise Not_found.
gt [Mpa.Q]
gt [Mpa.Z]

H
hash [Term]
hash a returns a hash value such that Term.eqa b implies hash a = hash b.
hash [Sym]
Nonnegative hash value for function symbols.
hash [Name]
Return hash values for names n.
hash [Mpa.Q]

I
i [Sym.Cl]
id [Jst.Eqtrans]
id a returns (a, rho) such that rho |- a = a.
indent [Trace]
index_of [Atom]
Retrieve the unique index from an atom-index pair.
infix [Pretty]
infix p str q (a, b) prints a using printer p, then it prints str, and then b using printer b.
infixl [Pretty]
infixl pp op prints a list [a1;...;an] in the form a1 op ... op an.
init [Bitv]
initialize [Infsys.ARITH]
initialize [Infsys.EQ]
Intitialize inference system with equality set.
inj [Th]
inj i hashconses injection of theories i into Some(i).
inj [Jst.Pred2]
inj [Dom]
integer_solve [Arith]
inter [Var.Cnstrnt]
inter [Three]
inter u v evaluates to Some(w) if both is_sub w u and is_sub w v; otherwise None is returned.
inter [Dom]
inter d1 d2 returns d iff the denotation of d is the nonempty intersection of the denotations of d1 and d2.
inv [Mpa.Q]
inv [Solution.SET]
inv s a yields (x, rho) if rho |- x = a is in s with justification rho.
inv [Euclid.Rat]
Inverse of Addition.
inv [Combine.E]
inv s a is x if there is x = a in the solution set for theory th; otherwise Not_found is raised.
inv [Can.OPS]
invlookup [Term.Subst]
is [Sym.Propset]
is [Sym.Cl]
is [Sym.Array]
is [Sym.Bv]
is [Sym.Pprod]
is [Sym.Coproduct]
is [Sym.Uninterp]
is [Funarr.Flat]
is_active [Trace]
Test if certain trace level is active.
is_add [Sym.Arith]
is_app [Term]
is_app a holds iff a is of the form App _.
is_apply [Sym.Cl]
is_atom [Prop]
is_c [Sym.Cl]
is_can [Th]
is_can i holds if i is a canonizable theory.
is_canonical [V]
For a term variable x, is_canonical s x holds iff find s x returns x.
is_canonical [Partition]
is_car [Sym.Product]
is_cdr [Sym.Product]
is_conc [Sym.Bv]
is_connected [Atom]
is_connected atm1 atm2 holds iff vars_of atm1 and vars_of atm2 not disjoint.
is_cons [Sym.Product]
is_const [Var]
is_const [Term.Var]
is_const [Term]
is_const a holds iff a is of the form App(_,[], _).
is_const [Sym.Bv]
is_const [Propset]
is_const [Bitvector]
is_const a holds iff a is a bitvector constant.
is_create [Sym.Array]
is_dependent [Solution.SET]
is_dependent s x holds iff there is an a such that x = a is in s.
is_diophantine [Arith]
is_diophantine a holds iff all variables in a are integer.
is_diseq [Propset]
is_diseq [Partition]
Apply the equality test on canonical variables.
is_diseq [D]
Check if two terms are known to be disequal.
is_diseq [Coproduct]
is_diseq a b iff a, b are disequal in the theory of COP.
is_diseq [Bitvector]
Two bitvector terms a, b are disequal iff they disagree on at least one position.
is_disj [Prop]
is_disjoint [Three]
is_disjoint u v holds iff the inter u v is None.
is_dom [Term.Var]
is_dom d x holds iff the domain e of x as obtained by Term.Var.dom_ofx is a subdomain of d (see also Dom.sub).
is_empty [V]
is_empty [Sym.Propset]
is_empty [Propset]
is_empty [Partition]
is_empty [Solution.SET]
is_empty s holds iff s does not contain any equalities.
is_empty [Infsys.Config]
is_empty [G]
is_empty g holds iff g does not contain any inputs.
is_empty [D]
Check if the argument disequality context is empty.
is_empty [Combine.E]
Succeeds if all individual equality sets are empty.
is_empty [Arith.Monomials.Neg]
is_empty [Arith.Monomials.Pos]
is_equal [V]
For variables x, y[], is_equal s x y holds if and only if x and y are in the same equivalence class modulo s.
is_equal [Term]
is_equal a b returns Three.Yes if Term.eqa b holds,, Three.No is a and b are two distinct constants in some theory th, and, Three.X if none of the above holds.
is_equal [Partition]
Apply the equality test on variables only.
is_equal [La]
is_equal_or_diseq [Partition]
Test for equality or disequality of canonical variables.
is_external [Term.Var]
is_false [Prop]
is_false [Boolean]
is_false [Atom]
is_false atm holds iff atm represents the false atom.
is_flat [Can.OPS]
is_fresh [Var]
is_fresh i x holds iff x is a fresh variable of theory i.
is_fresh [Term.Var]
is_full [Sym.Propset]
is_full [Propset]
is_i [Sym.Cl]
is_iff [Prop]
is_inconsistent [Context]
is_inconsistent s al is true iff the conjunction of atoms in al is inconsistent in s.
is_independent [Solution.SET]
is_independent s x holds iff x is a variable in some a with y = a in s.
is_inl [Sym.Coproduct]
is_inr [Sym.Coproduct]
is_int [Var]
is_int x holds iff x is constraint over the integers.
is_int [Term.Var]
is_int x holds if x is restricted to be interpreted over the integers.
is_int [Partition]
is_int [Euclid.Rat]
Integer test of a rational.
is_int [Arith]
is_integer [Mpa.Q]
is_internal [Var]
is_internal x holds iff either is_rename x, is_slack x, or is_fresh x holds.
is_internal [Term.Var]
is_internal x holds iff x is either a renaming, a fresh, or a slack variable.
is_interp [Product]
in_interp a holds if the top-level function symbol is in the signature of P.
is_interp [Pprod]
is_interp [Funarr]
is_interp [Coproduct]
in_interp a holds if the top-level function symbol is in the signature of COP.
is_interp [Bitvector]
is_interp a holds iff the top-level function symbol of a is interpreted in the theory of bitvectors (see also module Sym.
is_interp [Arith]
is_interp a holds iff the toplevel function symbol in a is a linear arithmetic function symbol.
is_interp [Acsym.TERM]
is_interp a holds iff a is of the form b*c.
is_interp [Ac.TERM]
is_interp a holds iff a is of the form b*c.
is_ite [Sym.Propset]
is_ite [Prop]
is_k [Sym.Cl]
is_let [Prop]
is_mult [Sym.Pprod]
is_multq [Sym.Arith]
is_neg [Prop]
is_neg [Mpa.Q]
is_neg [Arith.Monomials]
is_negatable [Atom]
is_negatable atm is always true.
is_negone [Mpa.Q]
is_none [Th]
is_none [Jst.Mode]
is_nonneg [Mpa.Q]
is_nonneg [Arith]
Test if a >= 0.
is_nonneg_num [Arith]
is_nonneg_num a holds iff a represents a nonnegative number.
is_nonneg_slack [Var]
is_zero_slack x holds iff x is a nonnegative slack variable.
is_nonneg_slack [Term.Var]
is_nonpos [Mpa.Q]
is_nonpos_num [Arith]
is_nonpos_num a holds iff a represents a nonpositive number.
is_num [Sym.Arith]
is_num [Arith]
is_one [Mpa.Q]
is_one [Bitvector]
is_one a holds iff all bits in a are 1.
is_one [Arith]
is_one a holds iff a is equal to mk_one.
is_outl [Sym.Coproduct]
is_outr [Sym.Coproduct]
is_pos [Mpa.Q]
is_pos [Arith.Monomials]
is_pos [Arith]
Test if a > 0.
is_pos_num [Arith]
is_pos_num a holds iff a represents a positive number.
is_pure [Term.Equal]
is_pure [Term]
is_pure i a holds iff all function symbols in a are of theory i (see Th.t).
is_pure [Product]
is_pure a holds if every function symbol in a is in P; that is, only variables occur at uninterpreted positions.
is_pure [Fact.Pos]
is_pure [Fact.Nonneg]
is_pure [Fact.Diseq]
is_pure [Fact.Equal]
is_pure [Coproduct]
is_pure a holds if every function symbol in a is in COP; that is, only variables occur at uninterpreted positions.
is_pure [Arith]
is_pure a holds iff a is a linear arithmetic term; that is, a is term equal to a numeral (constructed with Arith.mk_num), a linear multiplication (Arith.mk_multq), or an addition (Arith.mk_add).
is_pure [Can.OPS]
is_q [Arith]
is_q q a holds iff a is equal to the numeral mk_num q.
is_real [Var]
is_real x holds iff x is constraint over the reals.
is_real [Term.Var]
is_real x holds if x is restricted to be interpreted over the reals.
is_reify [Sym.Cl]
is_rename [Var]
is_rename x holds iff x is a rename variable.
is_rename [Term.Var]
Variables are partitioned into renaming, external, fresh, free, and slack variables, and the following recognizers can be used to test membership of a variable into a partition.
is_s [Sym.Cl]
is_sat [Combine]
is_sat [c] applies applicable branching rules until it finds a satisfiable configuration d (with empty input) for which no branching rule is applicable; in this case Some(d) is returned.
is_select [Sym.Array]
is_shostak [Th]
is_shostak i holds if i is a Shostak theory.
is_slack [Var]
is_cnstrnt x holds iff x is a slack variable.
is_slack [Term.Var]
is_some_fresh [Var]
is_sub [Three]
is_sub u v holds if either u = v or u < v.
is_sub [Sym.Bv]
is_true [Prop]
is_true [Boolean]
is_true [Atom]
is_true atm holds iff atm represents the true atom.
is_true [Arith.Monomials]
is_uninterp [App]
is_uninterp a holds iff the function symbol of a is uninterpreted (see module Sym).
is_uninterpreted [Th]
is_uninterpreted i holds iff i is the uninterpreted theory Th.u.
is_unsat [Clause]
is_update [Sym.Array]
is_valid [Context]
is_valid s al is true iff the conjunction of atoms in al is valid in s.
is_var [Var]
is_var x holds iff x is an external variable, that is, it has been returned by a call to mk_external.
is_var [Term.Equal]
is_var [Term]
is_var a holds iff a is of the form Var _.
is_var [Prop]
is_var [Fact.Pos]
is_var [Fact.Nonneg]
is_var [Fact.Diseq]
is_var [Fact.Equal]
is_var [Arith.Monomials]
is_zero [Mpa.Q]
is_zero [Bitvector]
is_zero a holds iff all bits in a are 0.
is_zero [Arith]
is_zero a holds iff a is equal to mk_zero.
is_zero_slack [Var]
is_zero_slack x holds iff x is a zero slack variable.
is_zero_slack [Term.Var]
Slacks are subpartitioned into zero and nonnegative slacks.
isolate [Arith]
isolate y (a, b) isolates y in an equality a = b; that is, if there is a b such that y = b iff a = b, then b is returned.
iter [V]
Iterate over the extension of an equivalence class.
iter [Th]
fold f applies f i for each theory i in some unspecified order.
iter [Term]
Iteration operator on terms.
iter [Pprod]
iter [Solution.DEP]
iter s f y applies f to each equality e of the form x = a with justification rho such that x is dependent on y.
iter [Solution.SET]
iter f s applies f e for each equality fact e in s.
iter [Bitvector]
iter f a applies f for all toplevel subterms of a which are not interpreted in the theory of bitvectors.
iter [Bitv]
iter [Arith.Monomials.Neg]
iter [Arith.Monomials.Pos]
iter [Arith]
iter f a applies f at uninterpreted positions of a.
iter [Acsym.TERM]
If a is of the form x1^m1*(x2^m2*...*xn^mn), then iter f a is f x1 m1; f x2 m2; ...; f xn mn.
iter [Ac.TERM]
If a is of the form x1^m1*(x2^m2*...*xn^mn), then iter f a is f x1 m1; f x2 m2; ...; f xn mn.
iter_if [Partition]
Iterate over the x's satisfying f in the equivalence class of y.
iterate [Pprod]
iterate [Acsym.TERM]
For n>=1, iterate a n iterates make a n-1 times.
iterate [Ac.TERM]
For n>=1, iterate a n iterates make a n-1 times.
iteri [Bitv]

K
k [Term.Var]
k is a global variable for generating names of internally generated variables.
k [Sym.Cl]

L
la [Th]
Theory identifiers.
la_of [Combine.E]
lazy_sigma [App]
lcm [Mpa.Z]
lcm_of_denominators [Arith]
le [Mpa.Q]
le [Mpa.Z]
length [Bitv]
level [Infsys.LEVEL]
lhs [Term.Equal]
lhs_of [Fact.Diseq]
lhs_of [Fact.Equal]
linenumber [Tools]
linenumber used by lexer and parser.
list [Pretty]
Printing lists in Ocaml syntax.
lookup [Term.Subst]
lower [La]
lt [Mpa.Q]
lt [Mpa.Z]

M
make [Term.Equal]
make [Sym.Uninterp]
make [Fact.Pos]
make [Fact.Nonneg]
make [Fact.Diseq]
make [Fact.Equal]
make [Acsym.TERM]
For canonical a, b, make a b returns a canonical term c with AC |= c = a * b.
make [Ac.TERM]
For canonical a, b, make a b returns a canonical term c with AC |= c = a * b.
map [Shostak.T]
map [Propset]
map f a applies f to all top-level uninterpreted subterms of a, and rebuilds the interpreted parts in order.
map [Product]
map f a applies f at uninterpreted positions of a an builds a canonical term from the results.
map [Pretty]
Printing of a list of pairs as a finite map.
map [Pprod]
map [Funarr]
Applying a term transformer at all uninterpreted positions map f (mk_select a j) equals mk_select (map f a) (map f j), map f (mk_update a i x) equals mk_select (map f a) (map f i) (map f x), Otherwise, map f x equals f x
map [Fact.Pos]
map [Fact.Nonneg]
map [Fact.Diseq]
map [Fact.Equal]
map [Fact]
map [Coproduct]
map f a homomorphically applies f at uninterpreted positions of a and returns the corresponding canonical term.
map [Bitvector]
map f a applies f to all top-level uninterpreted subterms of a, and rebuilds the interpreted parts in order.
map [Bitv]
map [Arith]
Applying a term transformer f at uninterpreted positions.
map [Apply]
map f a applies the term transformer f to each uninterpreted subterm of a and rebuilds the term a by using the simplifying constructors mk_apply and mk_abs.
map [App]
map [Acsym.TERM]
map f a applies f at uninterpreted positions and recanonizes the result.
map [Can.T]
map [Ac.TERM]
map f a applies f at uninterpreted positions and recanonizes the result.
map2 [Fact.Equal]
map_lhs [Fact.Equal]
map_rhs [Fact.Equal]
mapargs [Jst.Eqtrans]
mapargs app f a maps f op over the arguments al of an application a of the form op(al).
mapi [Bitv]
mapl [Term]
Mapping over list of terms.
mapq [Arith.Monomials]
max [Mpa.Q]
max_length [Bitv]
maximize [Combine]
maximize c a returns either (b, rho) such that b+ is empty and rho |- la => a = b, or, raises La.Unbounded if a is unbounded in the linear arithmetic la equality set of c.
mem [Th]
mem i jl tests if i is in jl.
mem [Dom]
mem q d tests if the rational q is an element of the denotation of d.
mem [Arith.Monomials.Neg]
mem [Arith.Monomials.Pos]
merge [V]
Adding a variable equality x = y by destructively updating context s.
merge [Partition]
merge e s adds a new variable equality e of the form x = y into the partition s.
merge [Infsys.ARITH]
merge [D]
merge e s propagates an equality e of the form x = y into the disequality context by computing a new disequality context which is equal to s except that every x has been replaced by y.
merge [Infsys.EQ]
(g, a = b; e; p) ==> (g; e'; p') with a, b i-pure, , |= e', p' <=> |= e, a = b, p, if e' |= x = y then p' |= x = y.
min [Mpa.Q]
minimize [Combine]
Minimize is the dual of maximize.
minus [Mpa.Q]
mixfix [Pretty]
mk_add [Sym.Arith]
mk_add [Arith]
mk_add a b constructs the normalized linear arithmetic term for the sum of a and b.
mk_addl [Arith]
mk_addl iterates Arith.mk_add as follows: mk_addl [] is mk_zero, mk_addl [a] is a, mk_addl [a0;...;an] is mk_add a0 (mk_addl [a1;...;an])
mk_addq [Arith]
mk_addq q a creates the normalized linear arithmetic term representing q + a.
mk_app [Term.App]
mk_app f l constructs a function application of symbol f to a list l.
mk_apply [Apply]
mk_apply c a al builds an application with range type c by applying term a to an argument term b.
mk_bitvector [Var.Cnstrnt]
mk_c [Apply]
mk_car [Sym.Product]
mk_car [Product]
Given a canonical term a, mk_car a constructs a canonical term for representing the first projection on a.
mk_cdr [Sym.Product]
mk_cdr [Product]
Given a canonical term a, mk_cdr a constructs a canonical term for representing the second projection on a.
mk_compl [Propset]
mk_conc [Sym.Bv]
mk_conc [Bitvector]
mk_conc n m b1 b2 concatenates a bitvector b1 of width n and a bitvector b2 of width m.
mk_conj [Prop]
mk_cons [Sym.Product]
mk_cons [Product]
Given canonical terms a, b, mk_cons a b constructs a canonical term for representing a pair of a and b.
mk_const [Var]
mk_const [Term.App]
mk_const c constructs a function application of symbol c to the empty argument list.
mk_const [Term.Var]
Construct hashconsed "constant" variables
mk_const [Sym.Bv]
mk_const [Bitvector]
mk_const c is the constructor for building constant bitvectors, in which all bits are known to be either 0 or 1.
mk_create [Sym.Array]
mk_create [Funarr.Flat]
mk_create [Funarr]
Creating constant array.
mk_decr [Arith]
mk_decr a creates the normalized linear arithmetic term representing a - 1.
mk_diseq [Atom]
The atom-index pair mk_diseq (a, b) represents the disequality a <> b.
mk_disj [Prop]
mk_empty [Sym.Propset]
mk_empty [Propset]
mk_eps [Bitvector]
mk_eps is the constant bitvector of length 0.
mk_equal [Atom]
The atom-index pair mk_equal (a, b) represents the equality a = b.
mk_expt [Pprod]
mk_external [Var]
mk_external n d creates an external variable with associated name n and optional domain constraint d.
mk_false [Prop]
mk_false [Boolean]
mk_false [Atom]
Atom-index pair for representing the false atom.
mk_fresh [Var]
mk_fresh th i d creates a fresh variable associated with theory i and optional domain d.
mk_fresh [Term.Var]
mk_fresh th None d creates a theory-specific fresh variable with optional domain restriction d, and mk_fresh th Some(i) d creates the theory-specific fresh variable of index i with optional domain restriction d.
mk_full [Sym.Propset]
mk_full [Propset]
mk_i [Apply]
mk_iff [Prop]
mk_incr [Arith]
mk_incr a creates the normalized linear arithmetic term representing a + 1.
mk_inj [Coproduct]
Generalized injection of the form inr(inr(....(inr(x)))) with x uninterpreted or of the form inr(y).
mk_inl [Sym.Coproduct]
mk_inl [Coproduct]
For canonical a, mk_inl a constructs a canonical term for representing inl(a)
mk_inr [Sym.Coproduct]
mk_inr [Coproduct]
For canonical a, mk_inr a constructs a canonical term for representing inr(a)
mk_inter [Propset]
mk_ite [Sym.Propset]
mk_ite [Propset]
Constructing BDDs for conditional set constructor.
mk_ite [Prop]
mk_k [Apply]
mk_let [Prop]
mk_mult [Sym.Pprod]
mk_mult [Pprod]
Constructing a term for representing a * b.
mk_multl [Pprod]
mk_multq [Sym.Arith]
mk_multq [Arith]
mk_multq q a creates the normalized linear arithmetic term representing q * a.
mk_neg [Prop]
mk_neg [Arith]
mk_neg a creates the normalized linear arithmetic term representing -a.
mk_neglit [Prop]
mk_nonneg [Atom]
The atom-index pair mk_nonneg a represents the nonnegativity constraint a >= 0.
mk_num [Sym.Arith]
mk_num [Arith]
mk_num q creates a constant mk_app (num q) []
mk_one [Bitvector]
mk_one n is the constant one bitvector of length n
mk_one [Arith]
mk_one is mk_num Mpa.Q.one
mk_out [Coproduct]
Generalized coinjection: mk_out 0 a = mk_outl a, mk_out 1 a = mk_outr a, mk_out i a = mk_outr (mk_out (i - 1) x) if i > 1, Otherwise, the value of mk_out is unspecified.
mk_outl [Sym.Coproduct]
mk_outl [Coproduct]
For canonical a, mk_outl a constructs a canonical term for representing outl(a)
mk_outr [Sym.Coproduct]
mk_outr [Coproduct]
For canonical a, mk_outr a constructs a canonical term for representing outr(a)
mk_pos [Atom]
The atom-index pair mk_nonneg a represents the positivity constraint a > 0.
mk_poslit [Prop]
mk_proj [Product]
mk_proj i a projects the term ai in a tuple of the form (a1, ((a2, ...)...), an).
mk_real [Var.Cnstrnt]
mk_rename [Var]
mk_rename n d constructs a rename variable with associated name "n!i" and optional domain constraint.
mk_rename [Term.Var]
mk_rename n None constructs a fresh variable, where 'fresh' means that the index part of this fresh variable (see Module Term.Var) is larger than Term.Var.k; as a side-effect, Term.Var.k is incremented.
mk_s [Apply]
mk_select [Sym.Array]
mk_select [Funarr.Flat]
mk_select [Funarr]
mk_select a j constructs a canonical term equivalent to App(select, [a; j]).
mk_slack [Var]
- mk_slack i Zero creates a zero slack variable with 0 as the only possible interpretation.
mk_slack [Term.Var]
mk_slack None sl constructs a fresh slack variable, and mk_slack Some(i) sl construct a slack variable of index i.
mk_sub [Sym.Bv]
mk_sub [Bitvector]
mk_sub n i j x returns the representation of the bitvector for the contiguous extraction of the j-i+1 bits i through j in the bitvector x of length n.
mk_sub [Arith]
mk_sub a b creates the normalized linear arithmetic term representing a - b.
mk_true [Prop]
mk_true [Boolean]
mk_true [Atom]
Atom-index pair for representing the true atom.
mk_tuple [Product]
For n > 0 canonical terms ai, 0 <= i <= n, mk_tuple [a1;a2;...;an] constructs a canonical representation of (a1, ((a2, ...)...), an).
mk_two [Arith]
mk_one is mk_num Mpa.Q.one
mk_union [Propset]
mk_update [Sym.Array]
mk_update [Funarr.Flat]
mk_update [Funarr]
mk_update a x i constructs a canonical term equivalent to App(update, [a;x;i]).
mk_var [Term.Var]
mk_var n d constructs an external variable (see Var.mk_external) of name n and optional domain constraint d.
mk_var [Prop]
mk_zero [Bitvector]
mk_zero n is just defined to be the constant zero bitvector of length n
mk_zero [Arith]
mk_zero is mk_num Mpa.Q.zero
model [La]
model (p, s) xs returns an assignment rho for the variables in xs with bindings x |-> q.
model [Combine]
Model construction.
msg [Trace]
msg l name arg pp outputs a trace message if l is currently active by first outputting name followed by printing arg using the pp printer.
mult [Mpa.Q]
mult [Mpa.Z]
mult [Dom]
multiplicity [Pprod]
multiplicity [Acsym.TERM]
multiplicity x a counts the number of interpreted occurrences of x in a.
multiplicity [Ac.TERM]
multiplicity x a counts the number of interpreted occurrences of x in a.
multl [Dom]
multq [Dom]

N
name_of [Var]
name_of x returns the name associated with a variable x.
name_of [Term.Var]
name_of a returns the name n if a is a variable of the form Var(n); otherwise the result is undefined.
nat2bitv [Bitvector]
nat2bitv n i returns the a bitvector of length n representing the unsigned interpretation of the nonnegative integer i.
negate [Atom]
negate f atm ...
negone [Mpa.Q]
nl [Th]
nl_merge [La]
nl_of [Combine.E]
no [Jst.Rel2]
nonconstant_monomials_of [Arith]
If a is of the form q + a1 + ... + an, then nonconstant_of a returns the list of monomials [a1; ...; an]
nonconstant_of [Arith]
If a is of the form q + a', then nonconstant_of a returns a'
nonneg [Var]
nonneg d constructs Nonneg(d).
nonneg [Infsys.ARITH]
(g, a >= 0; e; p) ==> (g; e'; p') with a pure, |= e', p' <=> |= e, a >= 0, p, if e' |= x = y then p' |= x = y.
normalize [Infsys.ARITH]
Above is identical to Infsys.EQ.
normalize [Infsys.EQ]
(g; e; p) ==> (g'; e'; p') where source and target configuration are equivalent.
number [Pretty]
numerator [Mpa.Q]

O
occurs [Term]
occurs a b holds if term a occurs in b.
of_atom [Atom]
Construct an atom-index pair with unique index from an atom.
of_axioms [Jst]
of_diseq [Fact]
of_equal [Fact]
of_equal [Can.T]
of_index [Atom]
of_index n returns an atom-index pair of index n if such and atom-index pair has been created since the last Tools.do_at_reset.
of_int [Mpa.Q]
of_int [Mpa.Z]
of_ints [Mpa.Q]
of_list [Clause]
of_q [Dom]
of_q q returns Int if the rational q is an integer, and Real otherwise.
of_string [Th]
of_string n returns theory identifier i if to_string i equals to n; otherwise the result is undefined.
of_string [Pretty.Mode]
of_string [Name]
of_string s constructs a name with associated string s.
of_string [Mpa.Q]
of_string [Jst.Mode]
of_three [Jst.Three]
of_var_diseq [Can.T]
of_var_equal [Can.T]
of_z [Mpa.Q]
one [Mpa.Q]
one [Mpa.Z]
one [Euclid.Rat]
option [Pretty]
orelse [Jst.Rel2]
orelse [Jst.Rel1]
orelse [Jst.Pred2]
orient [Term]
orient (a, b) is (b, a) if b is greater than a, and (a, b) otherwise.
out [Th]
Returns i if argument is of the form Some(i), and raises Not_found otherwise.

P
p [Th]
p [Infsys]
p_of [Combine.E]
pair [Pretty]
partition_of [Context]
p_of s returns the partitioning associated with s.
pointwise [Jst.Eqtrans]
pos [Infsys.ARITH]
(g, a > 0; e; p) ==> (g; e'; p') with a pure, |= e', p' <=> |= e, a > 0, p, if e' |= x = y then p' |= x = y.
post [Pretty]
pow [Mpa.Z]
pp [Var.Cnstrnt]
pp [Var]
Pretty-printer for variables.
pp [V]
Pretty-printing
pp [Three]
Pretty-printing
pp [Th]
Pretty-printing theories.
pp [Term.Subst]
pp [Term.Equal]
pp [Term]
Pretty-printing of terms.
pp [Sym.Propset]
pp [Sym.Cl]
pp [Sym.Array]
pp [Sym.Bv]
pp [Sym.Pprod]
pp [Sym.Coproduct]
pp [Sym.Product]
pp [Sym.Arith]
pp [Sym.Uninterp]
pp [Sym]
Pretty-printing applications of symbols to an argument list.
pp [Solution.EXT]
pp [Prop.Assignment]
pp [Prop]
pp [Partition]
Pretty-printing a partitioning.
pp [Name]
Pretty-printing of names.
pp [Mpa.Q]
pp [Mpa.Z]
pp [Solution.SET]
Pretty-printing a solution set.
pp [La]
Print a partitioned version of s.
pp [Jst]
pp [Infsys.LEVEL]
pp [Infsys.Config]
Pretty-printing configurations.
pp [G]
Pretty-printing input facts.
pp [Fact.Pos]
pp [Fact.Nonneg]
pp [Fact.Diseq]
pp [Fact.Equal]
pp [Fact]
Pretty-printing the atom of a justification.
pp [Dom]
pp [D]
Pretty-printing.
pp [Context.Status]
pp [Context]
Pretty-printing the context of a state.
pp [Combine.E]
Pretty-printing of combined equality set.
pp [Clause]
pp [Atom]
Pretty-printing an atom.
pp_i [Combine.E]
Pretty-printing of an individual equality set.
pp_index [Solution]
pretty [Var]
print_justification [Fact]
Fact.pp prints justification only if this flag is set to true.
proc [Trace]
proc l name pp f is just func l name pp Pretty.unit f.
process [Combine]
Given a starting configuration ({fct}, e, p), process applies all rules of the combined inference system (except branching rules).
profile [Tools]
profile str f profiles function f, and registers an exit function which outputs the number of calls of this function, and the total time spent in this function; the argument str is usually just the name of the function.
profiling [Tools]
propagate [Infsys.ARITH]
propagate [Infsys.EQ]
(g, e; p) ==> (g; e'; p) with e |= x = y, , notp |= x = y, , |= e, p <=> |= e', p'
propagate_diseq [Infsys.ARITH]
propagate_diseq [Infsys.EQ]
(g; e; p) ==> (g; e'; p') with p' |= x <> y, |= e', p' <=> |= e, p.
put [G]
put fct g adds fact fct to g.
put_clause [G]
put_clause g adds a clause cl to g.

Q
qsolve [Arith]
solve e solves the equation e of the form a = b over the rationals.

R
registered [Trace]
reify [Sym.Cl]
removable [V]
Set of removable variables.
remove [Trace]
remove l deactivates the trace level l.
replace [Jst.Eqtrans]
replace [G]
replace e g with e of the form x = a replaces occurrences of a in g with x.
replace [Fact]
reset [Trace]
Reset the set of trace levels to the empty set, that is, all tracing is disabled.
restrict [Solution.EXT]
restrict [Solution.SET]
restrict s x removes equalities of the form x = a in s.
rhs [Term.Equal]
rhs_of [Fact.Diseq]
rhs_of [Fact.Equal]

S
s [Sym.Cl]
sat [Prop]
might fail if already in use.
semantic_coi_min [Context]
set [Th]
set [Pretty]
Printing of a list as a set.
set [Jst.Mode]
set [Context.Mode]
set [Bitv]
set_assertion_frequency [Prop]
set_clause_relevance [Prop]
set_cleanup_period [Prop]
set_num_refinements [Prop]
set_of [Combine.E]
set_polarity_optimization [Prop]
set_remove_subsumed_clauses [Prop]
set_validate [Prop]
set_verbose [Prop]
Parameter settings for SAT solver
shiftl [Bitv]
shiftr [Bitv]
show_explanations [Prop]
sigma [Propset]
Canonizer.
sigma [Product]
sigma op l applies the function symbol op from the pair theory to the list l of argument terms to build a canonical term equal to op(l).
sigma [Pprod]
sigma [Funarr]
Array canonizer.
sigma [Coproduct]
sigma op [a] applies mk_inl a if op is equal to the inl symbol.
sigma [Combine]
Theory-specific canonizers.
sigma [Bitvector]
Given a bitvector symbol f (see module Sym) and a list l of arguments, sigma f l returns a concatenation normal form (CNF) of the application 'f(l)'.
sigma [Arith]
sigma op al applies the linear arithmetic function symbol to the list of arguments al such that the result is equal to App(op, al) in this theory and normalized if all terms in al are normalized.
sigma [Apply]
Depending on the function symbol f, sigma f al uses the constructors Apply.mk_apply to compute the normal-form of applying f to the arguments al.
sigma [App]
sigma [Acsym.TERM]
If f equals *, then sigma f [a1; a2] reduces to make a1 a2; otherwise the uninterpreted application f(a1, a2) is built.
sigma [Can.T]
sigma [Ac.TERM]
If f equals *, then sigma f [a1; a2] reduces to make a1 a2; otherwise the uninterpreted application f(a1, a2) is built.
simplify [Combine]
Simplification of atoms in a context (e, p) by canonizing component terms using Combine.can.
singleton [Clause]
solve [Shostak.T]
solve [Propset]
Solver
solve [Product]
Given an equality a = b, the pair solver solve(a, b) raises the exception Exc.Inconsistent iff the equality a = b does not hold in P, or, returns a solved list of equalities x1 = a1;...;xn = an with xi variables in a or b, the xi are pairwise disjoint, and no xi occurs in any of the ai. The ai are all in canonical form, and they might contain newly generated variables (see Term.Var.mk_fresh).
solve [Euclid.S]
solve [c1;...;cn] b yields a particular solution for a linear diophantine equation c0 * x0 + ... + cn * xn = b with nonzero, rational coefficients ci, for i = 1,...,n with n >= 1.
solve [Coproduct]
Given an equality a = b, solve(a, b) raises the exception Exc.Inconsistent iff the equality a = b does not hold in COP, or, returns a solved list of equalities x1 = a1;...;xn = an with xi variables in a or b, the xi are pairwise disjoint, and no xi occurs in any of the ai. The ai are all in canonical form, and they might contain newly generated variables (see Term.Var.mk_fresh).
solve [Combine]
Theory-specific solvers.
solve [Bitvector]
solve b either fails, in which case b is unsatisfiable in the given bitvector theory or it returns a list of equations [(x1,e1);...(xn,en)] such that xi is a non bitvector term, all the xi are pairwise disjoint, none of the xi occurs in any of the terms ej, and, viewed as a conjunction of equivalences, the result is equivalent (in the theory of bitvectors) with b.
solve [Arith]
solve [Apply]
Work in progress.
statistics [Prop]
statistics [Context]
Statistics.
status [Term]
status a classifies term a into one of: variables, pure terms with all function symbols drawn from a single theory i, mixed terms. In this case, a maximal pure term is retured.
status [Fact.Pos]
status [Fact.Nonneg]
status [Fact.Diseq]
status [Fact.Equal]
string [Pretty]
sub [Var.Cnstrnt]
sub [Mpa.Q]
sub [Mpa.Z]
sub [Dom]
sub d e holds iff the denotation of d is a subset of the denotation of e.
sub [Bitv]
subterm [Term]
subterm a b holds if a is a subterm of b.
succ [Mpa.Z]
sym_of [Term.App]
sym_of a returns the function symbol f of an application a of the form App(f,_).
syntactic_coi_min [Context]

T
term_of [Fact.Pos]
term_of [Fact.Nonneg]
th [Shostak.T]
th [Acsym.SIG]
th [Ac.SIG]
th [Can.T]
theory_of [Term.App]
theory_of a returns the theory associated with the top-level function symbol of a, and raises Not_found otherwise.
theory_of [Sym]
theory_of f returns the theory of type Th.t associated with f.
three [Pretty]
to_int [Mpa.Z]
to_list [Solution.SET]
to_list s builds up a list of equalities from the solved form s.
to_stderr [Pretty]
to_stderr pp transforms a printer to print on stdout.
to_stdout [Pretty]
to_stdout pp transforms a printer pp to print on stdout.
to_string [Th]
to_string i returns a name for theory i.
to_string [Term]
Pretty-printing a term to a string.
to_string [Pretty.Mode]
to_string [Pretty]
to_string pp transforms a printer to print on a string.
to_string [Name]
to_string n returns the string associated with n.
to_string [Mpa.Q]
to_string [Mpa.Z]
to_string [Jst.Mode]
to_string [Dom]
to_string [Bitv]
to_string [Atom]
Pretty-printing an atom to a string.
to_three [Jst.Three]
to_three fcts p a accumulate facts in the result of p a in global variable fcts and returns a corresponding result of type Three.t.
to_z [Mpa.Q]
totalize [Jst.Eqtrans]
trace [Jst.Rel2]
trace [Jst.Rel1]
trace [Jst.Pred2]
trace [Jst.Pred]
trace [Jst.Eqtrans]
triple [Pretty]
two [Mpa.Q]
two [Mpa.Z]

U
u [Th]
u_of [Combine.E]
Projections to individual equality sets.
union [Three]
union u v evaluates to w if both is_sub u w and is_sub v w holds.
union [Dom]
union d1 d2 returns d iff the denotation d is the union of the denotations of d1 and d2.
unit [Pretty]
unsafe_get [Bitv]
unsafe_set [Bitv]
unsat [Clause]
update [Solution.EXT]
update [Solution.SET]
update s e updates s with a new equality of the form, say, x = a.
upper [La]
upper s a returns either (b, rho) such that b+ is empty and rho |- a = b, or, raises Unbounded if a is unbounded in s.
upper_of [Context]
upper_of s returns an upper bound on the indices of all fresh variables in s.
utime [Tools]
utime f a returns not only the result of applying f to a but also the time required to compute the function.

V
v_of [Partition]
Accessing the variable equalities of a partitioning.
value [Context.Mode]
variable_choose [Arith.Monomials.Neg]
variable_choose [Arith.Monomials.Pos]
variable_choose [Arith.Monomials]
variable_least_of [Arith.Monomials.Neg]
variable_least_of [Arith.Monomials.Pos]
vars_of [Term]
Return set of variables.
vars_of [Atom]
vars_of atm collects all variables in atm.
verbose [Context]
version [Version]
Version and build date of current ICS version.

W
width [Sym.Bv]
width [Bitvector]
Computes the width of a bitvector term, and returns None if the argument is not an application of a bitvector symbol
width_of [Var]
width_of x returns the length n of variable x with a bitvector interpretation, and raises Not_found otherwise.
width_of [Term.Var]
with_of x returns the length of the bitvector interpretation of x, or raises Not_found.

Y
yes [Jst.Rel2]
yes_or_no [Jst.Rel2]
yes_or_no [Jst.Rel1]

Z
zero [Mpa.Q]
zero [Mpa.Z]
zero [Euclid.Rat]
Neutral element of addition.
zsolve [Arith]
Solution for a linear diophantine equation.