z3:打印一个很长的断言

z3: print a very long assertion

以下为例

trues = [True] * 1000
a = z3.And(trues)

所以a是1000个True的合取。请注意,这不是实际示例,因为 a 在逻辑上等同于 True.

如果我们print(a),则不会显示完整的断言。相反,结果以 ...).

结尾

要打印完整的断言,我找到的一种解决方案是打印 as-expression。即print(a.sexpr())。这样1000个True就全部显示出来了

所以我的问题是:有没有更好的方法来打印像 a 这样的很长的断言?

当然可以。尝试:

import z3

z3.set_option(max_args=10000000, max_lines=1000000, max_depth=10000000, max_visited=1000000)

trues = [True] * 1000
a = z3.And(trues)

print(a)

您可以尝试 set_option 的数字以获得更适合您的用例的内容。