Logic Z3中的平等与双条件
我试图理解Z3在平等测试和双条件测试之间的区别。我的理解是,Logic Z3中的平等与双条件,logic,z3,smt,Logic,Z3,Smt,我试图理解Z3在平等测试和双条件测试之间的区别。我的理解是,=用于表示双条件,但如何测试等式 比如说。我试图在z3中编写类似于以下(玩具)语句的内容: 表上的(o,a)↔ (在手(o)∧a!=捡拾器(o))∨ a=将_放在_表上(o) 注:我知道上述语句可以分解为一组含义,但我有兴趣将其表示为单个双条件。对于Bool类型,等式和双条件是相同的操作。对于其他类型的人来说,双重条件是没有意义的 SMT中的所有逻辑都具有相等的概念,本质上是对象的术语级相等。该标准明确规定: SMT-LIB格式的2.
=
用于表示双条件,但如何测试等式
比如说。我试图在z3中编写类似于以下(玩具)语句的内容:
表上的(o,a)↔ (在手(o)∧a!=捡拾器(o))∨ a=将_放在_表上(o)
注:我知道上述语句可以分解为一组含义,但我有兴趣将其表示为单个双条件。对于
Bool
类型,等式和双条件是相同的操作。对于其他类型的人来说,双重条件是没有意义的
SMT中的所有逻辑都具有相等的概念,本质上是对象的术语级相等。该标准明确规定:
SMT-LIB格式的2.6版采用a作为其底层逻辑
具有等式的多排序一阶逻辑的版本[Man93,Gal86,
(完)
见本手册第2.2节
同一文件还规定(第3.7.1节):
请注意,没有双重含义的符号。这样的连词
是多余的,因为可以使用相等符号=来代替它
不过,我怀疑,也许你是想要求别的东西。一些进一步的例子肯定会有帮助。谢谢,从我最初的例子中不清楚,但是
a
表示一种排序,其中pickup(o)
和put_on_table(o)
就是这种排序的例子。让我试着用一个更具体的例子来阐述这个问题。