Por que podemos assumir que a propriedade CP mantida quando o aceitador a0 votou em v na rodada k? Parece que estamos usando indução matemática, portanto, quais são as bases, hipóteses indutivas e etapas indutivas?
Você está vendo um exemplo de forte indução . Na indução simples, você assume que a propriedade vale para e prova que ela vale para n = m + 1 . Na indução forte, você assume que a propriedade vale para ∀ n : n < m e prova que ela vale para n = m + 1n=mn=m+1∀n:n<mn=m+1 .
Base (acredito): . Ou seja, a rodada nula (já que as rodadas começam em 1). Isso é trivialmente verdade, e é provavelmente por isso que não foi afirmado explicitamente.j=0
Etapa indutiva : Suponha ; provar C P ( v ; j + 1 ) onde j < i .∀n,n≤j:CP(v;n)CP(v;j+1)j<i
Acredite ou não, este é apenas um esboço de prova . A prova real está no documento do Parlamento em Tempo Parcial . (Alguns consideram o papel enigmático, outros o consideram engraçado.)
Como isso é obtido?
Na minha opinião, a prova de correcção do caso depende (de forma recursiva) sobre aqueles de casos de k < j < i e j = k .j<kk<j<ij=k
Portanto, como podemos concluir o caso sem provar primeiro j = k completamente (ou seja, faltando a subcaixa de j = k onde V contém mais de um valor)?j<kj=kj = kV
Isso é novamente forte indução, portanto o caso se baseia nos casos de k < j e j = k , mas através da hipótese de indução , a saber, da rodada anterior de Paxos.j < kk < jj = k
Dicas gerais para as provas de Lamport.
Lamport usa uma técnica de provas hierárquicas. Por exemplo, a estrutura da prova nas páginas 7-8 é mais ou menos assim:
- Suponha ; provar C P ( v ; j + 1 ) onde∀n,n≤j:CP(v;n)CP(v;j+1) .
j<i
- Observação 1
- Observação 2
- Observação 3
- k=argmax(...)
- caso k = 0
- caso k> 0
- caso k <j
- caso k = j
- caso j <k
Lamport tende a usar outro tipo de hierarquia. Ele provará um algoritmo mais simples e depois provará que um algoritmo mais complexo mapeia (ou "estende" ) o algoritmo mais simples. Isso não parece estar acontecendo na página 18, mas é algo a se observar. (A prova na página 18 parece ser uma modificação da prova nas páginas 7-8; não uma extensão dela.)
Lamport depende fortemente de forte indução ; ele também tende a pensar em termos de conjuntos em vez de números. Portanto, você pode obter conjuntos vazios onde outros teriam zeros ou nulos; ou estabelecer sindicatos onde outros teriam acréscimo.
A comprovação da correção dos sistemas de passagem de mensagens assíncronas precisa de uma visão onisciente do sistema em relação ao tempo . Por exemplo, ao considerar ações na rodada , lembre-se de que as ações de uma rodada j < i podem não ter ocorrido temporalmente!ij<i . E, no entanto, Lamport afirma esses eventos potencialmente futuros no passado.
Os sistemas e provas de Lamports tendem a ter uma variável ou conjunto de variáveis que só podem seguir uma direção; apenas incrementando números e adicionando apenas a conjuntos. Isso é usado extensivamente em suas provas. Por exemplo, na página 8, Lamport mostra como ele neutralizou a capacidade futura de dar outro voto:a
... Como definiu para i ao enviar uma mensagem, a não poderia posteriormente ter votado em nenhuma rodada numerada menos que i ....rnd[a]iai
Definitivamente, é um esticador de cérebro provar esses tipos de sistemas.
(atualização) : Liste os invariantes; Lamport usa muitos invariantes ao desenvolver e suas provas. Às vezes, eles estão espalhados pelas provas; Às vezes, eles estão presentes apenas na prova verificada pela máquina. Razão sobre cada invariante; porque esta ai? Como ele interage com os outros invariantes? Como cada etapa do sistema mantém essa invariante?
Divulgação completa : eu não tinha lido o Fast Paxos até que me pediram para responder a essa pergunta; e apenas olhou para as páginas citadas. Sou engenheiro e não matemático; meu contato com o trabalho de Lamport se baseia puramente na necessidade de inventar e manter corretamente sistemas distribuídos em larga escala.
Minha resposta depende muito da minha experiência com o trabalho de Lamport. Eu li vários protocolos e provas de Lamport; Eu mantenho profissionalmente um sistema baseado em paxos; Escrevi e provei um protocolo de consenso de alto rendimento e, novamente, mantenho profissionalmente um sistema baseado nele (estou tentando fazer minha empresa me permitir publicar um artigo). I têm colaborado em um papel insignificante com Lamport, em que me encontrei com ele três vezes (o papel ainda está pendente de revisão por pares).
Lamport tends to use another type of hierarchy. He'll prove a simpler algorithm, and then prove that a more complex algorithm maps onto (or "extends") the simpler algorithm
, portanto, poderia mostrar um exemplo ou citar um artigo relacionado? Além disso, seus trabalhos têm edições pré-impressas (comercialmente) não classificadas?