Why is MkSimpleSolver not equivalent to MkSolver(“smt”) with Z3?

荒凉一梦 提交于 2019-12-11 17:47:38

问题


I'm experimenting with Z3 tactics. I noticed that the solver returned by

context.MkSimpleSolver()

has a different performance profile than the solver

context.MkSolver(context.MkTactic("smt"))

I understand that the "smt" tactic is supposed to perform the most general algorithm that Z3 has. So both these solvers should have identical output. Given this, why do they have different performance profiles?

I am testing this on a formula that is quantified over a bitvector. The quantifier body makes use of integers and bitvectors. The simple solver returns immediately with sat. The other one takes longer than I was willing to wait.

(If it helps here is a little background: I am trying to make Z3 bit-blast all integer terms to bitvectors hoping that this speeds things up. All integers involved are constrained to [0, 3]. I'm trying to get the bit-blast tactic to "take".)

来源:https://stackoverflow.com/questions/23973453/why-is-mksimplesolver-not-equivalent-to-mksolversmt-with-z3

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!