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
也可能会在求解器中引入较重的机器,除非您确实有递归定义,例如有根据的检查器,否则实际上并不需要这些机器。这可能最终会花费一些性能周期;虽然我怀疑这会不会太令人担忧。
define-funs-rec
似乎是 define-fun
根据 SMTLIB standard 可以做的事情的严格超集。如果是这样,是否有理由不总是使用 define-funs-rec
,也许除了语法简单之外?
严格来说;不。但是 define-fun-rec
相当新(相对于旧的 define-fun
),所以如果您想要更好的可移植性并且不需要递归定义,那么您应该坚持使用 define-fun
。
可以想象,define-fun-rec
也可能会在求解器中引入较重的机器,除非您确实有递归定义,例如有根据的检查器,否则实际上并不需要这些机器。这可能最终会花费一些性能周期;虽然我怀疑这会不会太令人担忧。