Как объявить константы как отдельные с помощью API z3 c ++

0

Предоставление, например: 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

1 ответ

0
Лучший ответ

Z3 поддерживает distinct функцию, которая в C++ доступна как expr expr::distinct(expr_vector const & args).

  • 0
    Спасибо за ваш ответ. Можете ли вы дать мне пример его использования в связи с моим предыдущим примером?
  • 0
    Предположим, что v - это ast_vector, содержащий x, y, z, тогда expr c = Different (v); создает ограничение, которое описывает x, y, z, все должны быть разными.
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню