首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为CVC4 SMT查询生成多个模型

为CVC4 SMT查询生成多个模型
EN

Stack Overflow用户
提问于 2021-05-01 08:17:39
回答 1查看 49关注 0票数 0

我可以为如下查询获取多个模型吗?

代码语言:javascript
复制
(set-logic LIA)
(set-option :produce-models true)

(declare-const x Int)
(assert (< x 20))
(check-sat)
(get-model)

而不是仅仅

代码语言:javascript
复制
sat
(
(define-fun x () Int 0)
)

我想得到0,1,-1,2,...

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-05-01 08:26:39

SMTLib语言没有检索“所有模型”的机制。因此,如果您一定要只使用SMTLib,则无法做到这一点;至少不容易做到这一点。

但是,大多数求解器(肯定包括cvc4和z3)都可以从高级语言编写脚本。其思想是发出一个check-sat调用,如果您得到了解决方案,则添加一个不允许该模型的附加断言,并查询一个新的模型。有关如何在Python中执行此操作的答案,请参阅Python:Trying to find all solutions to a boolean formula using Z3 in python中的脚本。您可以在C/Java等语言中执行相同的操作;或者使用提供此类开箱即用命令的高级绑定。

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

https://stackoverflow.com/questions/67341817

复制
相关文章

相似问题

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