title: 谓词在命题逻辑词中的展开方法
date: 2022-10-29
categories: 数学
mathjax: true
tags:
- 离散数学
- 逻辑学
前言
一天,数学家觉得自己已受够了数学,于是他跑到消防队去宣布他想当消防员。
消防队长说:「您看上去不错,可是我得先给您一个测试。」
消防队长带数学家到消防队后院小巷,巷子里有一个货栈,一只消防栓和一卷软管。
消防队长问:「假设货栈起火,您怎么办?」
数学家回答:「我把消防栓接到软管上, 打开水龙头,把火浇灭。」
消防队长说:「完全正确。最后一个问题:假设您走进小巷,而货栈没有起火,您怎么办?」
数学家疑惑地思索了半天,终于答道:「我就把货栈点着。」消防队长大叫起来:「什么?太可怕了,您为什么要把货栈点着?」
数学家回答:「这样我就把问题化简为一个我已经解决过的问题了。」
这个笑话虽然是开玩笑,但也反映了数学思维的解题方法。在学到谓词逻辑的时候,我就在想要是能把谓词转化为命题逻辑词,用与、或、非来判断,该有多方便。
定义
首先给出所有逻辑词的递归定义(只用与、或、非表达)。这些定义书上都有,也易证。
名词 | 符号 | 定义 |
---|---|---|
否定 | \(\neg P\) | 非 |
合取 | \(P\wedge Q\) | 与 |
析取 | \(P\vee Q\) | 或 |
条件 | \(P\rightarrow Q\) | \(\neg P\vee Q\) |
同或 | \(P\leftrightarrow Q\) | \(\left(P\wedge Q\right)\vee\left(\neg P\wedge \neg Q\right)\) |
与非 | \(P\uparrow Q\) | \(\neg P\vee\neg Q\) |
或非 | \(P\downarrow Q\) | \(\neg P\wedge\neg Q\) |
条件否定 | \(P\mapsto Q\) | \(P\wedge\neg Q\) |
异或 | \(P\nabla Q\) | \(\left(P\wedge\neg Q\right)\vee\left(\neg P\wedge Q\right)\) |
任意 | \(\forall P\in\left\{P_i\right\}\) | \(\bigwedge P_i\) |
存在 | \(\exists P\in\left\{P_i\right\}\) | \(\bigvee P_i\) |
接下来我们做一些约定:
用分号「 \(;\) 」分隔表达式,效果等同于合取。
这点数学上广泛使用的做法是用逗号「 \(,\) 」分隔,例如:
x、y是实数,并且x大于0
\[x,y\in\mathbb R,x>0 \]这里可以看出缺点是分隔两个变量的逗号和分隔表达式的逗号任意混淆,看不清,所以这里我们先使用分号代替:
\[x,y\in\mathbb R;x>0 \]谓词公式改写
谓词公式改写
接下来我们改写只包含一个谓词的公式:
自然语言:对于任意实数x,x一定大于0
只用逻辑词的写法: \(\forall x\in\mathbb R\to x>0\)
这里用「条件」连接了前提和推论,从直观上看是没问题的,如果分类讨论,会发现也没问题:
如果x不是实数:不在命题讨论范围内,与命题不冲突;假→真=假→假=真
如果x是大于0的实数:命题成立,与命题不冲突;真→真=真
如果x是小于0的实数:命题不成立,与命题冲突;真→假=假
可见相同,存在量词也是一样的,不多证明了。
如果是两个谓词呢,先不考虑无限集:
对于任意 \(x\in\left\{x_1,x_2,x_3\right\}\) ,存在 \(y\in\left\{y_1,y_2,y_3\right\}\) ,可以使 \(x>y\) 。
展开可得:
\[\begin{aligned} &\left(x_1>y_1并且x_2>y_1并且x_3>y_1\right)\\ 或&\left(x_1>y_2并且x_2>y_2并且x_3>y_2\right)\\ 或&\left(x_1>y_3并且x_2>y_3并且x_3>y_3\right) \end{aligned}\]将其换为数学符号,并且提取相同的项可得:
\[\bigvee_j\left(\left(\bigwedge_i x_i\right)\wedge y_j\right)\to x>y \]显然内层括号里面就是任意的符号:
\[\forall x\exists y\Leftrightarrow\bigvee_j\left(\forall x;y_j\right) \]同理如果是先存在后任意:
\[\exists x\forall y\Leftrightarrow\bigwedge_j\left(\exists x;y_j\right) \]如果是两个任意:
\[\forall x\forall y\Leftrightarrow \bigwedge_j\left(\forall x;y_j\right)\Leftrightarrow \left(\bigwedge_ix_i\right)\wedge\left(\bigwedge_jy_j\right)\Leftrightarrow \forall x,y\Leftrightarrow \forall y\forall x\]这也是为什么发现经常多个变量合在一个任意里,还有如果没有任意的多个并列条件,可以交换先后(因为它们默认都是任意,而任意之间可以交换)。
如果是两个存在:
\[\exists x\exists y\Leftrightarrow \bigvee_j\left(\exists x;y_j\right)\Leftrightarrow \bigvee_{i,j}\left(x_i\wedge y_j\right)\Leftrightarrow \exists x,y\Leftrightarrow \exists y\exists x\]同理,两个存在之间也可以合并和交换
结论
综上可得任意和存在同时出现时的性质:多个任意和存在内部可交换、合并,两者之间不行
最后以一个命题结尾:
由盖住的定义:
设任意集合A上有偏序关系,若a、b属于A,a不先于b、a不等于b,且A中不存在其他元素z,使得a不先于z且z不先于b,则称元素b盖住a
可写为(设条件逻辑符优先级最低):
\[b盖住a|\left<A,\preccurlyeq\right>;a,b\in A;a\neq b;a\preccurlyeq b;\nexists z\in A\to a\preccurlyeq z\preccurlyeq b \]满足上式的a、b,即为b盖住a
标签:right,exists,词中,neg,Leftrightarrow,谓词,命题逻辑,forall,left From: https://www.cnblogs.com/pokersang/p/17964179