我什么时候应该在Z3中使用函数而不是变量?

我什么时候应该在Z3中使用函数而不是变量?,z3,z3py,Z3,Z3py,我已经在Z3中编写了两个数独解算器,一次使用81个变量,一次使用一个函数将x和y坐标映射到平方[x][y]中的数字。 我想也可以用数组代替 拥有Z3变量的python数组、拥有Z3数组或拥有Z3中的函数之间有什么区别? 什么时候应该使用哪个?这个问题没有普遍适用的答案。对一个问题进行建模通常有多种方法,但不清楚哪种方法在实践中是最好的。作为一般规则,将其保留在一个理论中是有意义的,因为这样可以避免代价高昂的跨理论推理;i、 例如,坚持使用位向量或(有界)整数,但不要尝试将整数转换为位向量(例如,

我已经在Z3中编写了两个数独解算器,一次使用81个变量,一次使用一个函数将x和y坐标映射到平方[x][y]中的数字。 我想也可以用数组代替

拥有Z3变量的python数组、拥有Z3数组或拥有Z3中的函数之间有什么区别?
什么时候应该使用哪个?

这个问题没有普遍适用的答案。对一个问题进行建模通常有多种方法,但不清楚哪种方法在实践中是最好的。作为一般规则,将其保留在一个理论中是有意义的,因为这样可以避免代价高昂的跨理论推理;i、 例如,坚持使用位向量或(有界)整数,但不要尝试将整数转换为位向量(例如,
int2bv
项本质上被Z3视为不理解)。此外,众所周知,解决阵列问题有比Z3中实现的更好的解决方案,因此,如果它们不是真的必要,那么可以帮助消除它们