Я определяю временные шаги, используя Int в SMT-LIB, что заставляет меня утверждать вещи, чтобы убедиться, что ничего не происходит в отрицательных значениях:
(declare-sort Pkg) ; A package
(define-sort Time () Int) ; The installation step
; ...
(assert (forall ((t Time) (p Pkg)) (=> (< t 0) (not (installed p t)))))
Я видел, что в Z3 мы можем определить индуктивные Nat
в обычном стиле. Было бы хорошо использовать индуктивное определение Nat
или есть лучший способ сделать то, что я пытаюсь сделать выше?