【形式化方法】Part B: SAT And Validity(SAT和有效性)

Part B: SAT 和有效性

In Exercise 1, we've learned how to represent propositions in Z3 and how to use Z3 to obtain the solutions that make a given proposition satisfiable. In this part, we continue to discuss how to use Z3 to check the validity of propositions. Recall in exercise 2, we once used theorem prover to prove the validity of propositions, so this is another strategy.

在exercise1里我们学会了如何在Z3中表达命题以及如何用Z3来获取可满足的解法。在这个部分,我们继续来讨论如何用z3来检查命题的有效性。练习2中,我们曾经用定理证明器来证明命题的有效性,所以这是另一个策略。

Example B-1: 如前所述,命题P的有效性和可满足性之间的关系是:

    valid(P) <==> unsat(~P)

我们来看看上次的例子:

    F = Or(P, Q)
    solve(Not(F))

Z3 会输出以下:

    [P = False, Q = False]

~F是可满足意味着命题F是无效的。这样,如何使用Z3这样的求解器来证明一个命题的有效性就很清楚了。

Example B-2: 现在我们来证明双重否定律(~~P - >p)是有效的:

    F = Implies(Not(Not(P)), P)
    solve(Not(F))

Exercise2-1:证明排中律有效P \/ ~P

P = Bool('P')
F = Or(Not(P), P)
solve(Not(F))

结果输出:no solution #以下练习结果都是输出no solution

Exercise2-2:证明有效性:((P->Q)->P)->P)

P, Q = Bools('P Q')
F = Implies(Implies(Implies(P, Q), P), P)
solve(Not(F))

Exercise2-3:(P -> Q) -> (~Q -> ~P).

P, Q =Bools('P Q')
X = Implies(P, Q)
Y = Implies(Not(Q), Not(P))
F = Implies(X, Y)
solve(Not(F))

Exercise2-4:(P -> Q /\ R) -> ((P -> Q) /\ (P -> R))

P, Q, R =Bools('P Q R')
A = Implies(P, And(Q, R))
B = Implies(P, Q)
C = Implies(P, R)
F = Implies(A, And(B, C))
solve(Not(F))

# 中科大软院-形式化方法笔记-欢迎私信交流

 

 

 

  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值