首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何利用Z3和CVC4结合SMT -LIB证明二面体群D3的定理

如何利用Z3和CVC4结合SMT -LIB证明二面体群D3的定理
EN

Stack Overflow用户
提问于 2013-11-23 01:46:09
回答 2查看 1.3K关注 0票数 1

在以前的帖子定理中,利用Z3 SMT-LIB证明了二面体群D3的一个定理.在这篇文章中,我们尝试使用以下SMT代码使用Z3和CVC4来证明这样的定理:

代码语言:javascript
复制
(set-logic AUFNIRA)
(set-option :produce-models true)
(set-option :incremental true)
(declare-sort S 0)
(declare-fun f (S S) S)
(declare-fun g (S) S)
(declare-fun E () S)
(declare-fun R1 () S)
(declare-fun R2 () S)
(declare-fun R3 () S)
(declare-fun R4 () S)
(declare-fun R5 () S)
(assert (forall ((x S))
            (= (f x E) x)))
(assert (forall ((x S))
            (= (f E x) x)))               
(assert (= (f R1 R1) R2))
(assert (= (f R1 R2) E))
(assert (= (f R1 R3) R4))
(assert (= (f R1 R4) R5))
(assert (= (f R1 R5) R3))
(assert (= (f R2 R1) E))
(assert (= (f R2 R2) R1))
(assert (= (f R2 R3) R5))
(assert (= (f R2 R4) R3))
(assert (= (f R2 R5) R4))
(assert (= (f R3 R1) R5))
(assert (= (f R3 R2) R4))
(assert (= (f R3 R3) E))
(assert (= (f R3 R4) R2))
(assert (= (f R3 R5) R1))
(assert (= (f R4 R1) R3))
(assert (= (f R4 R2) R5))
(assert (= (f R4 R3) R1))
(assert (= (f R4 R4) E))
(assert (= (f R4 R5) R2))
(assert (= (f R5 R1) R4))
(assert (= (f R5 R2) R3))
(assert (= (f R5 R3) R2))
(assert (= (f R5 R4) R1))
(assert (= (f R5 R5) E))
(assert (= (g E) E))
(assert (= (g R1) R2))
(assert (= (g R2) R1))
(assert (= (g R3) R3))
(assert (= (g R4) R4))
(assert (= (g R5) R5))
(check-sat)
(get-model)
(get-value ((f (f R3 R1) (g R3))))
(get-value (R2))
(assert (not (= (f (f R3 R1) (g R3)) R2))) 
(check-sat) 

当使用Z3或CVC4执行此代码时,将获得正确的结果。使用Z3 online 这里运行此代码

问题如下:

  1. 在Z3的情况下,会产生消息unsupported ; :incremental。这个信息似乎不会改变结果,为什么?
  2. 在CVC4的情况下,生成消息unknown,而Z3生成sat。再一次,这个信息似乎不会改变结果,为什么?
  3. 如何使用Mathsat执行SMT代码。
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-11-23 17:54:39

关于问题1,选项:incremental不是SMT-Lib2.0标准的一部分.该标准定义/建议了一小组选项,这些选项应该得到所有求解者的支持,而:incremental不是其中之一。这可能是CVC4特定的选项。Z3只是忽略了这个命令。此外,Z3不需要用户启用增量解决方案。

关于问题2,SMT-Lib2.0标准说check-sat有3种可能的输出:unsatsatunknown。当求解者无法确定断言集是否可以满足时,就会使用unknown结果。有些求解者即使在生成unknown时也会生成“候选模型”。

据我所知,MathSAT 5还不支持量词。但是,这种情况今后应有所改变。

票数 2
EN

Stack Overflow用户

发布于 2013-11-23 18:36:50

Mathsat似乎产生了正确的结果,但它生成了以下消息:

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

https://stackoverflow.com/questions/20157521

复制
相关文章

相似问题

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