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).