Чому можна вважати, що властивість CP зберігається, коли акцептор a0 проголосував за v в раунді k? Здається, ми використовуємо математичну індукцію, отже, на чому лежать підстава, індуктивна гіпотеза та індуктивні кроки?
Ви дивитесь на екземпляр сильної індукції . У простій індукції ви припускаєте, що властивість має значення і доводить, що вона має значення n = m + 1 . У сильній індукції ви припускаєте, що властивість має значення ∀ n : n < m і доводить, що вона має значення n = m + 1 .n=mn=m+1∀n:n<mn=m+1
Основа (я вважаю): . Тобто нульовий раунд (оскільки раунди починаються з 1). Це тривіально вірно, тому, ймовірно, це було не вказано прямо.j=0
Індуктивний крок : Припустимо, ; довести C P ( v ; j + 1 ), де j < i .∀n,n≤j:CP(v;n)CP(v;j+1)j<i
Вірите чи ні, це лише доказ ескіз . Справжнє підтвердження - у документі Парламент за сумісництвом. (Одні вважають папір криптовалютою, інші вважають її жартівливою.)
Як це виходить?
На мою думку, доказ правильності випадку покладається (рекурсивно) на випадки k < j < i та j = k .j<kk<j<ij=k
Отже, як ми можемо укласти випадок не довівши j = k повністю (а саме, пропустивши підрядок j = k, де V містить більше одного значення)?j<kj=kj=kV
j<kk<jj=k
Загальні поради щодо доказів Лампорта.
Лампорт використовує техніку ієрархічних доказів. Наприклад, структура доказу на сторінках 7-8 виглядає приблизно так:
- ∀n,n≤j:CP(v;n)CP(v;j+1)j<i
- Спостереження 1
- Спостереження 2
- Спостереження 3
- k=argmax(...)
- випадок k = 0
- випадок k> 0
- випадок k <j
- випадок k = j
- випадок j <k
Лампорт прагне використовувати інший тип ієрархії. Він доведе більш простий алгоритм, а потім доведе, що більш складний алгоритм відображає (або "розширює" ) простіший алгоритм. Здається, це не відбувається на сторінці 18, але на це варто дивитись. (Доказ на сторінці 18 видається модифікацією доказу сторінок 7-8; а не розширенням .)
Лампорт багато в чому покладається на сильну індукцію ; він також схильний мислити через множини замість чисел. Таким чином, ви можете отримати порожні набори, де інші мали б нулі або нулі; або створити спілки, де інші мали б доповнення.
ij<i
a
rnd[a]iai
Це безумовно розтягувач мозку, щоб довести подібні системи.
(оновлення) : перерахуйте інваріантів; Лампорт використовує багато інваріантів при розробці та його докази. Іноді вони розкидані по всім доказам; іноді вони присутні лише у перевіреному машиною доказі. Причина щодо кожного інваріанта; чому це там? Як це взаємодіє з іншими інваріантами? Як кожен крок у системі підтримує цю інваріантність?
Повне розкриття : я не читав Fast Paxos, поки мене не попросили відповісти на це запитання; і лише дивився на цитовані сторінки. Я інженер, а не математик; моя щітка з роботою Лампорта заснована виключно на необхідності правильно вигадувати та підтримувати широкомасштабні розподілені системи.
Моя відповідь значною мірою спирається на мій досвід роботи Лампорта. Я прочитав кілька протоколів і доказів Лампорта; Я професійно підтримую систему на основі паксос; Я написав і перевірив протокол консенсусу з високою пропускною здатністю і знову професійно підтримую систему, засновану на ньому (я намагаюся дозволити моїй компанії дозволити мені публікувати документ). Я вже співпрацював в незначній роботі з Лампорт, в якому я зустрічався з ним тричі (документ ще знаходиться на розгляді експертної оцінки.)