Math 如何证明函数总是不可交换的

Math 如何证明函数总是不可交换的,math,proof,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; 函数bool less

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

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;
函数bool less(nat x,nat y){
如果(y0)那么
如果(x0)那么
返回较少(x-1,y-1);
其他的
返回true;
结束;
其他的
返回false;
结束;
结束;
我怎样才能在下面的x,y中显示出来呢 在同一时刻,不可能使用less(x,y)和less(y,x) 同一时间


拜拜< /P> < p>嗯,首先我想让你考虑<代码>少(-1,-2)< /> >,所以我们必须定义函数在n的边界上。≥ 0.另外,当第一个输入等于第二个输入时,两个订单都将返回true,因此我们必须假设x≠ y

我会用矛盾来证明

假设对于一些x和一些y,其中x和y都是≥ 0和x≠y、 less(x,y)和less(y,x)都是真的

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

这有两种情况:

  • x首先到达零,在这种情况下,n=x,因为0=x-n(1)
  • y首先到达零,在这种情况下,n=y,因为0=y-n(1)
  • 根据我们的假设,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(原因与之前相同)

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

    y>x
    x>y
    中,您可以将其重新排列为
    x
    y>y
    (如果x大于y,则它大于y大于的所有事物。y大于x,因此x大于x)

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

    因此,通过矛盾证明,当x≠ y、 和x,y≥ 0时,函数
    less
    不能同时为less(x,y)和less(y,x)返回true


    (我已经有一段时间没有做过证明了(尽管接下来我会做一些证明,这是一个很好的练习),所以我可能有点生疏。如果有人看到错误,请指出,我会尝试修复它)

    这应该是在一种特定的编程语言中吗?这取决于确切的语义。如果它应该是一种通用算法,为什么编程看起来很详细?如果
    x
    y
    都是负数,递归就不会终止。x和y应该是nat。所以它们的范围应该是0…max。但是你也可以查看针对0…inf范围提出的问题,这最终会使问题变得更简单。这里提供了有关编程的详细信息,因为我最初提出的数学问题被拒绝在编程相关问题论坛的范围之外。但我当然对计算感兴趣,否则我不会提出问题。好的,我明白了你正在把代码符号减少到数学符号>,从数学上你知道y>x和x>y是不可能的。实际上我想避免这种情况。难道不可能少用符号进行推理,而不回归到。再难一点,我不知道这在逻辑上是否合理(我可能是绕过了“否”或“一点”),但假设步骤与以前相同。
    less(x,y)
    意味着
    less(0,x-y)
    意味着
    less(0,y-x)
    意味着
    less(0,y-x)
    (a-b)=-(b-a)
    。如果(x-y)是一个自然数(大于或等于零),那么(y-x)就不是(
    (x-y)=(y-x)
    其中
    x-y
    被定义为一个自然数。)反之亦然。这违反了我们的假设,因此用矛盾来证明。(这有点弱,但注释框的限制,加上我做了这样的证明后的一段时间……但我认为它可能会起作用)同样在我的原始证明中,我阐明了我是如何知道
    x>y
    y>x
    是一个逻辑矛盾的。事实上,我非常喜欢你的证明。此外,使用及物性来表示矛盾对我来说也很好。但我想选择一些证明,因为我想看看在证明所提出的问题时有什么可能所以我更多的是向普通观众演讲,不要停止提出额外的证据,看看方法的广度。这是证据的一个小问题,同样的东西可以有不同的证据!