Я новичок в Z3-решателе python. Я пытаюсь определить список и ограничить все свои выводы этим списком для такой простой операции, как xor.
Мой код:
b=Solver()
ls=[1,2,3,4,5] #my list
s1=BitVec('s1',32)
s2=BitVec('s2',32)
x=b.check(s1^s2==1, s1 in ls, s2 in ls) #s1 and s2 belongs to the list, however, this is not the correct way
if x==sat: print(b.model().eval)
Функция проверки не работает таким образом. Может кто-нибудь помочь мне разобраться, как это сделать по-другому?
Ответ: s1=2,s2=3
; так как 2xor3 = 1 и s2, s3 принадлежит ls = [1,2,3,4,5]