z3是否支持将运算符标记为关联运算符,可交换运算符或两者兼有?

时间:2017-09-20 11:11:27

标签: z3 smt

我想用SMT格式编写证明义务,其中一些函数具有一些共同的通用属性(即关联性和可交换性)。

一个简单的解决方案是在证明义务中包含相应的公理。我想这意味着这些属性的推理将在很大程度上取决于量词实例化算法。其他技术,如重写,可能更有效,我想知道Z3是否实现了这种技术。 API中存在诸如Z3_OP_PR_REFLEXIVITY和Z3_OP_PR_COMMUTATIVITY之类的值表明情况可能如此。

我的第一个问题是:

  • 除了通过用户定义公理的量词实例化之外,Z3是否有办法处理用户定义符号的通用属性?

如果答案是肯定的,那么:

  • 这些通用属性是什么?

  • 据我所知,SMT-LIB标准尚未修复用户定义符号(仅理论符号)的这些属性,用于声明用户定义符号的SMT语法是什么给定的财产?

0 个答案:

没有答案