Z3 производит модели для удовлетворительных экземпляров.Ваша формула не удовлетворяется.Используя ограничения
(assert ( = o1 0))
(assert ( = s1 3))
(assert ( = s2 4))
(assert ( = s3 5))
(assert ( = filled 13))
мы получаем, что o1 = 0
и s1 = 3
, s2 = 3
, s3 = 5
и filled = 13
, используя ограничения
(assert (=> (not b1)(= o1 o2)))
(assert (=> b1 (= (+ o1 s1) o2)))
Мы имеемчто o2 = 0
или o2 = 3
.
Использование
(assert (=> (not b2)(= o2 o3)))
(assert (=> b2 (= (+ o2 s2) o3)))
У нас есть это o3 = o2
или o3 = o2 + 3
Использование
(assert (=> b3 (= (+ o3 s3) filled)))
(assert (=> (not b3) (= o3 filled)))
Мы имеем это o3 = 8
или o3 = 13
Теперь мы можем увидеть конфликт
o2 = 0 or o2 = 3
o3 = 8 or o3 = 13
o3 = o2 or o3 = o2 + 3
Если мы попробуем o2 = 0
, мы получим неудовлетворительные формулы
o3 = 8 or o3 = 13
o3 = 0 or o3 = 3
Если мы попробуемo2 = 3
получаем неудовлетворительные формулы
o3 = 8 or o3 = 13
o3 = 3 or o3 = 6