繁体   English   中英

Z3 / CVC4 / SMT-LIB中的离散时间步长

[英]Discrete time steps in Z3 / CVC4 / SMT-LIB

我正在使用SMT-LIB中的Int来定义时间步骤,这迫使我断言事情以确保在否定中没有发生任何事情:

(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的归纳定义是否Nat或者是否有更好的方法来做我上面尝试做的事情?

你应该坚持使用Int ,并适当地放入>= 0约束。 Z3对Int有很多了解,有各种各样的证明规则和技巧来处理它。 虽然你确实可以定义归纳Nat类型,但是你将失去处理整数的所有内部机制,并且由于递归定义,Z3的决策程序效率会降低; 特别是与其他理论相结合。

话虽如此,除非您尝试,否则无法知道:可能存在一些问题域,其中归纳定义可能更适合。 但仅仅通过纯粹看待你处理的那种问题,好老的Int似乎是你的正确选择。

另请参阅此相关问题: 在SMT-LIB中表示时间约束,这在您的上下文中肯定是相关的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM