带有 Z3 的记录



我已经非常仔细地查看了文档和指南,并自己尝试了一些东西。但是,我的问题的解决方案回避了我。

这是教程中关于记录的内容,但我不清楚如何让它满足我的需求:

(declare-datatypes (T1 T2) ((Pair (mk-pair (first T1) (second T2)))))
(declare-const p1 (Pair Int Int))
(declare-const p2 (Pair Int Int))

我正在寻找 SMT-LIB2 语法来声明 5 个字段、2 个整数和 3 个布尔值的记录

然后,我想拥有这些记录的数组/集合。

我进一步寻找语法,然后我将用于在某些记录集上创建 $\forall$ 语句。

我尽力使用所提供的资源,但一无所获。

谢谢。

以下是创建

具有 2 个整数和 3 个布尔值的记录的方法:

(declare-datatypes () ((R5 (mk-R5 (el1 Int) (el2 Int) (el3 Bool) (el4 Bool) (el5 Bool)))))
(declare-const r1 R5)
(declare-const r2 R5)
(assert (not (= r1 r2)))
(check-sat)
(get-model)

Z3 响应:

sat
(model
  (define-fun r2 () R5
    (mk-R5 1 0 false false false))
  (define-fun r1 () R5
    (mk-R5 0 0 false false false))
)

希望这能让你开始。关于量词,它将类似于所有其他量词用法;最好提出具体问题以获得更好的答案。

相关内容

  • 没有找到相关文章

最新更新