1
在下面的代碼中,我放了一個明顯不能令人滿意的Z3聲明,然後嘗試使用C++/C Z3 API以編程方式查看它。Z3_parse_smtlib_string使用問題
問題是這段代碼總是觸發輸出的檢查:「SAT ?!」。即明確不可滿足的表達式被確定爲在API調用的當前使用中是可滿足的。
如何獲得此類操作以按預期方式工作?
#include "z3++.h"
int main(){
z3::context c;
std::string testing = "(declare-const p0 Bool)(assert(= p0 true))(assert(= p0 false))(check-sat)";
Z3_ast parsed = Z3_parse_smtlib2_string(c,testing.c_str(),0,0,0,0,0,0);
z3::expr e(c, parsed);
z3::solver s(c);
if(s.check() == z3::sat)
std::cout << "SAT?!\n";
return 0;
}
它的工作!謝謝。請注意該SO的MS研究員:也許你可以看到,這個非常好的定理證明器的文檔和示例需要進行一些改進。 –
對於C++ API,有一個例子顯示了這裏的大部分基本概念:https://z3.codeplex.com/SourceControl/latest#examples/c++/example.cpp API文檔位於:http:// research .microsoft.com/en-us/um/redmond/projects/z3/index.html –
我看到了這些,但是有很多事情是人們通常希望做的事情之一(作爲Z3業餘愛好者)苦心經營。那些足夠聰明的人生出這樣的產品應該會發現它很容易使用它。 –