首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CVC4中归纳数据类型的断言

CVC4中归纳数据类型的断言
EN

Stack Overflow用户
提问于 2017-04-22 10:21:48
回答 1查看 131关注 0票数 0

我正在尝试用CVC4做一些实验。

代码语言:javascript
复制
(set-option :produce-models true)
(set-option :produce-assignments true)
(set-logic QF_UFDT)
(declare-datatypes ()
  (Color (Red) (Black))
)
(declare-const x C)
(declare-const y C)
(assert (not (= x y)))
(check-sat)
(get-value (x y))
(assert (distinct x y))
(check-sat)
(get-value (x y))

当我使用CVC4运行这个程序时,我得到了以下输出

代码语言:javascript
复制
sat
((x R) (y R))
sat
((x R) (y R))

我对这种产出的行为感到困惑。如果我主张x和y不应该相等,它们的值必须不同,对吗?有明确断言的情况也是如此。CVC4是否将x和y视为两个不同的“对象”,从而给出它所提供的输出?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-04-22 16:25:23

我看不出同样的结果。这是我从CVC4 (http://cvc4.cs.stanford.edu/downloads/)的最新开发版本得到的信息:

代码语言:javascript
复制
(error "Parse Error: stack.smt2:5.8: Sequence terminated early by token: 'Color'.

    (Color (Red) (Black))
     ^
")

在您的示例中有一些语法错误,下面是一个更正的版本:

代码语言:javascript
复制
(set-option :produce-models true)
(set-option :produce-assignments true)
(set-logic QF_UFDT)
(declare-datatypes () (
  (Color (Red) (Black))
))
(declare-const x Color)
(declare-const y Color)
(assert (not (= x y)))
(check-sat)
(get-value (x y))
(assert (distinct x y))
(check-sat)
(get-value (x y))

对于此输入,具有“-增量”选项(支持多个查询)的cvc4将提供以下响应:

代码语言:javascript
复制
sat
((x Red) (y Black))
sat
((x Red) (y Black))

希望这有帮助,安迪

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

https://stackoverflow.com/questions/43558048

复制
相关文章

相似问题

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