我正在尝试使用z3来简化由S2E / KLEE
生成的一些表达式from z3 import *
f = open("query.smt2").read()
expr = parse_smt2_string(f)
print(expr)
print(simplify(expr))
但它似乎只能记录200行。我也尝试将其写入文件,但结果相同。
g = open("simplified_query.smt2", 'w')
g.write(str(simplify(expr)))
g.close();
我应该如何记录整个表达式?
示例输入/输出:https://paste.ee/p/tRwxQ
答案 0 :(得分:0)
您可以像使用Python漂亮的打印机一样打印表达式。如果它们变得非常大并且漂亮的打印机效率不高,它会切断表达式。您可以添加到漂亮的打印机以强制它打印完整的表达式。该函数名为set_pp_option,它在z3printer.py中定义。主要选项称为max_depth。其他选项在Formatter类中定义为字段。
您还可以使用“sexpr()”方法以SMT2格式打印表达式。
顺便说一下,你上传的文件没有处理,因为它是UTF8格式,但这与你的问题正交,可能是你上传repro的工件。