为什么我们可以假定在接受者a0在第k轮中对v投票时拥有财产CP?似乎我们正在使用数学归纳法,因此,基础,归纳假设和归纳步骤是什么?
您正在查看一个强烈的归纳实例。在简单归纳法中,您假定该属性对成立,并证明它对。在强归纳法中,您假定该属性对成立,并证明它对。Ñ = 米+ 1 ∀ Ñ :Ñ < 米Ñ = 米+ 1n=mn=m+1∀n:n<mn=m+1
基础(我相信):。即,空回合(因为回合从1开始)。这是微不足道的,这可能就是为什么没有明确说明的原因。j=0
归纳步骤:假设;证明其中。Ç P (v ; Ĵ + 1 )Ĵ < 我∀n,n≤j:CP(v;n)CP(v;j+1)j<i
信不信由你,这只是一个证明草图。真正的证明在兼职议会文件中。(有些人认为纸是神秘的,其他人则认为它很幽默。)
如何获得?
在我看来,情况的正确性证明(递归)依赖于且。k < j < i j = kj<kk<j<ij=k
因此,如何在不首先证明的情况下就得出情况(即,缺少包含多个值的情况)?j = k j = k Vj<kj=kj=kV
这再次是强归纳法,因此情况确实依赖于和,但是通过归纳假设,即来自先前的Paxos回合。k < j j = kj<kk<jj=k
Lamport证明的一般提示。
Lamport使用分层证明的技术。例如,第7-8页上的证明的结构看起来像这样:
- 假设 ; 证明其中。
Ç P (v ; Ĵ + 1 )Ĵ < 我∀n,n≤j:CP(v;n)CP(v;j+1)j<i
- 观察1
- 观察2
- 观察3
- k=argmax(...)
- 情况k = 0
- 情况k> 0
Lamport倾向于使用另一种层次结构。他将证明一个更简单的算法,然后证明一个更复杂的算法映射到(或“扩展”)该更简单的算法。在第18页上似乎没有发生这种情况,但是需要注意。(第18页上的证明似乎是对7-8页上的证明的修改;不是对它的扩展。)
Lamport严重依赖强感应;他也倾向于根据集合而不是数字来思考。因此,您可能会得到空集,而其他集将为零或空。或在其他人可以加入的地方设置工会。
要证明异步消息传递系统的正确性,需要对系统的时间有一个无所不知的认识。例如,在第轮中考虑动作时,请记住,对于第轮而言,动作可能不是暂时发生的!。兰珀特却以过去时态陈述了这些潜在的未来事件。ij<i
Lamports系统和证明倾向于具有一个或一组变量,这些变量或变量只能沿一个方向行进。仅递增数字且仅添加到集合。这在他的证明中被广泛使用。例如,第8页兰波特显示他如何阉割的未来的能力投一票:a
...由于它在发送消息时将设置为,因此随后无法在任何小于 ...的回合中投票。rnd[a]iai
肯定是证明这些系统的大脑。
(更新):列出不变量;Lamport在开发和证明时会使用很多不变式。它们有时散布在整个样张中。有时它们仅出现在机器检查的证明中。每个不变量的原因;为什么在那儿?它如何与其他不变式相互作用?系统中的每个步骤如何保持不变?
全面披露:直到被要求回答这个问题,我才读过Fast Paxos。只看了引用的页面。我是工程师而不是数学家;我对Lamport所做的工作完全是基于正确发明和维护大规模分布式系统的需求。
我的答案在很大程度上取决于我对Lamport工作的经验。我已经阅读了兰珀特的几种协议和证明。我专业地维护基于paxos的系统;我已经编写并证明了高通量共识协议,并且再次专业地维护了基于该协议的系统(我正试图让我的公司允许我发表论文)。我曾与Lamport合作撰写过微不足道的论文,其中有三次与他会面(该论文尚待同行评审。)