Z3 中的全面评估结果?
Fully evaluated results in Z3?
Z3 经常返回根据一堆中间函数定义的模型。例如,通常会看到以下内容(请原谅我不正确的语法):
(define-const myArray (Array Bool Int) (_ as-array f))
(define-fun f (x Bool) Int (f!10 (k!26 x)))
...等等
我希望能够得到一个结果,我可以将其带入我的程序(使用库绑定调用 Z3)并同时打印结果,并将它们解析为一个我实际上可以 运行.如果我可以将我的模型函数作为我可以 运行 的单个直线程序,而不是根据彼此定义的多个函数,这会容易得多。
这可能吗?如果有帮助的话,我只处理有限域函数。
我们将在未来的版本中更新模型构造,以尽可能压缩中间函数。然而,在某些情况下,这可能会导致指数级的开销,因为可以在多个上下文中重用相同的辅助函数。对于那些模型,扩展辅助功能没有意义。因此,如果用户想要post-处理模型,他们仍然会被迫处理这些功能。
Z3 经常返回根据一堆中间函数定义的模型。例如,通常会看到以下内容(请原谅我不正确的语法):
(define-const myArray (Array Bool Int) (_ as-array f))
(define-fun f (x Bool) Int (f!10 (k!26 x)))
...等等
我希望能够得到一个结果,我可以将其带入我的程序(使用库绑定调用 Z3)并同时打印结果,并将它们解析为一个我实际上可以 运行.如果我可以将我的模型函数作为我可以 运行 的单个直线程序,而不是根据彼此定义的多个函数,这会容易得多。
这可能吗?如果有帮助的话,我只处理有限域函数。
我们将在未来的版本中更新模型构造,以尽可能压缩中间函数。然而,在某些情况下,这可能会导致指数级的开销,因为可以在多个上下文中重用相同的辅助函数。对于那些模型,扩展辅助功能没有意义。因此,如果用户想要post-处理模型,他们仍然会被迫处理这些功能。