Z3中的全面评估结果?

Z3中的全面评估结果?,z3,smt,theorem-proving,formal-verification,Z3,Smt,Theorem Proving,Formal Verification,Z3通常返回根据一组中间函数定义的模型。例如,常见以下情况(请原谅我的语法错误): 。。。等等 我希望能够得到一个结果,我可以在我的程序中接收(使用库绑定调用Z3),并打印结果,并将其解析为我可以实际运行的函数。如果我可以将模型函数作为我可以运行的单个直线程序,而不是根据彼此定义的多个函数,那么这就容易多了 这可能吗?如果有帮助的话,我只处理有限域函数。我们将在未来的版本中更新模型结构,尽可能压缩中间函数。但是,在某些情况下,这可能会导致指数级的开销,因为相同的辅助函数可以在多个上下文中重用。对

Z3通常返回根据一组中间函数定义的模型。例如,常见以下情况(请原谅我的语法错误):

。。。等等

我希望能够得到一个结果,我可以在我的程序中接收(使用库绑定调用Z3),并打印结果,并将其解析为我可以实际运行的函数。如果我可以将模型函数作为我可以运行的单个直线程序,而不是根据彼此定义的多个函数,那么这就容易多了


这可能吗?如果有帮助的话,我只处理有限域函数。

我们将在未来的版本中更新模型结构,尽可能压缩中间函数。但是,在某些情况下,这可能会导致指数级的开销,因为相同的辅助函数可以在多个上下文中重用。对于这些模型,扩展辅助功能是没有意义的。因此,如果用户想要对模型进行后期处理,他们仍将被迫处理此类函数。

是否可以查询Z3以返回(例如)函数调用的完全评估结果?i、 Z3是否有内置的自己语言的解释器?这可能是在我自己的程序中解释问题的更好的替代方法。也许
eval
函数会有所帮助?(对于SMT-LIB版本,请在此页面上搜索“eval:。对于python版本,请在此页面上搜索“eval:)@JamesWilcox谢谢,我不知道存在此版本。)
(define-const myArray (Array Bool Int) (_ as-array f))
(define-fun f (x Bool) Int (f!10 (k!26 x)))