是否可以序列化/反序列化Z3上下文(来自C#)? 如果没有,是否计划此功能?
我认为此功能对于真实世界的应用非常重要。
答案 0 :(得分:1)
目前的API并未直接支持此功能。下一个版本将支持多个求解器,我们将提供用于将断言从一个求解器复制到另一个求解器并检索断言的命令。使用这些命令,可以通过将表达式转储到文件中(以SMT 2.0格式)来实现序列化。要反序列化,我们只需读回文件。 请注意,如果您跟踪声明为逻辑上下文的断言,则可以使用当前API实现此解决方案。
话虽如此,我已经看到在许多使用Z3的项目中使用了以下方法。他们有自己的公式表示。当他们调用Z3时,他们将其表示转换为Z3的表示。在大多数情况下,性能开销很小。这种方法为他们提供了很大的灵活性。序列化就是一个很好的例子。一些编程环境(例如,Python)已经为序列化提供了一些内置支持。