我已经非常仔细地查看了文档和指南,并自己尝试了一些东西。但是,我的问题的解决方案回避了我。
这是教程中关于记录的内容,但我不清楚如何让它满足我的需求:
(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))
)
希望这能让你开始。关于量词,它将类似于所有其他量词用法;最好提出具体问题以获得更好的答案。