Мы можем использовать следующий код, чтобы решить головоломку Dog, Cat, Mouse в учебнике.
dog, cat, mouse = Ints('dog cat mouse')
s = Solver();
s.add(dog>=1)
s.add(cat>=1)
s.add(mouse>=1)
s.add(dog+cat+mouse==100)
s.add(1500 * dog + 100 * cat + 25 * mouse == 10000)
print s.check()
print s.model()
Ну, я знаю, что могу использовать
m=s.model
for d in m.decls():
print "%s = %s" % (d.name(), m[d])
чтобы получить имена и значения переменных. Например, cat = 41. Интересно, могу ли я создать новое утверждение из имен и значений, таких как cat != 41. Я использовал
s.add(d.name != m[d])
s.add("%s != %s" % (d.name(), m[d]))
Но ни один из них не может работать. Кто-нибудь знает, как добавить новое утверждение, прочитав имена и значения модели? Большое спасибо.