Perché possiamo supporre che il CP di proprietà sia detenuto quando l'accettore a0 ha votato per v nel round k? Sembra che stiamo usando l'induzione matematica, quindi quali sono le basi, l'ipotesi induttiva e i passaggi induttivi?
Stai guardando un esempio di forte induzione . Nella semplice induzione si assume che la proprietà valga per e si dimostra che valga per n = m + 1 . In forte induzione si assume che la proprietà valga per ∀ n : n < m e si dimostra che valga per n = m + 1 .n=mn=m+1∀n:n<mn=m+1
Base (credo): . Cioè, il round null (poiché i round iniziano da 1). Questo è banalmente vero, motivo per cui non è stato dichiarato esplicitamente.j=0
Fase induttiva : supponiamo ; dimostrare C P ( v ; j + 1 ) dove j < i .∀n,n≤j:CP(v;n)CP(v;j+1)j<i
Che ci crediate o no, questo è solo uno schizzo di prova . La vera prova è nel documento del Parlamento a tempo parziale. (Alcuni considerano la carta criptica, altri la considerano divertente.)
Come si ottiene questo?
Secondo me, la prova di correttezza del caso si basa (ricorsivamente) su quelli dei casi di k < j < i e j = k .j<kk<j<ij=k
Pertanto, come possiamo concludere il caso senza prima provare completamente j = k (ovvero, mancando la sottocassa di j = k dove V contiene più di un valore)?j<kj=kj=kV
Questa è di nuovo una forte induzione, quindi il caso si basa sui casi di k < j e j = k , ma attraverso l'ipotesi di induzione , vale a dire dal precedente round di Paxos.j<kk<jj=k
Suggerimenti generali per le prove di Lamport.
Lamport utilizza una tecnica di prove gerarchiche. Ad esempio, la struttura della prova alle pagine 7-8 è in qualche modo simile a questa:
- Supponiamo ; dimostrare C P ( v ; j + 1 ) dove j < i .
∀n,n≤j:CP(v;n)CP(v;j+1)j<i
- Osservazione 1
- Osservazione 2
- Osservazione 3
- k=argmax(...)
- caso k = 0
- caso k> 0
- caso k <j
- caso k = j
- caso j <k
Lamport tende a usare un altro tipo di gerarchia. Dimostrerà un algoritmo più semplice, e quindi dimostrerà che un algoritmo più complesso mappa (o "estende" ) l'algoritmo più semplice. Questo non sembra accadere a pagina 18, ma è qualcosa da cercare. (La prova a pagina 18 sembra essere una modifica della prova a pagine 7-8; non una sua estensione .)
Lamport si basa fortemente su una forte induzione ; tende anche a pensare in termini di set anziché di numeri. Quindi potresti ottenere set vuoti in cui gli altri avrebbero zeri o null; o impostare sindacati in cui altri avrebbero avuto un'aggiunta.
La dimostrazione della correttezza dei sistemi di trasmissione di messaggi asincroni richiede una visione onnisciente del sistema rispetto al tempo . Ad esempio, quando si considerano le azioni nel round , tenere presente che le azioni per alcuni round j < i potrebbero non essere avvenute nel tempo! . Eppure Lamport afferma questi eventi potenzialmente futuri al passato.ij<i
I sistemi e le prove di Lamports tendono ad avere una variabile o un insieme di variabili che possono andare solo in una direzione; incrementando solo i numeri e aggiungendo solo ai set. Questo è ampiamente utilizzato nelle sue prove. Ad esempio, a pagina 8 Lamport mostra come ha castrato la futura capacità di di esprimere un altro voto:a
... Poiché ha impostato su i al momento dell'invio di un messaggio, a non avrebbe potuto successivamente votare in alcun turno numerato meno di me ....rnd[a]iai
È sicuramente un allungamento del cervello per dimostrare questo tipo di sistemi.
(aggiornamento) : elenca gli invarianti; Lamport usa molti invarianti durante lo sviluppo e le sue prove. A volte sono sparsi in tutte le prove; a volte sono presenti solo nella prova controllata dalla macchina. Motivo di ogni invariante; perché è lì? Come interagisce con gli altri invarianti? In che modo ogni passaggio nel sistema mantiene questo invariante?
Informativa completa : non avevo letto Fast Paxos fino a quando non mi è stato chiesto di rispondere a questa domanda; e guardava solo le pagine citate. Sono un ingegnere e non un matematico; il mio pennello con il lavoro di Lamport si basa esclusivamente sulla necessità di inventare e mantenere correttamente i sistemi distribuiti su larga scala.
La mia risposta si basa fortemente sulla mia esperienza con il lavoro di Lamport. Ho letto diversi protocolli e prove di Lamport; Mantengo professionalmente un sistema basato su paxos; Ho scritto e dimostrato un protocollo di consenso ad alto rendimento, e ancora una volta mantengo professionalmente un sistema basato su di esso (sto cercando di convincere la mia azienda a consentirmi di pubblicare un documento). Io ho collaborato a un documento insignificante Lamport, nel quale mi sono incontrato con lui tre volte (la carta è ancora in attesa di revisione tra pari.)