2
我使用Z3定理證明,我有一個大公式(114個變量)。 我可以用所有子句打印一個大公式嗎?正常的print str(f)
將截斷輸出,並且僅在末尾打印「...」,而不是所有子句。Z3py:打印144個變量的大公式
我測試了print f.sexpr()
,這總是打印所有的子句。但只在sexpr語法中。
我可以打印公式的所有子句,但避免使用s表達式語法嗎?
注意:代碼示例很小,以顯示該問題,但發佈大型公式佔用太多空間。
from z3 import *
C, G, M, P, R, S, SN, B = Bools('C G M P R S SN B')
C = (And(*(S,Or(Not(S),P),Or(Not(P),S),Or(Not(P),B),Or(Not(C),P),Or(Not(G),P),Or(Not(M),P),Or(Not(R),P),Or(Not(SN),P),Or(Not(B),P),True,Not(False),Or(R,SN,B,G,M,C,True))))
f = simplify(C)
#
# PRINTING
#
# for large a formula with 114 variables, the output of str(f) gets truncated
# only "..." is displayed at the end, not all the clauses are shown
# this is printed in the format I need:
print str(f)
# this always prints all the clauses, even for very large formulae
# here all clauses are printed, but not the format I need:
print f.sexpr()
# if you try the above two commands with a very large formula you see the difference!
您可以打印SMT2格式的公式:http://stackoverflow.com/a/14629021/1841530 –