我有一個簡單的問題。我寫了一個簡單的程序(使用Z3 NET API),並得到如下輸出。關於Z3中未解釋函數的表示
計劃(部分):
Sort[] domain = new Sort[3];
domain[0] = intT;
domain[1] = intT;
domain[2] = intT;
FPolicy = z3.MkFuncDecl("FPolicy", domain, boolT);
Term[] args = new Term[3];
args[0] = z3.MkNumeral(0, intT);
args[1] = z3.MkNumeral(1, intT);
args[2] = z3.MkNumeral(30, intT);
z3.AssertCnstr(z3.MkApp(FPolicy, args));
args[1] = z3.MkNumeral(2, intT);
args[2] = z3.MkNumeral(20, intT);
z3.AssertCnstr(z3.MkApp(FPolicy, args));
輸出:
FPolicy -> {
0 1 30 -> true
0 2 20 -> true
else -> true
}
我想知道我可以做的 「其他 - >真」 爲假(即 「其他 - >假」) 。
這是我希望的一種更好的解決方案。但是,使用陣列理論是否存在任何(可能的)缺點? – 2012-01-06 07:35:49
主要缺點是性能。即使我們只使用'select'和'default',也會有開銷。也就是說,如果我們不*使用陣列理論的'store','map'和'const'運算符。例如,所有函數應用程序都會有一個額外的參數。用於檢測一致條件的散列表將會變得更大。 – 2012-01-06 18:12:15