Предположим, у меня есть z3py целочисленная переменная x = Int('x')
и целочисленный массив a = [1, 2, 3]
. Затем я добавляю ограничение через s.add (x in a).
Я думаю, что это приемлемо, потому что x
может быть 1 or 2 or 3
. Но на самом деле это неудовлетворительно. Может ли кто-нибудь сказать мне, как я могу добавить ограничение, чтобы убедиться, что x in a
?
Спасибо!
Вот код Python, который я использовал. Я думал, что ответ на выходе будет s является удовлетворительным, потому что x может быть равно 1, 2 или 3, тогда ограничение x in a
выполнено. Но ответ на самом деле неудовлетворительный. Возможно, это неправильный способ указать это ограничение. Итак, мой вопрос заключается в том, как указать такое ограничение, чтобы гарантировать, что переменная может быть создана только со значением в определенном массиве.
from z3 import *
x = Int('x')
a = [1, 2, 3]
s = Solver()
s.add(x in a)
print(s.check())
solve
с адекватно определенными ограничениями<
и>
? - person Mike 'Pomax' Kamermans   schedule 23.06.2018s
? вs.add(x in a)
- person Onk_r   schedule 23.06.2018z3
и видите, на что он способен, или вы работаете над чем-то, что требует разрешенияx
на 1, 2 и 3? Потому что, если это первое, то действительно важно не делать этого, просто решайте с ограничением, котороеx>0
иx<4
вместо использования списка предопределенных чисел. - person Mike 'Pomax' Kamermans   schedule 23.06.2018