Я хочу установить ограничение «что-то не должно существовать» в z3py. Я попытался использовать «Не (существует (...))». Простой пример таков. Я хочу найти задание для a и b, чтобы такого c не существовало.
from z3 import *
s = Solver()
a = Int('a')
b = Int('b')
c = Int('c')
s.add(a+b==5)
s.add(Not(Exists(c,And(c>0,c<5,a*b+c==10))))
print s.check()
print s.model()
Выход
sat
[b = 5, a = 0]
Что кажется правильным. Но когда я пишу ограничение «Не (существует (...))» в более сложной задаче, это может занять несколько часов без создания решения. Интересно, является ли это правильным и наиболее эффективным способом утверждения ограничения «не существует»? Или такие задачи с кванторами трудно решить любым решателем?