[SMT-LIB] SMT solver's API

Tinelli, Cesare cesare-tinelli at uiowa.edu
Fri Jan 28 01:28:01 EST 2011


Hi Kecheng and all,

On 26 Jan 2011, at 11:24, Aaron Stump wrote:

> Hi, Kecheng.
> 
> On Tue, Jan 25, 2011 at 12:09 PM, <kecheng at cecs.pdx.edu> wrote:
> 
> 
[...]
> 
>> 
>> To invoke the SMT solver textually, that means I need some Inter-process
>> communication (IPC) between my program and the solver, right? In my project,
>> I want to do the symbolic simulation. For example, I want to use the SMT
>> solver to simplify/rewrite an expression. What should I do? In my program, I
>> will have my only format to represent an expression. To make a query with
>> the SMT solver, I have to convert my format to the SMT-Lib format, then
>> invoke the solver. The SMT solver will return a simplified expression, but
>> in STM-Lib format. Now I should have a parser to parse it into our format
>> again. Do it make sense? Or do you have any better suggestion?
>> 
> 
> Yes, this approach to connecting your tool to an SMT solver will work, and
> is reasonable.  It will allow you to connect to any solver supporting the
> SMT-LIB format, and using the features of SMT-LIB version 2.0, you can
> interact in a more fine-grained way with the solver.
> 
That said, I'd like to clarify that there is no specific command in SMT-LIB 1 or 2 to send an expression to an solver and get back a simplified version of it.
If an SMT solver provides that functionality, you'll have to interact with it using the solver's native textual format. 

Best,


Cesare

> Of course, we could wish for a tighter integration of solvers with other
> tools, via an in-memory functional interface, but there is no standard
> definition of such an interface as part of SMT-LIB.  Some tools may provide
> you such an interface, but then your ability to try different tools will be
> limited (by the lack of a standard interface).
> 
> Good luck,
> Aaron
> 
> 
>> 
>> Best,
>> 
>> Kecheng
>> 
>> Hi, Kecheng.
>>> 
>>> No standard in-memory API for SMT solvers exists at this point,
>>> unfortunately.  So at the moment, you can only use the SMT-LIB format to
>>> communicate textually with an SMT solver.  I am not aware of any attempt
>>> to
>>> create a universal wrapper around solvers' in-memory interfaces (which
>>> might
>>> not be that easy, since many solvers are closed source).
>>> 
>> 
>> Best wishes,
>>> Aaron
>>> 
>>> On Thu, Dec 16, 2010 at 11:40 PM, Kecheng <kecheng at cecs.pdx.edu>
>>> wrote:
>>> 
>> 
>>> Hi all,
>>>> 
>>>> I'm developing a checker to check the equivalenc between C and RTL
>>>> implement. SMT solver is our decision procedure, particularly CVC3. I'm
>>>> using CVC3 through its API directly. Now I want to find a way to easily
>>>> plugin any other SMT solver, like MathSAT or Yices. Can I use SMT-lib?
>>> My
>>>> understanding of SMT-lib is that it's a standard format, any SMT solver
>>> can
>>>> take it as input. But it cannot be done through solver's API, is it
>>> correct?
>>>> Is there any existing wrapper for all the solver's API? Thanks.
>>>> 
>>>> Best,
>>>> 
>>>> Kecheng
>>> 2010-12-16
>>> _______________________________________________
>>> SMT-LIB mailing list
>>> SMT-LIB at cs.nyu.edu
>>> http://www.cs.nyu.edu/mailman/listinfo/smt-lib
>>> 
>>> 
>> 
>> 
>> 
> _______________________________________________
> SMT-LIB mailing list
> SMT-LIB at cs.nyu.edu
> http://www.cs.nyu.edu/mailman/listinfo/smt-lib




More information about the SMT-LIB mailing list