析取范式与合取范式

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

命题常项与命题变项

真值确定的命题称为命题常项或命题常元。

例如,下面的,都是命题常项。p:2是素数。q:雪是黑色的。

简单陈述句中,由于某个或某些成分取值不同而导致该句真值不确定,这种句子称为命题变项,它不是命题,但这个或这些元素成分一旦取值定下来,句子就成为命题。

例不是命题,但当给定与确定的值后,它的真值也就定下来了,它是命题

变项。命题变项也用表示之。一个符号,例如,它表示的是命题常

项还是命题变项,一般由上下文来确定。一个命题变项经符号化后,如符号化为,就可以表示任意的命题。

析取范式与合取范式

析取

用连词∨把几个公式连接起来所构成的公式叫做析取,而此析取式的每一组成部分叫做析取项。由一些合适公式所构成的任一析取也是一个合适公式。

合取

用连词∧把几个公式连接起来而构成的公式叫做合取,而此合取式的每个组成部分叫做合取项。一些合适公式所构成的任一合取也是一个合取公式。

定义

命题变项及其否定统称作文字。仅由有限个文字构成的析取式称为简单析取式。仅由有限个文字构成的合取式称为简单合取式。

例如,文字:p,┐q,r,q。

简单析取式:p,q,p∨q,p∨┐p∨r,┐p∨q∨┐r。

简单合取式:p,┐r,┐p∧r,┐p∧q∧r,p∧q∧┐q。

定理

(1)一个简单析取式是重言式当且仅当它同时含某个命题变项及它的否定。

(2)一个简单合取式是矛盾式当且仅当它同时含某个命题变项及它的否定。

矛盾式

contradictory(矛盾式或永假式)

设A为任一命题公式,若A在它的各种指派情况下,其取值均为假,则称A是矛盾式或永假式。

若命题公式A不是矛盾式,则称A为可满足式。

重言式

Tautology (重言式又称为永真式)

设A为任一命题公式,若A在它的各种赋值下取值均为真,则称A是重言式。

定义

(1)由有限个简单合取式构成的析取式称为析取范式。

(2)由有限个简单析取式构成的合取式称为合取范式。

(3)析取范式与合取范式统称为范式。

例如,析取范式:(p┐∧q)∨r,┐p∧q∧r,p∨┐q∨r。

合取范式:(p∨q∨r)∧(┐q∨r),┐p∧q∧r,p∨┐q∨r。

定理

(1)一个析取范式是矛盾式当且仅当它的每个简单合取式都是矛盾式。

(2)一个合取范式是重言式当且仅当它的每个简单析取式都是重言式。

在布尔逻辑中,析取范式(DNF)是逻辑公式的标准化(或规范化),它是合取子句的析取。作为规范形式,它在自动定理证明中有用。一个逻辑公式被认为是DNF 的,当且仅当它是一个或多个文字的一个或多个合取的析取。同合取范式(CNF)一样,在DNF 中的命题算子是与、或和非。非算子只能用做文字的一部分,这意味着它只能领先于命题变量。例如,

下列公式都是DNF:,,,

但如下公式不是DNF:NOT 是最外层的算子,

一个OR 嵌套在一个AND 中把公式转换成DNF 要使用逻辑等价,比如双重否定除去、德·摩根定律和分配律。注意所有逻辑公式都可以转换成析取范式。但是,在某些情况下转换成DNF 可能导致公式的指数性爆涨。例如,在DNF 形式下,如下逻辑公式有2n 个项:

在布尔逻辑中,一个公式是合取范式(CNF)的,如果它是子句的合取。作为规范形式,它在自动定理证明中有用。它类似于在电路理论中的规范和之积形式。

所有的文字的合取和所有的文字的析取是CNF 的,因为可以被分别看作一个文字的子句的合取和一个单一子句的合取。和析取范式(DNF)中一样,在CNF 公式中可以包含的命题连结词是与、或和非。非算子只能用做文字的一部分,这意味着它只能在命题变量前出现。

例如,下列所有公式都是CNF:,,

而下列不是:,,

上述三个公式分别等价于合取范式的下列三个公式:

,,

所有命题公式都可以转换成CNF 的等价公式。这种变换基于了关于逻辑等价的规则:双重否定律、德·摩根定律和分配律。因为所有逻辑公式都可以转换成合取范式的等价公式,证明经常基于所有公式都是CNF 的假定。但是在某些情况下,这种到CNF 的转换可能导

致公式的指数性爆涨。例如,把下述非-CNF 公式转换成CNF 生成有个子句的公式:

布尔变量(Boolean Variable)是有两种逻辑状态的变量,它包含两个值:真和假。如果在表达式中使用了布尔型变量,那么将根据变量值的真假而赋予整型值1或0。要把一个整型变量转换成布尔型变量,如果整型值为0,则其布尔型值为假;反之如果整型值为非0,则其布尔型值为真。布尔型变量在运行时通常用做标志,比如进行逻辑测试以改变程序流程。

相关文档
最新文档