Предоставление, например: context 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(not (x == y или x == z или y == z)); ?
Спасибо.
Z3 поддерживает distinct
функцию, которая в C++ доступна как expr expr::distinct(expr_vector const & args)
.