Home POD 0008: Safety Argument: Axioms, Lemmas, and Proof ObligationsDownload PDF

POD 0008: Safety Argument: Axioms, Lemmas, and Proof Obligations

Abstract

This record fixes the model paxos-odin is argued against, the definitions the argument uses, and the theorem and lemmas that connect Lamport's conditions B1, B2 and B3 to the procedures in src/. It is the reference the book's chapter "The Safety Argument" expands with full proofs; here proofs are abbreviated and each lemma points at the code that discharges its premise. The record closes with the obligation-to-code map, the list of what is not proved, and two key insights surfaced by the analysis: the pre-durable Accept exception requires the candidate's own promise to be durable, and a stop sign seals at release rather than at choice, meaning any value chosen by the core above the seal is abandoned rather than prevented.

Status and Implementation Boundary

This is a committed paper argument over the implementation, not a machine-checked proof. The agreement argument concerns durable votes and decisions released only after their required writes are confirmed. Its induction is over decision events, including repeated events at one node, rather than over the set of nodes.

For B3, a complete read quorum is necessary before selection. Additional valid reports may contribute to the selected value. recovery_ready then freezes that selection before any phase-two proposal; retries reuse it. A later losing vote cannot contradict a known decision, whereas two reported decisions with different values are an error. Chunk-relative indexing must preserve this evidence until resolution finishes; POD 0009 records the boundary and retry tests.

Axioms

Definitions

Theorem and Lemmas

Fix one decree 𝑠 unless stated otherwise. Full proofs are in the book chapter; each entry here gives the statement, the procedures that discharge it, and the shape of the argument.

The Synod theorem

The multi-decree log

Durability

Rotating ownership

Stop signs and contiguity

Obligation-to-Code Map

ObligationProceduresTests and oracles
B1
(Lemmas 3, 11)
ballot_make, start_campaign, start_revocation, ownership_ballot, on_accept, send_accepttest_ballot_ordering, ownership_three_owners_propose_concurrently, simulator vote oracle
B2
(Lemma 1)
membership_inittest_membership_validation, review_negative_quorums_and_learner_campaign, review_flexible_quorums_and_window_reuse
B3
(Lemmas 4, 6, 7, 12)
on_prepare, on_promise, on_promise_range, maybe_resolve_chunk, resolve_chunk, promise_boundedtest_lamport_b3_max_vote_rule, election_matrix_preserves_chosen_values, ownership_revocation_keeps_a_seen_vote, review_multichunk_recovery_and_retry_progress, simulator AGREEMENT, VALIDITY
Votes respect promises
(Lemma 2)
on_accept, send_accept, ledger_apply, ledger_replay_foldsimulator PROMISE REGRESSION, VOTE BELOW PROMISE; node_assert_valid
Decided implies chosen
(Corollary 1)
on_accepted, record_commitreview_duplicate_acknowledgements_do_not_make_a_quorum, review_missing_proposal_is_error, test_three_node_cluster_agreement
Window and fences
(Lemmas 5, 8)
claim_live, ledger_claim, quorum_fences, resolve_chunk, become_leaderreview_recovery_preserves_fences_across_chunks, review_snapshot_preserves_votes_above_anchor, review_replay_reuses_certified_trimmed_vote
D1
(Lemmas 9, 10)
effects_messages_slice, effects_reset, effects_confirm_writes_durable, pre_durable_next, node_restoretest_effects_power_loss_barrier_flag, test_pre_durable_messages_iterator, test_host_managed_gate, test_node_restore_and_recovery, simulator crash points, CONVERGENCE
Ownership
(Lemmas 11 to 14)
owner_of, propose_owned, skip_idle_slots, start_revocation, queue_resubmit, drain_resubmitsownership_idle_owners_skip, ownership_revokes_a_crashed_owner, ownership_revoked_suggestion_is_resubmitted, simulator --ownership
S1
(Lemma 15)
replicated_log_is_sealed, replicated_log_propose, replicated_log_abandon_above_seal, replicated_log_step_checked, replicated_log_init_from_stoptest_replicated_log_stop_sign_seals_epoch, review_stop_seal_restore_and_completed_history, reconfiguration_cluster_handover_rejects_old_epoch, review_out_of_order_chosen_stop_blocks_proposals, the seal_expect_nothing_after oracle of every reconfiguration_sim_* scenario
L1
(Lemma 16)
emit_contiguous, record_commit, learner_learn_chosentest_learner_contiguous_release, review_leader_fetches_decisions_from_ahead_follower, simulator CONTIGUITY

What Is Not Proved

References