如何使用 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)
。
举个例子: 上下文 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)
。