Я изучаю Z3 и хочу ввести какое-либо условие проверки, как указано логикой Хоара, и получить модель данных триоров Хоара.Условие проверки цикла if-else и while в Z3
До сих пор я только смог проверить задания, вот пример (просто чтобы проверить, если я делаю это правильно):
Given: { x< 40 } x :=x+10 { x < 50}
(declare-const x Int)
(assert (< x 50))
(assert (< (+ x 10) 50))
(check-sat)
Но я не знаю, как проверить If-Else, как:
{0 ≤ x ≤ 15 } if x < 15 then x := x + 1 else x := 0 endif {0 ≤ x ≤ 15 }
Или Хотя циклы (частичная корректность)
{x ≤ 10} while x < 10 do x := x + 1 done {¬x < 10 ∧ x ≤ 10}
Я попытался с помощью команды ite для if-else, но, похоже, не поддерживается.
Надеюсь, вы можете мне помочь.