一、引例
考虑下面这些语句。其中前面两句称为前提,第三句称为结论。合在一起作为一个整体称为是一个论证(argument)。
“所有狮子都是凶猛的。” “有些狮子不喝咖啡。” “有些凶猛的动物不喝咖啡。”
令(P(x))、(Q(x))和(R(x))分别为语句“x是狮子”、“x是凶猛的”和“x喝咖啡”。假定论域是所有动物的集合,用量词及(P(x))、(Q(x))和(R(x))表示上述论证中的语句。
上述语句则可以表示为:
(forall x(P(x) o Q(x)))
(exists x(P(x)land eg R(x)))
(exists (Q(x) land eg R(x)))
注意,第二句不能写成(exists x(P(x) o eg R(x)))。原因是当x不是狮子时(P(x) o eg R(x))总是真的,这样只要有一只动物不是狮子,(exists x(P(x) o eg R(x)))就为真,即使所有狮子都喝咖啡也是如此。类似的,第三句也不能写成(exists (Q(x) o eg R(x)))
二、规律
在进行与语句到逻辑表达式的翻译时,有时候会在选择翻译为条件式或合取式之间犹豫不决。
比如语句“对每个人x,如果x是班上的学生,那么x学过微积分”。
用( S(x))表示语句“x在这个班上”,(C(x))表示语句“x学过微积分”,再假设论域为x表示所有人。
语句则表达为(forall x (S(x) o C(x))),而不能表达为(forall x (S(x)land C(x)))
后者表达的意思是所有人都是这个班上的学生并且都学过微积分,明显与题意不符。
可以发现,对于“每个、全部”之类的全称语句中,往往是条件式((forall x (A(x) o 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) o M(x))),它表示当有一个人不在这个班里时也是真的,因为在这种情况下,对这样的x,(x(S(x) o M(x))就变成(F o T)或者(F o F),两个都是真的。( (S o M equiv eg S lor M) )
四、参考
《离散数学及其应用》第七版 1.4 谓词和量词