Z3经常给出根据一堆中间函数定义的模型。例如,看到以下内容很常见(请原谅我不正确的语法):
(define-const myArray (Array Bool Int) (_ as-array f))
(define-fun f (x Bool) Int (f!10 (k!26 x)))
......等等。
我希望能够得到一个结果,我可以接受我的程序(使用库绑定调用Z3)并打印结果,并将它们解析为我实际可以运行的函数。如果我可以将我的模型函数作为可以运行的单个直线程序,而不是根据彼此定义的多个函数,这会容易得多。
这可能吗?我只处理有限域函数,如果有帮助的话。
答案 0 :(得分:1)
我们将在未来版本中更新模型构造,以尽可能压缩中间函数。但是,有些情况会导致指数开销,因为相同的辅助功能可以在多个环境中重复使用。对于那些模型,扩展辅助功能没有意义。因此,如果用户想要对模型进行后期处理,他们仍将被迫处理这些功能。