>>>>> "MD" == Manjeet Dahiya <
manjee...@gmail.com> writes:
MD> I want to define the following query for validity:
MD> f(a, b, x, y) such that a = false && b = false
MD> ->
MD> f(a, b, x, y) such that a = true && b = false
MD> In a way, I need to substitute the values of a and b in the formula on
MD> both the sides of implication.
[...]
MD> I have the second the second case. a is an expression in terms of
MD> b, x and y. Can you suggest any other solver that may solve such
MD> queries?
Hmm. I'm still not fully clear on what your problem really looks
like. I think the clearest way to write your formula would be to
figure out what all the free variables are and what free variables all
the other parts are functions of, and then put in all the needed
quantifiers with their scopes. You'll have a much easier time solving
your problem if it's expressible without quantifier alternation
("there exists" inside "for all" or vice-versa), though perhaps you're
saying you think it can't be.
If you need quantifiers, your choice of tools becomes more
complicated: there's a wider variety of tools with narrower classes of
problems for which they work well.
The broader class of tools that are like STP are called SMT solvers;
some SMT solvers have some support for quantified formulas. In your
case you need one that supports both quantifiers and bit-vectors. You
can find a good list of SMT solvers at
http://www.smtlib.org/solvers.html , and their web pages or
documentation generally describe which theories they support. Most of
these should support the same SMTLIB input format, which should make
it easier to try different tools. Some you might try are CVC(3/4),
Yices, or Z3.
Further afield, there are at least a couple other classes of tools you
could consider. "First-order automated theorem provers" tend to focus
on proof techniques more like instantiating axioms: they might be
useful in your problem if you only need a few properties about
bit-vectors that you can express manually. "Quantified Boolean
formula" (QBF) solvers are generalizations of SAT solvers that allow
arbitrary combinations of quantifiers, but still only Boolean
variables: to use one you'd need to translate your whole formula into
a quantified CNF format.