2015-01-27 21 views
0

舉例: context ctx;如何使用z3 C++ API將常量聲明爲獨特

sort type1 = ctx.int_sort(); 
sort type2 = ctx.bool_sort(); 

func_decl b1 = function("b1", type1, type2); 

expr x = ctx.int_const("x"); 
expr y = ctx.int_const("y"); 
expr z = ctx.int_const("z"); 

solver s(ctx); 
s.add(b1(x)); 
s.add(b1(y)); 
s.add(b1(z)); 

一個如何聲明的x,y和z比使用作爲不同的其他: s.add(未(X == y或x ==ž或y == Z)); ?

謝謝。

回答

0

Z3支持distinct函數,該函數在C++中的版本爲。

+0

感謝您的回覆。您能否給我舉一個與我之前的例子有關的使用示例? – Moun 2015-02-16 21:14:50

+0

假設v是一個包含x,y,z的ast_vector,則expr c = distinct(v);創建一個描述x,y,z必須全部不同的約束。 – 2015-02-18 09:26:18

+0

好的。謝謝。例如:expr_vector v(ctx); v.push_back(x); v.push_back(y); expr c = distinct(v); – Moun 2015-02-22 21:50:41