【数理逻辑】谓词逻辑 ( 前束范式 | 前束范式转换方法 | 谓词逻辑基本等值式 | 换名规则 | 谓词逻辑推理定律 )

2023-03-28 17:55:53 浏览数 (1)

文章目录

  • 一、 前束范式
  • 二、 前束范式转换方法
  • 三、 前束范式示例
  • 四、 谓词逻辑推理定律

一、 前束范式


公式

A

有如下形式 :

Q_1 x_1 Q_2 x_2 cdots Q_kx_k B

则称

A

前束范式 ; 前束范式

A

的相关元素 说明 :

量词 :

Q_i

是量词 , 全称量词

forall

, 或 存在量词

exist

;

指导变元 :

x_i

是 指导变元 ;

B

公式 :

B

是谓词逻辑公式 , 其中不含有量词 ,

B

中 可以含有 前面的

x_1 , x_2 , cdots , x_k

指导变元 , 也 可以不含有 其中的某些变元 ;

(

B

中一定不能含有量词 )

二、 前束范式转换方法


求一个谓词逻辑公式的前束范式 , 使用 基本等值式 , 或 换名规则 ;

基本等值式 : 参考博客 【数理逻辑】谓词逻辑 ( 谓词逻辑基本等值式 | 消除量词等值式 | 量词否定等值式 | 量词辖域收缩扩张等值式 | 量词分配等值式 )

换名规则 : 公式

A

中 , 某个量词辖域中 , 某个约束 出现的 个体变元 对应的 指导变元

x_i

, 使用公式

A

中没有出现过的 变元

x_j

进行替换 , 所得到的公式

A' Leftrightarrow A

;

如 :

forall x F(x) lor forall x lnot G(x, y)

如果要求其前束范式 , 前后有两个

x

, 这里使用换名规则 , 将某个换成没有出现过的 指导变元

z

, 换名后为

forall x F(x) lor forall z lnot G(z, y)

;

三、 前束范式示例


forall x F(x) lor lnot exist x G(x, y)

的前束范式 ;

上述公式不是前束范式 , 其 量词

forall x

的辖域是

F(x)

, 量词

exist x

的辖域是

G(x, y)

, 两个辖域都没有覆盖完整的公式 ;

使用 等值演算 和 换名规则 , 求前束范式 ;

forall x F(x) lor lnot exist x G(x, y)

使用 量词否定等值式 , 先把 否定联结词 移动到量词后面 , 使用的等值式为

lnot exist x A(x) Leftrightarrow forall x lnot A(x)

;

Leftrightarrow forall x F(x) lor forall x lnot G(x, y)

使用 换名规则 , 将第二个

forall x lnot G(x, y)

中的

x

换成

z

;

Leftrightarrow forall x F(x) lor forall z lnot G(z, y)

使用 辖域扩张等值式 , 将

forall x

辖域扩张 , 使用的等值式为

forall x ( A(x) lor B ) Leftrightarrow forall x A(x) lor B
Leftrightarrow forall x ( F(x) lor forall z lnot G(z, y) )

再次使用 辖域扩张等值式 , 将

forall z

辖域扩张 , 使用的等值式为

forall x ( A(x) lor B ) Leftrightarrow forall x A(x) lor B
Leftrightarrow forall x forall z ( F(x) lor lnot G(z, y) )

此时已经是前束范式了 ;

使用 命题逻辑 等值式 中的 蕴涵等值式

Leftrightarrow forall x forall z ( G(z, y) to F(x) )

四、 谓词逻辑推理定律


下面推理定律是单向的 , 从左边可以推理出右边 , 从右边不能推理出左边 ; ( 不是等值式 )

rm forall x A(x) lor forall x B(x) Rightarrow forall x ( A(x) lor B(x) )

对应 全称量词 分配率 , 等值式中 只适用于 合取联结词 , 就是因为上述 析取时 , 从右往左 是错误的 , 只能从左往右推理 ;

rm exist x ( A(x) land B(x) ) Rightarrow exist x A(x) land exist x B(x)

rm forall x ( A(x) to B(x) ) Rightarrow forall x A(x) to forall x B(x)

rm forall x ( A(x) to B(x) ) Rightarrow exist x A(x) to exist x B(x)

0 人点赞