DM@命题公式范式@析取范式和合取范式@主范式基础
文章目录
abstract
- 命题公式有两种常用的规范表示方法;
- 规范的表达式能表达真值表所提供的一切信息
- 这里介绍任意命题一般规范化和主范式化
文字
- 命题变项及其否定统称作文字
简单析取式(或项)
- 仅由有限个文字构成的析取式称为简单析取式
- 例如 p ∨ ¬ p ∨ r p\vee{\neg{p}}\vee{r} p∨¬p∨r,其包含3个文字,是简单析取式
简单合取式(与项)
- 仅由有限个文字构成的合取式称为简单合取式
- p ∧ r ∧ ¬ p p\wedge{r}\wedge{\neg{p}} p∧r∧¬p是3文字简单合取式
或项和与项
- 简单析取式,有些地方(数字逻辑)也称为或项
- 简单合取式,也成为与项
基本性质
-
也就说,简单析取式和简单合取式都是由有限个文字构成的
-
特别的,一个文字单独出现,它既是简单析取式,又是简单合取式
定理
- 一个简单析取式是重言式的充要条件是它同时包含某个命题变项 p p p及其否定式 ¬ p \neg{p} ¬p
- 一个简单合取式是矛盾式的充要条件是它同时包含某个命题变项 p p p及其否定式 ¬ p \neg{p} ¬p(同上)
命题公式的范式
析取范式
- 由有限个简单合取式的析取构成的命题公式称为析取范式
- 析取联结词联结而成的称为析取范式: A 1 ∨ ⋯ ∨ A n A_1\vee{\cdots}{\vee{A_n}} A1∨⋯∨An, A i A_i Ai为简单合取式 ( i = 1 , ⋯ , n ) (i=1,\cdots,n) (i=1,⋯,n)
- 数字逻辑中称为与或式
合取范式
-
由有限个简单析取式的合取构成的命题公式称为合取范式
- 合取联结词联结而成的称为合取范式: B 1 ∧ ⋯ ∧ B t B_1\wedge{\cdots}\wedge{B_t} B1∧⋯∧Bt, B j B_j Bj为简单析取式 ( j = 1 , ⋯ , n ) (j=1,\cdots,n) (j=1,⋯,n)
-
数字逻辑中称为或与式
小结
-
析取范式和合取范式它们统称为范式
-
Note:
- 某些命题同时满足两种范式,例如 p ∨ q ∨ r p\vee{q\vee{r}} p∨q∨r,它可以解释为三个简单合取式析析取构成析取范式,也可以解释为一个包含3个文字的简单析取式,单个简单析取式满足合取范式的定义
- 类似的 p ∧ q ∧ r p\wedge{q}\wedge{r} p∧q∧r即使合取范式也是析取范式
- 总之,单个简单析取式合简单合取式都同时满足合取范式和析取范式的定义
-
由范式存在定理可知(后续介绍),任何一个命题都可规范化为范式,并且根据需要等值地处理为合取范式或析取范式
- Note:这不是说,将任意范式的 ∨ \vee ∨圈出,它们将范式划分为若干段,每一段视为简单合取式,从而满足析取范式,这涉及到运算顺序,需要用分配律来处理详见规范化部分
性质
- 一个析取范式是矛盾式的充要条件是它的每个简单合取式都是矛盾式
- 即 A 1 ∨ ⋯ ∨ A n = 0 A_1\vee{\cdots}{\vee{A_n}}=0 A1∨⋯∨An=0 ⇔ \Leftrightarrow ⇔ A i = 0 A_i=0 Ai=0, ( i = 1 , ⋯ , n ) (i=1,\cdots,n) (i=1,⋯,n)
- 一个析取范式真值为假时充要条件时其所有简单合取式都为假
- 一个合取范式是重言式的充要条件式它的每个简单析取式都是重言式
- 即 B 1 ∧ ⋯ ∧ B t = 1 B_1\wedge{\cdots}\wedge{B_t}=1 B1∧⋯∧Bt=1 ⇔ \Leftrightarrow ⇔ B i = 1 B_i=1 Bi=1, ( j = 1 , ⋯ , n ) (j=1,\cdots,n) (j=1,⋯,n)
命题公式规范化
联结词规范化
-
消去 → , ↔ \to,\leftrightarrow →,↔利用等值式:
- A → B A\to{B} A→B ⇔ \Leftrightarrow ⇔ ¬ A ∨ B \neg{A}\vee{B} ¬A∨B
- A ↔ B A\leftrightarrow{B} A↔B ⇔ \Leftrightarrow ⇔ ( A → B ) ∧ ( B → A ) (A\to{B})\wedge{(B\to{A})} (A→B)∧(B→A) ⇔ \Leftrightarrow ⇔ ( ¬ A ∨ B ) ∧ ( ¬ B ∨ A ) (\neg{A}\vee{B})\wedge{(\neg{B}\vee{A})} (¬A∨B)∧(¬B∨A)
-
¬ \neg ¬子式文范式化
- ¬ ¬ A \neg\neg{A} ¬¬A ⇔ \Leftrightarrow ⇔ A A A
- ¬ ( A ∧ B ) \neg(A\wedge{B}) ¬(A∧B) ⇔ \Leftrightarrow ⇔ ¬ A ∨ ¬ B \neg{A}\vee{\neg{B}} ¬A∨¬B
- ¬ ( A ∨ B ) \neg{(A\vee{B})} ¬(A∨B) ⇔ \Leftrightarrow ⇔ ¬ A ∧ ¬ B \neg{A}\wedge{\neg{B}} ¬A∧¬B
析取@合取规范化
- 以下式范式中允许出现,但不是析取范式和合取范式都允许出现的子式化简
- 析取范式不允许出现括号内有 ∨ \vee ∨,括号内只能是简单合取式,即 A ∧ ( B ∨ C ) A\wedge{(B\vee{C})} A∧(B∨C),分配律化为 ( A ∧ B ) ∨ ( A ∧ C ) (A\wedge{B})\vee{(A\wedge{C})} (A∧B)∨(A∧C)
- 合取范式不允许出现括号内有 ∧ \wedge ∧,括号内只能是简单析取式, A ∨ ( B ∧ C ) A\vee{(B\wedge{C})} A∨(B∧C),利用分配律化为 ( A ∨ B ) ∧ ( A ∨ C ) (A\vee{B})\wedge{(A\vee{C})} (A∨B)∧(A∨C)
异同点
- 将一个公式分别规范化为析取范式和合取范式的过程中,它们仅再需要执行分配律的时候开始有所区别
- 而再消去 → , ↔ \to,\leftrightarrow →,↔以及规范化 ¬ \neg ¬子式的过程是相同的
范式存在定理
- 任意命题公式都存在与之等值的析取范式和合取范式
- 因为通过上节讨论的规范化算法,可以等值规范化任意命题公式
规范式的不唯一性
- 通常命题的析取范式和合取范式不唯一
- 为了使范式唯一,需要进一步规范化,即引入极大项和极小项和主范式(具有唯一性)
极小项和极大项
-
极小项和极大项定义和相似,可以套用同一套定义模板
-
设 n n n个命题变项,若简单合取式(简单析取式)中每个命题变项(原形)和它的否定式(否定形)恰好出现一个且仅出现一次,且命题变项或它的否定式按照下标从小到大或字典顺序排列,称这样的简单合取式(简单析取式)为极小项(极大项)
-
Note
- 极小项和极大项分别是简单合取式和简单析取式的主范式
- 简单合取式可以规范为极小项(合取式的真值表几乎都是0(只有一个成真赋值),因此称合取式的主范式为极小项)
- 简单析取式可以规范为极大项(析取式的真值表几乎都是1(只有一个成假赋值),因此称析取式的主范式为极大项)
主范式
- 所有简单合取式都是极小项的析取范式,称为主析取范式
- 换句话说,若析取范式 A A A中的所有简单合取式都是极小项,则 A A A是主析取范式
- 或者说极小项之间的析取成的公式式主析取范式
- 所有简单析取式都是极大项的合取范式,称为主合取范式
- 若合取范式 A A A中的所有简单析取式都是极大项,则 A A A是主析合取范式
- 极大项之间合取成的公式为主合取范式
- 数字逻辑中,主析取范式对应标准与或式;主合取范式对应标准或与式
n n n元主范式的个数
- 每个命题变项在极小项中,以原形或否定形式恰好出现一次,因此
n
n
n个命题变项共可产生
2
n
2^{n}
2n个不同的极小项
- 显然,每个极小项都有且仅有一个成真赋值
- 显然,每个大小项都有且仅有一个成假赋值
- 任意 n n n变元命题公式的极大项和极小项都是 n n n个文字构成的
下标编排规则
- 若极小项的成真赋值(长度为 n n n的0/1二进制串)所对应的二进制数的十进制数为 i i i,则将这个极小项记为 m i m_i mi
- 类似地, n n n个命题变项共可产生 2 n 2^{n} 2n个不同地极大项,每个极大项只有一个成假赋值,将其对应的十进制数 i i i做极大项的下标,记为 M i M_i Mi
初步规范化例
- 公式
A
=
(
p
→
q
)
↔
r
A=(p\to{q})\leftrightarrow{r}
A=(p→q)↔r通过规范化算法可以规范化为
- 合取范式: ( p ∨ r ) ∧ ( ¬ q ∨ r ) ∧ ( ¬ p ∨ q ∨ ¬ r ) (p\vee{r})\wedge(\neg{q}\vee{r})\wedge{(\neg{p}\vee{q}\vee{\neg{r}})} (p∨r)∧(¬q∨r)∧(¬p∨q∨¬r)
- 析取范式: ( p ∨ ¬ q ∧ ¬ r ) ∨ ( ¬ p ∧ r ) ∨ ( q ∧ r ) (p\vee{\neg{q}\wedge{\neg{r}}})\vee{(\neg{p}\wedge{r})\vee{(q\wedge{r})}} (p∨¬q∧¬r)∨(¬p∧r)∨(q∧r)
例:二元 极小项和极大项
-
含有2个变量 p , q p,q p,q极小项和极大项分析
-
极小项(找成真赋值)
-
公式 成 真
赋值名称 ¬ p ∧ ¬ q \neg{p}\wedge{\neg{q}} ¬p∧¬q 00 m 0 m_0 m0 ¬ p ∧ q \neg{p}\wedge{q} ¬p∧q 01 m 1 m_1 m1 p ∧ ¬ q p\wedge{\neg{q}} p∧¬q 10 m 2 m_2 m2 p ∧ q p\wedge{q} p∧q 11 m 3 m_3 m3
-
-
极大项(找成假赋值)
-
公式 成 假
赋值名称 p ∨ q {p}\vee{{q}} p∨q 00 M 0 M_0 M0 p ∨ ¬ q p\vee{\neg{q}} p∨¬q 01 M 1 M_1 M1 ¬ p ∨ q \neg{p}\vee{q} ¬p∨q 10 M 2 M_2 M2 ¬ p ∨ ¬ q \neg{p}\vee{\neg{q}} ¬p∨¬q 11 M 3 M_3 M3
-
-
分析
- 仅有2个命题变元构成的极小项和极大项都是由 2 2 = 4 2^{2}=4 22=4个,
- 极小项间的成真赋值互不相同
- 极大项间的成假赋值也互不相同
根据主范式编号还原出主范式公式👺
-
设二进制串 t = x 1 ⋯ x n t=x_1\cdots{x_n} t=x1⋯xn,其中 x i x_i xi是0或1, i = 1 , ⋯ , n i=1,\cdots,n i=1,⋯,n, t t t是二进制串的十进制值
-
又设 n n n元 ( p 1 , ⋯ , p n ) (p_1,\cdots,{p_n}) (p1,⋯,pn)编号为 t t t的极小项 m t m_t mt的模式为 ( p 1 ) ∧ ⋯ ∧ ( p n ) (p_1)\wedge\cdots\wedge(p_n) (p1)∧⋯∧(pn)完全由 t = x 1 ⋯ x n t=x_1\cdots{x_n} t=x1⋯xn决定
- 其中带括号的变元( p i ) p_i) pi)表示命题变元 p i p_i pi的原形 p i p_i pi或否定形 ¬ p i \neg{p_i} ¬pi的占位符
- 那么 ( p i ) (p_i) (pi)取 p i p_i pi还是 ¬ p i \neg{p_i} ¬pi完全取决于 x i x_i xi
-
对于极小项而言
-
( p i ) = { p i x i = 1 ¬ p i x i = 0 i = 1 , ⋯ , n (p_i)=\begin{cases} p_i&x_i=1\\ \neg{p_i}&x_i=0 \end{cases} \quad{i=1,\cdots,n} (pi)={pi¬pixi=1xi=0i=1,⋯,n
-
即 x i = 0 x_i=0 xi=0时, ( p i ) = ¬ p i (p_i)=\neg{p_i} (pi)=¬pi; x i = 1 x_i=1 xi=1时, ( p i ) = p i (p_i)=p_i (pi)=pi
-
容易验证,此规则下
-
x
i
x_i
xi使得
(
p
i
)
(p_i)
(pi)成真:
- x i = 1 x_i=1 xi=1时. ( p i ) = p i (p_i)=p_i (pi)=pi,赋值 x i = 1 x_i=1 xi=1显然使 p i p_i pi成真,即 ( p i ) (p_i) (pi)成真
- x i = 0 x_i=0 xi=0时. ( p i ) = ¬ p i (p_i)=\neg p_i (pi)=¬pi,赋值 x i = 1 x_i=1 xi=1显然使 ¬ p i \neg p_i ¬pi成真,即 ( p i ) (p_i) (pi)成真
- 即赋值 x 1 ⋯ x n x_1\cdots{x_n} x1⋯xn使得 ( p 1 ) ∧ ⋯ ∧ ( p n ) (p_1)\wedge\cdots\wedge(p_n) (p1)∧⋯∧(pn)成真,因此本规则得出的 ( p 1 ) ∧ ⋯ ∧ ( p n ) (p_1)\wedge\cdots\wedge(p_n) (p1)∧⋯∧(pn)就是编号为 t t t的极小项 m t m_t mt
-
x
i
x_i
xi使得
(
p
i
)
(p_i)
(pi)成真:
-
-
对于极大项 M t = ( p 1 ) ∨ ⋯ ∨ ( p n ) M_t=(p_1)\vee\cdots{\vee}(p_n) Mt=(p1)∨⋯∨(pn)而言
- ( p i ) = { p i x i = 0 ¬ p i x i = 1 i = 1 , ⋯ , n (p_i)=\begin{cases} p_i&x_i=0\\ \neg{p_i}&x_i=1 \end{cases} \quad{i=1,\cdots,n} (pi)={pi¬pixi=0xi=1i=1,⋯,n
-
总之这两条规则形式上相似,但是操作起来相反
-
例:二元 ( p 1 , p 2 ) (p_1,p_2) (p1,p2)的编号为 t = 2 = ( 10 ) 2 t=2=(10)_2 t=2=(10)2的极小项和极大项
- 极小项 m 2 m_2 m2= p 1 ∧ ¬ p 2 p_1\wedge{\neg{p_2}} p1∧¬p2;
- 极大项 M 2 M_2 M2= ¬ p 1 ∨ p 2 \neg{p_1}\vee{p_2} ¬p1∨p2
极小项和极大项关系定理
-
设 m i , M i m_i,M_i mi,Mi是含有命题变项 p 1 , ⋯ , p n p_1,\cdots,p_n p1,⋯,pn的极小项和极大项,则
- ¬ m i \neg{m_i} ¬mi ⇔ \Leftrightarrow ⇔ M i M_i Mi;
- ¬ M i \neg{M_i} ¬Mi ⇔ \Leftrightarrow ⇔ m i m_i mi
-
这个规律可以根据德摩根律得出:
- 设
M
i
=
p
1
∨
⋯
∨
p
n
M_i=p_1\vee\cdots\vee{p_n}
Mi=p1∨⋯∨pn,其成假赋值二进制串
x
1
⋯
x
n
x_1\cdots x_n
x1⋯xn,对应十进制为
i
i
i
- ¬ ( p 1 ∨ ⋯ ∨ p n ) \neg(p_1\vee\cdots\vee{p_n}) ¬(p1∨⋯∨pn)= ( ¬ p 1 ∧ ⋯ ∧ ¬ p n ) (\neg{p_1}\wedge{\cdots}\wedge{\neg{p_n}}) (¬p1∧⋯∧¬pn)
- 显然 ¬ p 1 ∧ ⋯ ∧ ¬ p n \neg{p_1}\wedge{\cdots}\wedge{\neg{p_n}} ¬p1∧⋯∧¬pn是极小项,设其编号为 j j j,即记为 m j = ¬ p 1 ∧ ⋯ ∧ ¬ p n m_j=\neg{p_1}\wedge{\cdots}\wedge{\neg{p_n}} mj=¬p1∧⋯∧¬pn
- M i M_i Mi和 m j m_j mj真值相反, x 1 ⋯ x n x_1\cdots x_n x1⋯xn使 M i M_i Mi为假,则使 m j m_j mj成真,从而 m j m_j mj的成真赋值也是 x 1 ⋯ x n x_1\cdots{x_n} x1⋯xn,因此 j = i j=i j=i;
- 所以 ¬ M i \neg{M}_i ¬Mi ⇔ \Leftrightarrow ⇔ m i m_i mi
- 类似的可以证明 ¬ m i \neg{m_i} ¬mi ⇔ \Leftrightarrow ⇔ M i M_i Mi;
- 设
M
i
=
p
1
∨
⋯
∨
p
n
M_i=p_1\vee\cdots\vee{p_n}
Mi=p1∨⋯∨pn,其成假赋值二进制串
x
1
⋯
x
n
x_1\cdots x_n
x1⋯xn,对应十进制为
i
i
i
-
这个定理告诉我们,只要知道了标号为 i i i的极小项,那么对其取反得到的命题公式便得到编号同为 i i i的极大项;反之亦然
命题公式进行主范式化👺
- 给定一个具体的命题公式,其包含的命题变元个数 n n n是首要问题
- 然后,确定各个变量间的顺序, p 1 , ⋯ , p n p_1,\cdots,p_n p1,⋯,pn
- 若命题公式
A
A
A的合取范式(析取范式)
A
′
A'
A′的某个简单析取式(简单合取式)
A
i
A_i
Ai缺少了某个变元
p
j
p_j
pj和
¬
p
j
\neg{p_j}
¬pj,则采用等值式模式中的
A
i
∨
0
=
A
i
A_i\vee{0}=A_i
Ai∨0=Ai和
A
i
∧
1
=
A
i
A_i\wedge{1}=A_i
Ai∧1=Ai,
1
=
p
j
∨
¬
p
j
1=p_j\vee{\neg{p_j}}
1=pj∨¬pj,
0
=
¬
p
j
∧
p
j
0=\neg{p_j}\wedge{p_j}
0=¬pj∧pj来引入缺失的命题变元(或其否定形)使
A
i
′
A_i'
Ai′有
n
n
n个文字
- 如果 A ′ A' A′是析取范式,则 A i A_i Ai是简单合取式,具体的补元操作为 A i ′ A'_i Ai′= A i ∧ ( p j ∨ ¬ p j ) A_{i}\wedge{(p_j\vee{\neg{p_{j}}})} Ai∧(pj∨¬pj)= ( A i ∧ p j ) ∨ ( A i ∧ ¬ p j ) (A_{i}\wedge{p_j})\vee(A_{i}\wedge{\neg{p_{j}}}) (Ai∧pj)∨(Ai∧¬pj)
- 如果 A ′ A' A′式合取范式,则 A i A_{i} Ai是简单析取式,补元操作: A i ′ A_i' Ai′= A i ∨ ( p j ∧ ¬ p j ) A_i\vee{(p_{j}\wedge{\neg{p_j}})} Ai∨(pj∧¬pj)= ( A i ∨ p j ) ∧ ( A i ∨ ¬ p j ) (A_{i}\vee{p_j})\wedge(A_{i}\vee{\neg{p_{j}}}) (Ai∨pj)∧(Ai∨¬pj)
- 如果缺失的字母有多个,则重复处理,直到补足 n n n元
- 由于 ∨ , ∧ \vee,\wedge ∨,∧都满足交换律,所以 A i ′ A_i' Ai′中的变元顺序可以按照约定的顺序排序(或则在补元操作时就将调整号顺序)
- 去重:如果重复出现某个极小项(极大项)仅保留一个即可
- 例如,某公式
F
F
F有3个命题变元
p
1
,
p
2
,
p
3
p_1,p_2,p_3
p1,p2,p3,将其初步规范化为合取范式
F
∧
F_{\wedge}
F∧,并
- 设其中的一个简单析取式子式为 A 1 = p 1 ∨ p 2 A_1=p_1\vee{p_2} A1=p1∨p2,其缺少文字 p 3 p_3 p3或 ¬ p 3 \neg{p_3} ¬p3,
- 即 A 1 ′ = p 1 ∨ p 2 ∨ ( ¬ p 3 ∧ p 3 ) A_1'=p_1\vee{p_2}\vee{(\neg{p_3}\wedge{p_3})} A1′=p1∨p2∨(¬p3∧p3),再利用分配律展开为 A 1 ′ = ( p 1 ∨ p 2 ∨ ¬ p 3 ) ∧ ( p 1 ∨ p 2 ∨ p 3 ) A_1'=(p_1\vee{p_2}\vee{\neg{p_3})\wedge{(p_1\vee{p_2}\vee{{p_3}})}} A1′=(p1∨p2∨¬p3)∧(p1∨p2∨p3),
- 将 F ∧ F_{\wedge} F∧中的 r 1 r_1 r1替换为 A 1 ′ A_1' A1′即可完成这部分的析取主范式化(极大项)
- 类似的,将所有 F ∧ F_{\wedge} F∧简单析取式主范式化
- 又比如 p 1 ∨ p 3 p_1\vee{p_3} p1∨p3缺失 p 2 p_2 p2,则执行 p 1 ∨ ( p 2 ∧ ¬ p 2 ) ∨ p 3 p_1\vee{(p_2\wedge{\neg{p_2}})}\vee{p_3} p1∨(p2∧¬p2)∨p3,即 ( p 1 ∨ p 2 ∨ p 3 ) ∧ ( p 1 ∨ ¬ p 2 ∨ p 3 ) (p_1\vee{p_2}\vee{p_3})\wedge(p_1\vee{\neg{p_2}\vee{p_3}}) (p1∨p2∨p3)∧(p1∨¬p2∨p3)
- 排序
- 为了使主范式化的公式更加醒目和易于比较异同,极小项(极大项)之间要按照下标编号从小到大排列
- 例如 m 1 ∨ m 3 ∨ m 2 m_1\vee{m_3}\vee{m_2} m1∨m3∨m2需要排列成 m 1 ∨ m 2 ∨ m 3 m_1\vee{m_2}\vee{m_3} m1∨m2∨m3
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了