欢迎来到就算过了一载春秋的博客

不管过了几载春秋,我还是会偶尔想起。

有些狮子不喝咖啡:条件式与合取式的翻译

一、引例

考虑下面这些语句。其中前面两句称为前提,第三句称为结论。合在一起作为一个整体称为是一个论证(argument)。

“所有狮子都是凶猛的。”
“有些狮子不喝咖啡。”
“有些凶猛的动物不喝咖啡。”

\(P(x)\)\(Q(x)\)\(R(x)\)分别为语句“x是狮子”、“x是凶猛的”和“x喝咖啡”。假定论域是所有动物的集合,用量词及\(P(x)\)\(Q(x)\)\(R(x)\)表示上述论证中的语句。

上述语句则可以表示为:

\(\forall x(P(x)\to Q(x))\)

\(\exists x(P(x)\land \neg R(x))\)

\(\exists (Q(x) \land \neg R(x))\)

注意,第二句不能写成\(\exists x(P(x)\to \neg R(x))\)。原因是当x不是狮子时\(P(x)\to \neg R(x)\)总是真的,这样只要有一只动物不是狮子,\(\exists x(P(x)\to \neg R(x))\)就为真,即使所有狮子都喝咖啡也是如此。类似的,第三句也不能写成\(\exists (Q(x) \to \neg R(x))\)

二、规律

在进行与语句到逻辑表达式的翻译时,有时候会在选择翻译为条件式或合取式之间犹豫不决。

比如语句“对每个人x,如果x是班上的学生,那么x学过微积分”。
\(\ S(x)\)表示语句“x在这个班上”,\(C(x)\)表示语句“x学过微积分”,再假设论域为x表示所有人。
语句则表达为\(\forall x (S(x)\to C(x))\),而不能表达为\(\forall x (S(x)\land C(x))\)
后者表达的意思是所有人都是这个班上的学生并且都学过微积分,明显与题意不符。

可以发现,对于“每个、全部”之类的全称语句中,往往是条件式(\(\forall x (A(x)\to B(x))\)
而“存在、某个”之类的存在语句中,往往是合取式(\(\exists x (A(x)\land B(x))\)

❗当然,并不百分百是这样,但第一时间可以这样带入,再琢磨是否符合题意

三、其他示例

这个班上的某个学生去过墨西哥

M(x)表示为x去过墨西哥,S(x)表示为x为这个班上的一个学生,论域为所有人

语句应该表示为\(\exists x(S(x)\land M(x))\)

而不是\(\exists x(S(x)\to M(x))\),它表示当有一个人不在这个班里时也是真的,因为在这种情况下,对这样的x,\(x(S(x)\to M(x)\)就变成\(F\to T\)或者\(F\to F\),两个都是真的。( \(S\to M \equiv \neg S \lor M\)

四、参考

《离散数学及其应用》第七版 1.4 谓词和量词

posted on 2020-12-08 13:23  就算过了一载春秋  阅读(1095)  评论(0)    收藏  举报

导航