程序验证(一):命题逻辑

程序验证(一):命题逻辑

概念

命题逻辑

例如P¬QRP\vee \neg Q \to R

  • 一个原子(atom)是一个或为真或为假的判断。
  • 一个文字(literal)是一个原子或它的非。
  • 命题公式(propositional formulas)由文字和逻辑连接符组成。

合式公式

合式公式(well-formed formulas) 由以下语法得到:

  • atom\langle atom\rangle ::= (true)(false)P,Q,...()\top (true) | \bot (false)|P,Q, ... (命题变量)
  • literal\langle literal\rangle::=atom\langle atom\rangle|¬\negatom\langle atom\rangle(非)
  • formula\langle formula\rangle::=literal\langle literal\rangle
    |¬\negformula\langle formula\rangle (negation)
    |formula\langle formula\rangle \wedgeformula\langle formula\rangle (conjunction)
    |formula\langle formula\rangle \veeformula\langle formula\rangle (disjunction)
    |formula\langle formula\rangle \toformula\langle formula\rangle (implication)
    |formula\langle formula\rangle \leftrightarrowformula\langle formula\rangle (equivalence)

举例:

公式 是否为合式公式
\top
P(QRP)P\wedge (Q \vee R\to P)
PP
PQP\Rightarrow Q

语义

目的:给命题逻辑赋予涵义
把布尔值赋值给(公式,解释)对

Formula:F+Interpretation:I=TruthValue(true,false)Formula: F + Interpretation: I=TruthValue(true, false)
什么是解释?
对于一个命题公式FF,一个解释IIFF中每个命题变元映射为一个布尔值,也就是说:
I=Ptrue,Qfalse,Rfalse,...I={P\mapsto true, Q\mapsto false, R\mapsto false,...}
满足解释:
如果命题公式在解释II下值为真,那么说IIFF的满足解释(satisfying interpretation),记作:
IFI \models F
不满足解释:
如果命题公式在解释II下值为假,那么说IIFF的不满足解释(falsifying interpretation),记作:
I⊭FI \not \models F
语义的归纳定义:
首先定义原子的涵义,然后根据这些定义,定义每个逻辑连接的涵义。
举例:
F:PQP¬QF: P\wedge Q \to P\vee \neg Q
I:{Ptrue,Qfalse}I:\{P\mapsto true,Q\mapsto false\}

Step No. Step Reason
(1) IPI\models P I[P]=trueI[P]=true
(2) I⊭QI\not\models Q I[Q]=falseI[Q]=false
(3) I¬QI\models\neg Q (2)and¬(2) and \neg
(4) I⊭PQI\not\models P\wedge Q (2)and(2) and \wedge
(5) IPQP¬QI\models P\wedge Q\to P\vee \neg Q (4)and(4) and \to

可满足性与永真性

一个公式FF是可满足的(satisfiable)当且仅当存在一个解释II使得IFI\models F
一个公式FF是永真的(valid)当且仅当对于所有解释IIIFI\models F
注意:可满足性与永真性是成对的(dual)符号,即FF是永真的当且仅当¬F\neg F是不可满足的。
如何证明可满足性?

  • 真值表穷举:蛮力搜索复杂度为2n2^n,其中nn为变元的数量
  • 演绎推理:语义讨论
  1. 假定FF为非永真的,即存在III⊭FI\not \models F
  2. 应用推理规则
  3. 如果每一分支都得到矛盾,那么FF是永真的
  4. 如果没有矛盾,且不能进一步应用推理规则,那么FF是非永真的

语义规则

公式

I¬FI⊭F\frac{I\models \neg F}{I\not \models F}
I⊭¬FIF\frac{I\not \models \neg F}{I\models F}
IFGIF IG\frac{I\models F\wedge G}{I\models F ~ I\models G}
I⊭FGI⊭FI⊭G\frac{I\not\models F\wedge G}{I\not \models F | I\not\models G}这个规则产生了分支
IFGIFIG\frac{I\models F\vee G}{I\models F | I\models G}
I⊭FGI⊭F I⊭G\frac{I\not\models F\vee G}{I\not\models F~I\not \models G}
IFGI⊭FIG\frac{I\models F\to G}{I\not\models F | I\models G}
I⊭FGIF I⊭G\frac{I\not\models F\to G}{I\models F~I\not\models G}
IFGIFGI¬F¬G\frac{I\models F\leftrightarrow G}{I\models F\wedge G|I\models \neg F\wedge \neg G}
I⊭FGIF¬GI¬FG\frac{I\not \models F\leftrightarrow G}{I\models F\wedge \neg G|I\models \neg F\wedge G}

举例

  1. F:PQF: P\wedge Q
步骤 推理 备注
1 I⊭PQI\not\models P\wedge Q assumption
2 $I\not\models P 1 and \wedge, case A
3 $I\not\models Q 1 and \wedge, case B
  1. F:PQP¬QF: P\wedge Q \to P\vee \neg Q
步骤 推理 备注
1 I⊭FI\not \models F assum.
2 IPQI\models P\wedge Q 1 and \to
3 I⊭P¬QI\not\models P\vee\neg Q 1 and \to
4 IPI\models P 2 and \wedge
5 I⊭PI\not\models P 3 and \vee
6 \bot 4 and 5

发现矛盾,所以FF是永真的。

注意:\Rightarrow这样的双线箭头不属于命题逻辑的符号集。

范式(Normal Forms)

概念

一种逻辑的范式,应当:

  • 限制公式的语法(Restricts the syntax of formulas)
  • 对于此逻辑中的任意公式,范式具有等价的表达能力(Has equivalent representation for any formula in the logic)

三种主要范式

Negation Normal Form (NNF)

只包含\wedge\vee¬\neg三个符号,且¬\neg只能用于文字(literal)

Disjunctive Normal Form (DNF)

合取子句的析取

Conjunctive Normal Form (CNF)

析取子句的合取
举例:

命题 是否正确
¬P¬(PQ)\neg P\wedge\neg(P\vee Q)是NNF
¬P¬QR\neg P\wedge\neg Q\vee R是DNF
(¬PQ)(PR)(\neg P\vee Q)\wedge (P\to R)是CNF
¬PP\neg P\wedge P是CNF

范式转化

由于主流的SAT solver(就是一个程序,输入一个公式,输出这个公式是否是可满足的,例子见一个简单的DPLL实现)一般接受CNF为输入,所以面对一个一般的公式,我们需要先把它转化为一个CNF。如何实现?等价的转换比较困难,但是我们可以采用一种逻辑上更弱的方法,即进行可满足性等价(equisatisfiability)转换。也就是说,我不要求转换后的CNF与原来的公式在所有的解释下真值都一样,我只要求若CNF可满足,则原公式可满足;若原公式可满足,则CNF可满足。
转换的方法,可采用Tseitin 算法.

展开阅读全文
©️2020 CSDN 皮肤主题: 鲸 设计师: meimeiellie 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值