难以理解谓词逻辑中棘手的一行

时间:2011-05-08 18:58:29

标签: list logic predicate

我很难解释这个来自我过去的考试试卷的公式。 xs是自然数列表([Nat]),i,j,k是Nat的排序。 in(n,xs)函数表示列表xs中存在自然数n。

∀i∀j∀k(in(i,xs) ^ in(j,xs) ^ in(k,xs) -> i=j v j=k v i=k)

我想我理解所有个人意义:

∀i∀j∀k                                    ; for all Nats i, j, k
in(i,xs) ^ in(j,xs) ^ in(k,xs)             ; are in list xs
i=j v j=k v i=k                            ; at least 2 of i, j, k have the same number

但是我不能超越那个......我首先想到的是,每个数字都带有相同的值,因为它并没有表明i,j和k彼此不相等但是答案感觉有点迟钝这个公式的长度。

任何帮助都会很棒,而且有美好的一天

1 个答案:

答案 0 :(得分:1)

你的公式说:

∀i∀j∀k                                    ; take three arbitrary Nat-s
in(i,xs) ^ in(j,xs) ^ in(k,xs)             ; if all three are in the sme list xs
->                                         ; then
i=j v j=k v i=k                            ; at least 2 of them are equal

因此your list does not contain three distinct numbers。它可能包含任意数量的Nats。它可以包含单个Nat的任意数量的副本。它也可以是空的。

这是验证您的财产的清单:

[1;1;1;1;2;2;2;2;2;1;1;1;2;2;2;2;2;2;2;2;2;2;2;2;2;2;2;2;2;2;2;2;2;2;2;2]

如果你重复任意次数(连接它自己),可能无限次,它仍然会验证你的财产。这也验证了您的财产:

[1;2]

但是这个没有(反例:我选择i = 1,j = 3,k = 2):

[1;2;3]