本文介绍命题逻辑(很少部分人叫它作零阶逻辑). 、一阶逻辑和二阶逻辑。这些形式推理的逻辑系统表达与推理能力依次增强。
命题逻辑
命题逻辑:propositionnal logic
命题
命题有真假,所以能称得上是命题的句子有一定的特点,比如不是一个问句,肯定是一个陈述句,进一步,即使是陈述句,也未必是命题。即命题是具有真假值的陈述句。
一般,我们去判断一个陈述句是不是命题,只要想想这个陈述句是不是有判断的意味即可。比如"5<2"是一个命题,而且是一个假命题。再如“我比我爸爸年纪小"是命题,而且是一个真命题。但是,有的时候判断一个命题是难的,比如著名的“说谎者悖论”,"我在说谎“是命题吗?答案:这个是悖论,不是命题。
悖论是指同一命题中有两个对立结论,而两个结论都能自圆其说。即:事件P可以推导出事件非P;事件非P可以推导出事件P
“我在说谎”:
如果是真的,则“我在说谎”本身就是一个慌,与真的矛盾。
如果是假的。则“我在说谎”则是一个谎言,与假的又矛盾。
命题逻辑
我们确定一个命题之后,为了形式化,将这些命题都用小写字母
p
,
q
,
r
p,q,r
p,q,r表示。然后我们使用命题连接词,将上述
p
,
q
,
r
p,q,r
p,q,r组合成更加复杂的命题,称为命题公式,此时
p
,
q
,
r
p,q,r
p,q,r则称为命题变元或者原子命题(即不可再分)。我们也可以把这一过程形式化为
α
=
f
(
p
,
q
,
r
)
\alpha=f(p,q,r)
α=f(p,q,r)
命题连接词:常用的有如下五个,非,且(合取),或(析取),蕴含(推出),等价(当且仅当)
例子:
设
α
=
f
(
p
,
q
,
r
)
=
p
∧
q
∧
r
\alpha=f(p,q,r)=p \wedge q \wedge r
α=f(p,q,r)=p∧q∧r,则若
(
p
,
q
,
r
)
=
(
1
,
1
,
0
)
(p,q,r)=(1,1,0)
(p,q,r)=(1,1,0),则命题公式
α
\alpha
α为假。
对于一个命题公式,我们可以构造一个真值表,例如对于 α = f ( p , q , r ) = p ∧ q \alpha=f(p,q,r)=p \wedge q α=f(p,q,r)=p∧q
p | q | α \alpha α |
---|---|---|
0 | 0 | 0 |
0 | 1 | 0 |
1 | 0 | 0 |
1 | 1 | 1 |
指派(assignment)和解释(interpretation)的概念:设
α
=
f
(
p
1
,
⋯
,
p
n
)
\alpha=f(p_1,\cdots,p_n)
α=f(p1,⋯,pn),其可以绘制其真值表,(同样,最后一列是因变量
α
\alpha
α的值)。那么指派和解释为:
一阶逻辑
作为命题逻辑向一阶逻辑的过渡,请看如下经典3段论。
所有人都会死
苏格拉底是人
所以苏格拉底会死
这个逻辑关系能否用命题逻辑表达?我们先定义命题p,q,r:
p:所有人都会死
q:苏格拉底是人
r:苏格拉底会死
用上述定义的命题表达3段论中的因果关系,有: ( p ∧ q ) → r (p\wedge q) \rightarrow r (p∧q)→r。这个逻辑表达式似乎还行,但是有一个问题:只对3段论的表层意思表达了出来,背后的深层次的逻辑没有表达出来。
什么意思呢?如果我告诉你一个命题s为:
s:小明是人
你能够得到什么结论?从语言上推导,我们可以得出t:小明会死
的结论,但是如果你之前将三段论表述为
(
p
∧
q
)
−
>
r
(p\wedge q) ->r
(p∧q)−>r,那么给定条件
s
s
s,通过逻辑符号的推理,你无法推出
t
t
t。 什么叫做逻辑符号的推理,例如
(
¬
(
¬
p
)
)
=
p
(\neg( \neg p))=p
(¬(¬p))=p就是,只能通过与或非这种运算以及
p
p
p这些符号去推理,你会发现推不出
t
t
t。总结就是:语言上推得过去,用逻辑符号和运算推不过去,根本原因就是命题逻辑表达力太弱。
现在我们考虑使用一阶逻辑
(First-order Logic)。其也是一种形式符号推理系统,也叫一阶谓词演算、低阶谓词演算(Predicate Calculus)、限量词(Quantifier)理论,也有人称其为“谓词逻辑”,虽然这种说法不够精确。总之,不管怎么说,一阶逻辑就是一种形式推理的逻辑系统,是一种抽象推理的符号工具。
一阶逻辑不同于单纯的“命题逻辑”,因为,一阶逻辑里面使用了任意和存在。举一个一阶逻辑表达式的例子:
∃x(Math(x) → Prof(x))
其表示:存在一个x,如果x是数学老师,那么x是教授。
再举一个例子如下:
∀ \forall ∀x(Math(x) → Prof(x))
其表示:任意一个x,如果x是数学老师,那么x是教授。
看完了上面两个例子之后,大家如果静下心来想一想,不难发现,其特点在于:将命题逻辑中命题的一些名词给变量化了。为了以示区别,再举例如下:
命题逻辑中的表示:
小明是一位数学家
p:小明是一位数学家
一阶逻辑中的表示:
小明是一位数学家
math(小明)。其中math(x)表示:x是一位数学家。
这个时候,我们能够慢慢发现一阶逻辑的强大,为了证明这一点,我们可以将前面的三段论使用一阶逻辑进行完美的表示。
所有人都会死
苏格拉底是人
所以苏格拉底会死
定义:
die(x):x会死
people(x):x是人
那么上述三段论可以表示为:
∀ \forall ∀ x (people(x)-> die(x))
people(“苏格拉底”)->die(“苏格拉底”)
这一次,如果小明是人,那么有people(“小明”),我们根据 ∀ \forall ∀ x (people(x) → \rightarrow → die(x)),可以推导出die(“小明”),即小明会死。这次总算完美解决了。
相关概念
谓词:一个含有变量的命题,例如上述math(x)。
谓词符号:就是上述的math,die之类的。只是通常我们习惯用大写表示比如:F,G,H,但是随便用也行。
函数符号:这个我们早已熟悉。通常用小写表示f,g,h,但是随便也行,比如我们构造函数的时候,也用过F啊。
谓词符号和函数符号非常相似,只是在映射上,函数更加宽泛 f : A − > B f:A->B f:A−>B,而谓词更加狭窄 F : D − > E = { 0 , 1 } F:D->E=\{0,1\} F:D−>E={0,1},比如people("桌子”)是假的,所以为0。
个体域:即谓词中变量的取值范围。比如math(x),x的取值范围是人这种类型的个体。
个体域可是有限的,也可以是无限的。
二阶逻辑
有了一阶逻辑的概念之后,二阶逻辑水到渠成。假设你要将如下语句翻译成逻辑:
Leibniz Law: “对于任意个体x和y, 只要x和y相等, 那么x,y具有相同的性质”
那么显然,翻译如下:
P(z):z具有性质P。
E(u,v):u和v相等。
那么从而翻译为:
∀ x , y [ E ( x , y ) → ∀ P ( P ( x ) ↔ P ( y ) ] \forall x,y \quad [E(x,y)\rightarrow \forall P(P(x)\leftrightarrow P(y)] ∀x,y[E(x,y)→∀P(P(x)↔P(y)]
看到上面我给出的表示,细心的人应该能够发现,这次量词符号竟然作用在谓词符号上 ∀ P \forall P ∀P,之前我们在一阶谓词中只允许量词作用在个体上,例如 ∀ x P ( x ) \forall x \quad P(x) ∀xP(x)。这就是一阶逻辑和二阶逻辑的区别。
对了,上面的表示非常完美,读者应当细细品味。
其他逻辑系统
模糊逻辑
对于命题逻辑,一个命题要么为真,要么为假,而不存在模糊地带,即是一个二值逻辑。如今为了增强表达能力,当值域大小不止为2时,称为多值逻辑,或模糊逻辑。
参考资料:
https://blog.csdn.net/kyle1314608/article/details/105167193/?utm_medium=distribute.pc_relevant.none-task-blog-baidujs_baidulandingword-0&spm=1001.2101.3001.4242