smt 库中的 define-fund 与 defined-funs-rec

define-fun vs define-funs-rec in smtlib

define-funs-rec 似乎是 define-fun 根据 SMTLIB standard 可以做的事情的严格超集。如果是这样,是否有理由不总是使用 define-funs-rec,也许除了语法简单之外?

严格来说;不。但是 define-fun-rec 相当新(相对于旧的 define-fun),所以如果您想要更好的可移植性并且不需要递归定义,那么您应该坚持使用 define-fun

可以想象,define-fun-rec 也可能会在求解器中引入较重的机器,除非您确实有递归定义,例如有根据的检查器,否则实际上并不需要这些机器。这可能最终会花费一些性能周期;虽然我怀疑这会不会太令人担忧。