如何使用Z3(python API)快速重命名公式中的所有变量
我正在寻找一种方法,根据给定的替换映射重命名公式中的所有变量。我目前正在使用如何使用Z3(python API)快速重命名公式中的所有变量,python,z3,Python,Z3,我正在寻找一种方法,根据给定的替换映射重命名公式中的所有变量。我目前正在使用substitute功能,但速度似乎很慢 有没有其他比它更快的功能可以使用?有没有其他快速的方法 注意,我只是将新变量替换为原始公式中的变量,因此没有重命名冲突。在这种假设下,有没有办法更快地执行重命名 比如说, # given f = And(Int('x') > Int('y'), Or(Int('x') - 5 >= Int('z'), Int('k') > 1)) # expected resu
substitute
功能,但速度似乎很慢
有没有其他比它更快的功能可以使用?有没有其他快速的方法
注意,我只是将新变量替换为原始公式中的变量,因此没有重命名冲突。在这种假设下,有没有办法更快地执行重命名
比如说,
# given
f = And(Int('x') > Int('y'), Or(Int('x') - 5 >= Int('z'), Int('k') > 1))
# expected result after substitution
# f = And(Int('v0') > Int('v1'), Or(Int('v0') - 5 >= Int('v2'), Int('v3') > 1))
有什么方法可以在
f
的上下文中进行操作吗?没有一种比API更快的方法。关于速度,我有几点意见:
非常感谢你。我将尝试重新编写C++中的项目,以获得C++ API的快速性。如果你能为第二点提供一个例子,我也很乐意去看看。我同意第3点,但由于api不提供对公式变量的低级访问,我将无法利用它。关于第4点,不幸的是,我的应用程序不允许使用此技巧。