如何使用 z3 c++ API 将常量声明为不同的

How to declare constants as distinct using the z3 c++ API

举个例子: 上下文 ctx;

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==z 或 y==z)); ?

谢谢。

Z3 支持 distinct 函数,在 C++ 中可用作 expr expr::distinct(expr_vector const & args)