首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Z3 / CVC4 / SMT-LIB中的离散时间步长

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

Stack Overflow用户
提问于 2018-03-03 02:17:35
回答 1查看 98关注 0票数 1

我在SMT-LIB中使用Int定义时间步长,这迫使我断言事情,以确保在负片中没有发生任何事情:

代码语言:javascript
复制
(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的归纳定义是不是很好,或者有没有更好的方法来做我上面试图做的事情?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-03 03:21:54

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

话虽如此,除非你尝试一下,否则是不可能知道的:可能有一些问题领域,归纳定义可能更适合。但仅从您处理的问题的类型来看,良好的旧Int似乎是适合您的正确选择。

另请参阅这个相关的问题:Representing temporal constraints in SMT-LIB,它肯定与您的上下文相关。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49075075

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档