a nice API boundary that allows different solvers to be swapped in. Note that I'm not outputting SMTLIB2, instead using libraries' native interface. Maybe a mistake, but I am nervous about introducing a text parse to my performance pathway when I have gazillions of quick solves.
-
Show this thread
-
So far my experience is Yices >> Z3 as far as QF_BV is concerned, although my Z3 prototype used a lot of stuff I didn't really need (integers and arrays). I'll give Z3 a shot in the new framework, but I really built it to use Boolector, which sounds like the bee's knees.
3 replies 0 retweets 3 likesShow this thread -
Replying to @geofflangdale
In my experience Yices >> Z3 and Boolector >> Z3. Yices vs Boolector is a bit more difficult. I'd say Boolector has the better SAT engine but Yices has better theories. For most pure QF_BV my expectation would be that Boolector performs slightly better.
2 replies 0 retweets 2 likes -
Replying to @oe1cxw
Crossing my fingers for more than slightly... Maybe SMTCOMP19 isn't the Final Word on things but it looks a good deal like Boolector did considerably better on QF_BV - and the most competitive Yices results seem to have had a bit of tweaking in terms of what SAT was used.
2 replies 0 retweets 0 likes -
Replying to @geofflangdale @oe1cxw
Also, I don't really know how to understand SMTCOMP results outside of a crude 'league table'. I am using the solvers in incremental mode and do know what my theory is - QF_BV with a very light usage of UF in a earlier, less CPU-hogging phase of my code.
1 reply 0 retweets 0 likes -
Replying to @geofflangdale
In the end you always have to try the solvers yourself on your specific problem.. So outputting SMTLIB2 code is the way to go IMO. When your algorithm does 1000s of fast small queries then going through SMTLIB2 can be a huge overhead, but for a few hard queries it's best imo.
1 reply 0 retweets 0 likes -
Replying to @oe1cxw
Well, I've taken the stupid route, I guess, but after a uninspiring day of filling in a Really Big Pile of Pure Virtual Functions (yes, today I truly am the boolector_saddo) I'll be able to find out. My problem with the few hard queries approach is that my overheads are ...
1 reply 0 retweets 0 likes -
Replying to @geofflangdale @oe1cxw
very much a combination of "hey, the top 200 problems you gave me were kinda hard" and "whoa, really, 800,000 different CEGIS runs, are you fucking kidding me?". So a solver that absolutely slays on the hard stuff would be nice but I also need to be sure the easy stuff is fast.
1 reply 0 retweets 0 likes -
Replying to @geofflangdale @oe1cxw
Anyhow, I'll report back after the avalanche of bugs, misinterpretations, and general foul-ups that I expect after getting this to a very nominal 'code complete' state. I wish I had built the proper API *first* (not retrofitted it) and that I hadn't built so many operations ...
1 reply 0 retweets 0 likes -
Replying to @geofflangdale @oe1cxw
into my superoptimizer before doing this solver-changing exercise. Live and learn.
1 reply 0 retweets 0 likes
Another advantage of writing SMTLIB2 files for a small number of hard queries is that they'll include your problems in the SMTCOMP benchmarks. A large number of QF_[A][UF]BV problems in SMTCOMP are from my SMT applications. So now they optimize their solvers for my problems. ;)
-
-
Replying to @oe1cxw
Now *that* sounds nice. Once I have stabilized what I actually want, I'll have to do that. For now, however, it's time to grapple with the fact that SMTCOMP19 descriptions of systems don't match "currently released reality". :-(
1 reply 0 retweets 0 likes -
Replying to @geofflangdale @oe1cxw
[btorslvfun] configure_sat_mgr: selected SAT solver 'CaDiCaL' does not support incremental mode vs (Boolector at SMTCOMP19 docs) This year, CaDiCaL has been extended to support incremental solving [8] and is now the default SAT engine for all tracks and divisions.
1 reply 0 retweets 2 likes - Show replies
New conversation -
Loading seems to be taking a while.
Twitter may be over capacity or experiencing a momentary hiccup. Try again or visit Twitter Status for more information.