>>> solver.reset()
>>> solver.add(Not(Implies(And(Implies(p,q),Implies(q,r)),Implies(p,r))))
>>> solver.check()
unsat
>>> solver.reset()
>>> solver.add(Not(Implies(And(Implies(p,q),Implies(q,r)),Implies(r,p))))
>>> solver.check()
sat
>>> solver.reset()
>>> solver.add(Not(Implies(And(Implies(p,q),Implies(q,r)),Implies(p,q))))
>>> solver.check()
unsat
根据判断命题的否命题不可满足,来证明原命题。
安装python ,
pip3 install z3-solver
from z3 import *
solver=Solver()
p=Bool('p')
q=Bool('q')
r=Bool('r')
solver.add(Not(Implies(And(Implies(p,q),Implies(q,r)),Implies(p,r))))
solver.check()