我正在阅读Paxos简单的文章,但却被困在P2b的证明部分。
规则P2b的内容:
如果选择了具有值v的提议,则由任何提议者发布的每个更高编号的提议具有值v。
这是Leslie Lamport的证明部分:
为了发现如何满足P2b,让我们考虑如何证明它是成立的。我们假设选择了一些数字为m和值为v的提案,并表明任何以数字n> m发出的提案也具有值v。我们可以通过在n上使用归纳来使证明更容易,因此我们可以证明提议编号为n具有v值的额外假设是每个提案都以m为单位发出。 。 (n - 1)具有值v,其中i。 。 j表示从i到j的数字集。对于选择编号为m的提议,必须有一些由大多数接受者组成的集合C,使得C中的每个接受者都接受它。将此与归纳假设相结合,选择m的假设意味着:
C中的每个接受者都接受了一个数字为m ...(n - 1)的提案,并且任何接受者接受的数字为m ...(n - 1)的提案都具有价值v
所以归纳过程是:
为什么它意味着:
C中的每个接受者都接受了一个数字为m的提案。(n - 1)
我只是无法缩小差距,为什么C中的每个接受者都需要接受一个数字为m ...(n-1)的提案?
P1保证接受者必须接受收到的第一个提议,P2a保证只有具有所选值的更高编号的提议可以被接受者接受,但我只是没有得到隐含声明的要点。
这是整个正确性证明的图解说明。
这里存在矛盾:根据阶段2a消息的规则,这意味着在R处提出的值毕竟必须是X.
这可能看起来像是与Paxos Made Simple论文中的证据截然不同,因为它似乎是矛盾的,并且没有明确的归纳。实际上,这种技术“假设有一个反例,然后在第5步中考虑最小的这种”实际上只是伪装的归纳,而我的经验是,这是一种更容易呈现的方式。如果你喜欢那种东西,将这一步变成明确的归纳是一项有趣的练习。
您问题中提到的集合C是发送阶段2b消息以接受P处的提议的接收器集合。这不一定与在R处发送阶段1b消息的集合相同,但这些集合确实相交,即重要因素。
根据该论文中的语言,很容易挂起细节。我建议改用Understanding Paxos。它更冗长,但是它可以在没有设置符号或上标的情况下遍历方法和原因以及周围问题以实际使用算法。
C中的每个接受者都接受了一个数字为m的提议。(n - 1)因为已经选择了具有值v的提议m,所以必须有一些C由大多数接受者组成,这样C中的每个接受者都接受它,和m ..(n - 1)包含m