通过this帖子,define-fun
似乎是一个宏,它被z3的预处理器扩展,实际解算器看不到,但使输入文件可能更紧凑,更易于阅读。我问,因为我看到在同一问题上令人满意的任务和表现有一些(显然是随机的)差异:一个使用define-fun
而一个不使用,这让我想知道它是不仅仅是一个宏。在某些情况下,是否必须小心谨慎使用define-fun
?我在一些QF_NIRA,QF_LIRA问题上观察到了这一点。
答案 0 :(得分:0)
define-fun在Z3中被视为一个宏。 如果使用等式和未解释的函数,Z3的行为将会不同。 此外,如果你使用“declare-fun”然后创建量化的平等, 问题不再出现在QF_LIRA片段中。