是否可以使用 Z3 expr_vectors 创建连续的 OR 语句?
Is it possible to create consecutive OR statements using Z3 expr_vectors?
我正在尝试创建一个约束,使得值 X 是 expr_vector 的成员之一,例如,
context c;
expr_vector v(c);
expr x = c.int_const("x");
expr i1 = c.int_val(5);
expr i2 = c.int_val(7);
solver s(c);
s.add(x == i1 || x == i2); // this is what I want to create iteratively
我试图通过循环 expr_vector v 来创建布尔表达式来创建表达式,但我失败了。
我基本上想要的是能够写出这样的表达式。
v.push_back(i1);
v.push_back(i2);
s.add(belongs(x, v));
此功能由 z3 API 提供,称为 expr_mk_or
,可用 here
您也可以将其实现为循环:从初始化为 false
的布尔表达式开始,在每次迭代中使用 or
组合器将它们串在一起。如果您 post 尝试过,我们可以指出您可能做错了什么。
我正在尝试创建一个约束,使得值 X 是 expr_vector 的成员之一,例如,
context c;
expr_vector v(c);
expr x = c.int_const("x");
expr i1 = c.int_val(5);
expr i2 = c.int_val(7);
solver s(c);
s.add(x == i1 || x == i2); // this is what I want to create iteratively
我试图通过循环 expr_vector v 来创建布尔表达式来创建表达式,但我失败了。
我基本上想要的是能够写出这样的表达式。
v.push_back(i1);
v.push_back(i2);
s.add(belongs(x, v));
此功能由 z3 API 提供,称为 expr_mk_or
,可用 here
您也可以将其实现为循环:从初始化为 false
的布尔表达式开始,在每次迭代中使用 or
组合器将它们串在一起。如果您 post 尝试过,我们可以指出您可能做错了什么。