如何显示函数始终不可交换

时间:2010-12-02 19:08:40

标签: math proof

我有以下令人烦恼的问题。 我已经实现了以下功能:

function bool less(nat x, nat y) {
    if (y<>0) then
       if (x<>0) then
           return less(x-1,y-1);
       else
           return true;
       end;
    else
       return false;
    end;
end;

如何显示所有x,y以下内容 较少(x,y)和较少(y,x)是不可能的 同一时间?

再见

(c)2010年,Jan Burse,8004Zürich

1 个答案:

答案 0 :(得分:2)

好吧,首先我会请你考虑less(-1, -2)的情况,所以我们必须定义函数在n≥0的范围内。当第一个输入等于第二,它将对两个排序都返回true,所以我们必须假设x≠y。

我会使用矛盾证明。

假设对于某些x和某些y,其中x和y都是≥0且x≠y,则较小的(x,y)和较小的(y,x)都为真。

这意味着当x和y都非零时,你从它们中减去一次n次,直到其中一个为零,首先检查x。当第一个操作数达到零时,该函数返回true;当第二个操作数达到零时,该函数返回false,而第一个操作数为非零。

有两种情况:

  1. x首先达到零。在这种情况下,n = x,因为0 = x - n(1)。
  2. y首先达到零。在这种情况下,n = y,因为0 = y - n(1)。
  3. 根据我们的假设,less(x,y)返回true,意味着函数迭代x次,之后x - x(1)= 0且y - x(1)> 0(因为y≠x,并且函数在手之前没有返回false)。

    类似地,less(y,x)返回true,意味着函数迭代y次,之后y-y(1)= 0并且x-y(1)> 0。 0(与以前相同的原因)。

    这给了我们两个有用的关系:y - x > 0x - y > 0。重新排列:y > xx > y(函数的语义,但我们从函数如何工作的定义中实现了这一点,并将它简化为纯数学,我们可以使用某些公理对)。

    y > xx > y,您可以重新排列为x > xy > y(如果x大于y,那么它大于y大于y的所有内容。y大于x,因此x大于x)。

    这是一个逻辑矛盾,因此我们的假设(它们都是真的)是不正确的。

    因此,通过矛盾证明,当x≠y,并且x,y≥0时,函数less对于less(x,y)和less(y,x)都不能返回true。

    (已经有一段时间了,因为我必须做一个证明(虽然我不得不做一些事情,所以这是一个好习惯)所以我可能有点生疏。如果有人看到错误,请指出来,我会尝试解决它)