[SMT-LIB] fast SAT solver for very large instances

Tinelli, Cesare cesare-tinelli at uiowa.edu
Fri Jul 29 15:19:57 EDT 2011


Vu,

On 29 Jul 2011, at 18:31, Leonardo de Moura wrote:

> Hi Vu,
> 
> No, Z3 is not a good option. The problem is too big.
> BTW, converting the dimacs file into SMT-LIB formula will probably not help. The file will be much much bigger, and the memory consumption will increase.
> Keep in mind that will have to create a "name" for each one of the 38 million variables. Just the symbol table for storing all these names will consume a lot of memory.

A way to avoid the symbol table could be to use an SMT-LIB logic with integers and declare a function symbol from Int to Bool, to represent atoms, e.g.,

(declare-fun a (Int) Bool)

and then use the DIMACS atoms (which are numbers) as indices. For example, the DIMACS clause 

1 -3 7 0

would become

(or (a 1) (not (a 3)) (a 7))

In any case, the resulting formula is going to be bigger byte-wise than the DIMACS one. Also, there is not much use in running an SMT solver on a purely Boolean problem. I doubt there is any SMT solver that is more performant than a state-of-the-art SAT solver on SAT problems.

> If you want to use SMT, one possibility is to encode the problem in another logic such as QF_BV (bit-vectors).
> An encoding in QF_BV is usually much more compact, in particular, if you are encoding constraints such as a=b*c into CNF.
> 
Leonardo is right of course. To harness the power of SMT solvers you want to use an encoding of your original problems in a more expressive logic than propositional logic.

Cheers,


Cesare



> Cheers,
> Leo
> 
> -----Original Message-----
> From: smt-lib-bounces at cs.nyu.edu [mailto:smt-lib-bounces at cs.nyu.edu] On Behalf Of ThanhVu (Vu) Nguyen
> Sent: Thursday, July 28, 2011 10:42 PM
> To: SMT-LIB at cs.nyu.edu
> Subject: Re: [SMT-LIB] fast SAT solver for very large instances
> 
> also is there an efficient tool to convert CNF Dimacs format to smtlib
> format ?   thankx
> 
> Vu,
> 
> 
> 
> On Thu, Jul 28, 2011 at 8:43 PM, ThanhVu (Vu) Nguyen <tnguyen at cs.unm.edu> wrote:
>> Hi all, I am asking for someone about an efficient SAT solver for very 
>> large instances -- his query is listed below.  Would Z3 be a good 
>> candidate ?   Thanks,
>> 
>> 
>> 
>> ------
>> 
>> 
>> I have been using minisat, a sequential solver, for most of my 
>> instances, and it worked quite well until the problems got too big. 
>> The instance I'd like to solve has 38 million variables and 180 
>> million clauses.
>> 
>> We have a 24-core machine with 32GB, and I did try lingeling, which is 
>> a parallelized solver, but I hit the memory limit even sooner trying 
>> to use multiple solver threads.
>> 
>> 
>> Vu,
>> 
> _______________________________________________
> 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