如何在Python api中使用Z3上下文? < C++ >代码> Z3::上下文上下文< /代码>生成新的上下文。通过这个新的上下文的Z3表达式可以创建为上下文。BVY-CONST(变量名,16)< /C> > /P>

如何在Python api中使用Z3上下文? < C++ >代码> Z3::上下文上下文< /代码>生成新的上下文。通过这个新的上下文的Z3表达式可以创建为上下文。BVY-CONST(变量名,16)< /C> > /P>,python,c++,z3,z3py,Python,C++,Z3,Z3py,如何使用z3 python api实现相同的行为?在z3py中,通用模型是通过一个由一个全局上下文备份的解算器对象实现的。这简化了编程,因为最终用户不必担心上下文创建的细节。从文件中: Z3Py uses a default global context. For most applications this is sufficient. An application may use multiple Z3 contexts. Objects created in one conte

如何使用z3 python api实现相同的行为?

在z3py中,通用模型是通过一个由一个全局上下文备份的
解算器
对象实现的。这简化了编程,因为最终用户不必担心上下文创建的细节。从文件中:

  Z3Py uses a default global context. For most applications this is sufficient.
    An application may use multiple Z3 contexts. Objects created in one context
    cannot be used in another one. However, several objects may be "translated" from
    one context to another. It is not safe to access Z3 objects from multiple threads.
    The only exception is the method `interrupt()` that can be used to interrupt() a long
    computation.
因此,如果您选择在z3py中创建一个新的
上下文
,确实是可能的;虽然这不是通用模型

API的设计使得大多数(如果不是全部)方法都将可选的上下文参数作为其最后一个参数。关于您提到的
bv_const
,z3py版本为:

def z3py.BitVecSort(sz, ctx = None)
(见附件)

如您所见,最后一个参数是可选的
ctx
参数。如果您没有提供一个(这是一般的z3py编程模型),将使用全局模型。然而,你可以通过你自己的,只要你注意我上面引用的警告。(也就是说,始终将来自不同上下文的对象分隔开。)

您可以在此处阅读
上下文
类详细信息: