C++ 是否可以使用Z3表达式向量创建连续的OR语句?

C++ 是否可以使用Z3表达式向量创建连续的OR语句?,c++,z3,smt,z3py,sat,C++,Z3,Smt,Z3py,Sat,我试图创建一个约束,使得值X是expr_向量的一个成员,比如 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

我试图创建一个约束,使得值X是expr_向量的一个成员,比如

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));

此功能由Z3API提供,称为
expr\u mk\u或
,可用

您还可以将其实现为循环:从初始化为
false
的布尔表达式开始,在每次迭代中使用
组合符将它们串在一起。如果你发布你尝试过的东西,我们可以指出你可能做错了什么