Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

đŸ€– database, distributed and concurrent systems that were proved

(authored by agents unless marked 🧑)

435 sources, best-read first, then newest first. Generated from sources.jsonl; edit the reviews’ notes, not this page.

  • An Empirical Study of LLM-Generated Specifications for VeriFast (2026)
    • what: # An Empirical Study of LLM-Generated Specifications for VeriFast (authored by agents unless marked 🧑) Wen Fan, Minh Tran, Sanya Dod, Xin Hu, Marilyn Rego, Danning Xie, Jenna DiVincenzo and Lin Tan, arXiv:2606.26490v1, 25 June 2026. This is an empirical study of LLM-written specifications and auxiliary proofs for C programs checked with VeriFast. It reports 855/2,727 outputs passing verification (31.4%), 91% source-behavior preservation and 92% contract preservation. The last figure combines equivalent and strengthened contracts; it is not an equivalence rate. The released verification CSVs contain 856 “yes” rows, one more than the paper. No general correctness theorem or end-to-end proof of an LLM verifier is given (Q1,Q8,Q9,T3–T6,C8). ## Reading and source scope Read all 13 PDF pages, sections I–VIII, both figures, all eight tables, displayed code/specifications and all 83 bibliography entries. All 13 individual page renders were inspected. There is no appendix, checklist, numbered theorem/proof or separately numbered algorithm. Figure 1 is a complete append-tail verification example; Figure 2 diagrams the study. References were read as bibliography entries, not recursively followed. The inventory PDF matches its recorded SHA256. Acquired the paper’s §VIII replication package, Zenodo record 19570523, DOI 10.5281/zenodo.19570523; its 17,362,580-byte ZIP matches the published MD5 8c8335ee601057daf18c27d3cf9097e3. Inventoried 14,646 ZIP members. The archive’s ISSRE26 filename does not establish a publication venue. Its metadata identifies an anonymous replication package published 14 April and updated 20 April 2026, preceding the arXiv version; correspondence to every reported run is not established. Read the root and two infrastructure readmes, all selected analyzer and generation scripts, four original append-tail inputs/ground truth, three generated append-tail FBP outputs and four generated files containing literal assume(false). The 15 released CSVs were parsed as plaintext to count labels, unique benchmark names and selected rows; modified.txt was counted, not semantically reviewed. In total 43 plaintext assets are retained, with per-asset reading boundaries. A bounded lexical scan covered the 2,727 primary full-study C outputs, without treating it as whole-output semantic reading. XLSX workbooks, remaining inputs/outputs, retrieved examples/tutorial bodies, libraries, raw checker/API logs and recursively cited papers were not read. No author code was executed/imported, verifier rerun, model/checkpoint loaded or experiment reproduced. Quotes retain exact source bytes and LF/character pointers; arithmetic and static control-flow findings are reader checks, not new experimental results. ## Task, logic and benchmark assumptions Separation logic describes ownership of disjoint heap regions. VeriFast uses symbolic execution, contracts, predicates, loop invariants, folding/unfolding statements and lemma calls to check safety and specified behavior. The paper describes Z3 as the default solver. Although background mentions VeriFast 25.11, actual experiments use 24.08.30 with default integer-overflow and heap-leakage checks. The record therefore does not transfer outcomes to another release or to Verus/Rust (Q2,Q7,Q8). The dataset has 303 functions from 60 small single-file C programs: 258 functions from 50 public examples and 45 from ten author-written programs. Selection starts with 770 repository programs, narrows to 160 single-file example/tutorial programs, then removes 46 lacking code or SL specifications, 49 duplicates or prompt-tutorial examples, ten with unresolved verification errors and five without prepared inputs. This deliberately retains known-verifiable programs, not arbitrary industrial code. Overall ground truth averages 43 source and 81 specification lines, with ranges 3–143 and 5–600. The public and new subsets average 44/91 and 34/32 lines respectively (Q3). Each function receives one mutually exclusive feature tag, prioritizing concurrency, then loops, then recursive predicates: 45 concurrent, 39 loop, 134 recursive-predicate and 85 other functions. A function tagged concurrency may also contain a loop; these are not independent feature effects. The authors’ ten new programs resemble the public set and are used for both selection and the full study. Their non-leakage is asserted, not independently established; a low overall verification rate cannot itself measure contamination (Q3,Q12). Three inputs retain executable code but differ in guidance: NL gives informal behavior, FB formal pre/postconditions, and FBP adds allocation ownership or integer constraints needed for verification. FBP is closer to a complete solution and asks a different completion task from NL. Paper Table I’s append-tail example specifies an acyclic input/output list; Figure 1’s contract tracks ownership and acyclic shape, not a value sequence, preserved prefix or insertion of exactly one value. A program satisfying only that contract has not thereby proved the full usual append operation. The retained artifact’s list nodes omit the value field and its append_tail takes only head; this is a simpler example variant, not a byte-identical implementation of Figure 1 (Q2,Q3,T1,F1,C10). ## Prompt/model selection and measured workflow Four prompt contents, Basic, chain-of-thought, sparse retrieval and dense retrieval, cross whole-program versus function input for eight choices. The first pilot uses GPT-4o and the 45 new functions’ FBP variants. Sparse retrieval with function splitting verifies 64%, versus at most 56% for alternatives, with 63 errors versus more than 67; its three logical errors and two behavior changes also influence selection. These are selection-set results, not independent held-out estimates (Q4). A second pilot chooses Claude 3.7 Sonnet, Gemini 2.5 Pro and GPT-4o from ten models: selected models verify at least 60%, have at most 73 errors and at most two behavior changes. A follow-up crosses ten models with eight prompts over the same 45 FBP functions; however, deprecated Claude 3.7 is replaced by Haiku 4.5. It therefore supplies broader prompting evidence without evaluating exactly the same model set. Sparse split and unsplit tie at median 16 verified functions; selected model families’ reported medians are 23, 22.5 and 20.5, versus at most 15 for the rest. It does not remove reuse of the selection set or isolate all input/model interactions (Q5). The full study fixes sparse retrieval with splitting and evaluates three models × three input types × 303 functions, producing 2,727 outputs. Temperature is zero, with one output per condition, not repeated sampling. Sparse retrieval uses BM25, dense retrieval TextEmbedding, and vectors reside in Qdrant. The retained prompt code retrieves ten program/library entries and five tutorial entries, caps concatenated example text at 300,000 characters and extracts C-fenced blocks. Main generation calls each model once per input, without a verifier-feedback loop. The code’s active model list is the later ten-model configuration including Haiku, not a preserved exact full-study configuration; historical correspondence needs logs (Q4–Q8,Q12,C6,C7). Reported local hardware is a Yoga 14sACH 2021, 16 AMD Ryzen 7 5800HS CPUs, 16 GiB RAM, 1 TB SSD, Ubuntu 24.04 and Python 3.12; Qdrant has 0.5 vCPU, 1 GiB RAM and 4 GiB disk. Full-study API costs per model are Gemini 232 and GPT-4o 171. The paper supplies no repeated-run uncertainty, formal significance test for its “significantly” wording or complete token/latency account (Q7,Q10). ## What the outcomes establish RQ1 manually compares source behavior and contracts, with at least two authors coding independently and resolving conflicts. Source changes include compiler errors as well as semantic changes. Table III has 246 changes: NL 64, FB 82, FBP 100; Claude 86, Gemini 98 and GPT-4o 62. Source inter-rater Cohen's kappa is 0.73. The prose divides 246 changes into 102 semantic edits and 143 compile-related cases, which sum to 245. Their overlap or an omitted case is not resolved by the paper (Q6,Q8,T3). Table IV reports 2,375 equivalent, 146 strengthened, 116 weakened and 90 other contracts. The advertised 92% combines 2,375+146=2,521, while exact-equivalence coding is 87.1%. The authors define strengthening jointly for pre- and postconditions, without a formal behavioral-refinement criterion. A stronger postcondition can add guarantees; a stronger precondition can exclude previously allowed inputs. Thus eq+str does not automatically mean preservation of the original contract on its whole domain. This is a logical qualification, not a finding that all strengthened examples are wrong. NL accounts for 114 of 116 weakened cases; 66/90 other cases have missing or duplicate specifications. Contract-coding kappa is 0.38, explicitly “fair” in §IV-A2, despite §V calling the pair “moderate to substantial”; more than 275 NL coding conflicts were resolved (Q6,Q9,Q12,T4). RQ2's 31.4% is a checker-success rate, not a reported joint rate of unchanged source, adequate original contract and complete verification. Table V gives NL/FB/FBP averages 24.6/29.5/39.9%, and Claude/Gemini/GPT-4o averages 29.8/39.7/24.5%. Gemini is highest for every input type; Claude FB is lower than its NL result, so formal guidance does not improve every individual cell. FBP success also changes the supplied information, rather than proving a particular prompting mechanism causes better reasoning (Q8,Q10,T5). Table VI's feature averages are 51.2% other/basic SL, 30.9% recursive predicates, 12.3% concurrency and 11.4% loops. Gemini's hard-case figures are 21.5% concurrency and 21.4% loops, versus Claude 10.4/9.4% and GPT-4o 5.2/3.4%. These describe this curated, tagged dataset and one output per condition; they do not establish distribution-free model rankings (T6,Q10,Q12). ## Error analysis and concrete cases RQ3 selects 50 low-success functions, then examines their 354 failing variants. It is not a random sample of every failure: category success thresholds are 33/33/44/56%, quotas 7/7/22/14, all eligible author cases are chosen first and public cases fill remaining quotas randomly. Authors repair each failing output until verification, record errors/severity/location/fix and reconcile independent analyses, preferring fewer modifications when repairs differ. The coding and repair order affect which errors become visible; no RQ3 agreement metric is reported (Q6,Q11,Q12). Table II gives four useful distinctions. Misplaced queue pre/postconditions cause a compile error. Opening heap predicates reveals that both null heaps have INT_MAX minimum values, a practical automation step. A list-segment concatenation lemma restores an invariant after advancing a pointer. An array loop invariant recording only ten arbitrary elements is logically too weak to prove ten zeros and needs an initialized-prefix invariant. The last example is a genuine missing property, not merely absent predicate unfolding (T2). Tables VII–VIII contain 1,652 coded errors: 383 compile, 1,167 practical and 102 theoretical, or 93.8% in the first two categories. Component totals are predicates/contracts 381, open/close/assert/leak 767, lemmas 331, invariants 61, source 55 and other 57. The 94% headline is this operational taxonomy; it does not experimentally identify models' internal knowledge or prove that errors are unrelated to general reasoning. There are 858 required-heap-chunk failures, 51.9% of all errors, and 58 missing/incorrect malloc-block cases. These are errors in selected failing outputs, not percentages of all generated functions (Q11,T7,T8). Of the 767 open/close/assert/leak errors, reported causes are missing 58%, redundant 31%, misplaced 7% and wrong 4%. Lemma errors are 62% missing and 23% redundant. Invariant errors include 20% missing, 25% too weak and 20% too strong. For the 381 predicate/contract errors the prose's 44% compiler share matches 167/381, but its syntax 22% plus type 13% totals only 35%; the missing percentage is not explained. The table, finer prose fractions and denominators should remain distinct (Q11,T7). The authors report VeriFast's automatic folding/unfolding can fix 39.4% of open/close errors. This is not 39.4% of all errors, all functions, or an evaluated end-to-end increase in passing functions. Heap-state feedback, better error messages and retry loops are proposals; the measured main study does not deploy a feedback agent (Q11,Q13). ## Static artifact checks and trust boundary The analyzer keeps a named target function and replaces other parsed executable bodies with `//@ assume(false)`. Therefore passes concern a selected function under remaining declarations/contracts; they are not whole-program proofs that all generated callees were independently verified. The extractor accepts C function declarations and function typedefs as well as definitions, while target eligibility checks names rather than requiring a body. This further limits treating every row as verification of an implemented function. These are inspected source behaviors, not measured false-positive rates (C1–C3). The subprocess wrapper labels success by the substring “0 errors found”; it does not check the process exit status, set a timeout or reject assumption markers. The contract prefilter compares nonempty dumped AST strings of declarations and initial definitions, then marks the rest “unknown” for manual review. That is syntactic triage, not a proof of semantic equivalence or strengthening. The shell source prefilter strips comments, preprocessor directives and whitespace before diffing; it is also triage. Neither prefilter replaces the paper's manual resolved coding (C1,C4,C5). Each of the nine verification CSVs has 303 distinct benchmark names. Their yes counts in Claude/Gemini/GPT order are NL 79/109/36, FB 73/118/77 and FBP 119/135/110, totaling 856. In particular Gemini FBP is 135/303=44.55%, whereas Table V prints 44.2% (compatible with 134/303). The current wrapper emits “parse error” or “other error”, but the released CSVs use “no”; source and published reports therefore cannot be assumed to be an unchanged exact run snapshot. The six formal-contract CSVs contain 1,307 syntactically equivalent and 511 unknown cases; these are prefilter results, not the 2,375 final manually equivalent count that also includes NL. The source-change prefilter lists 780 candidate paths, not 780 final semantic changes. No raw logs or resolved XLSX coding were inspected to settle provenance or join all outcome dimensions (C8,C9,reader-static-scan.json). A lexical scan finds “assume” in 32/2,727 primary output files and exact “assume(false)” in four. The four were then read whole. Gemini's generated thread_start explicitly uses contradiction to trust its stub; its CSV label is “no”. Claude's charreader contains an assumed helper lemma and is also “no”. Gemini's barrier_thread2 is “no”; barrier_main is “yes”, but its assumptions occur in a non-target barrier helper. The analyzer removes that helper's executable body when checking main, so this does not establish that the passing target relied on those exact assumption statements. It does establish that a “yes” row and unchanged executable behavior do not by themselves document the complete proof trust boundary. These literal counts are neither counts of unsound verified targets nor exhaustive checks for all spellings of assumptions (C11–C14,C8). All three retained generated append-tail FBP outputs are “no” in their CSVs. They attempt segment lemmas/invariants but differ from ground truth; this is a concrete artifact example of proof-structure difficulty, not a reader-reproduced verifier failure. Shape contracts and the artifact's simpler value-free node representation remain explicit (C10,C15,C8). ## Contribution to the requested topics The authors position this study as an extension of Rego et al.'s preliminary separation-logic work: “We extend and refine their preliminary work to explore more LLMs, prompting approaches, and benchmarks.” They additionally claim function-level analysis, error severity coding and actionable insights as extensions. Their AutoVerus comparison explicitly distinguishes its multiple-agent refinement from this study's lack of LLM feedback loops. These are the authors' related-work comparisons (§VI,p11,Q14); the cited studies were not independently read as part of this record. This directly informs evaluation of LLM-written specifications and proofs: report checker success alongside contract meaning, allowed source changes, proof assumptions, function-versus-program scope, dataset selection, repeated sampling and evidence provenance. Its error examples explain why heap ownership, unfolding and segment lemmas challenge automation even when the intended property is understood. The manually coded dataset and released outputs can support further work, subject to the recorded discrepancies and unread coding workbooks. There is no distributed protocol theorem, Verus/Rust development or TLA+ model in this study. Concurrency is a C benchmark category, not a proof of a message-passing distributed service. Applying its lessons to Verus agents or distributed-system proof pipelines is a reader proposal: preserve the original code/contracts, audit trusted assumptions, distinguish auxiliary-proof completion from specification synthesis, and count the joint validated outcome rather than checker acceptance alone. The paper does not measure those proposed pipelines. - number: 303 C functions from 60 programs - number: overall verifier success 31.4% - number: Cohen kappa 0.73 and 0.38 - limits: Curatedsmallknown-verifiableC;oneoutputpercondition;selection-setreuse;manualcoding;faircontractagreement;functionlevelunderremainingcontracts;equivalentplusstrongerdoesnotestablishequivalence;CSV/paperdiscrepancy;no checker rerun. - how much was read: most of it read - source; notes: Empirical VeriFast study: score changed code and changed claims explic - record id: `an-empirical-study-of-2026` - Ang-Pirlea-Mathur scenario proofs (2026) - title: Scenario Proofs for Verification of Distributed Protocols - what: Introduces scenario proofs: regular-expression-like representative executions with ghost variables, guards, phases, and loops; coverage modulo sound semi-commutation plus Hoare-style correctness replaces monolithic inductive-invariant discovery. The semantics has structure, variable, feasibility, and commutativity layers. Coverage is reduced to syntax-directed inclusions J1K⊆JsK and Js·aK⊆JsK; correctness checks only feasible representatives using weakest preconditions and supplied loop invariants; local pairwise soundness of semi-commutation justifies reordering. The Paxos scenario defers negative Promise/Accept actions, orders positive rounds ascending, and proves agreement because each later round sees a quorum intersection with completed earlier rounds. Additional appendixed proofs cover two-phase commit, a decentralized lock (empty commutativity), and two Ivy multisignature-payment variants. - number: 6 protocol case studies - number: 3 proof obligations: coverage, correctness, semi-commutation soundness - number: Paxos positive and negative scenario parts - limits: Protocols are modeled as finite-action transition systems with feasible runs; semi-commutation must preserve feasibility and final states and is checked locally. Scenario authors must invent representative expressions, coverage derivations, and loop invariants; iteration still requires user invariants. Results are proof case studies, not an automated prover or runtime evaluation; paper notes page-limited appendix and leaves automation/decision procedures open. - how much was read: most of it read - - record id: `ang-pirlea-mathur-scenario-proofs-2026` - AutoRocq (2026) - title: Agentic Verification of Software Systems (AutoRocq) - what: AutoRocq is an LLM agent (GPT-4.1) that proves Rocq theorems. It picks tactics (proof steps), searches libraries, keeps a proof tree, learns from earlier steps, and repairs proofs using diagnostics from the proof state. It was also used on proof obligations (facts to prove) that Frama-C produces for C programs. - number: 131 SV-COMP C programs (avg 43.06 lines), 641 obligations: 203 non-overflow, 153 functional, 285 loop-invariant - number: proves 198 lemmas (30.9%) vs Copra 179 - number: 824/1,717 math lemmas (48.0%) vs Rango 715 - number: Linux kernel: 12/60 (20%) base, 18/60 (30%) with CoqHammer; avg 29.9 s and 14.3 tactics (base), 65.9 s and 16.7 tactics (hammer), successes only - limits: It proves sequential C obligations through Frama-C. The SV-COMP selection excludes multithreaded programs. It has no distributed progress proofs. The loop invariants (facts true on every pass through a loop) that the LLM proposes are screened but not proved. The authors did not measure the total human hours. - how much was read: most of it read - source; notes: Agentic Verification of Software Systems (AutoRocq); notes: Agentic Verification of Software Systems (AutoRocq) - record id: `autorocq-2026` - Beyond Benchmarks / Vostd FVT (2026) - title: Beyond Benchmarks: A Case Study of LLM-Generated Verus Specification Failures on Asterinas Vostd - what: The authors ran three LLMs to write Verus specifications for six real verification targets in Asterinas, a Rust OS kernel, directly inside its repository, then hand-labelled every failed attempt by where it broke: the code did not fit the repository, broke Verus's own rules, modeled the wrong thing, or lacked proof structure. They also checked whether the verifier's error message pointed at the real cause. - number: 6 targets, 156 function-level tasks, 50 Rust files, 7,149 lines - number: 1,587 reviewed failure episodes: Stage I repository integration 442 (28%), Stage II Verus legality 502 (32%), Stage III semantic modeling 420 (26%), Stage IV proof construction 223 (14%) - number: benchmark verify rates 66.0% to 82.6% (Table 3 subtotals); on the 6 targets AutoVerus 22.7-24.5%, VeruSAGE 34.4-41.7%, the authors' workflow 66.3-68.7% - number: visible verifier diagnostic matched the true source stage in 1,152 of 1,587 episodes (72.6%) - limits: One project (Vostd, Entity-Model proof style) and three LLMs; stage labels come from the authors' manual review with no second reviewer reported; the authors' own workflow was built for this study. Covers specification generation, not distributed protocols or liveness, and the paper itself says the three LLMs are not a leaderboard. - how much was read: most of it read - source; notes: Beyond Benchmarks, Verus specification failures on Asterinas Vostd (20 - record id: `beyond-benchmarks-vostd-fvt-2026` - CertiFlash reusable FTL proofs (2026) - title: CertiFlash: A Formal Verification Framework for Flash Translation Layers in Computational Solid State Drives - what: CertiFlash models FTLs as deterministic state machines with a global invariant covering mapping, isolation, integrity, ownership, and allocation, then packages reusable Rocq proofs so modified FTLs discharge five design-specific hypotheses instead of re-proving the full invariant. The framework proves invariant preservation, stepwise simulation, command precondition soundness, read-after-write correctness, and cross-address non-interference. It identifies five SSD failure surfaces and demonstrates ten reachable attacks when command bundles are unchecked. Four case studies cover new state, reimplemented operations, new operations, and changed invariants; inherited proofs and local obligations are measured in lines. - number: Rocq development has 21,884 lines, 432 definitions, and 778 closed theorem statements - number: base framework contributes 16,489 inherited lines; four case studies add 27–3,231 lines - number: clean build takes 93 seconds on Apple M5 Pro - number: ten failures across five attack surfaces are proved reachable when command preconditions are unchecked - limits: The reusable certificate assumes the custom FTL projects onto CertiFlash’s FTLState and proves five pure hypotheses over its operations; fields outside the projection are not automatically covered. The threat model treats faulty or malicious commands as possible, and each failure theorem is conditional on its stated hypothesis. Security follows Rocq kernel checking and no admitted axioms in the reported development, but implementation integration remains model/refinement dependent. - how much was read: most of it read - - record id: `certiflash-reusable-ftl-proofs-2026` - CockroachDB Liveness Fabric blog (2026) - title: Distributed Database Leader Leases - what: CockroachDB states that Liveness Fabric safety properties are formally verified in TLA+ and that the verification model is public on GitHub. - limits: Blog statement; the linked model was not separately read in this pass. - how much was read: most of it read - source - record id: `cockroachdb-liveness-fabric-blog-2026` - Deductive Verification of Temporal Collisions in Distributed Message Brokers (2026) - what: The authors hand-write TLA+ templates for Kafka, RabbitMQ, NATS JetStream and Pulsar consumers. They use TLC to check for duplicate execution after a crash that happens before acknowledgment. Six Docker experiments cross-check the results on real consumers. - number: 112 configurations, 16 models, states 16-211,201 - number: 120-second timeout - number: Table 1: faulty 10/10 violated; idempotent 3 violated/7 pass; dual-async 7/3; synchronization 55/27 - number: 6/6 physical predictions matched - limits: Despite the title, this is bounded model checking. Liveness and ordering are not checked. The RabbitMQ idempotent models have three false positives. The paper claims that 30 PASS results fail at higher bounds, but does not check this. The wording of Table 7 conflicts with its results. - how much was read: most of it read - source; notes: Deductive Verification of Temporal Collisions in Distributed Message B - record id: `deductive-verification-of-temporal-2026` - DissProve (2026) - title: DissProve: Automated Verification of Asynchronous Distributed Protocols with Affine Communication - what: DissProve performs backward abstract interpretation of P actor protocols from a negated safety property. Separation logic tracks local actor state/control, linear logic tracks pending messages, and ordered histories constrain causal execution. Goal-directed materialization, causal reduction, message segments and entailment refute unsafe states for unbounded actor populations. [Q1,Q3–Q18,Q23–Q25] Complete election quorum-bug/refutation, aliasing-aware actor materialization, affine sender-count bounds, handler-independence requirement for message segments, five causal graph edges, counter-summary versus entailment cycles, conditional acyclic-graph termination, full appendices and exact mechanization assumptions. All seven evaluation rows, query counts and capped ablations are preserved. Corrects unsupported Raft-timeout and Theorem 4.1-only mechanization claims. [Q3–Q49] - number: 7 verified P protocols,49–99 SLOC - number: 16 states Bakery;9275 Atomic Broadcast - number: Two-Phase Commit 5888 states,1:08:46;Atomic Broadcast 9275 states,1:12:46 - number: 25000 state cap without entailment;Barrier 87 versus 35 states - limits: Affine means at most one message type per sender/receiver in the modeled round; initialization precedes other messages, Main-only creation/deployment is outside analysis, no shared memory or message duplication. Properties are prenex universal; no liveness proof. Segment soundness requires independent/reorderable handler invocations and sound recurrence abstraction. Termination requires acyclic causal dependencies and terminating handler analysis. Authors report Lean proof of Theorem 4.1 with assumed concretization lemmas and also Worklist-LemmaB.8; Section 5 segment semantics and full termination are not fully mechanized. Paxos several-hour noncompletion is reported; no separate Raft run is stated. Formula notation and graph/branching definitions have reader-identified ambiguities, without any artifact conclusion. [Q1,Q3,Q9–Q10,Q16–Q22,Q32–Q47] The introduction defines affine communication per sender/type/receiver [Q1], but §3.1.3 says no two messages of the same event type may carry different payloads from one sender, without the same-receiver qualifier [Q10]. The latter wording additionally excludes receiver-specific different payloads. This apparent prose discrepancy remains unresolved; no implementation condition is inferred. - how much was read: most of it read - source - record id: `dissprove-2026` - EqiVM (2026) - title: Foundational Refinement Proofs for Deployed Bytecode, at the Price of Tokens (EqiVM) - what: Agents write Lean proofs that deployed Ethereum contract bytecode refines (correctly implements) a spec written in the authors' Sol- language. The proofs use a formal semantics of the EVM. The agent is an untrusted proof producer, so its proofs are checked. - number: text says 19 contracts proved complete, abstract says 23, conclusion says 27 (notes' own count: 27) - number: Vat: 6,965 bytecode bytes, 556 spec lines, 84,382 Lean proof lines, 100h44m, 2 effective human prompts, 74.8M fresh tokens, about 1,380 retrospective API price
    • number: Cat: 106.8M tokens, 64 h, 17 prompts
    • number: Clipper 26/29 functions after 81h44m; Nouns Auction 18/20 after 94h28m with certificate check timing out
    • limits: It does not show transaction availability, bounded gas, eventual completion or soundness of the supplied policy. The refinement relation permits vacuity through gas exhaustion (running out of gas makes a claim hold trivially). The trusted base includes the EVM formalization, imported Lean axioms and native_decide. A human supplies the high-level spec.
    • how much was read: most of it read
    • source; notes: Foundational Refinement Proofs for Deployed Bytecode, at the Price of ; notes: Foundational Refinement Proofs for Deployed Bytecode, at the Price of
    • record id: eqivm-2026
  • Fairneris (2026)
    • title: A Higher-Order Separation Logic for Verifying Liveness-Preserving Refinements of Distributed Systems
    • what: A logic mechanized in Rocq. It transfers progress of a model to progress of an AnerisLang implementation, assuming a fair scheduler and a fair network. The network may drop, duplicate and reorder messages. Fairness here applies to sets of messages.
    • number: two-node implementation; every sequence number eventually gets a reply assuming callback termination and fairness
    • number: no LOC, person-time or benchmark timing reported
    • limits: It verifies code under the language’s own operational semantics, not a production Rust or OCaml executable. Humans supply the model, invariants, contracts and refinement proofs. The URL of the mechanization artifact is not given.
    • how much was read: most of it read
    • source; notes: A Higher-Order Separation Logic for Verifying Liveness-Preserving Refi
    • record id: fairneris-2026
  • Federated Formal Verification (2026)
    • title: Federated Formal Verification: Cross-Backend Citation, Cross-Axis Convergence, and AI-Orchestrated Proof Dispatch for Production Systems
    • what: This work sends the open TLA+ proof obligations of a production Raft system to Coq, Lean, Why3, Apalache, Z3 and CBMC. Claude Code specialists handle each backend. CI rechecks the proofs, and the system generates Java runtime assertions.
    • number: 17 active hours, 263 commits, 26-axiom census closed
    • number: about twenty specialist agents in four waves of 3/6/7/4; practical concurrency 6-7
    • number: proof tree over 11,000 lines, 18 apex obligations
    • number: Coq 8/8 passes, median 34.4 s; Apalache 0/3; TLC 0/5; PRISM 1/13
    • limits: A human wrote the claim that the backends are equivalent. There is no artifact URL. The paper gives no prompts, no cost, and no breakdown of human effort. The Java assertions check test states only, not refinement. The speedup compares different protocols. Apalache refuted a property that Coq cited, at bound six.
    • how much was read: most of it read
    • source; notes: Federated Formal Verification: Cross-Backend Citation, Cross-Axis Conv
    • record id: federated-formal-verification-2026
  • Fewer Assumptions by Design: A Reusable Skill for LLM-Assisted Verus Verification (2026)
    • what: Verifies an index-based doubly linked list in Verus by hand, then with a Claude agent. It then packages a ‘skill’ (SKILL.md, templates, and a list of pitfalls) that tells the agent how to work. The goal is to use as few assume statements (unproven hypotheses) and axiomatic lemmas as possible.
    • number: by hand: 16 assumes (Exp 1), 11 assumes (Exp 2)
    • number: with Claude: assume count dropped from 75 to 11; final state 45 verified, 0 errors, 11 assumes
    • number: agent cost: a couple of hours of reasoning plus manual prompting by the user
    • number: Table5: Codex5.2 High46assumes; Claude4.8 Max two index runs0assumes/0axioms; Claude4.6 High18assumes/1axiom; Standard/SlotMap0assumes/8axioms. Runs10–50min. Table6 rates all concrete Standard/SlotMap mutators fully opaque.
    • limits: It covers one data structure only. The evaluation is a rubric scored by the authors over 6 runs with Claude 4.6/4.8. No success rate is given.
    • how much was read: most of it read
    • source
    • record id: fewer-assumptions-by-design-2026
  • Formal Verification Frameworks for Cloud-Native Microservices (2026)
    • what: Sketches a framework that models microservices as a graph of states and writes five properties in temporal logic (request gets a response, error leads to recovery, and so on), to be checked by a model checker. Reports detection rates against testing and monitoring.
    • number: deadlock detection accuracy 96.7% vs 81.2% for log-based testing (Table 1)
    • number: fault detection accuracy 95.4% vs 85.2% traditional (Table 2)
    • number: verification coverage 94.6% vs 80.1%
    • number: detection time 96 ms vs 130 ms
    • limits: The paper names no model checker, no concrete system, no test workload, and no definition of how accuracy or coverage were measured, so the numbers cannot be interpreted. The properties are written as generic formulas, none is proved.
    • how much was read: most of it read
    • source; notes: ## Formal Verification Frameworks for Cloud-Native Microservices (2026
    • record id: formal-verification-frameworks-for-2026
  • Formal Verification of Multi-Controller Systems in Cloud Management (2026)
    • what: A NuXMV model of two Kubernetes-style controllers, two resources and two users. It checks convergence (eventually the requested state holds forever) and completion. Overlapping resources cause endless overwriting. Dependencies can block forever.
    • number: Table 2: four settings; no overlap/dependencies all pass, others fail
    • number: no runtime, effort or source size reported
    • limits: A small abstract model, built by hand from incidents. The unavailability result holds only if the model lets a resource be unavailable forever.
    • how much was read: most of it read
    • source; notes: Formal Verification of Multi-Controller Systems in Cloud Management
    • record id: formal-verification-of-multi-2026
  • From Verification Failures to Reusable Guidance for Coding Agents (2026)
    • what: Turns diagnosed proof failures into reusable procedures (a kit) for coding agents. The agents write specifications and proofs of execution in the K framework, with Lean for leftover math. Separate agents audit the result.
    • number: 164/164 final AI audit PASS verdicts after two targeted repairs and heavy human-guided resource development
    • number: at the common checkpoint with the kit: 97 Pass, 67 Concerns, 0 Fail
    • number: 12-pair challenge: all 12 defects detected, all 12 clean accepted (Wilson interval 75.8-100%)
    • number: controlled 31-program test: GPT-5.6 Luna 15/31, 15/31, 19/31; all four intervals include zero
    • limits: The target is partial functional correctness (correct if it terminates), and termination is handled separately. The trusted base includes the translation, the semantics and the solver integration. The controlled evidence does not show a clear general benefit of the kit.
    • how much was read: most of it read
    • source; notes: From Verification Failures to Reusable Guidance for Coding Agents; notes: From Verification Failures to Reusable Guidance for Coding Agents
    • record id: from-verification-failures-to-2026
  • GGMS (2026)
    • title: Learning Provably Correct Distributed Protocols Without Human Knowledge
    • what: A transformer-guided Monte Carlo tree search learns transition tables for synchronous crash-fault protocols (atomic commit and consensus). Exhaustive model checks give it feedback.
    • number: atomic commit 2/1: 100%, 15 min; 3/2: 60%, 813 min; 4/2: 70%, 754 min
    • number: consensus 4/2: 90%, 717 min; 4/3: 100%, 3358 min
    • number: plain MCTS / DFS baselines often 0-50%
    • number: timeouts 1, 2, 4 days for 2, 3, 4 processes; ten runs per setting
    • limits: Humans supply the states, decisions, correctness formulas and bounds. The setting is synchronous, crash-only, with finite process counts. Termination is bounded, not asynchronous liveness. It is not an LLM agent.
    • how much was read: most of it read
    • source; notes: Learning Provably Correct Distributed Protocols Without Human Knowledg; notes: Learning Provably Correct Distributed Protocols Without Human Knowledg
    • record id: ggms-2026
  • Guidelines for Producing Concise LNT Models, Illustrated with Formal Models of the Algorand Consensus Protocol (2026)
    • what: # Whole-paper read: Guidelines for Producing Concise LNT Models, Illustrated with Formal Models of the Algorand Consensus Protocol (authored by agents unless marked 🧑) Hubert Garavel. MARS2026, EPTCS443,pp43–83,doi10.4204/EPTCS.443.5;arXiv2604.05006,41pages. The paper refactors a finite LNT model of Algorand’s BBA* phase and reports equivalence/model checks. Its strongest directly measured result is model compaction with strong bisimilarity checked for two four-node configurations. It supplies a detailed transformation sequence, printed model code and property scripts. It does not establish correctness of the deployed Algorand implementation or arbitrary-size Byzantine consensus. [Q0,Q1,Q2,Q10,Q11] ## What changes, and what is preserved The original Urbino model has967LNT lines. Application-specific changes produce U0 with769lines. These changes include new observations, merged/split events, a different attacker and a fair-coin correction; the paper explicitly says many “do not preserve bisimilarity properties.” Thus equivalence of U0–U4 does not imply equivalence with the original967-line model. [Q2,Q11,Q14] Four generic transformations then produce U1–U4: extract shared modules, replace duplicated control branches with data parameters, merge common sequences, and replace mutually recursive tail calls with assignments and explicit loops. Strong bisimilarity means corresponding states can match every labelled transition in both directions. Authors report BCG_CMP checks for A4,0(four honest nodes) and A2,2(two honest/two malicious), with incremental checks after individual changes. They give structural/algebraic explanations, not a mechanized theorem covering every use of every transformation. The common-suffix choice law is explicitly qualified as failing for common prefixes. [Q3,Q4,Q5,Q6,Q7] The §2.2 table gives total/nonblank-noncomment lines: U0=769/705,U1=607/552,U2=320/282,U3=288/250,U4=250/212. U0→U4 therefore removes67.49%of total lines and69.93%of substantive lines, ratios3.076and3.325 respectively; these are reader arithmetic. The original967→250comparison also includes semantic changes. Readability and reduced maintenance effort are the author’s qualitative judgments; there is no reader study or maintenance-cost experiment. [Q3,Q11] State counts illustrate that fewer source lines need not produce fewer unminimized states. For the honest-node/malicious-node/A4,0/A2,2 LTSs, U0 has1740/3190/24230/42509states; U1 is identical; U2 has1761/3190/24599/42509;U3 has1681/3046/20665/34679;U4 has1723/3130/20905/35059. After strong-bisimulation minimization every version has558/840/12059/19486states. Identical minimized counts alone would not prove bisimilarity; the reported equivalence checks supply that evidence. No runtime or memory benchmark is given. [Q3] ## Concrete transformation cases U1 extracts duplicated node/counter code and splits data definitions into types/constants/channels. U2 merges honest, malicious and disguised behaviors using a MORALITY parameter; node IDs≀H identify honest nodes. U3 factors common suffixes/prefixes and reduces NODE’s process calls22→9. Its final branch-factorization example is acknowledged as harder to understand despite being shorter. U4 exposes an inner three-step coin loop inside an outer block-processing loop, replacing12recursive calls across node/counter code with3loops. [Q4,Q5,Q6,Q7] The loop discovery uses pairs of control location and step residue, rather than control locations alone. The initial random-bit process had combined graded-consensus abstraction with a later fair coin; separating these roles restores the nested-loop structure. The earlier probability P_H used for the later coin is corrected to0.5 among the specific changes before the equivalence-preserving sequence. The counter independently accepts propagated/self-propagated bits, increments K0/K1 and resets them after TALLY. AnnexB prints U2/U3/U4 node code and recursive/imperative counter variants, enabling direct comparison. [Q7,Q14,Q15,Q16] ## What is verified Visual checking first hides irrelevant events and minimizes by branching bisimulation, which allows matching behavior across internal steps. Four-node models have roughly12000–20000strongly minimized states,43000–69000transitions and131labels. SYNC-only slicing exposes alternating BEGIN/END barriers. The block interface exposes proposal bits0/1 and commit-proposed/commit-empty events: for H≄T the observed model allows acceptance or rejection; for H<T the illustrated attacker systematically rejects bit1 proposals. Earlier pre-v5models have visible deadlock traces. These are observations of the stated abstract models and attacker, not an arbitrary-fault resilience theorem. [Q8] Equivalence checks compare sliced systems with small hand-written expected processes: TALLY events form a cyclic four-dimensional hypercube; SELF_PROPAGATE has a more involved loop with optional per-node propagation. Hidden bit/counter values are renamed toX, so those checks establish event-pattern behavior after abstraction, not correctness of discarded values. SET_BIT slices remain difficult to inspect, motivating value-passing MCL formulas. [Q9,Q10] AnnexC reports16named property scripts checked on both U4configurations: P1deadlock absence;P2SYNC alternation;P3aTALLY counter sum≀4 andP3bhypercube;P4a/bPROPAGATE patterns;P5a/bSELF_PROPAGATE patterns;P6a/bselection P_IN/P_OUTpatterns;P7a/bP_ZERO/P_ONEpatterns;P8ablock-interface classification;P9a/b/cper-node SET_BITinitialization and step progression. The latter formulas require an eventual next bit-setting event or, in P9b, a new proposal, without intervening conflicting events. They are local sequencing checks. The conclusion leaves formulas connecting all nodes’ votes to the expected consensus decision as future work. The printed P9cdescription is grammatically incomplete, while its formula explicitly targets SET_BIT(ID,0,any). [Q17,Q18,Q19,Q20] The models have infinite loops. Absence of deadlocks does not itself prove eventual block commitment. The paper does not report probabilistic model checking or almost-sure termination; probability values occur in observable choice labels, and probabilistic verification is proposed as future work. The evaluated equivalences and MCL results should not be turned into a quantitative probability-of-failure guarantee. Larger configurations of6,8,10nodes are mentioned as explored compositionally, without this paper providing comparable property outcomes or resource measurements for them. [Q10,Q11,Q15,Q16] ## Model assumptions and limits AnnexA fixes node population, honesty and equal stake; omits money/rewards, cryptography and leader election; abstracts graded consensus by a probability; reduces step numbers modulo3; and synchronizes every voting phase with global BEGIN/ENDbarriers. Committees are independently selected possibilities ranging from0toNmembers rather than fixed sizeC. The attacker does not fork: it manipulates votes to reject selected proposed blocks. U0 replaces shared BOYCOTT synchronization with independent malicious behavior triggered by proposal bit1. Therefore the model covers one censorship-style strategy, not all Byzantine behavior or dynamic corruption. [Q12,Q13,Q14] Two documented interpretation choices are fresh committees per step rather than per round, and a persistent per-node bit across steps. Printed constants use N=4,C=3,T=2,H=2(or4),P_V=C/N,and P_H=pÂČ(1+p−pÂČ),p=H/N. The main process synchronizes nodes on proposals, propagation, barriers and both commit events. Reader observation: agreement at those shared commit events is constrained by the model composition; the paper’s checks do not independently establish all implementation behaviors fit that composition. Relaxing synchrony and moving from historical BBA* to deployed ABFT remain future work. [Q12,Q13,Q15,Q16,Q11] For this collection, the paper contributes a concrete workflow for simplifying distributed-system specifications while checking equivalence and targeted temporal properties. Its relevance to LLM-generated specifications is my inference: proposed cleanup should retain an explicit preservation target, and success on self-chosen event slices should not substitute for the intended protocol guarantee. The paper has no Verus, Rust, TLA+ or LLM experiment. ## Read and evidence scope Read all41pages, §§1–8,29reference entries and AnnexesA–C, including all32specific changes,9model-code subsections,16property scripts and auxiliary processes. Inspected all5figures, the full §2.2table and dense formula/code renderings; complete extracted text supplied the remaining material. No external author artifact was linked or acquired beyond the full code printed in the paper. Official arXiv and inventory PDFs are byte-identical. Publisher PDF differs in66bytes but yields identical raw extracted text; hashes and comparison saved. No author code, compiler, model checker, solver or generated LTS was executed or loaded. All reported tool results remain attributed to the author.
    • limits: boundedfixedsynchronousmodel;restrictedattacker;abstractGC/crypto;equivalenceamongrefactoringsnotoriginal/deployedprotocol
    • how much was read: most of it read
    • source
    • record id: guidelines-for-producing-concise-2026
  • IC3Syn (2026)
    • title: Synthesizing Inductive Invariants for Distributed Protocols via IC3 and Large Language Models
    • what: An IC3 controller hands an LLM (Claude Opus 4.6) concrete bad states to block. The LLM proposes TLA+ clauses. TLC and Apalache check them on small instances. TLAPS then proves the invariant for all sizes.
    • number: 29 of 29 protocols solved (Table 1 p. 9); direct Claude baseline 23/29; Gemini 3 Flash inside IC3 solves 27/29
    • number: MLDR (MongoDB Raft model): 4525 s, 16 clauses, proof over 3,000 lines; EPR Paxos: 1806 s, 9 clauses
    • number: Default synthesis timeout 30 minutes, 2 hours for the two hardest cases
    • number: Paper’s rerun of Endive solves 24 shared cases
    • limits: The models and safety goals are supplied. Liveness is not evaluated. The synthesis loop works on finite instances only. The proof stage used a scaffold plus Codex automation. The model, budget and log of human intervention are not stated. Full end-to-end automation is ongoing work. No public code or proof artifact was found. The results are the authors’ own reports.
    • how much was read: most of it read
    • source; notes: IC3Syn: a direct 2026 LLM invariant search result; notes: IC3Syn: agent-written proofs of unbounded distributed protocol safety; notes: IC3Syn protocol inventory
    • record id: ic3syn-2026
  • ICEPICK API model checking (2026)
    • title: Systematic API Testing Through Model Checking and Executable Contracts
    • what: Introduces ICEPICK, a black-box REST API testing framework that models API state in TLA+, exhaustively explores the TLC state-space graph, extracts call sequences, and checks execution with GLACIER first-order contracts. The paper specifies a two-phase pipeline: CRUD/OAS contract generation, manual semantic predicates, a conservative TLA+ abstraction, TLC state-space preprocessing, coverage-guided BFS path selection, and execution with an emulator that evaluates preconditions, postconditions and invariants. PUT updates are inserted into post/delete paths; results are classified OK, WARN, ERR or NOT_TESTED. State coverage is complete for generated paths, while transition coverage can miss parallel transitions represented by the same abstract state pair. In the evaluation, Tournaments, Petstore and Features-Service expose distinct scalability and compliance behavior; injected delete and referential-integrity faults are detected, but non-REST APIs block useful inference.
    • number: 17 SSG configurations
    • number: 30–99.4% SSG size reduction after preprocessing
    • number: 5–21 GB models complete within about an hour
    • number: 467 GB and 16 h 16 min for Tournaments size 12
    • limits: The approach requires resource-oriented REST APIs, accurate schemas and HTTP status semantics; generated contracts are intentionally partial and domain invariants may require manual predicates. TLA+ models are abstractions that can diverge from implementations. TLC and path extraction face state explosion: on the reported hardware about 5–21 GB SSGs finish within an hour, while a 467 GB model takes 16 h 16 min; a 100 GB heap handled about 46K states/349K transitions. Only three systems were evaluated, and three-value configurations produced infeasible request counts.
    • how much was read: most of it read
    • record id: icepick-api-model-checking-2026
  • IDS (2026)
    • title: Inductive Deductive Synthesis: Enabling AI to Generate Formally Verified Systems
    • what: Given a specification written by an expert in Rocq/Coq, a coordinator of GPT-5.4 workers writes an implementation and a proof that Coq’s kernel checks. It can throw away a data representation and start over. Code is extracted to OCaml.
    • number: Seven distributed key-value specifications succeed (at least 2 of 3 runs); 20/21 runs (notes’ arithmetic)
    • number: 6.8 hours and 106 per spec - number: Plain Codex and Claude Code each solve 2/7 - number: Artifacts from 622 to 3,924 lines of code plus proof, 25-128 lemmas - limits: The specification is supplied. Safety holds only within the supplied model, and there is no liveness. The comparison of human effort is not a controlled experiment. - how much was read: most of it read - source; notes: IDS: changing code and abstractions makes otherwise hard proofs tracta - record id: `ids-2026` - IronFleet issue 3 (2026) - title: Incomplete high-level spec prevents verification of exactly-once semantic - what: The closed issue demonstrates a high-level IronFleet specification that omitted exactly-once request semantics: a modified implementation accepted duplicates while still passing the high-level verification checks. - number: A few-line code change enabled duplicate requests while checks still passed. - limits: Closed issue; it is a historical report against the repository revision named in the issue. - how much was read: most of it read - source - record id: `ironfleet-issue-3-2026` - k8s-runtime-audit (2026) - title: Monitoring and Verification of Multitenant Kubernetes Clusters using TLA+ Trace Checking - what: A TLA+ model of a tenant-isolation policy is replayed over Kubernetes audit logs. The logs travel through a webhook and NATS JetStream to a customized TLC. It flags cross-tenant access, dangling bindings and cluster-admin bindings. - number: 5 controlled scenarios, all detected - number: one control-plane and two worker nodes; 10/50/100/1000 actions, 2/5/10 tenants - number: batch cap 50 messages, 4.5 s pull expiration - number: 2 tenants, 1000 actions: 1071.20 messages, 24.5 ± 0.8 ms per message; 10 tenants: 689.60, 70.3 ± 1.7 ms - limits: It checks recorded traces. It does not prove the implementation or the spec correct. It relies on logs that are complete and in order. The model omits namespace-local Roles. It has no liveness. No size or hours are given. - how much was read: most of it read - source; notes: Monitoring and Verification of Multitenant Kubernetes Clusters using T - record id: `k8s-runtime-audit-2026` - Lawyer (2026) - title: Lawyer: Modular Obligations-Based Liveness Reasoning in Higher-Order Impredicative Concurrent Separation Logic - what: Lawyer proves fair termination (every fairly scheduled run finishes) in Rocq/Iris. It uses a logical transition system of obligations. A well-founded hierarchy orders the dependencies to rule out cycles. The authors verify a ticket-lock module and its client separately, against a fair-lock interface that obliges the holder to release. - limits: Finite sets of levels limit lock-coupling structures that grow without bound. Progress for independent modules, and liveness of programs that never terminate, are future work. The notes found no effort count. - how much was read: most of it read - source; notes: Iris: Trillium, Lilo, Lawyer - record id: `lawyer-2026` - LeaseGuard (2026) - title: LeaseGuard: Raft Leases Done Right - what: LeaseGuard is a Raft lease design. A new leader can accept writes at once, and can serve reads that the old leader's writes do not affect, from the log it inherited. The authors built a TLA+ model, a Python simulator and a LogCabin C++ implementation. - number: TLA+ bounds: 3 servers, 2 keys, term 3, log length 4, clock 8, lease 3; 296-line model - number: about 1,000 simulator lines; 1,600 server and 650 client lines changed in 27,000-line C++ code - number: writes about 1000 to 10,000 per second - number: failover: 9,930 of 10,000 reads succeeded in the wait - limits: The safety argument is a paper sketch, not machine-checked. The TLA+ model checks safety only to a bound, with no temporal properties. There is no agent workflow. An earlier model hid the bug inside large atomic actions. - how much was read: most of it read - source; notes: Related-work addition: LeaseGuard: Raft Leases Done Right - record id: `leaseguard-2026` - Loom (2026) - title: Foundational Multi-Modal Program Verifiers - what: A Lean framework that derives a verification-condition generator, proved sound, from a language's executable semantics. It is used for Veil 2.0 (protocol safety) and Velvet (imperative programs). - number: 17 specifications of 15 distributed protocols in Veil - number: 10 Velvet case studies - number: sparse matrix reasoning 300-400 lines - number: Veil: 17 specifications of 15 different distributed protocols - limits: It does not infer the guarantee that was intended. Leftover goals are left to the user. There is no liveness over time. The NOPaxos model fixes the leader and omits view change. - how much was read: most of it read - source; notes: Foundational Multi-Modal Program Verifiers; notes: Foundational Multi-Modal Program Verifiers - record id: `loom-2026` - Machine-Generated, Machine-Checked Proofs for a Verified Compiler (Experience Report) (2026) - what: Claude Opus 4.6 in Claude Code writes Rocq proofs that a new ANF transformation in the CertiCoq compiler preserves semantics for terminating programs. An expert guided it, and an existing CPS proof served as a template. - number: 7,783 Rocq lines vs 5,294 in the CPS template - number: 114 human prompts, 6,538 tool calls, 872 build calls, 101 context compactions - number: 90.2 summed daily wall-clock hours, 62.6 active hours - number: author manually fixed two tactic invocations - limits: Preservation of divergence (non-terminating programs) is unproved. The agent once silently weakened a statement. The work covers one transformation only. Human hours and token cost were not recorded. - how much was read: most of it read - source; notes: Machine-Generated, Machine-Checked Proofs for a Verified Compiler (Exp; notes: Machine-Generated, Machine-Checked Proofs for a Verified Compiler (Exp - record id: `machine-generated-machine-checked-2026` - Mysticeti proofs (2026) - title: Mechanized Safety and Liveness Proofs for the Mysticeti Consensus Protocol under the LiDO-DAG Framework - what: Proves a corrected Mysticeti protocol and audits Sui's deployed implementation. A counterexample lets honest participants jump over rounds without limit, so no block ever commits. The authors restrict jumping, add a catchup time GCT, and prove strong progress after both GST (the time after which message delays are bounded) and GCT. - number: 6271 new Coq/Rocq proof lines; two persons in two months (§5.5, PDF p.13) - number: 6271 lines, developed by two persons in two months - limits: Not a machine-checked proof that the whole Rust codebase matches the model. The Sui finding was true when the paper was written. It is not a claim about the current deployment. Weak liveness guarantees only that honest leader vertices and certificates get created, not that blocks commit. - how much was read: most of it read - source; notes: Mechanized Safety and Liveness Proofs for the Mysticeti Consensus Prot; notes: LiDO, LiDO-DAG, and a 2026 liveness bug - record id: `mysticeti-proofs-2026` - P Verifier documentation (2026) - title: P Verifier announcement and two-phase-commit tutorial - what: The P Verifier documentation explains a new inductive-proof backend based on UCLID5 and contrasts it with explicit-state model checking. It provides a tutorial for simplified two-phase commit and describes an industrial AWS version generalized to multiple rounds, key-value transactions, shards and snapshot isolation. - limits: The industrial proof details are not released in this documentation; the tutorial protocol is deliberately simplified. - how much was read: most of it read - source - record id: `p-verifier-documentation-2026` - P Verifier tutorial (2026) - title: P Verifier two-phase commit tutorial - what: The P documentation tutorial walks through a simplified two-phase-commit model, specification and test drivers, then points to the proof backend. The page is a practical teaching path from a protocol description to checked properties. - limits: Simplified protocol and tutorial scope; not a production proof. - how much was read: most of it read - source - record id: `p-verifier-tutorial-2026` - Paxos-SB in DistAlgo (2026) - title: Specifying Paxos for System Builders: Pseudocode Made Executable - what: It transcribes detailed Paxos-SB pseudocode into runnable DistAlgo. At runtime it checks agreement, validity and timeouts. It finds two liveness bugs in the published pseudocode: a non-leader, and both survivors not counting their own vote. - number: Table 1: 598 lines total; about 370 excluding comments/setup; core about 200 - number: original C about 7000 lines; pseudocode about 330 lines in 13 figures - number: 3 servers, 2 clients, 100,000 requests each in under 170 s; latency under 1.7 ms; about 10x C runtime - limits: These are runtime checks, not proofs. Humans supplied initial values and helpers, and no LLM workflow is reported. The recovery procedure is not implemented separately. - how much was read: most of it read - source; notes: Specifying Paxos for System Builders: Pseudocode Made Executable - record id: `paxos-sb-in-distalgo-2026` - PaxosLease Revisited: A Checked Model of Diskless Distributed Leases (2026) - what: It has bounded checking in TLA+/TLC, six TLAPS arithmetic lemmas, and Python witnesses for the PaxosLease diskless lease protocol, with three acceptor changes. LLMs produced much of the artifacts, under line-by-line human review. - number: Table 1 traces of 27, 36, 18, 36, 43 states - number: Table 2: 491,037 base states, 37,425,056 crash/restart, 76,749,192 at quarantine; completed runs 2,179,760,458 and 2,411,951,538 states - number: two larger searches stopped without violation at 3.86 and 4.46 billion states - number: more than 40 hours on a 4-core Xeon, 64 GB - limits: It covers safety only, with at most two proposers, three acceptors and three ballots. It does not show that the C++ code refines the model. The shipped binaries were not run. Searches that were stopped are not exhaustive. Fingerprint collisions qualify the largest runs. - how much was read: most of it read - source; notes: PaxosLease Revisited: A Checked Model of Diskless Distributed Leases - record id: `paxoslease-revisited-a-checked-2026` - Perennial issue 638 (2026) - title: Goose and Go-semantics defects found on master - what: The issue reports translator and Go-semantics defects found while verifying etcd v3.7.2 and raft with Goose, with before/after tests and fixes proposed. - number: 11 translator defects and 10 Rocq Go-semantics problems are listed. - limits: Open issue; branch master/lean applicability is still being coordinated. - how much was read: most of it read - source - record id: `perennial-issue-638-2026` - PerF fault-aware performance prediction (2026) - title: A Formal Framework for Predicting Distributed System Performance under Faults (Extended Version) - what: Introduces PerF, a Maude framework that composes a distributed-system model with a reusable actor-based fault injector and uses statistical model checking to predict throughput, latency and other metrics under configurable single or combined faults. The paper defines seven fault types (message loss, duplication, delay, tampering, equivocation, node crash, partition) as message-manipulating actors. A scheduler samples normal latency and orders in-flight messages; a priority-aware controller selects eligible behaviors; handlers can modify, duplicate, delay, drop or trigger environment changes. Composition preserves system rules and proves absence of nondeterminism (AND), enabling PVeStA/QuaTEx analysis. Preprocessing labels message-producing rules; transformation adds event monitors for throughput/abort metrics. The six-system study spans 2PC+CTP, Raft, PowerDNS, Cassandra, RAMP/OPW and Fast-HotStuff, and explicitly evaluates mixed equivocation+partition faults. - number: Six case studies; model/implementation LoC: 2PC 314/354, Raft 536/1400, PowerDNS 2200/4887, Cassandra 465/1402, RAMP 2523/7977, Fast-HotStuff 304/4247. PVeStA uses 95% confidence and 0.01 error margin on 2.4-GHz quad-core Xeon Emulab machines. Model curves for throughput/latency align closely with deployment evaluations; RAMP shows markedly higher latency than OPW as loss increases; Fast-HotStuff throughput declines with more equivocators and only moderately with combined partition. - number: six systems evaluated with model-versus-deployment curves - number: PerF uses 95% statistical confidence and 0.01 error margin - number: formal models range from 220 to 2,523 LoC and implementations from 354 to 7,977 LoC - limits: Maude probabilistic rewrite semantics and absence-of-nondeterminism are required for SMC. Delays come from user-chosen distributions (lognormal, Weibull, exponential), and fault rates/times/targets are configured abstractions. Accuracy is judged by curve trends up to an unknown deployment/model time-scale factor, not absolute values. The framework models faults as message interception, so faults outside message effects or inaccurate distributions are not covered. Experiments use six systems, one deployment per system and 95% confidence/0.01 error; deployment implementations and models differ in size and platform. Dynamic actor/message populations challenge automata-based alternatives but are not claimed solved generally. - how much was read: most of it read - source - record id: `perf-fault-aware-performance-prediction-2026` - PRDT (2026) - title: PRDTs: Composable Design and Verification of Consensus Protocols using Replicated Data Types - what: Scala components for replicated state with decisions. Two local obligations are enough for consensus safety, and Stainless checks them. Paxos-style compositions and a key-value store are built from the components. - number: verification obligations reduced from four to two - number: key-value store compared with etcd in one- and three-region setups; leader-failure experiment at 10 s with 5 s timeout - number: no proof size, runtime or person-hours reported - number: Paper reports verified implementations of multiple Paxos-family protocols - limits: Covers the safety of the executable protocol logic only. No theorem that requests eventually get a response. Networking and storage are not proved. An artifact was promised but not found. - how much was read: most of it read - source; notes: PRDTs: Composable Design and Verification of Consensus Protocols using - record id: `prdt-2026` - Proofs Promptly (2026) - title: Proofs Promptly: An Experience Report on Proof-Oriented Programming with AI Agents - what: The report uses Copilot CLI with Opus 4.5, with skills, subagents and a REPL. It writes Pulse/F* separation-logic proofs of concurrent locks and semaphores, the MSQuic receive buffer, and a port of the OCaml garbage collector. - number: Table 1 p. 3: 1 week/1229, 1 week/1580; about a month and 3,392 total (notes' addition) - number: Six-month manual estimate is the authors' estimate, not a controlled comparison - number: manual proof-engineering cost estimated at roughly half a year - number: three experts, two weeks, versus about half a year manually (authors' estimate) - limits: Experts review the specs and supply the invariants that decide the proof. It has no theorem about distributed fairness or eventual progress. - how much was read: most of it read - source; notes: Proof-oriented programming at Microsoft; notes: papers - record id: `proofs-promptly-2026` - Rocq out-of-order multiprocessor refinement (2026) - title: Formal Verification of an Out-of-Order Multiprocessor against an In-Order Weak-Memory ISA - what: Mechanizes an unbounded refinement proof that a multicore out-of-order RISC-V implementation with weak-memory behavior refines an in-order ISA, using a clean core specification to eliminate excess executions and then serializing memory/inter-core behavior. The proof decomposes n·Coreᔹ+ShMem⊆ISA into core refinement Coreᔹ⊑Coreₛ and system inclusion n·Coreₛ+ShMem⊆ISA. Coreₛ stores instructions in a single program-order list, allowing invalid excess instructions to be dropped; lightweight option-lifting encodes pure method preconditions without changing the refinement metatheory. Rocq mechanizes module refinements, arbitrary traces, and arbitrary design parameters. - number: end-to-end refinement is fully mechanized in 64k Rocq LOC - number: Theorem 1 holds for all instantiations and arbitrary execution lengths - number: system inclusion proof by LLM agents took nearly three weeks; core refinement nearly one week - number: comparison table marks the present work as multicore, out-of-order, and unbounded, unlike cited prior cases - limits: The design is a single-issue out-of-order RV32I core with LR/SC, an axiomatized coherent shared memory, and promising/RISC-V memory semantics. The precondition encoding is deliberately limited to pure predicates, and the proof abstracts implementation details through specified modules. LLM-written proofs remain trusted only after Rocq kernel checking; performance or silicon behavior is outside the formal theorem. - how much was read: most of it read - source - record id: `rocq-out-of-order-multiprocessor-refinement-2026` - Scimitar proof decomposition (2026) - title: Interactive Safety Verification of Distributed Protocols by Inductive Proof Decomposition - what: Introduces inductive proof decomposition and the Scimitar tool for interactively constructing compositional safety proofs. An inductive proof graph decomposes lemmas by protocol actions; counterexample traces are localized and variable slicing hides irrelevant state. Scimitar combines TLC and Apalache to generate counterexamples to inductive proof obligations and TLAPS to validate final proof graphs. The user works backward from a target property, adding support edges and local lemmas; static slicing presents only variables relevant to each node. Five TLA+ protocols were proved, including industrial-scale AsyncRaft with asynchronous messaging and fine-grained local state. The authors report the first invariant effort at that Raft complexity and inspect proof-graph structure as a correctness insight. - number: 5 protocol specifications - number: AsyncRaft: 12 variables, 11 actions, 638 spec LOC/920 proof LOC, 39 lemmas, median slice 5 variables (0.42) - number: AsyncRaft inductive invariant developed in approximately 3 human-weeks - number: Other reported proof-development burdens: 1–2 human-months for smaller invariants - limits: TLC/Apalache counterexamples use finite parameter bounds and do not themselves prove arbitrary-size invariants; TLAPS validation is required for the final proof. Human guidance remains necessary to add lemmas and edges. Evaluation is on five TLA+ specifications and one implementation; generality to other formalisms is untested. AsyncRaft development took human effort despite automation. - how much was read: most of it read - source; notes: Scimitar: distinguish the final interactive paper from an older automa; notes: Full live Scimitar configuration inventory (not an evaluated success l - record id: `scimitar-proof-decomposition-2026` - Show Me The Money: An Exercise in Proof-Driven Software Understanding (2026) - what: Retrospective human-led analysis of Stellar SDEX exchangeV10 uses LLM-generated PVS abstractions, interactive theorem proving and SeaBMC symbolic C++ harnesses to recover rounding invariants and test a supposedly unreachable exception. Authors report 37 of 38 lemmas/typechecker obligations proved, establishing P1–P3 in their model. The remaining P4 obligation leads to an executable local exception witness; reachability through upstream production callers is left unresolved. Records the actual human/LLM/prover division of work, the distinction between generating and discharging type obligations, the asymmetry of the one-percent bound, exact harness assumptions and concrete exception inputs. Separates PVS model proofs and parallel code-property checks from a general abstraction-to-C++ refinement theorem. Preserves unresolved caller assumptions, schematic figure issues and the absence of a measured maintenance or controlled LLM experiment. - limits: §§1–3: the target is a mostly functional arithmetic function in deployed blockchain infrastructure, not consensus, network behavior, smart contracts or the entire order book. Source has 1344 C/C++ lines plus 758 comment lines; abstraction has 260 PVS lines plus 84 comment lines. Code structure and substantial informal invariants are important favorable inputs. §3.1: humans copied full source to ChatGPT 5 Pro, fed PVS errors back and repeated with Claude Opus 4 with qualitatively similar results. Invalid DIV, misplaced IMPORTING and invented libraries needed repairs. Models originally represented exceptions as unused booleans. Humans split theories into three files and supplied interface preconditions. This is not autonomous proof generation. §3.1 footnote4: passing the initial typechecker phase means name resolution and sound generation of type-correctness conditions (TCCs), not their discharge. TCC generation itself is distinct from a complete checked proof. §3.2: the introduction says 16 generated lemmas and 22 generated proof obligations were proved, but the detailed account reports 37/38 and one failed P4 obligation. Retain the detailed denominator; do not claim all 38 obligations or absence of exceptions were established. §§2–3/Figs3–4: P1 favors the offer remaining in the book. P2 bounds relative rounding error by 1% for a single matched offer. P3 permits path-payment asymmetry: error favoring the wheat seller can be unbounded, whereas the sheep-favoring case remains bounded; non-path exchanges exceeding the bound are rejected. These claims depend on input bounds and formalized preconditions. §3.2/Fig5: PVS assert/grind use Shostak reasoning; Yices2 handles nonlinear arithmetic. Type subranges and explicit bounds matter. The displayed Price uses uint32 fields although the source comment says int32_t; uint32 includes zero while the shown posint64 obligations require 100*n>0 and 100*d>0. The schematic includes ellipses and does not show all premises, so it alone neither proves positivity nor establishes unsoundness of the full artifact. §3.3: C++ unit proofs encode PVS type constraints as assumptions, call the implementation and assert corresponding properties; SeaHorn lowers harness and source to LLVM for SeaBMC. These are parallel property checks and a sanity check on relevance. The paper supplies no general relational refinement/equivalence theorem covering the PVS abstraction and all C++ operational semantics. §3.3/Fig6: price n,d are nondeterministic signed 32-bit integers with n>0,d>0. Four maxima are signed 64-bit; assumptions constrain maxWheatSend>=0, maxSheepSend>0 and maxWheatReceive>0. No positivity assumption is shown for maxSheepReceive. The postcondition is !res.wheatStays || (res.numSheepSend>0 && res.numWheatReceived>=0). §3.3/Fig7: a counterexample confirms local exception behavior for the stated harness domain. Developers believe upstream code excludes it; that caller claim is not proved. A failed PVS proof alone would not establish a code bug, and the witness does not establish an exploitable end-to-end production vulnerability. Algorithm2: graphical line14 asserts round=PPS_SEND implies Ss≠0; extracted text loses the negation. Prose p.237 calls it line15, but printed line15 zeroes amounts. The function declaration omits several variables used by its body, so the pseudocode is schematic rather than a complete executable specification. §4/Fig8: revised prompt asks for total mathematical functions, explicit bounds and exceptions converted to preconditions/subtypes. It explicitly excludes full C++ semantics and asks only to state lemmas. Reader inference: strengthening a precondition can remove the failing behavior from the model; callers must separately establish it. No memory, exception or arithmetic semantic correspondence follows from well-typed PVS alone. §4: claims of low manual effort, transfer to larger codebases and useful continuous integration are qualitative. No attempt counts, token costs, elapsed human/prover/model-checker times, resource limits, unroll bounds, solver configurations, controlled comparison or repeated-run variance are reported. §4: exchangeV10 did not change during the exercise. Maintenance/evolution benefits and automatic harness/proof updates are proposed opportunities, not measured longitudinal outcomes. Conclusion still says specification finalization and broader coverage are ongoing. Trusted components include human interpretation, abstraction/precondition selection, PVS and its proof/solver integration, source-to-LLVM compilation, SeaBMC and harness construction. No independent artifact execution, proof replay or upstream-call analysis was performed for this record. No Verus, Rust or TLA+ result is reported. - how much was read: most of it read - source - record id: `show-me-the-money-2026` - Simplifying Safety Proofs with Forward-Backward Reasoning and Prophecy (2026) - what: Proves consensus safety of first-order Paxos-family models and an abstract Raft model. Combines forward reasoning, backward reasoning and prophecy (a recorded guess about the future). Checked with mypyvy and Z3. All proofs were written by hand. - number: Table 1: 13 model variants, median of 15 runs - number: Paxos value-only: Q=4, A=1, B=5 and 0.59 s to universal clauses and 0.43 s - number: Fast Paxos value-only: Q=5, A=1, B=7, 1.5 s to 0.8 s - number: Raft: Q=7, A=2, B=9, 3.7 s to 2.8 s - limits: Safety only, on abstract models. No implementation or progress result. Human effort and lines of code are not reported. No measured rate of successful proof generation. - how much was read: most of it read - source; notes: Simplifying Safety Proofs with Forward-Backward Reasoning and Prophecy - record id: `simplifying-safety-proofs-with-2026` - SoK consensus (2026) - title: Systematization of Knowledge: Formal Verification of Consensus Protocols - what: A survey that sorts consensus verification into model checking, deductive proofs, code proofs and hybrids. - number: over 20 verified consensus protocols - number: only about 30% of surveyed works address liveness - number: Matrix covers 20+ protocols in abstract and over 30 in conclusion - number: Only ≈30% of surveyed works address liveness (§5) - limits: It gives no search date range and no count of how many papers were considered, so the reported fraction is not an unbiased census. Table 1 entries need checking against the cited papers. - how much was read: most of it read - source; notes: Systematization of Knowledge: Formal Verification of Consensus Protoco - record id: `sok-consensus-2026` - SpecTrum consensus differential fuzzing (2026) - title: SpecTrum: Specification-Guided Differential Fuzzing for Ethereum Consensus Clients - what: Presents SpecTrum, which mechanizes Ethereum consensus-spec with explicit if-premises, measures premise coverage, and generates inputs from under-exercised premise constraints before running them across five consensus clients. It found 27 cross-client divergence cases, 22 requiring inserted premises. The framework traces input provenance through Consensus-SpecTec, targets false-side premise coverage, mutates fork-aware values, and attributes divergences to six root-cause categories. It validates the mechanized specification against official tests, compares against random/unguided mutation, measures code coverage and implicit-condition gains, and reproduces cases across protocol forks. - number: Validated Consensus-SpecTec against 910 official tests: 581 state-transition and 329 unit tests (§1) - number: Identified 27 cross-client divergences; 22 cannot be found without inserted premises (§1) - number: Premise coverage rose from 46.3% to 91.1%; 151 uncovered conditions were identified and 81 inserted (§1) - number: All 27 divergences reproduced across fork versions (§1) - limits: The approach depends on consensus-spec/SpecTec modeling fidelity, executable client interfaces, and chosen spectest seeds. Premise coverage targets explicit validity conditions and can miss issues outside the mechanized specification. Reported divergences await bug-bounty triage; fork transfer is evaluated for the studied clients and versions. - how much was read: most of it read - - record id: `spectrum-consensus-differential-fuzzing-2026` - Specula (2026) - title: Specula: Scaling formal specifications for autonomous model checking of system code - what: Specula writes TLA+ models and properties from system source code. It checks observed traces against the model and repairs disagreements. It then model checks for violations and tries to reproduce each one in the real code. - number: 48 open-source systems; 249 reproduced bugs; 89 reported to maintainers; 68 confirmed and 24 fixed in that subset - number: only 0.90% of generated properties are liveness; 99.10% safety - number: 200 bugs via model checking, 49 during code reading/modeling - number: median 3.69 hours and 57 per system across 48 systems (§5.3)
    • limits: Model checking plus reproduction gives concrete failures, not proofs for all executions. Its coverage of liveness is weak. The results pool several versions, and only 14 systems used the latest version.
    • how much was read: most of it read
    • source; notes: Specula: close the model–code loop before calling a violation a bug
    • record id: specula-2026
  • Specy (2026)
    • title: Specy: Automatically Learning Specifications for Distributed Systems from Event Traces
    • what: It learns event-based formulas from traces of distributed systems (P models or logs). It builds monitors from them and checks fresh traces to reject guesses that are too strong. For six deductive-verification experiments, the learned formulas were translated by hand.
    • number: all 43 goal specs recovered, 28 (65%) without help, 15 needed guidance
    • number: 14 benchmarks incl. 3 industrial, 10,000 traces each
    • number: about 9% of extra learned formulas fail on fresh traces, no designated goal formula does
    • number: pruning speeds up by geometric mean 14.8
    • limits: The only guarantee is consistency with the supplied traces. Hard properties need predicates, event choices or ghost state. The deductive results cover selected safety properties of P models. There is no refinement to production code.
    • how much was read: most of it read
    • source; notes: Specy: Learning Specifications for Distributed Systems from Event Trac; notes: Specy: Learning Specifications for Distributed Systems from Event Trac
    • record id: specy-2026
  • SysMoBench (2026)
    • title: SysMoBench: Evaluating AI on Formally Modeling Complex Real-World Systems
    • what: A benchmark of eleven concurrent and distributed systems. An AI writes a TLA+ model of each. The model is scored on syntax, execution, behavioral match to the code, and expected properties.
    • number: source sizes from 175 lines (PGo dqueue) to 5,360 (ZooKeeper leader election)
    • number: Etcd Raft with basic Sonnet agent: 7.69% conformance, 69.23% invariant correctness, 100% syntax
    • number: liveness properties violated 41.9% vs safety 8.3% (§5, Figure 4c)
    • number: each agent run five times, best output evaluated, at most three repairs
    • limits: Covers only the finite executions and configurations supplied. A model can match buggy code and still fail the desired guarantee. The evaluator uses an LLM for some mappings.
    • how much was read: most of it read
    • source; notes: SysMoBench
    • record id: sysmobench-2026
  • TACO threshold automata verification toolsuite (2026)
    • title: TACO: A Toolsuite for the Verification of Threshold Automata
    • what: Introduces Taco, a modular toolsuite for developing and verifying threshold-based distributed algorithms modeled as monotonic or extended threshold automata, with SMT, ZCS/BDD, and ACS/WSTS model checkers plus semi-decision support for reset/decrement extensions. The paper specifies TA configurations, resilience conditions, guards and updates, and ELTL_FT safety specifications, then details a preprocessor and three algorithms. SMT encodes steady paths in existential Presburger arithmetic; ZCS abstracts thresholds to finite (0,1)-counter systems and checks BDD error graphs; ACS uses WSTS fixed points. TACO accepts ByMC .ta/.eta and a TLA+ fragment, emits traces, uses safe Rust crates and interchangeable SMT/BDD backends, and reports about 97% line coverage.
    • number: ~97% line coverage
    • number: 19 MTA benchmark instances plus ETA sets
    • number: 20-minute timeout; 2 AMD EPYC 7773x processors, 2 TB RAM
    • number: safe Rust implementation
    • limits: Monotonic TA permit only increasing shared variables and have decidable parameterized verification. Extended TA with decrements/resets are generally undecidable; ZCS/ACS are semi-decision procedures, and ACS does not support empty-target specifications. TACO currently supports safety ELTL_FT, not liveness.
    • how much was read: most of it read
    • record id: taco-threshold-automata-verification-toolsuite-2026
  • Timers (2026)
    • title: Verifying First-Order Temporal Properties of Infinite-State Systems via Timers and Rankings
    • what: Turns a claim about time into a termination problem by adding timers that predict when formulas become true. A human supplies the model, the claim, the implicit ranking, the invariant and finite-set approximations. Z3 checks the generated conditions.
    • number: 17 tasks in Table 2, e.g. Ticket: 2 s, 20 invariant conjuncts, 256 proof tokens
    • number: Paxos: 101 s, 238 tokens; ABP: 4 s, 539 tokens; HRB-Correct: 135 s, 99 tokens; Dijkstra k-State: 64.8 s, 213 tokens
    • number: Ivy proof sizes for six tasks: 407, 521, 860, 446, 593, 748 tokens (Ticket, Paxos, ABP, HRB-Correct, HRB-Relay, Ackermann)
    • number: runtime is Z3 validation on Apple M1 Pro, Z3 4.13.3
    • limits: The guarantees cover first-order transition-system models, not deployed code. Rankings and invariants are not discovered automatically. Sizes count proof tokens, not human effort.
    • how much was read: most of it read
    • source; notes: Verifying First-Order Temporal Properties of Infinite-State Systems vi
    • record id: timers-2026
  • TLA+ Examples repository (2026)
    • what: This repository is a corpus of TLA+ specifications and models, with CI and metadata indicating beginner examples, PlusCal variants and TLC, Apalache or TLAPS use. Its README also labels models that intentionally fail on deadlock, safety, liveness or assumptions.
    • number: at commit 6a7b26a: 81 case directories, 424 modules, 233 model configurations, 73 modules with proof metadata
    • limits: Repository metadata and CI status can change; this pass did not run every model.
    • how much was read: most of it read
    • source
    • record id: tla-examples-repository-2026
  • TLAPS-Bench (2026)
    • title: TLAPS-Bench repository
    • what: TLAPS-Bench asks AI agents to prove invariants of TLA+ protocol/system specifications in a sandboxed runtime. Its current problem set includes ZooKeeper, etcd and HashiCorp Raft, MongoDB transactions and other protocols.
    • number: Current problem set: 9 specs and 57 invariants
    • number: Retired/next lists include Byzantine Paxos, broadcast, Paxos, 2PC, termination detection and WAL protocols.
    • number: 9 specs and 56 proof targets (FLASH 15, ZooKeeper 9, etcd Raft 8, HashiCorp Raft 6, others)
    • limits: The README says retired proofs are available by contact and current runs focus on a few hard tasks; no agent run was reproduced.
    • how much was read: most of it read
    • source
    • record id: tlaps-bench-2026
  • Towards Composable Proofs of Cache Coherence Protocols (2026)
    • what: A Lean proof of safety for the MSI cache-coherence protocol. It shows by trace refinement that the protocol behaves like atomic memory. It is composed from independently verified MI and SI subprotocols, each with local invariants.
    • number: 9228 proof lines excluding whitespace/comments
    • number: three person-days to translate to Bluespec hardware and test
    • number: 100,000 load responses in first testbench
    • number: two 64-KB L1 and one 64-KB L2
    • limits: It covers safety only. The translation to hardware is manual and tested, not proved equivalent. The authors designed the decomposition and the invariants.
    • how much was read: most of it read
    • source; notes: Towards Composable Proofs of Cache Coherence Protocols
    • record id: towards-composable-proofs-of-2026
  • Towards System-Oriented Formal Verification of Local-First Access Control (2026)
    • what: # Whole-paper read: Towards System-Oriented Formal Verification of Local-First Access Control (authored by agents unless marked 🧑) Florian Jacob, Johanna Stuber and Hannes Hartenstein; arXiv2604.23560v1,26April2026,PaPoC2026-related manuscript,8PDFpages. The contribution is a capability-based authorization design and three deliberately restricted Verus implementations. The paper explicitly says its full §3target has not yet been met. Its results concern simplified authorization/query functions assuming a valid eventually consistent chronicle; they do not verify Matrix, Keyhive, a cryptographic hash implementation, or a deployed replication stack. [Q0,Q1,Q3,Q10,Q13] ## Threat model and intended semantics A local-first entity acts on its own replica and exchanges events asynchronously. The threat model permits any strict subset of entities to be Byzantine, f/n<1, including selective omission, equivocation and backdating. Events are assumed authenticated and integrity-protected. The underlying hash chronicle is assumed Byzantine fault-tolerant, append-only and eventually consistent; collision-resistant identifiers fix an event’s causal past. This is the input contract for the authorization layer, rather than a new proof of the replication or cryptographic layer. Eventual dissemination requires the stated chronicle/anti-entropy assumptions; it does not follow merely from having one honest participant. [Q2,Q4,Q9] The mathematical design uses four event kinds:create,grant,revoke,assign. A grant specifies subject, recipient and operation capability; a use presents the grant’s identifier; revocation references that identifier. Events combine an invocation and a downward-closed set of precursor identifiers. The printed identifier contract idealizes collision resistance as equality of identifiers iff equality of events. A valid group has one creation event, no event concurrent with creation, and valid timestamps. Logging appends an event after the current history; joining takes set union. The name query returns the latest authorized assign events, allowing multiple concurrent names. These are the intended §3semantics, not all jointly verified features. [Q5,Q6] Authorization requires a matching authorized grant in the event’s causal past, no matching authorized revocation in its past or concurrent history, and, for a revoke, a referenced grant in its past. Creation and setup precursors are authorized by definition. Extending revocations to concurrent uses prevents an attacker from bypassing a revocation by backdating a new use. It also makes authorization non-monotonic: new information can invalidate an earlier result. [Q6,Q7] The paper distinguishes authorization based only on immutable precursors (“precursive”) from authorization based on the available group including concurrent events (“discursive”). A subtle example is revocationa concurrent with useb, followed by revocationc concurrent witha but afterb: revokinga can reauthorizeb even thoughc followsb. Concurrency is not transitive. Thus a property’s dependence cannot safely be inferred just by looking at direct time order. This motivates distinguishing what may be stored/broadcast from what currently affects queries. [Q7] The three stated security invariants are:precursor-based authorization is unchanged by adding events, while current authorization can change through authorized revocations; a changed query result requires an authorized newly added event; and an invocation unauthorized now remains unauthorized when backdated. These are specifications of the intended behavior. The paper’s explanation that the full Spec.2supports them is not itself a mechanized proof of all Spec.2features. [Q8] ## What the Verus case study reports The three verified restrictions separate the difficult features. First, assign capabilities are fixed before creation and cannot later change. Second, the creator may grant assign rights after creation, but nobody may revoke. Third, assign rights are initially granted and the creator may revoke them, but new grants are not introduced afterward. The third case permits concurrent assign/revoke conflicts; it avoids mutually revoking equally privileged entities. Supporting both grants and revocations in one algorithm, post-creation delegation, query/membership capabilities, self-revocation, public joining, sparse replication and group changeover are future work. [Q10,Q11,Q12] Specification functions describe pure mathematical behavior; executable functions have contracts linking their results to it. Figure4illustrates a log contract accepting exactly the events authorized by the specification, with an explicit fresh-identifier availability precondition. It is a shortened code example with ellipses, not the complete executable implementation. Authors report total and pure queries, precursor authorization as a group type invariant, and the restricted constructions supporting current authorization/revocation safety. If correct replicas eventually hold the same chronicle, deterministic total queries give the same answer. That conditional convergence argument does not prove dissemination, bounded latency, or settlement in a perpetually changing history. [Q9,Q10,Q11] Totality has a material trust boundary. Authors report modifying vstd to add no_unwind contracts, assuming standard-library functions terminate and allocation/randomness system calls do not panic. They also add the assumption that cloning a HashSet preserves its elements, conditional on Rust std correctness. Ghost specifications and proofs impose no runtime checks according to the paper; the paper provides no throughput, memory or latency experiment demonstrating a numerical runtime saving. Its “zero runtime cost” refers to erasing verification annotations, not to a proof that the algorithms execute for free. [Q9,Q11] The evaluation is a proof-of-concept experience report. It supplies no complete table of proof obligations, solver times, source/proof line counts, hardware measurements, test-population results or comparative performance study. The artifact README says verification “should complete in a hand full of seconds”; this is an informal expected duration, not a saved timing measurement. A practical difficulty was replacing unsupported iterator combinators with for loops and proving their invariants; authors call this among the most time-consuming parts. Their claim that Verus is accessible/future-proof is an author judgment, not a measured user-study result. [Q11,Q13,S0] ## Static artifact comparison The paper-linked repository was retrieved at commit3d6bdaf63c192ada9039f4f61127744465827ed0. Its README identifies Verus release0.2026.01.23.1650a05. The Makefile invokes Verus on main.rs, which imports separate modules for the chronicle, three authorization variants, types, helpers and assumed specifications. I inspected the whole Rust source tree. The HashSetclone assumption is explicit; the only external_body in these sources wraps printing. No assume/admit proof escape appeared beyond that declared assume_specification and imported library axioms. This describes these project files, not the full trusted Verus/vstd closure. [S0,S1,S2,S3,S4,S5,S6,S7,S8,S9] The source makes further simplifications concrete. EntityID/EventID areu64, and Chronicle::find_free_id scans from0 for a locally unused identifier under an explicit availability precondition. Events contain the full predecessor set. There is no cryptographic hashing/signature verification, replica transport or join operation in these project modules. Grant/Revoke operations target an entity’s SetName authorization, without the full Spec.2grant-identifier/delegation structure. The immutable case consults setup_grants; the monotonic case permits creator grants; the non-monotonic case treats all entities as initially able to SetName and disables that right when a matching revocation appears in the relevant history. A type invariant requires all stored events to be causally authorized. name’s executable result must equal its specification’s latest concurrently authorized SetName values. These contracts support the stated restricted authorization layer; they do not implement the complete hash-chronicle data type. [S1,S3,S4,S5,S6,S7] main.rs supplies four hand-written scenarios with proof assertions: reject Dave’s unauthorized assignment and retain two concurrent names; reject an unauthorized grant and a use concurrent with its grant; accept a causally valid backdated assignment but exclude it from current name results; and observe{name1}→{name1,name2}→{name1}when a concurrent revocation arrives. I read these scenarios without executing or re-verifying them. Some chronicle clones are executable statements labelled “for verification purposes only”; the general proof-erasure statement should not be read as a measured guarantee that this entire example has no verification-related executable work. [S8] The paper’s reported no_unwind experiment cannot be reconstructed from this snapshot alone: no no_unwind annotation or modified-vstd patch occurs in the acquired project files. The Nix/Cargo metadata point to external Verus/vstd sources, which I did not inspect. Thus the paper’s conditional totality claim remains attributed to the authors; absence in the project snapshot does not establish that their separate experiment failed. The README’s expected fast verification was not reproduced. [Q9,S0,S1,S8,S9] ## Contribution and read scope This paper directly adds a verified-Rust authorization case study to the distributed-systems collection. It isolates the trust placed in replication, cryptographic identity, library specifications and resource-related behavior. Its potential use in evaluating proof-writing agents is my inference: assess the exact restricted capability policy and trusted library additions before calling a whole system verified. The paper has no TLA+ or LLM experiment. [Q9,Q10,Q11,Q13] Read all8PDFpages,37references,all4figures,both complete mathematical specification boxes and all3security-invariant formulas; inspected every page render. The final PDFpage contains all37references. Read all9Rust source files,README,Makefile,Cargo.toml,flake.nix and relevant lock metadata;15static text files acquired withSHA256/Gitblobidentities. External Verus/vstd dependencies and repository scenario images were not inspected. Official arXiv and inventory PDFs are byte-identical. No author execution, compiler, solver or prover run.
    • limits: validauthenticatedeventualchronicle;3simplifiedauthorizationvariants;modifiedvstd/librarytrust;fullcombinedpolicyfuturework
    • how much was read: most of it read
    • source
    • record id: towards-system-oriented-formal-2026
  • TraceFix (2026)
    • title: TraceFix: Repairing Agent Coordination Protocols with TLA+ Counterexamples
    • what: Claude Opus 4.6 turns a task description into a topology of agents, locks and channels. It writes PlusCal for each agent, runs TLC, and repairs from failures. The checked processes become runtime prompts.
    • number: 48 of 48 tasks reach TLC verification; 30/48 pass first try; hard tasks 4/16 first try
    • number: 29 repair attempts: 20 deadlocks, 5 timeouts, 3 syntax errors, 1 undrained channel
    • number: Mean about 594 s and about 4.33 per task - number: 48 tasks, 16 scenario families, all fully TLC-verified; 62.5% first attempt; none over four repairs - limits: Progress is not checked. Repairs for timeouts can reduce fidelity. The runtime monitor checks the topology, not the order of steps. A bounded model-checking pass does not prove that real agents terminate. - how much was read: most of it read - source; notes: TraceFix: generated PlusCal coordination protocols, with important lim - record id: `tracefix-2026` - Tridirectional Reentrancy Guard Verification (2026) - title: Tridirectional Discriminating-Power Formal Verification of Smart Contract Reentrancy Defense Against Production-Deployed Solidity Source - what: Formalizes the OpenZeppelin reentrancy-guard pattern against a Lean 4 state-machine model of production Solidity source. Three machine-checked directions cover a DAO 2016 negative attack instance, Compound v2 positive correctness, and an Aave V3 flashLoan boundary mutant; a capstone composes the sealed protocol proofs. The proof discipline separates source-level predicates, protocol instantiation theorems, and a no-retrofit conjunction capstone. The corpus has 13 theorems across four layers, CI checks theorem and axiom records, and a minimal-diff Aave mutant tests sensitivity to one structural regression. The authors publish tagged Lean source and reproduction commands. - number: 13 machine-checked theorems - number: zero sorry and zero user-introduced axioms - number: [propext]-only axiom records - number: approximately 8,538 Lean lines - limits: Correctness is relative to the Lean state-machine abstraction and its Solidity/source-faithfulness and compilation assumptions. The model assumes honest protocol-internal accounting; borrowers may be adversarial. Scope is one attack class and one defense pattern, with live cross-protocol evidence confined to lending-family Compound v2 and Aave V3 plus DAO history; read-only/cross-function reentrancy and other OpenZeppelin patterns remain future work. The boundary mutant is hand-constructed (N=1). - how much was read: most of it read - - record id: `tridirectional-reentrancy-guard-verification-2026` - Velvet (2026) - title: Velvet: A Foundational Multi-Modal Verifier for Imperative Programs in Lean - what: Embeds imperative programs and contracts in Lean. Verification conditions are generated automatically. When automation fails, it leaves ordinary Lean goals, and humans or AI tactics finish them. - number: On average 3.3x fewer total lines than Dafny on manually verified case studies (Section 4, pp. 9-11) - number: 27 VERINA benchmarks; 618 non-comment LOC - number: 21 automatic, 6 manual - number: 3.67x slower than Dafny; all under 45 s - limits: The evaluation is manual verification, not an LLM benchmark. No evidence that agents succeed more often. - how much was read: most of it read - source; notes: Loom/Velvet paper and technical boundary - record id: `velvet-2026` - Verified MCP Gateway (2026) - title: Formal Verification of Agentic MLOps Protocols: Model Checking and Liveness Guarantees in Distributed Model Context Protocol Workflows - what: A gateway sits between an LLM agent and its tools (Model Context Protocol, MCP, a standard for LLM tool calls). Before each tool call it checks, against a hand-written state machine, that the call keeps three temporal-logic rules true: no deadlock, every GPU that is handed out is eventually returned, and no two agents write the same network folder at once. - number: 500 multi-agent training workflow traces, chain depth up to 14 tool calls - number: reachable states at depth 14: 196,608 unconstrained vs 672 with guards (99.66% fewer) - number: deadlocks: 54.2% (vanilla MCP), 33.6% (ReAct retry), 18.4% (static DAG check), 0.0% (verified gateway) - number: task completion 99.4% vs 38.4% for vanilla MCP; wasted GPU hours 0.2% vs 41.8% - limits: The state machine, its 12 tools and the three properties are written by hand for one production system; the paper does not say how the 500 traces were produced. The 'liveness' property is enforced by checking one step ahead at run time, so it is a guard, not a proof about all executions; there is no theorem or proof-assistant artifact. - how much was read: most of it read - source; notes: Formal Verification of Agentic MLOps Protocols (2026) - record id: `verified-mcp-gateway-2026` - Verifying Graceful Degradation in a Distributed Malware-Detection System with SPIN (2026) - what: The authors model, in Promela, the endpoint side of a Bitdefender-style malware-detection system that falls back from a primary server to a legacy server to a weaker local scan, and check six properties written in temporal logic (five safety, one liveness) plus deadlock freedom with the SPIN model checker. - number: All six properties hold on the core 1 endpoint x 1 scan model: 6,168 states stored, depth 101, under 1 second (Table 2) - number: Streaming model (1 endpoint, 2 scans): 314,527 states; concurrent model (2 endpoints, 1 scan): 22,177,616 states (Table 4) - number: 2 endpoints each with 2 scans ran out of memory, so no result - number: 4 reachability trap claims all violated, showing the checked behaviors occur (Table 3) - limits: Assumes the transport is reliable (no loss or duplication), deadlines are untimed nondeterministic choices, and two detection contracts: the full servers always give the right verdict (A1) and the reduced scan never flags a benign file (A2). Finite instances only; unbounded endpoints and scans need parameterized techniques left to future work. The model is hand-abstracted from the production system and not tied to its code. - how much was read: most of it read - source; notes: ## Graceful degradation in a malware-detection system with SPIN (2026) - record id: `verifying-graceful-degradation-in-2026` - Vero (2026) - title: Vero: Can AI Agents Build Formally Verified Software Repositories? - what: 43 multi-module Lean repositories with supplied APIs and 2,705 specifications. Agents either write code plus proofs, or fill in proofs for given code. - number: Codex/GPT-5.5 xhigh: 27/43 joint, 25/43 proof-only - number: verified_ironkv: 19/22 joint, 22/22 proof-only - number: Audits find contradictory specs and proof/runtime mismatches - number: 43 instances - limits: The 22 IronKV targets are not the full deployed IronKV proof. `implemented_by` lets tests run one implementation while the theorem describes another. - how much was read: most of it read - source; notes: Vero: repository generation, including a limited IronKV instance - record id: `vero-2026` - Welder (2026) - title: Welder: Compositional Liveness Verification of Cluster Control Planes - what: Welder proves, for each controller, that it makes progress and limits its requests. This statement is called the CORE spec. It then combines the proofs of controllers that fit together. The authors verified the ReplicaSet, Deployment, StatefulSet and RabbitMQ controllers. - number: 1.5 person-years - number: proof lines: CORE 37,487 (ESR 36,215); executable 3,180; model 3,915; trusted 1,081; about seven minutes to check - number: analysis of 188 reported controller bugs claims CORE excludes 178 (95%) - number: seven bugs found during verification; zero in 629 functional, 1,302 controller-crash, 677 Pod-crash tests - limits: Features left out of the success condition are not checked. The proofs assume that faults eventually stop. Controllers that depend on each other in a circle need separate reasoning. Four controllers lack full feature parity with the upstream versions. The evidence on AI is qualitative only. - how much was read: most of it read - source; notes: Welder: Compositional Liveness Verification of Cluster Control Planes; notes: P07. Welder: Compositional Liveness Verification of Cluster Control Pl - record id: `welder-2026` - Wirehead Rocq proofs (2026) - title: Toward Formal Verification of a Lock-Free Distributed Double Buffer Cache - what: A master's thesis that proves, in the Rocq proof assistant, six properties of the swap algorithm in Wirehead, a MongoDB-based cache that lets many data generators feed one training job. The author models each MongoDB call as a plain function and the algorithm as a state machine where one process takes one atomic step at a time. - number: 4 Rocq files, 3,470 lines (thesis text says 3,475 in one place), 144 proofs, 2 Admitted, 3 axioms (all on the user-supplied chunk function) - number: Safety.v 1,339 lines; Liveness.v 1,342 lines; DB.v 513; Algorithm.v 276 - number: about 800 lines of Safety.v are auxiliary invariants needed only for liveness - number: 5 of 6 properties fully checked; progress depends on 2 Admitted lemmas - limits: Assumes one MongoDB instance, crash-stop failures only, atomic database calls, and weak fairness of the scheduler; the match between the Rocq model and the Python code is asserted, not proved. Crash transitions and the real timeout-based lock recovery are not modeled. - how much was read: most of it read - source; notes: Toward Formal Verification of a Lock-Free Distributed Double Buffer Ca - record id: `wirehead-rocq-proofs-2026` - A Theorem Prover Based Approach for SAT-Based Model Checking Certification (2025) - what: The tools nuXmv and PdTRAV find invariants (facts that stay true in every reachable state) showing a hardware circuit is safe. Python turns the result into PVS theories. Then PVS and Yices check safety on the original model, even after the solver simplified the model first. It comes before the Certifying rlive work. - number: 105 distinct problem instances - number: 166 of 189 runs certified by PVS (runs include different transformations of the same benchmark) - number: certification limits 8 GB / 3600 s; solver 4 GB / 1800 s - number: invariants one to two orders of magnitude smaller than original benchmarks, in AND gates - limits: It covers only safety of circuit models ("something bad never happens"). Liveness ("something good eventually happens") and verifying the translator are left as future work. - how much was read: most of it read - source; notes: Related work absent from the first pass: certifying transformations as - record id: `a-theorem-prover-based-2025` - ACL2 dynamic-stake DAG BFT nonforking (2025) - title: Formal Verification of Blockchain Nonforking in DAG-Based BFT Consensus with Dynamic Stake - what: Formalizes a DAG-based BFT consensus protocol whose validator set and stake can change at every block, and machine-checks blockchain nonforking in ACL2 under a less-than-one-third faulty-stake condition for every active committee. The labeled transition system models validators, certificates, DAGs, network messages, rounds, dynamic bonding/unbonding, lookback active committees, anchor elections/commitments and block generation. Bonding changes become active only after a fixed lookback, resolving the DAG/blockchain circular dependency. The proof establishes interdependent invariants for committee agreement, certificate and DAG nonequivocation, previous quorums, anchor presence/voters/paths/nonforking, and blockchain nonforking. Anchor nonforking uses voter/quorum stake intersection; certificate nonequivocation uses signer quorum intersection, and both are proved together because each depends on the other through committee agreement. The ACL2 development has about 20,000 lines and verifies in under one minute on an Apple M3 Max (under two minutes single-core), applying to arbitrarily long executions and arbitrarily large states. The model intentionally includes deadlocking and other executions beyond an implementation, so safety transfers to implementations as subsets but liveness is not established. - number: faulty stake < one third of each active committee - number: lookback lkbk≄1; committee can change completely every block - number: about 20,000 ACL2 lines - number: under 1 minute on Apple M3 Max 16 cores; under 2 minutes single core - limits: Correct validators follow the abstract protocol and faulty validators are Byzantine; each active committee must have faulty stake at most fstk(w)<nstk(w)/3, with quorum stake qstk=nstk−fstk. Signatures/addresses are idealized and cryptographic details are omitted. The model is nondeterministic and a superset of implementation executions; validators can advance without certificates and deadlock, and the authors explicitly note that proving liveness would require augmenting the model. Only blockchain nonforking and related invariants are proved; performance, synchronization, transaction validity, fairness and implementation behavior are not evaluated. The ACL2 state-transition system and nonforking predicate are trusted modeling boundaries. - how much was read: most of it read - - record id: `acl2-dynamic-stake-dag-bft-nonforking-2025` - Amazon Verus blog (2025) - title: Developing provably correct Rust code with Verus - what: Amazon explains Verus specifications on existing Rust code, human-supplied high-level proof guidance, fast solver feedback and current Amazon/open-source examples including Nitro, Anvil and storage systems. - number: The post says Verus can provide feedback in under a second in practice. - limits: The post is an engineering overview; it does not present a controlled benchmark or a complete deployment proof. - how much was read: most of it read - source; notes: AWS: production proofs exist; published accounts do not attribute them - record id: `amazon-verus-blog-2025` - Atmosphere (2025) - title: Atmosphere: Practical Verified Kernels with Rust and Verus - what: Atmosphere is a verified kernel written in Rust and checked with Verus. The notes use it to count human effort and proof size. - number: proof-to-code ratio 3.32:1; replay under 20 seconds; under 2.5 person-years - number: 6K executable lines, 20.1K proof/spec lines: 14.3K spec and 5.8K proof/hints; 2.9K of specs for the top-level syscall model - number: 6K executable lines, 3.32:1 proof/code ratio, under twenty seconds verification, under 2.5 person-years - number: less than 2.5 person-years - limits: The source contradicts itself. Section 6.3 says about two person-years, with fourteen months on verified code. The abstract and introduction say under 2.5 person-years in total and 1.5 for verification. The guarantees cover the kernel's functional correctness and isolation. They do not cover liveness of distributed systems. - how much was read: most of it read - source; notes: Atmosphere: count specification work and acknowledge inconsistent tota; notes: Atmosphere: Practical Verified Kernels with Rust and Verus - record id: `atmosphere-2025` - AutoMan (2025) - title: AutoMan: Facilitating Verified Distributed Systems Development Through Automatic Code Generation and Manual Optimizations - what: AutoMan generates Dafny implementation code and proof obligations from a protocol specification. The generated code is checked separately. Hand-optimized code may replace generated code if it meets the obligations showing that the implementation matches the spec. The cases are Multi-Paxos from IronFleet, PBFT, a sharded key-value store, and CausalMesh. - number: Multi-Paxos: 2,119 generated lines, about 200 manual annotation lines, about 4 person-hours; optimized version +2,200 lines, about one person-week; IronRSL needed about 8,100 lines - number: KV store: about 80 manual lines in about 2 hours, plus about 1,100 lines and 3 person-days; IronKV 2,700 lines - number: PBFT: about 440 lines (6 h) plus about 2,400 lines (1 week) - number: development effort reduced 70%-97% for Multi-Paxos at over 97% of IronRSL's throughput - limits: Actions that say only that some choice exists must be implemented by hand. Operations on collections sometimes need hand-written proof hints. AutoMan gives no guarantee about proof automation. It does not cover protocol redesign. It claims that the implementation matches the spec and is safe. It proves no new theorem that a response eventually arrives. - how much was read: most of it read - source; notes: AutoMan: Facilitating Verified Distributed Systems Development Through - record id: `automan-2025` - Basilisk (2025) - title: Basilisk: Using Provenance Invariants to Automate Proofs of Undecidable Protocols - what: A Dafny-based tool generates history-preserving asynchronous protocol models and mechanically checked provenance, monotonicity and ownership invariants. Atomic sharding traces current local values or collection entries to past steps and messages. Users supply host definitions, selected hints/labels and final safety proofs. Evaluation reports 16 protocol-model proofs, with 10 Kondo comparisons, final proof sizes and verifier times. Reconstructs host/network provenance and the atomic-shard algorithm, collection correlation failure and epoch-reset counterexample. Records formal safety obligations, all 16 protocol properties and every numerical comparison cell. Separates generated invariant proofs from user safety proofs, model correctness from implementation correspondence, and measured final LOC from development effort. Preserves incompleteness, syntax restrictions and all trust limits. - number: 16 protocols - number: Paxos: 418 lines, 0 user invariants, 486 proof lines, 24.6 s - number: Multi-Paxos: 447 lines, 0 user invariants, 565 proof lines, 61.5 s - number: Paxos row: 418 model lines, no user invariant clauses, five monotonicity annotations, no provenance hints, 444 safety-lemma lines, 486 total proof lines, 24.6 verification seconds - limits: §§3,5.2: Model has arbitrary host counts, nondeterministic single-host atomic steps, history of all Hosts snapshots and a monotonically growing set of sent messages. Receive selects an addressed message already sent; repeat selection and nondelivery overapproximate duplication, delay, reordering and loss. Messages carry sender identities; arbitrary Byzantine forgery or compromised hosts are not modeled. History is proof state, not a measured runtime logging cost. §3: Network provenance links a sent message to an adjacent pair of historical sender states and a matching send step. Host provenance for witness q requires q now, no initial state satisfying q, and a historical crossing from not-q to q through a candidate modifying step. These statements concern well-formed initialized protocol executions, not arbitrary malformed history sequences. §§3.3,5.3: Provenance alone identifies a past producing event. Monotonicity/non-equivocation invariants are needed to move from past sender conditions to present facts. Ownership invariants/labels are inherited from Kondo; generated invariants are individually/local mechanically checked, not assertions trusted merely because the generator produced them. §4.1: An atomic shard is a subset of local variables always modified together. If the current tuple is not an admissible initial tuple, it was established in one candidate update step. Maximal shards retain shared-message correlations lost by independent singleton witnesses. This does not mean every member of a collection remains correlated with the latest scalar value. §4.2: Static footprints overapproximate variables a step may update; excess candidates weaken the resulting provenance disjunction. Underestimating footprints would produce incorrect invariants. Prototype rejects a step updating different variables under different conditions, e.g. if c then x:=5 else y:=6. User must split this into separately guarded steps. §§4.2,5.3: Collection fields also receive refined singleton shards, allowing each noninitial set/map entry to be traced to its insertion step. Prototype supports explicit Dafny record-update syntax only, rather than general relational updates. A step can receive and send together; multiple sends/broadcasts in one step are described as an easy extension but not implemented or evaluated. §5.4 reader qualification: Formal obligations are Init⇒I∧φ and I∧φ∧Next⇒Iâ€Č∧φâ€Č. Thus the actual method proves safety with induction on I∧φ and may use current φ in the step proof. Figure 5/prose describing a proof that I implies safety must not be read as requiring or establishing the stronger standalone I⇒φ in every example. The final safety proof remains user-written. §§5.4,6.4: Failure may reflect a too-weak generated invariant or an unsafe model; the verifier points to the failing host-step obligation, but does not automatically decide which explanation is true. Reader qualification: SMT proof failure can also arise from solver incompleteness. Additional provenance witnesses or manually written invariant clauses may be needed; Basilisk is explicitly incomplete for undecidable logics. §6: First six protocols were used to develop/refine provenance and atomic sharding; the remaining ten were applied later. All sixteen models/invariants are reported outside EPR. This is an author-built benchmark suite, not a blinded independent user study or proof of completeness for all protocols outside EPR. §§6.1–6.2: Zero manually supplied invariant clauses across 16 does not mean zero user reasoning. Six of 64 host-provenance invariants need explicit witness hints, across Paxos-Dynamic, Raft election and Multi-Paxos; monotonicity annotations, ownership labels and safety lemmas remain. Distributed Lock and both ShardedKV variants already had fully automatic Kondo ownership proofs. §6.2: Kondo comparisons cover only ten protocols and modify models to split receive/send; Kondo also needs synchronous protocol definitions. Final proof LOC excludes failed/revised proof attempts and does not measure person-time, cognitive difficulty or novice success. Basilisk uses more proof LOC for some simple cases and is not faster for every ownership example. §6.3: Timings check final history-preserving asynchronous proofs including generated/user invariants and lemmas; Kondo synchronous-proof verification is excluded. Invariant generation is under two seconds in every case. Table 1 reports Multi-Paxos 61.5 seconds; the prose phrase in a minute is approximate, not a strict sub-60-second bound. No repetitions/variance or controlled proof-authoring experiment is reported. §6.4: Epoch resets create implicit multi-step relations that sharding cannot infer. Adding an event at current year and clearing events on year increment requires a witness relating every current entry to current year; merely finding its historic insertion year is too weak. All three hinted benchmark protocols have collection resets at epoch changes. Footprint imprecision is another possible weakness, not observed by authors in these protocols. §6.4: Safety specification is trusted. The user must trust the model describes actual code or separately prove correspondence; this work does not verify production implementations. Dafny, dependencies and hardware are trusted. Crash-fault safety is the scope; no liveness or Byzantine correctness proof is provided. §§6–8,Appendix A: No runtime throughput, production bug-finding or LLM-agent experiment is evaluated. Artifact developed/tested on M3 MacBook Pro with MacOS Sequoia; this appendix statement is not an explicit platform declaration for every published timing. Artifact and external proof bodies were not executed in this reading. - how much was read: most of it read - source - record id: `basilisk-2025` - CADP model of Algorand BBA* (2025) - title: Formal Modeling and Verification of the Algorand Consensus Protocol in CADP - what: Builds a probabilistic process-algebra model of Algorand’s BBA* phase, translates it to CADP/LNT and checks equivalence-based noninterference. Honest nodes are modeled first; malicious nodes can coordinate a boycott that forces an empty-block commit, exposing when adversarial behavior changes observable outcomes. Models committee self-sortition, bit propagation, three step types (coin fixed 0/1 and genuinely flipped), vote counters and commit thresholds. The malicious extension uses a high-level boycott action; CADP compares hide(BOYCOTT) and cut(BOYCOTT) under weak and branching bisimilarity. Parameters instantiate four nodes, committee size three, threshold two and honest stake 0.8; the model explicitly documents stronger synchrony and honest-majority abstractions. - number: n=4 nodes, expected committee c=3, vote threshold t=2 (§4.1/4.2) - number: honest stake h=0.8; honest leader probability proxy ph=0.7424; verifier selection pv=0.75 - number: All-honest weak and branching BSNNI checks PASS; with 2 malicious nodes both FAIL (§4.4) - number: More than one malicious node can hinder consensus and force empty block in the four-node model - limits: Formal model is fully synchronous with instantaneous delivery and no clock/message faults, unlike Algorand’s partially synchronous deployment. Tokens represent independent users, approximating Honest Majority of Users via stronger stake-control assumptions; cryptography and million-node scale are abstracted. Verification uses n=4, c=3 and two malicious nodes, so results demonstrate attack structure rather than deployment-scale probability. - how much was read: most of it read - - record id: `cadp-model-of-algorand-bba-2025` - CCF smart casual verification (2025) - title: Smart Casual Verification of the Confidential Consortium Framework (CCF) - what: Industrial experience applying TLA+ specification/model checking, weighted simulation and implementation trace validation to the existing C++ Confidential Consortium Framework. Separate node-consensus and client-history specifications are aligned with production protocol details and incorporated in CI. The paper reports six consensus bugs found/fixed and a clarified read-only consistency limitation, plus tooling/effort and state-exploration measurements. Reconstructs all six safety/liveness cases and the unsuccessful first fix, distinguishes trace compatibility from universal implementation refinement, records granularity alignment via composition/stuttering and incomplete-state reconstruction. Saves all scale/coverage rows, effort figures, counterexample sizes and issue pointers. Preserves TEE/model trust, bounded exploration and non-linearizable read-only semantics; no all-executions C++ correctness theorem is claimed. - number: Six subtle bugs found, five concerning safety and one liveness - number: 400 LoC Trace spec; 88 commits to it and 107 changes to the consensus spec; implementation 63 kLoC C++ - number: six subtle bugs found - number: 63 kLoC in C++ (§2) - limits: §§1–2: CCF runs application logic inside trusted execution environments while treating operators, host OS/hypervisor, network and storage as corruptible. This paper checks distributed protocol behavior under modeled failures, not hardware/firmware isolation, enclave security, cryptography, all 63k C++ LOC, or arbitrary Byzantine behavior of the protected consensus code. Production use in Azure Confidential Ledger is context, not evidence that every production behavior is covered. §§1.1,4,8: Smart casual verification combines formal specification, finite model checking/simulation and tests/trace checks. Consensus spec is unbounded but exhaustive checking restricts terms, requests and reconfiguration sequences. No TLAPS safety/liveness proof for all sizes or universal code-refinement proof is reported. Most CI exploration relies on bounded simulations because sufficiently realistic exhaustive exploration is too expensive. §2: CCF returns transaction results before replication; clients separately query Pending/Committed/Invalid status. A returned result may later be invalidated. Committed read-write transactions are strictly serializable; committed read-only transactions are serializable and may be stale. Pending branches offer fork-like consistency rather than arbitrary results. Broad prose about all committed transactions being linearizable needs the explicit read-only exception. §2: Transaction IDs are lexicographic term/index pairs. If two transactions commit, ID ordering agrees with execution ordering. Ancestor Commit says committed <t,i> implies same-term <t,j>, j≀i, committed. This concerns transaction identity/status, not a proof that any stale read immediately observes the newest committed write. §2.1: CCF customizes Raft with signed Merkle-root transactions, messaging without RPC correspondence, optimistic sentIndex advances, express catch-up, CheckQuorum, bootstrapping/reconfiguration and retirement/ProposeVote. A transaction is committed only after a subsequent signature is committed. The actual combined protocol needs verification; citing the base Raft proof does not establish these extensions. §2.1 reader qualification: Early description says an AE-ACK carries the last transaction in the follower log, while the Inaccurate AE-ACK bug/fix later constrains that index to the end of the received AE. The historical/protocol-description distinction must be retained rather than treating the early sentence as the final safe response rule. §§2.1,4: Reconfiguration needs majorities in each active configuration, rather than a majority of their union. A removed node remains retiring until retirement information is safely committed for future leaders. CheckQuorum steps down an isolated leader, but absent delivery/scheduling assumptions this is not a theorem that all executions make progress. §4: Consensus has 17 actions/13 variables, 12 local-state mappings plus network. Parameterization includes every nonempty initial node subset with any member as initial leader. Locally initiated timeout/signature/candidacy/step-down choices impose no clock synchrony. LogInv compares pairwise committed-log prefixes; AppendOnlyProp prevents committed-prefix rollback over time. Another 27 properties include MonoLogInv, requiring term increases only after signatures. §4: Simulation explores behaviors to bounded depth under a time quota; authors manually downweight failures to promote forward progress. Q-learning was implemented in TLC but no state-hash feature set beat manual weighting. More progress-rich traces may help find bugs but do not constitute exhaustive failure coverage or proof of liveness. §5: Client model uses append-only history and logBranches, independent of node count. History includes read-only/read-write requests/responses and status responses, but omits status requests/Pending replies. A simple shared value appends transaction identifiers so conflicts and observations are visible. It is a deliberately selected application workload, not a proved reduction of all arbitrary CCF application semantics. §5: A new branch can be any prefix of an existing branch containing the last committed transaction. Requests may execute at any still-active leader/term. PrevCommittedInv checks same-term committed ancestor statuses; ObservedRoInv demands that a subsequently committed read-only response observe a read-write transaction whose response preceded its request. The latter expectation is falsified and documented, not a proved CCF invariant. §6.1: Scenario driver serializes consensus execution deterministically and mocks governance/networking/other components, injecting loss/reordering/partition/delay. Original 13 scenarios and about 1.6k unit-test/2k Python end-to-end LOC precede the effort; Table 1 gives later exact scope counts. Initial fuzzing was abandoned for insufficient interesting coverage. Driver/mock accuracy is a boundary, as demonstrated by retirement bugs. §6.1: Driver uses a global logical ordering clock; distributed Lamport/vector alternatives are suggested but not implemented here. Fifteen added logging statements capture stable states at message and role-change points, immediately after a global lock for state changes. Constant-space values such as log lengths are recorded, not full log entries. Production logging compiles out, so the checks use instrumented test executions rather than continuous production monitoring. §6.1/§6.5: Traces initially remove/deduplicate bootstrapping events because early consensus spec omits that phase; later specification is expanded to model bootstrapping more faithfully. These describe successive coverage stages. A successful preprocessed trace validates only its retained observations and modeling assumptions, not excluded initialization behavior. §6.2: Trace spec checks existence of a spec behavior consistent with observed events/values: T∩S is nonempty. Nondeterministically reconstructed hidden state is existential. A successful finite trace check is evidence for those observations, not proof that all completions, all execution traces or unlogged state transitions meet the spec. If logging or mappings omit a decisive distinction, an incorrect implementation could remain compatible. §6.2: Send actions constrain current state, invoke high-level action and assert matching successor messages. Network changes from set to multiset to represent duplicate/resend occurrences. Trace network abstractions also explore ordering/duplication/loss guarantees. Such abstraction choices affect what is observable and accepted; they are not runtime network guarantees inferred from traces. §6.2.1 Listing 5: UpdateTerm·HandleAppendEntriesReq composes two model actions into one implementation receive. IsFault·Next admits unlogged network faults before a step; send-response events may stutter high-level variables when already modeled by another action. Composition hides intermediate states and stuttering changes observation granularity, so correctness depends on the mapping retaining semantically important events. Merely making a mismatch disappear is not an independent proof. §6.2.2–6.3: Start with a happy-path trace, add many assertions and cross-references, debug source and formulas. Invalid traces may indicate bogus logging, incorrect mapping, specification error or implementation bug; failure lacks an ordinary model-checking counterexample. Longest matching prefixes, unreachable-state graphs, failing subformulas and an unsatisfied breakpoint support diagnosis. §6.4: DFS stops after finding one compatible behavior, avoiding BFS enumeration of alternatives; a consistency trace goes from about one hour to under a second. This is an author example without trace-size distribution or controlled speedup suite, and does not mean all traces validate in under a second. Existential acceptance is essential to that optimization. §6.5: Logging/driver enhancements took about one day. Consensus alignment/tooling took two engineer-months over four months, including TLC composition/DFS/debug support, discrepancy diagnosis and abstraction design. Writing about 400 lines of Trace was minor; Table 1 counts 369. Trace saw 88 commits and consensus spec 107 changes. This is observed project effort, not a controlled productivity study. §6.5: Client consistency validation uses REST observations without source instrumentation, reconstructs other clients’ hidden transactions from observed IDs, and took about one engineer-week over two weeks, mainly by CCF experts. Smaller spec, previous experience and reused TLC changes confound a simple comparison with initial consensus effort. §7 Table 1: Approximate state counts/rates are measured on Azure DC8s v3. A log line is largely equivalent to a model action, according to authors, not a formal equality of semantic coverage. Different abstraction sizes, bounds, durations and distinct/generated-state counting prevent treating orders-of-magnitude state counts as a calibrated defect-detection probability. §7: Six serious consensus bugs comprise five safety issues and one liveness issue, found by combined modeling, source scrutiny, trace mismatch, simulation and functional/end-to-end reproduction. They are not six independent discoveries by model checking alone. Read-only non-linearizability is an additional documented consistency ambiguity and accepted behavior, not a seventh fixed consensus bug. §§7–8: Authors report all six fixed before user impact/customer reports; software had already been deployed. One-node-at-a-time operational reconfiguration masked the election bug, and absence of an incident from the first bad commit fix was attributed to chance. No external incident audit, current repository verification or independent bug reproduction was done in this reading. §§8–9: Paper chooses model checking for developer accessibility rather than deductive proof, despite compute cost. AI-assisted proof search is future possibility with a reference to neural theorem proving, not an experiment using LLM agents. Related-work sentence says IronFleet and Verdi both proved Raft; reader qualification: IronFleet uses a Paxos-based replicated state machine, so do not propagate that comparison as fact. - how much was read: most of it read - source - record id: `ccf-smart-casual-verification-2025` - ChonkyBFT (2025) - title: ChonkyBFT: Consensus Protocol of ZKsync - what: Presents ChonkyBFT, a partially synchronous committee BFT protocol for ZKsync with one voting round, single-slot finality, quadratic communication, and n≄5f+1. Safety, validity, and partial-synchrony progress are proved by quorum and timeout lemmas. The Quint specification and Apalache symbolic checking found pseudocode type/definition errors and attack paths; an 18-lemma inductive invariant was checked for bounded parameters. A deployment evaluation measures failure-free throughput, latency, resource use, and replication lag. - limits: At most f Byzantine replicas with n≄5f+1; authenticated reliable point-to-point channels, secure signatures/hashes, and partial synchrony after GST. Liveness additionally assumes block synchrony, periodic retransmission, bounded clock drift, and eventual correct leaders. Formal Apalache checks restrict to six replicas, at most one fault, three views, bounded message/QC sets, so they are model-level evidence. Performance tests are failure-free and exclude block synchronization. - how much was read: most of it read - source - record id: `chonkybft-2025` - Compositional Inductive Invariant Inference via Assume-Guarantee Reasoning (2025) - what: This work splits a TLA+ protocol into components with assume-guarantee contracts (each component assumes something of the others and guarantees something in return). It uses Endive to search for local inductive invariants. It then proves safety with TLAPS for arbitrary instances. - number: two-phase commit: global search 34.82 s, 107 proof steps; local searches 15.44/30.43/6.13 s - number: Mongo Static Raft: global search fails, manual 17-conjunct invariant, 1686 proof steps; local proofs total 372 steps, only one of three local searches succeeds - number: Two-phase commit: global search 34.82 s, 10 conjuncts, 107 proof steps; components 15.44/30.43/6.13 s - number: Mongo Static Raft: global search fails; manual 17-conjunct invariant, 1686 proof steps; components total 372 proof steps but only one of three searches succeeds automatically - limits: Humans split up the spec and write all the contracts. It proves safety only. It uses abstract TLA+, not the MongoDB code. The authors did not measure effort. - how much was read: most of it read - source; notes: Compositional Inductive Invariant Inference via Assume-Guarantee Reaso; notes: Compositional Inductive Invariant Inference via Assume-Guarantee Reaso - record id: `compositional-inductive-invariant-inference-2025` - Crossword (2025) - title: Crossword: Adaptive Consensus for Dynamic Data-Heavy Workloads - what: # Crossword: Adaptive Consensus for Dynamic Data-Heavy Workloads (authored by agents unless marked 🧑) Guanzhou Hu, Yiwei Chen, Andrea C. Arpaci-Dusseau and Remzi H. Arpaci-Dusseau, arXiv:2509.07157v1, 8 September 2025. This reading covers all 30 PDF pages: design, implementation, every evaluation, discussion, 144 references, complete PlusCal/TLA+ specification and model-checking configuration. All eight contact sheets and close views of pages 5, 8, 10–12 and 19–30 were read. PDF and printed page numbers agree. The findings below distinguish author reports from static reader reasoning; no author code or checker was run. [Evidence: Q0, title, abstract and §1, PDF pp.1–2; Q24, Appendix A model-check report and explicit finite scope, PDF pp.19–19; Q37, Appendix A complete Crossword MC.cfg, PDF pp.30–30; literal spans in quotes.json.] Crossword changes how much erasure-coded data each replica must durably store before a log entry commits. More data per replica permits a smaller reply quorum; less data requires more replies. Its motivating Figure 1 profiles Raft payloads under 200-warehouse TPC-C in TiDB and CockroachDB: “~45% are 4KB” and the distributions reach 290 KB and 63 MB, respectively. The paper derives a shard-survival condition, combines it with majority voting, and implements per-entry adaptation in Rust and in a CockroachDB Go prototype. Followers exchange missing shards after commitment. Its evidence is algebraic design reasoning, a reported finite model check, tests and system measurements. The paper says, “It has been model-checked for both linearizability and fault-tolerance properties” and immediately names the finite inputs. The artifact supplies neither an unbounded proof nor a refinement from the model to Rust or Go. [Evidence: Q4, §3.3 complete derivation and Figure 4, PDF pp.5–5; Q7, §3.6 complete protocol changes, PDF pp.7–7; Q8, §4 implementation and Gazette/CockroachDB, PDF pp.7–7; Q24, Appendix A model-check report and explicit finite scope, PDF pp.19–19; Q37, Appendix A complete Crossword MC.cfg, PDF pp.30–30; literal spans in quotes.json.] ## Assumptions and the actual contract The system model uses an odd number n of replicas, asynchronous communication and fail-stop failures. Set m=ceil(n/2) and f=n−m. Balanced policies use Reed–Solomon (n,m) coding, so any m distinct shards reconstruct a payload. A vote means both acceptance of a ballot and durable storage of its assigned shards: “s votes yes to the ballot number of this Accept message and has durably remembered the shards it carried.” The leader retains the entire payload in memory but persists only its assignment. Background gossip remains in memory. Restart recovery, Byzantine behavior and cryptographic shard authenticity are outside this model. Time-based read leases separately assume bounded clock drift; the asynchronous network model alone does not establish lease correctness. [Evidence: Q1, §2 complete background, system model and motivation, PDF pp.2–3; Q3, §3.1–3.2 assignments and Figure 3, PDF pp.4–5; Q4, §3.3 complete derivation and Figure 4, PDF pp.5–5; Q6, §3.5 gossip and Figure 5, PDF pp.6–7; Q11, §4.3 heartbeats, snapshots and leases, PDF pp.8–8; literal spans in quotes.json.] For an acceptance pattern ap, C1 requires at least m distinct replying nodes, including the leader. C2 requires at least d distinct recoverable shards after removing any f replying nodes, with d=m for the balanced family. Majority intersection preserves the voting argument; the second condition preserves payload availability after the allowed crashes. These are different obligations. C2 alone does not prove preservation of the chosen value across changing ballots and assignments, and neither condition promises termination in an arbitrary asynchronous execution. [Evidence: Q4, §3.3 complete derivation and Figure 4, PDF pp.5–5; Q7, §3.6 complete protocol changes, PDF pp.7–7; Q28, Appendix A PreparedConditionAndCommand, PDF pp.22–23; literal spans in quotes.json.] Balanced round-robin policies assign c consecutive shard indices to each node, wrapping around the n indices, with 1≀c≀m. The derived valid region is n≄q≄m and q+c≄n+1; the candidate performance boundary is q+c=n+1. For n=5,m=3,f=2, its three choices are (c,q)=(1,5),(2,4),(3,3). Full replication and single-shard coding become endpoints of one family. Section 3.2’s written range s through s+c would contain c+1 shards if both endpoints were included; the figures and Appendix A’s upper endpoint ShardToIdx[r]+na−1 establish the intended c-shard interpretation. Figure 2 gives the motivating failure: with single shards and q=4, crashing the leader and another accepting node leaves only two shards, below the three needed. The paper's RSPaxos/CRaft comparisons commonly use f=1, whereas Crossword retains f=2. Their throughput comparisons therefore include different availability guarantees, which the graphs label. [Evidence: Q2, §2.4 failure example, Figure 2, PDF pp.3–3; Q3, §3.1–3.2 assignments and Figure 3, PDF pp.4–5; Q4, §3.3 complete derivation and Figure 4, PDF pp.5–5; Q5, §3.4 tradeoff, PDF pp.6–6; literal spans in quotes.json.] One printed intermediate bound needs a saturation qualification. The paper writes SubCover(ap,f)≄q−f+c−1, but shard coverage cannot exceed n. Reader example: n=5,q=5,c=3,f=0 gives a right side of seven although only five distinct shards exist. The round-robin lower bound should be capped by n. The later threshold test against m≀n, including q+c≄n+1 at f=n−m, is unaffected. This is arithmetic about the displayed derivation, not an implementation finding. [Evidence: Q4, §3.3 complete derivation and Figure 4, PDF pp.5–5; literal spans in quotes.json.] ## Protocol, adaptation and concrete cases Each Accept message carries the chosen per-instance assignment; recipients persist their assigned bytes before acknowledging. On failover, a majority Prepare exchange preserves a reconstructible highest-ballot value; the paper permits replacing it with a new command if fewer than d shards of that value can be recovered. The appendix selects a maximum-ballot command and combines reported shards for that command, including matches at other ballots. A complete correctness argument must connect that rule to chosen-value preservation over all earlier ballots, not just count surviving shards in one acceptance pattern. This reading identifies that proof obligation without claiming a counterexample. [Evidence: Q3, §3.1–3.2 assignments and Figure 3, PDF pp.4–5; Q7, §3.6 complete protocol changes, PDF pp.7–7; Q28, Appendix A PreparedConditionAndCommand, PDF pp.22–23; literal spans in quotes.json.] Figure 5 distinguishes committed-but-partial data from committed-and-known data and execution. Followers periodically request missing shards from peers; reconstructed shards are memory-only. Requests are batched about every 20 ms and normally exclude the last 400 KB of accumulated payloads. A peer without a reconstruction reply for ten cycles is skipped. A new leader reconstructs its partial tail synchronously. Low-traffic tails, retrying skipped peers, eventual delivery and leader recovery consequently matter to progress; the text provides mechanisms and experiments rather than a temporal proof covering them. [Evidence: Q6, §3.5 gossip and Figure 5, PDF pp.6–7; Q10, §4.2 gossip details and Figure 6, PDF pp.8–8; Q11, §4.3 heartbeats, snapshots and leases, PDF pp.8–8; literal spans in quotes.json.] The default chooser fits per-follower response time t_s(v)=d_s+v/b_s from a two-second sliding window, updates every 200 ms, and discards the slowest five percent of observations. It considers balanced assignments and uses the (q−1)th smallest follower response-time estimate, because the leader already counts toward q. The stated limitations are no automated unbalanced search and no reaction to fluctuations shorter than roughly one second. Heartbeats and random 300–600 ms election timeouts track failures; the healthy-node count limits q. The CockroachDB integration instead uses payload thresholds, not this regression chooser. [Evidence: Q8, §4 implementation and Gazette/CockroachDB, PDF pp.7–7; Q9, §4.1 complete regression chooser and limitations, PDF pp.7–8; Q11, §4.3 heartbeats, snapshots and leases, PDF pp.8–8; literal spans in quotes.json.] A concrete source inconsistency occurs in §4.1, PDF p.8: the chooser evaluates t_s(v_p/c). Each of c assigned shards actually has v_p/m bytes, so the bytes per recipient are c·v_p/m. With n=5,m=3, c=1 sends v_p/3 but the printed expression predicts v_p; c=3 sends v_p but predicts v_p/3. Thus the printed expression reverses the size trend. It should not be used as the specification of an implementation without resolving the mismatch. No repository revision was inspected, so this is not a claim about executed code or the validity of measured results. [Evidence: Q3, §3.1–3.2 assignments and Figure 3, PDF pp.4–5; Q9, §4.1 complete regression chooser and limitations, PDF pp.7–8; literal spans in quotes.json.] ## Implementations and measured evidence Gazette is async Rust/Tokio with channels. The paper lists 12.7k infrastructure lines and six implementations: Chain Replication 1.1k, MultiPaxos 2.3k, Raft 2.3k, RSPaxos 2.5k, CRaft 2.6k and Crossword 3.4k. It reports “extensive unit tests and fuzz tests” but gives no counts, fault schedules or coverage. The Go prototype modifies CockroachDB v24.3.0a by approximately 1.6k lines. Those listed amounts total 26.9k lines, slightly below §1’s “a sum of 27.3k lines of async Rust”; the paper does not reconcile the counting scope. The paper promises to open-source the code; this reading establishes no repository version or reproduction. [Evidence: Q8, §4 implementation and Gazette/CockroachDB, PDF pp.7–7; literal spans in quotes.json.] Gazette experiments use CloudLab c220g2 hosts, 40 cores, 160 GB RAM and Linux 6.1.64. The regional setting has 1 Gbps links and 4 ms average delay; the wide-area setting spans CloudLab datacenters with about 200 Mbps and 30 ms average delay. Clients share hosts with servers but use disjoint pinned cores; batching is one millisecond. Default static tests have five servers and fifteen closed-loop clients. Requests are half lease-local Gets and half Puts, with eight-byte keys and small, 128 KB or mixed payloads whose normal distributions have ten percent standard deviation. Reported throughput includes reads; latency curves show means and arrows mark P95, not confidence intervals. [Evidence: Q12, §5 evaluation questions and §5.1 setup, PDF pp.8–9; Q13, §5.1 Figure 7 complete static comparisons, PDF pp.9–9; literal spans in quotes.json.] Figures 7–9 report that Crossword follows the favorable endpoint across small, large and mixed data: up to 1.9× coded-protocol throughput for small data, 2× MultiPaxos for large data, and 2.1× alternatives in the mixed workload. Figure 8 varies payload means from 8 B to 256 KB, replica counts 3/5/7/9 and write shares 10/50/100%; at ≄64 KB, the chosen c=1,q=5 case exceeds MultiPaxos throughput by four times in the plotted setting. Figure 8’s cluster-size/Put-share sensitivity reports “up to 2.3x over MultiPaxos” and 1.4× over RSPaxos in its tested settings. These are workload-specific ratios, not universal bounds. At 64 KB Figure 9 reports 71% less critical-path data-transfer/WAL time and logs of 913 MB versus 1,467 MB, a reader-calculated 37.76% storage reduction. [Evidence: Q13, §5.1 Figure 7 complete static comparisons, PDF pp.9–9; Q14, §5.1–5.2 Figures 8–9 and storage/critical-path measurements, PDF pp.9–10; literal spans in quotes.json.] Figure 10 changes conditions about fifteen seconds apart: payload size 64→4 KB, bandwidth 1 Gbps→100 Mbps→1 Gbps, and then two replicas with tenfold worse delay and bandwidth. Throughput is sampled once per second. Adaptation is shown by time traces, not a regret or convergence guarantee. Figure 11 crashes leaders at 15 and 55 seconds, uses a special 1.5-second timeout and disables snapshots. Crossword's first recovery gap is about twice classic protocols' gap because of tail reconstruction; afterward it selects c=2,q=4. RSPaxos becomes unavailable after the second crash, whereas CRaft completes its fallback before it. These particular separated failures do not test every crash spacing. [Evidence: Q15, §5.2 Figure 10 adaptation measurements, PDF pp.10–10; Q16, §5.3 Figure 11 crash measurements, PDF pp.10–11; literal spans in quotes.json.] Figure 12 manually chooses an unbalanced assignment for follower links of 1/1/0.4/0.1 Gbps, using the (8,5) codeword example with 5/5/3/1 assigned shards. It obtains roughly 1.4× MultiPaxos or balanced Crossword throughput. Automated unbalanced adaptation remains future work. Figure 13 forces c=1 and compares 0/400/800 KB deferral gaps at 3/10/100 ms write intervals, measuring follower version distance from the leader. Section 5.5 says, “The replies are not linearizable but sequentially consistent,” followed by “possibly stale versions in the history”. This is evidence about staleness, not a history-based proof of the text's sequential-consistency claim. Figure 14, at fixed throughput, reports 13% less follower-to-follower bandwidth from batching; it moves two-thirds of payload replication to that background path. The 13% is not a reduction of all network traffic. [Evidence: Q17, §5.4 Figure 12 unbalanced assignment, PDF pp.10–11; Q18, §5.5 Figures 13–14 staleness and gossip traffic, PDF pp.10–11; literal spans in quotes.json.] Figure 15 uses YCSB-A key popularity on 1,000 keys, but all requests are Puts with a TiDB-derived size distribution. Five partitions rotate leaders over the same five regional servers. Crossword's peak throughput exceeds MultiPaxos but falls below RSPaxos and CRaft, which omit its background gossip. Chain Replication has the highest unsaturated latency from chain propagation and does not reach its throughput limit over the plotted load range. This experiment tests shared follower bandwidth, not the usual half-read YCSB-A operation mix. [Evidence: Q19, §5.6 Figure 15 partitioned-store experiment, PDF pp.11–12; literal spans in quotes.json.] The CockroachDB TPC-C experiment uses twelve nodes, 200 warehouses, five replicas per range and 400 workers. It disables leader/leaseholder rebalancing and write pipelining. The chooser uses two shards above 4 KB and one above 8 KB. Aggregate throughput is 2,520 tps for vanilla, 3,330 for Crossword and 2,450 for an always-one-shard variant; reader arithmetic gives 32.14% gain over vanilla. The reported “up to 44%” refers to transaction-specific speedup. Table 1 separately measures RS(5,3) coding on 32 cores with SIMD: 4/16/64/256 KB and 1/4 MB take 1/4/16/77 ÎŒs and 1/6 ms; reported per-request leader CPU overhead is about 1.24–1.26%, with reported memory 1.6 KB through 1.6 MB. These costs have a different measurement denominator from throughput ratios. Repetition counts, warm-up and confidence intervals are not reported; the dynamic plots show their trace duration. [Evidence: Q20, §5.7 Figure 16 CockroachDB experiment, PDF pp.11–12; Q21, §5.8 Table 1 coding overhead, PDF pp.11–12; literal spans in quotes.json.] ## What the formal appendix actually checks Appendix A reports three replicas, at most one failure, two ballots, three requests and both balanced choices over three shards with two data shards. The supplied configuration specifically has three writes, no reads, CommitNoticeOn=FALSE and NodeFailuresOn, replica/write symmetry, TypeOK and Linearizability invariants, and deadlock checking. It gives no TLC version, explored-state counts, timing or run log. “These inputs should be large enough to explore all the distinct, interesting execution paths of the protocol” is the authors' belief; no parameterized theorem justifies it. In particular, three nodes cannot instantiate the interior five-node policy c=2,q=4 or the unbalanced example. [Evidence: Q24, Appendix A model-check report and explicit finite scope, PDF pp.19–19; Q27, Appendix A coverage and valid round-robin assignments, PDF pp.21–22; Q37, Appendix A complete Crossword MC.cfg, PDF pp.30–30; literal spans in quotes.json.] The PlusCal model represents shard identifiers, abstract command values and votes. It does not encode Reed–Solomon byte algebra, disk operations, the Rust or Go program, gossip/reconstruction messages, the chooser, leases, snapshots or reconfiguration. The single rloop label makes the macros atomic transitions; messages accumulate in a set. Nodes fail permanently. ReplicaCrashes additionally requires balMaxKnown<MaxBallot, suppressing crashes after learning the maximum modeled ballot: “∧node[r].balMaxKnown < MaxBallot” (Appendix A, PDF p.28). This is an explicit state-space restriction, not the protocol's ordinary fail-stop rule. [Evidence: Q25, Appendix A constants, assumptions and state types, PDF pp.20–21; Q27, Appendix A coverage and valid round-robin assignments, PDF pp.21–22; Q29, Appendix A message types and commitment condition, PDF pp.22–24; Q35, Appendix A remaining process and MC definitions, PDF pp.29–29; Q34, Appendix A crash guard and process loop, PDF pp.28–29; literal spans in quotes.json.] The model's Linearizability predicate is conditional: “terminated ⇒” a complete order exists that respects observed real-time precedence and old values. Terminated means no pending requests and all requests acknowledged. Therefore the checked expression constrains fully completed runs; arbitrary incomplete finite histories are not checked by that expression. Writes return their old value, so the all-write model still has meaningful observable ordering constraints, but it does not exercise read operations or leased local reads. Request identities are unique, admission picks the first unseen pending command, and InitPending fixes writes before reads under a stated W.L.O.G. reduction. Its comment says, “all other cases are either symmetric or less useful” (Appendix A, PDF p.21). No theorem establishes that reduction for a larger mixed workload. [Evidence: Q26, Appendix A initial request order and server states, PDF pp.21–21; Q30, Appendix A main state, termination and observation helpers, PDF pp.24–24; Q32, Appendix A complete new-request and Accept handling, PDF pp.26–27; Q36, Appendix A complete observable-order predicate, PDF pp.30–30; Q37, Appendix A complete Crossword MC.cfg, PDF pp.30–30; literal spans in quotes.json.] No fairness condition or eventual-completion temporal property is supplied. CHECK_DEADLOCK tests the absence of an enabled next step under TLC's deadlock semantics; it is not a proof that every admissible execution eventually completes. With CommitNoticeOn=FALSE, the loop can select a branch whose conditional body does nothing while a node remains live, illustrating why a no-progress execution need not be a deadlock. The displayed theorem statements have no TLAPS proof. Thus the author's “fault-tolerance” report must be read together with the configured invariant, finite crash restriction and deadlock check, rather than promoted to unbounded liveness. [Evidence: Q34, Appendix A crash guard and process loop, PDF pp.28–29; Q35, Appendix A remaining process and MC definitions, PDF pp.29–29; Q36, Appendix A complete observable-order predicate, PDF pp.30–30; Q37, Appendix A complete Crossword MC.cfg, PDF pp.30–30; literal spans in quotes.json.] Two further model-to-design obligations are concrete. TakeNewRequest puts all Shards in the leader's voted.shards while its own AcceptReply records only assign[r]; the prose persists only assigned shards but expressly keeps the complete codeword in leader memory. Since failures are fail-stop with no restart, the abstract full-shard knowledge is consistent with a live leader’s memory. A refinement must explain that knowledge and its lifetime; this difference does not establish a crash-recovery durability counterexample. CommitNotice has only an index, no ballot or origin, and its handler applies a local command without shard reconstruction; the supplied configuration disables that handler. These are source differences and missing coverage, not checked exploit traces. The prepared-value fallback also spells a field “shard” rather than “shards”; HandlePrepareReplies awaits exam[s].prepared for every slot before reading shards, so that false-prepared branch alone does not establish a missing-field failure. No translator was run. The handler also overwrites cmd/shards while preserving a Committed status and sends its own reply before its voted record is updated by any later self-Accept. Chosen-value preservation and consistent self-voting must justify those intermediate states; no reachable counterexample is established. [Evidence: Q3, §3.1–3.2 assignments and Figure 3, PDF pp.4–5; Q28, Appendix A PreparedConditionAndCommand, PDF pp.22–23; Q29, Appendix A message types and commitment condition, PDF pp.22–24; Q32, Appendix A complete new-request and Accept handling, PDF pp.26–27; Q33, Appendix A commit and CommitNotice handlers, PDF pp.27–28; Q37, Appendix A complete Crossword MC.cfg, PDF pp.30–30; literal spans in quotes.json.] ## Contribution to the human's topic For distributed verification, this is a useful case separating voting intersection from durable data reconstructibility while policies change per instance. A proof would need cross-ballot chosen-value preservation, shard-survival and data-known/executed invariants, plus explicit assumptions for eventual gossip and failover. TLA+ can express the distributed contracts; Verus could connect assignment bitmaps, persistence-before-ack and reconstruction to Rust execution. Those are reader-proposed next steps, not supplied proofs. The static chooser mismatch gives a precise specification-to-code question. [Evidence: Q4, §3.3 complete derivation and Figure 4, PDF pp.5–5; Q7, §3.6 complete protocol changes, PDF pp.7–7; Q9, §4.1 complete regression chooser and limitations, PDF pp.7–8; Q8, §4 implementation and Gazette/CockroachDB, PDF pp.7–7; literal spans in quotes.json.] For evaluating LLM-generated specifications or proofs, the artifact offers concrete scope checks: whether an agent notices the all-write/CommitNoticeOn=FALSE configuration, completed-run predicate, ballot-dependent crash restriction, atomic actions, idealized shards and leader-knowledge abstraction. A convincing generated proof would have to state which model and which property it proves and show the link to implementation. The paper makes no claim of LLM-generated specifications, proofs or evaluation, and references Verus only as related verification work. Its strongest contribution here is a nontrivial Rust systems case with a published finite specification and measurable adaptation, together with explicit gaps a later proof effort must close. [Evidence: Q22, §6 discussion and §7 conclusion, PDF pp.12–13; Q24, Appendix A model-check report and explicit finite scope, PDF pp.19–19; Q32, Appendix A complete new-request and Accept handling, PDF pp.26–27; Q34, Appendix A crash guard and process loop, PDF pp.28–29; Q36, Appendix A complete observable-order predicate, PDF pp.30–30; Q37, Appendix A complete Crossword MC.cfg, PDF pp.30–30; literal spans in quotes.json.] - limits: Odd n, fail-stop, asynchronous network; majority m=ceil(n/2), f=n−m; balanced RS(n,m), c consecutive wrapped shards, q+c≄n+1. Durable assigned shards before ack. Bounded clock drift separately assumed for read leases. Printed chooser uses inverse shard count instead of assigned bytes; intermediate coverage bound needs saturation; cross-ballot preservation proof obligation; finite formal scope/reductions/crash restriction/completed-run predicate; leader-knowledge abstraction requires refinement; disabled commit notices; no Rust refinement; heterogeneous policies manual; <1s fluctuations outside chooser scope; f1 baselines differ; staleness not a consistency proof. Prose RR interval endpoint differs from intended c-shard range; listed line counts total26.9k versus headline27.3k; prepared-state overwrite/self-vote obligations remain conditional static observations. - how much was read: most of it read - source - record id: `crossword-2025` - Dafny token-sale launchpad (2025) - title: Formal Verification of a Token Sale Launchpad: A Compositional Approach in Dafny - what: Formally verifies a token-sale launchpad by layering Dafny proofs from non-linear integer arithmetic through asset conversion, discounts, workflows, and a global lifecycle state machine. The five-layer architecture separates MathLemmas, financial primitives, data/configuration models, workflow specifications, and the Launchpad state machine. Explicit lemmas prove monotonicity, bounded round-trip truncation, discount non-overlap and unique active discounts, refund safety, withdrawal accounting, vesting monotonicity, claims, stakeholder distribution, and lifecycle transitions; appendices expose the proof chains rather than only stating top-level claims. - number: refund safety theorem proves refund ≀ original deposit amount - number: asset round-trip loss bound is (w − Revert(Assets(w)))·sT < dT + sT - number: discount intervals are pairwise non-overlapping and active discount is unique - number: vesting amount is proved monotone in time; no runtime benchmark is reported - limits: Guarantees are Dafny specifications under valid configuration and arithmetic preconditions, with integer truncation and fixed-point discount representation. The paper models core launchpad logic and uses SMT-backed proof obligations; it reports no conventional runtime, throughput, gas, or comparative benchmark, so scalability and deployment behavior are not empirically established. - how much was read: most of it read - - record id: `dafny-token-sale-launchpad-2025` - Ellsberg (2025) - title: Runtime Protocol Refinement Checking for Distributed Protocol Implementations - what: It monitors the messages going into and out of a deployed process. It searches for an allowed run of a TLA+ protocol, translated to Go, that explains them. If none exists, it reports an error. It was applied to Etcd, ZooKeeper and Redis Raft. - number: executable spec sizes: ETCD 952, RedisRaft 894, Zookeeper 989 lines (prose says about 500 and 2,000) - number: mapping code 356, 370, 380 Go lines; 11, 31, 10 modified functions - number: translation tested on 8,750,468 Raft and 1,904,456 ZooKeeper traces - number: ten bugs, nine previously known, one new Redis Raft reconfiguration bug - limits: It handles fail-stop faults only. It assumes the supplied protocol is correct and the trace is faithful and ordered. It cannot prove correctness or catch livelock or deadlock. Humans wrote the translations and mappings. There is no public repository. - how much was read: most of it read - source; notes: Runtime Protocol Refinement Checking for Distributed Protocol Implemen; notes: Runtime Protocol Refinement Checking for Distributed Protocol Implemen; notes: Runtime Protocol Refinement Checking for Distributed Protocol Implemen - record id: `ellsberg-2025` - Extended threshold automata (2025) - title: Parameterized Verification of Round-Based Distributed Algorithms via Extended Threshold Automata. - what: Extends threshold automata with decrements and resets of shared variables, develops sound and complete semi-decision procedures for general coverability and reachability, and evaluates an implementation on fault-tolerant distributed algorithm models. The counter-system model retains arbitrary process counts satisfying a linear-arithmetic resilience condition. Parametric intervals abstract shared counters; an abstract counter system leaves location counts unbounded. Lemmas 1–2 relate concrete paths to non-spurious abstract paths using quantifier-free linear-integer constraints, including acceleration multiplicities. Lemmas 3–4 establish a well-structured system with effective predecessor bases. Algorithm 1 must preserve transitions from subsumed states to enumerate all abstract error paths, because one spurious path cannot settle verification. Corollary 2 and Lemma 5 give soundness/completeness; Theorem 1 proves termination for nonnegative updates without resets. A second abstraction keeps only occupied/empty location bits, allowing zero tests in reachability specifications; PRA implements this symbolically. General coverability can express two leaders at the same location, whereas ordinary positive-location coverability cannot. Experiments reveal the narrower scope of the phase-king and full Red Belly results than the abstract suggests. - number: PRA vs ByMC: bosco validity 0.73s vs 42.22s; cf1s validity 0.42s vs 380.81s - number: c1cs 0.23s, RB 1.03s, RB-Simpl 61.77s with ByMC timing out at 1.5h - number: PRA slower on nbacg 0.36s vs 0.18s and RB-bc 0.49s vs 0.32s - number: multiR-floodMin 0.3s; multiR-RelBrd 0.1s; multiR-RB-Simpl 6859s; multiR-RB timeout at 2h - limits: Results concern threshold-automaton models, not executable protocol code. Finite local locations/shared-variable sets, nonnegative counter values, parameter-linear threshold guards, and linear-integer resilience conditions are assumed; the standard example is n > 3t and t >= f with n-f modeled correct processes. All possible finite orders of parametric thresholds must be considered. Abstract transitions can be spurious and require SMT concretization. The extended model is undecidable; error-path unfolding can diverge on cycles containing decrements/resets. Termination holds for monotone increments/no resets, acyclic error graphs, or cycles without decrements/resets. Detailed formal proofs are referred to the extended version, rather than machine-checked proof artifacts here. Evaluated properties are selected safety/reachability properties, not full liveness or implementation refinement. Full multi-round Red Belly times out; phase-king validation is partial correctness and a bug in an incorrect model. - how much was read: most of it read - source - record id: `extended-threshold-automata-2025` - Formalising CXL Cache Coherence (2025) - what: An Isabelle model of the CXL.cache protocol, written from its English standard. It proves a single-writer/multiple-reader safety property, strengthening the invariants repeatedly. A tool called super_sketch drives Sledgehammer to generate proofs. - number: around 211k lines of code - number: 12 person-months - number: 796 invariant conjuncts, 68 rules, 53,332 lemmas (796x68=54,128 conflicts with it) - limits: The model has two devices and one location, with perfect tracking, and omits several messages. Data-value correctness, deadlock freedom and liveness are unproved. - how much was read: most of it read - source; notes: Related work absent from the first pass: Formalising CXL Cache Coheren - record id: `formalising-cxl-cache-coherence-2025` - FSCQ LLM study (2025) - title: Can Large Language Models Verify System Software? A Case Study Using FSCQ as a Benchmark - what: It uses LLMs to fill existing unproved gaps in the proofs of FSCQ, a crash-safe file system. Search is best-first over tactics (proof commands) through Coq/SerAPI. - number: GPT-4o 29.2% without hints, 38.1% with; hinted Gemini Flash/Pro 16.3%/25.7% - number: Hinted GPT-4o: utilities 57.8%, Crash Hoare Logic 51.7%, file-system lemmas 20.8% - number: No model solves a theorem whose human proof exceeds 512 tokens - limits: It covers existing statements only. The proofs were public, so training leakage is a risk. There is no baseline using the prover alone, no new specification, and no liveness. - how much was read: most of it read - source; notes: FSCQ: file-system lemmas are harder than utility lemmas - record id: `fscq-llm-study-2025` - HornStr (2025) - title: sfHornStr: Invariant Synthesis for Regular Model Checking as Constrained Horn Clauses. - what: HornStr synthesizes regular-language inductive invariants for string-theory CHCs using SAT-based DFA learning or L* active learning. Standard SMT-LIB2.6 string solvers check initiation,transition closure and bad-state exclusion; reachability enumeration supports active membership and inductive-counterexample handling. It connects parameterized-protocol regular model checking to existing string solvers and generates string-query benchmarks. Describes restricted unary-predicate problem,learning/refinement flow,DFA-to-regex translation,heuristic reachability cutoff,incremental solver sessions and separate membership/equivalence backend choice. Reports complete query-solver and protocol results,including active-learner timeouts,unlisted hard protocols and prose/table inconsistencies. No general completeness theorem or verified implementation is supplied. - number: 18 benchmark protocols (Table 2); SAT-based learner solved all 18, mostly in under a second; MU puzzle 11.01 s with a 3-state automaton - number: The active learner timed out on 6 of the 18 (Burns, Mux-Array, Eqdist, MU Puzzle, Water-Jug, Dining-Crypt) - number: Z3-noodler solved all 848 non-incremental equivalence queries; cvc5, Z3, Z3-alpha solved 403 to 457 - number: Generated more than 30000 string constraints (abstract) or more than 10,000 (Sec 5); the paper gives both numbers - limits: §2: one unary unknown predicate over strings; sought solutions regular languages. General CHC definition allows more predicates/nonlinearity, but that syntax is not evidence that implemented solver handles all general string CHCs. Symbolic alphabets and broader CHC support deferred in §5. §§2.1–2.2: safety expressed by initial inclusion,transition closure,error exclusion; configurations are modeled words. Correctness of protocol→CHC modeling/automatic translation assumed,not mechanized here. Arbitrary number of processes does not establish real Rust implementation correctness. §2.1: reachable/bad-predecessor languages can be nonregular while a separating inductive invariant is regular. Failure to find a regular invariant need not mean unsafe; no complete procedure for all infinite-state systems. §3: SAT unsat means current DFA size cannot fit examples and triggers larger size; string-query unsat means no violation of the particular checked clause. These are different meanings,not contradictory CHC conclusions. §3: active membership enumerates reachable words and may answer negative after same-length exhaustion or fixed cutoff. Explicit heuristic inspired by length preservation; bounded failure to find a word does not generally prove unreachable in length-changing rewriting. Could impair learning/completeness. Final all-clause validation remains distinct,conditional on solver correctness and handling of unknown/timeouts. §3: DFA→regex uses Brzozowski/McCluskey state elimination; induction counterexamples can be converted to positive/negative via reachability following strict-but-generous teacher. No in-paper full correctness/termination proof,complexity bound,formalized checker or proof-producing string backend. §3/Fig1: learners exchange regex equivalence queries and reachability membership queries through independent interfaces. Each CHC can have dedicated incremental solver thread with push/pop; optional single solver. Trust includes parsers,translation,learners,regex conversion and SMT solvers; artifact not executed. §4.1: query families have unequal counts: incremental523membership/396equivalence versus nonincremental30902/848. Raw aggregate runtimes cannot isolate causal per-query incrementality benefit without matched workloads. Table excludes timeouts from times; lower solved-time can simply reflect fewer solved queries. §4.1: prose calls523membership queries an average109.7s and says other solvers slightly higher runtimes. Table1 labels Time(s),caption solved time;Z3 33.7,cvc5 97.8,Z3-alpha86.4 are lower than109.7. Preserve table and inconsistent prose;109.7s as per-query average would exceed stated30s timeout. No silent correction or invented timing definition. §4.1: visual PDF p.8 confirms disequality x≠c; text extraction drops stroke and yields x=c. Regular-expression simplifier/flags marginal or harmful overall,not robust improvement;no quantitative ablation table. §4.2:18listed protocols all solved by SAT;active12solved/6timeouts. Kanban/German timeout60s in prose but absent from Table2;therefore SAT success on every listed row does not mean all benchmark protocols solved. Full-suite count and which learners timeout on unlisted protocols not supplied. §4/Table2: automaton sizes and learning seconds;no printed invariant automata/independent certificate or unsafe-trace count per row. MU3states/11.01s is reported discovery,not this reader rerunning solver or inspecting artifact invariant. First-solver claim is authors’ claim,not independently established priority. §4:IntelCorei7-10510U1.8GHz/16GB/Windows11.30s query and60s protocol limits;solver revisions,repeat counts/variance,full timeout overhead,independent baseline RMC comparison and frontend correctness unreported here. §§abstract/5:abstract says more than30000newQF_S constraints;conclusion says more than10000. Compatible lower bounds but inconsistent specificity;do not sum query categories as disjoint unique files. Liveness,bisimulation,further CHCs future work. No Verus/Rust/TLA+ or LLM experiments. Full version[30]arXiv2505.15959 and artifact[31]Zenodo15195124 contain deferred detail;not read/executed. This is proceedings-paper read only. - how much was read: most of it read - source; notes: ## HornStr (2025) - record id: `hornstr-2025` - LiDO-DAG (2025) - title: LiDO-DAG: A Framework for Verifying Safety and Liveness of DAG-Based Consensus Protocols - what: It separates the DAGs that spread data from the ordering step. In Coq, it proves that partially synchronous Narwhal, Bullshark and Sailfish keep agreement, and that they eventually commit vertices built by synchronous processes. Verification revealed a latency improvement for Sailfish. - number: two persons over three months for the three protocols (§5, p.203:21) - number: Table 2 (spec/proof lines): model 747/1500; Narwhal 2307/9697; Bullshark 603/4343; original Sailfish 270/3479; modified Sailfish 339/3040; some reused - number: LiDO-DAG model: spec 747 lines, proof 1,500 - number: Narwhal: spec 2,307, proof 9,697 - limits: It covers protocol models only. It does not show that a Rust implementation refines them. It excludes asynchronous probabilistic variants. It needs an extra fairness assumption: each synchronous builder succeeds within a fixed number of time segments. Line counts mix reused and safety proofs with liveness proofs. - how much was read: most of it read - source; notes: LiDO-DAG: A Framework for Verifying Safety and Liveness of DAG-Based C; notes: LiDO, LiDO-DAG, and a 2026 liveness bug - record id: `lido-dag-2025` - Lightning TLA+ model (2025) - title: Model Checking the Security of the Lightning Network - what: Formalizes Lightning payment channels and the security property that honest users retrieve their correct balance in TLA+, then uses stepwise refinement to make TLC model checking feasible. Proves an abstraction of blockchain time using zones/timed-automata ideas and proves that single-channel and multi-hop models can be checked separately. A secure ideal payment-system specification serves as the refinement target; TLC checks representative models and simulation checks larger abstractions. - number: five representative models checked - number: up to four hops and two concurrent payments - number: model C5: about 108 states and 12 hours - number: another C5 variant: about 108 states and 13 hours - limits: The checked property is balance security, not all Lightning properties such as griefing or denial of service. Models abstract cryptography, blockchain confirmation and some adversary capabilities; only a small representative model selection is exhaustively checked because larger state spaces become impractical. The paper leaves a complete theorem-prover proof and implementation connection for future work. - how much was read: most of it read - - record id: `lightning-tla-model-2025` - Lilo (2025) - title: Lilo: A Higher-Order, Relational Concurrent Separation Logic for Liveness - what: Lilo is a Coq logic for the liveness of shared-memory programs. It uses obligations (promises to finish) and progress credits. The authors give proofs for a spinlock, a ticket lock, Treiber and elimination stacks, and infinite message passing. - limits: Stratified propositions limit contracts that refer to themselves. Logically atomic triples for the elimination stack are future work. It is not a result about networks or crashes. - how much was read: most of it read - source; notes: Iris: Trillium, Lilo, Lawyer - record id: `lilo-2025` - LLM backend formal verification (2025) - title: Towards Automated Formal Verification of Backend Systems with LLMs - what: Translates functional Scala backend code, APIs and database tables into pure Lean 4 dependent-type representations, generates API/table theorems from documentation and inferred behavior, then uses LLM proof search with Lean feedback. Failed positive theorems trigger negation proving to produce concrete bug witnesses; unresolved cases are sent to humans. The pipeline has implementation formalization, theorem generation and proof search stages. Monads become explicit inductive return values; tables become function inputs/outputs. API requirements preserve control-flow paths, while table properties summarize all APIs touching a table. Qwen-Max performs formalization/theorem generation and DeepSeek-R1 proof search. Experiments use four Scala projects with 2–25 APIs and injected bug variants; dependency/formalization and theorem quality are manually checked across three runs. - number: Four projects, 2–25 APIs each; 45 APIs total and >250 generated API/table theorems - number: Dependency analysis and table formalization: 100% accuracy; API formalization 96.2% - number: API theorem formalization 95.1%; table theorem formalization 86.5% - number: Proof search: 100/168 API theorems (59.5%) and 72/125 table theorems (57.6%) proved - limits: Correctness guarantees apply only to successfully proved Lean statements and faithful formalization/specifications; a failed proof may be model weakness or a real bug. Scala projects are AI-generated, then human verified, and only four systems are evaluated. Negation proving can detect a bug only when the negated theorem is expressible and provable. Pure-functional translation abstracts effects and external runtime behavior, limiting claims about arbitrary production backends. - how much was read: most of it read - source - record id: `llm-backend-formal-verification-2025` - LMGPA (2025) - title: Towards Language Model Guided TLA+ Proof Automation - what: An LLM splits hard TLAPS proof obligations into smaller claims. Symbolic provers check them. The invariant is given as input. - number: 26 inductiveness proofs of distributed protocols plus 93 math theorems (119 total) - number: Distributed protocols (Table 1 p. 13): symbolic-only 38.5%; DeepSeek-V3.2-Exp 50.0% with decomposition (13/26), 0% direct; Claude 3.7 Sonnet 42.3% vs 15.4% direct; GPT-5 42.3% vs 3.8% direct - number: Runtime DeepSeek 9h 14m vs Claude 1h 32m - number: Four decomposition attempts per claim; TLAPS timeouts Z3 5 s, Zenon 10 s, Isabelle 30 s - limits: It tests proving a supplied invariant. It does not test finding one or reading vague requirements. Training leakage is possible from public protocol proofs (Section 4.2). The suite leaves out both learning switches, chord and hybrid broadcast. - how much was read: most of it read - source; notes: LMGPA: prove supplied invariants rather than discover them; notes: TLAPS proof generation grew beyond the January 2025 toy study - record id: `lmgpa-2025` - Maeslant BesW (2025) - title: A Complete Formal Specification and Verification of the BESW Software Control System of the Maeslant Storm Surge Barrier - what: Translates the 15,000-line PLC control design of the Rotterdam storm surge barrier's pump, valve and door controller into an mCRL2 model, then model-checks 40 requirements written as modal mu-calculus formulas. - number: mCRL2 model about 5,000 lines, 4.98e14 states - number: 40 properties: 36 valid at once, 3 valid after rewording, 1 invalid (deprecated requirement) - number: Each property verified within 40 minutes on 2x24-core, 1.5 TB machine - number: Found one design issue: with pump faults, more pumps can run than the power budget allows - limits: Water levels are discretised, not all pump and valve fault combinations are checked, status and log messages and the BOS data protocol are left out. The real model is confidential, so it cannot be reused or re-checked. - how much was read: most of it read - source; notes: ## Maeslant storm surge barrier control software in mCRL2 (2025) - record id: `maeslant-besw-2025` - Model Checking and Synthesis for Optimal Use of Knowledge in Consensus Protocols (2025) - what: # Model Checking and Synthesis for Optimal Use of Knowledge in Consensus Protocols (authored by agents unless marked 🧑) Alpturer, Huang and van der Meyden use MCK to check whether small synchronous consensus protocols decide as soon as their available information permits, and synthesize concrete decision predicates from knowledge-based programs. The contribution is empirical and methodological. They “do not attempt to give a full characterization or a proof” of general optimality (§1, p.3, Q3). The 22-page arXiv 2505.02353v1 is the full version of the PODC 2025 paper, ACM pp.131–140, DOI 10.1145/3732772.3733552 (Q37; saved arXiv metadata). No new parameterized proof or new synthesis engine is presented. ## Assumptions and specification (authored by agents unless marked 🧑) The system has synchronous message rounds and two layers: an information exchange defines observed state, messages and updates; a decision protocol chooses noop or a decision. Failures are crashes or sending omissions. A crashing agent can send an arbitrary subset of its messages in the crash round and then sends nothing; an omission-faulty agent can omit sends but receives messages sent to it (§3, pp.5–6, Q6–Q7). “Byzantine Agreement” names the coordination problem here; the experiments do not evaluate arbitrary malicious message values, asynchronous scheduling or a cryptographic implementation. The base simultaneous agreement specification requires at most one decision per agent, agreement at the same time among nonfaulty agents, and a decision value initially held by some agent, possibly faulty. The paper explicitly says “termination is not a requirement of this specification,” while reporting additional termination checks in its scripts (§4, p.6, Q8). Eventual agreement permits different decision times (§8, Q20). These distinctions matter when calling a synthesized result correct. Optimality is relative to the same information exchange and failure model, comparing runs with identical initial preferences and failure patterns (§4, p.7, Q9). The paper distinguishes an optimum protocol, which decides no later than every competitor, from an optimal protocol, which no competitor systematically improves. This is not optimality across arbitrary messaging designs or execution costs. The semantic order as printed compares every agent; this record does not silently narrow its quantifier to nonfaulty agents. MCK uses finite variables and ordered binary decision diagrams. The chosen clock semantics gives an agent its current observable variables plus the time, rather than perfect recall. Synthesis replaces boolean template variables with local predicates equivalent to knowledge tests (§6, pp.8–9, Q11–Q12). Uniqueness under clock semantics and the optimality characterizations are attributed to prior theory, not proved anew. EBA’s simpler knowledge-based program P0 also requires technical side conditions on information exchange: learning 0 through decision-message chains and suitable possibilities involving nonfaulty agents (§8, pp.11–12, Q20). ## Concrete cases and results (authored by agents unless marked 🧑) Four SBA information exchanges are modeled: FloodSet, FloodSet plus current received-message count, the Count variant plus previous count (“Diff”), and the concrete Dwork–Moses protocol. Two EBA exchanges, Emin and Ebasic, respectively send decision values and additionally send initial 1 messages with a count. The models have parameters n agents, t maximum failures and the decision-value set. The main FloodSet/Count timing table fixes two values (§§7–11, Q13–Q28). FloodSet retains values seen and broadcasts their union. The naive earliest-knowledge hypothesis t+1 fails at n=3,t=2. Revised Eq 2 uses time=n−1 when t≄n−1, otherwise t+1; model checking and synthesis agree in the instances checked (§7.1, pp.9–10, Q14–Q15). The authors report an all-n proof in companion work [7]; this read does not include that proof (Q17). Adding the current message count exposes the early condition count≀1, meaning only the agent’s own message was received (§7.2, Q16). Diff gave no stronger SBA stopping condition than Count in checked cases, although previous-count memory can help a different EBA specification (§7.3, Q18). The printed Count formula needs reconciliation at a boundary. Eq 3 uses “time = t” in its t≄n−1 branch (§7.2, p.10, Q16), whereas FloodSet Eq 2 uses time=n−1 (Q14). At n=3,t=3,time=2,count=3, Eq 2 is true and Eq 3 false. Count adds an observation while retaining FloodSet’s values and clock; its stated earliest condition should not require later knowledge on that account. No-crash histories allow count 3 even when t=3 is the failure upper bound. This is a reader-derived discrepancy in the printed conditions, not a replayed MCK counterexample or a refutation of the companion theorem. The benchmark inputs needed to resolve it were not obtained. The source’s formulas are retained unchanged in Q14/Q16 and static-witnesses.json. There is a second printed EBA ambiguity. Ebasic’s jd update stores 0 on receiving 0 and otherwise ⊄, but its decision 1 rule includes “jd𝑖 = 1” (§9.2, pp.12–13, Q22). Under that update description the jd=1 branch cannot be reached. I have not silently repaired the update or inferred which rule the actual model used. Appendix A gives a complete FloodSet synthesis example for n=3,t=1,two values. It uses finite time 0..3, communicates while time<2 and has four decision templates for knowledge times 1 and 2 (pp.18–21, Q32–Q35). The reported output makes both time 1 predicates false; at time 2 the predicate for v is values_received[v], with 0 taking priority in the decision code. The authors report that the accompanying formulas all hold (p.22, Q36). State at time m means information after round m; the decision follows in the next modeled round (§7, Q13). This accounts for the appendix’s AX3 completion check. The appendix checks ordinary and uniform agreement, validity and termination at AX3, and knowledge predicates. Its printed agreement formulas compare values when both agents have decided; they do not explicitly require simultaneous decided flags (Q34). Thus the displayed formulas alone are not a direct check of every SBA clause. The knowledge-based theory may establish simultaneity; no counterexample to the synthesized protocol is claimed. Likewise the finite AX3 termination check is not a general unbounded liveness proof. The appendix uses currently ALIVE agents in knowledge tests, which should not be casually substituted for permanently nonfaulty agents without the cited crash-theory correspondence. ## Evaluation and limits (authored by agents unless marked 🧑) The experiments used one core of a 3.7 GHz six-core Intel Core i5 with 256 KB L2, 9 MB L3 and 32 GB memory. The final run’s timeout was 10 minutes (§10, p.13, Q23). Early exploratory trials sometimes ran 5 hours or 2 days; those are not the table timeout. No MCK build/version, BDD variable ordering, repetition count, variance, raw trial set or memory measurements are supplied. The measured costs are model-checking and synthesis runtime, not consensus latency or deployment throughput. All three timing tables are transcribed with printed values and converted seconds in numeric-evidence.json: 16 parameter rows in Table 1, 15 in Table 2 and 6 in Table 3, totaling 118 timing cells. TO remains a timeout rather than a measured 600-second completion. Representative results show the steep scaling: - FloodSet at n=5,t=2: checking 34.635 seconds, synthesis 162.015 seconds; synthesis times out at n=5,t≄3. Checking still finishes at n=6,t=1 in 72.863 seconds, while n=6,t=2 times out (Table 1, Q24) - Count at n=4,t=2: checking 23.328 seconds, synthesis 120.892 seconds; synthesis times out for t=3/4 and both tasks time out at n=5 in the listed rows (Table 1) - Diff at n=3 takes roughly 258–304 seconds depending on failure bound/rounds; Dwork–Moses times out for every listed n=3 case. Both time out at n=4,t=1,one round (Table 2, Q26) - Emin EBA synthesis succeeds through the listed n=3 cases, with crash costs 31.219–178.142 seconds and omission costs 11.371–66.735 seconds. Every n=4,t=1 cell times out. Ebasic succeeds only at n=2 in Table 3 (Q28) Table 3’s prose says Emin scales to 4 agents before blowup, then names Emin again for the worse count-containing model. The table has no successful 4-agent row, and §9.2 attributes the extra count to Ebasic. This record preserves the cells and flags the prose ambiguity instead of recording 4-agent success or swapping labels without evidence. Receiving/general omissions are reported to have similar successful cases, but no separate timing rows are provided (§11, Q28). For comparison, the authors report 125 seconds for purely temporal SAT-based SBA checking of Dwork–Moses at n=5,t=4 (§13, p.16, Q30). This checks a different obligation with a different algorithm from the BDD epistemic runs, so it is not a like-for-like solver speedup. They suggest quadratic messages and BDD size explain the difficulty; the paper does not measure a causal ablation. Their conclusion is appropriately limited: “a manual proof of correctness and optimality will” still be needed for all numbers of agents and failures (Q30). ## Contribution to the requested topic and evidence scope (authored by agents unless marked 🧑) This adds concrete epistemic verification and protocol-synthesis benchmarks for distributed consensus, including examples where stronger local observations permit earlier decisions but make automated analysis harder. It supports a workflow of synthesizing small instances, checking hypotheses on larger finite instances, then proving the general claim manually. That workflow is the authors’ proposal; this paper does not demonstrate LLM agents. There is no Verus or verified Rust experiment. Appendix A calls its nondeterministic transition construct “refinement calculus/TLA action style” (Q33); it does not report TLA+/TLC verification. For LLM-generated specifications and proofs, I infer evaluation lessons from the record: state the failure and information-exchange scope, declare observation/recall semantics, distinguish agreement from simultaneous agreement, inspect every printed guard and boundary case, separate finite checking from general proofs, and retain timeouts and source/script mismatches. These are reader-derived lessons, not measured LLM results. Read every one of 1099 layout-text lines, all 22 pages, all 39 references and the complete appendix input/output. Inspected 11 contact sheets and fullsize pages 10,13–15,19–22; the paper has three tables and no figures. The bundle retains 44 literal excerpts with line/character/page anchors, 19 diagnostics, all 37 timing rows and raw hashes. Local/official PDFs are byte-identical. The paper identifies no benchmark archive/repository link. The primary MCK site links a related consensus demonstration. I read its page/loader and all 551 logical lines (550 newline characters) of four static source scripts: FloodSet, optimized FloodSet, Count and Dwork–Moses. They are pinned by content hashes and fetch times; no direct association with the paper’s benchmark version was established. The demo FloodSet/Count scripts read and update w in place, allowing later senders to forward values received earlier in the same round; Appendix A instead snapshots old_w before delivery. Demo FloodSet crash delivery is also selected per value. These differences prevent treating the demos as interchangeable benchmark inputs or evidence against the paper’s reported results (Q38–Q44, D19). No demo Verify action or stored .result output was invoked or loaded. Two MCK subpage links returned 404 and were not retried within five minutes. No author code, compiler, model checker, prover or solver was executed; no serialized scientific/model/results data were loaded. Reported checks and synthesis outputs are statically inspected author results, not independent reproductions. - limits: Synchronous rounds, crash or sending omissions, and finite MCK clock semantics using current observations and time. Optimality is relative to a fixed information exchange and failure model. Base SBA omits termination. EBA P0 requires technical information-exchange side conditions. The paper checks finite instances and supplies no all-n proof. Count Eq. 3, the Ebasic jd update and Table 3 prose have unresolved printed discrepancies; the appendix lacks an explicit simultaneity formula. Related static demo models differ from the appendix; the exact benchmark revision and independent reproduction are unavailable. - how much was read: most of it read - source - record id: `model-checking-and-synthesis-2025` - MongoDB conformance blog (2025) - title: Conformance Checking at MongoDB: Testing That Our Code Matches Our TLA+ Specs - what: This 2025 retrospective describes MongoDB engineers testing whether C++ implementations conform to TLA+ specifications. It contrasts model-generated tests with trace checking, reports practical obstacles such as mapping implementation state back to the model, and describes a Raft-derived replica-set model with safety and liveness properties. - number: The post revisits two MongoDB products and work first tried in 2020. - number: A month to figure out how to instrument MongoDB - number: 4913 tests reached 100% branch coverage - limits: Trace checking and generated tests are incomplete samples; the post says completeness is usually impossible. - how much was read: most of it read - source - record id: `mongodb-conformance-blog-2025` - OwlC (2025) - title: OwlC: Compiling Security Protocols to Verified, Secure, High-Performance Libraries - what: It compiles a checked Owl protocol design into executable Rust plus a Verus specification. Verus then automatically checks that the code matches the spec and avoids operations that depend on secrets. Case studies include new WireGuard and HPKE designs. - number: WireGuard: 910 Owl lines, 6,499 Verus lines, 659.8 s Owl check, 13.1 s Verus check - number: HPKE: 332 / 4,030 lines, 83.0 s / 7.8 s - number: Otway-Rees: 221 / 5,210 lines; Basic-Hash: 52 / 849 lines - number: OwlC compiles to Verus in under a second - limits: It covers secrecy and authenticity, not progress in distributed systems. The spec compiler, crypto bindings, Owl, Verus and rustc are trusted. WireGuard's UDP, device and rekey timers are out of scope. Designs do not start from vague English. - how much was read: most of it read - source; notes: OwlC: Compiling Security Protocols to Verified, Secure, High-Performan - record id: `owlc-2025` - PoWER (2025) - title: PoWER Never Corrupts: Tool-Agnostic Verification of Crash Consistency and Corruption Detection - what: PoWER encodes crash consistency as a precondition on each storage write: every durable state introduced by a partial write must be permitted by a ghost permission. Prophecy-based storage views and recovery-equivalent writes simplify proofs. A bounded-bit corruption model and an eight-byte corruption-detecting Boolean support atomic data/checksum updates. CapybaraKV in Verus and CapybaraNS in Dafny demonstrate the method, with coarse concurrent KV variants and performance comparisons. Records exact permission quantification, prophecy flush semantics, state versus transition and blanket versus single-use permissions, all four write strategies and concurrency restrictions. Includes correspondence-proof trust boundaries, CRC corruption bounds, Tick-Tock counterexample and CDB protocol, full type/LOC/startup/resource tables, all workload setups and adverse performance cases. Separates conditional detection from arbitrary-media-error recovery and reported proofs from independent proof replay. - number: CapybaraKV 5,531 executable / 14,255 spec+proof / 5,244 trusted lines; CapybaraNS 278 / 673 / 414 - number: verification 54 s single-thread, 23 s eight-thread for KV, 12 s for NS - number: Table 2 KV total: 5244 trusted, 14255 spec/proof, 5531 implementation lines; notary 414/673/278 - limits: Core technique requires Hoare pre/postconditions, ghost variables and quantification over crash states. Each asynchronous write requires all chunk-wise old/new durable outcomes to satisfy its permission; executable annotations erase. Soundness depends on every actual storage mutation using the controlled API, correctness of the storage model and a meaningful allowed-recovery predicate. A permission that allows all states proves no useful crash property. Natural storage semantics distinguish readable last-written bytes from outstanding writes. Atomic persistence chunks can survive independently until flush. The prophecy model instead stores read_state and one prophesized durable_state; write updates all readable bytes and chooses a subset of chunk subwrites for durable state. Flush constrains these two states to agree without changing either in the ghost model. This is a logical modeling device, not a runtime ability to predict crash outcomes. The authors report a Verus proof implementing the prophecy model over a natural model using prophecy variables. The PoWER-to-Crash-Hoare-logic proof in Rocq/Perennial is metalogical and trusts a translation of PoWER semantics, since PoWER was not implemented in Rocq. The Verus correspondence to crash invariants is entirely machine-checked within Verus. Formal theorem bodies are in artifacts; this reading examined paper explanations only. Crash states can be specified through rec(bytes), commonly allowing pre-operation or post-operation abstract state. Transition permissions instead authorize pairs of durable states. Blanket permissions cover arbitrary recovery-equivalent transitions; single-use permissions authorize a mutating transition once and are consumed or invalidated. A blanket permission can manufacture single-use permissions only for its allowed transitions. Initial recoverability and all permission constructions remain proof obligations. Tentative writes change only addresses irrelevant to rec and need no value-specific proof. Committing writes are a single aligned atomic chunk, typically after flushing tentative data, so only old/new durable states matter. Recovery writes rely on idempotent recovery that overwrites all possibly torn bytes on retry. In-place writes can use weaker specifications with many allowed outcomes, but the authors have no verified examples or helper-library support for that category. Atomic PoWER adds durable ghost resources owned by atomic invariants, proof callbacks and completion objects for consumed transition permissions. Completions witness an issued/applied operation even if another thread later changes its key. This extension needs concurrency facilities beyond the minimal core features; a tool-agnostic core does not imply arbitrary concurrent proofs in plain sequential Dafny. Concurrency allows multiple readers, or disjoint statically allocated storage regions with exclusive access during writes. It excludes read/write or write/write overlap within one region because callers must know its current logical state. Sharded wrappers establish linearizable individual create/read/update/delete/list operations, not cross-shard transactions. The reusable inner implementation still supplies a transactional API to wrappers. Corruption is modeled by a fixed device bitmask with at most c potentially faulty physical bits. A zero mask bit reads correctly; a marked bit can return either value independently on each read. The trusted CRC axiom distinguishes byte strings at Hamming distance 1 through c. Current ECMA CRC-64 implementation uses c=1 for arbitrary lengths; the cited c=3 for data shorter than about1 GiB is not exploited. Detection is conditional on that device-wide bound, not a guarantee against arbitrary bursts, malicious rewrites, rollback or unbounded media failure. Reader qualification: integrity proofs must cover corrupted data and checksum bytes, repeated/noncontiguous address mappings, and the chosen CDB codeword distance under the same physical-bit bound. The paper reports verified checking and a trusted CRC library; it does not derive an unrestricted cryptographic collision-resistance guarantee. Detecting a mismatch permits reporting corruption, not necessarily repairing damage or preserving availability. Tick-Tock’s old-checksum/new-data mismatch after a crash is not a small-bit corruption event relative to the old data. CRC(D0) can collide with CRC(D1-prime) even if D1-prime differs by only bounded media corruption from D1, because D0 versus D1-prime may differ arbitrarily. The paper gives a logical counterexample to the algorithm in its model, not an independently reproduced NOVA-Fortis artifact exploit. CDB stores one of two known eight-byte values CRC(0) and CRC(1), with aligned crash atomicity and sufficient corruption separation assumed/proved for the primitive. Two data/CRC slots accompany it. Write the inactive slot and checksum, flush, atomically switch CDB, flush. The selector identifies the committed slot independently of potentially matching stale checksums. This costs extra storage and flushes; it does not remove hardware atomicity assumptions. CapybaraKV values contain a fixed-size item and a list of fixed-size elements, with fixed-size keys. The abstract state has on-abort and on-commit maps. Ordinary operations affect the latter; abort restores it from the former; commit publishes it to the former. A crash during commit may commit or abort, while other uncommitted operations abort. Reads within a transaction see tentative operations, so visible results need not already be durable. Implementation uses main/item/list tables, per-field CRCs, validity CDBs, copy-on-write updates and a physical redo journal. Journal commit writes a CRC of pending entries then flips a CDB; replay installs operations and clears the journal. Volatile key index and free lists rebuild on startup. Correctness depends on recovery traversal, bounds, allocation and CRC checks, not merely the commit selector. Capacity is statically allocated at initialization with maximum key/item/list counts and sizes. No dynamic resizing, partial-value updates or range queries. All keys reside in a volatile Rust HashMap and must be indexed again at startup. Designed target is small records on tens of GiB of dedicated PM in a cloud-storage service. Prototype integration into an Azure Rust system is reported, not evidence of production deployment of all verified variants. Trusted pmcopy bridges Verus and compiler-generated representations. It requires repr(C) and derive(PmCopy), implements PmSafe/PmSized/Clone/PartialEq, generates specifications and static layout assertions checked by Rust. PmSafe includes numeric types, bool and char; composites require safe fields. Casts still require correct layout, valid discriminants/values and prior corruption checks. Compiler assertions caught a u128/i128 layout change; this is a concrete consistency check, not a proof of the macro or compiler. CapybaraNS stores a 64-bit logical timestamp and last hash. Advance increments and atomically persists them using CDB; Sign signs their binding. A trusted C# wrapper supplies CRCs, cryptography and serialization. This paper does not supply a complete distributed-notary protocol, a cryptographic implementation proof, remote attestation argument or availability theorem. Counter overflow handling and full security assumptions require the external specification. PM model permits independent eight-byte chunk reorderings until flush; backend write uses PMDK non-temporal stores or mov followed by clflushopt/clwb, and flush uses sfence. It deliberately overapproximates strongly ordered clflush and same-cache-line hardware ordering, including potential compiler reorderings. Eight-byte alignment/atomicity, backend calls and hardware behavior remain trusted. PoWER can use other models; current model is not a universal storage-device specification. Table 2 counts unverified pmcopy source but not its generated code. KV trusted count includes mock byte-vector PM plus Windows/Linux backends, concurrency and sharding wrappers. Trusted versus proved LOC therefore should not be interpreted as executable core size alone. Reported proof/code ratios are2.6 KV and2.4 NS; LOC is not a measure of specification adequacy. KV design, implementation and verification took about1.5 years by a team of experts and newcomers; headcount and person-time are unspecified. After that experience, porting the PM spec to Dafny took under an hour, porting helper lemmas about an hour, and implementing/verifying NS about nine hours after its spec and C# wrapper were already written. This is author experience, not a controlled productivity comparison. On Linux6.9.3 with i7-11850H eight physical cores and32 GB RAM, KV verifies in54s with one thread or23s with eight; NS takes12s with one. Appendix expects KV1–2min serial or15–40s parallel on other hardware. Paper gives no independent proof replay in this reading and no controlled comparison against alternative verification approaches. Performance setup is a two-socket32-core machine with128 GB RAM and one128 GB Optane DC PMM, Debian Trixie/Linux6.12.10. All KV runs use the sharded variant with one shard per thread. Redis client/server run together but retain communication overhead; RocksDB uses memory-mapped files and non-temporal log appends; Viper preallocates enough capacity except in utilization measurement. Different supported features and durability architectures affect comparison. Microbenchmarks use25M records,64-byte keys,1 KiB values and8-byte list elements. Append adds16 elements per record in random order; read-list returns the entire list; trim removes it. Other operations run once per record. Figure2 uses logarithmic latency axes and95% confidence intervals. KV matches or beats RocksDB but Viper is faster on several operations, including most writes; Redis is slowest. Windows/Azure20 GiB battery-backed DRAM tests run only KV, with up to2× improvement; other systems lack Windows support. YCSB uses15M keys,24-byte keys,1140-byte values and five executions per system. RunE range queries are omitted and RunA/RunB partial updates become full-value updates. X is uniform75% updates,5% read-modify-write and20% reads; Y/Z use50/50 or5/95 read/update with90% accesses to10% records. LoadE is omitted only from Figure4 as similar to LoadA. These modified workloads must not be called an unmodified full YCSB suite. At one thread KV is broadly comparable to Viper and often slightly slower. At16 threads it substantially leads Viper on update/read-heavy run phases but not every load phase; the broad prose claim of outperforming other systems needs this figure-level qualification. Viper is tested on one non-interleaved NVDIMM despite optimizations for interleaved PM. Authors attribute scaling issues partly to CCEH semaphore costs nearly doubling1→16 threads. This is reported profiling attribution, not isolated causal proof. Figure 4 read-heavy B/C/D scale better than write-heavy phases. Approximate 16-thread throughput is RunC 3.5 Mops/s, RunB/RunD 3.0, RunA 1.25, LoadA 0.4, RunF 1.1, RunX 0.9, RunY 1.2, RunZ 0.8 and LoadX 0.4. Values are visual estimates. Hash sharding distributes hot keys across shards, so this does not demonstrate performance under all accesses contending on one shard. Full-instance startup fills each store to its own out-of-space point with64-byte keys/1 KiB values; capacities and record counts can therefore differ. KV/Viper startup is seconds because volatile indexes rebuild, whereas RocksDB is milliseconds. Full Redis startup fails with memory allocation error. Table3 utilization instead uses YCSB LoadA and optimally provisions KV at18 GiB with no further growth. Comparing those startup/resource numbers requires keeping these distinct experiments separate. Artifact branch osdi25-artifact and Zenodo15306499 include implementations, scripts and proof guidance; CHL formalization lives in the Perennial repository rather than being bundled. Exact performance reproduction requires at least128 GB Optane, with128 GB DRAM/32 cores recommended; emulation can check workflow but changes performance. Default artifact experiments are smaller than paper runs. No artifact or external proof was executed here; no LLM, TLA+ model-checking or distributed network liveness experiment appears. - how much was read: most of it read - source; notes: PoWER Never Corrupts: Tool-Agnostic Verification of Crash Consistency - record id: `power-2025` - QSM-Cutoff (2025) - title: QSM-Cutoff: Systematic Derivation of Quantified Cutoff Formulas for Distributed Protocols - what: Enumerates reachable finite states using symmetry. Minimizes their logical description. Grows the domain sizes until a saturation test passes. - number: 19-model evaluation (Section 7, pp. 278-280), e.g. toy consensus forall: node=5, quorum=10, value=3 - number: Pages 263-286 - number: 19 protocols - number: 6000 s/run - limits: That the formula is a true reachability invariant for every size is still a conjecture. Ordered protocols such as Paxos and Bakery are future work. - how much was read: most of it read - source; notes: QSM-Cutoff: a full 19-model 2025 set - record id: `qsm-cutoff-2025` - QuickSilver / D-Escalate / Venus (2025) - title: Automating Formal Verification of Distributed Systems via Property-Driven Reductions - what: Sound reductions from parameterized models (arbitrarily many processes, large data domains) of agreement-based protocols to small finite models. QuickSilver, D-Escalate and Venus check them. The developer writes a Mercury/Coalition model and a safety formula. - number: Table 3.1: 12 Mercury models, 32-99 lines, cutoffs 2-5, 0.059-736.417 s - number: Table 4.1: 23 Coalition cases, 78-126 lines, one cutoff 6 - number: Table 5.1: 10 Venus cases, 34-79 lines, 0.202-1.620 s - number: means over 10 runs - limits: It covers safety of the parameterized model only. The termination of the agreement primitives is assumed. One cutoff was computed manually. Human modeling time is not quantified. - how much was read: most of it read - source; notes: Automating Formal Verification of Distributed Systems via Property-Dri - record id: `quicksilver-d-escalate-venus-2025` - Remix (2025) - title: Multi-Grained Specifications for Distributed System Model Checking and Verification (Remix) - what: Refines coarse TLA+ protocol actions into detailed ones where concurrency matters. It mixes levels of detail to keep model checking practical, and checks the model against implementation executions (ZooKeeper). - number: six severe bugs violating five types of invariants - number: Six deep ZooKeeper bugs found and fixes verified - number: abstract: found six severe bugs that violate five types of invariants - number: six severe bugs - limits: The notes infer that matching the implementation and fixing bugs found by the model checker do not validate the chosen client guarantee, and do not prove liveness for unbounded cases. - how much was read: most of it read - source; notes: Choosing top-level distributed guarantees and trusted boundaries; notes: Appendix B: Concrete systems and theorem scope - record id: `remix-2025` - Reusable Formal Verification of DAG-based Consensus Protocols (2025) - what: # Reusable Formal Verification of DAG-based Consensus Protocols (authored by agents unless marked 🧑) Nathalie Bertrand, Pranav Ghorpade, Sasha Rubin, Bernhard Scholz and Pavle Subotić, arXiv2407.02167v2,18March2025. The inventory year2024 identifies the original submission; this read uses the retained2025revision. The authors report TLA+/TLAPS safety proofs for five protocol models by combining three DAG-construction components with two ordering components. The five are DAG-Rider, Cordial Miners, Hashgraph, Eventually Synchronous Bullshark and a minor variant of Aleph. The result concerns Integrity and Total Order; eventual delivery, probabilistic progress and implementation correctness remain outside it (Q0,Q1,Q2,Q12). ## Reading scope and source identity Read all21PDFpages, sections1–6 and51reference entries, all three figures including both panels of Figure2, seven listings and numerical Table1. Individually viewed pages6–16, covering the figures, listings, refinement mapping and numerical table. The paper refers to “Appendix ??” but includes no appendix. References were read as bibliography entries, not recursively read papers. Acquired the paper-linked repository's complete nontruncated tree and22static blobs at9e4c9629eb283c7c34b6ffcf7956bc72a3e26e5d,22December2024, the latest retained commit before this paper revision. This selects a historical version without establishing that it produced the reported timings. Whole reads cover README and the five component Specification.tla files. Proof files and complete-protocol sources are inspected only in explicitly recorded ranges. Acquisition of a file does not imply its whole read. No author code, specification, checker or solver was executed/imported; no serialized experimental data or model was loaded. ## What is proved and how composition works A vertex embeds its entire rooted causal history, rather than only an opaque identifier. Thus two processes possessing the same vertex have identical histories for it. A separate anchor-agreement property requires processes that have selected anchors for a frame to select the same anchors. Delivering each frame's previously undelivered causal-history vertices in a fixed deterministic order then prevents duplicate delivery and gives consistent delivery order. A lagging process may deliver a shorter prefix; the proof is not simultaneous equality of local delivery states (Q2,Q3). The decomposition is three construction models, reliable structured, unreliable structured and unreliable unstructured, plus Global Perfect Coin (GPC) and Virtual Voting (VV) ordering. Reliable construction ensures one agreed vertex per position. Unreliable structured construction allows equivocation and uses ratification to agree on a vertex at a position. GPC ordering separately agrees on leader positions; combining these properties establishes anchor agreement. Hashgraph first converts its unstructured events to a structured witness DAG. Reference consistency constrains witnesses' predecessor references; VV establishes agreement on famous witnesses (Q4,Q6,Q7,Q8). The full protocol maps constants and new state variables into an INSTANCE of the ordering specification. Each construction action performs an appropriate ordering action or leaves its mapped variables unchanged. Protocol-specific refinement obligations remain necessary: five reusable components do not eliminate the proofs connecting five concrete models to them. DAG-Rider and ES Bullshark share reusable components but differ in wave lengths and commit/leader rules. Aleph is explicitly a variant; neither the paper nor its one-line repository README gives a precise delta against every published Aleph rule (Q4,Q9,C6). ## Assumptions and abstractions The system explanation assumes signed identities and fewer than one-third Byzantine processes. Reliable broadcast is weakened to integrity because validity and eventual agreement support liveness. Its model retains the first broadcast for each creator/round; the authors argue a faulty process's chosen delivered message could equivalently have been sent first. This is an abstraction argument to retain in correspondence work, not a separately measured implementation equivalence (Q1,Q5). Unreliable communication copies a vertex from another local DAG; Byzantine participants can insert arbitrary modeled vertices. Procedures retain input/output behavior while omitting internal loop states. GPC becomes an arbitrary fixed function shared by all processes: randomness, unpredictability and fairness are absent. Agreement of the function's answers suffices for the stated safety argument; it supplies no probability-one termination theorem or implementation of a cryptographic coin (Q5,Q7,Q8). The retained component models use finite symbolic bounds on waves/rounds or event IDs, with no fixed numerical test instance. Proof claims quantify over their parameters; a single TLC run at one bound would not establish that claim. The record does not independently establish an infinite-execution refinement beyond these bounded model families. The VV component incorporates its reference-consistency premise directly into both the prestate and poststate of Next. Its source proof of that premise therefore depends on the action restriction; a concrete protocol still must justify the mapping (C1–C5). ## Consequential findings in the retained artifact The printed self-referential VertexSet listing is explanatory shorthand. ReliableStructuredDAGconstructionSpecification.tla instead constructs vertices recursively by decreasing round with UntilRoundVertex. That resolves the apparent circular-definition concern for this component. However, its received/added-vertex guards access v.edges, while the actual constructed records contain strongedges and weakedges. This is a static field mismatch in the saved model; no checker error or reachable protocol failure was observed (C1). In the unreliable structured component, Approves(v,u) requires Observes(v,u) and forbids observing every vertex with u's source and round. Taking that quantified vertex to be u yields both Observes(v,u) and its negation. Thus the literal definition admits no approval. With n-f positive under3f<n, ratification requires a nonempty set of approving sources and cannot occur under this reading. Since ratified vertices initialize to Nil, the displayed agreement property can hold without any ratification progress. This is a reader derivation from the retained definitions, not a claim that the real Cordial Miners protocol fails (C2). The unstructured component's DonotSeeFork(v,u) has the same self-including universal condition. Taking x=u contradicts its Path(v,u) conjunct. Its Sees predicate consequently cannot witness a seen ancestor under the intended reflexive Path interpretation. This is another source-definition concern to resolve before trusting correspondence to actual Hashgraph behavior; the paper excludes liveness and no safety counterexample is established (C3). VVOrderingProofs.tla contains several named lemma statements without proof text. Most concretely, intInv14 asserts, for integers a,m, that a>=m and m+a>2f imply m>f. The permitted assignment f=1,a=2,m=1 makes both premises true and its conclusion false. The file cites this lemma in its Inv1 preservation proof. The nearby intadd statement has the plausible intended conclusion a>f with strict a>b. This suggests a proof-support defect or mistaken statement in the retained artifact; it does not show a checker accepted a false theorem. The actual preservation goal is a majority-count fact that can be mathematically true even though this cited general lemma is false (C7,C8). The same proof preamble asserts, without accompanying proof text, that every witness has more than2f predecessor sources in the preceding frame. Combined literally with its positive finite frame range and predecessor-frame condition, that leaves no nonempty witness set: a witness of minimum frame would require an earlier witness. This preamble should not silently become an established domain theorem. A simpler nonvacuity concern appears in the VV specification itself: all witness-DAG cells initially are empty, while adding a witness requires more than2f predecessor sources already present. With f nonnegative and no genesis exception, no first witness can be added under the intended typed interpretation. Whole proof closure and tool handling of unproved declarations have not been replayed. These artifact findings limit independent confirmation of the paper's mechanized-proof claim; they do not refute the high-level decomposition or establish a reachable fork (C5,C7). ## Evaluation and significance Table1 reports, in order reliable structured/unreliable structured/unreliable unstructured/GPC/VV: specification lines403/160/230/272/136; invariants6/6/7/10/18; proof lines460/594/554/822/2120; maximum proof depths10/9/8/9/13; maximum degrees7/8/7/7/11; leaf obligations633/895/665/1302/3316; and checking seconds49/68/74/125/651. Environment:2.10GHzCPU,8GBRAM,Windows11,TLAPS1.4.5. These are author-reported component checks, not reader replications or total timings for every full-protocol refinement. No repeated-run variability or controlled comparison appears (Q10). The authors report approximately14person-months across five people. Their “almost half” proof-effort claim corresponds to reducing an illustrative ten separate construction/ordering components to five reusable ones. There is no controlled person-time baseline or ablation demonstrating a50% labor saving; refinement work and component complexity also differ. A reusable component count is concrete, while a measured causal labor reduction remains unestablished (Q0,Q4,Q10,Q12). This is directly relevant to reusable TLA+ specifications and distributed-protocol proofs. It has no Verus/Rust artifact or LLM-agent experiment. A reader proposal for evaluating proof agents is to score specification correspondence, nonvacuous progress examples, closure of helper lemmas and refinement obligations separately from reported leaf-obligation throughput. The retained field/predicate/lemma issues make those distinctions concrete without treating static concerns as observed solver results. - number: approximately 14 person-months across 5 people - number: Table 1 spec lines 403/160/230/272/136; proof lines 460/594/554/822/2120; obligations 633/895/665/1302/3316; TLAPS time 49/68/74/125/651 s - number: TLAPS 1.4.5 on 2.10 GHz, 8 GB - number: Reuse reduces proof effort by almost half - limits: Safetyonly;abstractbroadcastandcoin;finiteparameterizedhorizons;implementationrefinementfuturework;retainedsourcefield/predicate/helperlemmafindingslimitindependentconfirmation;nocheckerreplay - how much was read: most of it read - source; notes: Related addition: Reusable Formal Verification of DAG-based Consensus - record id: `reusable-formal-verification-of-2025` - super_sketch / super_fix (2025) - title: The Burden of Proof: Automated Tooling for Rapid Iteration on Large Mechanised Proofs - what: Isabelle tooling. super_sketch splits goals and runs Sledgehammer on them concurrently. super_fix repairs proof scripts after the model changes. Applied to the CXL safety proof. - number: 310k lines of code, 54,128 lemmas - number: about one day per obligation-matrix iteration - number: fewer than 100 unresolved subgoals out of 50,000+ - number: two-year span is elapsed time - limits: Unsolved goals stay as sorry (a placeholder for a missing proof). Neither tool designs the whole invariant. - how much was read: most of it read - source; notes: Related work absent from the first pass: The Burden of Proof - record id: `super-sketch-super-fix-2025` - Sync/Async functional distributed verification (2025) - title: Functional Reasoning for Distributed Systems with Failures - what: Defines twin Rocq-embedded languages Sync and Async to make high-level functional reasoning about asynchronous distributed protocols precise, then proves that compiled Async executions are included in Sync denotations. The authors mechanize the framework and safety proofs for Bosco and Sequential Paxos. Sync is a choreography language whose typed programs are ordered communication steps over role-indexed vectors; its power-set denotation explicitly enumerates message loss, reordering, truncation and arbitrary Byzantine injections. The configuration model separates good, crash-prone and Byzantine nodes and uses a Netwk relation as an executable over-approximation. Finite loop unwinding supports safety proofs for nonterminating protocols. Bosco proofs derive a strong one-step theorem for n>7f and an inductive univalence/agreement invariant for n>3f. SeqPaxos proofs use a weakest precondition UC_D to show once a value is decided, later iterations decide it or abstain when n>2f; the condition is weaker than the protocol’s strongest postcondition and exposes optimization opportunities. Async is a monadic node LTS plus single-use channel LTS; alignment permutes arbitrary interleavings into channel order, and adequacy (Theorem 5.1) follows through aligned traces, big-step semantics and channel-erasure lemmas. The Rocq development is about 2.5k lines and includes endpoint projection/executable extraction. - number: Rocq mechanization about 2.5k LoC - number: Bosco one-step threshold n>7f; agreement threshold n>3f - number: SeqPaxos agreement threshold n>2f - number: SimpleVote example n_R=4, f_R=b_R=1 - limits: Sync excludes branches and loops inside a body, cryptographic primitives, and arbitrary communication order; it therefore targets streamlined communication-closed protocols. Network messages are authenticated, nonduplicated, eventually delivered between correct nodes, and well typed; signatures and parsing are assumed rather than modeled. Byzantine behavior is over-approximated and can inject values it could not know. Safety is proved for finite loop unwindings, not termination/liveness. The Async adequacy theorem is inclusion (compiled outputs are in the denotation), and correctness depends on the stated channel-ordering and synchrony-reduction restrictions. - how much was read: most of it read - source - record id: `sync-async-functional-distributed-verification-2025` - TickTock (2025) - title: TickTock: Verified Isolation in a Production Embedded OS - what: TickTock verifies isolation in an embedded OS. The notes use its distributions of replay time and its list of trusted functions. - number: 3,603 lines of checked annotation across 2,581 functions - limits: It lists the trusted functions, which are trusted because of tool limits, because they are ghost-only code (used only in proofs), or because they are out of scope. Its lower annotation ratios may reflect narrower guarantees. That last point is the notes' inference. - how much was read: most of it read - source; notes: TickTock: measured replay distributions and explicit trust exemptions - record id: `ticktock-2025` - TLA+ Examples issue 174 (2025) - title: Spec claims to check (safety-prop) UnforgLtl but config actually also checks (liveness-props) CorrLtl and RelayLtl - what: An open issue in the TLA+ Examples repository flags a mismatch between a Byzantine broadcast specification's stated safety property and the configuration's additional liveness properties. It points to the exact TLA+ and configuration lines. - limits: The issue is a repository-maintenance report; it does not say whether the extra properties pass or fail, only that the configuration checks more than the description claims. - how much was read: most of it read - source - record id: `tla-examples-issue-174-2025` - TraceLink (2025) - title: TraceLink: Linking Implementations with Their Verified Designs - what: TraceLink records traces from Go code that PGo compiled from an MPCal design. It converts them to TLA+. TLC then checks that the observed actions follow the design's next-state relation. It finds deviations between the implementation and the model. - number: 9 previously undetected bugs (2 network-assumption, 1 miscompilation, 2 instrumentation, 2 timeout-model, 1 failure-detector, 1 symbolic-abstraction) - number: Median tracing overhead 23% (37% with stress testing); Sidestep shortens counterexamples by 29%; 93x compression of generated TLA+ - number: 20,485-step Raft trace: 328 s vs 9.4 s plain TLC; raftkvs 990 MPCal / 7,993 TLA+ / 3,163 Go lines - number: Manual comparison for a small lock service took 2 hours (anecdote) - limits: It needs a formal design written by a human. Traces must start at the modeled initial state. It checks refinement only on the executions it observed, not on all executions, and not progress. The trace translation and TLC are trusted. - how much was read: most of it read - source; notes: TraceLinking Implementations with Their Verified Designs; notes: TraceLinking Implementations with Their Verified Designs - record id: `tracelink-2025` - Tunable Automation in Automated Program Verification (2025) - what: Adds a `broadcast` mechanism to Verus so users choose which universally quantified facts the SMT solver may use, per module, function or proof block. It measures how extra facts about Seq/Map/Set/Multiset change proof hints needed and verification time on four Verus projects. - number: 49 Dafny-prelude lemmas added as ambient facts (Seq 25, Map 2, Set 10, MultiSet 12) - number: asserts after minimization: IronKV 268 to 245, Splinter 1158 to 1130, Anvil 343 to 336, CapybaraKV 449 to 415 (2% to 9% fewer) - number: more than half the original asserts were not needed - number: 98.2% of IronKV functions verify within 2x of original time; worst slowdowns 3x to 19x - limits: Assert count is called a very rough proxy for automation; the minimizer is a linear scan, not optimal, and ignores lemma calls. all_triggers did not scale to the other projects (many verification failures). - how much was read: most of it read - source; notes: Tunable Automation (2025) - record id: `tunable-automation-in-automated-2025` - Veil (2025) - title: Veil: A Framework for Automated and Interactive Verification of Transition Systems. - what: It embeds distributed transition systems in Lean. It sends first-order proof obligations to SMT solvers and leaves the rest as interactive Lean goals. - number: 16 evaluated cases incl. Rabia, SCP, Suzuki-Kasami, Vertical Paxos - number: 1704 non-empty, non-comment lines of Lean; 85 actions and 185 invariants; about 100 lines per file - number: 16 benchmarks, 1,704 Lean lines, 85 actions, 185 invariants - number: Veil verifies 16/16; 14/16 under 15 s and 12/16 under 10 s - limits: It evaluates checking supplied invariants, not finding them. It is not an LLM agent. All its guarantees are safety. The notes record no agent success rate. - how much was read: most of it read - source; notes: Veil: proofs in Lean with automatic first-order checks; notes: Veil: a promising proof interface, with no agent rate established here - record id: `veil-2025` - VEP: A Two-stage Verification Toolchain for Full eBPF Programmability (2025) - what: VEP separates eBPF verification into C-level symbolic execution and SMT proof generation in user space, compilation that translates code, assertions and proofs, and independent bytecode symbolic execution/proof checking intended for kernel space. Separation logic describes owned memory and helper-acquired resources. Annotations expose loop invariants and contracts unavailable to fully automatic verifiers. The paper reports acceptance/rejection, time, memory and annotation/proof sizes on 41 small programs, and claims Coq proofs of the separation-logic transformation properties. It does not present a mechanized soundness/refinement theorem for the entire executable toolchain. Records proof-generation/checking boundary, trusted helper specifications and bytecode semantics, assertion restrictions and conversion rules, compilation passes and source-property loss, safety versus intended functionality and termination proof limits, concrete string/list/socket examples, all Table 2–5 results and deployment/version uncertainty. Separates sample success from universal no-error/full-programmability claims; checks discrepancies in memory/speed/acceptance prose and proof-line terminology; preserves printed illustrative inconsistencies without claiming implementation defects. - limits: §§2/5: Claimed small trusted computing base excludes the C verifier, compiler and SMT solver because bytecode is checked again. Guarantee still depends on correct executable bytecode checker, faithful eBPF instruction/memory/arithmetic semantics, actual helper contracts, and correspondence with kernel execution/JIT. The paper supplies no whole executable-checker soundness or code-to-kernel refinement theorem. §5 specifically reports Coq proofs for separation-logic transformation properties, not all these components. §§2.1/3/5: VEP-C computes strongest postconditions, eliminates spatial entailments, and uses its own SMT solver producing cvc5-style proof terms. VEP-eBPF independently symbolically executes bytecode and checks spatial/pure proof steps without solving. Checked proof terms remove the need to trust SMT answers only to the extent proof rules and their checker/semantics are correct. Kernel-space deployment is the intended architecture; evaluation does not clearly distinguish an in-kernel deployment benchmark from standalone checker measurements. §§2.2–2.3/7: Introduction and capability section claim functional correctness, but §2.3 explicitly makes user intent the user’s responsibility and §7 lists functional correctness as future work. The reported Key_connection annotations are expressly memory-safety-only. Accepting bytecode safety does not establish intended lookup/copy semantics or preservation of arbitrary source assertions. §2.2: Termination within finitely many steps is claimed. The shown loop reasoning uses invariants and exit conditions; no explicit general ranking-function, decreasing variant or fuel/step-bound rule is explained. Invariant preservation alone establishes partial correctness, not termination. This is a limit of the presented justification, not a reproduced checker counterexample. §§2.1/6.2/Appendix B: Full programmability and no false positives/negatives are author claims. Finite examples and annotations do not establish completeness for all safe programs; general entailment is acknowledged undecidable. Spatial-expression scope restrictions reject some natural quantified array assertions, requiring custom predicates. Appendix B DNF normalization can multiply branches, so approximate linear symbolic-execution cost in statement/assertion length excludes assertion-size growth and SMT solving. §3: Memory ownership uses disjoint spatial conjunction; duplicated ownership is inconsistent. Built-in helper contracts are derived from documentation, not proved against kernel helper implementations. Resource acquire/release soundness depends on their completeness and accuracy, including permitted null returns, flags and sizes. Contract variants are selected for supported contexts. §§2.3/4: Source C undefined behavior can compile into memory-safe bytecode. Early source rejection protects source semantics beyond kernel bytecode safety. Maliciously altered bytecode with a valid safety proof may pass without matching original program intent. Neither final safety checking nor an unverified compiler automatically proves C-to-bytecode functional refinement. §4: Compiler uses nanopasses, member-to-offset conversion, calling convention transformation, iterated register coalescing, and explicit stack frame preconditions. Few optimizations supported. Dead source variables become existential logical variables. Figure 14 deliberately turns a false source assertion x==1 after x=0 into satisfiable exists _x,_x==1; source assertion truth is lost even though bytecode safety can survive. §4 Figures 13/15, Appendix A: Printed illustrations contain apparent inconsistencies. Figure 13 sets R1=0 then asserts R1==*(R10-4)+1 while stack value is0. Figure 15 declares fields x,next but accesses l.head. Appendix A transforms forall n,v!=n*n into forall n,n!=n*n, which fails for n=0/1 and is not generally equivalent. These are source illustration issues; artifact behavior was not tested. Appendix A prose also describes x as a nonsquare although displayed condition constrains v with x=2*v. §3 Figures 4/6/9/12: An arbitrary owned output list proves initialized memory/ownership, not that memset filled every byte or strncpy copied/padded correctly. Figure 9 uses stronger repeat(v,n) content predicate; Figure 6’s displayed successful strncpy postcondition is weaker than complete C-library functionality. Keep actual predicate content when evaluating generated proofs. Appendix B: Internal assertions separate program-variable addresses, pure facts and owned memory; logic variables in spatial facts require permitted existential binding. Printed array-address conversion shows V(e1+e2) without explicit element-size scaling; semantics/type conventions would need inspection before inferring a compiler defect. §6: Evidence is 41 selected small C programs, not large production services or adversarial bytecode fuzzing. Linux Kernel5.15 and PREVAIL August2024 used. Hardware, trial repetitions, confidence intervals, human annotation time/user study and whole-tool LOC are not specified. No independent reproduction performed. §6 Tables 2–5: Passing rate means acceptance for safe cases and rejection for unsafe cases. All ten unsafe cases stop at VEP-C; compiler/eBPF columns are dashes. Thus data demonstrate C-front-end rejection, not independent final-checker rejection of ten crafted attacks. Safe VEP outcomes are 30 category samples plus one Key_connection, all accepted. §6.2: Linux 6/10 acceptance is for the PREVAIL sample category, not all safe programs; Linux category is9/10 and Stringlib3/10, with Key0/1. PREVAIL10/10,8/10,1/10 and Key0/1. Source attributes PREVAIL variability to SMT dependency/nondeterminism although introduction describes abstract interpretation; no experiment establishes that causal claim. Claimed version regressions30%/20% lack paired version tables, and no cross-version VEP study is shown. §6.1: Claimed predictable2–3MB VEP-eBPF memory is contradicted by Linux sample maximum8034KB (lathist); VEP-C maximum32569KB. Linux average.94ms applies to its accepted Linux sample subset, not all benchmarks, and Stringlib maximum2.69ms. Claimed3–5x faster than PREVAIL is not uniform: Linux category12.48/8.42≈1.48x, while39.46/8.42≈4.69x relative to VEP-C. Different acceptance sets complicate average comparisons. §6.3: Table3 labels proof counts as proof lines, while prose calls64840 proof obligations. Do not infer64840 independent obligations. Annotation lines are a size proxy, not measured effort or expertise. Key proof5819lines in table versus about5800 in text; preserve rounding. §7: LLM generation of annotations, broader functional correctness and advanced optimization support are proposed future work. No LLM agent experiment, Verus/verified Rust/TLA+ proof, distributed-protocol theorem or code execution reported in this reading. - how much was read: most of it read - source - record id: `vep-a-two-stage-2025` - VeriRT (2025) - title: VeriRT: An End-to-End Verification Framework for Real-Time Distributed Systems - what: A Coq framework that proves timed behavioral refinement. It shows that C programs, compiled through CompCert to assembly, match timed abstract specs. Case studies: Cristian clock sync, a simplified PALSware, and an active/standby scheduler. - number: C lines: 313 (ClockSync), 327 (PALSware), 352 (Active-Standby) - number: ImplVerif proof lines 3526, 5913, 4718 - number: refinement proof lines 6597 and 8861 for ClockSync and PALSware - number: no person-time - limits: Timing bounds are assumptions validated outside the proof, not derived. It does not claim a per-request progress theorem. - how much was read: most of it read - source; notes: VeriRT: An End-to-End Verification Framework for Real-Time Distributed - record id: `verirt-2025` - VeruSAGE (2025) - title: VeruSAGE: A Study of Agent-Based Verification for Rust Systems - what: 849 proof-writing tasks from eight verified systems (IronKV, Anvil, Atmosphere, Vest and others). A proof body is removed, and an agent loop with a 20-minute budget must restore it. - number: Table 5 model totals: o4-mini 41%, GPT-5 55%, Sonnet 4 64%, Sonnet 4.5 81%; Sonnet 4.5 with plain Copilot proves 688/849 (80.9%) - number: Anvil library 100%, Anvil controller 37%, IronKV 84%, Atmosphere 83% - number: Specialized harness about 1.6x time and 2.2x cost on whole projects - number: 849 tasks from eight systems (nine projects): Anvil temporal library 104, Anvil vreplicaset controller 63, IronKV 118, mimalloc 89, Node Replication 29, NRKernel 204, Atmosphere 157, persistent storage 63, Vest 22 - limits: Failures center on discovering inductive invariants (facts that hold initially and stay true after every step). The Anvil library lemmas are not the same as proving that a new controller eventually reconciles. - how much was read: most of it read - source; notes: VeruSAGE: high overall rates hide controller-invariant difficulty; notes: VeruSAGE / VeruSAGE-Bench - record id: `verusage-2025` - A Systematic Literature Review on a Decade of Industrial TLA+ Practice (2024) - what: The paper reviews 16 papers on industrial use of TLA+. - number: 16 papers - number: Early design 81%, debugging 44%, implementation 38% - number: Only 3 of 16 discuss the model-to-code link - how much was read: most of it read - - record id: `a-systematic-literature-review-2024` - Anvil (2024) - title: Anvil: Verifying Liveness of Cluster Management Controllers - what: Rust controllers are written as state machines. The authors prove they match an abstract model. They also prove that the model reaches the desired cluster state and then stays there, once the desired state stops changing. They call this eventual stable reconciliation. - number: ZooKeeper 1,134 executable / 8,352 model+proof lines; RabbitMQ 1,598 / 7,228; FluentBit 1,208 / 8,395 - number: total 3,940 executable, 23,975 proof/model, 2,326 trusted lines - number: parallel verification 154, 151, 96 seconds - number: about 2.5 person-months; first proof about two person-months, later ones about two person-weeks - limits: Trusts the temporal-logic embedding, the environment model, the specs of external APIs, Verus and the OS. Assumes faults eventually stop. The guarantee says nothing useful if the desired state changes forever. One bug came from an incomplete trusted spec of the ZooKeeper API. - how much was read: most of it read - source; notes: Anvil: Verifying Liveness of Cluster Management Controllers; notes: P06. Anvil: Verifying Liveness of Cluster Management Controllers - record id: `anvil-2024` - Bythos (2024) - title: Compositional Verification of Composite Byzantine Protocols - what: Embeds TLA in Coq and assumes that message delivery is weakly fair (a message that stays deliverable is eventually delivered). Proves that pending packets are eventually delivered and that protocol phases finish. The method: for each phase, find a finite set of packets that is enough. Show that delivering them starts the next phase. Chain the phases with the transitivity of the leads-to relation (for example init ∧ □next ∧ WFDelivery ⊱ sent ~~> output). Covers Provable Broadcast, Reliable Broadcast, Accountable Confirmer and Accountable Reliable Broadcast. - number: full development about 7100 Coq lines, trusted OCaml shim about 200 - number: liveness spec/proof lines: Bythos library 160/181; Provable Broadcast 92/67; Reliable Broadcast 144/161; Accountable Confirmer 172/200; composition 3/7; connector 48/92 - number: knowledge lemmas: 10-20 per case, found manually - limits: Fairness holds only for delivery to honest processes. The set of honest members is fixed. No proof of probabilistic termination. Partial synchrony (bounded message delays that hold only after some unknown time) is left to future work. The combined proof is tiny only after humans find reusable interfaces and facts about the connectors. The paper does not state how long the authors took. - how much was read: most of it read - source; notes: Bythos: composition with TLA proof rules in Coq - record id: `bythos-2024` - Coq W-MSR Consensus (2024) - title: Formally verified asymptotic consensus in robust networks. - what: Mechanizes the necessary and sufficient conditions for asymptotic consensus of the Weighted-Mean Subsequence Reduced algorithm under bounded malicious faults in robust networks. The Coq development formalizes safety, sufficiency and necessity proofs, supplies a concrete counterexample for a missing/imprecise necessity argument, and proves a stronger sufficiency condition. Formalization exposed quantifier and definition inconsistencies in the original proof. - number: About 11,000 lines of Coq proofs - number: Six person-months for formalization - number: No runtime benchmark; theorem formalization is the evaluation - limits: The development assumes real-field arithmetic and verifies the algorithm mathematically rather than its finite-precision implementation. The network is treated under fixed threat assumptions; time-varying networks and implementation effects are future work. - how much was read: most of it read - source - record id: `coq-w-msr-consensus-2024` - CSP retrospective (2024) - title: The Challenges and Triumphs of CSP Based Formal Verification - what: Roscoe looks back on CSP, a notation for describing processes that run in parallel and talk to each other, and its model checker FDR. He covers a two-player-game encoding, a primary/secondary consensus handover protocol for blockchains with malicious nodes, a way to check deadlock freedom from the sum of component state spaces, and the Coco tool used by ASML. - number: Coco Platform is in use at ASML for photolithography machine software (as stated by the author, no figures) - number: the author's naive CSP blockchain model could not hold a realistic number of blocks, agents or keys (state explosion) - number: token-invariant deadlock check on a 3-component example: state space of 6 component states, one nontrivial invariant (t4) proves deadlock freedom - limits: Reflective paper written for CSP experts: no benchmarks or timings are given for the handover protocol or the local checking idea, and both are models checked in FDR, not code. The author lists proving the Bully algorithm and a distributed database protocol for all N as still-open challenges. - how much was read: most of it read - source; notes: The Challenges and Triumphs of CSP Based Formal Verification (2024) - record id: `csp-retrospective-2024` - Dafny interlocking verification (2024) - title: Towards the verification of a generic interlocking logic: Dafny meets parameterized model checking - what: Encodes a generic railway interlocking logic as modular Dafny classes and combines template-style contracts with an SMT-based parameterized model checker to infer inductive invariants over arbitrary station configurations. A simplified track/route station proves mutual exclusion of incompatible routes. The model follows AIDA controlled-natural-language/SysML concepts: track and route classes expose states, guards, effects and modifies/ensures contracts, while a nondeterministic scheduler preserves station validity. The initial SecureStation property is insufficient for Dafny loop induction; SecureInductiveStation adds a free-track/active-route implication. A symbolic abstraction keeps only track and route state maps plus UsedBy, and the parameterized checker rediscovers that lemma in under one second. The authors propose an IDE loop generating Dafny from SysML, templates for simple invariants, and abstraction-guided parameterized inference for harder properties. - number: less than one second to find the strengthening lemma - number: two state maps (track and route) plus UsedBy in the abstraction - number: parameterized verification generally undecidable - number: three planned IDE integrations: SysML-to-Dafny, property expression, invariant generation - limits: The case study is artificial and highly simplified, with track/route variables and dependencies selected manually; the symbolic model omits many attributes of real stations. General parameterized verification is undecidable and model checkers do not scale to large systems. Kratos2 cannot handle unspecified object sizes, so prior C verification required concrete station configurations. Future abstraction/refinement and engineer guidance may be needed when generated Boogie verification conditions are cryptic. Results show feasibility, not verification of a deployed railway interlocking system. - how much was read: most of it read - - record id: `dafny-interlocking-verification-2024` - Datadog Courier blog (2024) - title: How we use formal modeling, lightweight simulations, and chaos testing to design reliable distributed systems - what: Datadog describes using TLA+ and TLC to model Courier, finding a message-loss counterexample after a design change, then combining model checking with simulation and chaos testing; it explicitly notes model/implementation mismatch limits. - limits: Already present in the local database; this pass reread and verified the page, so it is not newly added. - how much was read: most of it read - source - record id: `datadog-courier-blog-2024` - Distributed Locking as a Data Type (2024) - what: A work-in-progress report that writes two mutual-exclusion protocols (token passing and majority voting) as replicated data types in Scala. A replicated data type is a value with a merge function so replicas converge without messages. It gives an informal induction proof for the token protocol. - number: two protocols, token and voting; a Raft-inspired protocol is mentioned as implemented - number: no experiments or proof-assistant proof - limits: Safety needs only message integrity and progress needs at-least-once delivery. The token protocol has no progress if the owner fails permanently; the voting protocol assumes a fixed set of voters. Verification inside the LoRe language is future work. - how much was read: most of it read - source; notes: Distributed Locking as a Data Type (2024) - record id: `distributed-locking-as-a-2024` - Formally Verifying the Safety of Pipelined Moonshot Consensus Protocol (2024) - what: # Formally Verifying the Safety of Pipelined Moonshot Consensus Protocol (authored by agents unless marked 🧑) M. Praveen, Raghavendra Ramesh and Isaac Doidge, arXiv:2403.16637v1, March2024; the PDF identifies FMBC2024 in its metadata. The authors report an IVy proof that honest validators' committed chains are prefix-comparable for arbitrary network sizes under an abstract honest-quorum-intersection assumption. This is a safety verification of a high-level model, using190 reported invariants and23 monitors. Liveness is future work; cryptographic checking, executable implementation refinement and transaction validity are outside the demonstrated result (Q1,Q4,Q6,Q8,Q11). ## Reading and evidence scope Read all17PDFpages: sections1–7,30bibliography entries, AppendixA, the complete Figure1 protocol pseudocode, the unnumbered proof-dependency diagram, both tables and the appendix IVy listing spanning pages15–17. No numbered theorem/proof, evaluation plot or checklist appears. Individually inspected renders5,9,10,15,16,17 to verify the protocol, numerical table, proof diagram and appendix code. Complete extracted text was read for every page; visual scope is limited to those six renders. References were read as entries, not recursively followed. Fetched the paper-linked GitHub repository metadata and a complete nontruncated tree. Chose commit1eae7974044d6981b214aa231d4e1c7d6f1bc1b3, the most recent commit affecting suprabft before26March2024. Its date is8February2024. This is a documented historical-source selection, not proof that this exact commit produced every reported check. The current repository has later changes; the record does not substitute current HEAD for the paper-era source. Nine retained files have SHA256 and matching Git-blob identities. Read README, types.ivy, ubd_seq.ivy, network.ivy, moonshot.ivy, quorum_verification.ivy, check_all.sh and Isolates.txt whole. Read selected safety.ivy ranges1–140,703–875,1007–1115,1170–1195 and1230–1309, plus search hits for axioms/assumptions/isolates. This is not a whole1,309-line proof-file audit. Large IVySummary/IVyTrace logs, slides, backup/trial proof files and external tool-library modules were inventoried but not read. No author code, IVy model, checker or SMT solver was executed/imported; no model/checkpoint/serialized experiment data was loaded. ## Exact property and fault model Each validator maintains committed blocks and its latest committed block. Safety requires that for any two honest validators one committed blockchain is a prefix of the other. The model may allow one validator to lag arbitrarily far behind another; it need not require equal states at every instant. The retained full_safety definition makes three conditions explicit: the first tip equals or precedes the second; every block of the first set is in the second; and every extra block in the second descends from the first tip. The invariant requires this relation in either direction for honest participants (Q4,C8). The protocol explanation assumes n=3f+1 and quorums of2f+1, with at most f Byzantine validators. The mechanized abstraction does not prove a cardinality theorem with this arithmetic. It axiomatizes that every pair of quorums shares an honest member, and that an f+1 timeout group has an honest member. For the stated cardinalities, ordinary set counting justifies the honest intersection: two2f+1 subsets of3f+1 participants overlap in at least f+1, exceeding f faulty members. That arithmetic connection is reader reasoning, not a separate IVy run (Q2,Q5,C1). The paper motivates partially synchronous operation, but the safety network is asynchronous: messages may be lost, duplicated or reordered. Timers are Boolean expiration events that may occur nondeterministically. Neither eventual delivery nor a known time bound is needed for the stated prefix invariant; those abstractions cannot establish eventual commits or latency. The source explicitly says liveness would require fairness for timer execution and additional handling of directly received prepare quorums (Q5,Q6,C5). Byzantine validators can send arbitrary modeled messages under Byzantine identities, including impersonating other Byzantine validators. They cannot forge an honest identity. Digital signatures and hashes are abstracted: block identity replaces digest computation; global records of honest sent messages validate a certificate's claimed members. These monitors are proof instrumentation, not a deployed trusted coordinator. Their faithful relationship to actual cryptographic validation remains an implementation/refinement obligation (Q5,Q6,C2,C3). ## Protocol cases Views have rotating leaders and three voting/proposal paths. A normal proposal extends the block certified in the preceding view. A fallback proposal carries a timeout certificate and extends the block whose included quorum certificate has the highest view. Optimistic proposals let the next leader propose a child immediately after voting, before receiving the current block's certificate. Honest voting guards constrain prior optimistic/normal/fallback votes and timeouts; certificates aggregate votes of one type. An honest validator may vote at most twice in a view under the displayed rules (Q2,Q3). A validator advances with a quorum or timeout certificate, updates the locked highest-view certificate, and resets its timer. It commits a block when that block and its child are certified in adjacent views, then commits uncommitted ancestors. The one-block-per-network-hop and three-hop finalization claims describe the normal-path design in the cited protocol work; this verification paper supplies no throughput/latency experiment or implementation performance result (Q2,Q3). The source separates message receipt from processing. A normal proposal must be received from the current leader, contain a constructed block and appropriate certificate, satisfy timer/first-processing conditions and the vote predicate; it may process the certificate first and propose the next optimistic block. Timeout/fallback handlers require embedded certificates to have been processed, explicitly constraining the environment to perform those steps first. This is a modeling convention to retain in any source correspondence argument, rather than evidence that every implementation obeys the ordering (C4,C5). The eight whole source reads expose additional concrete abstractions. Fresh blocks are chosen from initially present unconstructed objects. Genesis has its own certificate and all participants in its quorum. The optimistic-last-block variable initially uses a separate unused block rather than the paper's genesis digest; a comment calls this a proof-performance shortcut. Honest/block validity invariants are separate from the top safety invariant. These details are not silently normalized to the informal algorithm (C1,C3). ## How the proof is organized IVy generates initiation/preservation obligations for inductive invariants and asks Z3 to discharge them. Isolates expose selected supporting properties to control formula size and logical fragments. Passing one isolate while assuming dependencies is only part of a complete verification; those dependencies also need checking. The paper reports completing that process but this read does not replay it (Q5,Q7,Q8). The principal argument establishes that certified blocks proposed in later rounds descend from the directly committed block. This ordering concerns proposal rounds, not the time a delayed certificate is received. Additional invariants establish ancestry among each honest validator's committed blocks, closure under committed ancestors, and ancestry comparability of different honest tips. These establish prefix comparability. The paper supplies a five-step informal proof outline and a dependency diagram, not the full text of all obligations. The retained source supplies the exact omitted blockchain_prefix formula (Q7,Q8,C8). The difficult descendant lemma uses induction over rounds. The paper says “The principle of induction is taken to be an axiom” (§4.3,p10). The source includes an explicit parameterized induction schema in quorum_after_ldc_descendant; related predecessor/successor results also use schemas. These are mathematical assumptions/rules requiring an intended natural-number interpretation, not automatically inferred from a bare arbitrary total order. The retained ubd_seq defines immediate successor using the absence of an intermediate element and supplies a nat implementation; no such implementation was executed or proved anew here (Q8,C1,C6,C13). Transitive closure is not directly definable in first-order logic. A monitor incrementally records ancestors when blocks acquire quorums; supporting invariants establish parent inclusion, transitivity, no divergent ancestors and recovery of the immediate-parent relation from ancestry. The commit update is in safety.ivy rather than simply the core moonshot module: commit_candidate requires local direct commit, descent from the current tip, processed-certificate conditions for ancestors, and maximal eligible round; its after-qc-processing monitor updates the committed set/tip. Thus the exact model being verified includes proof-file actions, not just moonshot.ivy alone (Q8,Q9,C7,C12). No contradiction or reachable fork was established by this read. Static source inspection is insufficient to certify every isolate dependency, axiom, abstraction or proof result. The paper's categorical statements that verification conclusively rules out design/logic errors should be understood relative to this formal model, stated axioms, tool behavior and intended correspondence, rather than as a theorem about arbitrary implementations or all blockchain security properties (Q4,Q11). ## Reported evaluation and retained artifact Table1 reports338lines of Types,110Network,642Moonshot,165Quorum verification and1,309Safety, totaling2,564. These counts exactly match physical line counts of the five retained files at the selected historical pin. The printed ratio of program code to proof is approximately1:3; that partition is descriptive, since files also contain comments, data abstractions and monitors. The authors report190invariants and23monitors, but do not specify a counting convention. A simple line-prefix count finds188invariant declarations in safety.ivy and211across those five files, including other invariants; do not equate that lexical count with semantic proof obligations or silently replace the published number (Q7,C9). The reported effort is about140person-hours after the protocol specification stabilized,10%modeling and the remainder proofs. Fourteen modeling and126proof hours are reader arithmetic, not a time log. Earlier protocol revisions and proof/specification iterations are discussed but excluded from that clearly stated starting point. No verification wall-clock benchmark, hardware specification, exact IVy/Z3 version, variance, isolate runtime table or controlled cross-tool comparison appears (Q7,Q9,Q10). The README gives a full-file checking command; check_all.sh instead lists116individual isolate checker invocations separated by date commands. Static shell inspection finds no fail-fast option or aggregate-status check and a final date command. Therefore running the script can return success even if an earlier checker command fails. This is a wrapper-status limitation, not evidence that a particular historical obligation failed or that the README's separate command masks failures. Isolates.txt lists an older basic_safety structure, so it is not used here as a certificate of current full_safety dependency coverage. Unread trace/summary logs are not evidence of successful complete checking in this record (C10,C11). The authors describe solver stalls, inlining nested subroutine calls, explicit intermediate facts and fine dependency selection. Their concrete ancestry example adds two intermediary ancestor facts so that transitivity becomes easy for Z3. These are useful proof-engineering observations without controlled ablations or measured universal speedups. The claimed lower effort than Coq and preference over TLA+/TLAPS are author experience/opinion, not a matched comparison of equivalent developments (Q1,Q9,Q10). ## Contribution to the requested topics This is a directly relevant parameterized Byzantine-consensus safety case study: abstract honest quorum intersection, asynchronous safety despite timer abstraction, certificate-authentication monitors, ancestry instrumentation, round induction and modular solver obligations. It reports human verification work rather than LLM agents. It has no Verus or verified Rust artifact and does not prove a TLA+ model. For agents writing specifications/proofs, the transfer is a reader proposal: preserve exactly which code and monitor actions define the model; separately check dependencies and axioms; expose small intermediate ancestry facts; retain failures from every checker invocation; and distinguish a proof of an abstract invariant from executable refinement, crypto correctness, liveness and application security. The190-invariant/140-hour development is a potential future study case, not evidence of an agent success rate or measured automation benefit. - limits: Honestquorumintersectionandinductionaxioms;unforgeablehonestidentities;Boolean-timer/asynchronoussafetyabstraction;globalcertificate/ancestry/commitmonitors;noimplementation/crypto/liveness/transactionvalidityproof;noauthorcodeexecution - how much was read: most of it read - source - record id: `formally-verifying-the-safety-2024` - Ghost signals and completeness thresholds (2024) - title: Semi-Automated Modular Formal Verification of Critical Software: Liveness and Completeness Thresholds - what: Develops (1) ghost-signal separation logic for modular termination proofs of busy-waiting concurrent programs under fair scheduling and (2) completeness thresholds reducing unbounded memory-safety proofs for array-traversing programs to bounded checks. Ghost signals are verification-only resources with obligations to set signals, well-founded levels preventing cyclic wait dependencies, and shared-state invariants connecting signal state to arbitrary data structures. The logic is modular over threads/functions and extends to race freedom, deadlock freedom, arbitrary conditions, signal erasure, higher-order features and fine-grained concurrency; appendices prove soundness. A bounded FIFO producer-consumer example and CLH lock were verified with tool support. Completeness-threshold chapters define thresholds over input sizes, derive verification-condition based approximations, prove modular/transitive/elimination rules, and characterize simple unconditional array accesses. - number: Tool support verifies C versions of bounded FIFO and CLH lock - number: No aggregate benchmark counts or runtime table in supplied text - number: Threshold results are theorem-based rather than empirical - number: bounded FIFO producer-consumer: 160 annotation lines for 37 lines of C (435%), verifies in 0.08 s - limits: Liveness requires fair scheduling and proof obligations that every signal is eventually discharged; levels must be well-founded and correctly encode dependencies. Ghost signals are not runtime state, so invariants linking them to concrete conditions are mandatory. Completeness thresholds target heap programs traversing arrays without allocation/freeing and can yield sound bounded guarantees only when verification conditions are precise; broader data structures remain future work. The dissertation reports no broad benchmark runtime study. - how much was read: most of it read - source; notes: Semi-Automated Modular Formal Verification of Critical Software (2024) - record id: `ghost-signals-and-completeness-thresholds-2024` - IronSpec (2024) - title: IronSpec: Increasing the Reliability of Formal Specifications - what: Tests whether a Dafny specification matches what developers expect. It uses three methods: checks with unconstrained inputs and outputs, small proofs of cases that should or should not be allowed, and mutations of the specification. - number: 14 specifications including six real verified systems; ten spec bugs confirmed by authors - number: 70 small test proofs, 21 needed help averaging 1.7 added lines - number: 61 surviving mutations, 13 judged intended - number: human effort hours to days; DaisyNFS about one to two hours - limits: The checks expose suspicious differences. They do not show the spec perfectly matches intent. It gives no success rate for autonomous spec generation. - how much was read: most of it read - source; notes: Specification errors and auditing; notes: IronSpec - record id: `ironspec-2024` - LiDO (2024) - title: LiDO: Linearizable Byzantine Distributed Objects with Refinement-Based Liveness Proofs - what: A pacemaker state (current round and remaining time) exposes enough timing information for Coq refinement proofs of Byzantine consensus safety and liveness under partial synchrony (the network is eventually well-behaved). Unpipelined Jolteon is extracted to runnable OCaml, with a handwritten network and timer environment. The liveness proof splits leader entry, request, votes and receipt into timed stages. - number: unpipelined Jolteon: safety about 4,000 Coq lines, liveness about 1,800 (§4, PDF p.19) - number: pipelined liveness extension about 2,000 lines (§5) - number: liveness Table 1 itemises 357+523+953 lines - number: liveness proof around 1,800 lines - limits: It proves the system responds infinitely often, not that it responds to every client request. The proof of the pipelined model is not a verification of a production blockchain. The review notes found no person-time. The contracts for the network and environment are assumed. - how much was read: most of it read - source; notes: LiDO: Linearizable Byzantine Distributed Objects with Refinement-Based; notes: LiDO, LiDO-DAG, and a 2026 liveness bug; notes: papers and boundaries - record id: `lido-2024` - Modelling the Raft Distributed Consensus Protocol in mCRL2 (2024) - what: # Whole read: Modelling the Raft Distributed Consensus Protocol in mCRL2 (authored by agents unless marked 🧑) Bora, Pham Duc Minh and Willemse, MARS 2024, EPTCS 399, pp. 7–20; DOI 10.4204/EPTCS.399.4; arXiv 2403.18916v1, submitted 27 March 2024. Read all 14 PDF pages, §§1–5, Figure 1, Table 1, acknowledgement and 14 references, in text and rendered pages. Also read the official MARS mCRL2 model, all nine property files, README and batch script statically. The downloaded paper matches the indexed PDF byte for byte. No author code, model checker, prover or solver was executed. Raw sources, hashes, scope and exact excerpts are retained separately. The paper contributes an action-based Raft model and modal ”-calculus formulas, with reported model-checking results for eight finite configurations. It does not establish unrestricted Raft correctness. More specifically, the authors write, “All main properties hold true for all configurations of Table 1; verification of each property takes roughly 2-3 times that of generating the state space” (§3, PDF p. 9 / printed p. 15; Q19). Static inspection also finds differences between the printed formulas, artifact formulas and model indexing. These narrow what a successful check can establish; they are not claimed reachable protocol counterexamples. ## Model and assumptions The model follows the TLA+ and LNT specifications and focuses on leader election and log replication: “Features such as cluster membership changes and log compaction have not been modelled” (§2, PDF p. 2 / printed p. 8; Q3). Node, Network and Client processes run in parallel; communicating actions and allow restrictions enforce synchronisation. Analysis requires a “fixed, concrete number of servers” (§2, PDF p. 3 / printed p. 9; Q4), rather than a proof quantified over all cluster sizes. One client sends a bounded sequence of unique natural command IDs, abstracting away command contents and application behavior (Q5). Client-to-cluster communication is synchronous; communication among servers is asynchronous through the network. The network holds a finite set of payloads, permits reordering and limits capacity (Q7). Thus two identical pending payloads collapse to one set element. Reliable mode supplies no scheduler fairness guarantee. Capacity can block sends; the broadcast admission guard uses the number of servers rather than the exact outgoing set size (Q47). These are model restrictions, not a general unbounded or duplicate-preserving network semantics. The scope description has a tension worth retaining. Section 2.1 says, “we do not analyse the Raft algorithm in the presence of message loss or duplication” (PDF p. 4 / printed p. 10; Q6). Table 1 nevertheless includes one lossy-and-crashing row, and §3 reports all main formulas true for every row (Q18–Q19). The model supplies an optional loss branch (Q8, Q47). The defensible reading is a primarily reliable model with one reported loss experiment; no duplication experiment is reported. Each server has role, term, log, commit index, vote state, replication indexes and a pending reply. Figure 1 adds a Crashed role to Follower/Candidate/Leader (Q9–Q10). Entries are Command(term, commandID), stored in zero-based mCRL2 lists; the authors explicitly warn that Raft’s original indexing is one-based (Q11). Only leaders accept client commands. Elections and heartbeats use nondeterministic actions; “we cannot analyse real-time requirements, nor the real-time performance of the algorithm” (§2.2, PDF p. 6 / printed p. 12; Q12). There is no sampling of randomized timeout intervals or elapsed-time state. A candidate votes for itself and sends vote requests to other nodes not already in its voter set (Q13). Stale RPCs are discarded. A received request computes and stores a reply before the later send, allowing a crash between the state update and reply transmission (Q14). The artifact’s resume transition preserves currentTerm, log and votedFor, but resets commitIndex, voterLog, nextIndex, matchIndex and the pending reply, and returns to Follower (Q46). Reply computation itself is atomic: the authors acknowledge it “does not accurately reflect real-world scenarios where the computation of a reply would involve multiple steps” (§5, PDF p. 13 / printed p. 19; Q35). Leaders send one log entry at a time; the model uses nextIndex backtracking to find a matching prefix (Q15). Majority replication commits only a current-term entry directly; earlier entries are committed indirectly with it (Q16). This is a protocol model without a refinement proof connecting a Rust implementation, application state machine or storage system to these transitions. ## What the properties check The action logic cannot inspect process parameters directly. The model therefore adds self-loop actions exposeLeader, exposeLogLeader and exposeLog (Q19, Q46). Safety formulas compare exposed states across arbitrary later execution, rather than merely reading two process parameters in one state. **Election Safety.** The printed formula forbids a different node from ever later exposing leadership in the same term (Q20); the artifact agrees (Q52). An additional existential formula asks whether a leader can be exposed at all; another asks whether two different node IDs can eventually expose leadership (Q21). The latter is reported true only with at least two terms. These are witness-existence checks, not eventual election on every execution. The least-fixed-point formula counts possible leader announcements whose ID differs from the most recently stored ID, starting with id=1 and count=0 (Q22, Q53). It does not compare the associated terms or demand globally distinct IDs; a later reuse of an earlier ID can count. It is therefore more precise to describe its actual counter than to call it a proof of MaxTerm distinct leaders or guaranteed succession. **Log Matching.** The intended statement is that the same index and term imply identical prefixes through that index. The paper’s guard instead tests complete entry equality, log1.index == log2.index, which is a stronger antecedent and makes the standalone requirement weaker (Q23). The artifact repairs this to term(log1.index) == term(log2.index) and checks both list bounds (Q49). Both versions compare slice(log,1,index+1). The supplied slice helper begins at zero and excludes its finishing index (Q42). It therefore omits position 0, the first actual entry; initial logs contain no dummy element (Q48). Reader-created one-entry logs [Command(1,1)] and [Command(1,2)] have matching terms at position 0, but both compared slices are empty. This separates the intended first-entry equality requirement from the artifact formula. It does not establish that these two logs coexist in a reachable model state. **Leader Completeness.** After advanceCommitIndex(old,new,term,log), the formula asks that selected entries occur somewhere in every later-term leader’s exposed log (Q24–Q25, Q51). The membership consequent is weaker than retaining each entry at its original index. There is also an indexing discrepancy: it selects log1.index for old < index <= new, while the model’s getTerm translates Raft index to list position index-1 (Q41). With a singleton log and new=1, the formula selects zero-based position 1 rather than 0. No semantic result for out-of-bounds list selection, checker failure or reachable counterexample is asserted here. For commits in the sole elected term of a one-term configuration, there is no later leader term to test; the auxiliary leader/commit existence checks do not make every main formula nonvacuous. The event itself has a separate static inconsistency. On the successful AppendEntriesResponse branch, advanceCommitIndex computes its new index from the old matchIndex array, whereas the following Node transition computes commitIndex after incorporating the new acknowledgement (Q45). A local valuation with one entry, old matchIndex=[0,0,0] and an acknowledgement of entry 1 from another server yields event new index 0 but state commit index 1 using the supplied count helper (Q43–Q45). Reachability of that valuation was not established. The source expression mismatch is sufficient reason not to equate the event range automatically with all newly committed entries. **State Machine Safety.** The intended statement forbids two nodes applying different entries at the same committed index. Paper and artifact compare slice(log1,1,commitIndex1) and the corresponding slice of a later other node with commitIndex2 >= commitIndex1 > 0 (Q26, Q50). Under the artifact helper, position 0 is excluded. For commitIndex1=1 both slices are empty, independent of the first entries. Thus a successful check of this formula alone cannot establish agreement on the first committed entry. Again, this is formula coverage established by symbolic values, not a reachable protocol failure. An existential companion asks whether two different nodes can expose positive commit indexes in sequence, the later one at least as large (Q27). It does not repair prefix coverage or prove every request eventually commits. Append Entries is omitted as a separate checked property because the authors consider it immediate from the modeled leader operations (Q19). ## Reported evaluation and concrete cases The authors used manual interactive simulation and safety formulas throughout development to find model bugs (Q19). Table 1 gives eight configurations, all with three nodes and capacity three. The following preserves the reported rounded sizes and approximate generation times; every row is retained in numeric-evidence.json (Q18, §2.2, PDF p. 8 / printed p. 14): - 2 commands, 1 term, reliable, no crashes: 2.14×10^5 states, about 1 minute - 1 command, 2 terms, reliable, no crashes: 1.17×10^6 states, about 2 minutes - 1 command, 3 terms, reliable, no crashes: 1.32×10^7 states, about 13 minutes - 2 commands, 1 term, reliable, crashes: 1.79×10^7 states, about 5 minutes - 2 commands, 2 terms, reliable, no crashes: 2.25×10^7 states, about 19 minutes - 2 commands, 1 term, lossy, crashes: 5.97×10^7 states, about 105 minutes - 1 command, 2 terms, reliable, crashes: 1.48×10^8 states, about 24 minutes - 1 command, 3 terms, reliable, crashes: 2.38×10^9 states, about 820 minutes The first seven times use a 2017 Macbook Pro with 16GB; the last uses an unspecified compute server and is explicitly “not directly comparable to the other runtimes reported” (Table 1; Q18). No repetitions, error bars, exact CPU, per-formula times or implementation latency/throughput are supplied. The paper reports roughly 2–3× generation time for each main property using symbolic verification (Q19, technique reference Q38). The base configuration compresses by almost factor 5 under strong bisimilarity; no exact reduced size is given (Q17). The artifact README names mCRL2 release 202307.1 and gives explicit and symbolic commands (Q56). Its default model has five servers, two requests, one term, capacity five, no loss/crashes, and PRIORITISE=false (Q40). Seven individually guarded Node instances support the small configured sizes (Q48). The batch script substitutes three servers/capacity three, requests 1 or 2, terms 1–3, and both Boolean loss/crash settings, for 24 combinations (Q57). It includes all .mcf files, including timeout/client-command checks (Q54–Q55); neither the script nor their inclusion is a saved result log. Do not infer that every batch combination or every extra formula was successfully checked. The official archive contains source and instructions, not experiment output or an identified experiment commit. MAJORITY is ceil(NumberOfServers/2) in the artifact (Q40). That is a strict majority for the odd sizes three and five here, but only half for even sizes. No arbitrary-size correctness claim should be inferred from the configurable constant. Section 4 illustrates how modeling style changes generated state count. A Boolean process with conditionals after the action yields 3 states/6 transitions; moving the choice before the action yields 1 state/2 transitions, strongly bisimilar to the first (Q29–Q30). The tool can then remove an unused process parameter. The example supports a concrete state-generation lesson; it is not a measured uniform threefold Raft reduction. The claim that an early inexperienced model was “orders of magnitude larger than needed” is an author observation without a controlled Raft benchmark (Q29). ## Relation to the research topic The direct contribution is a finite distributed-protocol model and action-logic encodings of selected Raft requirements, with bounded symbolic checking and concrete resource measurements. The authors describe the modal formalizations as apparently new while acknowledging the prior TLA+, LNT and Verdi work (Q2, Q33, Q39). This is useful evidence about specification design, state exposure, state-space growth, crash abstraction and model/property correspondence. The TLA+ comparison is specific. The authors say TLA+ answers stale requests but drops stale responses; their model follows LNT in discarding both. They follow TLA+ when bounding transmitted commit information, and add reboot behavior they say is absent from the LNT model (Q31). These are attributed source discussions, not an independent audit of all upstream artifacts. Section 4’s view that imperative LNT is more appealing to average engineers is an author opinion, not a user study (Q32). For evaluating LLM agents writing specifications or proofs, the useful checks are reader inferences: validate a formula against its helper definitions, include first/last-index examples, inspect whether instrumentation exposes the actual state transition, distinguish term equality from entry equality, and separate existential witnesses from inevitable progress. This paper supplies concrete reasons these checks matter, but it contains no LLM-agent, Verus, verified-Rust or implementation-refinement evaluation. The liveness boundary is explicit: “Stronger liveness requirements, asserting that always inevitably a leader must be elected, are simply not true in our model” (§5, PDF p. 13 / printed p. 19; Q34), owing to crashes/loss and bounded terms. More complex configurations, stronger liveness, finer reply computation and real-time verification remain future work (Q33–Q36). Successful bounded checks therefore support the specified finite model and literal formulas, subject to the correspondence issues above. They do not independently establish the stronger prose requirements. ## Evidence and review quotes.json contains 57 literal excerpts with file, section, PDF/printed page where applicable, line ranges and character offsets. combined.quote-source.txt contains every excerpt for database validation. source-files.json retains raw hashes; source-scope.json distinguishes whole-paper and static artifact coverage. numeric-evidence.json preserves all table rows, and static-witnesses.json records reader-created separating values. reader-diagnostics.json separates source claims from reader findings. REVIEW.md and validation-final.json track consultation, independent review and mechanical checks. - limits: Fixed finite cluster,client commands,terms and finite-set network capacity; one synchronous client and asynchronous interserver RPC; no membership changes/log compaction; nondeterministic untimed timeouts,atomic reply computation,optional crashes/reboot/loss. Eight reported three-node configurations. No duplication/multiplicity or fairness guarantee. Static indexing/formula/event mismatches qualify property coverage. - how much was read: most of it read - source - record id: `modelling-the-raft-distributed-2024` - Reward Augmentation in Reinforcement Learning for Testing Distributed Systems (2024) - what: # Reward Augmentation in Reinforcement Learning for Testing Distributed Systems (authored by agents unless marked 🧑) Andrea Borgarelli, Constantin Enea, Rupak Majumdar and Srinidhi Nagendra propose two reinforcement-learning policies for testing distributed implementations. BonusMaxRL rewards unfamiliar state/action pairs; WaypointRL adds manually chosen predicates that guide exploration toward selected situations. The evidence is an empirical comparison on RedisRaft, Etcd and a Go reimplementation of RSL, plus a cube-world illustration. It provides bug-finding evidence, not a proof of protocol correctness or exhaustive coverage. This reading covers arXiv:2409.02137v1, 2 September 2024: all 27 pages, 40 bibliography entries, five figures, seven tables and four algorithms. All renders were inspected through seven contact sheets; pages 7,8,18,20,21,22,23 were additionally viewed at full size. Official and inventory PDFs are identical. Selected static files from both linked GitHub repositories were read, with pinned commits and exact source quotations saved separately. Artifact metadata and any further source inspection are distinguished in source-scope.json. No author code or scientific experiment was executed, and no stored scientific results were loaded. ## Policies and assumptions The environment is treated as a Markov decision process: the next-state distribution should depend only on the current state and action. The learner uses a table of Q-values, which score state/action choices, and an epsilon-greedy policy: mostly pick a highest-scoring action, occasionally choose randomly (§2.1). Those assumptions describe the learning setup; the paper does not prove that every concrete distributed execution abstraction preserves them. BonusMaxRL uses an exploration bonus inversely proportional to visits to a state/action pair. Its update combines the larger of that bonus and the discounted next-state Q-value, rather than adding accumulated rewards; Algorithm 2 processes episode transitions backwards (§2.2). The authors explicitly say their algorithm is not optimal for the usual accumulated-reward objective. There is no testing completeness, convergence-to-correctness or fault-coverage theorem. WaypointRL maintains a separate Q-table for each predicate in a supplied sequence (§2.3, Algorithms 3–4). The first predicate is always true; the last defines the target. The highest-index true predicate selects the active table. Rewards of 2 favor progress to a later predicate and eventual arrival at the final target; the exploration bonus is at most 1. The oneTime flag keeps the final table active after the target has occurred, enabling exploration after an event without encoding its full history in each state. Predicates and instrumentation require human protocol knowledge. This paper does not learn specifications, infer the correct safety property or automate the choice of waypoints. The cube illustration has dimensions 6×10×10×6,5000 episodes, horizon 80, α=.3 andÎł=.99 (§2.4). It illustrates propagation of exploration rewards and guidance toward corners. The distributed evaluation uses different horizons and hyperparameters. Its figures are illustrative empirical curves, not a general sample-complexity bound. ## Distributed cases and measurements The test environment groups processes into network partitions, delivers messages within a partition and drops messages crossing partitions (§3). It also provides crashes, recoveries and client requests. Each test step runs a fixed number of clock ticks; a SameState counter distinguishes repeated unchanged configurations until the counter reaches its bound. The learner sees process colors, meaning selected state fields with process identities omitted and counters such as rounds bounded. These choices reduce the explored state space. A finite color-space coverage count is not coverage of all concrete executions, and no sound abstraction theorem or bisimulation is supplied. Etcd uses its Go Raft implementation; RedisRaft uses an instrumented implementation with a network/control shim. The paper reports about 500 lines of added code for Etcd's roughly 7000 lines and 700 lines for RedisRaft's roughly 10000 lines (§5). RSL is the authors' Go reimplementation of Azure's protocol. The reported new RSL bug belongs to that reimplementation; it must not be attributed to the production Azure implementation. Target predicates describe synchronized, unsynchronized or mixed process states (§4): all processes in a term, term differences, log-entry counts, a leader coexisting with a candidate, different commit positions, or RSL ballot/decree differences. Intermediate predicates break difficult targets into easier stages. These are testing goals, not complete distributed-system specifications. Choosing a target that correlates with a bug can improve detection without establishing that all relevant bugs share that target. The common experiment setup has three processes, four ticks per partition action, a SameState counter limit of 5, at most three crash actions per episode and one simultaneously inactive process (§5.1). Each configuration runs 10000 episodes or 8 hours, whichever ends first, with at least 10 trials. Horizon 25 is used for Etcd/RSL and 50 for RedisRaft; early implementation failures can shorten episodes. Coverage curves therefore use time steps. BonusMaxRL/WaypointRL useα=.2, Îł=.95, Δ=.05; NegRLVisits usesα=.3, Îł=.7 and softmax selection. Different policies consequently have different tuning; the comparison is of these chosen configurations. Table 2 reports final unique-state means±standard deviations for Random, BonusMaxRL and NegRLVisits. RedisRaft:27081.9±2627.31,32818.4±3017.32,33433.2±2972.34; Etcd:19179.3±106.26,22202.7±137.75,24898.6±97.40; RSL:678.9±36.43,2020.9±190.67,751.2±37.24. BonusMaxRL improves over Random on all three, but exceeds NegRLVisits only on RSL (§5.2). The paper explicitly notes the remaining two favor NegRLVisits. It omits an empirical Mallory comparison because the required annotated source was unavailable; no Mallory superiority claim follows. Across 26 target predicates, the authors report statistically significant target-coverage improvement for 20 (§5.3, Table 4). Exact rows, predicate-sequence lengths and deviations are retained in evaluation.json. Exceptions include RedisRaft OneInTerm(3), Etcd OneLeaderOneCandidate and RSL EntryBallot(2), where an unbiased baseline has a larger mean. Means alone do not establish statistical significance. Section 5.1 prints a Mann–Whitney threshold of “> 0.05”; that direction is opposite the usual small-p-value rejection criterion. No p-values or raw trials were inspected, so this record retains the authors' significance claims with that unresolved reporting ambiguity. Intermediate rewards can help, but more waypoints do not consistently help (§5.3, Table 5). RedisRaft LogCommitDiff(3) rises from 264±99 without intermediates to 18309±2820 with one, versus 17287±3102 with three; targeting only LogDiff(1) yields 1578±931 in the LogCommitDiff target space. EntryInTerm(2) rises from 22468.1±5295.2 to 28173.7±6935.9 with two intermediates. RSL DecidedDiff(3) rises from 26.4±13.2 to 173.1±70.1 with one intermediate, versus 113.7±46.8 with two. The Table 5 caption's “one example from each benchmark” is inaccurate: it contains two RedisRaft examples and one RSL example. ## Bugs and limits on the comparison The paper reports 13 bugs:10 RedisRaft,2 Etcd and 1 in the RSL reimplementation; five are described as new, comprising 3 RedisRaft,1 Etcd and 1 portedRSL (§5.4). RedisRaft's Table 7 distinguishes seven crashes from three safety violations: inconsistent committed logs, loss of committed entries and modification of committed entries. The bugs require implementation and trace analysis; the learner is not itself a correctness oracle. Table 6 contains nonzero entries for 13 bugs under WaypointRL,10 under BonusMaxRL,7 under NegRLVisits and 11 under Random. Crucially, its WaypointRL column selects the highest average for each bug over target predicates, naming the selected predicate. This is a campaign aggregate with per-bug selection, not one fixed WaypointRL policy finding all 13 under the same total testing budget as a baseline. The paper does not report an equal-total-budget comparison of that campaign; the record does not invent an exact multiplier for its cost. The selected WaypointRL mean is highest for 11 of 13 bugs. BonusMaxRL has 6499.8 versus WaypointRL 5704.6 for RaftRestoreLog; Random has 4.5 versus WaypointRL 1.3 for ConnIsConnected. The comparison therefore supports frequent reproduction in many selected cases, not universal dominance. No independent reproduction, bug-fix validation or analysis of false-positive/negative rates was performed in this reading. Etcd's prose conflicts with Table 6. The table gives IncorrectLogRestore only WaypointRL 0.1; NilSnapshotPanic has WaypointRL 0.3 and Random 0.2. The prose says the new incorrect-log-restoration bug was found by biased and random exploration with the same frequency, while the known bug was found only by biased exploration. This appears to swap the two attributions, and its equal-frequency statement also differs from 0.3 versus 0.2. The record preserves both rather than deciding which is correct without traces. Two smaller paper issues do not establish implementation failures. Its Raft background gives an n/3 crash threshold (§3), whereas majority-based crash consensus conventionally tolerates fewer than half; the actual tested three-process/one-inactive setup is compatible with a majority. Full-size Algorithm 3 confirms its else belongs to the outer reached test, consistent with its explanation; a contrary extraction-based suspicion was rejected. Algorithm 4 omits explicit false/zero initialization for reachedFinal/finalR, and its final-reward distance can be negative after a first target visit if oneTime is false and stages later change. Those are pseudocode completeness/interpretation concerns until tied to a specific implementation version. ## Static artifacts and contribution The two linked GitHub repositories are different source snapshots. raft-rl-test is pinned at f9b203642905310a5f61c7f191a0016982e577c8 (15 January 2024); dist-rl-testing at e26c838f16b73fd04616276f47158f371bb040a8 (27 June 2025). The former predates this paper version and the latter postdates it. Neither live default-branch snapshot is assumed to be the evaluated artifact merely because the paper links it. The Zenodo concept pointer 12671211 and version pointer 13166254 both resolve in the fetched API metadata to version 0.3.1, record 13166254. Metadata inspection is separate from any archive files actually read. Selected live files confirm max-based visit bonuses and manually specified predicate machines, but differ from the paper. raft-rl-test's ordinary bonus updates online; its reward-machine branch updates segments backwards using 2+1/(t+1) for progress and has no global final-target-distance bonus. Its inspected Redis setup disables crashes and uses three partition ticks, unlike the paper's common setup. The later dist-rl-testing hierarchy also lacks the printed final-distance bonus, always latches final-target arrival, initializes the stage to 0 without checking the initial state, and its backward loop usesj>0, skipping the first stored transition of each segment, including every one-step segment. These are static properties of those pins; their effect on the paper's trials is not established. The 22.3 MB Zenodo 0.3.1 source archive was downloaded and its published MD 5 checked. Its 82 member names were inspected; nine selected source/documentation files were extracted, without extracting or running its binaries. Its bonus/hierarchy policy files are byte-identical to the inspected later live files, so the online-update, missing-final-distance and skipped-segment-transition differences also apply to this released artifact. The archive contains Etcd/RSL and CometBFT source, with no RedisRaft source member. Its README supplies Etcd/RSL reproduction instructions; full virtual machines were not downloaded, so their contents are uninspected. The released target-coverage analyzer latches the target once seen and counts hashes of multisets of node colors after that point, rather than retaining the partition configuration in that coverage key (Q42). This agrees with the paper’s reported coverage metric, a “multi-set of colors” (§5.1, Q15), which is coarser than the MDP state containing a partition configuration (§3.1, Q8). Its plotting/statistical scripts use one-sided Mann–Whitney calls with alternative="greater", but do not apply a p-value cutoff in the inspected code. Thus that source does not resolve the paper's printed threshold direction. Plots/mean summaries truncate each policy's run arrays to their shortest episode-count length and take time-step coordinates from one run; the significance calls instead use each run's final array element. Those procedures need not compare identical time-step budgets after early failures. No actual discrepancy in the reported numbers was established because outputs were not loaded. Released Etcd pure-coverage setup assigns MaxCrashedNodes from flags.MaxCrashActions, whereas its hierarchy setup supplies separate MaxCrashedNodes/MaxCrashActions fields. RSL's two inspected setup functions likewise assign MaxCrashedNodes from MaxCrashActions and omit the separate crash-action field. This is a concrete configuration mismatch worth checking before reproduction; its actual runtime effect requires following the environment/default definitions, which are outside the selected source scope. The source archive is linked evidence of what was released, not proof that the paper's measured trials used every inspected branch. No author execution, virtual-machine launch or experiment-output loading occurred. For the human's topic, the contribution is a concrete way to direct execution testing toward semantically interesting distributed states and an example of how to evaluate that guidance. A possible use with specification/proof-writing agents is to turn stated intermediate conditions into test goals and independently check resulting traces. That is a reader inference, not an LLM-agent experiment in this paper. The paper discusses IronFleet, Verdi and bugs at verified/unverified boundaries, but supplies no Verus, verified Rust, TLA+ or LLM proof-generation case. Testing success remains distinct from a proof and from validation that a chosen formal specification captures the intended behavior. Further static review of the released hierarchy shows that action selection passes a default Q-value of 1, while update lookups pass 0; its outOfSpace/end-of-segment branch repeats the same next-state maximum lookup already performed immediately above it (Q38, lines 169 and 187–191). This is a source-level difference from the printed subspace treatment, not an established effect on the measured trials. Released pure-versus-hierarchy configurations also differ in Etcd election/heartbeat ticks (16/4 versus 9/3; Q39) and RSL heartbeat interval (3 versus 2; Q40). Historical trial provenance remains unconfirmed. - limits: bounded3nodeinstrumentedtesting;manualabstraction/predicates/oracles;noexhaustivenessproof;bestpredicatebugselection;printedpvaluethreshold/Etcdattributionconflicts;staticartifactdifferencesnottrialreproduction - how much was read: most of it read - source - record id: `reward-augmentation-in-reinforcement-2024` - SCION router verification (2024) - title: Protocols to Code: Formal Verification of a Next-Generation Internet Router - what: Presents end-to-end verification of a production SCION border router: Isabelle/HOL refinement proves path authorization, valley freedom and loop freedom under a strong adversary; Gobra verifies optimized concurrent Go code for memory safety, crash/race freedom, finite processing and protocol conformance. Igloo soundly links protocol and code models. Protocol models progress from weak to Dolev–Yao adversaries and extract an I/O specification for code. Code proofs use four layers, modular function verification, outline statements for large functions and Gobra preprocessing that splits queries/removes irrelevant assumptions soundly. The effort discovered five protocol attacks and thirteen implementation issues; developers confirmed the issues, fixed most, and adopted stronger valley/loop checks. Weekly synchronization and version pinning handled moving code/protocol targets. - number: ~4,700 lines optimized concurrent Go - number: Five concrete protocol attacks; four resolved, one minor unresolved - number: 13 implementation issues confirmed; seven fixed, three pending discussion, remaining issue status as listed - number: Run 96 LOC and prepareSCMP 101 LOC motivated outline statements - limits: Global guarantees rely on refinement-model fidelity, cryptographic Dolev–Yao abstractions, trusted Isabelle/Gobra soundness and exact I/O-library alignment. The 4,700-line Go implementation required performance engineering; some large functions needed outline statements and solver preprocessing. One minor protocol attack remained under discussion; implementation verification was laborious and tool performance constrained progress. - how much was read: most of it read - - record id: `scion-router-verification-2024` - SCTP formal analysis (2024) - title: A Formal Analysis of SCTP: Attack Synthesis and Patch Verification - what: Humans build a Promela model of SCTP from the RFCs. They choose ten LTL properties and four attacker models. SPIN verifies the properties and KORG synthesizes attacks. This shows that the RFC 9260 patch removes the modeled CVE-2021-3772 attack. - number: ten LTL properties; four attacker models - number: long Off-Path checks 123:42 and 86:10 (mm:ss) unpatched vs 7:07 and 6:48 patched, on a 16GB M1 MacBook Air - number: KORG changes: 80 existing and 213 new lines, plus 102 shell lines - number: Ten LTL properties verified without attacker; long off-path checks 123:42 and 86:10 (mm:ss) unpatched vs 7:07 and 6:48 patched - limits: Two peers and buffers of size one. Excludes crashes, restarts, congestion control and most data transfer. The attacks are real only against the model. No theorem that the code matches the model. Model size and modeling time are not stated. - how much was read: most of it read - source; notes: SCTP formal analysis: humans supply the model, properties and attacker; notes: SCTP formal analysis: humans supply the model, properties and attacker - record id: `sctp-formal-analysis-2024` - SCYTHE distributed protocol synthesis (2024) - title: Efficient Synthesis of Symbolic Distributed Protocols by Sketching - what: Introduces SCYTHE, a syntax-guided and counterexample-guided synthesizer for completing TLA+ sketches of parameterized distributed protocols. It enumerates typed expressions with cache/equivalence reduction and short-circuiting, uses TLC to check finite instances, and generalizes counterexamples into pruning constraints for safety, deadlock, liveness, and stuttering. The tool synthesizes protocols including consensus, 2PC, locks, sharded stores, and Raft reconfiguration. The paper formalizes protocol instances, fairness, sketches with pre/post holes and regular-tree grammars, and distinguishes finite-instance synthesis (Problem 1) from all-parameter-instance synthesis (Problem 2). Candidate generation uses cache-based size enumeration and semantic normal forms for Boolean/set/equality expressions; pruning constraints are disjunctions of hole interpretations. Safety constraints are optimal, while deadlock/liveness/stuttering encodings are sub-optimal but non-over-pruning; fairness and explicit implementability/environment constraints prevent vacuous solutions. TLC exhaustive checks each finite instance. In 22 benchmark rows, equivalence reduction cuts generated expressions by orders of magnitude; final TLAPS proofs establish safety for arbitrary instances in all but the two-process-only Peterson cases. Extra-checks expose finite-size overfitting: two Raft variants initially correct up to 3 nodes failed at 4+ and required larger-instance checks. - number: 22 benchmark configurations - number: up to >3 orders of magnitude expression reduction - number: raft-reconfig ID 121: 694,552 to 271 expressions - number: 4-node extra-check caught 3-node overfitting - limits: Synthesis guarantees only the finite instance checked by TLC unless an independent proof (TLAPS) establishes parameterized correctness; the search problem is generally undecidable. Grammar restrictions, typed symbols, opaque domains, finite-state verifier instances, fairness constraints, and manually specified implementability/environment separation shape results. Liveness pruning is sub-optimal; weak-fairness handling may under-prune. TLC calls dominate many runs, and the final all-instance verification remains a difficult/undecidable step. Benchmarks are adapted from existing specifications and may not represent arbitrary distributed protocols. - how much was read: most of it read - - record id: `scythe-distributed-protocol-synthesis-2024` - SquirrelFS: using the Rust compiler to check file-system crash consistency (2024) - what: A 7500-line Rust persistent-memory file system uses typestate to enforce ordering constraints of synchronous soft updates (SSU). Persistence and operational types restrict legal update sequences; recovery rename pointers provide metadata rename atomicity. A separately authored Alloy model checks bounded concurrent/crash traces, while tests exercise unmodeled code. Evaluation compares runtime latency/throughput and compilation against Ext4-DAX, NOVA and WineFS, and reports SquirrelFS mount/recovery costs and index-memory sizes. Reconstructs six-stage rename/recovery, dirty/in-flight/clean typestate and ownership requirements, mkdir dependencies, backpointer layout and range-type trust. Records all empirical checks/bugs, model bounds, frame-condition failures, compile/mount tables and benchmark baseline numbers. Qualifies complete-checking language as conditional ordering enforcement rather than end-to-end crash consistency, and saves adverse recovery/memory/performance cases. - limits: §§1,3.5: Authors explicitly state SquirrelFS is not fully verified. Successful compilation checks ordering encoded in types, assuming those rules, transition bodies, unsafe/FFI/ownership interfaces and Rust compiler are correct. It does not prove data values, inode contents, arbitrary functional behavior or the sufficiency of the rules for crash consistency. Table 1 marks this work Complete, but the later explicit trust/coverage qualifications constrain that label. §§3.1,3.4: x86 PM model assumes aligned writes of at most eight bytes are crash atomic. Cache-line writeback and store fence must make/order writes durable; non-temporal stores still require a fence. No proof of hardware/flush primitive correctness is supplied. Every system call is synchronous and fsync is a no-op; metadata operations are crash atomic, file-data updates are not. §3.1: SSU enforces initialize-before-link, clear-old-pointers-before-reuse and new-link-before-removing-old-link. Synchronous calls and fine-grained updates on byte-addressable storage avoid traditional cross-operation pending-dependency graphs/cycles. This simplification does not prohibit concurrent calls; VFS locking must serialize conflicting resource access. A future asynchronous implementation requires more complex rules. §3.2 Listings 1–2: Persistence types Dirty→InFlight via flush→Clean via fence are independent of operational types such as Free/Init/Alloc/Committed. Transition functions consume old wrapper ownership and return a new type. Compiler can reject inappropriate ordering or redundant persistence calls through this API, but cannot confirm the instruction flushes the right address or a body initializes every required field. §§3.2,3.4: Rust ownership plus VFS resource locking must ensure each durable resource has one owner/type at a time; indexes/allocators have internal locks. Reader qualification: Rust permits shared references, so the paper’s one-owner statement is about the exclusive mutable typestate wrapper discipline, not a claim that Rust forbids every alias. No concurrent implementation-refinement theorem or liveness proof is provided. §3.4: Persistent allocation means any object byte nonzero; validity of dentries/page descriptors is set inode number, validity of inodes is root reachability. Deallocation clears links before zeroing every byte. Volatile allocators/indexes are reconstructed by scanning. Backpointers in page descriptors simplify dependencies at the cost of mount scans/DRAM indexes; per-CPU page allocators and one global inode allocator affect scalability. §§3.4,5.7: Alloy model has roughly one-to-one transition correspondence with Rust typestate transitions, separately authored and not mechanically linked to code. Checks are bounded to two possibly concurrent operations, ten persistent objects and at most thirty steps. Bounded model success is not a proof of every-size/every-length implementation execution. §§4.1–4.3: General initialization typestate combines many field writes, deliberately trading bug coverage for simpler interfaces. Unbounded collections cannot be checked element by element with the chosen Rust types, so one typestate represents a page range and trusted transition loops update every page. This moves the universal obligation into unchecked bodies; it does not prove all range elements were updated correctly. §4.3 reader qualification: The broad claim that universally quantified formulas are undecidable must be read as general unrestricted checking, not a claim that every universally quantified property is undecidable. The concrete limitation is this unmodified Rust/typestate encoding cannot prove all objects in dynamically sized collections meet a property. Richer theorem provers or other encodings may establish particular quantified properties. §4.3: Alloy checking can take days/weeks. Missing frame conditions permit unconstrained state changes and yield false positives; custom syntactic checker demands each transition mention all mutable structures but explicitly cannot detect every issue. Parallel independent checks and split invariants improve turnaround without proving model intent or implementation correspondence. §4.4: No equivalent verified/unverified system exists for controlled development-effort comparison. Authors’ lower-effort/faster-debugging statements are experience and belief. Footnote durable-log three months is one author’s separate experience, not a measured SquirrelFS development duration. Staying synchronized through types applies to encoded API rules, not automatically to omitted requirements or incorrect transition bodies. §5.1: Measurements use two-socket 32-core machine,128GB DRAM,128GB Intel Optane DC PM,Debian Bookworm/Linux6.3. Baselines configured for metadata consistency without data atomicity to match prototype. SoupFS unavailable as closed source; ArckFS excluded for time. Means of multiple trials with plotted min/max; microbenchmarks specify ten trials. No per-system equal-functionality or production-maturity claim follows. §§5.2–5.4: Microbenchmarks do not call fsync, but SquirrelFS already makes each call durable. Filebench defaults; RocksDB/YCSB uses25GB/25M records/25M operations/eight threads and normal syscall interfaces. LMDB100M keys uses mmap, reducing metadata/syscall differences. Figure5 prints Ext4 absolute baselines and plots normalized throughputs; unprinted bar values in record are approximate visual estimates, not exact source cells. §5.5 Table2: Recovery timing is forced recovery scans of cleanly unmounted images, not measured worst-case recovery from interrupted operations. Full means100% data/inode utilization. True crashed layouts may differ; no general recovery upper bound proved. Future parallel rebuild/CXL claims are prospective, not evaluated. §5.6 Table3: Ten-second compile includes typestate checks, compared with other kernel modules of different sizes/features. Historical FSCQ11h/VeriBetrKV1.8h(10min parallel) verification references are cross-project comparisons, not controlled measurements or equal proof strength. Ext4 LOC includes DAX/non-DAX. No background threads started by operations is not zero CPU overhead or absence of concurrent caller threads. §5.7: Passes67 supported generic xfstests; others use unsupported arguments/syscalls. Chipmunk generators omit unsupported syscalls, then systematic tests plus about24h fuzzing found no ordering-related bugs but did find four crash-consistency bugs in unchecked code. This is finite evidence supporting encoded ordering checks, not absence of all crash bugs. §§3.6,6–7: CXL PM suitability is an extrapolation conditional on comparable byte-addressable persistence semantics; larger devices worsen scan/memory costs. No Verus proof, TLA+ experiment, distributed protocol implementation, LLM-agent experiment, artifact build or crash-test replay is included in this reading. - how much was read: most of it read - source - record id: `squirrelfs-using-the-rust-2024` - TLA+ trace validation (2024) - title: Validating Traces of Distributed Programs Against TLA+ Specifications - what: Presents an API and TLC-based constrained model-checking workflow that records selected specification-variable updates from Java executions and checks whether the partial trace can be completed to a behavior of a TLA+ specification. The framework traces only chosen variables/events, leaving omitted values existentially open for TLC to reconstruct. It handles stuttering steps and implementation transitions that combine multiple TLA+ actions, and uses shortest BFS counterexamples or constrained DFS for speed. Case studies include Two-Phase Commit, snapshot-isolation key-value store, EWD998 termination detection, two Raft implementations and Microsoft CCF; trace validation found mismatches and exposed a CCF safety bug that became regression tests. - number: Counter implementation bug detected in less than one minute with event-only trace for 16 RMs - number: Two-Phase Commit 16 RMs event-only trace explores ∞/557k states (BFS/DFS table) - number: Key-value 12-agent, 20-key/40-value event-only trace reaches ∞ states at 1-hour timeout - number: Five distributed-program case studies all yielded specification/implementation discrepancies - limits: Verdicts depend on instrumentation points, trace granularity and the high-level specification. Too-imprecise logs can admit erroneous traces because TLC fills unconstrained values; too much logging causes state explosion. TLC explores finite bounded models and can return no counterexample for an invalid trace when the searched diameter is insufficient. The method detects conformance discrepancies, not a proof that all executions of the implementation satisfy the specification. - how much was read: most of it read - source; notes: P08. Validating Traces of Distributed Programs Against TLA+ Specificat - record id: `tla-trace-validation-2024` - Trillium (2024) - title: Trillium: Higher-Order Concurrent and Distributed Separation Logic for Intensional Refinement - what: Trillium proves that full program executions refine a simpler model. Fairis preserves progress under fair scheduling. It uses fuel to bound stuttering (steps that change nothing). The extended Aneris shows that implementations follow TLA+ models. - number: full Coq refinement proof for the SDP example about 1,100 script lines (footnote 9) - number: cases: two-phase commit, single-decree Paxos refinement - number: Paxos client proof about 1100 lines of proof scripts (footnote 9, p.9:27) - limits: The authors translate the TLA+ models into Coq state-transition systems by hand. The distributed instantiation targets safety. Distributed liveness is future work. - how much was read: most of it read - source; notes: papers and boundaries - record id: `trillium-2024` - Using Dynamically Layered Definite Releases for Verifying the RefFS File System (2024) - what: The RefFS project page links a separate 124-page draft, Progress of Concurrent Objects with Dynamic Dependencies, authored by Mo Zou. Its PDF metadata dates it May24,2024; the project says “A separate paper” illustrates MoLi's metatheory (P1). This is a complete fresh reading of that PODD paper, not an appendix of the OSDI paper and not a new reading of the RefFS implementation. The original RefFS main-paper account remains inherited from formal509. Whether this precise draft proves every rule of the released MoLi framework is not established by the link alone. PODD makes a thread's progress depend on definite actions, obligations that their owning threads must fulfill once enabled. Actions have state-dependent layers, and dependencies must preserve strict relative order even when numeric layers change. Layers have a total order, not necessarily a well-founded one. Finite dependency sets and decreasing local/stack metrics supply the termination argument. The LIVE-FRM rule extends action/layer context while preserving old ordering, so an acquisition proof can be reused without expanding every nested wait chain. Tokens account for unblocked loop progress and finitely many levels of delaying interference. Theorem4.2 states linearizability and deadlock-freedom; starvation-freedom additionally requires rely and guarantee actions at level0 (S12,S14,S15). AppendixA supplies the fuller resource/ownership logic, fences, rules and ideal shared-memory semantics. AppendixB first gives judgment simulations with finite-height while stacks: arbitrary-length lexicographic lists would not be well-founded (S31). B.3 expands new while/live-frame cases. B.4 maps these to a common simulation, directly for starvation-freedom and through a lock plus nondeterministically decreasing finite-wait wrapper for deadlock-freedom (S45,S48). B.5 combines thread simulations using finite active-thread dependency sets, scheduler rounds and a lexicographic metric. LemmasB.22–B.30 connect coinductive fair traces to refinement (S54,S57,S58,S66,S69). B.6 defines progress over complete fair traces, permitting abort alternatives, and uses three most-general clients to relate finite refinement to linearizability and fair refinement to linearizability plus starvation/deadlock freedom. The deadlock equivalence wraps the atomic specification; it must not be replaced by the stronger starvation refinement (S72,S74). AppendixC provides all printed proof outlines for nested TAS/ticket locks, ticket-lock coupling lists, optimistic/lazy TAS lists, and two-list transfers. Ticket queues support starvation-freedom; unfair TAS permits only the weaker deadlock-freedom claim. Lists use local lock obligations, node order and finite traversal metrics. Optimistic/lazy cases retain removed nodes in ghost garbage, not a proved memory-reclamation scheme. Lazy contain is explicitly omitted. Transfers use one mutex to serialize moves, list levels0/1/2 and lexicographic (listlevel,distance-to-tail) layers; their add/remove proofs are referred to earlier lists. The two-list move is a useful dynamic-dependency example, rather than a distributed network/crash model (S87,S90,S94,S102,S109,S116,S122,S124). Evaluation consists of paper proofs and worked examples; no numerical benchmark, proof-time table or replayed mechanization is supplied here. Section6 explicitly makes mechanization and automation future work (S20). Section5.1 admits that common rely conditions and frame stability can prevent reuse across objects (S17). Assumptions include fair scheduling, an arbitrary fixed finite number of threads, ideal atomic memory actions, safe total abstract methods and the presented non-nested method-call language. No bounded response-time, weak-memory, crash/recovery or implementation-to-binary theorem follows from this reading. Reader deductions from the literal listings must be kept separate from intended theorems. Figure40's inner ticket loop never increments o; Figure55's elems retains marked values and discards unmarked ones; Figure62's sequential MOVE removes a head before reading the new head. Details and elementary counterexamples are in reader_diagnostics.json, with exact page anchors. These are printed-source defects, not findings about unseen code or a global refutation of PODD. The page also has draft-level omissions: a duplicated strict-comparison branch in the proof on p57, an apparent dependency-set type slip in DefinitionB.12, and an unresolved Fig.?? reference plus omitted scheduler semantics on p58. Underlines/fonts were visually checked before identifying these issues. Relevance to the requested database is manual liveness proof structure and evaluation of specification/proof agents: track actual fairness and progress strength, stable dependency ordering, finite metrics, abstract-method contracts, omitted cases and intended versus literal specifications. These are reader uses of a concurrency result. This paper does not evaluate Verus, Rust, TLA+, LLM agents or distributed consensus. RefFS/Coq performance and proof counts remain attributed to the inherited OSDI paper, rather than this draft. Records exact WHILE/OBJECT obligations, ticket and abstract-lock metric differences, dynamic-layer/TDep construction, VFS bug cycle and source typo, refcount ownership protocol, non-atomic operation abstraction, conditional theorem and unmechanized metatheory, survey denominators, all LOC cells, workloads, normalized performance limits and graph estimates. Separates checked RefFS proofs from trusted C/runtime/lock/allocator and protocol-only VFS reasoning. - limits: Fresh source: all124pages, every LF line and all31 rendered contact sheets read; larger renders48,51,54,57–59,66,68–69,96,111,118 inspected. Original21page RefFS main reading inherited from formal509. Separate PODD draft is not a same-title appendix or proof-assistant replay. S12,S15,S72,S74: fair scheduling and arbitrary fixed finite thread count; linearizability plus deadlock-freedom generally, starvation-freedom only under level0 rely/guarantee restriction. Abort alternatives in progress definitions do not establish memory safety by themselves. S10,S22,S23,S27: ideal shared-memory language, primitive atomic operations and specified safe/total abstract methods; presented language excludes nested method calls. No weak-memory, compiled implementation, network/crash/recovery or bounded response-time theorem. S12,S14,S31,S54,S66: total ordering of layers is distinct from well-founded local/stack metrics. Dynamic numeric ranks may change while actual strict dependency relations remain stable. Finite-height stack bound and finite active-thread sets are substantive premises. S17,S20: paper admits object-specific rely/frame obligations and leaves mechanization/automation for future work. Reading the linked draft does not identify its rules with every released MoLi implementation rule. S96,S111,S118: printed metric, lazy abstraction and MOVE inconsistencies require qualification before reuse as formal specifications; counterexamples are elementary reader deductions, without implementation inspection. S102,S109,S116: ghost garbage retention does not prove reclamation; contain and repeated add/remove proof cases are omitted/referred elsewhere. All supplied content was read; omitted derivations were not independently supplied. P1: directory depth ranks can tie. A uniquely determined numeric rank does not give a strict total order on directory identities. Strict ordering of actual lock dependencies needs its own invariant; this local wording issue alone does not refute the locking result. - how much was read: most of it read - source - record id: `using-dynamically-layered-definite-2024` - Verifying Randomized Consensus Protocols with Common Coins (2024) - what: # Whole-paper record: Verifying Randomized Consensus Protocols with Common Coins (authored by agents unless marked 🧑) Song Gao, Bohua Zhan, Zhilin Wu and Lijun Zhang. DSN 2024, IEEE, pp.403–415; DOI 10.1109/DSN58291.2024.00047. Read arXiv 2409.17627v1, submitted 26 September 2024, all 13 PDF pages, §§I–VIII, all 27 references, six figures and four tables. Inspected every page image. Publication pagination comes from Crossref; this PDF has no printed page numerals (Q52). Exact extracted passages with PDF pages and source lines are in quotes.json and combined.quote-source.txt. No author code, compiler, checker, prover, solver or serialized experiment/model data was executed or loaded. ## Contribution and claimed guarantees (authored by agents unless marked 🧑) The paper extends parameterized threshold-automaton verification from independent local coins to a shared common coin. It adds a separate coin automaton and communication variables, giving an infinite-state Markov decision process with process-location counters, per-round shared variables and resilience parameters (§III,Q9–17). Byzantine processes are represented through their effect on threshold guards rather than explicit Byzantine automata (§III-A,Q8). This is a verification method for protocol models, not an implementation refinement or verified executable. Safety and termination follow different reductions. For safety, two one-round invariants imply agreement and binary validity (Proposition 1,Q20–21). Theorem 1 states that any finite schedule can be reordered by rounds while preserving its final configuration and per-round stutter equivalence (Q22). Theorem 2 relates one-round LTL without next-time properties to a single-round system, assuming nonblocking behavior and termination of every fair single-round execution for all initial configurations (Q24). These assumptions matter; it is not an unrestricted equivalence between arbitrary multi-round properties and one bounded run. For termination the paper distinguishes three categories (§V-B,Q26–28). Category A has no decide event and targets eventual convergence to a common final value. Category B has binary messages and explicit decisions. Category C uses a Binary Crusader Agreement stage that may output ⊄, meaning undecided. C1 requires a uniform positive probability of converging during a round. C2 preserves unanimity; C2â€Č instead gives a positive probability of deciding when the round starts unanimously. Proposition 3 supplies a two-round geometric argument: the probability of not deciding after 2r rounds is at most `(1−p·pâ€Č)^r` (Q29). Binding fixes a bit at the first relevant execution prefix and excludes its opposite in every continuation. It is a property of sets of executions, beyond ordinary single-execution agreement (Definition 4,Q30). The model refinement introduces N0, N1, N⊄ locations so that five sufficient safety conditions, CB0–CB4, imply binding (Proposition 4,Q31–32). Proposition 5 combines binding and C2â€Č for termination (Q33). Lemma 2 states that, in the single-round setting, a uniform positive probability under every admissible adversary is equivalent to each adversary having some satisfying path (Q35). That quantifier order is stronger than merely finding one favorable schedule. The proof record is mixed. Lemma 1 has a one-line justification. Proposition 2 calls its proof trivial after a geometric-tail argument. Propositions 3–5 provide paper proofs; Corollary 1 cites them. Proposition 1, Theorems 1–2 and Lemma 2 explicitly omit proofs for length (Q21,Q24–25,Q35). proof-inventory.json records all ten named results and their assumptions. No proof-assistant artifact was inspected, and this reading does not independently establish their soundness. ## Assumptions and limits (authored by agents unless marked 🧑) The network is asynchronous and reliable: a sent message is “eventually received” without “loss, duplication or modification,” and receivers identify senders (§I(a),Q3). Byzantine faults are bounded by the selected resilience condition. The common coin is a trusted, fault-free abstraction, and only strong coins are considered: both bits are common outputs with probability 1/2. Cryptographic implementation correctness is future work (Q2–3,Q41). The model separates shared-message guards from coin guards. Correct processes cannot update coin variables; coin rules cannot modify shared variables. Automata are canonical: rules on cycles have zero updates (§III-B,Q10–13). The method is parameterized by the environment's admissible n,t,f values, rather than verifying only the example cluster sizes. The termination specification is explicitly “under Round-rigid Adversaries” (§IV,Q19). Such an adversary is fair and schedules all actions of round k before those of round k+1 (§III-E,Q17). Removing this restriction is future work (§VIII,Q41). Finite safety-trace reordering does not establish probabilistic termination for arbitrary asynchronous adaptive schedulers. No benchmark archive, model file or proof-artifact URL is identified in the read paper. The paper says it builds two one-round automaton versions per protocol, but those inputs and their transformations were not available in the inspected sources (Q36–37). This does not assert that no artifact exists elsewhere. No ByMC run was reproduced. ## Cases and reported evaluation (authored by agents unless marked 🧑) The benchmark comprises Rabin83, CC85(a), CC85(b), FMR05, KS16, MMR14, Miller18 and ABY22 (§VI,Q36; Table II,Q45). Their protocol descriptions give different Byzantine bounds: for example Rabin83 uses t<n/10, CC85(b) t<n/6, and CC85(a), KS16 and ABY22 use n>3t. These protocol descriptions should not be substituted for the undisclosed exact checked input environments. Table II reports model locations/rules, execution-schema counts and verification time for agreement, validity and almost-sure termination. The authors “ran each experiments 10 times” and report averages, without raw trials or dispersion (§VI,Q37). The first six rows use an Intel Core i7-12650H laptop; the final two use a 216-core AMD EPYC7702 server in parallel mode. Times measure verification work, not consensus latency or throughput. Small examples complete quickly: Rabin83 has 7 locations/17 rules and reported times 0.25s for agreement, 0.20s for validity and 0.43s for its convergence target. CC85(a) uses 342 schemas/4.93s for agreement and an average 171.5 schemas/2.70s for termination. Fractional schema counts are averages. All eight rows and all table values are retained in numeric-evidence.json. MMR14 has 17 locations/29 rules. Its agreement and validity checks take 298.90s and 8.74s. The termination column says CE, with no time. Separately, §VI reports a CB2 violation “within 10 seconds at best,” with an example witness n=193,t=64 (Q38). A failed sufficient condition alone does not prove nontermination. The authors additionally analyze the returned execution, compare it with a known adaptive attack and describe repeating its final actions to recreate the opposite estimate distribution. The motivating four-node example has three correct processes and one Byzantine process. Two correct processes obtain the coin result s, while the adversary delays messages to the third until it can force estimate 1−s; the round can repeat (§II,Q7). This is a prior attack, not a new vulnerability discovered by the paper. Miller's 2018 issue credits Ethan MacBrough and explains that the actual coin instantiation lacks the independence assumed by the earlier ABA proof (Q48–49). The issue proposes an extra CONF phase before revealing coin shares (Q50). Its later implementation comments were read as allegations, without auditing the linked code (Q51). The two repaired category C variants reportedly pass their obligations. Miller18 takes 11h46m47s and ABY22 takes 10h13m14s for all termination conditions, each exceeding 10^8 schemas; agreement takes 605s and 583s, respectively (Table II,Q45). The paper also describes 24-hour timeouts for the earlier technique on category C models, without a controlled cross-hardware speedup comparison (Q37). Table IV changes milestone counts from 10 to 6 in five same-size ABY22-based automata. Calculated maximum schemas fall from 98,182,294 to 28,918 for CB0 and 7,479,057 to 3,592 for Inv2 (Q39,Q47). These are calculated search bounds, not measured runtime reductions or proof that the variants preserve protocol semantics. Table I supplies MMR14 transition guards and updates; Table III lists selected value 0 formulas and an ellipsis, rather than complete checker inputs. Figures 1–6 provide pseudocode, voting and MMR14 automata, and the binding refinement. ## Source discrepancies that qualify interpretation (authored by agents unless marked 🧑) Three points remain unresolved from the printed sources. They are recorded as static comparisons, not reproduced checker failures or counterexamples to a full theorem. - Example 2 gives the MMR14 environment `n>5t` (Q9), while §II describes n>3t and §VI reports n=193,t=64. That witness satisfies 193 > 192 but not 193 > 320. The exact checked resilience condition cannot be recovered from the paper alone. - Proposition 5 reasons that no correct process has executed a coin-based rule, “in other words” the coin “is not yet tossed,” and therefore its result is independent of the binding bit (Q33). Figure 4 and Table I instead show rb with guard true, from initial coin location I2 to N0/N1, followed by unconditional rc/rd publishing its outcome (Q13,Q43–44). Under the initial-state and action definitions, a finite round 0 prefix can execute rb then rc before any correct-process transition. The adversary observes configuration histories (Q15,Q17). Thus the stated timing inference needs a further visibility or scheduling condition that is not enforced by these displayed rules. This prefix does not refute the full theorem or a benchmark protocol; it identifies an unsupported step in the supplied model-to-proof account. - Table III labels C1 with a universal implication excluding mixed final values along every path after a 0-valued final event (Q46). Body C1 is a positive-probability convergence condition, reduced through a per-adversary existential-path condition (Q27,Q35). The displayed statements differ. Separate model versions might explain a stronger checked obligation, but their concrete transformation is not supplied here, so the table cannot establish that correspondence. The coin prefix, resilience arithmetic and quantifier comparison are in static-witnesses.json. All relevant formulas and table entries were checked against rendered PDF pages, rather than relying only on text extraction. ## Relevance to the requested topic (authored by agents unless marked 🧑) This work directly addresses parameterized verification of randomized Byzantine consensus, especially the relation between common randomness, adaptive scheduling, binding and almost-sure termination. It supplies concrete verification-cost evidence and an example of using failed proof obligations to investigate a known attack. It also shows why a safety-preserving reordering theorem, a probabilistic termination argument and a checker result must retain their separate assumptions. For evaluating LLM-written specifications or proofs, the reader-derived lesson is to check scheduler quantifiers, coin secrecy and independence, the exact resilience environment, source-to-formula correspondence, proof availability and what a counterexample actually disproves. The paper contains no LLM, Verus or verified Rust experiment. Its TLA proof-system reference concerns related HotStuff work, not this paper's verification method (Q40,Q42). HoneyBadger/Dumbo composition and cryptographic primitive verification remain future work (Q41). - limits: Parameterized canonical threshold automata under resilience environments; reliable eventual authenticated-sender delivery, no loss/duplication/modification; assumed strong fault-free common coin. Almost-sure termination only for fair round-rigid adversaries. CategoryA convergence differs from categoriesB/C decisions. Nonblocking and all fair single-round termination are prerequisites for reduction. Several central proofs omitted; printed resilience, coin-visibility argument and C1 formula correspondence unresolved. - how much was read: most of it read - source - record id: `verifying-randomized-consensus-protocols-2024` - Verifying Software Emulation of an Unsupported Hardware Instruction (2024) - what: Coq proof that a RISC-V machine lacking hardware Mul but configured with a verified software trap handler preserves finite-execution specifications of a machine with Mul. Handler combines handwritten CSR/register assembly with compiled verified Bedrock2 decoding/multiplication. A helper ISA instance reconciles compiler assumptions with detailed CSR semantics and proves emitted code contains no Mul. Gives binary-level specification preservation quantifying arbitrary user programs/postconditions through a state relation exposing reserved-memory/CSR premises. Removes the apparent compiler/handler circularity by certifying no unsupported instructions in compiled handler code. Concrete treatment includes full register preservation including destination sp, MEPC advancement, calling convention, scratch-space bounds and CSR restoration. Evaluates a factorial program in third-party Spike, reports bugs caught by proof and external-linking bugs beyond its theorem. - limits: Case study treats M extension as containing only one Mul instruction; division/modulo/high-half multiplies are not verified here. User/handler both run in machine mode, no interrupts, uncompressed 4-byte instructions only. Abstract high-level machine has no CSR state; low-level machine has basic CSR support/configuration. Top theorem is finite runsTo specification preservation: high-level runs to post and initial R imply low-level runs to a state related to some high-level post state. It does not state equal instruction counts, cycle timing or a general reverse/infinite-trace equivalence. runsTo hypothesis carries progress/memory-safety requirements. R requires equal registers, pc, nextPc, initialized registers, basic low-level CSR fields, MTVecBase/MScratch values and separation of user-memory map from handler bytes and 256-byte scratch. User finite-map memory domain stays fixed; accesses outside it make the high-level premise unprovable. This is not protection against arbitrary user-memory corruption/adversarial writes into handler state. 256 bytes scratch includes 32 saved 32-bit register words and at least 128 bytes for compiled function stack. No assumption that user sp points to valid/free stack; handler uses independently reserved scratch. No hardware memory-protection theorem is provided; broader user/machine privilege separation is discussed as an extension. Bedrock2 compiler correctness is proved against a simpler no-CSR machine with hardware multiplication. Helper instance enforces no_mul for executable compiler-emitted handler region and transports correctness to detailed no-Mul CSR machine. This invariant is discharged from actual output, not assumed because source multiplication algorithm uses additions. Handwritten portions implement CSR behavior unavailable in Bedrock2. Compiler/program-logic proofs compose into theorem mentioning only RISC-V semantics and concrete handler bytes. Compiler correctness is proved/used internally rather than an extra trusted functional assumption, relative to Coq checker and trusted specification; no concrete CPU implementation is formally connected. Formal result applies to position-independent byte list softmul-binary. GNU toolchain ELF packaging, custom 25-line linker script, initialization and external Spike setup are unverified. A successful simulator run validates one integration instance, not the proof of an arbitrary ELF loader/boot environment. Formal Mul models 32-bit word product; algorithm uses logical shifts/addition/doubling. Scratch slot 0 may receive a computed result but architectural x0 remains fixed through machine register semantics. No separate support for compressed or all future instruction formats is claimed. Table 1 excludes dependencies (coqutil, riscv-coq, Bedrock2, compiler). Counts measure Coq source text, not assembly instruction count or human hours; generated save/restore routines expand two-line functional code to 29 instructions each. Claims of possible automation savings and a 100-line future assembly proof are conjectures. Empirical evaluation is one hardcoded factorial 5 example on Spike, not physical hardware or a benchmark suite. No repeated trials/variance, timing/cycle measurements or exhaustive invalid-instruction test corpus. Authors assess verification probably took longer than debugging; no controlled effort comparison. Reader inspected supplied paper only; no proof replay, ELF build, compiler run or Spike simulation. Related-work statements are publication-specific summaries, not independent audits of seL4/CertiKOS/CakeML. - how much was read: most of it read - source - record id: `verifying-software-emulation-of-2024` - VeriSMo (2024) - title: VeriSMo: A Verified Security Module for Confidential VMs - what: VeriSMo is a Rust security module at AMD SEV-SNP VM privilege level 0, verified with Verus. It protects its own data from an untrusted hypervisor and guest OS while providing guest page management, code integrity, runtime attestation and secret management. A machine model proves security under external interference; tracked permissions and locks verify the implementation under internal CPU concurrency. Security types constrain explicit and implicit information flow. Records exact successful-read and reachability conditions of security theorems, five preservation lemmas, initial page-table/permission assumptions, trusted hardware and byte-casting boundaries, shared-memory restrictions, register rules and declassification. Reconstructs the remapped-secret-page attack and zeroing fix, all API latency/LOC figures, baseline feature mismatch and the restricted-interrupt Linux/Hyper-V dependency. Distinguishes paper-reported proofs and fixes from independently replayed verification or exploits. - number: about 2:1 annotation/code ratio - number: about six minutes verification on 32 cores - number: 31 lines of unsafe Rust for hardware primitives - limits: §§2.1,3.1–3.2: Trusts CPU/firmware security behavior while hypervisor and guest OS may be malicious. Physical attacks are excluded and denial of service remains possible: the hypervisor can stop the host or refuse vCPU scheduling. This is a conditional safety result, not availability, scheduling fairness or distributed liveness. §§2.1,3.2: VeriSMo runs at VMPL0; guest at VMPL3, though VMPL1/2 could be used. Both use restricted interrupts, so the hypervisor can inject only #HV and a doorbell supplies the requested event. Mainstream Linux v6.8 lacked this support in KVM/guest, so experiments use Hyper-V and a modified Linux guest. The proof does not establish safety for an arbitrary unmodified VM/interrupt configuration. §§2.1,5.1: Hardware model includes CPU registers, memory, guest and nested mappings, RMP and cache/TLB-related state. E0 is VeriSMo, E3 guest, Ehv hypervisor. Guest and VeriSMo share an encryption key; VMPL access permissions separate them. Sibling VMs are omitted because the model grants the hypervisor a superset of their capabilities. Reads of externally shared memory/registers are unconstrained. §§4.2,5.1.2: External interference is handled in a machine state transition model; internal concurrency uses ownership and permissions. Primitive instruction wrappers contain trusted unsafe assembly and fully trusted postconditions derived from AMD manuals. Only critical memory/cache operations are modeled, under stated restrictions. Direct GHCB communication replaces code that might trigger #VC; unexpected #VC or other interrupts terminate the VM. Hardware-model completeness and faithfulness remain assumptions. §5.2 Listings 4–7: Confidentiality assumes an invariant-valid state, a successful secret E0 read, equal system physical addresses and a successful other-entity read; it concludes that the latter is encrypted. Integrity assumes invariant validity, attack reachability and successful E0 reads in both states; it concludes equal returned data. Neither theorem forces a read to succeed. Invariant preservation restricts E0 operations by software preconditions; attack-model closure covers arbitrary non-E0 operations. These are model-level security statements, not a complete cryptographic or microarchitectural side-channel theorem. §5.3 Lemma 1: After a validated VM-private GPA binds to an SPA, hypervisor changes leave it bound to the same SPA or make access fail, provided E0 does not revalidate an already bound GPA. Lemma 2: VM-private secrets remain encrypted to hypervisor reads; the guest C bit is required, whereas a permanently set RMP validation bit is unnecessary and cannot be assumed. A hypervisor can invalidate memory without gaining plaintext access. §5.3 Lemma 3: VMPL0-private memory remains unreadable by E3 and its E0 read either returns the original value or fails under Ehv/E3 actions. rmpadjust must not grant guest access to private pages. Lemma 4 extends same-or-fail translation from GPA to GVA using protected page tables. Lemma 5 requires a one-to-one mapping and separate page-table versus ordinary write APIs. §§5.3.3,6.1.1: Initial E0 page tables are trusted to reside in designated private PT memory and map GVAs one-to-one to GPAs. pt_write must preserve both conditions. Initial uniqueness of memory permissions is also assumed, then ownership/non-copyability preserves uniqueness. These initialization assumptions must be checked in a deployment; preservation alone does not establish the initial state. §§5.3.4,6.1: The connecting proof turns software-tracked constraints into hardware constraints when an operation succeeds. SnpPointsTo records GVA identity, optional value and software/hardware RMP/page-table/is_pt attributes. Tracked resources cannot be copied or freely constructed. Fine-grained permissions avoid carrying a global machine state through each implementation proof. §6.1.1: Object sizes, object/byte casts with consistent size and unique bindings, and raw-memory splitting/merging with consistent attributes are trusted specifications or axioms. Rust ownership does not verify these representation facts automatically. Listings 8–11 illustrate permission interfaces and deliberate rejected operations; their abbreviated syntax is not a separately compiled proof artifact. §6.1.2–6.1.3: Lock acquisition transfers a stored memory permission to the holder; release requires restoration of its invariant and returns ownership. Values can change between separate acquisitions. A local lock cannot prevent malicious guest/hypervisor access to a shared page: its permission allows copying and writing but no borrowed reference. Unrestricted reference access requires copying to private memory or safely making the page private. §6.1.4: Registers have per-CPU permissions. GHCB MSR is shared and reads are unconstrained. Writing IDTR/GDTR transfers ownership of the pointed-to memory to hardware. Explicit RIP/SP access is excluded. Updating CR3 requires mutable permissions for the page table and all usable virtual memory, so the single kernel page table is installed only once at boot. These restrictions limit the verified implementation, rather than verifying arbitrary register-manipulating code. §6.2: Security types pair a value with per-entity possible-value sets; full set means secret and singleton means public. Operators propagate sets; comparisons require public operands, and memory addresses must be public. Non-confidential memory may contain only values public to the relevant entity. Trusted downgrade converts a set to a singleton; downgraded keys fail crypto preconditions requiring full secrecy. §6.2 reader qualification: A possible-value set is not a probability distribution or an entropy bound. The paper describes a tracking discipline and trusted cryptographic interfaces, not a general proof that arbitrary full-support values are uniformly random. Binary-operator equation is printed with a op b inside a set quantified over v/u; it is illustrative notation and is not a checked artifact definition in this reading. No flaw in the external implementation is inferred. §§3.4,6.2,7.1: Only three secret categories are used: hardware VM communication keys, VeriSMo key pair and guest symmetric keys. Their uses go through a completely trusted external verified crypto library. Trust also includes ground-truth axioms, functional/security specifications, primitive APIs, Rust core interfaces, Verus and Rust compiler. External HACL verification is not re-established by this paper. §3.4: Guest page sharing must use the module API; otherwise those pages will not be validated again. LockKernel is callable once and removes guest write permission from declared kernel-code pages and supervisor-execution permission from other pages. The caller chooses code ranges; this does not establish that the chosen code is benign or that a malicious guest supplies a truthful semantic runtime measurement. §3.4: ExtendPCR maintains a hash chain beginning with starting code/configuration; Attest binds a nonce, a hardware-attested module identity and module-attested chain. DeriveKey ties a retained encryption key to the runtime measurement and guest uses Encrypt/Decrypt without receiving it. Protocol/crypto behavior and meaning of measured guest inputs depend on trusted specifications; no remote distributed attestation workflow is evaluated. §7.2: OSMEM executable ranges and tracked permission map share an invariant equating range membership with possession of page permissions. One lock protects both the bookkeeping and permission-controlled RMP modifications. Handler range checks are forced by the need to obtain a tracked page permission. This establishes specific safety/range constraints, not every possible API intent property without a specification. §8.1: API averages/standard deviations come from 100 calls each. Switch measures the full VMPL3→hypervisor→VMPL0→hypervisor→VMPL3 round trip. Attestation has much greater variability than cheap calls; LockKernel is expensive but once per session. Table 1 provides milliseconds and thousands of cycles, not proof runtime. §8.2: UnixBench compares VeriSMo, Linux-sm, C-sm and Linux. Authors report almost zero overhead and comparable performance, but do not publish per-bar confidence intervals or an all-workload equivalence bound. Figure 5 contains visible differences, including Linux above modules on some bars. Linux-sm/C-sm implement only WakeUpAP, SetPageShared and SetPagePrivate, whereas VeriSMo provides more APIs. These comparisons are not a controlled isolation of verification cost for identical feature sets. §§8.2,8.4: Up to 40% Hecate slowdown is attributed to prior work and its #VC trapping, not a new head-to-head run. AMD SVSM/COCONUT performance is not compared because the hypervisor differs. Unsafe block counts (32 VeriSMo, 150 AMD SVSM, 235 COCONUT) are source snapshots reported in 2024; lower block count alone proves neither comparative security nor absence of bugs. §8.3: Reports about six minutes for both proof layers using multithreaded Verus and Z3 4.11.2 on 32 cores. Table 2 includes 803 Verus-library axiom LOC and 101 trusted LOC as well as project axioms/trusted wrappers; the 31 unsafe Rust LOC for hardware instructions is not the total trusted code. The allocator interface is trusted, although its implementation is verified. Proof/spec annotations are approximately twice executable implementation size, not a uniform ratio for every module. §8.4.1: The remapping vulnerability was detected during verification; authors report an AMD disclosure in early May 2023 and security fix, with early COCONUT still retaining the older bug. The reading checks the paper account and cited commit pointer only, not a reproduced exploit, current project state, or independent fix audit. No artifact or proof replay was executed. - how much was read: most of it read - source; notes: VeriSMo: A Verified Security Module for Confidential VMs - record id: `verismo-2024` - Verus SOSP 2024 (2024) - title: Verus: A Practical Foundation for Systems Verification - what: A Rust verifier for systems code. In its EPR-enabled method (EPR is a restricted logic that the solver can decide), the developer writes the inductive invariant (a fact that holds initially and is preserved by every step) and the tool checks it automatically. The evaluation (Section 6, Figure 9) is at the component level. - number: 6.1K lines of implementation and 31K lines of proof - number: IronKV 1,533 exec / 4,509 proof / 1,613 trusted lines; verifies in 18 s on eight cores vs Dafny 201 s - number: node replication verifies in 9 s vs 228 s - limits: It applies to the paper's EPR-enabled method, not to finding arbitrary invariants. - how much was read: most of it read - source; notes: S30; notes: Verus: A Practical Foundation for Systems Verification - record id: `verus-sosp-2024-2024` - Automated Verification of Idempotence for Stateful Serverless Applications (2023) - what: Flux verifies retry transparency for concurrent stateful serverless applications using symbolic execution and SMT-checked simulation. Idempotence consistency requires retrying executions to match event histories and final database states of some retry-free execution. A stronger per-function simulation supports composition; inferred rely conditions and failure reduction limit checking to one retry after state changes. A logging advisor chooses protected operations, reducing overhead compared with logging all operations. Evaluation covers27 applications/79 functions and eight selected performance workloads. Records exact event/failure/API semantics, annotation and NoSQL assumptions, stable pre/post rules, restricted loop treatment, paper-only metatheory and omitted proof, heuristic mapping/advisor incompleteness, unsupported-loop fallback, concrete bug patterns and HDFS extension limits. Saves complete27-row application counts/times, every latency label, comparison settings/ports, plot estimates and adverse raw/timeout cases. Preserves the source’s inverted Table1 legend and distinguishes correctness definitions from atomicity/liveness. - limits: §3 Definition1: Observable behavior is ordered invocation/response/side-effecting-service events plus final shared database state. For every retrying execution from any initial state, some retry-free execution must produce the same behavior. The retry-free execution may have a different interleaving; this is not deterministic replay or exactly-once execution of each database operation. §3: Failures discard only the failed instance’s local state; persistent database state and other instances’ local states survive. Retry restarts at the first statement with the same invocation ID and arguments and generates no new invocation event. Correctness is relative to this retry/failure model, not arbitrary database corruption, lost acknowledged writes or overlapping duplicate workers outside the model. §§1,4.2,5,9: Shared state is modeled as persistent NoSQL key-value pairs, and APIs become atomic read/write steps (a conditional update’s read/write pair is atomic). Prototype supports Java via Java Pathfinder and DynamoDB. File descriptors, shared process memory, other database semantics and other languages need new models/engineering. §§3,5,5.1: Developers must supply names and side-effect bits for third-party services; optional unique-variable annotations exclude other instances from accessing corresponding keys. These annotations and modeled semantics must be accurate. Thus entirely automated means generated reasoning conditions after these inputs, not zero human semantic input or automatic validation of service uniqueness. §4.1 Theorem1/AppendixA: Per-function simulation is sufficient, stronger than application consistency. Every retry step must match zero/more retry-free steps with the same event and database state, stable under the environment relation. Composition needs rely conditions covering actual concurrent effects: AppendixA uses (D,Dâ€Č)∈R to preserve the other component’s simulation. Do not interpret the existential R in the abbreviated theorem as permission to choose an arbitrary underapproximation. §4.2: Rely inference has only read-only, arbitrary-update and same-constant-update classes. Symbolic-key writes may modify arbitrary data. Read-only reads and invariant constant writes permit stable facts; otherwise facts remain unchanged. This is conservative and incomplete; it does not infer every useful invariant or semantic relation. §4.3 Theorem2/AppendixC: Non-writing unbounded loops are replaced by uninterpreted functions returning arbitrary values. Writing loops require retry-invariant iteration count and inputs, idempotence simulation for prefix/body/suffix and no further state effect after each successfully executed component. These restrictions exclude loops whose writes/iteration counts change on retry. No general automatic loop invariant synthesis or termination proof. §4.4/AppendixB: Theorems3–4 reduce arbitrary finite retry counts to one retry and state-changing cut points using simulation induction/transitivity. AppendixB explicitly omits a formal proof of the state-changing-cut condition as intuitive. Theorems/lemmas are paper proofs; no mechanized metatheory or independently checked implementation-soundness proof is reported. Eventful third-party APIs must be modeled consistently with this reduction; the paper does not separately prove that boundary. §5 Algorithms1–2: Symbolic traces start with true conditions for unconstrained inputs/database states. SMT checks operation-parameter equalities under path-condition conjunctions, matches observable events and carries equalities between same-key reads. Verification relies on trace generation, API model, implication construction and solver correctness. No independently checkable proof certificate or complete trusted-component inventory is supplied. §5.2: Step mapping uses a preferred prefix/retry-to-nop heuristic, with random alternative mappings if needed; it can miss valid mappings. Four incompleteness sources are stronger-than-needed per-function simulation, unsupported writing loops, missed mappings and limited inferred conditions. Sound/no-missed-bug statements are authors’ guarantees under assumptions, not empirical proof of implementation soundness. No false positives in evaluated cases does not establish completeness. §6: Brute-force advisor checks2^n candidate sets and minimizes estimated logging cost among verifier-accepted sets. Greedy advisor checksO(n) sets, keeps any log whose removal fails verification and need not find a global minimum. A retained log can reflect incompleteness rather than a necessary bug fix. Unsupported loops trigger conservative all-operation logging before/inside the loop except reads of read-only data. §6 Table1: The table’s candidate columns are get/update/put=[0,1,1],[1,0,1],[1,1,0] with results false,false,true. The prose says0means logged/1not logged but also says get=0 removes its log, contradicting that legend. The algorithm/example outcome consistently keeps get/update logs and removes put. Preserve printed cells and flag the inversion instead of silently choosing a legend. §7.1: Applications are adapted from public repositories/benchmarks; AWS repository selection requires≄1000deployments and omits stateless/microbenchmark cases. The authors manually port Java applications to Go for Beldi/Boki performance; semantic equivalence is asserted, not formally verified. Selection/adaptation limits generalization to all serverless applications. §§7.1–7.2 Table2: Fifteen applications classified consistent, twelve inconsistent;21functions have issues;8issue confirmations are reported, not27independently proved diagnoses. SPECjbb verification times out on unsupported loops. Authors say its unverified functions are buggy and use advisor fallback; this is not successful verification of all79functions. Table2 does not give timeout threshold. §§7.1,7.4: Beldi uses AWS Lambda1GB instances/DynamoDB/CloudWatch; Boki uses its own platform. Transactions in comparison runtimes are disabled to compare idempotence costs. Boki cannot precisely report throughput and does not support the needed read-modify-write guarantee for Alexa/SPECjbb; those cases are excluded. Do not attribute Beldi throughput results to Boki. §7.4: wrk2 load runs seven minutes; eight selected applications supply Beldi plots, six Boki plots at1RPS. Further800RPS and Java results are prose-only. Median/p99 are request latency statistics, not repeated-experiment confidence intervals. Repetition counts/warm-up policy and raw runs are not stated. Raw may be incorrect, and Type-II protection retains overhead relative to it. §9: Idempotence consistency permits partial updates visible to other functions and does not guarantee atomicity, serializability, availability, termination or eventual retry success. HDFS truncate example illustrates the definition’s reach, but Flux’s Java/NoSQL algorithm is not shown verifying all HDFS. Applying it elsewhere needs state models and exactly-once mechanisms. §§8–10: Relevant to retry specifications, compositional verification and evaluating automated proofs. Comparisons to CHL/Yggdrasil/Perennial/RGSim concern stated methods and scope. No Verus, verified Rust, TLA+ or LLM-agent experiment. No Flux artifact appendix/repository pointer in this PDF; cited benchmark/tool/bug sources are not a replay. - how much was read: most of it read - source - record id: `automated-verification-of-idempotence-2023` - BWoS: Formally Verified Block-based Work Stealing for Parallel Processing (2023) - what: BWoS splits bounded per-owner work-stealing queues into blocks with independent metadata. Block takeover/grant separates get from steal, amortizes synchronization, and reduces cache interference. FIFO permits stealing from the middle; LIFO steals from bottom. Random block sampling approximates size-proportional victim choice and combines with NUMA preference. GenMC/VSync check and optimize C memory-order choices for small IMM/RC11 clients; benchmarks evaluate C/C++/Rust/Go/Kotlin implementations and Java/Go/Tokio integrations. Records all four block invariants, atomic takeover thresholds, completion counter and packed rounds, exact probabilistic premise versus sampled approximation, bounded model/client/sum assertion and three-day expanded check, found reset race/barrier counts, verification versus runtime-port boundary, complete tables and benchmark settings/results including negative cases, source wording discrepancy and assertion-coverage concern. - limits: §§2–4: One owner both produces and consumes each queue, several thieves consume; bounded circular storage and atomically updated64-bit metadata. FIFO/LIFO describe owner behavior; FIFO thieves may choose a middle block. Do not infer strict global FIFO linearizability for a general shared queue from this scheduler design. §3.1: Invariants forbid overwriting unconsumed data, duplicate or same-item get/steal reads, and an in-progress steal preventing owner get takeover. These are algorithm design requirements; model check establishes checked-client properties, not a parameterized invariant proof for every capacity/thread/round count. §3.4: Exact victim probability proportional to size follows ideal accept probability S/C with uniform queue selection and equal capacities. Implementation samples whether random block has stealable data, only approximating S/C; owner-private partial block and low occupancy matter. NUMA-biased selector changes selection probabilities. No universal load-balance/tail-latency theorem or runtime fairness proof provided. §4.2: Metadata has finite index/round packed into64bits. Paper describes wraparound of block pointer/next rounds but gives no all-time proof or exhaustive lifetime bound against round-number overflow/ABA. Atomic hardware/memory-model interpretation and compiler/tool implementation are assumed. §5: GenMC explores all executions of specific finite client under IMM/RC11, checks memory safety/non-atomic race freedom/sum consistency and loop termination. Paper explicitly says properties of individual operations were not verified. No unrestricted linearizability, wait-freedom or scheduler eventual-service guarantee should be inferred. §5.1 Figure9: Two2-entry blocks, owner3 rounds of3put/2get,4put/3get,5put/4get, two thieves performing1and2steals, then sequential drain. Three concurrent threads plus drain; larger check adds one thief/one steal. Authors argue coverage of critical scenarios and symmetry, but no formal cutoff theorem generalizing to arbitrary threads/capacity/operation histories is presented. §5.1 Figure9: Assertion equates sum of successful power-of-two puts to sums of gets/steals; authors say this ensures exactly-once reads. Reader inference: sum equality alone is not a complete multiset oracle if duplicates and losses coexist (e.g. duplicate1plus2 can compensate missing4:1+1+2=4); other properties/algorithm constraints would be needed to rule out such compensation. No executable counterexample to actual BWoS is claimed. §5.2: Each remaining barrier weakened individually yields counterexample for checked client. This is local minimality for this design/client/model, not global proof of fastest algorithm. Added thief needing no stronger barrier is confidence evidence; authors label further-thread bug unlikely, not impossible. §5.2/§6: Checked code is C LIFO/FIFO BWoS. Rust/Go/Kotlin translations and Java/Tokio/runtime integrations are evaluated separately; paper gives no explicit formal translation-preservation proof or complete proof of those runtimes. This is adjacent verified Rust evidence, not a Verus proof. §6.1: ≄8blocks/≄64entries per block empirical insensitivity on two architectures, not all workloads. Metadata3pointers/queue plus4atomics,2pointers,1boolean/block plus padding; static overhead called negligible but no byte-accurate memory table. Small capacities or oversized blocks can harm parallelism. §6.2: Sequential ideal queue baseline has no concurrent-stealing semantics; matching its speed only contextualizes overhead. Total ops/sec counts producer/consumer/thief operations, not useful application tasks/sec. Microbenchmark Go variant lacks relaxed atomics while macro port uses internal Go atomic library, so settings differ. §6.3: Reported application gains vary: Java average modest, some regressions; max25.3% not representative mean. Hyper connection-specific12.3% and preoverload throughput values differ in conditions; they should not be conflated. Five-web-framework82.7% aggregate gain does not apply to all Tokio apps. No claim of universal speedup. §6: Repeat counts given for Java10, Rust10×100seconds, Go3; error bars plotted without explicitly defined confidence level/statistic in text. Microbenchmark repetitions/durations and exact compiler optimization settings not specified in saved PDF. Hardware identified by products/core counts, not complete CPU frequency/RAM configuration. §7/§8: Formal-verification comparisons and future GPU/HPC applicability are author claims/proposals. Block modular proof suggested but not used. No distributed crash/network/byzantine theorem, TLA+ model, Verus/Rust proof or LLM-agent evaluation. Badges on first page state artifact functional/reproduced; no independent artifact run here. - how much was read: most of it read - source - record id: `bwos-formally-verified-block-2023` - Cirisci Enea Mutluergil QTree (2023) - title: Quorum Tree Abstractions of Consensus Protocols - what: Introduces Quorum Tree (QTree), a sequential rooted-tree abstraction whose add and commit operations model quorum observations in consensus rounds. It proves safety of QTree and shows Paxos, HotStuff, PBFT, Raft, and Multi-Paxos refine one or more QTree instances via fixed linearization points. QTree nodes carry round, value, parent, and ADDED/GHOST/COMMITTED status. Predicates enforce unique rounds, parent links, trunk extension, and (for single-decree consensus) parent-value preservation. Theorem 1 characterizes correct successful invocation sequences using four checkable properties, including the key prohibition on committing a lower conflicting round after a higher branch is added. Paxos refinement marks PROPOSE as add and DECIDE as commit; safety follows from quorum intersection between vote and later join quorums. HotStuff uses valid PRECOMMIT and DECIDE certificates under 3f+1 Byzantine processes and 2f+1 quorums. PBFT maps each sequence number to an independent QTree. A table relates protocol phases to add/commit quorum phases and exposes quorum optimization opportunities. - number: QTree statuses ADDED/GHOST/COMMITTED - number: HotStuff N=3f+1 and quorum 2f+1 - number: four invocation-sequence properties in Theorem 1 - number: Paxos 2 phases; PBFT 3*; HotStuff 4 phases - limits: Refinement proofs assume round-based protocols with identifiable phases, fixed code locations as linearization points, honest processes for Paxos/Raft and cryptographically constrained Byzantine behavior for HotStuff/PBFT. Validity additionally requires client-value broadcast or equivalent checks. QTree is a safety abstraction; the authors do not establish liveness and note protocols without round decomposition (e.g., Texel) may not fit. Multi-decree protocols require independent QTree instances, and removing valueConstraint changes validity interpretation for state-machine replication. - how much was read: most of it read - - record id: `cirisci-enea-mutluergil-qtree-2023` - CMM (2023) - title: Compound Memory Models - what: Gives two memory models for devices of different kinds (for example CPU and GPU): an operational one (LOST-POP) and an axiomatic one. Proves a mapping from scoped C/C++ to x86TSO and PTX for executions without data races. Checks the work with Lean, Alloy and gem5 tests. - number: 34 x86 tests, 73 PTX variants - number: 139 litmus tests in §6.2 vs 159 compound tests in §5.1, not reconciled - number: 512-2048 runs per simulator test - limits: The proof is a mathematical argument and is not fully machine-checked. No progress properties. The operational model leaves out mixed-size concurrent accesses and read-modify-write operations. - how much was read: most of it read - source; notes: Related work absent from the first pass: Compound Memory Models - record id: `cmm-2023` - Decouchant-KulahciogluOzkan-Zhou liveness testing (2023) - title: Liveness Checking of the HotStuff Protocol Family - what: Extends Twins automated BFT testing with temperature-based and lasso-based liveness detection using partial/hot state abstractions, and compares them with bounded-time liveness checks on HotStuff, 2-Phase HotStuff, and Sync HotStuff. Defines partial states that retain liveness-relevant view/lock information and hot states used by temperature and cycle detection; lasso detection caches repeated hot states without controlled scheduling. Twins scenarios use two partitions, four honest processes and one Byzantine twin, with 1,000 unit tests for execution timing and 10,000 random scenarios per protocol evaluation. Baseline timeout checks report network-partition delays as violations; temperature/lasso distinguish persistent conflicting locks. Sync HotStuff’s early version exposes both safety and liveness faults. - number: 1,000 timing scenarios per configuration - number: 10,000 random scenarios - number: HotStuff small-timeout 20-round 97.6% false positives - number: 2-Phase 20-round temperature 0.17–1.92% liveness, 0 false positives - limits: Testing is bounded by generated rounds and state abstraction quality; temperature threshold selection trades false positives against runtime, while lasso can use more memory. Twins models Byzantine behavior through twin replicas and injected network faults; results are not formal proofs and depend on implementation/version (Sync HotStuff eprint 20190312:115828, Δ=50 ms). - how much was read: most of it read - source - record id: `decouchant-kulahciogluozkan-zhou-liveness-testing-2023` - Formal RSS Intersection Safety (2023) - title: Formal Verification of Intersection Safety for Automated Driving - what: Extends differential Floyd–Hoare logic with hybrid control-flow graphs (hCFGs) and Hoare annotations for compositional multi-vehicle intersection models. A backward synthesis algorithm computes an RSS condition for a specified proper response and proves collision safety under that condition. hCFG networks synchronize separately modeled vehicles, translate to hybrid programs, and use acyclic backward annotation synthesis with closed-form ODE solutions. The implementation checks assertion validity with Z3 and solves ODEs with Mathematica. A user-provided disjunction assists synthesis in the case study; fully automatic assertion synthesis is left open. - number: approximately 1K Haskell lines - number: 23,328 simulations - number: 2,916 initial instances × 8 POV behaviors - number: 2,296 RSS-compliant and experimentally safe - limits: The formal guarantee assumes every vehicle and other traffic participant complies with RSS rules, and the case study fixes a max-braking response and parameterized point-vehicle dynamics. The hCFG used by the algorithm is acyclic and compatibility conditions require nonconflicting flows/assignments. An RSS-noncomplying instance can still be safe under another proper response; only one intersection scenario and one response are evaluated. - how much was read: most of it read - - record id: `formal-rss-intersection-safety-2023` - Formal verification of tpm2-tss (2023) - title: Towards Formal Verification of a TPM Software Stack - what: Presents a Frama-C/WP case study verifying a representative subset of the tpm2-tss TPM Software Stack library. The authors specify functional properties and runtime-error absence for ESAPI linked-list and resource-management functions, adapting memory allocation and linked-list reasoning and proving supporting lemmas in Coq. The paper develops a preallocated allocator to replace dynamic calloc, formalizes linked lists with ACSL predicates and separation properties, adapts Frama-C–Coq list extraction and proves fourteen lemmas. Ten real-life functions plus an illustrative example are checked with Qed, SMT and a small number of WP scripts; the authors catalogue tool changes needed for full-library verification. - number: target library exceeds 120,000 C lines; ESAPI exceeds 50,000 lines - number: 10 real-life functions verified - number: illustrative example: 282 goals in 5m13s - number: library subset: 659 goals in 18m07s - limits: The verified code is a slightly adapted subset of tpm2-tss, excludes cryptographic operations and does not establish full-stack security. The approach depends on preallocated memory and ACSL/Frama-C/Coq models; dynamic allocation, byte-level memory and heap/stack/static modification separation remain tool limitations. The source reports no proof for the complete 120,000-line library. - how much was read: most of it read - - record id: `formal-verification-of-tpm2-tss-2023` - Grove (2023) - title: Grove: a Separation-Logic Library for Verifying Distributed Systems - what: Grove is a separation-logic library for verifying distributed systems, implemented as an extension living in the Perennial repository; its README points to a VRSM case study and Go source. - number: 12x lines of proof as lines of code (§6) - number: 67-73% of single-core Redis throughput; about 2x throughput from one to three servers - number: 1,597 lines of added Coq reasoning principles - number: proof-to-code ratio around 12 - limits: README points to an SOSP paper for details; this record covers repository documentation only. - how much was read: most of it read - source; notes: papers and boundaries - record id: `grove-2023` - Hydra (2023) - title: Hydra: Effective Runtime Network Verification - what: It compiles monitor programs that operators write in Indus into P4 code. The P4 code checks each packet at every switch hop and at the last hop. - number: 11 properties in 14-64 Indus lines generating 102-211 P4 lines - number: Aether baseline 44.53% of header-vector capacity, one checker raises it to 52.14% (7.61 percentage points) - number: compiler about 2,500 OCaml lines - number: known Aether bug reproduced and confirmed - limits: The expressiveness theorem is about the language, not the network. There is no liveness. Humans write the monitors, the field mappings and the linking. The testbed could not saturate switch throughput. - how much was read: most of it read - source; notes: Hydra: Effective Runtime Network Verification; notes: Hydra: Effective Runtime Network Verification - record id: `hydra-2023` - Lightning Network TLA+ (2023) - title: Towards a Formal Verification of the Lightning Network with TLA+ - what: The paper splits the Lightning BOLT protocol into ten TLA+ specifications and nine refinement steps. The goal is to show that an adversary cannot steal an honest user's funds. Two hard steps are model checked. The rest are done by hand. - number: ten specifications, nine proof steps - number: two steps checked: (IV)=>(V) and (IX)=>(X) - number: no state counts, runtimes, LOC or hours - number: No runtime or state-count table reported - limits: It is work in progress and not a complete theorem. It does not verify code. It has no full liveness proof. - how much was read: most of it read - source; notes: Towards a Formal Verification of the Lightning Network with TLA+ - record id: `lightning-network-tla-2023` - Message Chains / UPVerifier (2023) - title: Message Chains for Distributed System Verification - what: Records the chain of messages that caused a later message, so causal facts can be stated directly without inventing ghost state (extra proof-only variables). It is used to check proofs of P-like programs for any system size. - number: 19 evaluated cases: 16 reused mypyvy models plus Tor/onion routing, GlobalClock (150 lines, under 2 s) and 2PC-MVCC (250 lines, about 12 minutes) - number: Pages 2224-2250 - limits: It automates the bookkeeping for proofs that are supplied, and mines facts from examples. It does not discover invariants in general. The review notes did not locate a complete fixed archive of all 19 models. - how much was read: most of it read - source; notes: Message Chains / UPVerifier: full 19-case paper set recovered; notes: Message Chains for Distributed System Verification - record id: `message-chains-upverifier-2023` - Netrix guided consensus testing (2023) - title: A Domain Specific Language for Testing Consensus Implementations - what: Presents Netrix, a central networking server plus DSL for programmer-guided exploration of consensus implementations. Filters control message drops, delays, modifications and reordering; monitor state machines express safety/bounded-liveness assertions; residual nondeterminism is explored by PCTCP and tests are replayable. Formalizes protocol, monitor and product transition systems and proves monitor expressivity for complete runs. Instrumentation shims intercept RPC/message APIs; filters and key-value context encode semantic waypoints. Case studies cover Tendermint, Raft and BFTSmart across Go and Java, including regression tests and protocol-coverage measures. Filter-distance analysis predicts when PCTCP alone can find reorderings. - number: 34 unit tests total: 15 Tendermint, Raft tests, 8 BFTSmart (§5) - number: Instrumentation: 600 LOC added to 150k LOC Tendermint; 120/16k Raft; 150/16k BFTSmart - number: Tendermint found 4 new deviations; one liveness bug increased consensus time 30s→6min; fixes acknowledged - number: Raft tests found 4 documented bugs; PCTCP alone found none of new Tendermint or known Raft bugs - limits: Requires instrumenting communication APIs and serialization adapters; tests explore bounded executions (e.g., MaxEvents=1000, depth=10, 30s iterations), not exhaustive correctness. PCTCP cannot introduce Byzantine behavior and rapidly loses probability on deep reorderings. Findings are implementation-specific scenarios; passing tests do not prove safety or liveness. BFTSmart case found no bugs, possibly reflecting prior testing maturity. - how much was read: most of it read - source; notes: Netrix (2023) - record id: `netrix-guided-consensus-testing-2023` - Owl (2023) - title: Owl: Compositional Verification of Security Protocols via an Information-Flow Type System - what: A type system that tracks information flow. It automatically establishes computational secrecy and authenticity for a protocol written in the Owl language, and hands its refinement checks to Z3. It includes a Rust extractor that produces runnable prototypes. - number: Fig 13: Basic-Hash 46 Owl lines / 541 Rust / 0.71 s; Needham-Schroeder public 80 / 1019 / 7.74 s; Kerberos 270 / 3292 / 8.21 s - number: about 7,300 Haskell framework lines plus 580 shared Rust lines - limits: The proof for the core calculus is on paper. The extractor is not verified. Corruption is static. It has no injective correspondence (each run matches exactly one run on the other side) and no Kerberos freshness. It covers safety only. - how much was read: most of it read - source; notes: Related work absent from the first pass: Owl (2023) - record id: `owl-2023` - PyLTA (2023) - title: PyLTA: A Verification Tool for Parameterized Distributed Algorithms - what: Introduces PyLTA, which model-checks layered threshold automata for all process and fault-parameter valuations without bounding state-space diameter or exchanged messages. It supports synchronous/asynchronous communication-closed protocols and LTL, using counter/predicate abstraction, BĂŒchi automata, SMT realizability checks and interpolant-based refinement. The paper gives an LTA input language with repeating or lasso layers, threshold guards and parameter relations. Counter abstraction counts processes traversing states and loses identities; Phase King identity guards are nondeterministically abstracted. Negated LTL is translated by Spot, MathSAT/PySMT checks abstract counterexample realizability, and automatic CEGAR adds predicates. The Phase King example assumes 4t<n, introduces actual-fault parameter f≀t, and needs one refinement predicate. - number: parameter constraint 4*t < n - number: actual fault parameter f ≀ t - number: one refinement predicate in running example - number: Supports parameterized process and fault counts - limits: Protocols must be parameterized, round-based and generally communication-closed with monotonically increasing message tags and threshold guards. Fairness assumptions are needed for infinite configurations. Identity-dependent behavior is over-approximated by counter abstraction, and results apply to the LTA model rather than executable code. General parameterized verification remains undecidable; no broad runtime benchmark is reported. - how much was read: most of it read - source - record id: `pylta-2023` - Spoq: Scaling Machine-Checkable Systems Verification in Coq (2023) - what: Spoq translates Clang-generated LLVM IR and Armv8 assembly into structured Coq programs, then automates layered specifications and refinement proofs using CCALs. Low-level functional specifications aggregate instruction semantics; high-level specifications unfold/simplify lower interfaces into self-contained transitions. Coq checks generated proofs including Z3-suggested transformations. Evaluates translation coverage on five codebases and verifies updated SeKVM trusted core, followed by a separately written confidentiality/integrity refinement to an ideal machine. Records every CFG rewrite and specification transformation, loop ranking/branch/manual-data-abstraction limits, SC/Arm-memory bridge, security declassification model and full trust chain. Saves translation numerators/denominators, all manual-effort table cells, generated sizes and application/platform details. Distinguishes generated behavioral equivalence from desired correctness, translating Linux from verifying Linux, and changed-version/security-method comparison from a controlled labor experiment. - limits: §§1–2,8: LLVM-to-Coq translator/CFG restructuring is unverified and trusted. TCB explicitly includes Clang/LLVM toolchains, translator, LLVM/assembly semantic definitions and ultimately proof checker/model adequacy. Earlier wording only part unverified needs trust is restricted to Spoq internals, not whole stack. Coq checking does not establish the correctness of trusted translation, compilation, runtime/hardware semantics or intended property. §§2,7.2: Automatically generated specifications intentionally preserve code behavior, including bugs; behavioral refinement alone does not prove desired functionality. User must prove an independent high-level property, or supply an independently justified top-level specification. The SeKVM security proof trusts approximately200LOC ideal machine/declassification policy, not the much larger generated real-system specification as an axiom. §§4,8: Broad full-C claims mean using Clang to accept unmodified GNU-C constructs rather than verifying all C semantics/programs. Prototype supports only a subset of LLVM IR and Arm assembly; advanced callbr/invoke/resume unsupported. Only Armv8 assembly currently parsed; automatic assembly specification/proof synthesis handles no-jump procedures. All translated functions in broad-codebase experiment are representation successes, not correctness proofs. §§2–3: User supplies layer configuration, bottom machine model completion, ranking function per loop, and manual data abstractions/refinements. A layer calls only lower layers, so A→B→C requires three layers. Generated global memory/getters/setters omit concurrency event/oracle structures; these must be added manually. Cyclic function dependencies/general recursion support is not demonstrated. §4: CPU-local concurrency partitions memory into CPU-private, lock-protected and lock-free objects. Lock access requires local CPU ownership; lock-free access emits global events with environmental oracle steps. Model assumes sequential consistency. Propagation to Arm relaxed memory additionally requires six weak-data-race-free conditions as in VRM; SeKVM authors report doing this but omit details. No blanket proof for arbitrary relaxed-memory C programs follows. §§3,5: Loop ranking must be nonnegative/decrease, supplied by user and checked with xlia/induction. Fixed-point recursion has fuel and break/return flags; after flags set it preserves state through remaining recursive steps. Rank0 must not silently truncate a live loop. Loops within conditional branches need manual copied/adjusted induction templates in current implementation. No generic automatic termination/invariant discovery theorem. §5: Assembly-C linking follows AAPCS64; caller-saved registers become UNKNOWN after calls and cannot be read before write. Inline assembly may use declared C input/output operands, system registers/constants; direct general-purpose-register access disallowed. These restrictions constrain supported code despite broad inline-assembly headline. Assembly branches require user-written specification/proof. §§3,6: Automatic lifting applies to identity/no-data-abstraction layers. Mapping arrays/page tables/locks/ownership to abstract maps requires user relations, operations and proofs. Self-contained means no calls to other layers except bottom machine model, not an independently meaningful security specification or absence of all low-level detail. §6: Z3 proposes branch/rely/math simplifications; annotations guide Coq hrefine reconstruction and are removed by a final refinement. Z3/spec/proof generators are outside soundness TCB when all required proofs check. Coq tactic failure still requires manual completion. Half-second Z3 timeout reduces simplification opportunities rather than permitting unproved solver facts; large functions can take>30min. §7.1 Figure8: C translation experiment uses default source build configurations; Linux v5.15 specifically allnoconfig. Makefiles may be changed to emit LLVM .ll and ClightGen unsupported flags filtered. Reported functions are those in tested builds, not every possible kernel configuration/source path. Broad translation does not verify Linux/OpenSSL/Redis/Memcached/mbedtls properties or assembly compatibility of every function. §7.2: Verified SeKVM is already retrofitted KVM/Arm trusted core, not the entire unmodified vanilla Linux/KVM codebase. Updated RaspberryPi4 support is a modest code change with same34layers. Spoq avoids additional parser-driven source alterations to that core; verified3.8KLOC C/assembly matches compiled source, conditional on trusted compiler/toolchain. Source proof is not an independently verified binary compiler chain. §7.2 Table1: Proof cost is manually written Coq LOC, not elapsed developer time, person-months or a randomized same-version comparison. Baseline is previous SeKVM version, machine model differs, security proof changes from noninterference/data-oracles to ideal/real. Security LOC38% reduction explicitly unrelated to Spoq; functional79% reduction and total74% should not be causally conflated. §7.2: Trusted-core all3.8KLOC translation and checked proof claims are authors’ results, not replayed here. One security use case and five translation codebases do not show general automatic proof of arbitrary concurrent systems. Article gives proof strategies/examples, not complete machine-checked metatheorems of translator soundness or every reconstruction algorithm. §7.2 Table1: Original functional categories add33.5K and security38.3K. Spoq rounded component cells plus26rankinglines add≈7.026K/10.026K versus printed7.0K/10.0K; compatible with rounding. Summary ratios1/3specLOC and1.4proofLOC use approximate categories, not exact timed effort. Preserve printed percentages and units. §7.2 Figure 10: Benchmarks compare source-verified SeKVM, vanilla KVM and native on Raspberry Pi 4B, with resources matched to two CPUs and 4GB RAM. SeKVM guest uses a modified virtio driver; the other guest uses vanilla Linux 5.4; host is 5.4.55. Guest changes and one platform constrain comparison. Bars normalize native to one; lower is better. The below-15% overhead claim uses vanilla KVM as baseline. §§7.2,8: No benchmark run counts/confidence intervals/random variation are reported. Code-generation runtime2h on8core2.3GHzXeonE5-2686v4/32GB differs from execution benchmark platform; Coq-check time is not separately isolated. Timing/labor adjectives are author assessment. No concrete newly discovered vulnerability list or proof failure corpus is supplied. §9: Related-work broad impossibility/completeness claims are authors’ comparisons, not independent findings about all versions of those frameworks. No distributed-consensus theorem, Verus/Rust proof, TLA+ model or LLM experiment. Paper demonstrates proof-producing automation relevant to agents, not evaluation of model-generated specifications/proofs. - how much was read: most of it read - source - record id: `spoq-scaling-machine-checkable-2023` - Strauss-Mitsch RSS verification (2023) - title: Slow Down, Move Over: A Case Study in Formal Verification, Refinement, and Testing of the Responsibility-Sensitive Safety Model for Self-Driving Cars - what: Formalizes longitudinal Responsibility-Sensitive Safety (RSS) as hybrid programs in differential dynamic logic, proves collision safety and minimal safe distances in KeYmaera X, proves deterministic controller refinement and verified compilation to Python, then uses formally derived ModelPlex monitors for testing and debugging. The model template makes acceleration, reaction-time, orientation, safe-distance and evolution-domain assumptions explicit. The same-direction proof uses an inductive stopping-distance invariant; opposite-direction safety uses a shared-responsibility invariant. Optimality is established constructively by choosing worst-case accelerations and showing any epsilon-smaller initial separation reaches collision. A deterministic det-HP controller is proved a refinement of the nondeterministic envelope, and structural induction proves Python compilation preserves reachable states. ModelPlex monitors connect runtime states to formal paths: faulty controllers trigger alarms, and collisions without alarms expose modeling flaws. Simulations explore reaction-time parameter effects after proof. - number: four RSS safety/optimality theorems - number: reaction-time examples rho=1 and rho=6 - number: same-direction safe-distance invariant - number: det-HP to restricted Python compilation - limits: Safety is only for the longitudinal two-car kinematic model, with nonnegative directional velocities, bounded accelerations/decelerations, positive reaction time and initial safe separation; gear changes are assumed to occur only when stopped. The continuous dynamics use ideal kinematics and omit richer tire/friction physics. Python correctness theorem assumes Float=R (or interval arithmetic is needed), and compiled code inherits the restricted det-HP syntax. Testing samples scenarios and cannot replace proof; formal proof of the chosen model does not establish real-world fidelity. - how much was read: most of it read - - record id: `strauss-mitsch-rss-verification-2023` - Tamarin to Gobra/VeriFast (2023) - title: Sound Verification of Security Protocols: From Design to Interoperable Implementations - what: Translates a Tamarin protocol model into separation-logic specs. Gobra (for Go) and VeriFast (for Java) check these against annotated code. This carries the secrecy and authentication already proved for the model over to the implementation. It was applied to an adapted WireGuard. - number: WireGuard: 608 Go lines, 3,936 spec/proof lines, 32% generated; about 250 Tamarin rule lines; checking 148/138 s - number: signed DH Go: 106 / 1,015 lines, 61% generated; Java: 113 / 1,022, 76% - number: model verification about 3 minutes - limits: Safety only, with no progress property. The adversary is Dolev-Yao (it controls the network). Network and crypto calls are trusted stubs. DDoS handling, metrics and load balancing were removed. Observational equivalence is future work. - how much was read: most of it read - source; notes: Related work absent from the first pass: Tamarin models to verified Go - record id: `tamarin-to-gobra-verifast-2023` - TLA+ ZooKeeper reliability (2023) - title: Leveraging TLA+ Specifications to Improve the Reliability of the ZooKeeper Coordination Service - what: Builds three linked TLA+ specifications for ZooKeeper/Zab: an abstract protocol specification, a detailed system specification serving as a super-document, and a test specification that drives explorative implementation testing. The protocol model captures Zab ordering and recovery; the system model refines implementation details and uses interaction-preserving abstraction to make TLC checking feasible; the test model and Met conformance framework generate traces for the Java implementation. The authors reproduce deep ZooKeeper bugs ZK-2845 and ZK-3911 involving accepted-log inconsistency or committed-log loss, and merged the specifications into Apache ZooKeeper. - number: protocol configurations reach tens of thousands of states in seconds - number: system configurations reach billions of states and some exceed 24 hours under stated limits - number: two deep bugs reproduced: ZK-2845 and ZK-3911 - number: trace length limit 100 in simulation; model-checking time limit 24 hours and disk limit 100 GB - limits: The objective is usable specifications and automated testing rather than full verification. TLC explores bounded configurations, trace lengths and resource limits; the system-level state space can become intractable. Conformance depends on the abstraction and instrumentation mapping between model actions and implementation events, and does not prove all Java code behavior. - how much was read: most of it read - source; notes: ## ZooKeeper TLA+ specifications (2023) - record id: `tla-zookeeper-reliability-2023` - Verifiable P4 (2023) - title: Foundational Verification of Stateful P4 Packet Processing - what: Builds Verifiable P4, a Coq program logic and semi-interactive verifier sound against formal P416 operational semantics, plus a proved-correct reference interpreter. Demonstrates source-level functional correctness of a sliding-window Bloom filter and a firewall no-recent-false-negatives policy, and adapts the proof to sliding-window count-min-sketch. Section 2 connects P4 control-block proofs to functional models, abstract time-window axioms, a per-packet process relation and its flow-level history closure. Hierarchical representation predicates and MOD clauses track only the rooted persistent-register subtree, enabling client/library proofs. Sections 3–4 define P4light, big-step stack/external-state semantics, nondeterministic partially initialized bits, a determinizing interpreter and a separate static instantiation phase with fully qualified paths and abstract methods. Theorem 1 proves SBF model axioms; Theorem 2 proves the P4 control implements the model; Theorem 3 proves program-logic soundness. Table 1 records P4-manual/compiler ambiguities and fixes. Sections 5–7 report proof sizes, saturating CMS adaptation and explicit boundaries for parsing, compilation, concurrency and probabilistic false positives. - number: T=60s; k=4 panes; r=3 rows; S=2^18 slots - number: dense-flow maximum gap about 100 microseconds - number: 48-bit nanosecond timestamps with wraparound - number: SBF: 416 P4 / 480 model / 1258 specs / 1859 P4 proofs / 1261 high-level proofs lines - limits: The SBF’s no-false-negative flow theorem assumes dense monotone packet time with no gap over T/C (about 100 microseconds), enabling incremental clearing; correct switch timestamps are assumed, while 48-bit nanosecond wraparound is allowed by the proof. Parameters are T=60 seconds, k=4 panes, r=3 rows, S=2^18 slots per row. Packet handling is atomic for a single Tofino-like pipeline; multiple pipelines, recirculation and surrounding packet scheduling remain future work. The logic excludes packet parsing/deparsing although the operational semantics includes them. The P4 front end/type checker and deployed compiler are not proved correct here; architecture resource acceptance and compiler correctness are assumptions for executable behavior. The reference interpreter selects zero for undefined bits, proving one allowed behavior rather than exhaustively exploring nondeterminism. No small false-positive probability is proved. P4 type-soundness proof and broader interpreter test-suite validation are ongoing. - how much was read: most of it read - source - record id: `verifiable-p4-2023` - Verus OOPSLA 2023 (2023) - title: Verus: Verifying Rust Programs using Linear Ghost Types - what: It connects erased proof resources (ghost state, which exists only in the proof) to Rust ownership and imperative code. - number: 12 example programs in Table 1 - number: XOR doubly-linked list: 385 total SLOC, 5.03 s - number: FIFO queue: 477 total SLOC, 4.58 s - number: Verus RwLock: 425 total SLOC, 4.44 s - limits: The formal result is for a small calculus. The termination claim covers specifications and proofs, not executable programs. - how much was read: most of it read - source; notes: S31 - record id: `verus-oopsla-2023-2023` - vMVCC (2023) - title: Verifying vMVCC, a high-performance transaction library using multi-version concurrency control - what: vMVCC implements in-memory multi-version timestamp-ordering transactions in Go, with a Coq/Perennial/Iris proof lifted through Goose. A logically atomic db.Run specification converts a proved sequential transaction body into strict-serializable concurrent behavior. Prophecy variables allow logical updates at timestamp generation before the body executes. Monotonic views, conflict invariants and timestamp-slot helping justify this early linearization, garbage collection and RDTSC-based IDs. Benchmarks compare MemSilo, a 2PL variant and optimization variants. Records the precise library/client proof contract, pure-predicate restriction, local/logical/linear/speculative distinctions, GC abstraction weakening, conflict-free conditions and contradiction for an impossible future, unsolicited helping and actual race repairs. Saves all LOC rows, run/modified-workload settings, exact performance labels, optimization/long-reader/abort-rate data and qualified plot estimates. Separates correctness from deliberately incorrect diagnostic optimization and no-durability scope. - limits: §§1,7: Data is in memory with no durability/crash-recovery theorem. The interface is a simple key-value model, not SQL or native range scans. A future Perennial-backed durable extension is proposed, not implemented here. The first verified MVCC claim is the authors’ priority claim, not an independently established exhaustive survey. §§3.1–3.2 Figures 3–5: Clients must prove a sequential Hoare specification for body. db.Run then provides a logically atomic swap from map m satisfying P to mâ€Č satisfying Q on commit; abort preserves the prior logical map. P/Q are pure predicates over map values, not arbitrary resource ownership. Representation predicates are omitted from the displayed rule. This does not verify arbitrary unproved client bodies or external side effects. §3.1 Figure 3: AtomicXfer’s displayed separating-conjunction precondition owns disjoint source and destination resources; do not infer the same-key case from this rule. Arithmetic is shown over uint64 with subtraction guarded by balance≄amt. The paper does not separately discuss overflow in the informal bank conservation claim; do not read the example as an unrestricted mathematical-integer banking guarantee. §§2–4: The strict-serializability interpretation concerns modeled concurrent transaction safety and real-time precedence. Read-only transactions do not conflict-abort because required versions remain available. No proof of termination, scheduling fairness, starvation freedom, eventual write-transaction success or resource-exhaustion behavior is stated. Conditional xfer wording explicitly says runs and terminates. §§2,4.5: The RDTSC scheme assumes monotonically increasing clock values consistent across cores/sockets. Site locks, rounded site-tagged future timestamps and waiting until the clock passes them establish uniqueness and ordering; replacing low bits alone is unsound. Physical clock behavior is assumed, not verified hardware. The text gives tâ€Č≄t in §2 and tâ€Č>t in the proof narrative; the Coq artifact was not replayed to resolve that exposition difference. §§4.1–4.3: Prophecy variables are a sound symbolic proof mechanism, not runtime forecasting or a search that samples favorable futures. Conflicting predicted commits are modeled as aborts until resolution derives the contradiction. All intermediate views are shared through invariants opened at atomic steps; they can change between steps. §4.2: The physical tuple abstraction holds only for versions whose lifetime has not ended before monotonic tsafe. GC weakens that relation, and tuple reads/writes require timestamps≄tsafe. Retaining every logical timestamp forever is a proof structure, not an implementation that stores all history or a proof of bounded memory. §5 Figure 10: Verification is of modeled Go code through Goose and Perennial/Iris/Coq, including added prophecy support. The reported LOC excludes necessary changes to Perennial and includes function specs in proof lines. Inference from this proof route: compiler/runtime, translation/semantics and hardware realization remain boundaries; this paper gives no separate full TCB audit or native-machine-code theorem. §6.1: The key representation is an 8-byte integer and each tuple needs a key. The TPC-C implementation replaces last-name customer lookup with customer-ID lookup (the source names OrderStatus and NewOrder) and gives History random primary keys. These are modified workloads, not a full TPC-C compliance result. Workload/table/transaction counts describe the benchmark, not verified application coverage. §§6.1–6.2: All tests use one AWS c5.9xlarge instance, 36 vCPUs/18 physical cores by hyper-threading, 72GB RAM, Linux5.15.0, Go1.20.3. YCSB has one million 8-byte-key/100-byte-string pairs, generally one operation per transaction unless noted; a background GC thread runs in every test. Ten runs of 30 seconds, mean/min/max error bars, no confidence intervals or raw runs supplied. §6.2: Silo comparison uses nonpersistent MemSilo. Silo uses OCC for serializability and epochs (~one second) for snapshot versions, while vMVCC makes a version per write. Silo’s snapshot transactions have weaker ordering relative to normal transactions according to the paper. Ratios therefore compare designs with different allocation and snapshot semantics; the performance gap cannot be assigned solely to verification or programming language. §6.2: The allocation diagnostic uses a static write string and in-place tuple updates; authors explicitly say that variant is incorrect. Its 87.3% relative throughput is a bottleneck experiment, not the verified vMVCC result. The scan comparison expands 100 consecutive keys to 100 point reads, using TPC-C continuity assumptions where needed, rather than implementing a native range-scan API. §§6.3–6.5: vMVCC loses to the 2PL variant in most no-long-reader YCSB mixes and by about14% in TPC-C without StockScan. Long-reader benefits are workload-dependent; 8 readers add work and retain versions. Higher contention/hyper-threading reduces scaling and raises abort rates. Described causal explanations are author interpretations supported by these experiments, not formal performance theorems. §§7–8: Related-work comparisons distinguish prophecy-based MVCC from 2PL/NOrec commit-point proofs, durable GoTxn and C4/Push-Pull abstractions. No Verus/verified Rust, TLA+ proof, distributed consensus or LLM-agent evaluation. Artifact page is saved; external code, proofs and performance results not replayed. - how much was read: most of it read - source; notes: Verifying vMVCC, a high-performance transaction library using multi-ve - record id: `vmvcc-2023` - Agda abstract HotStuff/LibraBFT safety (2022) - title: Towards Formal Verification of HotStuff-based Byzantine Fault Tolerant Consensus in Agda: Extended Version - what: Defines an implementation-independent Agda model of HotStuff/LibraBFT for one epoch and machine-checks the core safety theorem (two committed blocks cannot conflict) plus CommitsDoNotConflictâ€Č, allowing non-participating clients to verify commits from partial record chains. Implementations instantiate EpochConfig and prove honest-peer assumptions once; liveness and cross-epoch reconfiguration remain outside the abstract proof. Abstracts Blocks, quorum certificates, RecordChains, CommitRule and implementation predicate InSys. The bft-assumption requires any two quorums to share an honest member; thmS5 proves committed blocks lie on one tree path modulo an explicit block-ID injectivity failure. The extended property uses RecordChainFrom and Complete ∈QC⇒AllSent to let clients validate only records needed for a commit. The paper refines non-injectivity to collisions among records actually in the system, linking abstract safety to cryptographic hash assumptions. - number: Single-epoch abstract model; no benchmark/runtime numbers reported - number: Common quorum instantiation: n>3f Byzantine bound and >2n/3 quorum (§3) - number: Agda 2.6-era open-source model/proofs; extended version adds proof details over NFM paper - limits: Proofs cover a single fixed epoch and 3-chain commit rule; 2-chain DiemBFT option and epoch changes are future work. Safety is conditional on quorum intersection, honest voting/record-membership assumptions and block-ID injectivity (or an explicit collision witness). Liveness is deliberately not meaningful for the abstract model; concrete implementations must prove handlers satisfy assumptions. No runtime performance evaluation is reported; contribution is machine-checked metatheory and open-source Agda code. - how much was read: most of it read - - record id: `agda-abstract-hotstuff-librabft-safety-2022` - Automating cutoff proofs (2022) - title: Automating and Mechanizing Cutoff-based Verification of Distributed Protocols - what: Formalizes cutoff-based verification for parametric distributed protocols in the Relational Modeling Language (RML). A finite cutoff instance is sufficient when every safety violation in any larger instance can be simulated by a trace of the cutoff; the paper encodes this simulation in first-order logic and uses SMT to check it. The paper gives initial, step, and safety simulation conditions and a first-violation refinement that removes the need to simulate behavior after a violation. A backward static analysis starts from instantiated negated safety clauses, follows action updates into guards to a fixed point, and emits the relevant action set, simulation relation, and lockstep. In the sharded key-value example, the analysis reduces eight actions to four and proves a two-node cutoff. The implementation checks the formulas with Z3 and handles seven protocols: four cutoffs are synthesized automatically; three require small manual changes. Two-phase commit exposes a limit: universally quantified guards force actions of all larger-instance nodes into the simulation, requiring an extra failure-simulating node and constraints. - number: 7 protocols - number: 4/7 automatic synthesis; 3/7 small manual changes - number: 20–40 ms per protocol - number: 2-node sharded-key-value cutoff - limits: RML domains are finite per instance but may have infinitely many valid interpretations; safety properties are assumed universally quantified. The result is for safety, not liveness. Cutoff correctness depends on a simulation relation for every valid larger interpretation and on a safe finite cutoff. Automatic synthesis can fail when universal guards or side effects conflict, as in two-phase commit, and the basic key-value store needs an added precondition. - how much was read: most of it read - source; notes: Cutoff automation with seven concrete protocols - record id: `automating-cutoff-proofs-2022` - Cordis mCRL2 Verification (2022) - title: Formal verification of an industrial UML-like model using mCRL2 (extended version) - what: Defines Cordis low-code UML-like model semantics and an automatic translation to mCRL2, then verifies requirements of an industrial cylinder control model with model checking. The case study formalizes control requirements, exposes a false property through a lasso counterexample, and checks twelve properties in total. The discussion reports semantic discrepancies found between generated PLC code and mCRL2 translation and describes fixes and plans for symbolic/compositional checking. - number: 2 properties from §4.2 plus 10 additional requirements - number: each property verified in under 5 seconds - number: 1 false property and all other requirements satisfied - number: Cordis Modeler 3.14.1630.7156 and mCRL2 202106.0 - limits: The cylinder model is relatively simple and verification is a proof of concept. Results depend on Cordis Modeler/mCRL2 semantics and currently focus on single/limited models; complete industrial systems with interacting objects and larger state spaces require future symbolic or compositional techniques. - how much was read: most of it read - - record id: `cordis-mcrl2-verification-2022` - Cosmos DB TLA+ (2022) - title: Understanding Inconsistency in Azure Cosmos DB with TLA+ - what: # Whole-paper read: Understanding Inconsistency in Azure Cosmos DB with TLA+ (authored by agents unless marked 🧑) A. Finn Hackett, Joshua Rowe and Markus Alexander Kuppe; arXiv2210.13661v1,24October2022,11pages. This is a client-facing behavioral model and industrial explanation case study. It reports390lines of core specification developed over2person-months,24non-type properties checked by bounded exploration/simulation, two documentation issues and an abstract explanation of an Azure outage. The service implementation is represented through expert feedback, without automated conformance checking. [Q0,Q1,Q11,Q19] ## Model and assumptions The four conceptual variables are an ordered write log, a universally replicated prefix readIndex, a durable majority-replicated prefix commitIndex, and a failover epoch. Their relationship is readIndex≀commitIndex≀Len(log). Replication nondeterministically increases either prefix; data loss truncates only the non-durable suffix and increases epoch. The log abstracts replica/region arrangements rather than enumerating them. The retrieved source additionally carries the configured write level as an unchanged state variable; the paper calls it a constant. [Q3,Q4,Q5,S1] One write consistency level is configured for a deployment; individual reads may select an allowed weaker level. The model concerns individual single-key operations. Transactions and optimistic concurrency are outside its scope. Bounded staleness models operation counts, omitting the wall-clock bound. VersionBound limits unreplicated entries for all write levels; StalenessBound separately limits non-durable entries when bounded-staleness writes are configured. These abstractions should not be mistaken for a proof covering arbitrary implementation arrangements merely because the model does not explicitly contain servers. [Q3,Q5,Q14] A write begins by appending its key/value and obtaining an epoch/checkpoint token. It can later succeed or fail. Failure need not delete the value: the request can have taken effect even if its response was lost. Weak reads can see the value while the write remains pending. Successful strong writes require durability. An epoch change invalidates all old session tokens in this model; authors acknowledge that real data loss need not invalidate every token. [Q6,Q7,Q9,Q18] GeneralRead(key,index,allowDirty) returns the latest mapping at or before index, or a not-found marker if absent. If dirty reads are allowed, it also permits later matching entries. Strong reads use commitIndex without dirty values; bounded-staleness reads use commitIndex with dirty values; session reads use max(token.checkpoint,readIndex) with dirty values and require a current-epoch or null token. The client updates its token with the maximum prior/read checkpoint. Prefix/eventual reads both use readIndex with dirty values. This last equivalence concerns single reads/writes, not transactions. [Q8,Q9,Q10,Q14] ## Validation and its limits Authors report10liveness and14safety properties across4distinct levels, excluding basic typing, using exhaustive logs up to length6 and depth-first random traces up to100steps. Examples include durable committed prefixes, read-your-writes, monotonic reads, staleness bounds, token lifetime and eventual write completion. The paper gives no complete per-property run logs, state counts, runtimes or mapping of every property to each exploration bound. These are bounded model checks and sampled traces, not a parameterized proof or implementation test. [Q11] The pinned artifact gives useful additional scope. MCCosmosDBProps uses two keys, three values, StalenessBound2,VersionBound3,Len(log)<3 and epoch<3. Its configuration labels several temporal checks “very very slow (1hr+)” and three “overloads TLC (out of memory), probably holds”. SimCosmosDBProps has a finite natural-number replacement0..100 and omits some costly properties. These comments are evidence about the retrieved snapshot, not proof that the paper's historical runs failed; neither do they substantiate completion of every stated check. The history specification assumes weak fairness of the disjunction WriteSuccess√WriteFail; the simulation specification omits that fairness clause. Thus completion claims depend on the specification and bounds actually used. I did not establish an unbounded per-write progress theorem. [S2,S3,S4] CosmosDBLinearizability maps strong read results to an atomic dictionary view. A commitIndex jump can correspond to multiple dictionary writes in one abstract step. The saved configuration asks for DictSpec under epoch<3 and Len(log)<4. This supports the paper's model-level refinement argument; I did not independently establish a full invocation/response-history linearizability theorem. The old-model refinement goes from the older model to this newer behavioral specification, so old behaviors are included in the new model. The claimed strictness additionally rests on the newer model admitting data loss and dirty reads omitted before. The retrieved mapping fixes two regions/two clients per region/one write region and constrains history length<5. I inspected the mapping, not its old-model dependency closure. [Q12,S5,S6] The read hierarchy is checked while holding write consistency fixed and considering all session-token choices. Comparing differently configured write levels does not give the same inclusion: strong writes can admit more pending non-durable values than bounded-staleness writes. The four retrieved adjacent read-refinement modules use fixed write configuration and small finite state constraints; no unbounded theorem proof is attached to their THEOREM declarations. [Q13,S7] ## Concrete cases and industrial results The first documentation issue is a claim that prefix reads cannot observe A,C or B,A,C after sequential writes A,B,C. A,C is possible simply by interleaving reads around writes. For B,A, use five replicas: A reaches1,2,3;B reaches1,4,5;one read hits5 and another2 before replication catches up. Each write reached a local majority, yet the client seesBthenA. These are allowed service behaviors, not newly demonstrated implementation failures. Authors report the documentation was rewritten. [Q14] The second issue concerns regional guarantees. Bounded-staleness operations in one region may appear strongly consistent until a region failover loses or exposes older data; they lack global durability. Authors report their argument was confirmed for individual operations, while regional documentation bullet points remained because transactions distinguish prefix and eventual behavior. The paper's section title about regions must be read with that explicit restriction. [Q14] The outage affected thousands of subscriptions over28days and was noticed after26days. FrontDoor wrote task data, then asked Worker to read it. Session consistency was configured, but the processes used separate/unconfigured session tokens. Their cross-process interaction therefore had only eventual-read guarantees. A routing change exposed the existing semantic problem through latency. A PlusCal model reproduces a missing read before replication; forwarding FrontDoor's token to Worker removes the modeled error according to the authors. The original postmortem author confirmed the explanation made sense. This is an abstract causal explanation and proposed/rechecked model fix, not evidence that the fix was deployed or that every production trace was matched. [Q15,Q16,Q17] Other cases show why the model has two-step writes: a weaker read can observe an incomplete strong write; a failed write can remain durable; and a bounded-staleness read under strong-write configuration lacks the separate bounded-staleness write throttle. Although the paper says strong consistency has no bound on in-progress requests, the model still has VersionBound on partially replicated entries; completed replication permits more pending requests. These are distinct quantities. Expert review caught an earlier incorrect atomic-write abstraction, which was rewritten and rechecked in2–3days. [Q18,Q19] ## Printed text versus pinned source The displayed WriteCanSucceed on paperp4 checks token validity and, for strong writes, token.epoch=epoch. It omits the checkpoint≀commitIndex condition that the immediately following prose says is required. The pinned CosmosDB.tla includes that durability conjunct. Thus the displayed formula and prose disagree; this does not establish that the checked source permits non-durable successful strong writes. [Q7,S1] The outage text's expected formula is eventually workerValue="workerValue", but Listing1writes"taskValue". The source's temporal property uses eventually workerValue="taskValue" and its terminal-state property checks the same literal. I treat the printed literal as a presentation mismatch and preserve the intended missing-task-value scenario rather than presenting the printed formula as a valid test of that scenario. [Q16,S8] These comparisons use a retrieved, pinned repository snapshot, not an asserted reconstruction of the exact2022experiment checkout. No author code or proof/checker was run. [S9] ## Contribution and reading scope For this database, the contribution is a reusable specification of a distributed dependency's visible behavior and a concrete demonstration that model correctness also depends on choosing faithful abstractions. Its relevance to LLM-written specifications is my inference: evaluation should test behavior the model must permit as well as properties it must forbid, record expert corrections, and distinguish bounded self-consistency from service conformance. The paper has no Verus, Rust or LLM experiment. [Q19,Q20] Read all11pages,28reference entries, every displayed definition, Listing1,all4figures and TableI; inspected all11page renders across the preceding and current context. Read the complete core/property/read-wrapper/client/linearizability modules, both PlusCal outage modules, both model-check/simulation wrappers and configurations, four read-level refinement modules and their common-pattern constraints, the general-model mapping/configuration, and two repository READMEs.26static files acquired with hashes and Git blob identities. No old general-model dependency closure or broader implementation inspected. Official and inventory PDFs are byte-identical. No author execution/import, solver, compiler, checker or serialized scientific-results loading. - number: 2 person-month development - number: 10 liveness and 14 safety properties across 4 consistency levels - limits: single-keyindividualoperations;countnotwallclock;alltokensinvalidatedonepoch;boundedchecks;expertconformanceonly - how much was read: most of it read - source; notes: P24. Understanding Inconsistency in Azure Cosmos DB with TLA+ - record id: `cosmos-db-tla-2022` - DaisyNFS (2022) - title: Verifying the DaisyNFS concurrent and crash-safe file system with sequential reasoning - what: DaisyNFS is a Go NFS server with sequential Dafny-verified file-system methods on the Coq/Perennial-verified GoTxn transaction system. A simulation-transfer theorem converts sequential operation refinement plus safe transaction use into concurrent crash-safe trace refinement. GoTxn extends GoJournal with two-phase locking and an allocator; each visible NFS operation runs in one transaction; space reclamation uses separate transactions that are logical no-ops. Evaluation measures throughput/scaling, proof sizes, development changes and trusted-code/specification bugs found by testing. Reconstructs the four theorem/lemma roles, trusted Dafny/Coq correspondence and safe-use check, local two-phase-locking footprint invariant, nondeterministic allocator validation, rename retries and zero/free checks. Saves full API scope, proof/LOC, eleven bug and four change-effort entries, benchmark baselines and visual estimates. Distinguishes modeled network-trace correctness from wire code/spec intent, crash safety from liveness, and final LOC ratios from controlled productivity evidence. - number: only 2x as many lines of proof as code - number: unverified NFS wrapper is 1,144 lines (Figure 12, PDF p.12) - limits: §§3–4.2: The top-level theorem is network-request/response trace inclusion for a modeled server loop, not verification of every byte in the daisy-nfsd binary. Unverified Go dispatch must parse/decode correctly, call the correct method and encode results; GetRequest/SendReply are abstract I/O events. Each request executes in its own goroutine. Dafny-generated Go methods link with directly written GoTxn verified through Goose/Perennial in Coq. §§4.2,9.3: Disk reads/writes of 4KB blocks are assumed atomic; written data must persist without corruption. Initial implementation/spec disks are all zero and same size; initialize on an empty disk and run recovery after every boot. Crashes may recur and erase memory. This theorem does not cover malicious disk corruption or executions violating the assumed language/disk model. §4.1: Formal NFS state is inode→regular-byte-file/directory map plus attributes; directory names are bytes and clients resolve paths. The model is links, not an enforced directory tree. Out-of-space failures and any chosen current timestamp are nondeterministic. All specified errors leave state unchanged, which authors state is stronger than RFC 1813. Proving this model does not prove it captures the intended RFC. §4.1 Figure 6: Verified file/directory operations are GETATTR,SETATTR,READ,WRITE,CREATE,REMOVE,MKDIR,RENAME,LOOKUP,READDIR; NULL/COMMIT are verified trivial operations. READLINK,SYMLINK,LINK,MKNOD,READDIRPLUS,ACCESS are unsupported. FSINFO/PATHCONF return implemented constants without specification; FSSTAT has no meaningful specification. No NFS unstable writes or paginated READDIR support is supplied. §5.1: Sequential refinement requires an abstraction relation preserved by every operation Hoare triple, initial-state relation and boundary crash simulation. Mid-operation crash/concurrency reasoning is delegated to transaction correctness. Simulation transfer applies to arbitrary spec programs only if each operation body is both sequentially correct and safe, then wrapped atomically and linked to GoTxn. §§5.1–5.2,9.3: Safe transactions cannot observe/mutate outside shared state through arbitrary global heap access; otherwise replaying the body at commit can change behavior. Two trusted composition assumptions remain: Dafny encoding/transaction semantics correctly imply Coq sequential refinement; every Dafny body satisfies safe. Authors use a simple syntactic mutable-state check rather than a verified cross-language compiler/translation theorem. §§6.1–6.2: Each read/write acquires the corresponding object lock and retains it until commit/abort; disjoint transactions can prepare in parallel and commit batching comes from GoJournal. The linearization point is commit. Abort discards buffered writes. The proof tracks initial footprint J and buffered Jâ€Č; every accessed address remains locked, and replay from any state agreeing with J on that footprint can reproduce the same partial execution. §§3.2,6.2: Allocator calls are concurrent but do not keep locks until transaction end, so allocation is not transactional atomicity. Its deliberately weak spec can return any value, not necessarily currently free. File system validates allocation candidates against durable bitmap through transaction reads, and updates both volatile allocator and persistent bits on free. This validation preserves safety while neither successful allocation nor progress is guaranteed. §§1,3.2,7.1.1: No liveness or transaction deadlock-freedom proof. GoTxn imposes no global lock order or dynamic deadlock detection. File-system code orders inodes numerically and retries RENAME with discovered inode hints; this described strategy is not a mechanized eventual-completion guarantee. §§3.1,7.1.2: Underlying write-ahead log is 513 blocks; transaction update limit is 511 blocks. Large file operations must stay within limits. Separate ZeroFreeSpace transactions may stop early and are proved to have no visible file-system effect. Their general specification permits arbitrary writes to unused space; the strong verified zero-check is what prevents stale data becoming visible when extending a file. §§7.2–8,9.3: Efficient mutable byte slices and integer-to-byte primitives use 558 lines of trusted Dafny interface specification backed by Go, tested rather than proved. Serialized metadata is updated in place; machine uint64 arithmetic requires bounds/overflow proofs. Reader qualification: Dafny/Coq/Perennial and language/compiler/runtime correctness are toolchain assumptions; this paper does not establish an end-to-end compiler theorem. §8 Figure 12: File-system proof 6787 LOC over 4051 implementation LOC gives about 1.68×, rounded in prose to 2×. Transaction extension alone is 10000/250=40×; reader inference: the prose 20× is consistent with including reused GoJournal 39000/1669≈23×, rather than the extension row alone. LOC ratios are final artifact measures, not proof effort per unit of equally difficult functionality. §§9.1–9.2: Main comparison uses Linux NFS/ext4 data=journal for synchronous durable RPCs; data=ordered log bypass is a weaker-crash-guarantee performance alternative. Both use Linux NFS client. No unstable writes in DaisyNFS. Plot values not numerically printed are saved as approximate visual estimates, and graph claims do not imply equal functionality, production robustness or every workload speed. §9.1: Measurements use Linux 5.15, Go 1.18.1, EC2 i3.metal 72 cores/512GB/local 1.9TB NVMe, restricted to one 36-core socket with turbo/sleep states disabled. Coefficient of variation is reported below 5%; exact repetitions and confidence intervals are not stated. In-memory smallfile parity is prose-only and not graphed. §9.3: fsstress, fsx-linux, Linux/macOS use and all supported two-operation CrashMonkey tests are empirical checks, not exhaustive RFC or crash proof. CrashMonkey found no bugs within that bounded supported suite. Independent collaborator Robert Morris used a wider-range NFS-specific tool; methodology omitted for space. Eleven reported trust/spec bugs show the theorem alone does not validate specification intent or callers. §9.4: One author developed/verified the initial runnable prototype over three months. Four later changes report days and combined implementation/proof LOC, without controlled comparison or independent participant study. No Verus/Rust implementation, TLA+ tool experiment or LLM-agent proof/specification experiment is reported; artifacts/external thesis proofs were not executed. - how much was read: most of it read - source; notes: papers; notes: Verifying the DaisyNFS concurrent and crash-safe file system with sequ - record id: `daisynfs-2022` - Design and Verification of the Arm Confidential Compute Architecture (2022) - what: Arm CCA isolates Realm VMs from malicious hypervisors using a separate hardware physical-address space and verified RMM/EL3 monitor firmware. VIA verifies an early concurrent C/Arm-assembly prototype through Coq refinement and simulation of an ideal model with explicit declassification. Techniques combine local CPU rely/guarantee with movers, program-specific conditions transferring SC proofs to relaxed Arm memory, and ABI-based accounting for registers hidden by C. Functional tests use an architectural Fast Model; preliminary performance uses modified non-CCA Arm hardware. Records delegation/GPT/GST/PAR semantics and all RMI operations, exact mover/log and RTT uniqueness proof, all six permutation conditions and real reordering bug, detailed ABI/inline-assembly restrictions, six declassification rules and three simulation relations, unverified initialization/crypto/compiler/hardware boundaries, concrete bugs, complete Coq and benchmark tables, workload settings and qualified bar estimates. Preserves 43-versus-45 layer and seven-versus-eight hypercall-register wording differences and distinguishes secure functional model from insecure performance emulation. - limits: §§1–2: Protects confidentiality/integrity of VM registers and memory against compromised hypervisor/other VMs, memory remapping/aliasing and DMA under GPT enforcement. VM must not itself disclose private data. No availability guarantee; hypervisor can stop scheduling or reclaim memory, causing protected accesses to halt. Physical attacks, DRAM probing/replay/cold boot, side channels and software-error injection are excluded or require separate mitigations. §3: Hardware must correctly implement Realm/NS/Root/Secure PAS checks, GPT, exception/virtualization and DMA checks. Root EL3M may access all PAS; RMM controls Realm VMs at Realm EL2. Firmware verification does not verify hardware or microarchitecture. Paper focuses NS/Realm interactions; detailed Secure-world behavior is omitted. §3: Hypervisor controls all dynamic resources but must delegate zeroed granules before RMM use. GPT is hardware permission state; separate GST is software bookkeeping for granule use. Protected addresses inside PAR map only private Realm Data; outside PAR may deliberately access shared NS/device data. Untrusted I/O payloads are not covered as confidential private memory. §3: Reclaim zeros and unmaps private memory; future access faults/halts. A previously backed protected IPA cannot be remapped without Realm permission. This is integrity against observing unauthorized changes, not durable data availability or prevention of every malicious deallocation. Remote-attestation initialization hashes IPA/data but relies on unverified crypto. §4.1: Global logical event log abstracts interleaved CPUs. Per-CPU environment oracle yields unseen other-CPU events under rely/guarantee conditions, not a prophetic runtime component or unrestricted assumption. Mover proofs justify rearranging queries, then aggregating local events; right/left/none classifications must be established against permitted environment actions. §4.2/§5.2: Relaxed-memory result is relative to VRM extended Promising Arm model and proved permutation conditions. Decomposition separates DRF code from non-DRF parts. Non-DRF conditions must both hold for allowed hardware reorderings and imply SC-equivalent behavior; arbitrary proposed conditions do not automatically establish arbitrary racy programs correct. §4.3: C/assembly accounting assumes AAPCS64-conforming compilation and the stated C integer/pointer calling shape (≀8 parameters, scalar/pointer return). Tracks unknown caller-saved registers conservatively and requires assembly independence from them. It does not verify an optimizing Arm compiler or establish correctness of every possible C ABI/language feature. §4.3 Figure6: Inline assembly translated to logical input/output registers; supports r,Q,m constraints, prohibits explicit GPR names/goto labels, and requires multi-instruction outputs constrained & or + to avoid unintended overlap. Paper prose says final read by set_pr, whereas code and preceding definition use get_pr; record uses code-consistent get_pr. These are concrete supported cases, not unrestricted inline assembly. §4.4/§5.4: Ideal model gives each Realm private memory and each REC exclusive registers, with six explicit declassification rules. Simulation preserves memory/register observations despite allocation control. This intentionally weaker availability-sensitive integrity property differs from standard noninterference; failure to apply a particular standard formulation does not prove that every generalized noninterference formalism is impossible. §5: Proof covers early prototype RMM/EL3M runtime C/assembly, excluding assembly initialization (.1K RMM/.5K EL3M) and external cryptographic library. Simulation assumes correct initial relation at boot. Later production firmware and current CCA architectures are not automatically verified by this historical result. Roughly .2K Coq ideal specification is trusted security policy, not the total trusted computing base: hardware/model, Coq, compiler/ABI, initialization and crypto remain relevant. §1/§5: Introduction says43refinement layers; §5 says45total layers and gives machine-model, spinlock, three EL3M,39RMM, ideal-model breakdown. Preserve this accounting distinction rather than reporting a single count without context. RTT atomicity takes nine layers; REC.Run takes five. §4.4 Table3 versus §5.4: Table specifies seven hypercall GPRs r0–r6 and four RMM-call GPRs r0–r3, plus system/timer/emulation disclosure. §5.4 concluding prose calls them eight hypercall GPRs. This source inconsistency is retained; no inference that all registers are protected from every intended disclosure. §6: Fast Model has RME functional behavior but is not cycle accurate and too slow for full application performance. N1SDP performance port lacks GPT/Realm hardware and cannot enforce security. Two NS contexts mimic world switching; GPT memory writes occur but register control/check costs are absent. Expectations that GPT cost cancels, future interrupts/passthrough improve costs are predictions, not measured results. §6: N1SDP GIC writes make some userspace exits about800ns more expensive; prototype lacks direct virtual interrupt injection. Thus measurements neither establish actual CCA-hardware performance nor a strict lower/upper bound. Modified KVM/QEMU/guest integration demonstrates functionality without proving the full application/device stack. §6.2: Fifty runs report average/best/worst, not confidence intervals. Mostly<8% overhead and18% MongoDB are author prose claims; plot bars are approximate and some ratios (notably Memcached) do not exactly reproduce that prose. Native baseline normalizes lower-is-better cost; source does not give raw per-workload timings/throughput for every bar. §§7–8: Research relevance is concurrent low-level refinement, specification trust, weak-memory proof and evaluation limits. No direct distributed protocol, Verus/verified Rust, TLA+ or LLM-agent evaluation. Originality/first-proof claims are authors’ historical claims, not an independent literature proof. No artifact appendix/repository pointer in saved PDF; scripts and external claims unexecuted. - how much was read: most of it read - source - record id: `design-and-verification-of-2022` - DuoAI (2022) - title: DuoAI: Fast, Automated Inference of Inductive Invariants for Verifying Distributed Protocols - what: Infers inductive safety invariants for Ivy distributed-protocol models by filtering formulas on reachable simulation states and refining candidates with Ivy/Z3. A finite directed implication graph organizes formula weakening. Runs top-down weakening, bottom-up universal-core strengthening and a universal-only search in parallel. Reports26of27protocols solved, including five Paxos variants; vertical Paxos exhausts memory. Completeness is relative to an adequate finite decidable formula space and graph/optimization correctness, with a reader counterexample to the printed arbitrary-alternation decomposition extension. Supplies exact/approximate implication graphs, sample-preserving coverage theorem, monotonic-refinement proof, counterexample-pruned powerset search proof, quantified-variable/type ordering, mutual-implication optimizations and all benchmark outcomes. Explains which refinement wins per protocol, why hundreds of existential candidates can stall SMT, what human choices baselines require, and how specification/retrofitting differences affect claims of automation. Reader checks distinguish sufficient invariant inference from implemented-system verification and identify a quantifier-dependency flaw in a printed optimization lemma. - number: solves 26 of 27 protocols including Paxos variants; Vertical Paxos runs out of memory - number: Fast Paxos takes 26,979 seconds (about 7.5 hours) - number: solves all but 1 of 27 protocols (Vertical Paxos unsolved) - number: evaluation permits a week per tool and protocol - limits: Inputs are an Ivy protocol transition model and safety property, not arbitrary executable distributed code. Trusted Ivy/Z3 checks initialization and transition preservation of the conjunction and safety implication for all modeled instances, rather than bounded simulation being the certificate. Scope is safety; no liveness, crash-recovery implementation refinement, verified Rust/Verus proof or LLM-agent evaluation. Sampled states are assumed genuinely reachable; incorrect simulation could discard needed true invariants and compromise completeness, though final sound SMT checks still guard returned results. Finite formula search space uses prenex DNF, relational predicates/equality; extension to uninterpreted functions referred to DistAI. Bounds are quantified variables per sort, max_exists, max_literal, max_and and max_or. Tautologies/contradictions excluded. Nonempty sorts are implicit in universal-to-existential implication. Quantifier alternation must follow a fixed sort order, inferred partly from axioms or supplied by user; absent user choice multiple orders are tried in parallel. The actual full verification condition, including protocol axioms/transitions, must remain in the intended decidable fragment. Exact graph is transitive reduction of strict implication over finite formulas; syntactic implementation instead uses five sound weakening shapes and may connect equivalent formulas. Lemmas1–5 establish claimed acyclicity, implication and coverage of nontrivial formulas from selected roots. No theorem says every semantic implication is an edge/path in the approximate graph; coverage plus sound directed weakening is what enumeration/refinement need. Enumeration checks original variable-length states at multiple finite instance sizes, rather than DistAI incomplete fixed-length subsamples. A candidate is retained if it holds on all sampled states; descendants can be skipped if dominated by an existing candidate. Theorem1 says every true invariant in S is either itself retained or has a stronger retained ancestor. Retained candidates can still be false on unseen reachable states; simulation removes candidates, not proof obligations. Top-down refinement checks conjunction plus safety, replaces a failed candidate by noninvalidated immediate successors not already dominated by a reachable ancestor, and returns NotProvable if safety fails. Reachable ancestor here means a graph path avoiding invalidated nodes, not a reachable protocol state. Theorem2 maintains domination of every member of an adequate inductive solution; finite formulas each invalidated at most once give finite refinement assuming every solver check terminates. Bottom-up first weakens all universal candidates until inductive, explicitly ignoring safety, to obtain universal core. noncore includes existential candidates AND universal candidates not in the core whose inductiveness may require existential support. Enumerates subsets by size, calls top-down on core plus subset, and skips subsets holding on an already returned negative prestate. A failed safety-induction counterexample is a possibly unreachable state that invariants must exclude; strengthening can remove it. Theorem3 eventually tries all noncore, reducing to full top-down, conditional on correct pruning and finite solver decisions. Relative completeness is not a guarantee to prove every correct distributed protocol. Needed inductive solution must be expressible in chosen finite S and decidable fragment, samples/graph/optimizations must preserve it, solver calls must terminate, and resources must suffice. NotProvable means this search space cannot prove the property, not the protocol unsafe. Increasing size in round-robin has no practical resource bound; vertical Paxos memout is concrete failure despite expert invariants existing. Defaults max_literal4,max_or3,max_and3,max_exists1 unless safety already has>=2existentials; quantified variables per sort initially maximum arity occurrence in any relation. On failure increments literal/OR/AND/existential/per-sort-variable bounds round-robin. Runs a third max_exists0top-down worker along with general top-down/bottom-up; benchmark walltimes benefit from parallel simulation/refinement and possible sort-order searches, with no separate CPU-time/worker-count-normalized comparison. Mutual implication optimization suppresses Q if retained P1
Pk jointly imply Q, then reintroduces Q if a supporting candidate invalidated. Equivalence decomposition suppresses a formula permanently only when conjunction of smaller formulas is truly equivalent. Examples separate two independent existential witnesses, same witness, and distinct witnesses: existential dependency matters to logical validity, not just speed. Decomposition can require representation of each component within allowed search space. Reader counterexample to Lemma6 claimed arbitrary-alternation/skolemization extension: sorts A,X each{0,1}, fixed order A before X. Let p(x) iff x=0, q(x) iff x=1, r(a,x) iff a=x. F=exists a forall x.((p(x) AND q(x)) OR r(a,x)) is false. The selected conjunction p(x) AND q(x) has two components sharing no existential variable. Claimed components exists a forall x.(p(x) OR r(a,x)) and exists a forall x.(q(x) OR r(a,x)) are both true, choosing a=1 and a=0 respectively. A globally chosen existential witness in the other disjunct cannot be chosen separately. Proof for forall-X exists-YZ is valid under its independence conditions; extending it to arbitrary alternation is unsupported and false as stated. Restrict prefix/dependency structure or preserve shared Skolem choices. This challenges printed optimization/completeness scope, not observed artifact behavior; final independent sound SMT checking can still reject unsafe outputs. Printed Lemma6 proof also calls f/g disjunctions of component literals although components of original conjunction must remain conjunctions for Eq19. This is a terminology/algebra transcription issue for multi-literal components, separate from the arbitrary-alternation counterexample. Lemma5 existential-root argument omits stated no-OR root condition; treat as proof detail needing completion rather than infer a specific artifact failure. Printed Algorithm2 loops only while candidates nonempty, then returns NotProvable; it omits explicit check for already-inductive safety when no strengthening candidates exist. For an unchanged Boolean b initiallyfalse and safety notb, an empty candidate set suffices but displayed procedure returns NotProvable without checking. Algorithm3 likewise needs defined empty universal core when Procedure1 returns no candidates. These are boundary/pseudocode qualifications; do not treat them as reproduced implementation failures. This empty-input example concerns the displayed procedure: default enumeration may retain not-b, and Theorem1 prevents an empty candidate set when a nonempty sufficient II-star is represented. It is not an end-to-end failure of default search. The O(m^2) discussion counts a possible pairwise invariant-dependency workload, not a formal polynomial bound on quantified SMT runtime. Solver cost can dominate even with few formulas. Paper compares14needed Paxos invariants verified in<1s, +10correctunnecessaryalternating invariants5min,+20over3h;149universal Chordinvariants8s. This motivates existential sparsity but is not repeated statistical scaling evidence. Evaluation27small Ivy models (21–123LOC,2–13relations),15universal-sufficient and12requiring existential solution in their presentations. Tools SWISS,IC3PO,FOL-IC3,DistAI,UPDR,I4, week cutoff. Fail,toolerror,Z3error,memout,timeout distinguished; no common success criterion should collapse these. Walltimes single reported numbers, no repeated-run distributions/seed sensitivity/memory measurements or solver-query-count ablations reported. Hardware paper reports DellPrecision5829,4.3GHz28-coreXeonW2175,62GBRAM,512GBSSDPro600p,Ubuntu18.04; reported core description preserved without independent hardware validation. Baselines configured with their documented settings: SWISS uses own published formula bounds per protocol; I4/IC3PO need finite-instance sizes, I4 starts minimum and increases on failure; FOL-IC3 runs universal/default modes and reports first success. Tablefootnotes attribute FOL-IC3Chord difference to threebugs in a competitor file and IC3PO successes to retrofitted protocols/manually supplied alternating clauses. These are DuoAI authors claims, not independently audited competitor defects or controlled equal-input performance results. Concurrent PFOLIC3 excluded from main comparison; its failure rates cited from other work, not own experiments. DuoAI solves26/27,15/15universal and11/12existential, fastest outright on15; SWISS19,IC3PO18,FOLIC318,DistAI14,UPDR14,I412. No competitor solves verticalPaxos here. Not every row is a speedup: Chord200.9s vsIC3PO17.1/DistAI58; locks/tablecontain subsecond differences and learning-ring alternatives. Paxos60.4s vsSWISS16665s(~275.91x),flexible78.7vs28337(~360.06x); comparison is measured selected tool/model configuration, not universal algorithmic superiority. Universal-only worker wins all15universal cases; top-down winsfive simpler existential cases and bottom-up wins hybridreliablebroadcast plusfivePaxosvariants. MultiPaxos615candidates/581alternating butonly2needed noncore; Paxos/flexible/multi/stoppable require subsetsize2,fastsize6. Vertical expert invariant8literals reduced7,60predicates/120signed gives search order120^7≈3.58e14; fast38predicates/5literals gives76^5≈2.54e9. These coarse powers are magnitude estimates ignoring syntax/equivalence, not measured exhaustive candidate counts. Implementation6.1KC++LOC(gcc7.5.0),2.3KPythonLOC(3.8.10) simulator. No machine-checked metatheory or independently executed artifact. Proof soundness/trust distinct from search completeness and practical automation; returned inductive safety certificates do not connect protocol abstraction to concurrent network code. Table1 has four IC3PO successes, three failures and five memory failures among the12existential rows. The §8,p.496 prose instead says six memory failures; the table, not that narrative count, is preserved in structured results. This discrepancy does not change IC3PO total18successes. - how much was read: most of it read - source; notes: papers inspected - record id: `duoai-2022` - Endive (2022) - title: Plain and Simple Inductive Invariant Inference for Distributed Protocols in TLA+ - what: Samples candidate lemmas from a predicate grammar the user gives. Checks them on small finite instances. Greedily picks the lemmas that remove counterexamples to the induction step. A separate TLAPS proof is still needed for the protocol at unbounded size. - number: Invariant for 25 of 29 protocol benchmarks - number: Table I has 30 rows incl. MLDR; 2 rows have no TLA+ translation - number: Paper's Endive rerun in IC3Syn solves 24 shared cases - number: endive solved 29 benchmark protocols plus MLDR; MLDR row: 2,025 s, 7,751 CTIs, 1,272 s checking, 651 eliminated, 102 s CTI generation (Table II) - limits: The generated invariant is not guaranteed to be truly inductive, because counterexamples are sampled at random. Needs a grammar from the user. - how much was read: most of it read - source; notes: Endive: TLA+ candidates, followed by an unbounded proof; notes: papers inspected - record id: `endive-2022` - Hemiola (2022) - title: Hemiola: A DSL and Verification Tools to Guide Design and Proof of Hierarchical Cache-Coherence Protocols. - what: A Coq-based language whose templates manage locking, so that invariant proofs consider one transaction at a time. It proves serializability and coherence of MSI/MESI cache models and compiles to Kami hardware. - number: over 10^9 memory requests per protocol in randomized FPGA tests - number: simulations of 500,000 cycles - limits: Verifying the compiler pipeline is future work. FPGA testing is not a general proof of liveness. - how much was read: most of it read - source; notes: Related work absent from the first pass: Hemiola - record id: `hemiola-2022` - Hoare calculus for reconfigurable distributed systems (2022) - title: Reasoning about Reconfigurations of Distributed Systems - what: Develops a Hoare-style calculus for programs that create/delete components and connectors while finite-state component behaviors continue. A separation-logic-inspired configuration logic uses inductive predicates for unbounded networks; havoc invariants capture interactions in unaffected parts, with an assume/rely-guarantee-style proof system. Defines primitive reconfiguration commands new/delete/connect/disconnect, local programs and frame rule, and havoc semantics allowing loose/tight interactions. Extended regular expressions describe interaction sequences; cyclic proofs establish havoc triples and soundness. Examples prove safety of self-adjustable tree architectures. Automation analysis shows configuration-logic entailment is 2EXP-complete under bounded-degree restrictions, while frame inference remains open. - number: No runtime benchmark; contribution is calculus and worked proofs - number: CL entailment is 2EXP-complete under stated restrictions (§7) - number: Havoc proof soundness established by Theorem 2 (§5.3) - limits: The main examples use finite-state event behaviors, ideal networks without packet loss or delays, and exogenous coordination; low-level mutex/CAS coordination is abstracted away. CL entailment is undecidable in general and 2EXP-complete only under syntactic and bounded-degree restrictions. Havoc proof rules require distinctive proof trees and cyclic-progress conditions. Frame inference and broadcast interactions are future work; timed/hybrid behaviors are not modeled. - how much was read: most of it read - - record id: `hoare-calculus-for-reconfigurable-distributed-systems-2022` - Holistic Verification of Blockchain Consensus (2022) - what: Parameterized model checking verifies binary Byzantine consensus associated with Red Belly Blockchain under n>3t and0≀f≀t. First verifies binary-value broadcast, then substitutes a smaller specification-based automaton into the outer consensus and checks safety and progress properties with ByMC. Agreement and validity do not require the added good-round fairness; termination does. The verified algorithm is the coordinator/timeout-free pseudocode variant under that fairness, rather than a proof of the deployed implementation or its partial-synchrony mechanism. Makes the decomposition concrete: global sent-message counters replace local receive counts; Byzantine effects lower enabling thresholds by f; four temporal broadcast properties support a replacement gadget; round communication closure reduces selected all-round LTL obligations to one-round checking. Manual meta-arguments connect per-superround invariants to global agreement/validity and good-round existence to eventual decision. Gives a fair-round definition, a nonterminating4-process trace, detailed automaton rules, explicit liveness preconditions and measured schema counts. - limits: Fixed n sequential processes communicate through reliable fully connected asynchronous point-to-point links; delays are finite but unbounded, steps interleave, each receive is atomic and sender identities distinguish quorum members. Up to t<n/3 are Byzantine; f≀t is the actual fault count. The threshold abstraction assumes faulty senders cannot impersonate arbitrarily many distinct processes. Communication closure is essential: each process uses only messages for its current round, discards earlier tags and buffers later tags. Monotone send counters and threshold guards admit the prior ByMC reduction. Guarantees do not automatically extend to arbitrary protocols with cross-round data dependencies, timing constraints or changing membership. Reliable communication is encoded by progress assumptions on enabled rules and source-location emptiness. This excludes scheduler executions that indefinitely withhold enabled productive actions. Added consensus fairness is different: some round r has every correct process first deliver r mod2 in that round’s binary-value broadcast. Neither fairness follows from asynchronous reliability alone. Algorithm1 is the DBFT variant without coordinator/timeouts. The second DBFT variant uses partial synchrony, but this paper replaces that mechanism with a good-round assumption. It does not prove a synchronizer, coordinator rotation, timeout correctness or that the deployed environment enforces the assumption. Threshold models describe correct processes and abstract Byzantine influence with f-offset guards; global send counters abstract possible local receipt histories. Parameterized checking ranges over symbolic parameters satisfying n>3t≄3f, rather than testing a list of network sizes. Soundness still depends on faithful manual abstraction and ByMC’s reductions/SMT checks. Inner broadcast verification establishes justification,obligation,uniformity and termination. Replacement must preserve all behaviors relevant to the outer consumer because contestants is shared and the outer algorithm can proceed before the broadcast finishes. The paper argues this and supplies encoded preconditions; it is not a machine-checked source-to-source refinement of production code. ByMC handles a restricted LTL fragment and one-round systems. Cross-superround agreement,initial validity and existential good-round termination require manually chosen intermediate formulas and mathematical composition arguments. The model checker does not directly discharge each final quantified formula as written. The proof covers binary agreement,validity and eventual decision for the displayed algorithm. It does not prove blockchain transaction semantics,multi-value reduction,ledger consistency across all block heights,network/cryptographic code,resource bounds or end-to-end behavior of the deployed Red Belly software. Processes continue participating after deciding so others can finish; only the first decision matters. Text states safe exit after two later rounds but does not supply a verified executable stopping implementation. A process that halts immediately on first decision would change progress assumptions. - how much was read: most of it read - source - record id: `holistic-verification-of-blockchain-2022` - IPA compositional TLA+ checking (2022) - title: Compositional Model Checking of Consensus Protocols Specified in TLA+ via Interaction-Preserving Abstraction - what: Introduces Interaction-Preserving Abstraction (IPA) for compositional checking of TLA+ consensus specifications. Actions are partitioned into modules, dependency/interaction variables are identified, internal actions are abstracted, and each module is checked in a context formed from abstractions of the others. Strong refinement proves that passing all compositional checks implies refinement of the original specification to the abstract one. IPA defines recursive dependency and interaction-variable sets and four abstraction constraints: abstract dependencies cannot use other modules’ locals; interaction updates depend only on interaction/dependency variables; abstract locals avoid other-module locals; and every externally visible action has a mapped abstract action preserving effects. A strong action mapping is used because ordinary refinement does not record correspondence of omitted actions. Case studies identify polling, centralized control-flow and brute-force replacement of performance optimizations as practical patterns. Raft is split into PreVote, Vote and Replication; ParallelRaft merges Replication into LeaderRecovery when it offers little abstraction. The theorem composes per-module refinements into S⇒A. - number: Raft ratio 10.3–288.6 - number: Raft (term=1,cmd=3): 19:12:50 vs 4:02 - number: ParallelRaft ratio 1.9–3.1 - number: 3 servers - limits: The framework checks finite-state safety invariants and explicitly excludes liveness. Correctness assumes the abstract specification already passed model checking, and module/interaction-variable classification and strong refinement mappings are manually supplied or checked; TLC checks only ordinary refinement. The PRaft specification is confidential. Experiments use three servers and bounded term/command parameters, so measured ratios do not establish unbounded protocol scalability. - how much was read: most of it read - - record id: `ipa-compositional-tla-checking-2022` - Kalas choreographic compiler (2022) - title: Kalas: A Verified, End-To-End Compiler for a Choreographic Language - what: Mechanizes a five-phase compiler from global asynchronous Kalas choreographies to endpoint code and CakeML, composing with CakeML compiler correctness to obtain machine-code guarantees. Proves operational correspondence and network-level deadlock freedom, and deploys a generated producer/filter/consumer system through seL4/CAmkES. Sections 2–3 define asynchronous swapping/deferred-action semantics and endpoint projection, requiring immediate branch notifications when another endpoint’s behavior differs; orphan recursion and divergence introduced at uninvolved endpoints are excluded. Sections 4–6 encode choice as boolean messages, split arbitrary strings into fixed payload chunks with a bookkeeping byte, and convert substitution-based fixpoints into letrec closures, passing variables modified by the body. Section 7 proves weak operational correspondence up to strong bisimilarity with catch-up transitions, then network-level deadlock freedom; local confluence and inert reductions control the interleaving explosion. Section 8 compiles Payload endpoints to CakeML using FFI models, proves FFI irrelevance and forward correctness, and uses proof-producing HOL-function synthesis to discharge each deployment’s environment assumptions. The infinite-execution liveness limitation is discussed explicitly. - number: 5 compilation phases and 2 intermediate languages - number: 3 generated producer/filter/consumer endpoints - number: fixed payload σ>0; transmitted chunks σ+1 bytes - limits: Theorems assume projectable choreographies, all free variables initially bound, well-formed/uniquely named endpoint networks and totally correct CakeML implementations of local HOL functions. Values are byte strings; functions compiled at selected endpoints must be sufficiently executable (no arbitrary Hilbert choice/sets/quantifiers). Communication assumes a live backend, lossless delivery and unbounded queues; payload size σ is positive, chunks are σ+1 bytes. Machine-code liveness is subject to out-of-memory behavior in CakeML. The deployment uses C send/receive glue and seL4/CAmkES IPC, but its proofs are not formally connected to the kernel/platform proofs. Section 8.1 says the current compiler theorem guarantees global progress but does not exclude endpoint livelock for choreographies with only infinite paths; stronger fairness/receive-matching transfer remains unproved. No Internet/TCP deployment or bounded-queue result is supplied. - how much was read: most of it read - source - record id: `kalas-choreographic-compiler-2022` - MET CRDT explorative testing (2022) - title: MET: Model Checking-Driven Explorative Testing of CRDT Designs and Implementations - what: Presents MET, a two-layer workflow that model-checks CRDT designs in TLA+ and turns model-checking traces into deterministic implementation tests. A test manager controls message order through intercepted RPCs and compares code-level state traces with model-level oracles, targeting transcription and assumption bugs that design verification alone misses. The framework specifies CRDT operations and strong eventual consistency in TLA+, then coarsens the model by binding receive/do/send events while preserving conflict-resolution interleavings. Test inputs are extracted event schedules; test oracles are model state traces. A central manager hacks inter-replica RPCs for controllability and adds state-inspection APIs for observability. Practical CRDT-Redis Rwf-RPQ and Rwf-List studies expose a re-add/dummy-position transcription bug, a RemoveWin causal-delivery assumption mismatch, and a position-ID generator bug. The paper reports exact TLC trace counts, disk/time costs, model configurations up to three replicas, and argues from the small-scope hypothesis that three replicas expose most deep conflict bugs. - number: at most 3 server replicas - number: Rwf-RPQ 3–3: 883,413 traces, 1:53 model checking, 20:27 testing - number: Rwf-List 3–3: 5,085,147 traces, 51:05 model checking, 1:46:18 testing - number: Rwf-List 1–5: 69,343,957 traces, 9.64 GB TLC output - limits: The TLA+ network assumes eventual delivery exactly once, arbitrary reordering but no drops/duplicates/forgery, and non-crashing replicas. Coarsening deliberately omits some interleavings; model size is capped (at most three servers, limited requests/attributes) because state explosion is exponential. The small-scope hypothesis is empirical rather than a proof of all deployments, and MET requires manual identification of bug patterns, model/code alignment, test-manager hooks and state-inspection APIs. Tests inspect final states in practice, so unmodeled details and pruned traces can still hide bugs. - how much was read: most of it read - - record id: `met-crdt-explorative-testing-2022` - On the Correctness of Speculative Consensus (2022) - what: # Whole-paper read: On the Correctness of Speculative Consensus (authored by agents unless marked 🧑) Jelle Hellings, Suyash Gupta, Sajjad Rahnama and Mohammad Sadoghi; arXiv2204.03552v1,7April2022,25pages. This is a detailed paper proof for Proof-of-Execution (PoE), a Byzantine state-machine replication protocol that speculatively executes before committing. Its main contribution is the connection between early client replies, preservation across view changes, eventual consensus and recovery of client results. The proof is mathematical prose and pseudocode, not a machine-checked development. [Q0–Q3,Q5–Q10] ## System and required conditions There are fixed replicas R, Byzantine replicas F, and clients C. The paper writes n=|R|,f=|F|,nf=n−f and assumes n>3f, authenticated communication and deterministic transaction execution. Byzantine replicas can coordinate and clients may all be malicious. Most exposition assumes publicly verifiable digital signatures; digest variants need cryptographic hash assumptions, and threshold variants need threshold signatures. This paper defines f from the fault set; it does not separately explain how deployments configure an upper bound used for quorum thresholds. [Q1,Q11–Q14] Weak consensus means decisions never conflict, while termination and forcing new decisions require periods of reliable communication with some unknown bounded delay. The advertised asynchronous recovery therefore does not give unconditional progress during arbitrary loss or delay. Assumption4.6 bounds proposal size and the number W of prepared but uncommitted rounds. This makes a single finite message-delay estimate applicable to protocol messages. Timeout estimates must eventually grow sufficiently large. The displayed backoff argument also requires a positive initial estimate; multiplying zero cannot make it positive. [Q1,Q6,Q8] ## Normal execution and recovery The primary in view v has id=v mod n. A signed client request is proposed in a round. Each honest replica prepares only one proposal for that round/view and broadcasts Prepare. A certificate collects nf matching preparations. Replicas execute speculatively after all preceding transactions have executed and send Inform to the client. The client needs nf identical, view-specific Inform replies as a proof of execution. The familiar f+1 reply threshold for committed execution is insufficient here because speculative executions can be rolled back. Theorem4.1 establishes same-view uniqueness and normal-case service with a good primary, reliable communication and identical execution history. [Q2,Q3] The printed Theorem4.1 contradiction proof defines T_i=S_i minus Byzantine replicas, but then treats S_i as if all its members were honest and as if those full sender sets were disjoint. Byzantine senders can vote for both proposals. The usual intersection argument applies to T_i, the honest subsets, instead. This is a notation defect in that displayed proof, not a demonstrated counterexample to same-view uniqueness. [Q3] The four-replica failure examples distinguish omission by a faulty primary, a false accusation by a faulty backup, and network loss. Other replicas can observe the same messages in all three cases. A malicious primary can leave some honest replicas without a proposal while the client still receives a proof of execution using Byzantine replies. Recovery therefore must preserve what a client could already have observed, rather than treating an isolated replica's missing proposal as evidence that no execution occurred. [Q4] Check-commit is decentralized. An honest replica broadcasts its prepared certificate only after execution, while still in the view, and after all previous rounds have committed. Receiving a valid certificate lets a missing replica prepare and execute. A commit certificate collects nf CheckCommit messages. Theorem4.4 relates a client proof to eventual preparation at every honest replica, relates one honest commit to eventual commits/client proof given the shared prefix, and derives that a commit certificate entails nf−f honest executions plus commitments for earlier rounds. The first two statements assume reliable communication and all honest replicas in the view. Out-of-order proposals are supported; the proved base still commits in order. [Q5] View changes use three stages. A replica that detects failure rebroadcasts Failure. Receiving f+1 alerts induces an honest replica to join; nf alerts make it stop the old protocols and send ViewState to the next primary. State includes the latest commit certificate and every subsequently executed prepared certificate not rolled back. The next primary collects nf states and broadcasts NewView. Under reliable communication with delay ÎŽ, Lemma4.5 synchronizes entry into the proposal stage within2ÎŽ; Lemma4.7 delivers a good primary's new-view proposal within4ÎŽ of the first such entry. [Q6] The new ledger retains the committed prefix through LC, then the latest-view prepared request in each round through LP. Missing committed history is queried; speculative requests outside the selected ledger are rolled back; the new primary must repropose selected uncommitted requests before new rounds. Theorem4.10 inducts over views to preserve any request executed by nf−f honest replicas, including every request with a possible client proof or commit certificate. Assumption4.8, uniqueness of the request named by commit certificates for a round, is a temporary proof hypothesis subsequently discharged by Corollary4.11. It is not an additional final assumption. [Q6,Q7] Lemma4.12 supplies QueryCC/RespondCC recovery of missing committed history. Lemma4.13 and Theorem4.15 use increasing timeout estimates and eventual good primaries to establish resumption once communication is reliable. The worked ÎŽ=30ms example starts estimates7,3,5,1ms; three doublings yield56,24,40,8ms, and the four replicas need3,4,3,5 doublings respectively. Remark4.17 suggests a practical cap such as10seconds, but the theorem's unbounded-growth argument only carries to a cap when that cap exceeds actual reliable-network delay. [Q8] Theorem4.18 combines preservation, recovery and client-request forwarding to prove weak consensus. Honest clients repeatedly send an unanswered request to all replicas; replicas forward it or trigger view changes if it is not served. Suggested defenses against malicious clients include per-client forwarding limits and treating another request by the same client as evidence of a timely proposal. These are stated heuristics, not a quantified load-admission/fairness analysis. Recoverable non-Byzantine crashes require certificates in persistent storage; Remark4.19's recovery claim depends on enough replicas recovering. [Q9] Consensus alone does not guarantee a client obtains nf identical replies from one view. Example4.20 partitions honest replicas into A,B,C of sizes f,f,1 and alternates unreachable groups across three views. The same request becomes decided, but view-specific replies and commit certificates remain split, so no ordinary proof of execution forms. The repair is InformCC: after an honest replica commits, it can send the view-independent round/result to a retrying client. Now f+1 matching InformCC replies suffice because at least one is honest and committed execution is preserved. Theorem4.21 proves service when communication is reliable. Client request order is not automatically enforced; waiting for the first result or validating per-client counters supplies an extra application policy. [Q10] ## Complexity, variants and evaluation Figure1 compares seven protocols/variants; Figure12 gives13 message/certificate rows and three size variants. These are analytical accounting, not measured experiments. Base PoE takes two replica communication rounds before execution and three through check-commit; Linear-PoE takes three and five. The table's C parameter is request size, so expressions containing nC account for payload, not just the number of messages. Off-by-one terms are intentionally omitted in Figure1. Base prepared certificates have size O(nf+C); commit certificates O(nfÂČ+C), because different replicas may attach different prepared certificates. ViewState and NewView additionally depend on W. [Q1,Q11] Digests make most messages independent of request size but require explicit retrieval of missing request bodies and certificates. Replacing a certificate-carrying CheckCommit with a constant-size message requires f+1 matching senders before querying an honest holder. It does not eliminate the bounded-request-size assumption. Threshold signatures reduce certificates to constant size; by themselves they do not reduce all-to-all message counts. [Q12,Q13] Linear-PoE sends preparations through the primary. Its decentralized commit replacement rotates aggregator q=round mod n, commits a digest of the last n prepared certificates, and uses a separate n:(f+1) threshold scheme for recovery certificates before n:nf commit certificates. This prevents a fixed faulty aggregator from permanently hiding committed history. The pseudocode waits for commitments through round−n and covers the preceding n−1 rounds with the resulting certificate. Failure detection still broadcasts quadratically. The authors' belief that such communication cannot be eliminated in their recovery setting is not an impossibility proof. The linear variant is explained by construction; it does not receive a separate full formal refinement proof here. [Q14] The MAC-only variant is a proposed redesign of the two new-view stages by analogy with PBFT; the paper does not print that redesign. Out-of-order processing means proposing future rounds within W while earlier decisions finish. It does not remove the sequential execution dependence or the proved base's in-order commits. [Q15,Q16] The n=31,C=10KiB,M=256B bandwidth example reports322KiB for the base primary and315KiB with linear aggregation, approximately2percent savings. Direct substitution gives322.5KiB and315.7258KiB, about2.10percent. The primary still transmits the full proposal to every replica. The accompanying “roughly-1/3-th increase in latency” is inconsistent with the stated increase from two to three communication rounds: relative to two, that is50percent. This is a reader arithmetic observation, not an execution measurement. [Q14] Example5.6 assumes n=31,ÎŽ=15ms and1Gbit/s and prints22 sequential versus3028 out-of-order decisions/second. The22 figure follows1/(3ÎŽ)=22.22. The3028 figure is inconsistent with the printed bit/byte units: using10kB and256B gives about386.95 decisions/second; using10KiB gives378.51. The value3028.1 is obtained with10KiB if1Gbit/s is treated as10âčbytes/s. Either consistent byte interpretation still gives a bandwidth-only upper estimate, excluding computation and other bottlenecks. The paper's two-orders-of-magnitude statement is therefore not supported by its stated inputs. [Q16] Section6 compares PBFT, Zyzzyva, SBFT, HotStuff and MinBFT using communication rounds and simplified costs. It qualifies Zyzzyva/SBFT fast paths, assumes PBFT-like checkpoint costs for SBFT, and identifies trusted hardware/reliable communication for MinBFT. The HotStuff discussion and33 decisions/second example are this paper's account of a particular chained scheduling model, not an independently validated universal bound on HotStuff deployments. Its prediction that PoE outperforms PBFT “in all situations” exceeds what round counts alone establish: computation, rollback/recovery workload, implementations and resource bottlenecks are not measured here. [Q17–Q22] The introduction/conclusion claim an “analytical and experimental” evaluation. This saved25-page version contains analytical comparisons and hypothetical numeric examples, with no experimental setup, implementation measurements, repeated trials or measured plots. Its earlier EDBT2021 paper is reference18; results from that separate paper are not imported into this record. No proof assistant, model checker, Verus, verified Rust, TLA+ or LLM-agent experiment is reported. [Q0,Q17–Q24] ## Relevance and reading evidence For distributed verification, this contributes detailed proof obligations for speculative client observations, view-change preservation, the distinction between agreement and delivered service, and communication/recovery tradeoffs. My inference for proof-agent evaluation is to check eventual-reliability and bounded-window conditions, quorum intersections, temporary proof hypotheses, persistent crash state and units in analytical evaluation separately. A successful local proof script would not by itself establish any of those model-to-implementation connections. Read the complete25pages,40references,all15numbered figures including pseudocode and both tabular figures,all printed proofs/formulas/examples,and all25page renders. Official and inventory PDFs are byte-identical. No implementation or artifact source was linked as part of this paper's proof/evaluation and none was inspected here. This record does not audit the related ResilientDB implementation or preceding EDBT paper. No author execution/import, compiler/checker/prover/solver run or serialized scientific-result loading. - limits: n>3f/authentication/deterministicexecution/boundedproposal_window/eventualreliablecommunication/positivegrowingtimeouts/persistentcertificates/paperproofnotmechanized/noempiricalmeasurements/printedunitdiscrepancies - how much was read: most of it read - source - record id: `on-the-correctness-of-2022` - RFCNLP (2022) - title: Automated Attack Synthesis by Extracting Finite State Machines from Protocol Specification Documents - what: Extracts partial protocol state machines from RFCs with BERT/CRF. Translates them to Promela. Uses KORG/SPIN to synthesize attacks on safety and progress properties, checked against a canonical model. - number: six protocols extracted - number: TCP: 17 of 20 transitions correct or partly correct - number: automated TCP models find attacks on 1 property, canonical model on all 4 - number: Six protocols extracted; TCP: 17 of 20 transitions correct or partly correct - limits: The attacks work against models, not deployed code. Experts write the canonical models and four LTL properties each. A progress property can pass vacuously (hold trivially, because the condition that should trigger it never occurs). - how much was read: most of it read - source; notes: RFCNLP: learned extraction followed by model-level attack synthesis; notes: RFCNLP: learned extraction followed by model-level attack synthesis - record id: `rfcnlp-2022` - Simple-history snapshot linearizability (2022) - title: Polynomial-Time Verification and Testing of Implementations of the Snapshot Data Structure - what: Proves that data-independent single-writer snapshot implementations are linearizable exactly when all simple histories are, derives small automata for non-linearizable simple histories, and evaluates PAT verification and a linear-time simple-history tester. Simple histories allow only two distinguished processes to change their update value once from the initial value 0 to 1; all other processes keep 0. Theorem 5 uses differentiated histories, Anderson’s shrinking lemma and value renaming to reduce arbitrary algorithm correctness to simple histories. Theorem 10 characterizes simple-history correctness by no inversion, non-decreasing scan results and appropriate update pairs. Theorem 11 recognizes violations with O(n) states/O(n^2) transitions. Theorem 17 gives O(m n^4) verification for finite simple-history state spaces; Theorem 18 tests a fixed (i,j)-simple history in O(|h|). §6 removes vacuous reads/writes of always-zero registers. Two verification implementations compare PAT refinement on simple histories and PAT reachability with violation automata. §7 carefully identifies encoding/tool threats and distinguishes bounded exploration from full verification; its headline bug counts disagree between sections. - number: Theorem 17 O(m n^4); Theorem 18 O(|h|) for fixed-pair simple histories - number: §7.6: normal 14/30 bug cases, simple 17/30, polynomial 26/30 (headline totals differ) - number: polynomial peak 4.4GB vs simple 25.1GB vs normal 22.8GB - number: Bowman 3/4 processes checked without operation bound for simple/polynomial; correct versions of other algorithms generally remain bounded or infeasible - limits: The reduction requires data independence, single-writer per-process register segments, and history semantics preserving real-time precedence; it does not cover multi-writer snapshots or strong linearizability, both future work. Polynomial verification measures m, the finite automaton/state graph for all simple histories, not source-program size; state explosion remains. Linear-time testing covers simple histories, not an arbitrary already-recorded snapshot history. Experiments check only the (0,1) distinguished pair; complete verification requires all pairs unless justified by symmetry. Unbounded data types require per-process operation bounds. Algorithms and automata/specifications are manually encoded in PAT; cross-checking mitigates but does not remove errors, and PAT bugs were not independently mitigated. The proceedings supply proof sketches and refer full proofs to supporting material. Quantitative inconsistency: abstract reports 27 versus 14 bugs; introduction says 27 versus 16; §7.6 says normal 14/30, simple 17/30, polynomial 26/30. Table 1 is consistent with 26 polynomial cases and 27 cases for the union of simple and polynomial, which is a reading-based reconciliation rather than the paper’s explicit explanation. - how much was read: most of it read - - record id: `simple-history-snapshot-linearizability-2022` - TLA+ verification trifecta (2022) - title: Specification and Verification With the TLA+ Trifecta: TLC, Apalache, and TLAPS - what: Uses a TLA+ specification of asynchronous termination detection and Safra's ring algorithm to demonstrate complementary verification with TLC explicit-state checking, Apalache bounded/SMT and inductive-invariant checking, and TLAPS theorem proving, including refinement from the algorithm to a high-level state machine. The high-level module specifies active nodes, pending messages, termination detection, safety, liveness under weak fairness, and quiescence. Safra's algorithm adds white/black colors, message counters and a circulating token; termination requires an inactive node 0, no pending messages, white token/node, and zero accumulated counter. TLC finds 4,097 states for N=4,K=3 in the abstract model and 1.3 million (N=3,K=C=3,Q=9) or 219 million (N=4 with same bounds) in the algorithm model, exposing state explosion and a token-color bug. Apalache checks bounded prefixes, proves an inductive invariant for N=100 in 20 seconds, and checks quiescence for N=100 in 11 seconds. Refinement is checked for small N; TLAPS proves type, safety, liveness, and refinement for arbitrary instances, with an invariant proof taking about 230 lines and liveness/refinement about 245 lines. The conclusion recommends TLC first, Apalache for inductive invariants, TLC/random exploration for liveness, then TLAPS for higher confidence. - number: 4097 states for high-level TLC N=4,K=3 - number: 262145 states for high-level N=6,K=3 - number: 1.3 million states for Safra N=3,K=C=3,Q=9 - number: 219 million states and about 50 min for Safra N=4 - limits: The abstract model assumes a nonzero finite N, natural pending-message counters, asynchronous actions and weak fairness only for DetectTermination; stronger fairness is optional but unnecessary for the stated liveness. TLC requires finite bounds on pending messages/counters for exhaustive checking, so finite checks cannot establish arbitrary executions. Apalache handles bounded prefixes and inductive invariants but needs type annotations and human-discovered invariants; it cannot directly handle the fairness temporal property. TLAPS proof effort is manual and backend-dependent. The Safra case is a ring algorithm and does not evaluate throughput, deployment behavior, or other distributed topologies. - how much was read: most of it read - - record id: `tla-verification-trifecta-2022` - Verifying Hardware Security Modules with Information-Preserving Refinement (2022) - what: Knox checks information-preserving refinement (IPR): an HSM circuit implements a trusted functional specification through a trusted wire-protocol driver, and arbitrary digital wire observations can be reproduced by an emulator that only queries that specification. A shared relation ties initialization, functional equivalence and physical equivalence together, including recovery after arbitrary I/O. Solver-checked symbolic execution and guided state exploration cover complete C/assembly/Verilog circuits for PIN backup, password hashing and TOTP tokens. Records exact real/ideal switching semantics, reset relation, extra crash-safety obligation, quantified fixed-point/subsumption conditions, all eight hint primitives, tool and manual-efficiency trust, FRAM model versus BlockRAM prototype, each emulator construction and commit point, subtle timing/persistence and compiler/hardware bugs, every LOC/proof-time/overhead value, deterministic-spec limitation and scaling proposals. - limits: §2: Adversary controls/observes digital input/output logic levels every clock cycle through a compromised host, including malformed protocol traffic and interruption/reset. No physical device attack, violating electrical specifications, analog voltage measurement, electromagnetic/temperature/power side channel. The digital timing result is relative to the modeled circuit, not an all-physical-side-channel guarantee. §§3–4: Trusted functional specification includes intended API disclosures and driver wire protocol. IPR is relative to these inputs, not proof that the API itself has desirable cryptographic/security semantics. Refinement relation, emulator, hints and proof scripts are supplied but checked; toolchain/model/solver and physical implementation correspondence remain assumptions. §3: Host may alternate functional/physical views any time. Physical→functional reinitializes driver (resetting circuit here); functional→physical reinitializes emulator auxiliary state. Emulator sees only spec-level query results, not arbitrary secret memory. A single continuing spec state must account for physical effects across recovery, ruling out treating each interval as a new empty specification. §4: Relation R need hold between operations and after reset, not at every implementation cycle. Initialization must relate initial states. Functional equivalence includes return result and final relation for each driver operation, including no-op/background running. Physical equivalence matches all per-cycle output sequences and relates reset final circuit to resulting spec state. §4.5: PE maps arbitrary wire traffic to some sequence of legal spec operations. Additional crash safety restricts interrupted protocol-following operation to its old or new abstract state. These are separate obligations: a functionally correct and crash-safe program may still leak through the commit point. §5.1: Yield permits arbitrary cycle delays. Closed overapproximating symbolic-state sets, with checked subsumption, establish fixed points. Merge may overapproximate the union and reduce proof performance burden without discarding concrete behaviors. This is not finite sampling of host schedules. §5.2: STEP checks same-cycle outputs and reset recovery for circuit/emulator/spec symbolic states. SUBSUMED closes an already-covered branch; checked full exploration and closure establish coverage for unbounded-length input. Proof script failure may time out, be slow or fail coverage; success assumes sound framework/solver/model. §6: GCC compiles application C to RISC-V ROM and Yosys translates Verilog via SMT-LIB/#lang yosys to Rosette. The binary/circuit is proof subject; this does not mechanically verify GCC/Yosys/FPGA place-and-route or general CPU ISA correctness. Initial nonvolatile and volatile/reset semantics must match hardware. §7.1.1: Persistent model uses durable atomic32-bit FRAM writes in one cycle. Experimental board substitutes FPGA BlockRAM for external FRAM. Functional proof assumes modeled persistence behavior; experiment does not validate actual power-failure retention of physical FRAM. §7.1.3: Host supplies timestamps; nondecreasing checks reject rewind but do not establish real elapsed time or trustworthy clock. Audit deliberately reveals last timestamp and helps detect future-code requests. Equal timestamps are allowed by the less-than test. TOTP cryptographic security relies on chosen functional algorithms, not a new proof of SHA1/HMAC security. §8.1: Computational security requires efficient emulator so it cannot justify a key leak by factoring/brute force. Knox does not formalize/check efficiency: manual audit supplies this obligation. Case emulators reportedly use at most one spec query per circuit cycle and roughly equivalent computation. Do not describe whole cryptographic result as fully mechanically checked. §8.2: Specs deterministic; true hardware randomness unsupported. Stateful CSPRNG plus explicit host seed/add-entropy operation is proposed compatible design, not a fourth demonstrated/verified case. §8.3: Permitted leakage can be made explicit as spec leak operation; functional equivalence need not be checked for that adversary-only operation. Enlarging allowed leakage changes guarantee and needs policy review. §8.4: Monolithic proof avoids intermediate ISA specs and proves only particular HSM program/circuit behavior. Scaling to sophisticated CPUs/crypto is unresolved; no public-key signatures in three simple cases. Delayed fixed worst-case response with separate correctness/WCET reasoning is a future proposal. §9: Noninterference/declassification/secure-compilation comparisons concern formulations described by authors. Their limitations do not establish impossibility for all generalized information-flow or simulation frameworks. No direct distributed-protocol, Rust/Verus/TLA+ or LLM-agent experiment. §7.2: Single-threaded verification timings on one older CPU; no distribution of proof time or independent reproduction. Implementation latency at12MHz/2Mbaud, no confidence intervals/run count given. Claimed interactive suitability is author interpretation. Originality/relative-simplicity comparisons not independently surveyed. - how much was read: most of it read - source - record id: `verifying-hardware-security-modules-2022` - Yuen capstone (2022) - title: Verifying Distributed Protocols: From Executable to Decidable - what: This capstone studies translating TLA+ distributed-protocol models into Ivy so that finite model checking can be replaced by sound decidable verification. It gives computer-aided TLA+ and Ivy verification case studies for Suzuki–Kasami mutual exclusion and a substantial part of NOPaxos, and sketches translation rules. - number: Verdi Raft is cited as over 50,000 proof lines for 500 implementation lines (p.2 footnote) - number: Suzuki–Kasami TLA+ model checks one mutual-exclusion safety property plus eight supporting invariants (pp.15–16) - number: Suzuki–Kasami Ivy proof uses five conjuncts in an inductive invariant (pp.19–20) - limits: The work verifies abstract protocol models, not deployed Rust or Go implementations. The translation is only a framework sketch; the report says some TLA+ features and liveness details still need manual re-expression. - how much was read: most of it read - source - record id: `yuen-capstone-2022` - AWS S3 automated reasoning blog (2021) - title: How automated reasoning helps Amazon S3 innovate at scale - what: AWS describes S3 automated reasoning: mathematically specified properties, lightweight model checking and property-based testing for ShardStore Rust, with validation on every deployment and failure scenarios including device and Availability Zone failures. - number: S3 is described as over 300 microservices; blog says traditional proof can require up to 10x more effort - limits: Industry account; claims are not independently audited here and the model abstracts implementation details. - how much was read: most of it read - source - record id: `aws-s3-automated-reasoning-blog-2021` - Brief Announcement: On Strong Observational Refinement and Forward Simulation (2021) - what: Shows by example that ordinary forward simulation need not preserve hyperliveness or strong observational refinement when finite and infinite traces are allowed. Defines progressive forward simulation with a well-founded decrease on concrete steps mapped to an empty abstract sequence; states that it implies strong observational refinement. Full theorem proof is external. The counterexample composes a forward-simulated LL/SC implementation with fetch-and-add. A particular LL/SC implementation permits SC failure merely because another thread executed LL, without any intervening write. Alternating threads can therefore prevent both operations from returning. The formal scheduler requirement is nonempty enabled actions after every consistent finite trace, plus object determinism; it does not impose per-thread fairness. Definition 1 forbids infinite internal stuttering through a well-founded concrete-state order. Necessity of the progress condition is future work. - limits: Finite and infinite traces; programs composed with labelled transition-system objects; deterministic admissible schedulers. Specific implemented LL/SC semantics permit the counterexample; it does not assert every hardware LL/SC behaves this way. Full proof of Theorem 2 deferred to external reference [3]; no machine-checked artifact or empirical measurements in supplied brief. The motivating text says LL at F2 although pseudocode labels LL at F1; record interprets the operation rather than reproducing that line typo. - how much was read: most of it read - source - record id: `brief-announcement-on-strong-2021` - DistAI repository (2021) - title: DistAI: Data-Driven Automated Invariant Learning for Distributed Protocols - what: DistAI simulates a protocol, learns candidate invariants from traces, and refines them with Ivy and Z3 counterexamples until validated. The README gives commands for two-phase commit, distributed lock, database chain replication and blockchain. - number: solves 13 of 14 protocols; Paxos fails - number: verifies 13 common distributed protocols automatically - number: 14 protocols - number: Suite: 14 distributed protocols written in Ivy (e.g. Paxos, two-phase commit, Chord, Ricart-Agrawala) - limits: The README warns that its parser does not support the full Ivy 1.7 grammar; repository instructions and reported outputs were not rerun. - how much was read: most of it read - source - record id: `distai-repository-2021` - everquic (2021) - title: A Security Model and Fully Verified Implementation for the IETF QUIC Record Layer - what: EverQuic has two parts. The record layer is in F*/Low*, proved memory safe, functionally correct and cryptographically secure, and extracted to C. The transport is in Dafny, proved memory safe and type safe, with no integer overflow and local termination. - number: about 10K F* lines / 6K extracted C; 10K Dafny / 13K C++ - number: about 20 person-months including training - number: Fig 9: transport 10,223 lines, 19m46s; record layer 9,836 lines, 16m30s (component rows exceed the printed total) - number: 1.98 GB/s at 1300-byte MTU; small transfers about 2x slower, large about 21% slower than ngtcp2 - limits: It is not end-to-end protocol verification. It has no proof of eventual delivery. The payload offset is declassified, which may leave a cache side channel. - how much was read: most of it read - source; notes: Related work absent from the first pass: verified QUIC record layer (2 - record id: `everquic-2021` - Failure Analysis of Hadoop Schedulers using an Integration of Model Checking and Simulation (2021) - what: Combines CSP/LTL modeling and PAT model checking with workload-trace simulation to analyze Hadoop FIFO, Fair and Capacity schedulers for schedulability, fairness and resource-deadlock properties and to identify likely task failures before deployment. The paper models JobTracker/NameNode, TaskTracker/DataNode, data locality/placement and speculative execution; checks thresholded LTL goals with PAT, maps witness states to OpenCloud traces using TP/TN/FP/FN and a detected-failures metric, and simulates a 64-to-100-node resource change. It reports correspondence between model and real scheduler outcomes, symmetry-reduction scaling, failure causes (timeouts, speculation, queue delays) and scheduling recommendations. - number: First-month verification explores 11,086K states/3724s without symmetry reduction and 742K/1619s with it - number: six-month workload reaches 17,692K states in about 4346s with symmetry reduction - number: detected failures range 42%–78.57% without and 42%–78.91% with symmetry reduction; Fair schedulability 50% gives 77.04% DF - number: adding nodes reduces Fair failure rate from 5.88% to 3.54% (2.34 percentage points, 39.79%) - limits: The model is an abstraction: recovery mechanisms, network congestion, resource assignment details and unknown OpenCloud scheduler type are omitted or approximated. Results depend on chosen workload traces, thresholds, three scheduler models and PAT search strategy. False negatives/positives show model-versus-runtime mismatch, so “detected” failures are predictive rather than proofs about all Hadoop executions. - how much was read: most of it read - - record id: `failure-analysis-of-hadoop-2021` - Failure-aware actor Synod progress (2021) - title: Verification of Eventual Consensus in Synod Using a Failure-Aware Actor Model - what: Introduces a predicate-fair failure-aware actor model (FAM) and mechanically verifies sufficient asynchronous conditions for eventual progress of the basic Synod protocol without a unique leader. The report formalizes proposers, acceptors, quorum predicates, message transitions and actor availability/failure in an asynchronous actor semantics. It states fairness axioms for send/receive, nonfaulty-agent assumptions, and P1/P2 proposal-number conditions preventing higher-numbered interruption. Lemmas show eventual promises and votes from a nonfaulty quorum; Theorem 1 derives that some proposal is eventually learned as chosen. Athena and SPASS mechanically check the proof sketches in roughly 6000 lines. The appendices include the actor-language operational rules and code correspondence discussion. - number: about 6000 lines of Athena code - number: quorum conditions use >2/3 only where specified by application context - number: four Synod message types: 1a, 1b, 2a, 2b - limits: Safety is inherited from Synod; the result is eventual progress, with no time bound. The sufficient condition CND assumes a nonfaulty proposer eventually ready to send a P1/P2 proposal to a quorum of nonfaulty acceptors. FAM assumes stable storage, uncorrupted but asynchronous messages, and fairness axioms; failures can be temporary or permanent, but progress requires the relevant actors eventually available. The proof does not use generic predicate fairness directly, instead relying on a system-specific uninterrupted-proposal property. Applicability to UAM timing requires additional bounds not proved here. - how much was read: most of it read - - record id: `failure-aware-actor-synod-progress-2021` - Fault-Tolerant Replication with Pull-Based Consensus in MongoDB (2021) - what: Describes MongoDB replication as a pull-based Raft derivative: secondaries fetch from any sync source, report durable positions through relayed UpdatePosition acknowledgments, and receive commit points separately. Safety requires the acknowledging server’s current term, rather than counting copies of an entry alone. Gives a quorum-intersection argument and reports TLA+ model checking, controlled chaining/failover experiments and Atlas production telemetry. Records the five-server stale-primary counterexample, acknowledgment-term repair and leader-completeness argument; log overlap/rollback and initial-sync details; weak versus linearizable options; election/priority/read extensions; all numerical benchmark/production claims and their measurement boundaries; literal appendix pseudocode inequalities. Formal evidence is a proof sketch plus reported model checking without configuration/results supplied in the paper, not a machine-checked implementation theorem. - limits: A single replica set replicates a log; sharding is orthogonal. Only the primary accepts writes. Normal election uses one persistent vote per term and the Raft log up-to-date order (last entry term then timestamp). OpTime=(entry term, logical timestamp) is lexicographically ordered; timestamps are logical positions, not a physical clock assumption. Correct durable storage persists term/vote/log before RPC responses. Byzantine nodes, corrupted storage and arbitrary duplicate IDs are outside the presented protocol. Safety follows Raft-style log/election assumptions despite asynchronous delay. Availability requires a communicating majority, eventual message/protocol progress and an electable primary; no partition-wide availability or deterministic asynchronous election termination is proved. Persistent term/vote/log are distinguished from volatile lastCommitted/lastApplied/lastPosition. The paper describes crash/restart operation and WiredTiger rollback, but does not prove implementation/storage refinement. PullEntries includes the last local timestamp and returns an overlapping entry plus newer entries. The first returned OpTime must match the last local OpTime before appending. A newer divergent branch triggers last-common-entry search, log truncation, rollback and replay. Same-log requests wait up to5 seconds by default; streaming database cursors batch data and avoid request-per-entry overhead. The data source need not be the primary. UpdatePosition relays per-member maximum known positions toward the primary, batches between forwarding rounds and permits one in-flight request per sync source. Commit requires a majority supporting the candidate entry and its current leader term. A higher RPC term updates currentTerm and converts the receiver to follower before commitment; the global higher-term rule covers UpdatePosition even though its local receiver block only lists merge/forward. Five-server safety counterexample is specific to separating replication from acknowledgment: a term3 voter may still pull term2 data from a stale primary. Counting durable copies alone can falsely commit an entry later overwritten by the term3 leader. Acknowledgment server terms stop the stale leader before committing. The quorum argument relies on Raft log matching/leader completeness and election restrictions; it is a paper proof sketch rather than a full separately supplied inductive proof. Authors report writing TLA+ and applying model checking (§3.3, ref33), but provide no model configuration, bounds on nodes/entries/terms, explored state counts, explicit checked invariant list, model-checking output, discovered bug count or implementation-refinement result. Unit/integration/fuzz/fault-injection testing is reported without quantified coverage. External TLA+ source was not inspected for this record. Sync-source selection only chooses a newer observed log position and checks again on PullEntries responses because the source can roll back. The paper claims cycles can never form. A per-choice newer condition alone does not constitute a proof for time-varying distributed observations; no concrete cycle counterexample was constructed and no implementation failure is asserted. WiredTiger speculatively applies entries before commitment. Stable timestamp is the locally known commit point and must not exceed the common-branch timestamp during rollback. Restore stable data then replay through the common entry. Weak-consistency clients can see/acknowledge speculative data; durability/linearizability statements must be restricted to appropriate strong options. Legacy mmap rollback uses different mechanisms omitted from the paper. Initial sync uses a possibly inconsistent collection scan rather than a snapshot: record source applied start, clone, record applied end, then replay from start beyond the recorded end point; restart on source failure. Log retention defaults to5% of free disk at startup. Insert-existing/update-or-delete-missing rules and primary-side absolute assignments make replication operations idempotent. Correctness also needs sequence ordering, schema/scan assumptions and sufficient log retention; single-operation idempotence alone does not prove every arbitrary sequence/clone state correct. A new primary can fetch old-term entries during catchup until it creates a new-term entry, sees no newer source data, or times out. This preserves weakly acknowledged uncommitted data best-effort, not guaranteed durability. Arbiters vote without holding data: a primary-secondary-arbiter set after primary failure may accept weak writes but cannot commit majority writes. Up to50 total members and7 voters; nonvoters do not count toward election/commit majorities. Planned handoff pauses writes and catches up an eligible secondary before immediate election. Priority elections use a dry-run/pre-vote to avoid needless higher-term disruption by stale candidates. It does not resolve all partition-induced repeated elections. Default election timeout10s; Atlas telemetry mentions10 or5s. Linearizable reads occur only at the primary and wait for a synchronization round trip, optionally piggybacking a concurrent oplog entry; a complete read linearization/current-term proof is not supplied. Printed Raft Appendix A p701 reverses two inequalities: AppendEntries rule1 says reject term>currentTerm; rule5 says change commitIndex if leaderCommit<commitIndex. The first reverses the conventional stale-term test (interaction with the global higher-term rule depends on evaluation order), and the second permits commit regression if followed literally; these are apparent errors in the printed comparison pseudocode, not a demonstrated MongoDB implementation defect. PDF visual checks recover >= lost by text extraction in Raft send/commit tests and MongoDB majority-position comparison. Printed MongoDB client response condition p702 is strict lastCommitted>entry.OpTime, while majority replication comparison is >= in the PDF. Literal strict response could wait for a later entry after its own entry commits, stalling an isolated write absent another/background entry; body says updates return when committed. lastApplied is described as monotonic despite rollback; distinguishing logical progress from speculative physical application needs clarification. Neither issue was reproduced in code. Controlled tests use AWS m5d.2xlarge (8vCPU/32GB/local SSD), five server VMs (three US East Virginia/two US West Oregon) and two client VMs. Primary and committing majority are East, so strong writes need not wait for WAN. Closed-loop clients replace a random document among1M documents each with one1000-byte string; vary thread count. Chaining forces one West secondary through the other West secondary, other secondaries pull primary. These settings do not isolate arbitrary topology or WAN quorum placement. Unthrottled chaining on/off throughput is approximately the same (~12–13k ops/s); primary is CPU bound with >250k context switches/s and oplog reads about5% of one core. Chaining halves cross-datacenter traffic, not total traffic or commit latency generally. In additional three-node tests (placement unspecified) with200Mbps primary limit, approximate plotted saturation increases from8800 to13200ops/s and p50 from60ms down to40ms. No repeats/confidence intervals or raw data reported. Single five-node same-datacenter failover trace,64 clients: old primary crashes at10s, election timeout10s, throughput drops around12s and recovers around21–23s; old primary recovers40s without clear throughput disturbance. This is illustrative, not exhaustive fault coverage. Version4.4 versus3.6 compares full releases, including journaling/other optimizations, so performance change cannot be attributed only to consensus protocol. Claims about old protocol assumptions/split-brain are authors’ characterization, not independently reproduced. Atlas June2020 version fractions26.86/44.17/28.54% sum99.57%; the remainder is unspecified. Failover causes89.03% planned/6.15% priority/4.82% timeout. The sample sizes, cluster selection/exclusions and variance are not given. Plotted outage CDFs stop at95%, so no extreme-tail claim follows. Production Local Write Unavailability starts at election and ends when the new primary accepts writes; Majority Write Unavailability ends when the first step-up no-op commits. These omit earlier old-primary pause/unresponsiveness and are shorter than client outage. Planned p95=.37/3.08s; timeout p95=6.41/10.24s plus typically10 or5s before election. The authors’ proposed heartbeat explanation for1/2s clusters is a belief, not a measured causal test. Week-long replication telemetry reports50% of replica sets below8.08MB/day,95% below7.94GB/day,top5% generating>92.6% of traffic. Figures11/12 instead label host count, leaving the unit of aggregation unclear. Monthly300–5000 savings uses the paper’s historical AWS0.01–0.147/GB estimate, not current pricing or observed customer bills. Appendix B setup describes closed-loop1000-byte inserts, while Table1 describes an adapted TPC-C benchmark with100 clients/100 warehouses and five transaction types. Preserve this workload-description inconsistency. MongoDB denormalized/query/transaction semantics are used; this is not a certified standard TPC-C result. Three server VMs/one client VM are in one availability zone, no bandwidth limit. Total throughput1453.47→1506.98 (~3.68%); modest gain is attributed to CPU offload. Primary total traffic15.56→11.70MB/s; per-secondary oplog traffic4.05MB/s. Difference3.86MB/s need not exactly equal4.05 under changed throughput/rounding. Figure8 whole-version comparison has mixed outcomes:4.4 versus3.6 relative throughput approximately190% at2 clients,130% at8/1024,89% at64/256 and slightly below100% at128. These are graph estimates, not raw benchmark cells. Gains and regressions coexist; neither is attributable solely to consensus because full releases differ. - how much was read: most of it read - source - record id: `fault-tolerant-replication-with-2021` - GoJournal: a verified, concurrent, crash-safe journaling system (2021) - what: GoJournal provides concurrent, crash-atomic journal operations for Go storage applications. Perennial 2.0 (Iris/Coq) proves its implementation with layered logically atomic crash specifications, ownership lifting, crash-aware locks and crash framing. SimpleNFS demonstrates a verified restricted NFS client application; unverified GoNFS supplies performance/functionality evidence. The proof makes operation preparation sequential and crash-free while retaining explicit locking/commit/recovery obligations. Records the local/durable predicate transfer and commit failure/crash outcomes, post-crash resource generations, ReadBuf wand/dirty requirement, logical-log boundaries and lower-bound abstraction, lock-free stale-block invariant and header callback. Includes every LOC/proof cell, concrete absorption race/fix, slow-SSD/scalability failures, benchmark/configuration asymmetry and complete artifact appendix rather than treating fast-NVMe throughput as a universal result. - limits: §4: Disk reads/writes are synchronous atomic 4KB sectors, including crash-time atomicity. Executable code must follow Goose-generated Perennial semantics; the paper assumes this correspondence. Arbitrary execution/recovery crashes are modeled. Hardware, compiler/runtime, translation correspondence and proof checker remain in the trust argument; this reading did not independently audit or rerun them. §§1,3.1,4: Journal operations do not implement automatic concurrency control. Caller must exclusively own/lock every accessed object, including reads, until completing its use. SimpleNFS proves its locking; functional GoNFS is unverified and its locking is trusted even to obtain atomicity, and that trust alone says nothing about full NFS conformance. No theorem transfers SimpleNFS correctness to GoNFS. §§1,5.6 fn3,8.1: Internals implement deferred durability and lower-level specifications can express Commit(false), but the presented top-level separation-logic API requires immediate flushing with Commit(true), sufficient for SimpleNFS. Main performance evaluation uses stable GoNFS writes although Linux can exploit unstable writes. Separately reported unstable-write rerun and appendix comparison are distinguished. §§1–2: No floating commit blocks, database-style undo, asynchronous-disk/log-bypass optimization or sophisticated B-epsilon-tree data structure. Objects must fit supported operation sizes; Commit can fail if operation is too large. Abandoning an uncommitted buffered operation is a logical ownership restoration, not undoing an already journaled operation. §§3.1,5.1: SimpleNFS is a core subset with GETATTR, SETATTR, READ and WRITE examples, not a fully verified NFSv3 implementation. Each file occupies one block; writes reject count/data-length mismatch, arithmetic overflow, beyond-block size and a starting offset beyond current EOF. Inode and data block must update together; per-inode locking owns its uniquely associated block implicitly. §§4–5: Hoare triples establish safety and postconditions if calls terminate; these are not stated liveness, fairness, deadlock-freedom or throughput guarantees. Toy-client idempotent recovery specification covers arbitrary crash/recovery repetitions within the model, not guaranteed completion under endlessly recurring crashes. §5.2: Lifting changes ghost ownership, not physical disk. Operation-local ownership permits access while durable_pred snapshots the original footprint. Exclusivity applies only to owned objects; other threads may commit changes elsewhere, including disjoint objects sharing a block. Whole-disk immutability throughout an operation is not assumed. §§5.3–5.5: ReadBuf returns mutable-buffer ownership and a separating implication to recover the operation predicate with the new contents. Footnote2 omits the actual SetDirty obligation from the displayed simplified spec. Crash-aware lock clients must preserve next-generation durable recovery obligations during every critical-section step; ordinary lock release invariants alone are insufficient. §5.5: Crash framing removes access to crash-resource Ic during proof of f and restores it afterward. It does not allow arbitrary durable-state mutation to ignore its crash consequences. Operation preparation uses only local buffered resources while the original durable footprint is framed away. §§6.1–6.3: Lock-free describes selected reads/disk-I/O regions; commits serialize read-modify-write under a global lock, and logger/installer take locks to obtain monotonic bounds. No general lock-free progress theorem is claimed. Separate header ownership allows concurrent installation/logging without holding locks during I/O. §7: Authors report all Perennial/GoJournal/SimpleNFS proofs Coq-checked and Print Assumptions used to check completeness. The article supplies specification rules and proof ideas rather than full in-paper derivations. Public artifacts were not replayed here, so this record distinguishes reported machine checking from independent reproduction. §8.1: Performance uses unverified GoNFS against Linux5.12.3 NFS/ext4 data=journal; RAM backing differs (Go array versus ext4 file in tmpfs). Desktop XeonE5-2640 20cores2.4GHz/64GB/Samsung850PRO256GB and i3.metal72vCPU/512GB/1.9TB NVMe; one socket, turbo/sleep/Spectre mitigations disabled. No run counts, confidence intervals or variance bars are specified in the main results. §§8.1–8.2: At least90% claim is for these workloads on RAM/NVMe and smallfile/app on SSD; stable largefile on slow SSD falls below20%. Linux exploits unstable writes whereas stable GoNFS serializes same-inode writes and flushes64KB batches. NVMe scalability advantages are not causally isolated; authors offer possible design differences. SSD GoNFS batching limits scalability after about7clients (prose says cores, axis clients). §§8.3–8.5: 44/462 code lines needing crash reasoning and proof:code ratios are empirical source-structure proxies, not a controlled human-effort study or time measurement. WAL/JRNL STS and ownership abstraction rows share implementation code, so their printed merged ratios combine proof rows. Framework20,260Coq lines are additional to application/library proof counts. Appendix A.1–A.6: VM artifact reproduces LOC tables and selected plots, not every expanded main-paper graph. Main performance evaluation was expanded after artifact review. VM results use MacBookPro i9-9980HK2.4GHz/8hostcores, VirtualBox4cores/8GB with0.4ms barrier, so differ from carefully controlled physical machines. Pre-generated Goose model is included along with regeneration instructions; its presence is not a proof of translator correctness. §8.3/figures2–3: Printed reference to Figure3 lines6–8 for lock acquire/release actually matches Figure2. Figure2 uses txn.Commit despite naming the local variable op; §5.7 prose starts Begin before acquire while code acquires first. Reader treats these as presentation inconsistencies, not evidence the checked source has those exact errors. No Verus, TLA+, Rust implementation or LLM-agent evaluation is performed. §7 Figure12: Printed Go component rows sum to1,347 (109+555+133+121+118+311), while printed GoJournal total is1,345. Both transcribed as printed; proof rows sum correctly to25,797 and framework rows to20,260. No source correction is inferred. - how much was read: most of it read - source - record id: `gojournal-a-verified-concurrent-2021` - HybridSynchAADL: Modeling and Formal Analysis of Virtually Synchronous CPSs in AADL (2021) - what: An AADL subset and OSATE plugin model synchronous hybrid control systems with bounded clock deviations and sampling/actuation intervals. Generates Maude-with-SMT models, merges symbolic states and checks bounded invariants/existential reachability using Yices. Prior Hybrid PALS equivalence transfers suitable properties to distributed implementations under infrastructure bounds. Defines allowed communication and environment/controller composition, separates symbolic proof from randomized bug search, gives a drone model with explicit timing and manually chosen safety/reachability properties, and compares tools with achieved time bounds as well as runtime. Demonstrates that missing initial velocity constraints produce a collision despite a rendezvous witness. - limits: §§1–2/8: prior PALS/Hybrid PALS requires infrastructure bounds on clock skew, network delay and execution time and a suitable round period. PALS distributed construction stuttering-bisimilar to synchronous design; hybrid extension cited to reference8. This tool paper does not reprove equivalence, give a verified deployable implementation generator or establish hardware/network timing bounds. §2: physical variables evolve by mode-dependent ODEs; clocks have bounded deviation from real time. Sampling/actuation tied to local clock. Synchronous abstraction retains imprecise physical sampling/actuation times, rather than deleting all timing uncertainty with network interleavings. No arbitrary failures/unbounded delays/Byzantine nodes covered by this model. §3: environments cannot connect to each other or enclosing systems. Controller-to-controller communication uses only data ports and delayed connections so outputs sent one round available at next iteration start. Controller/environment interactions instantaneous at chosen sampling/actuation instants. This is a restricted architecture, not unrestricted AADL/network semantics. §3: continuous dynamics specified as ODE strings or closed-form real functions, while controllers use hierarchical systems/processes/threads and Behavior Annex. Real-valued interpretation despite Base_Types::Float syntax does not establish machine floating-point rounding correctness. §4: invariant universally quantifies all states reachable from every allowed initial state within bound. Reachability existentially asks whether some allowed initial state reaches goal within bound. A rendezvous witness therefore does not establish universal eventual convergence, fairness, unbounded liveness or safety. §4: randomized simulation selects concrete sampling/actuation/nondeterministic choices until counterexample; absence of observed bug is not a proof. Portfolio runs simulation and symbolic analysis in parallel and returns first outcome. Only completed symbolic bounded analysis can certify absence within the chosen bound. §4 footnote1/§8: symbolic analysis currently limited to polynomial continuous dynamics by Yices2 capabilities, including nonlinear polynomial cases. General ODE language expressiveness exceeds current symbolic backend; integrating dReal/Flow* remains future work. §4: Maude-with-SMT semantics and implementation details in technical report33. State merging uses disjunction/generalization to reduce iteration successors. No mechanized correctness proof of AADL translation, state merge or complete toolchain reported here. Trust includes modeling/translation, Maude and SMT solver. §5: collision property uses componentwise horizontal AND vertical distance<0.1, not Euclidean radius0.1; gather threshold pairwise distance<1 in prose. Initial condition constrains four positions only, not velocities; safety counterexample expected. Velocity-restricted proof reported only by reference to detailed report. §6: comparisons use simplified controllers because most other tools timeout on complex versions; not full controllers uniformly compared at large scale. N=2,3,4 and finite horizon up to 500 ms; no parameterized proof for arbitrary N. §6/Table 1: times are accompanied by achieved B in units 100 ms. True-invariant entries show largest successfully proved bound, false-invariant entries smallest bound yielding a counterexample. Different B values preclude naive runtime speedup comparison. HSAADL true Rend_double reaches B=4, not B=5. §6 footnote3: Flow* counterexamples can be spurious due Taylor-model overapproximation; smaller counterexample bounds do not automatically reveal real earlier bugs. dReach default precision used but numeric delta omitted. No uniform concrete-witness validation protocol described for all backends. §6: HyComp excluded for nonlinear double-integrator models because it does not support those dynamics. Others encode synchronous designs as three-mode hybrid automata; HYST flattening for Flow*/dReach. Thus performance comparison partly includes representation/backend choices, not a controlled isolation of state merging. §6: one-hour timeout, Intel Xeon 2.8GHz/256 GB; specialized Maude/Yices 2.6, SpaceEx PHAVer/STC, Flow* adaptive steps/Taylor order 1 or 2, HyComp BMC. No repetitions/variance, full tool versions, numeric dReach precision or exact model parameters here. Detailed complex benchmarks and state-merging ablation deferred to report. §§4–6: ~6200 Maude and 8600 Java/Xtend LOC are implementation size, not proof size. No artifact execution or independent reproduction. Results for selected modeled CPSs do not establish safety of physical drone deployments or verified Rust/Verus source. - how much was read: most of it read - source - record id: `hybridsynchaadl-modeling-and-formal-2021` - IC3PO symmetry verifier (2021) - title: On Symmetry and Quantification: A New Approach to Verify Distributed Protocols - what: Introduces IC3PO, symmetric incremental induction extending finite-domain IC3/PDR. It infers the quantifier prefix of inductive invariants from protocol symmetries, then finds a finite cutoff whose proof generalizes to all instance sizes. Logical orbits map symmetry classes to quantified clauses; symmetry-aware clause boosting avoids searching fixed quantifier templates. A cutoff procedure checks that orbit representatives cover all relevant instances. IC3PO handles universal/existential alternations and produces compact quantified invariants automatically. - number: Evaluation set 29 protocols; IC3PO solved all 29, versus I4 13, UPDR 14, fol-ic3 23 - number: 10 protocols solved by all: IC3PO total 232s/85 invariant assertions/12,160 SMT queries - number: IC3PO 1-hour timeout, 32GB memory, Intel Xeon X5670; Z3/Yices/CVC4 backends - number: ToyConsensus(3,3,3): IC3PO 192 SMT calls and 13 CTIs versus I4 7,814 calls and 443 CTIs - limits: Focuses on parameterized protocols whose sorts are sets of indistinguishable constants; ordered sorts and integer arithmetic are future work. Safety only, not liveness. Finite cutoff correctness depends on symmetry assumptions; evaluation uses bounded protocol models and SMT solver timeouts. - how much was read: most of it read - source; notes: papers inspected - record id: `ic3po-symmetry-verifier-2021` - KVServer ITrees/VST (2021) - title: Verifying an HTTP Key-Value Server with Interaction Trees and VST - what: Verifies memory safety and termination-insensitive functional correctness of a hand-written C key-value server against an interaction-tree implementation specification. Proves user-level VST socket specifications refine CertiKOS kernel specifications, and supplies a reusable verified C string library. Section 3 decomposes the event-driven server into String, Buffer, Socket, Parse, KeyValue, Hashtable, Connection and Server APIs. The C HTTP parser refines an executable Gallina parser; the C hash table refines a Gallina model; top-level main relates the event loop to ITree.iter run_server. Section 4 translates higher-order VST assertions through first-order dry specifications on CompCert memory and external state, then connects those to CertiKOS socket/log state. Each successful ITree event matches a kernel log event; failed calls leave the permission tree unchanged. Refinement exposed a missing bind port-range precondition. Section 5 defines permission-aware C-string predicates and indexed strstr/strchr/strcasestr wrappers that discharge pointer-subtraction obligations once. Sections 6–7 precisely identify the absent high-level request/response refinement and describe a specification-derived test client finding a liveness bug. - number: 8 verified modules - number: 3,097 implementation lines; 7,033 specification lines; 28,998 proof lines - number: 34 string functions: 17 POSIX + 17 non-POSIX - number: parse_request: 73 C / 50 spec / 921 proof lines - limits: Single-threaded event loop handles concurrent client connections. HTTP subset is GET and POST with Content-Length string payloads, not full HTTP/1.1. VST proves partial correctness, so divergence and liveness are outside the guarantee. CertiKOS socket implementation/TCP-IP stack remains unverified; only its specification is connected. The paper lists proofs for socket, bind, listen, accept, send, recv, close, shutdown and htons; do not infer a proof of the entire POSIX interface or all OS implementations. No proof connects the low-level verified model to the high-level whole-request linear specification used for testing; that refinement/linearizability remains future work. Module abstraction discipline is manually maintained because the used VST version exposes C struct layouts. Crash safety and persistence are not established. - how much was read: most of it read - source - record id: `kvserver-itrees-vst-2021` - MongoRaftReconfig announcement (2021) - title: Brief Announcement: Design and Verification of a Logless Dynamic Reconfiguration Protocol in MongoDB Replication - what: Introduces MongoRaftReconfig, a MongoDB membership reconfiguration protocol that separates configuration state from the main operation log. The conceptual config log retains the latest configuration rather than its full history. Reports finite-instance TLC safety checking of a high-level TLA+ model, and a five-node experiment showing rapid recovery of majority writes after replacing failed nodes. General unbounded safety proof is future work; announcement does not print the transition rules or model-check configurations. Explains why update-only configuration state can be represented without a historical config log, and why membership changes need not wait for a stalled database oplog. Separates bounded model checking from unbounded proof, abstract specification from implementation, and simulated Raft-in-MongoDB comparison from benchmarking an independent Raft implementation. Preserves failure replacement procedure and timeout meaning in the latency plot. - limits: MongoDB replica membership changes are the target. Configuration state is managed in a separate replicated state machine alongside the database operation log (oplog). Logless describes configuration management, not elimination of the database operation log. The latest configuration version is retained; details of version ordering, election and membership guards are deferred to the full paper. Update-only config state motivates discarding full config history. Independent commitment means one log need not wait for earlier entries in the other to commit. It does not establish that arbitrary independently chosen configuration updates are safe: the announcement provides no complete algorithm, quorum-intersection conditions, legal reconfiguration sequences or state transition relation from which to prove that stronger claim. Design seeks to preserve legacy MongoDB structure while improving/generalizing single-server Raft reconfiguration. Historical unsafe legacy cases and a subsequently fixed Raft bug motivate the work; no counterexample execution or affected/current software version is printed. These historical statements are not evidence that current MongoDB/Raft releases remain unsafe. TLA+ model is deliberately high level and ignores lower protocol/system details. That the specification language imposes no communication model is a statement about language flexibility; it supplies no particular network reliability, timing, persistence, crash recovery or fault model for this protocol. Those assumptions need inspection of the linked specification/full paper. TLC is explicit-state finite-instance model checking. Authors report correctness for fixed finite parameters, without printing the parameter values, invariants, state counts, exploration completeness details, checker version, runtime or logs. Five experimental nodes are not a stated TLC bound. No independently rerun model check or state-space audit was performed here. The announcement explicitly says checking does not establish correctness for an unbounded number of servers and calls a general TLAPS safety proof future work. Introductory provable-correctness wording must therefore be read with that narrower reported evidence. No general inductive safety proof, verified implementation refinement, executable-code proof or liveness theorem appears in these four pages. Experiment begins with a five-node replica set and periodically simulates failure of two nodes, removes them and adds two healthy nodes. Measures majority-write latency and configuration completion during periodic degradation. Does not claim availability under arbitrary failures, network schedules or loss of all majorities. Comparator is a simulated version of Raft reconfiguration implemented within MongoDB: append a no-op oplog entry and require commitment before reconfiguration completes. This isolates dependence on oplog progress, but is not a benchmark of an independent standard Raft implementation or an exhaustive comparison of reconfiguration algorithms. Figure1 covers approximately 0–60 seconds and plots majority-write latency in ms for simulated Raft and logless reconfiguration. Orange bars mark degradation, blue vertical lines mark completion, and red points are write timeouts. Render shows prolonged red clusters in upper panel and brief red clusters/earlier completions in lower panel during degradation. Do not interpret red points near the top as successful 120ms writes or infer a latency quantile from them. Negative axis margin is not evidence of negative write latency. Plot supports qualitative recovery improvement for the shown scenario; no reported aggregate speedup factor, exact completion-time table, quantiles, throughput, repeated-run uncertainty, timeout configuration, client load, hardware/network setup, MongoDB revision or detailed failure-injection procedure is printed. Authors defer full experimental setup to reference16. No exact figures inferred from pixel positions. Pinned TLA+ source is cited in reference14 at commit3d6b378eae7dabe3a35a0b4042bfc55fd178cb21, specs/MongoRaftReconfig.tla; separate full paper is arXiv2102.11960. They are follow-up sources, not read in this batch. References to TLAPS/I4/other databases do not establish this protocol was proved in those systems. All supplied announcement pages, figure, caption and references read. No artifact/model execution or full source audit. No Verus, Rust or LLM-produced proof/specification is presented. Direct relevance is production-motivated TLA+ protocol modeling and the limits of finite model-check/experiment evidence. - how much was read: most of it read - source - record id: `mongoraftreconfig-announcement-2021` - MongoRaftReconfig TLA+ verification (2021) - title: Formal Verification of a Distributed Dynamic Reconfiguration Protocol - what: Machine-checks a TLA+ inductive invariant and TLAPS safety proofs for MongoRaftReconfig, proving LeaderCompleteness and StateMachineSafety for MongoDB Raft-based dynamic reconfiguration. Presents 359-line protocol spec, 140-line 20-conjunct invariant, decomposition into 160 proof goals, detailed TLAPS proof example, TLC-assisted invariant discovery, proof statistics and limitations. - number: 3189 lines TLA+ total - number: 359 lines protocol specification - number: 140 lines invariant - number: 20 invariant conjuncts - limits: Specification deliberately abstracts lower-level implementation details; finite TLC invariant search is probabilistic and not itself a proof. Safety only; liveness left future work. TLAPS backend solver can fail without distinguishing false from hard obligations; no verified runnable implementation. Full TLA+ and proof code supplied as supplementary material. - how much was read: most of it read - source - record id: `mongoraftreconfig-tla-verification-2021` - Schmid fail-operational verification (2021) - title: Formal Verification of a Fail-Operational Automotive Driving System - what: Defines and model-checks a distributed arbitration logic for a redundant, fail-operational highly automated driving system. The NuSMV model encodes state machines, buses, power supply, failures, and LTL/CTL safety requirements; the verification scope and tool qualification are aligned with ISO 26262. The architecture has nominal and fall-back channels with distributed state machines for driving strategy, vehicle control, braking, steering, sensors, communication, and power. The authors limit failure combinations according to ISO 26262, segment checks, bound search depth, validate specifications with individual failure stimuli, and discuss tool qualification. In the BMW case, seven coupled state machines have 30 states, over 6000 potential combinations, 48 single failures and 2256 double faults; single failures took 3.5 hours and double-fault checking seven days. The process found one timing-dependent unspecified state while otherwise improving requirement clarity. - number: 7 coupled state machines - number: 30 individual states - number: >6000 potential combinations - number: 48 single failures - limits: The model assumes synchronous state-machine behavior with an intermediate bus delay, abstracts bus topologies, assumes failures persist during the analysis interval, and does not fully control higher-order failures because ISO 26262 treats them as safe unless required otherwise. Dependent failures must be prevented; timing assumptions must be checked per application. NuSMV/tool results require validation and qualification; computational cost is high, especially double faults. - how much was read: most of it read - - record id: `schmid-fail-operational-verification-2021` - Simulation-based cutoff proof announcement (2021) - title: Brief Announcement: Automating and Mechanising Cutoff Proofs for Parameterized Verification of Distributed Protocols - what: Proposes parameterized distributed safety verification via a designer-supplied small cutoff instance, node map sim, state-effect filterΩ and action-sequence translatorτ. Generates a relation requiring relevant large-instance state effects to be included at mapped cutoff nodes; uses first-order SMT checks for preservation and violation reflection. Illustrates a two-node cutoff for ring leader uniqueness. Reports preliminary Z3 verification of leader election/sharded key-value store in a few seconds and manual checks of three other protocols; tool unfinished. Printed soundness theorem omits explicit initial-relatedness and matching-step existence obligations. Preserves witness-dependent ring partition, guarded message effects, non-one-to-one node mapping, zero/multi-step lockstep, first-violation restriction and exact two SMT obligations. Distinguishes user-supplied proof structure from automation, mechanized versus manual cases, finite cutoff checking from unbounded proof, and partial-correctness preservation from existence of an executable matching trace. - limits: Protocol model is RML relational state, asynchronous messages, guarded atomic actions chosen nondeterministically. Target propertyΊ is state safety over every finite execution for every node-count instance. Fairness, liveness, delivery time, Byzantine faults and concrete implementation refinement are not established. The announcement does not formalize all RML syntax, ordering/topology axioms or state domains. Cutoff means any counterexample at a larger parameter has one at size≀k. Introduction requires checking all sizes≀k; worked transfer uses a selected size-k instance. Thus all smaller admissible sizes must also be checked or covered separately, and all relevant IDs/topology/data instances represented, not merely one concrete graph/state. No automated cutoff finder or complete procedure for arbitrary protocols claimed. Designer supplies protocol, cutoff C, map from every large-instance node to a cutoff node, filterΩ of effects relevant to a violation, and translatorτ mapping actions to zero/more cutoff actions. Automation generates/checks a candidate relation from those inputs; it does not infer all proof ingredients or eliminate human protocol insight. Ω is property-specific and must retain enough state to reflect violation. Generic relation is forallN Ω(σL(N))⊆σC(sim(N)): many large nodes collapse to one cutoff representative, so it is one-way inclusion of selected facts, not exact equality of distributed state. Ring example chooses distinguished hypothetical violating leadersLA/LB and partitions directed ring arcs, includingLB onCB side andLA onCA side; cutoff has two nodes with same IDs. Map may depend on counterexample witnesses, not one universally fixed arbitrary quotient. Ring protocol: each node has unique totally ordered ID; generate sends own ID to successor. Handle forwards IDs greater than own, elects self when own ID returns, ignores smaller ID. Safety is at most one elected node. Relation carries implication from each distinguished large leader flag to corresponding cutoff flag, and only carries pendingA/B messages while their originating distinguished node has not become leader. It is not full queue/order/multiplicity equality and requires the surrounding protocol encoding. Lockstepτ may stutter when node images coincide or a large action cannot usefully be reproduced, and may execute multiple small actions. Example handlingB atLA maps to handleB atCA followed by generatingB atCB; extra generation restores relation. Symmetric cases also required. Printed short list does not fully specify every intermediate-node/other-ID/stuttering case, parameter guard, or when a proposed action sequence is enabled. Equation1 checks unsatisfiability of R∧largeAction∧translatedSmallSequence∧Rprime, with safe prestateΊL/ΊC conjoined to focus on the first violation. Equation2 excludes ΊL∧R∧ΊC, so related large violations force small violations. These are relation preservation and bad-state reflection. A cutoff correctness proof also needs related initial states and existence of a legal matching small sequence for every relevant large step. Neither is an explicit premise of printed Theorem1 or checked by these formulas alone. In particular, putting τ(a) in the antecedent of Equation1 only constrains already-existing matching moves. If that sequence is disabled, formula is vacuously unsatisfiable and says nothing about simulating the large step. Need an enabledness/totality obligation R∧ΊL∧ΊC∧a⇒existsσCprime τ(a), plus initial-state matching; a partial-correctness SMT check cannot substitute for it. This identifies an incompleteness of theorem as printed, not an audited flaw in an unavailable implementation/full proof. Reader simple countermodel: relationR says large bad flag implies cutoff bad flag. Both initially false; cutoff flag permanently false; a large action sets bad true, while designated cutoff action is disabled. Equation1 has false τ antecedent; Equation2 contradictory byR; small instance safe; large instance unsafe. Initial relation already holds, so even adding initialization alone does not fix missing matching-step existence. Such a node-count-dependent guarded action fits a broad relational model unless further protocol restrictions rule it out; announcement states no restriction establishing totality. A second missing obligation is initial relatedness: Rfalse makes both displayed formulas unsatisfiable for any protocol, regardless of its executions. Even when generated inclusionR disallows this exact candidate, the proof must establish the chosen initial-state relation rather than infer it from preservation. Ring pending/leader initialization plausibly makesR hold, but the announcement does not print/check that case. Adding Ί of both prestates is sound for a first-bad-state transfer only if initialization and step matching hold and all translated intermediate small states are legal. If a small execution violatesΊ earlier during a multistepτ, that already witnesses unsafety; if cutoff safe, every such intermediate stays safe. Does not require preserving after first violation. All free/quantified instance, topology and order variables must be encoded with sound restrictions for SMT UNSAT to entail the mathematical statement. Theorem1 asserts all instances safe from UNSAT of Equations1/2 and safety ofC; no proof provided beyond prose. Z3 UNSAT is reported, not an independent proof-assistant/kernel certificate. Soundness relies on correct FOL encoding, quantifiers, topology/ID assumptions, action semantics and solver. Unknown/timeout would not be proof; the paper reports only successful preliminary cases, without completeness or decidability theorem. Evaluation separates two solver cases (ring leader election, sharded key-value store) from three manually checked cases (Lock Service citing Verdi, Learning Switch citing Ivy, Distributed Lock Service citing IronFleet). These citations do not show re-verification of full Verdi/IronFleet codebases. Only ring cutoff2 is stated here; key-value/other cutoff sizes, exact properties, modeling effort, action counts and solver formulas not detailed. Timing is order of a few seconds for both solver cases, not exact measurements or a controlled comparison. No Z3 version/hardware/options, repetitions, timeout policy, raw logs, benchmark suite table, proof size or artifact revision printed. Tool explicitly work in progress; finishing implementation, complex protocols and automatic cutoff synthesis future. Full Version points to a GitHub repository, not independently fetched/read in this batch. Entire supplied4-page technical announcement read, including all13 references and rendered equations. Existing record already covered announcement but lacked explicit missing soundness premises; replaced without duplicate title and archived original. No full version/artifact/underlying protocol reading, tool execution, Verus/Rust/TLA+ code or LLM use here. Useful as a proof-design/checking method, with theorem obligations requiring completion before use as a trusted parameterized verifier. - how much was read: most of it read - source - record id: `simulation-based-cutoff-proof-announcement-2021` - SWISS (2021) - title: Finding Invariants of Distributed Systems: It’s a Small (Enough) World After All - what: SWISS searches finite spaces of quantified invariants for RML distributed protocol models. Breadth accumulates small relatively inductive clauses; Finisher searches for a final clause that, with safety, is inductive. Failed SMT verification conditions yield reusable finite-model filters, with symmetry and redundancy pruning, model minimization and parallel search. It proves selected models including Paxos/Flexible Paxos and guided Multi-Paxos, and measures successes, partial progress, costs and failed optimizations against I4 and first-order separators. Reconstructs exact Finisher/Breadth obligations, conditional coverage guarantee and its implementation timeout exception, all three counterexample filters and fast bitset/trie evaluations. Saves every benchmark/table number and failed-protocol result, manual search tuning, full-space versus first-hit timing and all appendix ablations. Distinguishes model/spec correctness from code, safety-relative partial clauses from independent proofs, and the small-world hypothesis from general completeness. - number: solves 19 of 27 benchmarks with a six-hour timeout, median of five runs - number: Paxos and Flexible Paxos take about 4.4 and 5.1 hours - number: Multi-Paxos succeeds only with supplied templates - number: Paxos: around 4 hours on an 8-core machine; with guidance 20 minutes - limits: §§2–3: Inputs are a formal RML protocol transition system, desired safety condition and candidate-space configuration. No executable implementation/refinement theorem is supplied. Encoding an intended protocol so checks remain in extended EPR may itself be challenging and is explicitly outside SWISS scope. Safety/transition semantics, solver/encoder/filter implementation and execution environment are trusted; output invariants can be independently validated but this reading did not replay them. §§2.1–2.4: Proofs address all reachable states of the supplied transition model, not just finite test runs; no liveness proof. Atomic transition/failure/network assumptions come from each input protocol. SDL running example uniquely disallows packet duplication; do not generalize that restriction to every benchmark. EPR satisfiability uses ∃*∀* with no general functions; stratified functions and quantifier alternation are admitted in the extended fragment while preserving decidability. §§3.2–3.4: Finisher checks Init⇒S, Init⇒P, TR∧known∧S∧P⇒Sâ€Č and TR∧known∧S∧P⇒Pâ€Č. Breadth checks initialization and inductiveness of new clauses relative to input clauses and S. Therefore intermediate clauses can be inductive only under safety, not independently proved reachable-state properties. Reader qualification: reuse partial output with its assumptions/joint invariant obligation intact; a partial clause count is not a partial correctness theorem about arbitrary code. §3.4 Claim 1: Ideal Solve succeeds only if a finite chain exists with all earlier clauses in B, final clause in F, each earlier prefix inductive relative to S, and final conjunction including S inductive; sound pruning must preserve valid candidates and VC checks must finish. This is relative completeness for the stated chain/space, not decidability of arbitrary invariant discovery. §§4.3,5.1 reader qualification: Actual implementation retries timed-out Z3 queries with CVC4 and may skip an invariant if timeout persists. Thus practical runs with skipped candidates do not retain the ideal exhaustive coverage guarantee. Skipping rejects potentially useful proofs; it does not justify accepting an unproved candidate. Unknown/timeout and finite search failure do not establish protocol unsafety. §4.1: User supplies formula term/depth limits k,d, quantified-variable limits m,q and quantifier type nesting order to retain extended-EPR VCs. Templates can be auto-enumerated within bounds or explicitly supplied. Auto mode is not no-user-configuration; search grows exponentially. Symmetry pruning imposes syntactic term order/first-variable order, not full logical-equivalence solving. §4.2: True(M) requires P on a model; False(M) requires not-P; Transition(M,Mâ€Č) requires P(M)⇒P(Mâ€Č). Filters are derived from failed VC obligations and are sound for candidates satisfying the same obligation context. False models need not be reachable; they are states every acceptable strengthening for that VC must reject, rather than arbitrary actual executions proving a bug. §§4.2–4.5: Precompute base-term evaluations on every variable instantiation in finite models and evaluate candidates with bitwise operations. FastImplies is a sound but incomplete syntactic implication check using subsequences/modulo variable renaming in a trie, with limited universal/existential substitution. allInv retains redundant clauses for filtering while indInv avoids redundant output. Model minimization has a 45-second budget, so a retained model need only be partially minimized. §4.5.2: Partition/randomize B/F and run independent per-thread searches, combining only phase results. Threads do not share counterexample filters or fresh invariants during a phase. This gives good filtering parallelism but replicates SMT model construction and does not establish universal linear speedup. §5.1: Defaults B(d,k,q,m)=(1,3,1,5), F=(2,6,1,6) were adjusted per benchmark after results: increase k/q on exhausted failed searches, shrink B on slow breadth. learning-switch-ternary uses q=0; async lock and sharded-kv enlarge k; no-lost-keys needs q=2. Results include manual tuning and guided Multi-Paxos, not a fixed blind default-only experiment. §§5.1–5.2 Table 1: 27 distinct benchmarks plus duplicate guided Multi-Paxos row. SWISS times are medians of five runs with six-hour budget, on eight-core i9-9900K 3.60GHz/125GB/Ubuntu19.10, eight threads unless noted. Z3 4.8.8 then CVC4 1.8-prerelease –finite-model-find after 45s. Baseline runtime entries are published comparisons without uniform per-baseline dispersion in this paper. §5.2.1: Paxos and Flexible Paxos complete automatically within the configured candidate templates; Multi-Paxos requires correct user templates and unguided run times out in Breadth. Fast/Stoppable/Vertical Paxos remain unsolved, despite introductory phrasing that can sound broader. I4/FOL/SWISS each win on some protocols; existential support alone does not dominate larger mutually inductive universal invariants. §5.2.2: Partial progress counts handwritten invariant clauses logically implied by generated clauses, not percent of execution space, correctness or remaining proof effort. Missing one essential clause can prevent the whole safety proof. Reported 79% Vertical Paxos is 14/17, about 82.4%; preserve printed discrepancy rather than treating prose percentage as exact. §§5.3.3–5.3.5: Table 2 timings enumerate entire template spaces even after finding a proof and start with supplied Breadth invariants. The claimed 20-minute/13.4× guided result concerns proof search stopping, not the listed 2036-second full-template enumeration. Table 3 is a single-thread single-template pruning experiment, not end-to-end automatic-template run. §5.3.4: mn/mn−1 are smallest known chain maximum term sizes, drawn from human or synthesized invariants; minimality is not proved. 25/27 have mn≀8 and 22 are smaller; mn≀6/mn−1≀3 is an empirical rule of thumb. Human comprehensibility implies finite intuition is motivation for a hypothesis, not a theorem guaranteeing succinct invariants. Appendices A–B: Formula-synthesis, BMC and eager invariant accumulation were unfavorable in tested cases; this is workload-specific evidence. Figure 5 uses preselected templates and a logarithmic y-axis. Parallelism experiments deliberately finish the whole F space to remove first-hit variance and analyze longest-running threads, so speedups do not directly imply normal first-proof latency. §§5–7: No production-code performance, LLM-agent experiment, verified Rust/Verus implementation or TLA+/TLC integration is evaluated. An unexpectedly easy Fast Paxos proof uncovered a disabled-action typo in the input spec, demonstrating the need to validate intended behavior despite valid invariants. External artifacts/proofs and source-code current state were not executed or audited. - how much was read: most of it read - source; notes: papers inspected - record id: `swiss-2021` - The CakeML Project’s Quest for Ever Stronger Correctness Theorems (2021) - what: Historical account of CakeML’s end-to-end verification strategy: proof-producing translation of logical functions to embedded ML programs, verified compilation to concrete bytes, and application-specific proofs, with extensions through a verified Silver CPU’s Verilog implementation. Describes improvements that strengthen transported correctness, especially impure code reasoning and space bounds needed for liveness. Explains why in-logic execution supplies a concrete compile(input)=machine_code theorem, enabling a final property statement without the compiler function; how applying synthesis and in-logic compilation to the compiler’s own logical definition yields a verified executable; why finite target memory limits the default behavior theorem; how a sound space-cost semantics removes early out-of-memory exits for specific programs; and how shared characteristic-formula infrastructure connects manual verification and monadic code synthesis. Separates completed compiler/hardware layers from 2021 prospective language/compiler projects. - limits: This 10-page invited overview summarizes previously published mechanizations; it contains no new complete formal proof, benchmark table, theorem inventory or fresh controlled experiment. Its references identify where to inspect the underlying statements. Counts or broad performance comparisons here are author reports, not independently reproduced results. The transfer argument relies on proved source properties, formal CakeML operational semantics, a correct compiler theorem and a proved concrete compilation result. In-logic compilation removes the compiler from the final statement; it does not eliminate trust in the logic, prover implementation or fidelity of source/machine/hardware models. Source lists, arrays and integers are unbounded; target memory is finite. The default behavior preservation explicitly permits early out-of-memory errors. Source liveness alone therefore does not ensure target liveness. The separate compiler-sound space-cost semantics supports tight bounds for concrete programs and the strengthened transfer. The first compiler’s front end includes parser soundness/completeness with respect to an SML syntax grammar, type-inference soundness (completeness added later), and no runtime errors for typed source programs. That typing theorem does not rule out target out-of-memory exits. The optimizing compiler uses eight intermediate languages and multiple passes per language. Functional big-step, clocked interpreter semantics permit a single simulation proof per phase to handle termination and nontermination; the paper says most, not all, simulation directions are forward. CakeML characteristic formulae are proved sound against CakeML operational semantics, including higher-order recursive functions, mutable state, exceptions and FFI I/O. A later extension handles diverging programs, and a simplified nontermination Hoare logic is proved sound and complete. Do not extend that completeness claim to every CF feature or program-verification automation. The Isabelle/HOL source generator is for the most part verified once for all; the HOL4 generator is for the most part proof-producing. Lem generates source-semantics definitions in both provers from a common specification. The overview does not present a verified cross-prover transport theorem or certify Lem itself. The Silver result composes a verified compiler target, machine-code filesystem and CPU correctness through the formal Verilog implementation. A later verified compiler maps a supported subset of generated Verilog to FPGA technology-mapped netlists. Physical fabrication, FPGA programming and the entire external synthesis toolchain are not established by this overview. Compiler projects using CakeML for a low-level imperative language, a Haskell-inspired language and a choreographic language are described as ongoing in 2021. Project-success explanations are explicitly the author’s beliefs, not empirical causal conclusions. No Rust, Verus, TLA+ or LLM-agent experiment is reported. - how much was read: most of it read - source - record id: `the-cakeml-project-s-2021` - Timely progress tracking (2021) - title: Verified Progress Tracking for Timely Dataflow - what: Formalizes and proves safety of modern Timely Dataflow progress tracking in Isabelle/HOL by composing distributed progress exchange and worker-local propagation. Corrects an earlier TLA+ clocks model that excludes supported non-upright behavior and lets workers inspect/update global state. Sections 3–4 reconstruct the earlier clocks protocol, whose upright updates require introducing larger pointstamps while dropping smaller ones, then replace its global record field with worker-owned capabilities plus in-flight data. New capability creation is justified by local capabilities; a weaker justified predicate governs withheld progress updates. Sections 5–6 model weighted cyclic graphs, partially ordered timestamp summaries, frontier antichains and incremental worklists. The work_vacant-conditioned local safety theorem and implied-frontier equality compose with exchange under the could-result-in order; initialized workers’ downstream frontiers conservatively witness every existing pointstamp. The proof separates general assumptions with locales and uses signed multisets for finite-support integer counts. Section 7 compares proof engineering with the ported TLA+ proof and reports executable local-propagation comparison against Rust examples. - number: about 7,000 Isabelle lines: 1,000 + 3,100 + 1,700 + 1,200 - number: one person-week and about 1,000 extra lines to port earlier TLA+ safety proofs - limits: Finite workers and locations, reliable FIFO progress-message queues, and partially ordered pointstamps. Timestamp summaries are nonnegative, monotone and compositional; every proper graph cycle strictly increments timestamps, and self-edges are excluded. Workers may fail-stop or pause indefinitely; the system retains safety but does not recover. Combined propagation runs to an empty worklist as one action only when it terminates. The paper explicitly does not prove general propagation termination or liveness/fair delivery. Safety covers progress tracking, not the whole dataflow runtime, user operators, or an implementation-refinement theorem for Rust. Proof sketches and more formalization details are in a separate linked extended report not included/read here. - how much was read: most of it read - source - record id: `timely-progress-tracking-2021` - Wang et al. Ownership NSDI2021 (2021) - title: Ownership: A Distributed Futures System for Fine-Grained Tasks - what: Distributes task-runtime metadata to the worker that invokes each task, making that caller owner of its result futures. Local synchronous metadata plus scheduling leases reduce overhead; hierarchical reference counts and lineage/fate sharing support cleanup and optional transparent recovery. Implemented in Ray/C++, evaluated with no-op tasks, image serving and video stabilization. AppendixB reports finite TLA+ checking of core scheduling/cleanup/failure transitions, explicitly excluding first-class futures and actors. Captures API and caller-owner distinction, pending-location versus asynchronous value-location metadata, scheduling and reuse, primary pinning/secondary cache, separate value/lineage reference lifetimes, borrower transfer/nesting, failure propagation/actor restrictions/driver fate, exact finite-model bounds and missing liveness assumptions, benchmark controls/omissions and worker-versus-owner recovery tradeoff. - limits: Distributed future DFut is an immutable-object reference whose value may be remote or not yet computed. Calling f returns immediately; get blocks and copies the value; passing DFut to an ordinary argument implicitly resolves before task execution. SharedDFut passes the reference itself; borrowers can pass or return it again. Nested returned futures flatten for use but remain represented in reference accounting. del removes a scope reference and Table1 says the program must call it; no tracing collector is claimed. Ownership is runtime metadata responsibility, not Rust ownership or an exclusive data-access capability. The caller owns the result future, distinct from the worker executing the producing task and from physical object location. Metadata includes ID/Owner/Value/References/Task/Locations; borrowers keep a subset. TaskID hashes parent ID and invocation index, root random; ObjectID appends return index. Unique worker/node IDs distinguish incarnations, but no formal hash-collision analysis is given. Shared state includes object locations, reference holders, pending task locations and lineage. Object-directory locations can be asynchronously stale and checked against the store; pending task location must be updated before dispatch so owner can identify failures. Consistency here means metadata agrees with physical runtime state, expressly distinguished from conventional replica consistency. Immutable values avoid mutable shared-memory coherence, not the metadata protocol obligations. One or more workers per node, one local scheduler and object store; each worker executes one task at a time and can spawn children. Abstract decentralized scheduling policy chooses resources/location; owner can start with local or remote scheduler. Scheduler fetches dependencies and leases worker resources; owner records redirect/worker address before every forward/dispatch. Reuse bypasses scheduler only when resource requirements and distributed-memory dependencies match. Worst-case extra redirects cost more RTTs, despite better common-case throughput. An actor is created by a constructor task, caller-owned and represented by ARef; its worker lease lasts until no references remain. Calls can come directly after resolving/caching owner location. Ordering is per caller, not a stated total order across callers or exactly-once execution across failures. Actor restart recreates constructor; durable application state recovery is outside this work. Small values returned inline to owner and copied per holder; large values enter immutable shared-memory object store and are passed by pointer. Configurable size threshold unspecified numerically. Primary copy pinned until owner release/failure; secondary copies are evictable LRU cache. Store Get blocks without any copy until a worker creates/reconstructs it; replication is an optimization, not required durable storage. Release means evictable, not immediate physical erasure. For dereference, caller waits for Value in local table, resolving it from owner if borrower; executing worker receives inline value or store pointer. Owner tracks ordinary dependent task submissions/completions and a borrower tree, releasing value only after references disappear. Actors use analogous counting. Memory safety means avoid prematurely reclaiming referenced immutable values, not a C++ language-level memory-safety proof. AppendixA full count includes local-scope flag, submitted-task count, borrower set, nested containers and lineage count. Ordinary child result can piggyback reference release. Borrower retained after task completion if pending tasks or actor-local references remain. Owner requests quiescence, receives accumulated child borrowers, removes old borrower and merges children; borrower itself does not delete its borrower set. Dead borrowers removed after failure notice. Nested containing futures pin enclosed future value. This transfer protocol is described, not mechanized in the reported first-class-future-free model. Lineage kept separately from value: passing a DFut increments downstream lineage dependency until that task description is itself collected. A value can be released while lineage count remains nonzero, permitting recomputation. Inline results do not require their creating Task retained; referenced large results require reconstructible dependency closure. Owner discards whole record once Task and Value gone. Planned checkpointing could collect lineage earlier; automatic general lineage compaction is not established. Failure model is worker/node crashes reported by scheduler/heartbeat notifications to all workers. Non-owner waits for owner to handle loss; owner compares Locations or Owner field. No Byzantine behavior, partition safety, detector accuracy/completeness theorem or durable global-metadata failure coverage is supplied. Eventual progress necessarily requires successful task termination, usable resources, message/failure-notification progress and a sufficiently stable surviving recovery chain; the paper does not print precise fairness or failure-bound assumptions for the model. Lost object: owner first tries/promotes secondary copy, otherwise resubmits stored task and recursively reconstructs inputs, requesting their owners when borrowed. Requires idempotent computations or suitable read-only/checkpointable/transient actor state. Retrying is not proof of exactly-once external effects. Nondeterministic execution recovery is cited as complementary work, not fully provided here. Lost owner: free owned object copies or reclaim pending leases and fate-share borrowers/dependent tasks. Failed owner task is reconstructed by its parent owner, recreating children and references with new owner address. Informal argument follows pass-to-child, first-class pass and return-to-parent cases. It is not a full mechanized arbitrary-borrowing proof; AppendixB excludes first-class futures. The application fate-shares with root driver, whose recovery/persistence needs additional techniques. For transparent recovery, actors must not store borrowed DFuts in local state. AppendixA permits tracking such stored references during normal operation; that is not a contradiction because transparent recovery is optional. Manual failure handling remains available. Actor-local state recovery is out of scope despite constructor restart; application checkpoints in evaluation are explicitly external mechanisms. AppendixB specifies ownership-table transitions for task scheduling, garbage collection and worker failures. Listed properties: preserve reconstructible lineage of needed futures; eventually execute tasks/resolve Gets even with failures; eventually clean task/value state once all future references leave scope. Printed LineageInScope recursion says inline or all argument futures safe. The excerpt does not spell out its full domain/scope guards, transition system, fairness or failure limits; do not treat this brief recursive expression as a complete executable specification. Reported TLA+ Model Checker exploration bounds: at most3 recursive remote-call levels and3 futures per function; more than44million distinct states, safety and liveness reported holding. No unbounded inductive proof, TLAPS proof, C++ refinement/compiler theorem, model-check wall time/configuration or reproducible run appears here. No Resource Leakage is listed as a goal, but the run-result sentence explicitly names safety and liveness rather than separately confirming every cleanup formula. First-class futures and actors explicitly excluded; full model release planned. Implementation about14k C++ LOC, basis of Rayv1.0+ at publication. Discussion calls performance/reliable failure detection/GC anecdotal user benefits and says transparent recovery not widely used. These are historical author reports, not current Ray compatibility/deployment measurements. Artifact link stephanie-wang/ownership-nsdi2021-artifact is not fetched or executed. Experiments AWS EC2, head m5.16xlarge by default; some throughput head/intermediates m5.8xlarge. Baselines pass-by-value with futures, Rayv0.7 distributed leases, and Rayv0.7 modified to synchronously update centralized master before execution. All distributed-future variants use sharded unreplicated Redis for global metadata and Ray scheduler/store; ownership/pass-by-value use gRPC worker communication. These are shared-platform comparisons, not isolated proof all differences derive solely from metadata ownership. Tasks use predetermined placement, reducing scheduling variance and excluding arbitrary-policy behavior. Throughput leaves are no-op tasks returning short strings or1MB blobs, one intermediate driver per5 m5.8xlarge workers, up to100 workers; intermediates colocated or spread. Spreading control enables horizontal scaling; colocated baselines bottleneck at per-node scheduler, ownership improves reuse but still saturates. Centralized2shards scales about60nodes; more shards raises its threshold. Ownership≈leases for spread large objects, better for small values; unstable large pass-by-value results omitted for implementation backpressure deficiency. Plot throughput is not useful application work per second. Delegation benchmark100k no-op tasks all depend on one1MB driver-owned object on single m5.16xlarge; varying nested borrowers gives ownership about2× throughput and little baseline gain. Demonstrates hierarchy/refcount distributing load in this workload, not automatic scaling of a single sequential driver or every task graph. No general speedup guarantee. Latency microbenchmark3k tasks on one colocated/remote m5.16xlarge worker; shared1MB input, short output, measured time before task starts, not complete arbitrary-task response time. Figure13 error bars are standard deviation across tasks, not repeated-experiment confidence intervals. Reported average1.6× lower versus centralized/leases. Abstract1ms is broad architectural result, not a universal deadline. Recovery chain: tasks sleep total10s on remote m5.xlarge, return short string or10MB; kill/restart worker5s in,1s heartbeat timeout. Centralized baseline omitted for implementation effort. Normalize total runtime to ownership without failures. Leases normal runtime up to1.18× faster, but recovery more than double due to repeated lease expiration/doubling; shorter interval trades overhead/stability. Ownership total within2× normal here is a measurement, not a theorem for arbitrary graphs/failures. Model serving:4 p3.16xlarge nodes, each1Router/8ResNet50Models, batch16,2300requests/s. Median54ms for ownership/centralized; reported tail1s vs108ms,about9×. No-borrowing router copies images,p50=80ms/p100=3.2s. This ablation changes reference versus value movement, not fault-tolerance proof. Full accuracy/model training irrelevant to runtime measurement. Video:60 concurrent streams, each m5.xlarge worker, separate owner m5.xlarge hosts4drivers;29frames/s source,1s smoothing radius. Decode actor permits rereading frames for idempotence. Median≈65ms, lease/centralized tails1208/1923ms. Lease Decoder failure injected5s after start, ownership scenarios10s; acknowledge different timings rather than infer controlled identical replay cost. Leases checkpointing unavailable because implementation cannot safely collect lineage. Ownership video worker failure recovery1.9s versus owner failure8.8s (replay from beginning). Application checkpoints once/s to remote Redis, intermediate state plus sink frame-index commit, reduce owner recovery to1.1s with reported negligible overhead. This checkpoint/sink scheme is described but no exactly-once end-to-end output, Redis durability or all crash-interleaving proof supplied. Distinguish application checkpoint extension from default automatic runtime guarantee. Whole paper includes related RPC, dataflow, actors, parallel-runtime and distributed-memory work. No LLM-generated specs/proofs, Verus, verified Rust or source-to-model refinement. Bounded TLA+ evidence is directly relevant; normal borrowing/actor behavior and implementation remain outside that model. Performance/failure experiments complement, rather than establish, general liveness/resource-safety claims. - how much was read: most of it read - source - record id: `wang-et-al-ownership-nsdi2021-2021` - Algorand Coq (2020) - title: Towards a Verified Model of the Algorand Consensus Protocol in Coq - what: # Whole-paper read: Towards a Verified Model of the Algorand Consensus Protocol in Coq (authored by agents unless marked 🧑) Musab A. Alturki, Jing Chen, Victor Luchangco, Brandon Moore, Karl Palmskog, Lucas Peña and Grigore Roßu. arXiv1907.05523v2,25August2020,6pages. The paper reports a Coq proof that two certificates in one round carry the same value, including certificates from different periods. It models Byzantine behavior, time and partitions. The linked release contains a completed safety theorem, but its unconditional quorum axioms raise a substantial scope problem described below. No Coq check was run. [Q1,Q2,Q6,S1,S2,S6] ## Model and claimed guarantee A round may have several periods. Users propose, soft-vote, cert-vote and send open or value-carrying next-votes to advance periods. VRF-based self-selection chooses a different committee for each step; selected users attach ordered credentials. A user ordinarily recognizes a certificate after receiving enough cert-votes. The theorem instead defines certification by a quorum having sent votes somewhere in the trace. Authors justify this abstraction by allowing a corrupt user's sent message to reach nobody. This distinction matters when comparing certificates with local observations. [Q3,Q5] The model uses finite types of user identifiers and abstract values, real-valued time, local states, finite message maps, a history of broadcast messages and a partition flag. Global transitions deliver messages, advance time, perform local actions, enter/leave partitions, corrupt users, replay historical messages and forge messages when the adversary has the relevant keys. Delivery deadlines constrain unpartitioned operation; partitions remove that bound. Transaction/currency details and concrete cryptographic implementations are abstracted away. [Q2,Q3,Q4,S3,S4] The printed theorem requires an initial state before the target round and a valid finite transition trace. Given any two period/value certifications in that round, their values agree. It does not assert that any certification occurs, a bound on completion time, or implementation refinement. The same-period proof uses honest quorum overlap and the fact that an honest user cert-votes at most once per period. The different-period argument preserves an invariant excluding a quorum of open next-votes and restricting any value-next-vote quorum to the certified value. The source theorem is named `safety`, rather than the paper's `asynchronous_safety`, and ends in `Qed.` [Q6,Q7,S6,S7] ## Assumptions and a static scope concern The prose states: “The adversary must control less than 1/3 of the total stake participating in the consensus protocol.” The mechanized committee properties are axioms; the paper explicitly leaves the probabilistic analysis to external pen-and-paper proofs. Thus the reported symbolic theorem is conditional on these axioms, rather than a mechanized derivation of a numerical failure probability from a stake distribution. The inspected source also assumes distinct credentials for distinct users, qualifying periods at least1, positive small-message delay and ordered delay/recovery bounds. Thresholds and valid-block/hash relations are parameters. [Q2,Q3,S3,S8] Reader deduction, not an executed Coq result: the pinned release's honest-overlap axiom quantifies over every sequence of global states, without an `is_trace` premise or a constraint on corruption. The definition of `honest_during_step` tests that a present user is uncorrupted at every listed state whose local round/period/step is at most the requested step. Global and local records impose no validity invariant on their constructors. This combination appears to rule out every committee subset reaching the assumed threshold. [S1,S2,S4,S5] The argument is concrete. Suppose q is a committee subset of size at least tau for step(r,p,s). Construct one global state containing each q member at exactly(r,p,s), with `corrupt=true`; set timers to0, optional starting values toNone, all message/vote/proposal sequences empty and message maps/history empty. Such records need no valid transition history. On the singleton sequence containing that state, `step_leb (r,p,s) (r,p,s)` is true, so `honest_during_step` is false for every member of q. Apply the unconditional overlap axiom to this sequence with both quorums equal to q. It requires an honest member of q, a contradiction. For tau_c this excludes the quorum required by `certified_in_period`, irrespective of whether the target certification trace is valid. Therefore the release's safety conclusion appears true because its certificate antecedents cannot hold. [S1,S2,S4,S5,S9] This is an argument about the printed definitions and pinned source, not an Algorand protocol counterexample. It does not by itself show all axioms inconsistent: if every relevant committee is smaller than its threshold, the overlap axioms can hold because their size premises are always false. A separate quorum-existence premise would conflict with the overlap property above. The intended restriction to suitable executions/adversaries is not present in this axiom. The paper displays the same unrestricted trace quantification, although it omits the helper definitions needed to complete this analysis. [Q5,S1,S2] ## Evaluation, cases and remaining work The work is a proof report, not a performance benchmark. Authors report “around 2000 specification lines and 4000 proof lines.” No prover runtime, independent reproduction, protocol throughput/latency result or empirical corruption experiment is reported. The linked release README calls safety complete and liveness proofs incomplete. `safety.v` imports model/helpers/quorums and does not import `liveness.v`; admitted liveness results therefore should not be described as evidence that the safety proof uses those admissions. A full dependency/assumption audit and independent proof check were not performed here. [Q8,S6,S10] Concrete cases include delayed cert-votes allowing later periods to certify the same block, a replay action restricted to messages in history, and same-period double voting excluded for honest users. These explain the intended safety proof. The corrupt singleton sequence above instead tests the scope of a universally quantified axiom, rather than producing a legal Byzantine execution. Liveness is future work in the paper; the abstract's “exactly one block” description must not be substituted for the theorem's at-most-one guarantee. [Q1,Q4,Q6,Q7,Q8] For this collection, the contribution is a timed Byzantine consensus model and a trace-based Coq safety development. It also supplies an evaluation lesson for specification/proof agents: a checked implication requires scrutiny of its premises and evidence that those premises allow the intended behaviors. The latter lesson is my inference from the source analysis. There is no Verus, verified-Rust, TLA+ or LLM-agent experiment in this paper. ## Read and source scope Read all6pages, §§1–5, all11references and every displayed record, rule, definition, theorem and lemma; inspected page4–6renders. There are no numbered figures/tables or appendices. Reference entries were read, not all referenced papers. Acquired11static files from the paper-linked release-1.1 commit3bbf1a663b3b2fdf497416efa6b01d2c1c54459d, with SHA256 and Git blob identities. Whole README, build metadata, local/global-state files and quorums.v were read; selected ranges of the large model/helper/safety/liveness files were inspected. No claim of a complete Coq-source audit. No author code, compiler, checker, prover or solver was run; no serialized scientific results or models were loaded. Official and saved inventory PDFs are byte-identical. Exact excerpts and source slices are in quotes.json; acquisition and inspection scope are recorded separately. - number: One certified block per round is the target consensus property - limits: idealizedcryptography;axiomatizedquorums;staticunconditionalaxiomscopeconcern;noindependentCoqcheck - how much was read: most of it read - source - record id: `algorand-coq-2020` - Aneris (2020) - title: Aneris: A Mechanised Logic for Modular Reasoning about Distributed Systems - what: Aneris is a Coq-mechanized higher-order distributed concurrent separation logic for modular specification, partial correctness and refinement; the repository contains examples and case studies. - number: load balancer impl/spec/proof 18/78/95 lines - number: two-phase commit: 18 and 11 impl lines, 181 joint spec lines, 265 and 280 proof lines - number: replicated logging plus commit: 1,272 lines - limits: README-level account; publications linked from the README are separate sources. - how much was read: most of it read - source; notes: papers - record id: `aneris-2020` - Aragog (2020) - title: Aragog: Scalable Runtime Verification of Shardable Networked Systems - what: Operators write patterns of bad event sequences. Aragog compiles them into state machines and checks them against live or recorded event streams from networked systems. It splits the work by grouping keys. - number: 8 NAT policies at 5-14 spec lines, 3 firewall policies at 4-6 lines - number: four bugs in the NAT gateway, confirmed by operators - number: over 500,000 events/s for one policy, over 30,000 for eight - number: firewall violation detected in about 70 ms median - limits: Aragog has no correctness proof. It needs accurate event ordering and synchronized clocks. Sampling can miss flows. Operators write the specs. - how much was read: most of it read - source; notes: Aragog: Scalable Runtime Verification of Shardable Networked Systems; notes: Aragog: Scalable Runtime Verification of Shardable Networked Systems - record id: `aragog-2020` - Armada (2020) - title: Armada: Low-Effort Verification of High-Performance Concurrent Programs - what: Armada is a language and tool for formally verifying high-performance concurrent programs using SMT automation, rely-guarantee, TSO elimination, reduction and alias analysis. Its README describes four case studies and build commands. - number: 4 concurrent case studies - number: barrier: 57 executable SLOC; second layer 35 annotations, 114 lemma lines, 46,404 generated proof lines - number: four cases: barrier, distinct-pointer reorder, MCS lock, liblfds queue - number: about 6 person-days to write the proof levels for one queue, mostly finding the inductive invariant (§6.4, PDF p.12) - limits: README describes a PLDI paper and commands; no local build was run. - how much was read: most of it read - source; notes: Armada: Low-Effort Verification of High-Performance Concurrent Program - record id: `armada-2020` - Automated Verification of Customizable Middlebox Properties with Gravel (2020) - what: Gravel checks high-level trace properties of Click middleboxes in two stages: symbolic graph execution over Python element specifications, then LLVM symbolic execution/refinement of each C++ element against its specification. Run-to-completion handlers, restricted pointer analyses, loop unrolling, SMT models of Vector/HashSet/HashMap and concrete immutable classifier rules make most studied elements encodable. Developers still supply the high-level properties, intermediate element models and induction obligations. Records exact empirical screen/failure classes, graph-versus-element obligations, bounded graph/unrolling failures, SMT model/trust/init limits, explicit liveness/induction formulas, all13propertyscopes and full appendix examples/discrepancies, complete LOC/time/bug/performance cells and workload/selection limitations. - limits: §§2,3.1: Study is run-to-completion Click elements/configurations in official repository, not arbitrary concurrent network software. Element private state/event handler semantics and fixed directed topology underlie composition. Packet/time events modeled as state transitions; no shared-memory concurrent handler/interleaving proof or distributed consensus/failure model is presented. §2/Table1: Percentages measure ability to symbolically encode examined code after techniques/modifications, not verified high-level properties for226elements/37configurations. Baseline uses conservative no-pointer/no-loop criteria; later supports immutable unaliased singleton/array pointers, staticbounds, byte-valued uninterpretedfunctions and boundedunrolling. Error at limit is failed verification, not bounded-prefix success. §§2.3,4.2/AppendixA: Vector/HashSet/HashMap implementations replaced by SMT interface models. Paper supplies encodings rather than refinement proof of those underlying library implementations; their faithfulness/implementation correctness is an additional assumption despite terse §4.3TCBlist. Arbitrary recursive/custom datastructures unsupported. Generic payloadloops/AES andsymbolicstate-dependentloops remain obstacles. §2.3: Classifier rules are instantiated from concrete Click configuration; verifier checks transitiontableimmutable and symbolicallyprocesses packets with those fixedrules. This is configuration-specific verification, not a theorem for arbitrary ruleconfigurations or mutablepolicyupdates. §§3–4: High-level spec and element-level specs required. Element models are checked against LLVM so not simply trusted, but abstract operations/runtime and packet/state representation relation remain trusted. Compilation frontend/LLVM/back-end toolchain and Python/Z3/Clickruntime are inexplicitTCB. No verifiedNIC/OS/DPDK/hardwarestack. §4 Theorems1–2 are checker obligations: graphcomposition meets suppliedhighlevelproperty; each concretepossibletransition has counterparts in elementmodel. Paper describes symbolicchecks, not mechanized metatheory proving wholeverifier sound. Counterexamples dependonfaithfulmodels;specificationadequacy remainshumanobligation. §§3.3,4.1: Property1 calledliveness is immediateTCP-input→nonnull-outputcondition on terminatinghandler. It is not fair-scheduler/eventualdelivery/failure-recoveryliveness. Unboundedtrace persistence instead uses explicitbaseandpacket/timepreservation obligations; no bound on numberofevents if inductionvalid. Graphcycles allowed but maximumtraversal capmustsuffice (ToyLB6); hittingcap rejects. §5.3/Table3: Initialization assumedcorrect; malformedconfigurationcrash excludedfromguarantee. Paper does not prove construction/boot/configuration parser correctness. Bitvectorpacket/time/countersemantics and any time-wrap/monotonicity/precondition adequacy mustmatchspec; no general real-time guarantee beyondwrittenformulas. §5.1: MazuNATRFC5382properties omitICMPbecauseunsupported. Showingselectedmapping/filtering/hairpinning/memorization/payloadproperties is not fullRFCcompliance. Roundrobin andMaglevLB are bothdiscussed;fiveTable2applicationrows not anenumerationofeverypossibleLBvariant. §5.3: OriginalMazuNATendpoint-independence mismatch found/fixed is actualverificationfinding. Table3is manualassessmentofexistingbugreports/CVE-relatedsearch,not replayedinjectedbugsuite. Authorsscreen30recentbugs,exclude20 (10unsupportedfeatures,3docs,5CLI,2performance),thenclassify7/10preventable. Cannotgeneralize7/10toallbugs orclaim30experimentallycaught. §5.4/Table4: FiveconcurrentTCPflows/iperfthroughput,NPtcp200byteRTT,twohosts40Gbps,not saturatedsmallpacketMpps/adversarialstatechurn/largeflowcountbenchmark. ±values areprintedwithoutdefinedsamplecount/statistictype here. NATmeanRTT14.43→15.14us (~4.9%increase),soauthornegligibleoverheadclaimdoesnotmeanalllatenciesidentical. Replacingpriorityqueuewithlinearscanmayhaveunmeasuredscalingcost. §1/Table2: Introapplicationsequence assigns1151LOC/70highlevelLOCtoloadbalancer and1447/68tofirewall;Table2labels1151/70asFirewalland1447/68asLoadBalancer. SavedTable2labels asprimarystructureddata andnotedsourcediscrepancy. §3.4,p.229/AppendixA,p.236: Prose/filterexample saysremoveallmatchingpredicateentries, butAppendixAprintsnewcontain(k)=p(k,fvalue), withneitheroldcontainconjunctionnorpredicatenegation. mapformulaalso passesfvalueratherthanexplicitfvalue(k). Sourceequationsretainedasdiscrepancy; noimplementedunsoundnessallegationwithoutartifactcheck. §§3.2–3.3/AppendixB: ToyLBproseusuallyrewritesdestination,butProperty1callsencapsulated andappendixnewflowusesinner_ipwhileknownflowusesip4. MainpropertycodeprovesnonnullTCPoutput,notexactencapsulation. AppendixCmemorizationusesc/steer_towithdefinitionnotincluded andbasecreatesp1unused;printedexamplesalonearenotverifiedartifactreproduction. §6: Specificationsstillrequirehumaninduction/designdespiteautomatedsolverchecks. NoVerus/verifiedRust,TLA+,LLM-agentorwhole-networkroutingloopresult;non-Click/XDPextensionisproposedpossibilitynotimplementedmeasurement. - how much was read: most of it read - source - record id: `automated-verification-of-customizable-2020` - Cobra: Making Transactional Key-Value Stores Verifiably Serializable (2020) - what: Cobra checks whether complete observed committed-transaction key-value histories admit a serialization order. It builds read-dependency graphs and exclusive choices between dependency edge sets, combines read-modify-write chains, coalesces readers, prunes cycle-causing choices using GPU transitive closure, and invokes MonoSAT acyclicity solving. Periodic client fence transactions and session-order edges permit conservative removal of old transactions across verification rounds. Records exact existential graph encoding, RMW/coalescing/pruning mechanisms and proof arguments, real-time uncertainty versus session order, epoch/frontier/P-SCC deletion conditions and full round theorem, completeness/trust/fault/APIlimits, replayedbughistories,allcounts/overheads/ablations and finite/offlinecapacity/failedworkloadboundaries. - limits: §§1–2: Database may behavearbitrarily, but clients/library,historycollectors and verifier sharetrusted domain. Requiresfullauthenticrequests/responses,uniquewriteversions/transactionIDs andknownreadfromrelations;libraryencodes/stripsIDs. Eachtransactionreads/writesakeyatmostonce;proofappendixalsoassumesnoreadafterownwrite. Initializationmustbemodeledasinitialwrites. Incompletehistorycannotcertifywholeexecution. §2.1/§8: Verifier/collectors assumedfaultfree;noimplementedfaulttoleranceorcrashrecovery. Missinghistorycannotbesafelyaccepted;cyclicpartialhistorycanstillshowviolationwithminorchangesbutimplementationofferedasfuturework. Sessionsblocking/nonoverlapping,multithreadedclientsallowed,nativeasyncevent-drivenclientsunsupported. §2.2: Serializationgraphovercommittedtransactions;aborted/ongoingnotnodes. Checkscommittedread/writeobservationconsistency,notopacityofabortedtransactions,wholeapplicationlogic,clientcodecorrectness,availability,eventualcommit,durabilityagainstunobservedfuturefailures orsecretdata/confidentiality. Somefailureeffectsmanifestasobservednonserializabilitybutnotallfailureguaranteesreduce to thischeck. §§2.2–3: Existenceofsomeversionorder/acycliccompatiblegraphmeansobservedhistoryserializable;doesnotrecoverorcertifyactualhiddenDBschedule. Solverunsatisfiabilitymeansnoallowedorderunderassumptions. Checkerimplementation/GPUarithmetic/MonoSATandhostruntime/hardwaretrusted;paperandlinkedappendixgivehumanmathematicalproofs,nomechanizedsource/binaryrefinementorproofassistantverification. §3.5: Strictcheckingaddsrealprecedenceonlywhencommit+clockbound<otherstart;defaultbound100ms. Ifclockdifferencesexceedboundcanfalselyreject. Inference: ignoreduncertainreal-timepairsallowacceptanceofahistorythatviolatestrueunknownorder;acceptancedoesnotestablisheveryphysicalprecedencerelationinsidetheuncertaintywindow. Accurateexternalrealorderoracleisstrongerassumption. §4.2/SupplementB: Scalablevariantchecksstrongsessionserializability: serialorderpreserveseachsessionorder,whichisstrongerthanunconstrainedserializability. IfDBdoesnotofferthis,clientsmustaddper-sessionRMWkeys. FencesandwriteIDsmodifyclientworkloadthoughDBisunmodified. Real-timeorderacrosssessionsnotimpliedbysessionorder. §4.3: Supersededaloneisnotdeletable;uncertainconstraintsamongoldtransactionsmayberesolvedbyfutureobservationsandcloseacycle. Retainfrontierlatestoldwrites,predecessorconditionsandallpossibleconstraintedges;deleteonlyP-SCCswhosemembersarecandidates. Noassumptionthateveryagedtransactioncanbegarbagecollected. SupplementA/B: DownloadedcurrentarXivversionhasproofAppendicesA/BwhereOSDImainreferencesB/C;sectionlabels/versiondiffer. Readproofswiththeirownnumbering,notclaimtheyareprintedOSDIappendices. SupplementTheorems12/17establishsingle-roundiff;Theorem54establishesnroundsacceptiffcombinedhistorystrongsessionserializable. Completeprefix/continuationpreprocessingandsession/fencesassumptionsessential. SupplementB Figure12: Missingreadpredecessorsdeferreduntilhistorycomplete;readfromalreadydeletedtransactionrejects. Wfencesreadmodifywriteepochkey,Rfencesreadonly;epochnumberisverifierpositionnotuntrustedstoredinteger. Frozenoldtransactionsneedallpredecessorsold;obsoletewritesoverwrittenoneverywrittenkey;readonlyorfrozenobsoletecandidatesdeletedonlywholeP-SCCeligible;fencetransactionsneverdeleted. Thusnormal-historycollectiondoesnotproveconstanttotalspaceforever. §§1,6,8: Worstcasetimeexponential,nopromisedreasonabletermination. BlindW-RW/WMcontinuoushistoriesexceedGPUmemoryandwerenotsupportedbydemonstratedsteadycapacity. One-shotmatchingfinitehistorydoesnotproveallpossibleDBexecutions;offcriticalpathdetectioncannotpreventbadresultsalreadyserved. §6.2: Sustainablecapacityderivedfromahead-of-time100khistory/repeatedroundtiming,optimize#transactionsperround;notdays-longliveend-to-enddeployment. Captioncapacities2.3kBlindW-RM/1.2kC-RUBiSdiffersfrombroad2kheadline;TPC-C/Twittercurvesnotshown.170M/dayisarithmeticextrapolation,paymentvsDBtransactioncomparisonsinexact. §6.1: Fiveexistingbugreporthistoriesreplayed,nofreshviolationfoundinwild. Detectiontimeonunsatisfiableexamplesnotuniversalbound. Baselinesuseallsessionedges;TPC-CspecialcaseRMWgraphalgorithmcanmatchCobra,sobroad10×claimnotallpossiblebaselinesonallworkloads. §6.3/Figure12: Prosecallshistorycollectionnegligible,butRocksDBcaptionsaysdiskbandwidthcontentiondoublesp90latencyandhalvesthroughput. Co-locationartifactorpracticalcostcannotbereducedtouniformmodestoverhead. DatastoreAPIrateceiling/fenceextraoperationsandwidearealatencydriveitsperformance;PostgreSQLsmallerrelativecost. §§1,8: Onlypointread/writekey-valueAPI;nativeSQLrange/join/sum/phantomsemanticsunsupported. PostgreSQLbenchmarkusesKVtranslation,noproofofarbitrarySQLisolation. Recoveryviausersuppliedcandidateorder/rollbackreplayisproposal,nomeasuredrepair. HistoricalElle/DBservicecomparisonclaimsnotcurrenttoolcoverage. NoVerus/Rust/TLA+orLLM-generatedproofimplementation;RustappearsinBEbaseline. Applicableasindependenthistoryoracleforcheckingagent-writtendistributedtransactionsystemsandtestingtraces,butcannotreplaceimplementationproof. - how much was read: most of it read - source - record id: `cobra-making-transactional-key-2020` - Coq-Flow-Equivalence (2020) - title: Formal Verification of Flow Equivalence in Desynchronized Designs - what: Formalizes flow equivalence between synchronous latch-based specifications and desynchronized bundled-data asynchronous implementations in Coq, finding a counterexample to a published highly concurrent protocol while proving two less-concurrent controllers correct. Defines marked-graph execution and flow-equivalence semantics, mechanizes rise-decoupled and fall-decoupled correctness proofs, isolates the flawed induction hypothesis in Cortadella et al.’s proof, and checks a concrete three-stage pipeline counterexample. The proof scripts and definitions are publicly available. - number: Coq proofs mechanize both preserved-equivalence theorems and the counterexample - number: About 50 lines of Coq tactics automate a key lemma with fewer than 20 proof-script lines - number: Public repository contains all Coq definitions and proofs - limits: Results concern the specified latch/desynchronization timing model and safety equivalence; liveness results are left for future work. The counterexample shows protocol requirements alone are insufficient, while proofs cover only the less-concurrent controllers examined. - how much was read: most of it read - - record id: `coq-flow-equivalence-2020` - Determinizing Crash Behavior with a Verified Snapshot-Consistent Flash Translation Layer (2020) - what: SCFTL implements a sequential read/write/flush disk interface whose completed flush commits a snapshot. Ordinary crashed operations preserve the last snapshot; a crashed flush may retain the prior snapshot or commit the new one. Stable logical-to-physical mapping uses committed delta pages/full checkpoints, and two-phase GC retains snapshot data until flush. Agda establishes the abstract simulation framework; Serval/Rosette/Z3 verify implementation obligations with manual transformations and three verified runtime validators. FEMU and modified xv6 benchmarks examine flush-frequency tradeoffs. Records precise crashed-flush nondeterminism and repeated-recovery semantics, no-op write bounds and upper-layer obligations, all five checkpoint recovery cases, GC capacity inequalities, four state/abstraction relations, SMT overapproximation/ghost/partition techniques and proof gaps. Saves all LOC cells, size-specific verification times, partial-data stress-check scope, exact filesystem labels and adverse high-flush/ext4 comparisons. Separates mathematical metatheory, solver checks, validation and unverified upper layers. - limits: §§1,4.2: Deterministic recovery refers to a crash during a regular operation after the last successful flush. A crash inside flush can recover either the old snapshot or the new pre-flush volatile state. The abstract specification explicitly permits both; no unique snapshot independent of crash position is promised. Repeated crashes during recovery preserve the stable state until a successful recovery. §§3.2,4.1 Figure 4: Writes outside address/counter bounds are no-ops. InBounds uses a≀amax and wcnt≀wcntmax; the counter increments after an accepted write, so exact boundary interpretation follows that inclusive condition. Upper layers must budget every atomic operation before execution, flush before insufficient capacity and split an operation larger than a whole epoch. A flush midway could persist a partial operation. §§1,6.2: Top-level SCFTL operations are sequential; concurrent FTL requests are unsupported by specification/proof. Flash commands inside or across successive unsynchronized operations can overlap and reorder across pages until SYNC. Hardware parallelism is distinct from concurrent client-operation verification. §§2,4–6: Agda mechanizes the disk/simulation metatheory; C implementation obligations are symbolically evaluated with Serval and discharged in Z3. Manual reformulation/partition of obligations is connected by pen-and-paper reasoning, explicitly leaving a gap in the formal proof. Do not call the whole C-to-snapshot proof one continuous machine-checked derivation. §§6–6.1: Three properties are not proved for the main implementation: injective L2P after recovery, enough space after recovery and enough space after flush. Verified validators establish success-flag⇒property and may only change validation variables. No notification occurred in experiments; that does not prove the implementation always satisfies these properties or always continues successfully. Failure notification is not a demonstrated recovery/fallback for these three checks. §6: TCB assumes error-free flash; correct Z3, Agda and Serval; correct LLVM-to-machine-code translation; correct LightNVM Linux module. Hardware/media faults, bad blocks, wear-out and ECC failures are outside the guarantee. No hot/cold separation or wear leveling implemented; validator-checked unverified allocator is an example of a possible extension. §§3.1,5.1: Model has erase-before-write/sequential page constraints, same-page command ordering and arbitrary cross-page scheduling. READ returns the latest modeled content irrespective of sync flag; normal I/O semantics assumes this behavior. Unsynchronized crash pages are overapproximated as arbitrary values, not enumerated physical histories. This is conservative for crash reasoning within the assumed command semantics. §§3.3–3.4: L2P is the persistent primary data; P2L/queues/counts rebuild after recovery. Invalid blocks may still hold stable-snapshot sectors, so they become erasable only after flush. No internal flush is allowed merely to facilitate GC because it would change the externally selected snapshot. Capacity bounds and reserved space are part of the implementation contract. §§4.2–4.4: Behavioral correctness compares reads in normal states following successful operations; crash states need only weaker CR/CI. Initial new disks must recover before use. Lemma 1 proves the abstract disk snapshot-consistent; Theorem 1 derives observational simulation from initial relations/per-operation Type A and invariant Type B obligations; Theorem 2 transfers snapshot consistency. These safety properties do not establish termination under arbitrary permanent crashing or concurrent request semantics. §§5.2–5.4: Ghost arrays remove existential choices while non-ghost transitions remain independent. Splitting postconditions and dropping antecedent conjuncts strengthens obligations; proof partition manually maps crash states to old/new flush outcomes. Fast solver checks still require correct semantic construction and checked side conditions; absence of one timeout is not completeness for all capacities. §6: Verification instantiates one capacity at a time: reported 8GB and 256GB results and selected write bounds 2048–20480. It is not a universally quantified theorem for all device sizes/configurations. Counts are 98 RI/AR and 17 CI/CR conditions; they are not 115 independently complete correctness properties. §7: Performance runs on FEMU/QEMU emulated Open-Channel SSD, Linux 4.15, liblightnvm/libaio with added NVMe base-command latency emulation. Not a physical SSD endurance/power-cut evaluation. Host is printed as 12-core i7-8700; retain source label without independently correcting core/thread terminology. §7.1: Stress tests compare only first few bytes of every sector; four configurations/eight hours, over 1.4TB writes, about twelve million flushes and ten thousand simulated crashes. Garbage on unsynchronized pages tests a modeled failure behavior. Passing these checks is not exhaustive byte-level recovery validation or proof that real hardware obeys the model. §7.2: async baseline does not do checkpointing and omits 2PGC and write bounds. sync uses synchronous commands and an assumed battery-backed merge page, ignoring flush. pblk receives one-thread/four-thread tests while SCFTL stays sequential. These have unequal crash guarantees and concurrency; performance ratios are conditional tradeoffs. §7.3: xv6 changes are unverified demonstration code; extending proof to upper layers remains future work. xv6-group persists through fsync and allows later system calls to roll back as a prefix, whereas comparison xv6 variants provide immediate durability at every syscall. The speedup combines lower flush frequency, log removal and changed durability timing; it is not an equal-durability implementation-only gain. §7.3 Figures 7–8: Main headline says 3–30× and at worst two times slower, but rounded printed largefile labels give 39/0.6=65× versus xv6/async (32.5× versus sync), and SQLite 142/61≈2.33× slower than ext4-data. Preserve exact labels and identify approximate headline wording rather than force agreement. Largefile Figure 7 group bar exceeds chart top; use printed 39MB/s rather than bar height. §7.3: Five runs per filesystem workload, reported standard deviation under 8%; this statement does not supply raw runs or certify every FTL/boot measurement used five repetitions. mailbench on ext4-metadata adds fdatasync to its temporary file. Benchmark-specific sync protocol/configuration matters for fairness. §§2,8: Verified layered storage, concurrent FTL operations and commercial optimizations remain future work. Relevant to crash specifications and agent proof evaluation, but no Verus/Rust, TLA+, LLM-agent study or distributed-consensus theorem. Saved PDF contains no artifact appendix/repository pointer; no external implementation or proof replay. - how much was read: most of it read - source - record id: `determinizing-crash-behavior-with-2020` - DistAlgo runtime checking (2020) - title: Assurance of Distributed Algorithms and Systems: Runtime Checking of Safety and Liveness - what: This work checks safety and bounded liveness of runnable DistAlgo programs while they run. It uses executable queries, fault injection and timeouts, and shows them on a polling example. - number: Fig 1: 24-line polling program; Fig 2: 41-line safety checker - number: timeouts q-r 0.00001 s, o-o 0.0001 s, total 1 s; raising o-o to 0.01 s gave no L2 timeout in dozens of runs - number: 10% message loss produced timeout failures - limits: It sees observed executions only. Bounded liveness turns liveness into safety. The paper gives no fixed denominator and no false-alarm rate. - how much was read: most of it read - source; notes: Assurance of Distributed Algorithms and Systems: Runtime Checking of S - record id: `distalgo-runtime-checking-2020` - Giskard specification (2020) - title: Specification of the Giskard Consensus Protocol - what: The paper gives a rigorous executable-style specification of the Giskard consensus protocol used by PlatON, defining nodes, epochs/views, message formats, local/global block stages, state transitions, and fault behavior. It proves three safety properties: same-height prepare blocks in one view are identical; same-height precommit blocks across views are identical; and same-height committed blocks are identical. The proofs reduce quorum intersections and view-change height relationships to contradictions under the one-third Byzantine bound. The specification is intended as an implementation and formal-verification reference, while liveness is left open. - limits: The network is partially synchronous and nodes communicate by authenticated broadcast; at most one third of participating nodes are Byzantine. Epoch/view changes can be asynchronous across nodes, and Byzantine behavior includes proposing multiple same-height blocks or voting without required messages. Safety reasoning focuses on message/block stages and does not establish liveness, performance, implementation correctness, or cryptographic assumptions beyond authenticated signatures and quorum behavior. The protocol has ten-block views and VRF-selected epoch participants as modeled in the specification. - how much was read: most of it read - source - record id: `giskard-specification-2020` - Igloo refinement bridge (2020) - title: Igloo: Soundly Linking Compositional Refinement and Separation Logic for Distributed System Verification - what: Introduces Igloo, an Isabelle/HOL framework connecting compositional event-based distributed-system refinement to code verification in expressive separation logics. Sound refinement and trace inclusion let protocol proofs transfer to heterogeneous Java/Python implementations verified by VeriFast and Nagini. The framework proves composition and translation theorems for event systems, I/O specifications and process implementations. Case studies cover leader election, primary-backup replication and two-party authentication, including fail-stop servers, TCP, UDP, cryptography and unbounded component instances. Isabelle formalizes all definitions/results; code-level abstraction functions connect model states to locked heaps and message bytes. - number: Three complete case studies - number: Primary-backup proof uses nine invariants for backup consistency - number: Java and Python implementations verified with VeriFast/Nagini - number: All definitions and results mechanized in Isabelle/HOL - limits: Correctness depends on explicit environment/fault assumptions (perfect failure detection, channel guarantees, Dolev–Yao abstraction) and trusted library contracts/parsers. Implementations are manually written Java/Python; extraction is not automatic. Security bitstring cryptography is abstracted through a surjective abstraction function and trusted cryptographic libraries. - how much was read: most of it read - source; notes: papers - record id: `igloo-refinement-bridge-2020` - Leaderless SMR ROLL limits (2020) - title: Leaderless State-Machine Replication: Specification, Properties, Limits - what: Defines leaderless state-machine replication using possibly cyclic dependency graphs, separates committing from stabilization/execution, and decomposes decision into dependency discovery plus per-command consensus. Claims ROLL tradeoff 2F+f−1≀n between failure tolerance f and fast-quorum size n−F under Reliability, Optimal Latency, Load Balancing. For protocols on its parameter frontier, every chain length k has some failure-free 2-asynchronous run with a live dependency chain of length k. A five-site Google Cloud experiment illustrates EPaxos tail latency increasing with contention, unlike Mencius; proofs in conference paper are sketches with formal treatment deferred. Records graph phases, stable agreement modulo aborted dependencies, batch execution order, DDS visibility/weak agreement, exact ROLL quantifiers, quorum partition proof, skyline examples and chain induction. Separates empirical tail/correlation observations from existential worst-case chains, nice runs from synchrony, decision from execution, and stated abstract properties from a machine-checked implementation. Replaces earlier record that lacked later sections. - limits: Fixed n≄2 message-passing processes, fail-stop rather than Byzantine faults, deterministic replicated state machine and unbounded command/log space. Model extends asynchronous wait-free computation with failure detectors; precise detector admissibility/fairness assumptions are deferred to [22]. Do not read Reliability as solving consensus in pure asynchrony without such an assumption. Clients are not modeled; replicas proxy submissions, and different replicas may submit the same command. Conflicts safely overapproximate semantic noncommutativity, considering both final state and response values; relation is symmetric and nonreflexive. Distinct nonconflicting commands may execute in different orders. Classic logs append immutable slots; Generic SMR uses acyclic partial logs with incoming-prefix closure and compatible upper bounds. Safety properties are distinct from termination and real-time/client-response contracts; no complete client refinement proof printed. Leaderless graph maps each command to pending⊄, aborted⊀, or a committed dependency set; phases pending/abort/commit/stable/execute. Aborted commands are removed from dependency sets permanently. A committed command is stable only when no command in its transitive dependency closure remains pending. Stability agrees on stable dependencies globally; conflicting committed commands must have at least one direct dependency between them, allowing cycles rather than a prechosen total order. Algorithm1 executes the largest still-stable subset of a stable command’s closure, in reachability order between components and canonical total order within a cycle. Already executed dependencies need not execute again. Invariant1 excludes an unexecuted dependency outside an earlier batch; Invariant2 says if conflicting c precedes d within a batch then c is in d’s transitive dependencies. It is not simply arbitrary SCC iteration: batch includes eligible dependency predecessors too. Abort pruning, stable-versus-execute status and canonical order must be made explicit in a formal implementation. Theorem1 states Generic SMR reduces to Leaderless SMR without messages, with proof deferred. Direction is an implementation/refinement claim, not equivalence of arbitrary cyclic dependency states with Generic acyclic logs. Ordering all commuting commands to recover Classic SMR would require extra communication. The common dependency graph itself is not yet an agreed total execution log. Algorithm2 calls DDS.announce(c), returning dependency set D or abort⊀ and fast flag b; slow path invokes per-command consensus, then records and broadcasts outcome. Coordinator or a process suspecting it may submit/recover. A nice run has no failures and a perfect failure detector, so only the coordinator calls that command’s consensus. Leaderless does not mean no coordinator: each command has one, with no single primary ordering all commands. DDS Visibility: two conflicting nonaborted announcements include each other in at least one returned set. Weak Agreement: if one announcement of c returns a nonaborted set with fast=true, every other announcement of c returns a nonaborted set; differences contain only commands whose every announcement aborts. Thus raw dependency sets may differ, but aborted differences are removed before stable agreement. Theorem2 claims Algorithm2 correctness, proof in [22]; consensus, detector, and DDS are assumed abstract services, not implemented or verified here. Examples: rotating coordinators preassign order and always use slow flag; Clock-RSM uses timestamps and majority wait, propagates clocks for stabilization; Mencius aborts unannounced prior slots and needs everybody for fast flag; EPaxos example omits sequence numbers, unions observed conflicts, uses spontaneous agreement, and falls back/recovery to a majority; Caesar timestamps and waits/rejects inconsistent higher-timestamp conflicts. These are explanatory decompositions, not verified full protocol implementations or safety audits of recovery rules. Reliability states every submitted command eventually decided at every correct process when at most f failures. This is decision, not by itself a quantitative execution-latency guarantee. Surrounding prose inconsistently says after f failures no progress or less than f; retain the explicit inclusive property. Stable termination of dependency closures and outcomes of submissions by faulty coordinators require the detailed model. Footnote3 discusses reconfiguration/persistent recovery informally, outside the fixed fail-stop proof. Optimal Latency: in every nice run, announce returns after two message delays with nonaborted D containing only previously announced commands; if no concurrent conflicting command, fast flag true. With contention it may be slow-flagged despite two-delay DDS completion, and complete execution may wait arbitrarily longer. Load Balancing: any quorum Q containing coord(c) with |Q|≄n−F can serve its announcement in a nice run. This is freedom of quorum choice, not an empirical guarantee of equal load or geographic latency. Theorem3 ROLL assumes those properties and an available pair of noncommuting commands. Bound 2F+f−1≀n is necessary, not sufficient to construct a protocol. Together with majority-style bounds f,F≀floor((n−1)/2), skyline means no simultaneous parameter improvement. For fixed f the algebra gives quorum q=n−F≄ceil((n+f−1)/2). Do not substitute arbitrary fast-consensus quorums: ROLL quorums must contain that command’s coordinator. Proof sketch assumes violating inequality, partitions P1,P2 of sizeF−1 and Q of size n−2F+2. CAP premise 2F<n gives two coordinators p1,p2 in Q; fast quorums Q1=P1âˆȘQ−p2 and Q2=P2âˆȘQ−p1 have size n−F. Solo nice runs decide empty dependencies. Concurrent run delays cross messages then crashes Q; integer violation implies |Q|≀f. Survivor cannot distinguish carefully spliced runs, forcing empty dependencies for both conflicting commands, contrary to Visibility/Consistency. Detector-history equivalence and eventual stability are essential deferred proof details; the conference sketch invokes Reliability (defined as decision) to obtain stability without fully showing that bridge. Printed consequence that a plain majority fast quorum tolerates at most one failure is not implied by its displayed inequality. For odd n=2m+1, q=m+1 permits f≀2; for even n=2m, q=m+1 permits f≀3, subject also to f≀floor((n−1)/2). Its own n5(F,f)=(2,2) example gives majority q3 with f2, contradicting the unqualified consequence. This is a printed inference conflict, not a demonstrated implementation or refutation of Theorem3. Frontier examples: n5 only(F,f)=(2,2), n7 (2,3),(3,2); EPaxos attains first n7 tuple, Atlas offers(3,1). Paper calls EPaxos/Alvin optimal for n=2f+1, Atlas for f1 and even n or n3. Fast quorum floor(3n/4) for EPaxos needs integer rounding; nearby f+(f+1)/2 notation is unrounded for even f. Table1 rotating-coordinator quorum0 should not be treated as a legal coordinator-containing fast quorum; protocol lacks Optimal Latency and uses no fast DDS path. Table1 marks Caesar as having Optimal Latency, but §7 explicitly says Caesar lacks it because even contention-free commitment may need two round trips. Keep this internal classification conflict rather than certifying either claim from the unread Caesar paper. Table1 has Clock-RSM and rotating coordinator without Optimal Latency, Mencius with it but nonoptimal frontier; EPaxos/Alvin/Atlas with stated frontier conditions. Historical protocol optimality/current best claims are not checked beyond this2020paper. Chain c1
ck means ci∈deps(ci+1), so dependencies run toward the first element. §5.1 defines live as first command not stable at any process; §5 introductory overview instead says last, which is inconsistent. With pending d and deps(a)={b},deps(b)={a,c,d}, chain dba blocks a; c alone stable. A live finite chain does not assert an infinite run, inevitable starvation, or every execution having a long chain. k-asynchrony bounds overlaps: if any message overlaps both first and last messages of a causal message path, path length≀k. Overlap is real-time interval overlap, not Lamport independence of endpoint events. Formal definition is universal over all messages/paths, unlike introductory prose saying existence of a path. 2-asynchronous is not a fixed bound on wall-clock message latency, delay ratio, or clock skew; nice means failure-free/perfect detector, not lock-step synchronous. Theorem4: for every finite k>0, there exists a 2-asynchronous nice run of any ROLL-optimal protocol with live chain sizek. This is a worst-case existence theorem, not a probability distribution, expected latency, or measured percentile bound. Conference statement does not give a numeric command-latency formula in milliseconds or require every command to suffer. Full proof in [22]; conflict-pattern/termination assumptions belong to that detailed model. Chain sketch splits each announcement into request-send S, intermediate M, reply-return R. Induction constructs complete nice σi with no pending messages, chain ci
c1, and interposed Γprime whose paths have size≀1 and whose participating overlap with Qi is Pi of sizef−1. Alternate quorums and indistinguishable coordinator views force next dependency. Truncating final replies makes the chain live. Figure4 gives n5,k7 and quorums{p1,p2,p3}/{p3,p4,p5} with intersection{p3}. Exact general quorum/induction case analysis deferred; sizek need not mean k different replicas. Experiment: Google Cloud, five sites South Carolina, Finland, Canada, Australia, Taiwan (leader),128 closed-loop clients each, no-op service, synthetic key conflicts atρ=0,2,5,10,30percent for EPaxos; Paxos and Mencius baselines. Latency submission-to-execution at steady state, not commit acknowledgment. Each operation picks common key42 with probabilityρ, unique otherwise; ρ is hot-key choice probability, not directly fraction of conflicting random command pairs (under independent choices that pair probability isρÂČ). No-op operations commute semantically, so key conflicts are an intentional safe overapproximation. Figure1 CDF shows EPaxos tails increasing with synthetic contention and Mencius lower median; paper reports latency/batch-size correlation>0.7. No named correlation estimator, sample count, duration, repeated-run uncertainty, machine types, protocol versions, or fault injection specified in this conference paper. No exact quantiles tabulated; graph readings must not be invented. Correlation plus worst-case theorem supports a mechanism, not measured causal attribution of every tail sample or general workload performance. Mitigation discussion: pure writes may return at commit or durable f+1 receipt, but footnote5 requires later reads to wait for all preceding writes to preserve linearizability. Claimed read dependency exclusion assumes cited per-read single-process execution scheme, not arbitrary reads. Waiting for prior announcements can still allow chain of sizen by rotating coordinators, stated without proof here. These are tradeoffs, not new verified algorithms. ROLL Optimal Latency/Load Balancing enforce request-reply form with no pending messages at announcement completion. Weaker latency permitting background messages can sidestep the bound in a fully synchronous model by sharing replies among quorum members. Discussion says partially synchronous version retains ROLL and chaining requires more asynchrony. Thus theorem is relative to its formal properties, not a universal impossibility for every system called leaderless or every weaker fast-path definition. Entire supplied17-page paper now read, including previously missing §§4–8. Theorems1–2 proofs and formal versions of ROLL/chaining deferred to arXiv2008.02512. No machine-checked proof, Verus/Rust/TLA+ specification, LLM involvement, artifact audit, experiment rerun, or independent verification of underlying protocol papers. Citation[4] about dependency-set decomposition names an unrelated local-independent-set approximation paper in bibliography; original intended source cannot be recovered from that reference here. - how much was read: most of it read - source - record id: `leaderless-smr-roll-limits-2020` - Li et al. Pegasus 2020 (2020) - title: Pegasus: Tolerating Skewed Workloads in Distributed Storage with In-Network Coherence Directories - what: Uses a top-of-rack programmable switch as a metadata-only directory that tracks the currently observable versions and replica locations of popular keys. It can place each write on a fresh replica set and route reads to current replicas, balancing skew without storing values in switch SRAM; extends to inter-rack chain replication. Supplies a core linearizability argument, reports a safety-model-checked TLA+ specification and evaluates P4/C++/DPDK prototypes. Captures reply-based externalization invariant (including reads that expose unacknowledged writes), explicit get/put-only API, optional request-ID deduplication and its migration pause, hot-key promotion/demotion/virtual writes, version/collision/GC assumptions, read-only load-bound scope, inter-rack recovery/version contracts, printed branch reversal and actual SLO/workload/resource/scale controls. - limits: Basic design is an in-memory read/write key-value store over32–256 servers within a rack and one trusted programmable ToR switch. No read-modify-write, atomic cross-key operations or intra-rack fault-tolerance guarantee. Hot-key copies are for load balancing, not a complete durability scheme; most cold keys have one copy. Multi-rack chain replication separately supplies redundant copies. No Byzantine client/server/switch protocol or persistent storage proof (§3,§7). All requests and replies must traverse the same directory authority for a rack; clients initially address home servers for cold keys. Network may lose/reorder/duplicate packets. Switch assigns monotonically increasing versions and servers atomically retain the higher version/value, so older arrivals cannot overwrite new state. Safety relies on correct server/switch processing and directory consistency; arbitrary network loss does not imply termination. Fixed pipeline implementation is not accompanied by a proved P4/compiler/hardware refinement (§§4.3,5–6,8). Core switch state is global ver_next, replicated-key membership rkeys, per-key rset and ver_completed. Write request receives a fresh version; replicated writes may target any server(s), reads one current rset member. A higher-version read or write reply replaces rset with its sender and updates completed version; equal version adds sender. Lower replies do not roll back directory state. Higher writes can already exist at servers before replies expose them; rset is a routing authority, not an assertion that all physical copies are equal (§6.1–6.2,Algorithms1–2). Correctness invariant is at least one directory address with the latest externalized write plus its version. A read reply can externalize a concurrent newer write before its write acknowledgment, so monitoring only write replies is insufficient. Fixed-popularity proof orders writes by assigned versions and establishes later reads see at least preceding completed-write/read versions. Arbitrarily delayed replies may return older data for overlapping operations without violating linearizability (§6.2.3). §6 reports a public TLA+ specification model checked for safety. Paper does not supply state-space bounds, checker/version/configuration, state count/time, exact checked invariant set or whether hot-key changes, at-most-once transitions and multi-rack reconfiguration are all modeled. No model text/proof is printed, and no liveness/model-to-P4 proof is claimed. AppendixA lists the specification in the artifact but gives performance rather than model-checking workflow. This record reads the paper, not the repository, and does not independently verify or rerun that safety result. Hot-key addition first installs home-server rset and a ver_completed fence of ver_next−1, then rkeys membership. This avoids admitting stale in-flight versions as new replicas; promotion does not itself copy the object. Later writes redirect replication. Demotion marks transition, forces next write home, and removes the directory entry only after the matching reply. Read-only/infrequent-write objects require controller-triggered virtual writes preserving value while raising version and forwarding it. These ordered control-plane transitions need their own proof obligations (§6.3). Optional Pegasus-AMO suppresses retransmitted writes via client request tables and globally unique REQID. A deterministic REQID-selected detector receives original/retry, processes only a fresh request, and forwards to selected additional replicas, distributing writes independently of hot-key placement. Most-recent-request-per-client tables need an appropriate client request/retention discipline; paper does not give a general arbitrary-concurrent-request dedup proof. Transitions between popular/cold state pause writes and migrate per-client table state (home→all on promotion, aggregate latest→home on demotion). This is not an unconditional end-to-end exactly-once liveness guarantee (§6.4). Random and load-weighted round-robin selection are policies separated from coherence correctness. Replication factor is proportional to reads-per-write to bound replication overhead; writes can choose a fresh set each time. A full independent proof of all performance policies is absent. REQID-based AMO detector selection is needed to preserve write load balancing rather than route every hot-key write to its home (§§4.4,6.4–6.5). Load-balance analysis extends cited caching result: after removing hottest O(n log n) keys, residual load fits capacity up to a slack factorα, under the prior randomly partitioned cluster-service setting. Given spare total capacity byα, full replication plus suitable scheduling gives a read-only load redistribution construction. §4.5 explicitly says this initial analysis may not apply once write-dependent replica sets restrict read choices. Arbitrary read/write-ratio effectiveness then has intuition and experiments, not the same stated universal theorem. n counts servers, not keys; O(n log n) directory entries also store per-server locations and are not O(n log n) bytes. Hash collisions use server-held current popular-key sets and forwarding a misrouted cold key back home; if two hot keys collide only one is replicated. Controller must keep membership information correct.64-bit versions make overflow unlikely (claimed>100years at line rate), not mathematically impossible; wrap handling is only delegated to standard techniques. Controller GC removes stale-version/nonhome-cold copies based on reported completed versions. These features are discussed, without comprehensive modeled collision/wrap/GC state-machine evidence in the paper (§6.6). Multi-rack design maps key ranges to chains of Pegasus racks through a global configuration service. Write flows head→tail, read goes to tail; popular replicas within a rack are load-balanced by its ToR. It cannot balance a hot key across arbitrary racks; simulations are mentioned without detailed presented data. Treat each rack as one chain replica, repair failed racks via standard chain replication. Efficient individual-server repair is stated but explicitly omitted from the paper (§7). Reconfiguration must retain version monotonicity when head changes. An existing chain member has observed completed versions; a newly added head must first raise ver_next to at least other chain switches. Failure detection, configuration agreement, state-transfer fencing and in-flight-request handling are delegated/described at high level, not mechanically proved here (§7). Reader finding: §7,p.395 prints the multi-rack condition backward: stamp ver_next if VER is not null, otherwise preserve incoming VER. Adjacent explanation says only the head supplies the version and all downstream racks retain it. Those cannot both hold for normal null-initialized client requests. Intended branch is stamp when VER is null; preserve non-null and advance local ver_next beyond it. This is a rendered prose inconsistency, not an identified bug in the uninspected TLA+/P4 artifacts. Switch uses exact-match hot-key lookup/control-plane updates, two version register arrays, and rset size/bitmap/server-list arrays. The flattened per-key list index is k*n+i. Packet rewrite/multicast handles one/many destinations. Replicated keys have read/write counters; cold traffic sampled to switch CPU for access-frequency estimation, controller scans and updates. No value payload is stored in switch, permitting larger values with the same directory footprint (§8). Implementation: P4 data plane on Tofino, Python controller via Thrift APIs, C++/IntelDPDK store and clients. Single-rack testbed28nodes, dual2.2GHzXeonSilver4114/20totalcores,48GBRAM in §9, Ubuntu18.04,25GbConnectX-4,Arista7170-64S;16storage/12client nodes. AppendixA says48GB per socket, so exact RAM allocation wording differs; keep §9 configuration distinct. It is not verified Rust/Verus (§9,AppendixA). Workload is generated open-loop Poisson arrivals over one million random keys under uniform/Zipf distributions, not replay of production operations. Consistent-hashing baseline has16virtualnodes/server. Typical64Bkeys/128Bvalues enable NetCache comparison, whose limit is128Bvalue and whose switch reserves10,000suchvalues. Pegasus uses<3.5% SRAM for metadata; systems spend switch memory differently. Paper does not report confidence intervals/repeated-run counts for all figures (§9). Performance metric is maximum offered/completed throughput satisfying a99th-percentile latency SLO, selected as5×unloaded median; shown50”s. Read-only uniform→Zipfα.9/1/1.2: Pegasus nearconstant (~150Mops/s graph),10×consistent hashing at1.2. NetCache can outperform Pegasus for read-only skew because cache hits avoid servers. Headline10×/90%fewer servers is conditional on this baseline/workload/SLO, not every storage workload (§9.1,Figure7). Write-ratio test fixesZipf1.2/50”s SLO and varies0–100%writes. Pegasus/AMO maintain relative benefit, but absolute throughput falls with write contention/server cache invalidation. NetCache loses>80% throughput with10%writes and up to11.8×gap versus Pegasus in write-heavy cases. No claim that strong replication makes writes free or all workloads reach identical throughput (§9.2,Figure8). Scaling is measured1,2,4,8,16storage servers underZipf1.2/SLO; nearlinearPegasus while consistenthashing stalls after≈2. Host-directory implementation processes both requests/replies and cannot match one storage server in this prototype; this is not a theorem ruling out all software directory designs. Value-size sweep64B–1KB compares skewedPegasus to uniformconsistenthashing; operation throughput falls with size, not bit-throughput regression. Claimed arbitrary-value-size support exceeds measured≀1KB range (§§9.3–9.4,Figures9–10). Only8–16hotkeys suffice for most gain on tested16-serverZipf.9/1.2 workloads. This is nonadversarial evidence, not a fixed universal key-count bound; cited adversarial bound has different constants (~8nlogn). Half-server-capacity ablation reduces capacity of half by50%; random placement throughput halves as slowest servers bottleneck, whereas weightedroundrobin better uses residual capacity (§§9.5–9.6,Figures11–12). Dynamic tests runZipf1.2 at80%utilization and change100keys every10s. Hot-in promotes100coldest to hottest, causing latency spikes returning to normal within100ms; graph bins99thpercentile over100ms. Random swaps among10,000hottest cause no visible tail change. This is finite workload adaptation, not a hard100msfailover/directory-correctness theorem (§9.7,Figure13). Multi-rack experiment uses a different slower72-nodeXeonE5-2450/1.8GHz/10Gb-no-DPDK cluster: two24-storage-node racks and thirdclientrack. Each rack heads half the chains/tails half. Read-onlyZipf1.2 gives1.7×throughput for two replicas; one-rackfailure at t0 retains service. Text says half prior speed, but Figure14 visually ≈13→8Mops/s (roughly62%retained); treat “half” as coarse wording rather than exact measured ratio. No explicit failure detection/repair latency, write-heavy crash history or repeated-run/error analysis is supplied (§9.8,Figure14). ArtifactAppendixA documents MITlicensedP4/Python/C++/TLA+repo, Ubuntu18.04/Linux4.15, GCC7.5,SDE9.1.1/P4-14,DPDK19.11,dependencies and million64BASCIIkeys.10–60sexperiments tune clientthreads/interval to maximum throughput underSLO and vary servers,mode,α,readratio,value size/keycount. Printed badges on PDFp2 say Available/Functional/Reproduced; these are artifact-evaluation labels, not proof of implementation correctness. All appendixinstructions read, none executed; no currentrepo/status investigated. - how much was read: most of it read - source - record id: `li-et-al-pegasus-2020-2020` - Modeling the Raft Distributed Consensus Protocol in LNT (2020) - what: # Whole-paper record: Modeling the Raft Distributed Consensus Protocol in LNT (authored by agents unless marked 🧑) Hugues Evrard, MARS 2020, EPTCS 316, pp.15–39, DOI 10.4204/EPTCS.316.2; arXiv 2004.13284v1. Read all 25 PDF pages, §§1–5, the 16 references, complete Annex A model and Annex B skeleton/reliable network. Inspected all 25 rendered pages and read the entire released LNT model and README statically. Exact passages, source lines and PDF/printed pages are in quotes.json and combined.quote-source.txt. No author program, compiler, model checker, prover or solver was run. ## What the paper establishes (authored by agents unless marked 🧑) This is a Raft modeling and experience paper. Its stated goal is “to discuss the process of developing the formal model of a distributed system using LNT” (§1,Q2). The model covers leader election and log replication, separates server and network processes, and illustrates CADP state-space development. It reports a concrete size comparison between reliable and unreliable networks. The complete printed model makes its abstractions inspectable. The paper does not enumerate checked Raft safety/liveness formulas or report their truth values. It gives no parameterized correctness proof or implementation refinement theorem. The abstract attributes Raft correctness to “a manual proof, based on a TLA+ specification” (Q1), and §1 says that proof was presented by the Raft authors (Q2). Thus the LNT model and CADP availability should not be recorded as a new complete Raft verification result. The paper reports two discrepancies in the original TLA+ specification: an unintended prime on matchIndex in AdvanceCommitIndex and a missing candidate-to-follower transition after a same-term leader heartbeat (§3.7,Q20). It says the former “made no practical difference” and the latter “did not impact Raft manual proof.” These are the author's assessments, not independently checked proof conclusions. The pinned historical TLA+ source credits Evrard for the apostrophe correction (Q55). That pinned snapshot already contains the candidate stepdown branch (Q54); we did not reconstruct the earlier faulty revision. ## Assumptions and represented behavior (authored by agents unless marked 🧑) The configuration fixes the number of servers and bounds terms and total client interactions, “otherwise the state space would be unbounded” (§3.2,Q9). Printed and released defaults are three servers, three terms and three client interactions. The sole measured comparison instead uses two servers, one term and one interaction. Changing server count also requires changing instantiated processes and the array range (§3.3,Q10; Q41–42). The quorum is the strict majority `(MaxServerID div 2) + 1` (Q41). The scope is “the core of the protocol, i.e. leader election and log replication”; dynamic membership and log compaction are omitted (§3,Q6). Client actions carry only the leader ID. “We do not need to model client commands, or server responses to clients” (§3.4,Q11). Entries contain only terms (§3.6,Q14; Q44). This cannot establish distinctions between different same-term commands or full service/client response behavior. The network can reorder, drop a message on send, or deliver while retaining a message for duplication (§3.5,Q12–13; Q43). The declared buffer is a set, despite the name msgBag. Identical pending messages collapse to one element. There is no explicit capacity bound or delivery fairness condition. The reliable alternative removes loss and retain-after-delivery branches, but still permits arbitrary message selection and provides no fairness guarantee (Annex B.2,Q40). Its smaller state space supports development under fewer network behaviors. Timeouts are nondeterministic alternatives without elapsed time or randomized duration (§3.6.1,Q15; Q45). At the term bound only the election alternative stops; receiving and other alternatives remain possible. A candidate votes for itself directly, reducing self-message actions relative to the compared TLA+ model. Lower-term messages, including requests, are discarded; the author says this is safe, but supplies no equivalence proof (§3.6.2,Q16). The disrupt branch permits a crash between LNT actions, including midbroadcast (§3.6.4,Q19). It ends in Crash(self), after which the server process terminates; no reboot/recovery transition appears (Q47). This is a process-level crash model, not evidence about interruption at arbitrary implementation instructions. Leaders accept client interactions, append a term entry, and replicate on a later timeout (§3.6.3,Q18). AppendEntries carries zero or one entry, enforced by an assertion (§3.6.2,Q17; Q49). ## Concrete evaluation and cases (authored by agents unless marked 🧑) For two servers, one term and one client interaction, the unreliable network yields 11,862,015 states and 74,821,042 transitions. The reliable network yields 22,311 states and 108,176 transitions (§4.3,Q23–24). Dividing the supplied counts gives about 531.67 times fewer states and 691.66 times fewer transitions. The paper describes the reductions as “three and two orders of magnitude smaller, respectively.” Preserve its wording alongside the exact counts; the computed ratios are reader arithmetic. No timing, hardware, tool release, repeated trials, per-property results or experiment logs are reported for this comparison. The archive contains only README.txt and raft.lnt, with no property files or reproduction script. The downloaded source uses different syntax from the print, including alt/select and card/length; exact textual identity or the exact experimental checkout is not established. A reliable network is a development proxy. The paper says these state spaces “are not relevant for a proper verification” and that an issue found there also appears with the unreliable network (§4.3,Q24). This supports preserving finite bad witnesses under the stated behavioral inclusion, not an unrestricted transfer of liveness or arbitrary formula truth. Figure 1 is a syntax example: two calculator operations, 1+2=3 and 3×4=12, can occur in either order in a four-state/four-transition graph (PDF p.4/printed p.18,Q8). It is not a Raft performance experiment. There are no tables. The DLC/Consul comparison is explicitly attributed to §6 of prior thesis [2]. For 1000 commands and three servers the paper cites 2.3 seconds for DLC versus 0.5 second for Consul, and reports prior interprocess TCP communication under half a millisecond (§4.6,Q28–29). Consul batches commands while DLC sends a round for each command, so this is not an isolated measurement of formal-method overhead. The thesis and implementation were not independently evaluated here. ## Static discrepancies requiring care (authored by agents unless marked 🧑) Three local source cases qualify use of the model as a reference specification. All appear both in the visually inspected appendix and released LNT source. These are reader-created symbolic valuations; no reachable execution or protocol safety violation has been established. - Same-term candidate: reception sets Follower only when `mTerm > currentTerm`; the AppendEntries handler receives no state argument. A Candidate at term 1 processing a valid term 1 empty heartbeat remains Candidate (Annex A.5/A.6.3,Q35–36; released source Q46/Q49). This disagrees with the paper's Raft overview that “other candidates step down to the follower state” (§2.2,Q4), and resembles the upstream omission discussed in §3.7. It does not establish that the earlier TLA+ defect causes a safety failure. - Failed replication response: `nextIndex[mFrom] := max(1 of nat, nextIndex[mFrom])` has no decrement. A local value 3 stays 3 (Annex A.6.4,Q37; Q50). This disagrees with the §2.3 description that the leader retries “with a lower index” (Q5). We have not established a reachable failed replication trace or measured its effect. - Follower commit assignment: `commitIndex := mLeaderCommit` lacks a cap by local log length or a monotonic guard. With a locally empty log, previous index 0, empty entries and leader commit 1, the handler leaves an empty log with commitIndex 1 (Q36/Q49). Reachability is unknown. The pinned TLA+ source also directly assigns the leader index and says an old duplicate request can decrease it (Q54). This may be an inherited abstraction; do not label it a newly discovered LNT safety bug. The symbolic cases are retained in static-witnesses.json. Their purpose is to distinguish the source's actual expressions from the prose and from unproven invariants, not to substitute for model checking. ## What this adds to the research topic (authored by agents unless marked 🧑) The paper contributes an explicit distributed consensus model, reusable network/node structure, evidence that network assumptions strongly affect state-space size, and a concrete account of translation exposing specification discrepancies. It also explains the gap between a model and implementation: the Distributed LNT Compiler generates C but its synchronization protocol assumes reliable interprocess communication (§4.6,Q28). Discussion of Verdi is attribution to related work, not an implementation correctness result from this paper. The state-space advice is qualified. Fixed broadcast order is justified informally by arbitrary receive order. The author warns that removed paths may be “irrelevant to a given verification property, but crucial to an other” (§4.4,Q26). Bypassing duplication or outdated messages is proposed as future work requiring “formal verification or proof” (§4.5,Q27), rather than a proved reduction method. For evaluating LLM-written specifications and proofs, the reader-derived lesson is to inspect the represented state, bounds, message semantics, source/prose agreement, property statements and implementation link separately. The three static cases show why a plausible protocol narrative and a formal-language artifact do not by themselves establish the intended transitions. The paper supplies no Verus, verified Rust or LLM experiment. - limits: Fixed finite servers, bounded terms and total client interactions; defaults3/3/3 versus measured2/1/1. Core election/replication only, term-only entries and leader-ID client actions. Finite-set network reorders/drops/duplicates without capacity or fairness guarantee. Nondeterministic untimed timeouts, crash termination without recovery. Informal reductions and source/prose discrepancies qualify reference-model use. - how much was read: most of it read - source - record id: `modeling-the-raft-distributed-2020` - Multi-scale verification of distributed synchronisation. (2020) - what: Connects explicit networks of discrete pulse-coupled oscillators with counting population models; gives probabilistic correspondence proofs and a reduction eliminating non-firing states. The concrete DTMC tracks each oscillator's phase and start/update mode plus an environment firing counter; a descending-phase evaluation handles same-step firing cascades. The population model counts indistinguishable oscillators per phase and enumerates binomially weighted broadcast-failure vectors. Theorems preserve unbounded synchronisation reachability and adapted expected rewards when deterministic non-firing paths are collapsed. A counting map at round boundaries establishes two-way weak simulation and equal aggregate transition probabilities. - number: 41-page arXiv v1 - number: 48,621 to 11,441 states for N=8,T=10 - number: 128,936 to 50,883 transitions - number: R=5: 10.38 versus 0.047 seconds checking (N=4,T=10) - limits: Fixed population, fully connected network, identical oscillator dynamics, discrete bounded phases, non-negative increasing phase response and a global broadcast-failure probability. Population states erase node identity and topology. The model reduction preserves the specified unbounded reachability/reward properties, not arbitrary step-bounded properties. Parameterised inductive verification is proposed future work. The identified source is the 2018 preprint, not the publisher's 2020 DOI version; results were not reproduced. - how much was read: most of it read - source - record id: `multi-scale-verification-of-2020` - Quartz (2020) - title: Quartz: A Framework for Engineering Secure Smart Contracts - what: Quartz is a DSL for smart contracts written as extended state machines. It generates PlusCal/TLA+ for TLC, including Ethereum exceptions and reentrancy. It also generates Solidity. The author writes the invariants. - number: 16 contract case studies - number: auction 33 DSL / 40 handwritten Solidity / 53 generated / 205 TLA+ lines - number: mean DSL/handwritten ratio 0.68 - number: auction bugs found in 2, 6, 15 seconds; ERC-1540 in 4 and 27 minutes - limits: It covers finite, bounded safety only. Nothing proves that the generated Solidity matches the TLA+. No author hours are given. - how much was read: most of it read - source; notes: Quartz: A Framework for Engineering Secure Smart Contracts - record id: `quartz-2020` - SCP proofs (2020) - title: On the Formal Verification of the Stellar Consensus Protocol - what: A first-order model of SCP quorums and balloting in Ivy/Z3. It proves agreement, and proves termination for intact sets under eventual synchrony. Isabelle proves the abstraction sound. - number: no person-hours, proof-line total or timing reported - limits: It is a protocol model for fixed configurations, not deployed code. Membership cannot change dynamically. The short paper omits detailed proofs. - how much was read: most of it read - source; notes: Related addition: On the Formal Verification of the Stellar Consensus - record id: `scp-proofs-2020` - T-Lease: A Trusted Lease Primitive for Distributed Systems (2020) - what: # Reading: T-LEASE (authored by agents unless marked 🧑) Trach, Faqeh, Oleksenko, Ozga, Bhatotia and Fetzer implement a lease primitive for SGX enclaves under an OS attacker who can alter time readings, clock rates, scheduling and message delays. Read all 13 pages, nine main sections, 15 figures, two tables and 58 references. The arXiv source is a 2021 preprint of the Middleware 2020 paper. Its evidence combines a reported finite TLA+/TLC model check with C-library measurements and three separately implemented lease-based case studies. There is no proof connecting the model to the C/assembly implementation or to the CPU's hardware semantics. The core safety condition is that the granter's real lease interval contains the holder's interval. T-LEASE measures uninterrupted enclave epochs using TSC and detects interrupts through SGX's State Save Area: a zero instruction-pointer sentinel becomes nonzero when enclave state is saved. The granter can omit interrupted intervals, conservatively extending its lease. A holder must invalidate/renew after every interrupt and finish request/reply in the same epoch, because an arbitrary pause may outlast its old lease. Sequence/epoch metadata rejects obsolete replies. Interrupt handling omits elapsed intervals; the timer cannot bound a scheduling pause from above, and its active-time estimate retains rate-estimation error. Clock-rate verification runs six RDRAND instructions and checks TSC elapsed cycles, exploiting an empirically CPU-frequency-independent hardware RNG. The reported latency varies about 7,000–10,500 cycles (the evaluation uses 7,500–10,500). Consequently a timer can still slow roughly 40% or accelerate 45% with high acceptance probability. This is an empirical estimator with residual error, not an architectural proof of a universal deterministic rate bound. The design assumes manipulation requires an enclave interrupt, correct SGX/TSX behavior, and the stated RNG behavior. Buffer overflows and side channels are excluded. TSX makes a lease check and shared-memory submission of a result one transaction, aborting on interrupts/conflicts. This protects the interval through result submission, not eventual message delivery or disk completion. The paper explicitly leaves tolerating delays after submission to the application; synchronous systems must budget that delay. Transactions also have cache-capacity/instruction restrictions. Implementation uses SCONE, UDP, AES-GCM-256 and pre-shared keys, in 1,037 lines of ANSI C including 26 assembly lines. A queue backoff adjustment reduced one syscall benchmark's abort rate from 79% to 0.008%; that result is not a universal transaction guarantee. Section 5 models one granter and a set of holders, messages, current time, countdown timers, interrupts/resumes and bounded frequency changes. Holder countdown starts when requesting; the granter records holder/epoch/timestamp metadata and extends only suitable requests. ValidLease requires a currently valid, unexpired holder to have a matching granter record. Liveness is limited to no attacker, bounded MaxNow, bounded message delay, no starvation and sufficiently long uninterrupted epochs, with explicit fairness. Section 5.3 reports no safety/liveness violation on a finite no-attacker instance with equal durations, and safety with ±50% rate manipulation when the granter duration is 3× the holder's. Model size, holder count, exact constants, explored states, checker runtime and configuration are not reported here. Figure 3 is an outline with ellipses and omitted action bodies, not a complete reproducible checked artifact. No external model source was identified in the paper. The experimental 2× lease extension does not inherit that 3× model guarantee. Section 6.1 computes (1+0.45)/(1−0.45)≈2.64, then deliberately uses 2 as a detection-probability/precision tradeoff. A source-only arithmetic witness illustrates the gap: with zero/negligible acquisition delay, holder duration L at 0.60 normal rate lasts 1.667L real time; granter duration 2L at 1.45 rate expires at 1.379L. If both empirical checks accept those reported plausible rates and no interrupt forces renewal, holder validity can outlast the granter. This is a conditional arithmetic example, not an executed attack or a demonstrated CPU trace. A factor 2 therefore needs stronger rate restrictions or a probabilistic safety statement; it is not the unconditional containment guarantee claimed in the introduction. Under an actual deterministic ±50% bound the worst ratio is 1.5/0.5=3. The printed model also has narrower or malformed liveness statements. The first Figure 3 leads-to consequent is merely gLeaseGranted≠{}, not a grant to the particular requester. The second ends in lhState[h]={"validLease"}, a singleton set rather than the string used by TypeOK and ValidLease, and existentially chooses some holder. As printed this cannot establish the described requester-specific progress and needs source clarification. These observations do not establish that an unidentified full historical model contained the same defects. No TLC execution was performed. Evaluation uses an SGXv2 Pentium Silver NUC at 1.5 GHz/32 GB RAM and SGXv1 Xeon E3-1270v5 Dell server/64 GiB RAM, linked at 1 Gb/s. Linux timer frequency was reduced to 100 Hz, dynamic ticks enabled, device interrupts moved to core 0, and enclave threads run at real-time priority after average epochs increased from 15 ms to 650 ms. Those settings qualify the performance results. No uniform repeated-trial count or confidence-interval method is reported. Without interrupts, timer reads take about 30 ns. The paper reports interrupt-related minimum cost as approximately 10k cycles (20.3 ”s); preserve those reported units without deriving a universal conversion. Discrete TPM/PTT reads take 220/145 ms. Rate detection is tested at 800 MHz and 1.5 GHz, which does not by itself prove behavior at every intermediate frequency or all future CPUs. Granter under-accounting can reach 14% with 100,000 instructions between updates at high interrupt rates; the authors expect ≀5% at ordinary 100–250 Hz. Long leases reach roughly 20–22 million checks/s in the plotted configurations. Interrupts drive renewal traffic even for long leases, up to about 2,000 messages/s at 1,000 Hz; retries are below 10^-6 per check for leases >100 ms, versus 0.28 per renewal with a TPM. Those retry denominators differ. The lost-lease prose and plot disagree: §6.2 says about one loss every 2 seconds for network leases <5 ms, while Figure 12's displayed y-axis peaks around 0.025 losses/s, and its largest plotted point is about 0.024/s. Neither value is silently substituted for the other. Local experiments report no losses; this is a tested configuration, not a universal availability result. The three cases recreate lease components rather than verify complete FaRM/Paxos/cache systems. FaRM-style failure detection counts expirations over 10 minutes; UDP/Ethernet cannot be directly compared numerically with original RDMA FaRM. No losses appear only around 100 ms leases in this test. PQL measures active-lease duration, with about 247 ms native versus 185 ms T-LEASE for long intervals: about 25% less active time, not a measured 25% throughput loss. Consistent caching uses a native granter outside the enclave and two SGXv2 cache nodes; its 5-minute experiment raises traffic from 55 to about 175 messages/s when writes appear, then reduces traffic near 100% writes. That placement does not experimentally test a malicious granter OS. The paper's broad 'up to 5% in most cases' claim must be read alongside these distinct metrics and deployment assumptions. This paper contributes a directly relevant TLA+ lease case: compare the verified instance's rate assumptions with the measured configuration, inspect liveness predicates and fairness, and distinguish empirical hardware timing from proven time bounds. It also gives concrete PQL/failure-detector/cache integrations and shows why proof agents must preserve timing units, attacker assumptions and model-to-code boundaries. There is no Verus, verified Rust or LLM-agent evaluation. No author code, prover/model checker or serialized scientific output was executed/loaded. - limits: correct SGX and TSX hardware; manipulation requires interrupt; empirical RDRAND rate bounds; excluded memory/side-channel attacks; model checks finite instances only; liveness requires no attacker and bounded scheduling/delivery; model ratio3 differs from experimental ratio2; shared-memory submission atomicity excludes eventual delivery; no implementation refinement proof - how much was read: most of it read - source - record id: `t-lease-a-trusted-2020` - VeriBetrKV (2020) - title: Storage Systems are Distributed Systems (So Verify Them That Way!) - what: VeriBetrKV verifies a single-threaded crash-safe B-epsilon-tree key-value store by combining ordinary Hoare code proofs with TLA-style state-machine refinement of program plus asynchronous disk environment. Reusable crash-safe/cache templates and transposition split journal and tree reasoning. A Dafny linear/shared extension coexists with dynamic frames and a trusted C++ backend; case studies measure reduced proof annotations and competitive but uneven performance. Records disk acknowledgment/corruption/sync contracts, full refinement decomposition and disjoint-region condition, linearity/BoxedLinear trust and borrowing rules, checkpoint/journal architecture, proof-latency discipline and its empirical caveats. Saves complete code/proof tables and printed benchmark values, including contradictory speedup and latency prose. Separates a general asynchronous-system method from an actual multi-node or CPU-concurrent implementation. - number: Table 1: 1210 spec, 6373 implementation, 44685 proof lines; the crash-safe map spec is 283 lines - limits: §§1–3: Safety and functional correctness only; operations need not terminate. Implementation is single-threaded, with asynchronous I/O/pipelining but no CPU concurrency. Demonstration has one processing node and one disk. Multi-node/multi-disk/heterogeneous generalization is conjectured, and shared-memory thread concurrency is future work. IronFleet has distributed/liveness results, but those are prior work, not VeriBetrKV results. §2.1: User trusts a 283-line top-level dictionary/crash contract, environment/OS/runtime API specifications, build system, modified Dafny/verifier/Z3, C++ backend/compiler/toolchain and hardware behaving as modeled. Smaller specification size may aid review but does not prove the specification matches intent. The linear typechecker changes and BoxedLinear primitives are trusted rather than a separately proved compiler/type-system soundness theorem. §§2.1,3.1: The I/O bus can reorder requests/responses but cannot duplicate or drop them except during crash. The composed StorageIOSystem nondeterministically takes a program step, disk/environment step or whole-system crash. Crash resets volatile program state; acknowledged writes survive, while unacknowledged addresses may contain old, new or corrupt bytes. Arbitrarily many crashes at arbitrary modeled points are covered, including reboot/recovery states. §3.1.1: Disk corruption can occur at any time but cannot produce a valid-checksum block. CRC32C is trusted and referenced by the disk model. Invalid checksum aborts the current query, preserving no-wrong-answer safety at the cost of availability. A malicious disk that fabricates valid checksums, checksum collisions or stale valid blocks violates the assumed model. This is not an unconditional CRC integrity guarantee or fault-tolerant recovery from arbitrary corruption. §§3.1.2,6.2.3: Without crash/corruption the visible state is a dictionary with latest writes. Crash reverts the entire dictionary to a consistent prior snapshot no earlier than the last completed sync. Spec has ephemeral and persistent states; background steps can advance persistence. sync_start/sync_end ensure that at end, persistence includes the state at start or a newer version. Unsynced operations may survive or disappear as part of a consistent snapshot; this is not independent per-key arbitrary rollback or durability of every returned insertion. §3/§6.2: Hoare reasoning verifies synchronous local implementation handlers against the program machine. Environment behavior and crashes are handled by IOSystem refinement. General real-system theorem is conditional on the actual executable, trusted API interactions and environment matching those models. TLA-style refinement is encoded/proved with Dafny, not reported TLC model checking or proof of arbitrary storage behavior. §§3.2,6.2.2: Map→abstract B-epsilon tree with infinite-map nodes→finite pivot-bucket tree separates key semantics from representation. A hypothetical purely in-memory implementation is shown gray and is not an actual second implementation. Generic CrashSafe<T>/BlockCache<T> lifting says a refinement of node/tree contents lifts through a crash-safe cache/disk composition. §6.2.3 Figure 3: Tree IOSystem and JournalIOSystem independently refine CrashSafe<Map> and JournalViewMap. CompositeViewMap applies journal operations to map snapshots. ConcreteCache adds byte marshaling; Disk<byte> refines a partitioned typed disk. Transposition rearranges program/environment components only with an invariant that tree and journal access mutually disjoint disk regions. Their models cannot simply be separated if their effects overlap. §6.2.4: Executable handler invocations refine Next transitions of ConcreteCache; I/O labels are no-op, request or response and must match trusted API actions. Proving code-to-model is insufficient without the enclosing disk composition, while proving abstract crash safety is insufficient without this implementation connection. Recovery does not write disk (§8.1), avoiding a separate write-during-recovery proof burden without excluding repeated crashes. §4: Developer policy stops feature work when verification exceeds 20 seconds, then controls definition visibility, opacity/reveal and solver instantiation profiling. The discipline reduces search burden but cannot decide arbitrary verification, distinguish all timeouts from defects, or guarantee a fixed bound. Measured final passing definitions are not a distribution of failed proof attempts or controlled developer productivity. §5.1: linear means non-aliased mutable values and shared means temporarily borrowed aliased immutable values. Static checking forbids duplication and silent discard and restricts shared values to borrow scope; explicit free is allowed. Functional sequence semantics permit in-place C++ mutation without SMT heap-aliasing reasoning. Ordinary heap references still use dynamic frames, and can be held inside linear structures. §5.1 Figure 2: Trusted BoxedLinear<A> embeds a linear value in a freely aliased heap object. Take requires Has() and sets it false; Give requires no stored value. Borrow is restricted to pure functional callers so an imperative method cannot remove ownership during the borrow. SMT proofs establish Has() where ownership is not syntactically obvious. Thus the method combines type safety with proof obligations rather than enforcing all aliasing rules in a simple Rust-like typechecker. §5.2: Backend maps immutable datatypes to structs, heap arrays/classes to reference-counted objects and immutable sequences to shared storage plus offset/length. Linear sequences use in-place operations and explicit deallocation without reference counts. Mathematical integer executable code is rejected; refined machine integers must fit C++ types. Compiler and runtime correctness are trusted. §§6.1.1–6.1.2: Uses 2 MiB nodes on HDD, 128 KiB on SSD, fanout 8. Serialized lower nodes avoid conversion, while the root uses a mutable search tree for single insertions. A ghost per-index lseq_has sequence permits taking disjoint subsets of linear children during splits. Claims about Rust needing unsafe/Option are the paper authors’ comparison, not a general impossibility theorem about all safe Rust implementations. §6.1.3: LRU BlockCache tracks inter-block references and garbage collection. Persistent/frozen/ephemeral copy-on-write trees represent last completed checkpoint, checkpoint in flight and live updates. Logical-to-physical indirection uses linear-probing hash table; example 1 TiB disk requires 24 MiB table. Two alternating counter-tagged superblocks select the latest checkpoint. Correctness depends on modeled write completion and checksum semantics. §§6.1.3–6.1.4: Checkpoint writes dirty nodes, then indirection table, then a superblock. At checkpoint start dirty shared nodes become write-back-before-editing, preserving the frozen snapshot. A node write must be issued before modification but need not complete before modification; crash can recover the old checkpoint. Logical journal records each insertion; sync persists journal instead of repeatedly writing large nodes. Checkpoint reclaims journal space. §7.1: Table 1 implementation proof/executable ratio is about 4:1; including refinement proofs gives 7:1. These annotation counts are a proxy for final proof burden, not person-time, maintenance cost or specification adequacy. Authors observed no runtime correctness/data-loss bugs but did observe liveness/performance bugs; no duration or exposure denominator establishes a general failure rate. §7.1: Hash-table proof LOC 1678→1063 (about 37% lower), search-tree 2220→1531 (about 31% lower), with search-tree executable LOC increasing 289→373. This compares two author implementations and supports reduced annotation burden for those components, not a universal productivity effect. RocksDB test/production ratio 0.99 and BerkeleyDB 0.45 are not directly comparable correctness guarantees. §7.1 Figures 4–5: 98.3% final proof units under 10 seconds, 99.0% under 20; 37 exceed 20 seconds and 54% of those involve dynamic frames. Hide 308 definitions (18%), reveal 1403 times; 52 never revealed and 74% revealed at most five times. Visibility counts both overestimate and underestimate manual effort. Whole verification takes 1.8 CPU-hours, 11 minutes on 32 cloud machines, not 32 CPU cores in one machine. §7.1 reader qualification: Printed sentence says maximum verification time dropped 10s to 32s and 99th percentile dropped 1.3s to 4.8s. The endpoints increase in that order and conflict with dropped; the PDF visibly contains this wording. Do not silently reverse endpoints or claim a quantified speedup from this sentence without correction from source authors. §7.2: HDD/subcomponent runs use AWS d2.xlarge with four hardware hyperthreads, 2.4 GHz Xeon E5-2676 v3; SSD i2.xlarge has four hyperthreads, 2.5 GHz E5-2670 v2 and SATA SSD. All YCSB systems limited to one core and 2 GiB RAM; load 10 million operations/about 5 GiB, run phases 10000 operations. Reported medians and min/max over six runs, not confidence intervals. §7.2.1 Figure 6 reader calculation: Printed HDD Load medians are BerkeleyDB 233, VeriBetrKV-DF 5649, VeriBetrKV 5579 and RocksDB 44670 ops/s. Ratios from linear VeriBetrKV are about 23.9× faster than BerkeleyDB and 8.0× slower than RocksDB, matching abstract 24×/8× but not body/caption over 25× or caption about 9×. Preserve numerical evidence rather than reconcile by guessing different runs. §7.2.1: VeriBetrKV is slower than both other stores on most queries and roughly 4× below RocksDB, but HDD uniform U has RocksDB 35 versus VeriBetrKV 57 ops/s. SSD Load has VeriBetrKV 8986 versus BerkeleyDB 6664 and RocksDB 72645, about 1.35× faster/8.1× slower; body says 4× slower on SSD, inconsistent with printed load values. Workload-specific outcomes matter more than a universal performance claim. §7.2.1: Authors attribute slowdown to effective-cache reduction from fragmentation/conservative cgroup allocation, lack of overlap between CPU and flush I/O, and 1.5× more I/O than RocksDB, about half extra from checkpoint policy. Simulated 1.8 GiB cache exceeds 13K HDD insertions/s and matches 300K I/Os for 1M queries. These simulations/profiling attributions are not a measured optimized implementation. Query I/O usually 1.5 MiB versus RocksDB 4–8 KiB; future partial-node marshaling is unimplemented. §7.2.2: Microbenchmarks compare dynamic frames/linear on 64M random 64-bit-key hash operations and 8M search-tree pairs. Linear hash inserts and queries are faster but deletes slower; search inserts slower and queries faster. Authors suspect reference-count and reconstruction overheads; no isolated causal experiment is supplied. Dafny type extension is 1900 LOC (3%) and C++ backend 3100 (7.5%). Appendix A: Artifact Docker images include source, modified compiler, verification/performance scripts and graph generation. Any x86/x64 CPU with HDD/SSD, 20 GiB disk and several hours expected; source YCSB/config included. External proof bodies, compiler changes, durability implementation and benchmark scripts were not audited or replayed by this reader. No LLM-agent evaluation is present. - how much was read: most of it read - source; notes: Storage Systems are Distributed Systems (So Verify Them That Way!) - record id: `veribetrkv-2020` - VerifAI TaxiNet (2020) - title: Formal Analysis and Redesign of a Neural Network-Based Aircraft Taxiing System with VerifAI. - what: Presents an integrated VerifAI design workflow for an industrial Boeing TaxiNet aircraft-taxiing controller: Scenic models semantic runway environments, active search drives X-Plane closed-loop simulation, counterexamples are analyzed and targeted tests confirm causes, and retraining uses discovered failures. The TaxiNet requirement is expressed in Metric Temporal Logic (MTL). The paper extends Scenic with externally assigned parameters so active samplers can replace fixed probabilistic draws, and implements a VerifAI client/server interface to X-Plane datarefs. In the six-dimensional case study, 4,000 nominal runs found only 55.2% satisfying the eventually-centerline property and 9.1% leaving the runway. Visualization localized failures to dim lighting, cloud/time interactions, runway intersections around 1,450 m, and aircraft shadows; disabling shadows confirmed the hypothesized root cause. Replacing the neural net with ground-truth errors made every counterexample satisfy the property, localizing faults to perception. Generic, Halton, and specialized retraining raised satisfaction to 82%, 83%, and 86%, respectively, and reduced runway departures to 3.9%, 0.6%, and 0.5%; cross-entropy sampling learned a failure-focused distribution, but augmentation experiments sometimes regressed performance. - number: ~4,000 nominal falsification runs: 55.2% satisfy eventually property, 9.1% leave runway - number: Tgeneric: 82% satisfy, 3.9% leave runway - number: THalton: 83% satisfy, 0.6% leave runway (15x departure reduction) - number: Tspecialized: 86% satisfy, 0.5% leave runway - limits: The study uses a prototype TaxiNet and X-Plane simulation, not a deployed aircraft or exhaustive proof. Search covers a six-dimensional scenario space, 30-second simulations, daylight/weather ranges, and a specified runway; failures outside those abstractions are not assessed. MTL robustness guides search but nonnegative/negative sampled results are not a universal safety guarantee. Retraining leaves a 14% specification-failure rate and depends on training-set size, simulator rendering, and controller/network architecture. - how much was read: most of it read - source - record id: `verifai-taxinet-2020` - Zhang SPA TLA+ workflows (2020) - title: Specifying and Model Checking Workflows of Single Page Applications with TLA+ - what: Presents a TLA+ modeling pattern for single-page application workflows: variables represent observable widget properties and actions represent user events; TLC checks reachability, liveness, invariants, and deadlock. The paper gives a complete math-exercise SPA module with Init, Input Answer, Check, New Question, Terminating, and weak fairness, then demonstrates diagnostic TLC results. Reachability of every question and eventual availability of New Question are proved; an initially plausible invariant is falsified and repaired to condition on a nonempty result; an off-by-one precondition creates a concrete deadlock. The mapping is deliberately practice-oriented and exposes implicit widget-state workflows. - number: one clock example - number: one math SPA case - number: three user actions plus Terminating - number: finite-state TLC analysis - limits: The case study is a small finite-state model with a bounded maximum question count and nondeterministic answer correctness; weak fairness is used to prevent stuttering. It models user-observable widget states rather than implementation code, omits asynchronous communication and server activity, and does not evaluate an industrial SPA. The author notes TLC's finite-state limitation and proposes theorem proving and automatic AngularJS-to-TLA+ generation as future work. - how much was read: most of it read - - record id: `zhang-spa-tla-workflows-2020` - A Process Calculus for Formally Verifying Blockchain Consensus Protocols (2019) - what: # Whole-paper read: A Process Calculus for Formally Verifying Blockchain Consensus Protocols (authored by agents unless marked 🧑) Wolfgang Jeltsch; arXiv1911.08033v1,19November2019,16pages. The result is the ♼-calculus, pronounced “natural calculus,” and an Isabelle/HOL theory for reasoning about process behavior. It is infrastructure for a proposed verified Ouroboros implementation. The paper says, “We plan to very soon start using our process calculus for developing a formally verified implementation of the Ouroboros family of consensus protocols.” It does not report that implementation or a consensus safety/liveness proof. [Q0,Q1,Q12] ## Language and execution model A process calculus describes communicating programs and the steps they may take. This one embeds its terms in a functional host language. Higher-order abstract syntax means a binder is represented by a host-language function: Receive takes a function from received data to the remainder process, and NewChannel takes a function from the fresh channel to the remainder process. The host handles variable binding, renaming and ordinary computation. The paper focuses on Isabelle/HOL; it describes Haskell execution and automatic conversion to Isabelle terms as the intended workflow, deferring discussion of that embedding. No verified Haskell translation or runtime correspondence result is supplied here. [Q2,Q3] The five constructors are Stop, Send, Receive, Parallel and NewChannel. Processes are coinductively defined, allowing infinite terms. Examples include forwarding a received value to two channels, forwarding only when the value differs from a given value, and replication represented by p∞=p∄p∞. Send has no continuation. Although the communication rule synchronizes sender and receiver, this restriction makes synchrony unobservable in the stated calculus. There is no explicit nondeterministic-choice constructor; this does not make concurrent scheduling deterministic. Computation, branching and recursion are placed in the host language. [Q3] The calculus permits arbitrary transmitted data, including pairs or lists containing several local channels. Publishing such data can open several channel scopes at once. A single conventional transition rule would then combine sending, scope opening and closing. The paper separates these concerns into two layers. Basic transitions expose opening as its own step. Proper transitions combine opening steps with sending, while receiving and internal communication refer back to basic transitions. The printed one-channel and two-channel publication rules show how this composition works. Some symmetric/general rules and the complete proper-residual datatype are omitted from the exposition, with formalization sources linked separately. [Q4,Q5] A residual bundles a transition's label with its target process, because a label's bound channel can also bind occurrences in that target. Thus transitions relate a source process to a residual rather than treating source, label and target as independent entities. Basic residuals have acting and opening constructors; nesting residuals supports later composition. To compare residuals, a lifting operation extends a relation on processes to matching labels and related targets. In the opening case the targets must be related for every channel argument. Bisimilarity then means each process can match the other's transitions while preserving that relation. [Q5,Q6] ## Generic results and assumptions The main reuse mechanism is to prove transition theory once for an abstract residual lifting operation, then establish its axioms for each concrete residual type. Section3.1 prints preservation of equality, relational composition and converse. These are presented as the laws of a relator, a mapping on types and relations that preserves that structure. This differs from an ordinary Haskell functor on types and functions. Isabelle-generated datatype relators supply the intended concrete instances. The source locale additionally makes monotonicity explicit; the printed three-law presentation and actual locale assumptions should therefore be kept distinct. I do not establish whether that additional law is derivable from the printed ones. [Q7,Q8,S3] Strong bisimilarity matches individual steps. Weak bisimilarity permits internal communication to be ignored. Since the generic residual interface hides labels, the paper introduces silent, which adds a silent label, and fuse, which removes silence from nested residuals. Weak transitions are inductively generated by strong steps, empty silent steps and composition through lifted weak transitions followed by fuse. Five printed laws—two naturality laws, two neutrality laws and associativity—give a monad structure on types and relations. They are assumptions of the reusable construction, not proved facts about every possible transition system. The paper reports formal proofs that weak bisimilarity equals mixed bisimilarity, where strong steps are matched by weak ones, and that strong bisimilarity is contained in weak bisimilarity. [Q9] For the usual single silent label, Section3.3 requires a natural silent relation that is left-total and unique on both sides. It derives fuse as the union of the converse of silent and its lifted converse, and states that these satisfy the general weak-residual laws. This reduces the per-instance proof burden. These are generic behavioral-equivalence results; no fairness, adversarial stake model, probabilistic security, real-time bound or consensus termination theorem is established in this paper. [Q10] ## Known limits and concrete counterexample The proper transition system can open a scope even when the channel is not transmitted. The author explicitly gives Μb.a◁x → a◁Μb.x with target0, where x does not depend on b, and says a fix is under investigation. This is a disclosed semantic issue in the presented concrete calculus. It does not by itself invalidate the generic theorems conditional on residual laws, which are largely independent of this calculus. [Q5] Higher-order abstract syntax also permits process structure to depend on channels, including local channels. Such channel-dependent branching is unwanted here, while branching on ordinary data is intended. Related work excludes or separately characterizes these terms; the author explains that making channels abstract does not eliminate them in classical Isabelle/HOL. Preventing channel-dependent behavior while retaining host-language binding remains future work. These unresolved expressiveness/semantics restrictions matter before treating the calculus as an adequate model of a particular network implementation. [Q11,Q12] ## Evaluation and pinned source inspection The evidence is mathematical construction, worked syntax/transition examples and reported Isabelle formalization. The paper says “large parts” of the calculus and the “complete theory of transition systems” were formalized, and that the document was produced from Isabelle source checked against that formalization. It gives no runtime experiment, benchmark table, proof-development time, proof-size accounting, end-to-end protocol case or comparison of verification effort. Its acknowledgements mention network-equivalence proofs, without presenting a measured evaluation of them. There are18references and no numbered figures or tables. [Q1,Q12] Reference10 pins input-output-hk/fm-ouroboros at bbeec3136ae68e7bb6800680e216b12db6c1113a. I statically read seven saved files: README, Channels.thy, Processes.thy, Residuals.thy, Weak_Residuals.thy, Std_Weak_Residuals.thy and Weak_Transition_Systems.thy. They total28,155bytes; each SHA256 and Git-blob identity matches the nontruncated188-entry pinned tree. The source directories use Chi_Calculus naming. Channels declares abstract chan/val types, Processes has the five constructors, and the weak-transition theory includes explicit proof scripts for weak/mixed equivalence and strong-bisimilarity inclusion. This is a targeted sample, not an audit of the complete calculus or dependency closure. Imported theories, the referenced binder-preservation ML and Haskell implementation were not read or run. [S0–S6] The pinned weak-residual interface uses silent plus an absorb operation, deriving lift from them; the paper instead presents lift/silent/fuse. Its weak-transition composition rule is correspondingly expressed through absorb. The standard-weak-residual theory proves a sublocale interpretation into that interface. These are source/presentation differences, not a checked equivalence between the two formulations. Residuals.thy explicitly assumes lift monotonicity; Weak_Residuals.thy assumes absorb monotonicity and notes that this is needed for the inductive weak-transition definition. [S3–S6] The README specifies Isabelle2018 and offers a default properly build rejecting sorry, plus a qnd build accepting fake proofs. I did not run either mode, so the build instructions do not establish a fresh successful check. No assertion about the admission status of the entire uninspected dependency closure follows from this source sample. The paper's machine-checking statements remain author-reported; the saved source supplies statically inspectable declarations and proof scripts. [S0,S2–S6] ## Contribution to the requested topic This adds an approach to reusable mechanized semantics for distributed programs: represent binding in residuals, separate channel-scope handling from communication, and prove behavioral-equivalence infrastructure against explicit algebraic interfaces. For specification/proof agents, my inference is to evaluate semantic adequacy, locale assumptions, concrete instantiations, source-version correspondence and intended protocol properties separately from the presence of proof scripts. The paper contains no Verus/verified-Rust, TLA+ or LLM-agent experiment. [Q2,Q5,Q7–Q12,S3–S6] Read all16pages,18references,every printed constructor/rule/formula/example and all16page renders. Official and inventory PDFs are byte-identical. Read the seven static source files above. No author code or embedded ML was executed/imported; no compiler, checker, prover or solver was run; no serialized scientific results were loaded. - limits: conditional residual/weakresidual algebra;spuriousscopeopening;channeldependentHOAS;no implemented Ouroboros proof or measured evaluation;sourcepresentationdiffers - how much was read: most of it read - source - record id: `a-process-calculus-for-2019` - A Timeless Model for the Verification of Quasi-Periodic Distributed Systems (2019) - what: Eliminates the global clock from a calendar model of quasi-periodic publish/subscribe processes. A user-parameter constraint problem and predicates on buffer/channel lengths replace time-dependent synchronization. [Q1–Q2] A DSL specifies periods, clock drift, delay bounds, buffer sizes, minimum arrivals, and permitted consecutive buffer-overflow losses. Six constraint families enforce ordered delivery, exact buffer bounds, minimum arrivals, and restrictions on communication cycles. The paper proves a stuttering simulation from calendar executions to timeless executions and implements the model with Z3 and SPIN. [Q1–Q2] - number: 3 benchmarks - number: 10 s exhaustive pilot-flying run - number: 148 s and 155 s bitstate runs - number: AGREE 276 s from prior publication - limits: Soundness is conditional on the supplied timing/buffer/topology constraints; it does not cover arbitrary asynchronous systems. The abstraction can introduce false safety alarms and is explicitly unsuitable for liveness. Only the pilot-flying experiment uses exhaustive state storage; ground-vehicle and thermostat runs use bitstate hashing and can miss bugs. The AGREE runtime comes from another paper on a slower machine because AGREE could not be installed, so it is not a controlled performance comparison. [Q3–Q6] - how much was read: most of it read - source - record id: `a-timeless-model-for-2019` - ByMC Blockchain BFT Verification (2019) - title: Formal Verification of Blockchain Byzantine Fault Tolerance - what: Surveys blockchain-consensus vulnerabilities and formally verifies two Red Belly Blockchain components with the ByMC threshold-automata model checker: binary-value broadcast and a DBFT-style Byzantine consensus variant. The authors provide executable threshold-automaton specifications and temporal properties for safety, validity, agreement, and termination. The paper explains the manual conversion from pseudocode to threshold automata, including shared counters, guards, fairness assumptions, and counterexample debugging. BV-broadcast uses n>3t asynchronous reliable channels and four correctness properties; its 116-line specification verifies in under 40 seconds on a laptop. The larger consensus automaton models two asynchronous rounds and is checked under round-rigidity/fairness with MPI; five properties sum to 1046 seconds. The paper stresses that formal verification covers specified automata, not implementation correctness, and reports six blockchain vulnerabilities including new Casper FFG and HoneyBadger counterexamples. - number: BV-broadcast specification 116 lines, verified in <40 s on Intel Core i5-7200U - number: consensus specification 276 lines, five properties in 1046 s (17 min 26 s) - number: model checker uses MPI on 4×16-core AMD Opteron 6276 with 64 GB - number: ByMC verification of properties over reachable threshold-automaton states - limits: Threshold-automata abstraction assumes parameterized Byzantine bounds (N>3T, T≄F≄1), reliable channels and asynchronous scheduling; liveness requires fairness/round-rigidity assumptions. Manual translation can contain errors, and verified properties do not guarantee the blockchain implementation or other execution tools are correct. The large run uses a 64-core AMD Opteron machine and is not a proof of scalability to arbitrary deployments. - how much was read: most of it read - - record id: `bymc-blockchain-bft-verification-2019` - CockroachDB Parallel Commits blog (2019) - title: Parallel Commits: An atomic commit protocol for globally distributed transactions - what: CockroachDB describes formalizing Parallel Commits in TLA+, checking atomicity, durability and an eventual explicit-commit property under coordinator failures, and publishing the model for readers to run. - limits: Engineering blog; model properties and assumptions are described by the authors and were not independently rerun. - how much was read: most of it read - source - record id: `cockroachdb-parallel-commits-blog-2019` - Communication closure / ATHOS (2019) - title: Communication-Closed Asynchronous Protocols - what: Reduces verification of communication-closed asynchronous fault-tolerant protocols with crashes, message loss, and reordering to round-based synchronous multi Heard-Of protocols. Synchronization tags encode abstract time; a rewriting algorithm preserves local executions and enables simpler deductive proofs. - number: five communication-closure conditions - number: verified agreement for leader election, Normal-Op, and Multi-Paxos - number: Multi-Paxos broadcast repeats three rounds - number: VeriFast and Z3 used in the prototype - limits: A user must provide a synchronization tag satisfying all five conditions; VeriFast checks the C embedding and manually inserted assertions, not arbitrary executable implementations. The reduction preserves local properties such as agreement, while liveness depends on protocol/network assumptions and catch-up jumps. The approach does not yet handle reactions to old messages; future work relates closure to FIFO assumptions. Rewriting may produce pessimistic nesting and uses mHO round abstractions. - how much was read: most of it read - source - record id: `communication-closure-athos-2019` - Coq financial-market auctions (2019) - title: Formal verification of trading in financial markets - what: Defines a Coq framework for bids, asks, matchings, fairness, maximality, uniformity and individual rationality, then verifies dynamic-price and uniform-price double-sided auction algorithms. The formalization models lists of unit bids and asks with dependent records and computable predicates. It proves existence of fair matchings and maximum matchings, constructs a dynamic-price algorithm and proves fairness/maximality, then constructs a uniform-price algorithm and proves that it is maximal among uniform matchings. The text includes a concrete counterexample where the uniform algorithm is not maximum in cardinality, clarifying the distinction between uniformity and global maximum matching. - number: two auction classes: dynamic-price and uniform-price - number: Theorem 17 fair matching existence - number: Theorem 18 maximum matching result - number: Theorem 20 maximality among uniform matchings - limits: The market model treats each bid or ask as a request for one unit and reasons over finite lists with no duplicate constraints where stated. Results are about the formalized matching algorithms and properties, not exchange implementation throughput, networking, or adversarial distributed execution. The paper reports no empirical benchmark; correctness is established in Coq without added axioms. - how much was read: most of it read - - record id: `coq-financial-market-auctions-2019` - I4 (2019) - title: I4: Incremental Inference of Inductive Invariants for Verification of Distributed Protocols - what: I4 generates inductive invariants for distributed protocols by translating finite instances, running Averroes, removing redundant output and checking the candidate against the possibly infinite protocol in Ivy. - number: seven cases: lock server, ring leader election, distributed lock, Chord ring maintenance, learning switch, database-chain consistency, two-phase commit - number: Seven-model suite: chord_ring_maintenance, database_chain_replication, distributed_lock, leader_election_in_ring, learning_switch, lock_server, two_phase_commit - limits: README workflow requires legacy Python/Ivy/Averroes dependencies and does not report reproduced timings here. - how much was read: most of it read - source; notes: I4 - record id: `i4-2019` - LoFAT and HiFAT (2019) - title: Binary-Compatible Verification of Filesystems with ACL2 - what: Builds executable FAT32 model LoFAT and directory-tree specification HiFAT, proves their transformations/refinement in ACL2, and tests correspondence with existing Linux FAT32 and mtools implementations through disk-image co-simulation. HiFAT contains directory entries and complete file strings; LoFAT uses a single-threaded object close to the on-disk FAT32 layout. §4 proves termination, inverse transformations modulo equivalence, correct error behavior, and composition of image/LoFAT/HiFAT transformations. Clusterchain recursion is bounded by maximum file length; directory traversal uses a bound on total directory entries derivable from the data region, rather than an arbitrary nesting-depth limit. EqFAT ignores file order, allocation choices, deleted and dot entries, redundant FAT copies and metadata that does not remove data. Most POSIX operations execute by converting to HiFAT, operating there and converting back; equivalence justifies eliding repeated conversions. Direct open/pread/lstat versions are proved equivalent. Guard verification, stobjs, string representations and mbe proofs support efficient execution. Proofs found incorrect FAT bounds and an off-by-one directory attribute bug; Linux co-simulation exposed a missing one-cluster directory constraint and also found an ACL2 I/O bug. - number: 24,905 lines models/proofs; 619 lines co-simulation; 31 tests - number: 128MB image: 2.48s read, 4.14s write - number: 256MB: 3.58s read, 7.91s write; 512MB: 7.52s read, 15.46s write - number: 1024MB: 15.92s read, 24.87s write - limits: The theorem is refinement of the authors’ FAT32 model/specification; Linux and mtools correspondence is finite co-simulation evidence. LoFAT validity uses a deliberately minimal subset of the official FAT32 constraints. HiFAT excludes duplicate entries and imposes FAT32 size limits; malformed images/LoFAT states share an equivalence class. EqFAT sets aside creation/access/write times and long filenames, restricting claims about programs such as Make. statfs exposes metadata that EqFAT abstracts, limiting its co-simulation use. Multiple-process interaction, concurrency, crash consistency, hard links and generalization to ext4 remain future work. ACL2 OS I/O specification and implementation remain trusted/unverified interfaces; one discovered I/O bug illustrates this boundary. - how much was read: most of it read - - record id: `lofat-and-hifat-2019` - Moderately Complex Paxos Made Simple: High-Level Executable Specification of Distributed Algorithms (2019) - what: Rewrites Multi-Paxos pseudocode as a short executable specification in DistAlgo, translates it by hand to TLA+, and proves safety in TLAPS. It also finds liveness defects when messages are lost. - number: DistAlgo core 51 vs 142 pseudocode lines - number: TLA+ models 154, 157, 217 lines; proofs 4,959, 5,005, 7,006 lines - number: TLAPS obligations 4,364, 4,517, 5,580; 590, 569, 781 s on i7-4720HQ - number: 77.822 ms per request with 10 processes - limits: The proof covers the hand-translated models. There is no proof that the translation is correct. The liveness defects are only discussed. The manual effort is not given. - how much was read: most of it read - source; notes: Moderately Complex Paxos Made Simple: High-Level Executable Specificat - record id: `moderately-complex-paxos-made-2019` - On the parallels between Paxos and Raft, and how to port optimizations (2019) - what: # Reading: porting Paxos optimizations to Raft* (authored by agents unless marked 🧑) Wang, Zhao, Mu, Chen and Li study a modified Raft called Raft*, not a proof that original Raft and Paxos are interchangeable. The whole 61-page extended paper, Appendices A–C, six printed TLA+ modules, 15 figures and 67 references were read. Exact supporting passages are staged in quotes.json with section and PDF-page anchors. The central construction starts with already-correct specifications A, its optimization AΔ, and B refining A. A non-mutating optimization introduces state/actions or conjuncts without changing A's existing state updates. Given state and action-parameter mappings, translating the added clauses produces BΔ. Section 4.3 sketches BΔ refining both AΔ and B, preserving their invariants. This is a conditional specification transformation, not a general liveness or performance theorem. Added guards can prevent progress; added actions must explicitly preserve old state, and initialization and new-variable frames must be compatible. The paper leaves implementation to developers and states in §1 that correctness is guaranteed only at specification level. Raft* prevents deletion of accepted entries by returning extra log entries during elections, selecting safe suffix values, and rejecting shorter appends. A separate accepted-ballot field distinguishes an entry's original Raft term from its latest Paxos acceptance ballot. Figure 3 maps leader self-acceptance as well as explicit messages. One Raft* action can cover multiple Paxos operations, so porting must account for every relevant action, including implicit self-acceptance. The two implemented cases are quorum leases (PQL) and Mencius. PQL allows a leaseholder to read locally only after relevant pending writes are applied; writes notify the leaseholders of an intersecting quorum. Translating f+1 Paxos acknowledgments to f remote Raft acknowledgments must include the leader's implicit acknowledgment and its own leaseholders. The authors describe a handwritten version that omitted those leaseholders. Mencius assigns default log-slot proposers round-robin. Nondefault recovery proposes no-ops; skipTags allow default no-ops to become executable early. The optimization must be applied to every action corresponding to Paxos acceptance, including BecomeLeader and AppendEntries, not only ReceiveAppend. Appendix B abstracts leases with one global timer; distributed-clock and real lease-expiry correctness require additional implementation assumptions. Evaluation uses five AWS regions (Oregon, Ohio, Ireland, Canada, Seoul), two m4.xlarge instances per region for client/server, 4 vCPUs, 16 GB RAM, SSD and stated 750 Mbps network. WAN latency spans 25–292 ms. Closed-loop YCSB-like workloads use 100,000 keys, a configurable shared hot-key probability and otherwise region-partitioned uniform keys. Each trial lasts 50 seconds with a stated 10 seconds for warm-up and cool-down; whether 10 seconds applies jointly or separately is unclear. Results are medians of five trials. Implementation builds on etcd c4fc8c09, retaining custom networking/batched forwarding that the authors say improves throughput 2.4×. Oregon is the favorable Raft leader placement. PQL uses 2-second leases, renewal every 0.5 seconds, default 90% reads and 5% conflict, and 50 clients per region for latency. About 90% of reads take 1 ms; leader-lease leader reads take 1.6 ms, while a 1% follower tail reaches approximately 137 ms from conflicting writes. PQL reports 1.6× throughput at 90% reads and 1.9× at 99%; write latency rises because leaseholders must acknowledge. Figure 9(d)'s x-axis runs from 50% conflict on the left to 0% on the right. Its rising speedup therefore agrees with the prose that lower conflict helps. An earlier apparent contradiction came from overlooking that reversed axis and is withdrawn. Figure 9 captions/legends use Raft where parts of the prose discuss Raft*; keep that baseline wording distinction. Mencius uses 100% puts, 0% or 100% conflict, and 8-byte or 4-KB payloads. The CPU case reaches about 55,000 versus 41,000 operations/s (about 1.34×); the network case reports 70% higher throughput than Raft-Oregon. Oregon itself beats Seoul by 30% in the stated comparison. Execution can still wait for remote earlier slots: the paper reports roughly 360 ms versus 110 ms for Mencius conflict/no-conflict cases, and about 79 ms at the Raft-Oregon leader. These are workload/deployment measurements, not a verification result, fault campaign, or universal optimization guarantee. The paper claims a machine-checkable TLAPS refinement proof in §6. Appendix C is a manual prose proof outline, and Appendix B supplies specifications and invariant statements, not executable TLAPS proof bodies. The referenced GitHub master-tree request and, after waiting over five minutes, repository metadata endpoint returned HTTP 404 on 19 October 2026 UTC. No external proof source was recovered; artifact-acquisition.json records the later response. A missing retrieval does not disprove that a historical proof existed. Appendix C calls a batch-to-sequence correspondence 'stuttering', although true stuttering leaves the mapped abstract state unchanged. Its one-step simulation statement needs an abstract batch action or a justified intermediate-state argument. Its BecomeLeader safe-prefix/suffix claims are asserted without derivation in this outline. Its mapping table also uses lastLogEntry.Term where the main text distinguishes the accepted ballot. Several printed specifications require repair before treating them as checker inputs. These omissions can affect semantics, so they are not classified as merely cosmetic syntax errors. Figure 4 leaves unrelated state unconstrained, uses logs'[i]=v in B versus singleton {v} in A/BΔ, and BΔ initialization quantifies k while referring to i. Appendix B's quorum assumption prints Q⊆Quorum rather than Q⊆Acceptor (Raft variants print both). UpdateLog prints logBallot'[i] without the acceptor index. ProposeEntries prints IF i1=0 THEN raftlogs[a][i1−1][1] ELSE −1, reversing the expected initial-index test. Some modules omit introduced variables from vars/init and omit frames for new variables; PQL Apply, GrantLease and UpdateTimer preserve MP!vars but leave other PQL variables unconstrained. These are findings about the printed artifact, not executed counterexamples against the authors' implementation or an independently obtained historical proof. For distributed-system verification, this contributes a concrete specification-transformation method and useful cases of implicit acknowledgments, state mappings and safe optimization transfer. It also separates invariant preservation from progress and measured speed, and highlights the need to check exact proof artifacts, initialization, frame conditions and batch simulation. It contains no Verus, verified-Rust or LLM proof-agent experiment. No author code, prover or model checker was run. - limits: already-correct input specifications; valid state and parameter mappings; added actions preserve old state with explicit frame conditions; compatible initialization; quorum intersection, crash faults and persistent state; real lease-clock implementation; invariant preservation does not imply general liveness; manually written implementation is not verified; reported TLAPS proof source not recovered; printed listing concerns are not executed counterexamples - how much was read: most of it read - source - record id: `on-the-parallels-between-2019` - Partial abstract transformers for AED programs (2019) - title: Verifying Asynchronous Event-Driven Programs Using Partial Abstract Transformers. - what: Presents a sound but incomplete verifier for P-style communicating machines with unbounded queues: exact bounded exploration plus finite list abstractions, dequeue-only best abstract transformers, convergence detection, and optional queue invariants. The αp abstraction preserves a fixed queue prefix and first occurrence of each suffix event, making a finite monotone Rk sequence. Theorem 4 proves convergence when Rk=Rk−1 and dequeue transformers add no abstract states; Corollary 5 then proves safety for all queue bounds. QuTL expresses queue-head/event-count temporal invariants; abstract checking reduces to an LTS, with conjunction handled conservatively to avoid unsoundness. PTester implementation adds candidate-invariant assistance. - number: 14 benchmarks; most kmax≀5; German-1 invariant-assisted 15.65 s/45.65 MB and German-2 629.43 s/284.75 MB; TokenRing-fixed 1,849.25 s; OpenWSN 2,574.25 s - number: Pat overhead close to PTester under bounded runs; 1 h timeout and 4 GB memory - limits: Assumes fixed machine count, finite event alphabet and queues as the only unbounded source (P dynamic creation excluded). QUBA is undecidable; if convergence never holds, analysis loops forever. Abstract conjunction checks may yield false positives (extra work), though not unsoundness. Evaluation is 14 P benchmarks, single Windows machine, 1 h/4 GB limits; German protocol required manually discharged invariants. - how much was read: most of it read - source - record id: `partial-abstract-transformers-for-aed-programs-2019` - runtime certification of consensus (2019) - title: Certifying Safety when Implementing Consensus - what: Designs distributed certification agents that repeatedly check agreement and validity predicates supplied by a running consensus implementation. Agreement compares each local decision with child decisions on a certified spanning tree. Validity combines Boolean certificates that a local proposal equals the agreed value, and depends on concurrent agreement checking. Tree certification checks root consistency, acyclic distances, and an aggregate node count. Unique IDs are checked by comparing the multiset of IDs with their ordered successors using polynomial evaluation at n+1 points; this initialization is more expensive than normal certification. After failures the tree is rebuilt and soundness/completeness are weakened to inputs from non-faulty nodes. These are runtime checks of existing code rather than proofs of its implementation. - number: one combined agreement/validity message per node per check - number: O(n log n) bits per node for deterministic unique-ID initialization - number: n−1 fail-stop failures with properties restricted to non-faulty-visible inputs - number: up to O(n) communication rounds from tree height - limits: Nodes communicate over a partially synchronous network; certification agents share fate with implementation processes and only see local implementation inputs, not internal protocol messages. Failures are fail-stop, not Byzantine, because the implementation is assumed buggy but non-malicious. At least one agent must signal a violation, and operators must monitor agents. General predicates, automatic certificate synthesis, and automatic recovery after errors remain future work. IDs must remain stable across failures; variable-length decisions use cryptographic hashing and then have probabilistic soundness. Tree height can require O(n) communication rounds. - how much was read: most of it read - - record id: `runtime-certification-of-consensus-2019` - Synchronous threshold automata BMC (2019) - title: Verifying Safety of Synchronous Fault-Tolerant Algorithms by Bounded Model Checking - what: Introduces synchronous threshold automata (STA) for round-based fault-tolerant algorithms, proves parameterized reachability undecidable in general, and uses SMT to infer parameter-independent diameters as completeness bounds for bounded model checking safety. Defines STA counter systems with parameterized locations, linear threshold guards, resilience conditions and synchronous transitions. A two-counter-machine reduction establishes undecidability. For monotonic 1-cyclic STAs, schedules can be shortened to O(|Κ|c), where Κ is guard-atom count and c longest automaton path; trapped guards imply monotonicity. BMC encodes violations with quantified Presburger formulas, handling both ordinary and clean-round algorithms. Python tooling with Z3/CVC4 evaluates reliable broadcast, FloodMin/Floodset, k-set agreement, phase king/queen and other fault models; it found a published phase-king threshold bug. - number: diameters 1–4 - number: phase king diameter 4 - number: phase queen diameter 3 - number: 4GB RAM - limits: Bounded BMC is complete only when a valid diameter exists or a theoretical monotonic/1-cyclic bound applies. General STA reachability and diameter can be unbounded/undecidable. Clean-round algorithms require the clean-round condition encoded manually; automatic detection is future work. Encodings assume linear guards/constraints and SMT quantifier performance; liveness is not addressed. - how much was read: most of it read - source - record id: `synchronous-threshold-automata-bmc-2019` - Dinv (2018) - title: Inferring and Asserting Distributed System Invariants - what: It mines likely invariants over distributed snapshots of Go programs, using static slicing, vector clocks and Daikon. It turns chosen invariants into runtime assertions. - number: four Go systems, 1.7K-144K lines - number: Serf: about 1 million invariants reduced to 40 by manual refinement - number: Raft assertions 11, 13, 72 lines; detection 0.07, 0.36, 2.22 s - number: always-on check 52x slowdown, 1% sampling 1.02x - limits: The invariants are likely, not verified. It is designed for runs where no node fails. Humans choose which properties matter and write the assertion functions. - how much was read: most of it read - source; notes: Related-work omission: Inferring and Asserting Distributed System Inva; notes: Related-work omission: Inferring and Asserting Distributed System Inva - record id: `dinv-2018` - Layered Concurrent Programs (2018) - what: Formalizes layered concurrent programs, a single imperative concurrent notation containing a sequence of concrete-to-abstract programs with common code written once. A type system extracts each layer and checker programs; refinement is reduced to cooperative safety of checkers plus safety of the top abstraction. Defines gated atomic actions, parallel calls, preemptive and cooperative semantics, and mover-type commutativity. The projection and reduction theorems show that cooperative checker executions cover preemptive behaviors; instrumentation tracks snapshots and exactly one abstract action across preemption-free fragments. The lock example refines CAS/RESET spinlock to an ownership-aware abstract lock and then skip; Civl uses Boogie and has verified a garbage collector and race detector, with about fifty smaller examples including ticket lock and lock-free stack. - number: three-layer spinlock example - number: h checker programs for h refinement steps - number: around fifty smaller Civl programs - number: Section 6: around fifty smaller programs; large cases are a concurrent garbage collector and a data-race detector - limits: Soundness requires pairwise commutativity and mover annotations, disjoint outputs/linearity conditions, safe checker programs under cooperative semantics, and a safe top abstract program. The result is safety/refinement only, not liveness. The paper reports no new quantitative benchmark table; executable code generation, scalability, and IDE integration remain open, and concrete atomic-action gates remain trusted specification points. - how much was read: most of it read - source; notes: Civl and inductive sequentialization - record id: `layered-concurrent-programs-2018` - Modular Paxos verification (2018) - title: Paxos Consensus, Deconstructed and Abstracted (Extended Version) - what: # Paxos Consensus, Deconstructed and Abstracted: whole paper reading (authored by agents unless marked 🧑) Álvaro GarcĂ­a-PĂ©rez, Alexey Gotsman, Yuri Meshman and Ilya Sergey's extended Paxos Consensus, Deconstructed and Abstracted is arXiv:1802.05969v1,16 February 2018. All 44 pages were read: eight sections, Appendices A–E, all 17 figures, four theorems, five lemmata, four definitions, examples 1–6, all printed proof outlines and 32 references. All 11 contact sheets and individual15,18,21,22,28,32,33,44 were inspected. The original, local and official PDFs match. No author code, scientific-result artifact or formal checking tool was executed or loaded. [Evidence: Q0, frontmatter/v1 identity, PDF pp.1–1; literal spans in quotes.json.] The paper separates two verification problems: proving single-decree Paxos through composable shared-memory object specifications, and deriving Multi-Paxos by transformations of message handling. It adapts Boichat et al.'s Paxos→Round-BasedConsensus→Round-BasedRegister decomposition. The lower specifications deliberately admit unsuccessful operations that nevertheless expose values to other operations. The aim is to preserve each unchanged module's proof when changing another module or the network implementation. Claims of being the first such modular verification belong to these authors; this reading does not establish historical priority. [Evidence: Q1, §1, two contributions, PDF pp.2–3; Q28, §7, complete comparisons/claimed novelty, PDF pp.24–25; literal spans in quotes.json.] The setting is crash-stop, majority-quorum consensus, not Byzantine consensus or crash-recovery with durable storage. The basic network neither invents, changes, drops nor duplicates messages, delivers with unbounded delay, and has nonblocking send/blocking receive. Later transformations explicitly introduce selected read-request duplication. Leader election is omitted under an assumption that one correct process trusted by all other correct processes always exists. No failure-detector implementation, storage-recovery proof or general termination proof is supplied. Finite trace refinement and linearizability establish safety properties, not eventual completion: lower specifications may repeatedly choose failure. [Evidence: Q2, §3, decomposition/leader assumption, PDF pp.4–5; Q3, §3, network/imperative language, PDF pp.5–5; Q4, §1, safety scope, PDF pp.1–1; Q19, Definition1, full configuration traces, PDF pp.18–18; literal spans in quotes.json.] Acceptors retain promised round r, accepted round w and value v. A read(k) gathers distinct-sender acknowledgments from ceil((n+1)/2) acceptors and chooses the value with highest accepted round, or undef. A write(k, v) gathers an equal majority; either operation can fail after a nack. Acceptors accept requests at k≄r and atomically update state with their acknowledgment send. A proposer uses rounds pid, pid+n, pid+2n,
; this guarantees disjoint rounds between processes under one continuing invocation per process. Reinvoking the printed entry operation resets k to pid, so repeated independent calls need fresh-instance state or persistent counters. Fixed process identities and trustworthy message origins under the assumed transport model, plus matching request rounds, are essential. [Evidence: Q6, Figure3/§3, complete read/write implementation, PDF pp.6–6; Q7, Figures4–5, acceptor and entry implementation, PDF pp.7–7; Q8, §3, entry and unique rounds, PDF pp.8–8; Q3, §3, network/imperative language, PDF pp.5–5; literal spans in quotes.json.] The top sequential specification stores one value, choosing the first proposal and returning that value thereafter. Its concurrent implementation can decide another process's previously exposed proposal; ghost pending-thread entries let one invocation linearize that proposing operation first and then itself. This is helping: a thread's logical effect may occur during another thread's step. The proof assumes unique proposal values, one pending slot per process and single-assignment result cells. A concrete invocation identity or a justification that unique tagging preserves client-visible equality would be needed to generalize beyond that stated setting. Abstract results are declared Boolean in Figure 7 although proposal values have type val; this is a printed typing mismatch. [Evidence: Q5, Figure2, atomic entry specification, PDF pp.4–4; Q10, §4/Figure 7/Theorem 1, complete top refinement, PDF pp.9–10; Q30, Appendix A, complete top-level proof outline, PDF pp.27–29; literal spans in quotes.json.] Figure 6 gives the reason for weakening the intermediate abstractions. A low-round write can fail overall yet reach one acceptor, after a higher-round quorum has already decided another value. An overlapping read may see that isolated value and complete successfully, although its subsequent write will fail. Real-time order and this information flow can require the failed write to linearize before the read. The abstract specifications therefore retain sets of exposed values rather than only the globally decided value, allow reads at stale rounds and allow a write at an otherwise eligible round to fail because a concurrent operation overtakes it. [Evidence: Q9, §3/Figure 6, complete histories and rationale, PDF pp.8–9; Q11, §4/Figure8, round consensus contract, PDF pp.10–12; Q12, Figure9/§4, complete register contract, PDF pp.12–12; literal spans in quotes.json.] Round-BasedConsensus's atomic proposeRC(k, v0) nondeterministically selects vD and a success flag. If vD is already exposed or equals v0, it adds vD to valsRC even on failure; success additionally needs k≄roundRC and retains the first decided vRC. Round-BasedRegister is weaker: every write exposes its input, a successful eligible write updates roundRR and vRR, and a read may return any exposed value when its round is stale. Its vRR is not itself an immutable consensus decision. The enclosing read-before-write discipline and unique increasing rounds are needed to recover the deterministic top specification. Theorem 2 places logical effects at failed read or completed write. [Evidence: Q11, §4/Figure8, round consensus contract, PDF pp.10–12; Q12, Figure9/§4, complete register contract, PDF pp.12–12; Q13, Theorem 2, round consensus linearization, PDF pp.12–12; literal spans in quotes.json.] The register proof uses prophecy variables: ghost values selected according to how an operation eventually returns. Successful reads are intended to linearize when the quorum-th read acknowledgment is sent, successful writes at the quorum-th write acknowledgment, failed reads at their nack return, and failed writes at the first accepting response or at the failure return if none accepted. These are proof annotations, not an implementable ability to predict network schedules. Ghost counters count acknowledgments sent, whereas concrete quorums count acknowledgments received. The basic no-duplication premise is used in relating those quantities. [Evidence: Q14, §4, register prophecy/linearization explanation, PDF pp.12–14; Q15, Figure10, complete instrumented read/write, PDF pp.14–14; Q16, Figure 11/Theorem3, complete annotated acceptor, PDF pp.14–15; Q32, Appendix C, complete register proof outline/invariants, PDF pp.31–41; literal spans in quotes.json.] Reader source-level objection to the printed read annotation: Figure 11 requires both count_r[k]=quorum−1 and proph_r[k]=(true, v), where v is that particular acceptor's local value. The eventual read result is instead the maximum accepted-round value among received acknowledgments. With n=3, let A1 hold (vA, w=1) from a failed write and A2 hold undef. A read at k=3 returns vA after receiving A1's then A2's replies. When A1 sends, count=0 rather than 1; when A2 sends, count=1 but its undef differs from the prophecy vA. A third sender sees count=2. No successful-read annotation fires. This ordinary schedule substitution identifies a proof-instrumentation gap, not a conflicting-decision attack or an executed trace. The proof needs an annotation tied to the relevant quorum maximum, not equality with an arbitrary quorum-th sender's value. [Evidence: Q15, Figure10, complete instrumented read/write, PDF pp.14–14; Q16, Figure 11/Theorem3, complete annotated acceptor, PDF pp.14–15; Q32, Appendix C, complete register proof outline/invariants, PDF pp.31–41; Q9, §3/Figure 6, complete histories and rationale, PDF pp.8–9; literal spans in quotes.json.] The incomplete-operation case also needs care. The paper leaves a never-returning write's prophecy undef and never linearizes it, although it may already change an acceptor and supply a value read by another operation. A standard linearizability proof can complete selected pending operations; this annotation needs to support those completions rather than erase every nonreturning writer. Separately, after correcting the acknowledgment predicate notation, Appendix C's intended Val(j, v) invariant equates the current value with existence of a historical write acknowledgment for v. After accepting v1 then v2, the retained message history still contains the acknowledgment for v1 but the current value is v2, contradicting the reverse implication. The intended invariant needs a latest-round qualification. These are reader proof obligations, not a rejection of Paxos's ordinary quorum argument. [Evidence: Q14, §4, register prophecy/linearization explanation, PDF pp.12–14; Q16, Figure 11/Theorem3, complete annotated acceptor, PDF pp.14–15; Q32, Appendix C, complete register proof outline/invariants, PDF pp.31–41; literal spans in quotes.json.] The appendices contain additional transcription problems material to mechanization. Appendix A's loop annotations use pid=k mod n despite initializing k=pid and maintaining the owner formula ((k−1) mod n)+1; n=3, pid=3, k=3 gives3≠0. They also assert a false pending flag after an unsuccessful iteration, although that branch does not clear it. Appendix B's rely relation prints an index condition (k mod n)≠(k mod n), with no distinct index, which would exclude all interference literally. Appendix C's req/ack predicates reuse the same message identity for a request and its reverse-direction acknowledgment; for different endpoints those fields cannot both hold. These details must be corrected before treating the outlines as machine-checked proofs. [Evidence: Q30, Appendix A, complete top-level proof outline, PDF pp.27–29; Q31, Appendix B, complete round consensus proof outline, PDF pp.29–31; Q32, Appendix C, complete register proof outline/invariants, PDF pp.31–41; literal spans in quotes.json.] The network layer models local states, protocol transition relations and a multiset of uniquely identified messages retained after reception with active=false. A simple execution chooses an internal step, send or receive at one node. Appendix D flattens proposer code, carries the residual program text in each local state and gives send/receive rules; it leaves ordinary WHILE-language semantics assumed. Thus program counters and auxiliary loop variables are part of this encoding, not invisible implementation details. Receive rules in Figures13–14 also print an unbound n where the destination-node update is intended. [Evidence: Q17, §5.1, local states/messages/transition relations, PDF pp.16–17; Q18, Figure13/§5.1, network steps, PDF pp.17–18; Q33, Appendix D, complete code-aware encoding, PDF pp.41–44; literal spans in quotes.json.] Out-of-thin-air semantics adds selected read requests without changing local state, justified by predicate P when the proposer has reached at least that round. Lemma 1 claims its complete configuration traces are included in the simple semantics. Appendix E's entire argument says a read request does not change proposer state and has no nontrivial precondition. That does not directly match Appendix D's code-aware encoding, where executing send advances the residual program and loop, and a particular round/destination request is sent once. Extra duplicate requests with unchanged program state therefore need an explicit observation/projection or a different reusable-send protocol. The source's exact-trace inclusion is stronger than client-visible equivalence and its printed one-sentence proof does not bridge them. [Evidence: Q20, §5.2, complete OTA rule/predicate/Lemma 1, PDF pp.18–18; Q19, Definition1, full configuration traces, PDF pp.18–18; Q33, Appendix D, complete code-aware encoding, PDF pp.41–44; Q34, Appendix E, complete transformation/composition proofs, PDF pp.44–44; literal spans in quotes.json.] Slot replication runs an independent single-decree instance per slot; projection to any slot recovers its base behavior up to stuttering. Widening then copies a triggering read request to all slots at the same recipient. Its refinement requires OTA compliance and P-monotonicity: a request justified at one sender slot must be justified at every other sender slot. Example 4 correctly excludes independently advancing rounds and supplies fixed-round instances as a positive case. Example 5 immediately invokes the unrestricted Section 3 implementation, whose rounds retry independently; the required synchronization/restriction is not established there. An independent-slot source-level case uses n=3, pid=1, with sender slots at rounds 4 and 1: request k=4 satisfies P in the first slot but not the second. The refinement must state a shared-round discipline rather than infer it from ordinary slot independence. [Evidence: Q21, §5.3/Figure14/Definition2/Lemma2, independent slots, PDF pp.18–20; Q22, §5.4/Definition 3, widening rule/OTA compliance, PDF pp.20–21; Q23, §5.4, Definition4/Examples4–5/Lemma3, PDF pp.21–21; literal spans in quotes.json.] Two further printed conditions need explicit scope. Definition 3 introduces a triggering subset T but then quantifies all messages m∈M instead of m∈M∩T; its read-only P would reject ordinary write/ack messages. Optimized widening's receiveAndAct applies a received message to every slot without an explicit m∈T branch, despite T appearing in the rule's name. Applying a slot-specific write everywhere would not preserve independent slots. Restrict the optimized rule to triggering read requests and retain ordinary per-slot reception for other messages. These are literal-rule qualifications, not evidence about the linked Scala implementation. [Evidence: Q22, §5.4/Definition 3, widening rule/OTA compliance, PDF pp.20–21; Q24, §5.5, all-slot optimized rule/Lemma 4, PDF pp.21–22; Q23, §5.4, Definition4/Examples4–5/Lemma3, PDF pp.21–21; literal spans in quotes.json.] Reader refinement qualification also applies to Lemmata 3–4. Widening consumes one active request and inserts replicas in the same transition; separate slot-replicating receive and OTA send transitions introduce intermediate configurations. Appendix E explicitly says, “This allows us to emulate this step by a per-slot execution of the OTASend.” That establishes a multistep simulation argument, while Lemma 3 states inclusion of complete configuration traces. Lemma 4 permits compression of intermediate configurations, but expanding receives also leaves inactive replica requests in message history; the optimized rule does not insert that same history. A specified observation/refinement mapping must account for grouped steps and internal request histories, not just remove intermediate configurations. These are source-level proof obligations, not executed counterexamples or consensus-safety violations. [Evidence: FR_FQ19, §5.1, observation definition, PDF pp.17–17; FR_FQ25, §5.4, WStepReceiveT adds replicas while consuming the original, PDF pp.20–20; FR_FQ26, §5.5, optimized widening has no triggering-set guard, PDF pp.21–21; FR_FQ27, §5.5, Lemma 4 configuration compression, PDF pp.22–22; FR_FQ40, Appendix E, Lemma 3 simulation uses multiple steps, PDF pp.44–44; literal spans in quotes.json.] Optimized widening batches one recipient's per-slot receive, local and reply steps; Lemma 4 relates it to expanding those local sequences. Bunching packages the resulting replies in a message, caches/unpacks them on demand and maps them back to separate messages in Lemma 5. The intended benefit is amortized Phase 1 across slots while reusing single-decree proofs. Because the model permits infinitely many slots, its all-slot batch needs a finite or lazy representation before implementation. The register-provider interface exposes independent write-once slots; it does not itself prove client request deduplication, gap-free log execution, application linearizability or leader-lease correctness. [Evidence: Q24, §5.5, all-slot optimized rule/Lemma 4, PDF pp.21–22; Q25, §5.6/Figure15/Lemma 5, bunching/unpacking, PDF pp.22–23; Q26, §5.7–6, composition/interface/stability, PDF pp.23–24; Q27, §6, Scala/Akka prototype/Theorem 4, PDF pp.24–24; literal spans in quotes.json.] Theorem 4 composes Theorem 1 with the transformation lemmata to claim refinement of an array of atomic write-once registers. Appendix E supplies short proofs of Lemmata 1–3 and Theorem 4; Lemmata 4–5 have statements/explanations in the body but no separate extended proofs. Stable rely/guarantee assertions are the stated condition for transporting program reasoning across network transformations. The paper's conclusion proposes Raft, PBFT, Mencius, master leases and epoch numbering as future applications, without establishing those results here. [Evidence: Q26, §5.7–6, composition/interface/stability, PDF pp.23–24; Q34, Appendix E, complete transformation/composition proofs, PDF pp.44–44; Q29, §8, contributions/proposed extensions, PDF pp.25–26; literal spans in quotes.json.] Validation is a Scala/Akka proof-of-concept linked at github.com/certichain/protocol-combinators, plus handwritten specifications, annotations and proof outlines. The paper reports no benchmark configurations, performance measurements, experiment counts or machine-checked artifact for its own argument. “Executable” and “provably correct” are the authors' descriptions; source-code refinement and runtime-library correctness were not inspected in this reading. TLA+, PVS, Isabelle, EventML, PSync, Ivy, IronFleet, Verdi and Disel appear as related work, not tools used to check these particular proofs. [Evidence: Q27, §6, Scala/Akka prototype/Theorem 4, PDF pp.24–24; Q28, §7, complete comparisons/claimed novelty, PDF pp.24–25; Q34, Appendix E, complete transformation/composition proofs, PDF pp.44–44; literal spans in quotes.json.] For this database the main contribution is proof reuse across both object abstraction and protocol-aware network optimization, with failed-write information flow as a concrete test of specification adequacy. Reader follow-ups are a TLA+ model of ghost-free concrete histories and slot/round synchronization; Verus/Rust ownership and typed sender/instance proofs for a finite lazy network adapter; and LLM proof-agent tasks checking prophecy coverage, pending-operation completions, stable interference assertions and exact refinement observations. No Verus, verified Rust or LLM evaluation is reported. These proposed checks should distinguish repairing printed proof outlines from discovering an actual consensus safety violation. [Evidence: Q1, §1, two contributions, PDF pp.2–3; Q14, §4, register prophecy/linearization explanation, PDF pp.12–14; Q23, §5.4, Definition4/Examples4–5/Lemma3, PDF pp.21–21; Q27, §6, Scala/Akka prototype/Theorem 4, PDF pp.24–24; Q29, §8, contributions/proposed extensions, PDF pp.25–26; literal spans in quotes.json.] - number: Module proofs can be reused across implementations - number: Crash-failure Paxos setting - limits: Crash-stop failures; majority quorums; reliable transport with no invented, modified, lost or duplicated base messages; fixed process identifiers; unique proposals and disjoint increasing rounds under one continuing invocation per process; correct trusted leader assumed. Handwritten proof annotations require repairs. Transformations need stable assertions, cross-slot P-monotonicity, triggering-message guards, and an observation/refinement mapping. - how much was read: most of it read - source - record id: `modular-paxos-verification-2018` - Nickel: A Framework for Design and Verification of Information Flow Control Systems (2018) - what: Nickel verifies that deterministic sequential system interfaces and their C implementations satisfy information-flow policies. A state-dependent action-domain function and possibly intransitive flow relation define permitted influence. Noninterference compares observations after original and optionally purged action histories. Coq-proved unwinding and restricted-refinement theorems reduce system proofs to Z3 checks over individual operations. Demonstrations cover the NiStar DIFC kernel, NiKOS process isolation and a repaired ARINC 653 interface specification. Records exact purge and seven unwinding obligations, lockstep data/policy refinement, trusted policy/checker/initialization boundaries, deterministic/uniprocessor/static-policy restrictions, manual observational equivalence, all object/label/quota/scheduler mechanisms, concrete covert channels and interface redesigns, complete LOC cells, verification/effort times and the logical-time experiment. Separates mechanized metatheory from trusted SMT implementation and ARINC specification analysis from kernel implementation verification. - limits: §§1,3.1,3.5,6.3: Only sequential deterministic state machines, with system-call/trap handlers atomic on a uniprocessor. NiStar disables timer interrupts in kernel space and all other interrupts, using polling drivers. This does not establish security under multicore/shared-memory concurrency, weak memory or interleaved kernel handlers. §3.1 Definition1: Policy P=(D,flow,dom); domains represent exercised authority, flow is a fixed relation on domain pairs, and dom(action,state) may depend on the current thread/labels. Intransitive flow can allow p1→scheduler→p2 while forbidding direct p1→p2. A state-dependent dom does not make the can-flow-to relation dynamic; changing that relation is unsupported. §3.2 Definition2/Figures4–5: sources recursively tracks permitted direct or intermediate influence along a trace. purge is a SET of subtraces: it always permits retaining an action and permits dropping it only when its domain is outside sources, recomputing later state on the removed branch. Noninterference quantifies over every action, original trace and permitted purged trace and requires equal next-action output from the two resulting states. This is a relational security property over histories, not only memory isolation or functional refinement. §3.2: Authors establish reduction to classical noninterference for state-independent dom and monotonicity when flow is relaxed while domains/dom stay fixed. The PDF states these sanity checks but does not print their detailed proofs. Do not generalize monotonicity to changes of all policy components. §3.3 Theorem1/Figure6: Developers supply an inductive state invariant and per-domain observational equivalence. Seven universally quantified obligations cover invariant initialization/preservation, equivalence, consistency with dom, consistency with flow, output consistency, local respect and weak step consistency. Accepted invariants/equivalences are checked proof inputs, not trusted axioms; inventing an unsuitable relation can fail the checks. They remain substantial human work. §3.4 Theorem2: General refinement may introduce leaks. Supported data refinement requires same actions/outputs, related initial states, one-step preservation and equal output for related states satisfying the implementation invariant. Policy refinement additionally preserves dom for the same action/history and uses the same domain set/flow relation. No arbitrary stuttering, action splitting or nondeterministic refinement is claimed. §§3.5,6.2: Guarantees cover modeled interface observations, including logical scheduling time. Physical timing, sound, energy and microarchitectural channels outside the model are excluded. No distributed network fault, crash-recovery, availability, termination or fairness guarantee is supplied. The scheduler description assumes an infinite stream of timer interrupts rather than proving hardware progress. §4: Coq mechanizes the two general theorems. Python specifications/proof inputs and symbolic execution of C-derived LLVM IR produce Z3 obligations. Paper explicitly trusts information-flow policy, unwinding checker and Z3; implementation verification adds refinement checker and unverified initialization/glue. This is not an independently checked proof certificate for each SMT result or fully verified checker/compiler/hardware chain. §4: The intended policy is the trusted top-level requirement and needs auditing. Automated verification cannot show that an overly permissive policy matches the user’s security intention. A failed condition may reflect a genuine interface/implementation channel or insufficient invariant/observational equivalence; every solver counterexample is not automatically an exploit. §5: Determinism is obtained by exposing allocation choices as arguments, specifying allocation behavior precisely (NiStar), or hiding choices below the interface (NiKOS virtual addresses). Encrypted sequential names technically violate exact noninterference despite a claimed negligible practical leak; Nickel avoids them rather than proving probabilistic security. §§6.1–6.2: DIFC safe-flow relation combines sender and receiver ownership for controlled declassification/endorsement. Alice’s tty daemon is trusted to release secrets only to her terminal; a label proof does not verify that daemon’s declassification logic. Only threads/gates may have nonempty ownership. Fixed-size pages and finite interfaces aid SMT automation. §6.3: NiStar uses a kernel identity mapping and separate user/kernel page tables. The incomplete POSIX emulation, musl, lwIP, file-system wrapper and applications demonstrate usability; their existence does not extend the kernel proof to full application correctness, network security or durable filesystem semantics. §7: NiKOS mirrors a particular mCertiKOS interface after changing executable loading to make quotas agree. It is not a proof of every mCertiKOS variant. ARINC 653 result verifies a Python-modeled 14-operation communication interface after fixing three previously known channels; no ARINC kernel implementation/refinement proof or new bug discovery is reported. §8: Counterexamples for injected §2 examples and the round-robin workload demonstrate detection within these models. The logical-time plot supports its stated scenario, not absence of unmodeled physical channels. No Linux performance comparison, end-to-end application throughput benchmark, repeated-run confidence interval, or quantitative covert-channel capacity study is provided. §8 Figure11: LOC for interface implementation excludes shared C/x86 infrastructure; user-space LOC excludes third-party musl/lwIP. Effort figures are authors’ experience, not a controlled productivity comparison: one author six/two/one weeks for specification+verification, several researchers about six months implementing NiStar, and two months exploring framework definitions. §§9–10: Related work includes seL4/CertiKOS/Ironclad/Komodo and Covern, plus DIFC policy-synthesis tools; those citations do not mean Nickel supports concurrency or automatically synthesizes the complete policy/observational equivalence. No direct Verus, Rust, TLA+ or LLM-agent experiment. Public source pointer saved; artifact/proofs not run. - how much was read: most of it read - source - record id: `nickel-a-framework-for-2018` - Peregrine population-protocol analyzer (2018) - title: Peregrine: A Tool for the Analysis of Population Protocols. - what: Introduces Peregrine, a web tool for designing, simulating, statistically sampling and parameterized-verifying population protocols. It verifies silent protocols over all infinitely many initial populations using layered termination and Presburger overapproximations, with LoLA confirmation and counterexample replay. The paper defines protocol/configuration/fairness semantics and illustrates majority voting. The UI supports graphical or script descriptions, manual/random simulation with rewind, convergence-speed statistics and JSON export. Verification first proves layered termination (a sufficient condition for silence), then searches an iteratively strengthened Presburger overapproximation for bad initial-to-terminal executions; candidate counterexamples are checked for concrete reachability by LoLA and replayed/exported. It distinguishes ordinary and increased-accuracy consensus classification, where LoLA checks whether a nonterminal consensus can later be broken. - number: 5000 random executions in illustrated statistics - number: population size at most 25 and execution length at most 40 - number: verification up to about 100 states and a few thousand transitions - limits: Parameterized verification is supported only for silent protocols; if layered termination fails the tool derives no conclusion. Reachability is approximated, so satisfiable bad formulas require LoLA confirmation and unsatisfiable formulas prove correctness only under the approximation theorem. Fairness abstracts random interactions. Constraint-system size limits current verification to roughly 100 states and a few thousand transitions; arbitrary non-silent protocols and finite-state tools' scalability are outside scope. - how much was read: most of it read - source - record id: `peregrine-population-protocol-analyzer-2018` - QWIRE Coq verification (2018) - title: QWIRE Practice: Formal Verification of Quantum Circuits in Coq - what: Embeds the QWIRE quantum-circuit language in Coq, with linear-wire typing, higher-order abstract syntax (HOAS), translation to explicit-variable circuits, and density-matrix semantics. The paper reports three concrete correctness lemmas: a closed coin flip yields diag(1/2,1/2); any supported unitary followed by its conjugate transpose equals the identity on every well-formed input matrix; and dynamic lifting followed by bit reconstruction agrees with measurement. These are paper-reported Coq results, subject to acknowledged unproved foundational lemmas [Q1–Q4,Q15–Q20]. §3 explains how context equations are solved by commutative-monoid cancellation with at most one existential variable, followed by pairwise-disjointness proofs. HOAS delegates variable binding/substitution to Coq; fresh patterns turn it into flat circuits for semantics. §4 uses function-valued matrices, interpretation of patterns by wire permutations, gates extended by identity on untouched wires, and finite summation over measurement branches for lifting. §5 gives theorem statements and proof-size descriptions rather than benchmark experiments. Deutsch–Jozsa is a motivation for induction, not a proved case reported here [Q6–Q18]. - number: 14 pages, printed119–132 - number: 12-line flip_toss proof, author-reported - number: unitary_trans_id proof fewer than20 lines, author-reported - number: 3 syntactic circuit forms: output, gate, lift - limits: Authors leave several matrix lemmas, preservation of mixed-state well-formedness, and composition/denotation compatibility unproved. Matrix equality uses functional extensionality. The explicit scalability observation concerns (non-parametric) circuits with more than a few qubits. Finite wire interpretations permit enumerating lifting outcomes, but the gate set need not be fixed. Printed foundational formulas have defects recorded as reader deductions; no implementation-level conclusion follows [Q5,Q9–Q14,Q20–Q21]. - how much was read: most of it read - source - record id: `qwire-coq-verification-2018` - TCS (2018) - title: Multi-Shot Distributed Transaction Commit - what: Defines Transaction Certification Service (TCS), a repeated transaction commit interface whose committed transactions must have a legal real-time-respecting sequential order for a configurable conflict-check function. States correctness of multi-shot 2PC under algebraic conditions on shard-local conflict checks, then a simulation from a crash-tolerant protocol that weaves certification into Paxos-style replication. Provides key invariants and an agreement proof; main theorem proofs are external. Gives analytic failure-free latency reductions from seven to four message delays, or three with all-to-all acknowledgements. The correctness definition linearizes the committed projection, so it imposes safety on commits without forcing every abort to be justified by the global conflict function. It separates checks against decided-commit transactions (f_s) from stronger checks against prepared-commit transactions (g_s); conditions (6)–(8) require global/local consistency, strengthening, and a cross-order commutativity property. Abstract 2PC deliberately allows forgetting and recalling final decisions: votes/order survive recovery while a leader can temporarily lose knowledge of an abort, affecting later certifications. The concrete protocol persists transaction-vote pairs at quorums, computes votes only at leaders, synchronizes recovered follower state, and allows multiple unreplicated coordinators. Invariant 7 proves one accepted vote and slot per transaction, using preservation across ballots and transaction uniqueness. - number: {'shard_replicas': '2f+1; quorum f+1; at most f crash-stop faults', 'failure_free_message_delays': {'vanilla_2PC_over_Paxos': 7, 'integrated_protocol': 4, 'all_to_all_variant': 3}, 'timing_scope': 'includes communication with client, analytical message delays, not measured wall-clock latency'} - number: TCS supports serializability and snapshot-isolation certification functions - number: Failure-free optimized protocol can expose a transaction decision in four message delays including the client, or three with all-to-all communication - number: Correctness is established through refinement theorems and invariants - limits: Optimistic concurrency control; each submitted transaction has completed its speculative execution and carries read/write/version information. Example writes are also reads, commit versions exceed read versions, and serializability additionally assumes read versions already exist in committed history. Global and local certification functions distribute over union via conjunction; f_s/g_s must satisfy (6)–(8). Serializability and snapshot-isolation instances are supplied, with different prepared-transaction checks. Asynchronous reliable FIFO channels; crash-stop faults. Each shard has 2f+1 processes with at most f crashes; shard groups disjoint for simplicity. FIFO is used to preserve prefix order at followers. Only safety established. Liveness is left to eventual consistent leader election or sufficiently long synchrony; retransmission details omitted. Theorem 1 proof is reference [7] Appendix A; Theorem 2 simulation proof is [7] Appendix B. Supplied 18 pages include no appendices, mechanization or executable implementation evaluation. Pessimistic/mixed concurrency control and Byzantine adaptation are proposed future work, not results. - how much was read: most of it read - source - record id: `tcs-2018` - Verifying concurrent software using movers in Cspec (2018) - what: Cspec is a Coq framework for implementing and proving concurrent systems through state-machine refinement, composable layers and reusable proof patterns. Right/left movers reduce interleavings to atomic execution of larger code blocks. Fully mechanized patterns verify a Maildir-like server, Cmail, and a locked counter over an x86-TSO model. Extracted Haskell Cmail scales on a twelve-core tmpfs benchmark. Records state/argument-dependent commutation and stable enablement, finite-prefix safety scope, protocol proof obligations, error-state elimination, zero-effect retries and partition lifting. Captures six concrete mail concurrency cases, conservative PID-filtered directory listing, two naming plans, all TSO layers and the previous-owner buffer invariant. Saves all framework/layer LOC and pattern counts, measured setup, development anecdotes and precise trusted boundaries. - limits: §§1,5,7: Programs, operation/state definitions, implementations, abstraction relations, invariants and proofs are written manually within Cspec/Coq; it cannot directly verify arbitrary existing software. Executables use Coq extraction to Haskell (OCaml is mentioned as an alternative). The result is not a proof of arbitrary compiled C, Rust or a native binary. §§5.2,7: Correctness is trace inclusion, with every finite prefix representing possibly infinite behavior. Only safety properties are targeted. No scheduler fairness, termination, starvation freedom, eventual successful delivery or lock acquisition follows. The proof may insert a never-executed stably enabled left-mover into an equivalent execution; it does not make the actual scheduler run it. §§1–2,8.6: Node failures are outside scope. File-system crash behavior and durability are not proved despite the Maildir motivation. Top-level intended behavior and bottom-level file-system model must be correct. Coq soundness and standard assumptions including functional extensionality, extraction/runtime, driver and concrete syscall mapping are trusted. §§1,5.3,8: SMTP/POP3 parsing and protocol implementation are unverified. The Haskell network/file-system driver lies outside the proof. Compatibility with Go SMTP, postal and rabid is testing, not protocol conformance proof. TLS, spam filtering and logging are absent. §6.1 Figures 10–12: Commutation must preserve both operations’ individual return values and final state across distinct PIDs. Atomic blocks have right-movers, at most one non-mover, then left-movers. State-dependent properties need only hold after the already-executed prefix but require proofs for all reachable modeled states, not sampled interleavings. §6.1: Disabled intermediate operations require stable enablement when moving an operation earlier: enablement survives undoing another process’s step. An existing locked-file read can be a left-mover although reading arbitrary newly created/temporary files is not. Lock ownership rules must ensure other processes cannot release this process’s lock. §6.2: Protocol semantics disables forbidden operations, such as unlocked accesses. Sound use requires proving every API user follows the protocol under unrestricted semantics. Merely restricting the environment would assume away the race; Cspec requires the refinement proof. §6.3 Figure 13: The abstraction pattern keeps operation types fixed, preserves the return value and relates successor states for every low-level step. Invariant introduction uses an identity relation. An absorbing abstract error state can relate to any low-level state, but a later protocol proof must show it unreachable before obtaining the final guarantee. §6.4: Retry-loop bodies must either perform the correct successful effect and exit, or have zero effect and retry. This supports a safety/atomicity proof without guaranteeing eventual success. Partition lifting requires proven single-shard refinement plus correct naming and disjoint decomposition at top and bottom. §§3–5 Figures 1,3,6: The displayed mail/file-system specifications permit a false delivery/link return with no effect, not solely a proved name-collision cause. They are permissive safety specifications and do not guarantee success. The paper uses atomic rename terminology later; earlier implementation/spec uses link followed by unlink, with no destination overwrite, so do not substitute unrestricted POSIX rename semantics. §8.1: With concurrent deletion, PID-filtered readdir deliberately permits a superset of existing names. It is a right-mover, not a both-mover, in that case. A name absent from the superset is free; a reported name need not still exist. Plan 2 describes random names but concretely uses the current timestamp and relies on retry rather than guaranteed collision freedom. §8.2 Figure 16: The x86-TSO case verifies a modeled counter built over shared memory and per-core store buffers. Any core may flush any portion of its buffer at each low-level operation. This is not validation of a physical processor, compiler memory model or executable counter benchmark. §8.3 Figure 17: Performance uses local simulated SMTP/POP3 requests on Linux tmpfs, avoiding network and persistent-storage bottlenecks. Authors implemented the unverified GoMail comparator. Request mix is 1:1 delivery versus read/delete over 100 random users. Message sizes, measurement durations, repetitions, error bars and raw runs are not supplied. §8.4 Figure 18: Effort is two people about six months part time, following another twelve months of failed alternative designs. Incremental deletion/naming/multi-user timings are author anecdotes, not controlled studies or independent replications. The text’s approximate 100–200 spec LOC per layer omits displayed extremes 63 and 323. §8.5 Figure 19: Proof-pattern counts are module uses and need not equal numbers of layers. The Cmail diagram describes naming plan 1; the count table also includes the retry pattern used in plan 2, which has one additional intermediate layer. §§2,8.6: The state-machine approach draws on TLA and I/O automata, but the work is not a TLA+ implementation/proof or a distributed node-failure theorem. No Verus, verified Rust or LLM-generated-specification/proof evaluation. Public artifact URL is recorded but not fetched or replayed. - how much was read: most of it read - source - record id: `verifying-concurrent-software-using-2018` - XRP Ledger Consensus Protocol analysis (2018) - title: Analysis of the XRP Ledger Consensus Protocol - what: Gives a formal network model and safety/liveness analysis of XRP Ledger Consensus Protocol (XRP LCP), a Byzantine agreement protocol operating with individually chosen trusted node lists (UNLs). Defines nodes, asymmetric UNLs, quorum qi=ceil(.8ni), tolerated faults ti, ledgers and atomic-broadcast properties. It decomposes XRP LCP into deliberation, validation and preferred-branch components and provides pseudocode. Lemmas and propositions derive overlap conditions for ledger agreement: validation propagation through honest-majority support yields Theorem 8’s pairwise overlap bound. A constructed 102-node example shows that even 99% overlap can get stuck; Lemma 10 and Theorem 11 establish progress for a single agreed UNL with leaf validators under bounded-delay/no-fault rounds. - number: Theorem 8 safety condition: O_i,j > n_j/2 + n_i − q_i + t_i,j for every pair - number: with 80% quorums and 20% faults, roughly >90% UNL overlap is required - number: Example 9 demonstrates no progress despite 99% overlap and zero Byzantine faults - number: Theorem 11 guarantees no stuck state for a single agreed UNL of size at least k with q=n−floor((n−1)/k) plus leaves - limits: Safety is intended under arbitrary message asynchrony but assumes authenticated reliable channels and computationally bounded adversaries. Liveness only assumes eventual civil network delivery and no faulty nodes; FLP rules out full-asynchrony progress. Early analysis uses Byzantine accountability, explicitly rejected as tenuous; the broad theorem treats arbitrary deliberation outcomes, making the overlap condition sufficient rather than necessary. Results concern protocol rules and parameterized trust topology, not a measured deployment. - how much was read: most of it read - - record id: `xrp-ledger-consensus-protocol-analysis-2018` - Developing Bug-Free Machine Learning Systems With Formal Mathematics (2017) - what: Presents Certigrad, an implementation of stochastic computation graphs in Lean, with a reported machine-checkable proof that stochastic backpropagation produces unbiased estimates of the mathematical gradient of expected cost. It demonstrates a workflow in which formal specifications and attempted proofs guide implementation and expose both code errors and missing assumptions. It also reports verified Gaussian integration/reparameterization optimizations and an MNIST variational-autoencoder experiment with performance comparable to TensorFlow. Separates an executable stochastic program from its mathematical expectation semantics using Dist n, built by primitive sampling, deterministic returns and composition. The paper gives expectation and RNG-threading equations for each constructor. The initial all-graphs unbiasedness specification is strengthened with WellFormed, GradsExist, IntegralsExist and CanDiffUnderInts preconditions. A simple single-parameter, nonmemoizing implementation is proved first; a multi-parameter memoizing implementation is then proved equivalent. A heuristic tactic proves model-specific preconditions for the transformed AEVB graph. The verified optimization sequence integrates Gaussian KL terms and replaces parameter-dependent Gaussian sampling with standard-normal sampling followed by scale/shift, preserving the objective while changing the gradient estimator. - limits: Correctness is relative to the stated mathematical specification and adopted axioms. The authors assume real numbers, integration and primitive mathematical laws rather than constructing their foundations. They report repairing initially unsound axioms by restoring integrability conditions, but this reading does not independently audit that axiom set. The final displayed scalar theorem requires unique node identifiers and scalar leaves (WellFormed), appropriate differentiability for all relevant stochastic choices (GradsExist), existence of integrals (IntegralsExist), and conditions allowing gradients through integrals (CanDiffUnderInts). The implementation is reported to handle arbitrary tensor shapes and multiple parameters; the displayed specification deliberately simplifies these. Proving the generic algorithm is insufficient for an arbitrary client graph: each graph must meet the preconditions. Some are undecidable in general, so the theorem-proving tactic is heuristic rather than a complete decision procedure. The proof concerns ideal infinite-precision real arithmetic. The authors explicitly say replacing reals with floating-point numbers technically invalidates the specification and may cause numerical instability; no floating-point error bound is established here. The running system trusts optimized Eigen tensor operations and a small C++ wrapper to match the formally reasoned operations, and relies on Lean VM/runtime and primitive pseudo-random sampling. The paper describes corresponding mathematical/procedural distribution interpretations but does not establish a checked correctness theorem for the concrete RNG, Eigen, C++ wrapper or execution platform. Unbiased stochastic gradients do not establish convergence of ADAM, bounded gradient variance, statistical validity, good generalization or model fit. The empirical AEVB training comparison addresses one example, not those general guarantees. The source repeatedly says proving exposes all implementation errors. The supported guarantee is absence of violations of the modeled specification under its assumptions; specification errors, inconsistent axioms and implementation layers outside the model remain material, as the paper itself discusses. Claims of reduced cognitive burden and finding all bugs early are the authors’ development experience, not a controlled developer study or complete empirical bug census. The paper reports increased overall workload but supplies no person-hour or proof-size measurements. - how much was read: most of it read - - record id: `developing-bug-free-machine-2017` - Epistemic Model Checking of Atomic Commitment Protocols with Byzantine Failures (2017) - what: # Epistemic Model Checking of Atomic Commitment Protocols with Byzantine faults (authored by agents unless marked 🧑) Omar Ibrahim Al-Bataineh, arXiv1705.02515v3,10May2017. The official arXiv metadata calls the paper “Epistemic Model Checking of Atomic Commitment Protocols with Byzantine Failures”; the visible PDF title ends “with Byzantine faults” (M1,Q0). Official and inventory PDFs are byte-identical. The paper uses MCK to replace knowledge tests in a two-phase-commit program with concrete predicates, then studies cheating detection and termination in a synchronous reliable environment. The main qualification is its own Table2: global consistency, commit validity, abort validity and universal cheating detection fail. Eventual participant decisions and the stated coordinator/participant termination tests hold for the tested finite models. This is an analysis of a vulnerable protocol family, not a proof of Byzantine-correct atomic commitment (Q0,Q8,Q11). ## Scope and semantics Read all14PDFpages, sections1–8,17reference entries, all three protocol figures and three tables. Viewed individual renders7,8,9,12,13 to inspect complete pseudocode, formulas and tables. The PDF's visible version/date is2017; its creation metadata says2019, which is not substituted for the publication date. The bibliography is not a recursive reading of its cited sources. No MCK program, checker, author code or solver was executed/imported; no serialized model/experiment data was loaded. Knowledge is defined through indistinguishability: Ki(phi) holds if phi holds at every point compatible with agent i's local information. Perfect recall retains past observations. A knowledge-based program chooses actions using such formulas, whereas its concrete implementation uses predicates of observable variables and explicit history variables. Correct implementation requires equivalence at the program points/times where each knowledge test is used. Merely obtaining the same outcome on one run, or making a safe conservative replacement, is a weaker condition (Q1,Q2,Q3). The proposed workflow is partly automated. A human guesses a Boolean predicate/history update for each knowledge formula; MCK checks X^n(pc_i=l implies (predicate iff knowledge)). The human inspects counterexamples and revises the guess. The paper expressly says this requires “inspection and human reasoning” and possibly “some ingenuity.” It does not supply a fully automatic synthesis algorithm, a proof of search termination, or an agent evaluation. Its discussion of unique implementations depends on perfect recall and present-time knowledge tests, rather than arbitrary epistemic programs (Q3). ## Model, cases and reported properties One process coordinates a transaction and the others vote yes/no. An honest coordinator commits only when its own and all participant votes are yes; otherwise it aborts. It broadcasts its decision, receives acknowledgments and uses nested knowledge tests to decide when to stop. A Byzantine coordinator can choose an incorrect decision or send inconsistent decisions to different participants. The considered faults target outcomes rather than deliberately delaying or blocking termination (Q4,Q5,Q6,Q9). The environment delivers messages, handles synchronization and exposes the trap/cheatingDetected variables to participants. Communication is synchronous and reliable in the evaluated context, with bounded delays and chosen wait parameters. The general pseudocode also mentions undefined votes and communication failures; those are not evidence that the reported Byzantine-context checks include message loss. There is no arbitrary asynchronous scheduler, unbounded delay, crash recovery or cryptographic refinement result (Q5,Q9). A participant can detect cheating immediately when it voted no but receives commit. Participants may also open a run: they exchange their votes and received decisions, exposing contradictory decisions or a no vote paired with some commit instruction. A participant that detects cheating publishes that fact through the modeled variable. Such a publication mechanism assumes appropriate truth/correspondence in the environment; no executable authentication or dissemination implementation is supplied in the paper (Q5,Q7,Q10). The coordinator's vote remains private to it. If every participant voted yes and the coordinator sends one consistent but incorrect decision, opening the participants' observations does not expose its private vote. The paper reports a counterexample to universal cheating detection in this case. Its speculative policy follows the received decision when the participant does not know cheating occurred. That differs from requiring knowledge that no cheating occurred; the latter conservative policy is discussed as preventing commits in this information setting (Q10,Q11). Table1 gives three phase-specific predicate replacements. At point1, known cheating is a no vote paired with a received commit. At point2, detection also includes published cheating or an opened run with a no vote/commit pair or inconsistent decisions. Its point3 replacement for not knowing cheating is a yes vote with no publication/no trap, or a trap showing all participant votes yes and decisions equal. These are printed claimed equivalences, with the limitations below preserved (Q11). Table2 reports:1a global consistency fails;1b eventual participant decision holds;2a commit validity fails;2b abort validity fails;3 complete cheating detection fails;4a coordinator termination holds;4b participant termination holds. Specifications2a/2b explicitly constrain the coordinator's decision variable, while1a/1b concern participant outcomes. These different variables should not be collapsed into a claim about every honest participant's valid outcome. Failure of one displayed formula does not by itself identify all possible implementation failures; no full counterexample traces for every table cell are supplied (Q8,Q11). The models were checked for d=2,3,4,5 agents. The paper says “We conjecture that our present implementation can be shown to work for all number of agents” (§7,p13). Thus the all-size generalization is a conjecture, not a parameterized proof. It refers to “two contexts” there although this retained version presents only one Byzantine-context results row; a second unseen experiment is not inferred (Q12). ## Formula and predicate qualifications The explicit abbreviation Khat_i(decision) is Ki(decision=commit OR decision=abort). This says that agent i knows a decision has been made. It is weaker than knowing which decision: Ki(decision=commit) OR Ki(decision=abort). A two-point information set with commit at one point and abort at the other satisfies the first formula but neither disjunct of the second. Consequently the paper's prose “knows the final decision” should be interpreted with this written formula in view. The printed formula does not alone establish value knowledge, even if other model observations might establish it in particular phases (Q7,Q8; reader semantic example). Table1 point3 also appears too narrow for its claimed equivalence to NOT Ki(cheating). Consider an honest coordinator sending abort after a participant voted no, with trap=false and cheatingDetected=false. Cheating is actually false. By the factivity of knowledge under the stated indistinguishability semantics, Ki(cheating) is false, so its negation is true. Yet both disjuncts of the printed replacement require the participant's vote yes, making the predicate false. The program can still retain its already assigned abort outcome; this example challenges exact epistemic equivalence rather than proving an additional disagreement execution. The paper's unreleased environment/control-point details would be needed to see whether it excludes this apparently ordinary reachable case (Q2,Q7,Q11; reader derivation). The no-vote stopping explanation appeals to abort validity while Table2 reports abort validity fails for the coordinator's decision. Knowing the correct prescribed decision and knowing the actual Byzantine coordinator variable are different claims. The record preserves this ambiguity instead of deriving an unqualified early-stop theorem. Similarly, Specifications3/4a/4b and §7 use a free participant index i in the printed formulas; their prose talks about everyone. The coordinator pseudocode does contain an explicit conjunction over participants before breaking. Treat the displayed specifications as schematic per-participant tests unless the missing MCK model establishes their quantification (Q6,Q8,Q9). ## Run-length method and evaluation For a coordinator stopping condition T, the paper checks X^n(NOT T) universally over runs. Its first failed bound identifies an execution where T holds; the proposed doubling then binary search seeks the smallest such bound. To find a uniform upper bound it instead checks X^n(T), seeking the first bound where every run satisfies T; a counterexample at one step earlier illustrates a slow run. These are model time/communication bounds, not observed wall-clock latency or throughput (Q12). Binary search requires a monotone bounded predicate. Perfect recall preserves knowledge of past facts but does not, by itself, preserve knowledge of an arbitrary proposition about a changing current state. The one-shot decision/stopping model may provide the required persistence; its complete environment/transition model is needed to establish that. An asserted universal eventual stop also need not yield a finite uniform bound for arbitrary infinite-state systems. The paper's finite tested cases and its explicit “if any” upper-bound search should remain visible (Q12; reader methodological qualification). Table3 reports a shortest run of one round and d−1 messages, and a longest run of three rounds and3(d−1)messages. Figure3's optional participant all-to-all exchange can add2(d−1)(d−2) sends if each of d−1 participants sends both its vote and decision to each other participant. That is reader arithmetic from its loop. The paper does not explain how this optional traffic is charged in Table3, so its linear message totals should not become an unqualified bound including every opened-run exchange (Q8,Q12). No MCK version, hardware, state-space counts, checker runtimes, iteration counts, full environment listing, complete counterexample archive or source URL appears in the retained paper. Therefore its model-checking outcomes and timing/message claims remain author-reported. This read does not reproduce them or certify its printed formulas against a saved executable model. Future work includes coordinator replication, cryptography and improved fault detection (Q12,Q13). ## Contribution to the requested topic This provides a concrete specification-to-predicate refinement workflow for distributed protocols: preserving local observations/history, checking epistemic equivalence at exact control points and learning from counterexamples. Its negative results demonstrate that termination and detection improvements do not establish atomic-commit safety. There is no Verus/Rust implementation, TLA+ experiment or LLM agent. A reader proposal for proof/specification agents is to check formula/prose agreement, exact versus merely outcome-preserving predicate replacements, finite versus all-size coverage, hidden environment assumptions and complete message accounting separately. - limits: synchronousreliablecommunication;restrictedByzantinecoordinator;perfectrecall;finitetestedagentcounts;hiddenenvironment;negativecorrectnessresults;formula/predicatequalifications;noauthorreplay - how much was read: most of it read - source - record id: `epistemic-model-checking-of-2017` - Fonseca study (2017) - title: An Empirical Study on the Correctness of Formally Verified Distributed Systems - what: The authors tested IronFleet, Verdi and Chapar. Over eight months they found 16 bugs, all at the edges between the specification, the tools and the unverified code. None were in the verified protocols. - number: 16 bugs; the PK toolkit automated detection of 13 - number: disabling deduplication via seven implementation lines still passed IronFleet verification - number: 16 bugs found, none protocol-level; the PK testing toolchain detects 13 of the 16 - number: IronFleet request-deduplication patch: about seven implementation lines changed, still verified - limits: Finding no protocol bugs does not show that none existed. The source of the PK toolkit was not found. - how much was read: most of it read - source; notes: Specification errors and auditing; notes: Empirical distributed-systems study and PK - record id: `fonseca-study-2017` - Girault et al. MPC (2017) - title: Monotonic Prefix Consistency in Distributed Systems - what: Defines Monotonic Prefix Consistency (MPC) for replicated lists, gives a centralized toy implementation whose traces satisfy MPC, and proves that no convergent distributed implementation under asynchronous message delivery, availability, and the paper’s observability can be strictly stronger than MPC. Formalizes implementations as total update/query/message handlers, asynchronous broadcast/receive executions with causal delivery and fairness, and traces that record per-site query order/results plus an unordered set of writes. MPC requires per-site monotone reads, pairwise prefix-compatible reads across sites, and read values drawn from writes. Lemmas establish update/query availability, invisible-read deletion, fair execution limits, and convergence extension; induction then realizes every finite MPC trace and a limit argument realizes infinite traces. The paper compares MPC with causal and strong consistency and notes its observability makes MPC and strong-consistency traces indistinguishable. - number: MPC monotonicity/prefix/consistency conditions - number: finite and infinite trace construction - number: eventual-consistency convergence definition - number: all messages eventually delivered - limits: Assumes broadcast communication (peer-to-peer is encoded), all messages eventually delivered in infinite executions, total handlers (availability), list updates/queries with updates split from queries, unique write values (timestamps can enforce this), and a trace abstraction that hides write origin and write/query real-time order. Convergence means every write is absent from only finitely many queries. The impossibility does not directly cover operations that are both reads and writes, origin-sensitive traces, or probabilistic settings; the MPC implementation is centralized for simplicity. - how much was read: most of it read - - record id: `girault-et-al-mpc-2017` - Gomes et al. SEC Isabelle (2017) - title: Verifying Strong Eventual Consistency in Distributed Systems - what: Builds a reusable Isabelle/HOL framework that formalizes strong eventual consistency (SEC), an asynchronous unreliable causal-broadcast network, and three operation-based CRDTs: Replicated Growable Array, Observed-Remove Set, and increment-decrement Counter. The abstract convergence theorem proves that distinct happens-before-consistent operation lists with the same set of operations yield the same state when concurrent operations commute, while a separate no-failure condition gives progress. The network locale has six axioms covering unique node histories, delivery cause, local delivery, globally unique message IDs, causal delivery, and valid broadcast operations; messages may be delayed, reordered, dropped, or nodes may crash permanently. RGA proof models immutable element IDs, tombstones, insertion ordering, causal validity, and proves concurrent operations commute and application never fails. ORSet uses add IDs and remove sets of observed IDs; Add/Remove commute only under a proved independence condition. Counter operations commute unconditionally. The framework is executable via Isabelle code generation; one counter implementation ran over TCP, but detailed performance/fault-tolerance evaluation was left for future work. - number: 3 CRDTs verified - number: 6 network axioms - number: ~620 lines network, ~380 convergence, ~775 RGA, ~270 ORSet, ~55 Counter - number: ORSet proof about four hours; Counter minutes - limits: Network assumptions are axiomatic: finite totally ordered per-node histories, unique events/IDs, causal delivery for dependencies, and valid-msg predicates supplied by the algorithm. The model uses crash-stop permanent node failure, not recovery, and does not model overlay implementation, timing, or resource limits. RGA retains tombstones; garbage collection is explicitly out of scope. The correctness claims are for operation-based CRDTs satisfying the five SEC locale obligations, not arbitrary distributed data types. Executable extraction demonstrates computability rather than performance. - how much was read: most of it read - source; notes: papers and boundaries - record id: `gomes-et-al-sec-isabelle-2017` - Parameterized leader-election abstraction for FTSP (2017) - title: An Abstraction Technique for Parameterized Model Checking of Leader Election Protocols: Application to FTSP - what: Develops a simulation-preserving abstraction for parameterized timed leader-election protocols with unique identifiers and arbitrary topologies. It abstracts non-leader nodes and network edges around a shortest path to the future leader, approximates clock drift with finite schedulers, and incrementally checks FTSP root election for all graphs bounded by leader distance K. The method first maps identifiers/messages to future-root versus non-root values and relaxes irrelevant sequence/entry variables, then completes the graph outside a chosen shortest path and merges those nodes into an environment process. Simulation lemmas establish that checking the finite abstract model implies LTL properties on every topology in G_K. Approximate-synchrony scheduler S_a(Δ) over-approximates real clocks for a finite horizon derived from σ_l,σ_u,Δ. An incremental proof initializes already-converged path nodes and uses a non-interference guard to remove spurious environment messages. A NuSMV semi-algorithm finds optimal FG bounds without storing all reachable states. - number: synchronous K=7: N=107 in 13 minutes; includes 13×13 (169-node) and 13×13×13 (2197-node) grids - number: asynchronous K=5: N=63 in 65 minutes; includes 81-node 2D and 729-node 3D grids - number: table bounds: K=1 N=8, K=2 N=14, K=3 N=23 synchronous/25 asynchronous, K=4 N=35/39 - number: clock-rate guarantee for N=107 with periods [29.7,30.3], corresponding to ±1% rates - limits: FTSP broadcasts are assumed to complete before the next send event; nodes start in arbitrary configurations and no faults occur during the recovery window. Clock periods lie in [σ_l,σ_u], and finite approximate-synchrony simulation only covers a bounded execution horizon. The abstraction over-approximates behavior, so spurious traces require guard strengthening and proof of the non-interference lemma. Results concern FTSP root convergence, not full time synchronization or failures during the checked interval; asynchronous K=5 timed out beyond that range. - how much was read: most of it read - - record id: `parameterized-leader-election-abstraction-for-ftsp-2017` - Paxos Made EPR (2017) - title: Paxos Made EPR: Decidable Reasoning about Distributed Protocols - what: The paper transforms Paxos-family models so that checking a human-supplied proof falls in EPR. EPR is a first-order fragment where satisfiability is decidable (an algorithm always answers). It checks proofs. It does not discover invariants. - number: Six variants: Paxos, Multi-Paxos, Vertical Paxos, Fast Paxos, Flexible Paxos, Stoppable Paxos - number: Verified six protocol variants with EPR transformations - number: Z3 experiments repeated 10 times, 300s timeout, Linux Core-i7 1.8GHz - number: EPR verification conditions solved in a few seconds with no timeouts; semi-bounded runtimes grew with rounds; unbounded Z3 diverged - limits: Z3 did not terminate on unbounded checks of the original models. The URL of the original artifact returns 404, and the review notes found no verified copy. - how much was read: most of it read - source; notes: Paxos Made EPR - record id: `paxos-made-epr-2017` - Ivy repository (2016) - title: Ivy: Safety Verification by Interactive Generalization - what: Ivy is a research tool for interactive development of protocols and correctness proofs, with interactive visualization of automated proofs and a human/tool workflow for exposing errors. - number: Bounded verification about 10 transitions in a few minutes - number: Pages 614-630 - limits: README is brief and points to the website for details. - how much was read: most of it read - source; notes: tools - record id: `ivy-repository-2016` - Multi-Paxos TLAPS (2016) - title: Formal Verification of Multi-Paxos for Distributed Consensus - what: # Formal Verification of Multi-Paxos for Distributed Consensus (authored by agents unless marked 🧑) Saksham Chand, Yanhong A. Liu and Scott D. Stoller. The original paper appeared at FM 2016, pp 119–136, DOI 10.1007/978-3-319-48989-6_8. This record reads the 37-page corrected and extended arXiv:1606.01387v4, dated 11 November 2019, classified cs.DC on its first page. The inventory's 2016 year identifies the original work; it does not date the corrected version read here (Q1,Q45; arxiv.html). The contribution is a small TLA+ specification of Multi-Paxos and its preemption extension, an author-reported TLAPS proof of per-slot agreement, and concrete strategies for managing the much larger proof. Two qualifications matter. The authors explicitly retract the earlier completeness claim: “The claim of a complete proof in [7] was incorrect” (§1 p2, Q3), explaining a PTL backend bug and their replacement type-invariant proof. Separately, this read finds inconsistent maximum axioms in the printed appendix and pinned proof files as written (Appendix C p29, Q49,Q59,Q63). Thus the record preserves the corrected checking report but does not treat checker acceptance under those retained assumptions as independent certification of the assumption-free theorem. This is a mathematical assumption problem, not an observed execution failure or a counterexample to Multi-Paxos agreement. ## Reading and evidence scope Read all 37 PDF pages in extracted text and rendered images: sections 1–7, all six figures, both numeric tables, all 26 numbered equations, acknowledgments, all 63 reference entries, and Appendices A–C containing the specification, invariants and hierarchical proof. The figures are algorithm/proof listings and comparisons, not statistical plots. The two PDFs, one from the local inventory and one freshly fetched from arXiv, are byte-identical. The local PDF is the corrected v4, not the 2016 proceedings text. Fetched the author-linked DistAlgo/proofs repository's metadata, commit and recursive tree. The pin is fb4a727ed8fab39197d9a20ed066d21abbb83573, last commit 4 November 2019. Read its full README and selected plaintext specification, assumption, type-invariant and final-theorem regions of the improved Multi-Paxos/preemption modules, plus the historical FM16 TypeOK regions. The README distinguishes these versions and says improved proofs were checked with TLAPS 1.5.6 (Q56). Downloaded Basic Paxos baseline and historical modules provide retained source context; this is not a whole-repository or whole-module audit. The explicit excerpt/range inventory is in source-scope.json. Also read the complete official issue 40 body describing the coalescing bug (Q66); metadata says opened 1 April 2017 and closed 17 May 2018. Closing an issue does not identify the fix commit or certify every installed tool version. No author code, model, TLAPS, TLC, SMT solver or proof assistant was executed or imported. No serialized data/model/checkpoint was loaded. Reader checks use file hashes, literal source slices, arithmetic and symbolic reasoning. Raw Git files retain their bytes; .lf.txt files are identified newline-normalized derivatives for character and LF-line quote pointers. The PDF extraction renders □ as 2, primes as 0 and some negated existential/membership symbols unusually; rendered pages were used to interpret the formulas. quotes.json retains extraction bytes, including such artifacts. ## The model and the exact theorem The system has proposer, acceptor and learner roles, which may be colocated. Constants describe proposers P, acceptors A, quorum family Q and possible values V. Ballots B and slots S are natural numbers. Membership and the quorum family are fixed: dynamic reconfiguration is excluded. The sole stated quorum condition is Q ⊆ SUBSET A and pairwise nonempty intersection. Majority, tree or matrix quorums can instantiate it once that condition is established; the paper does not construct or evaluate those alternatives (Q6,Q13,Q19). The state contains the set msgs of every message ever sent, proposer ballots pBal, each acceptor's highest seen ballot aBal, and aVoted, a set of ballot-slot-value records retaining the highest voted ballot for each slot. Init uses no messages/votes, proposer ballot 0 and acceptor ballot −1. Next chooses one proposer or acceptor phase. Spec = Init ∧ □[Next]_vars permits an action or stuttering at each step (Q13–Q19). The messages-as-history abstraction lets processes select any previously sent message, repeatedly and in any order. An unhandled message models arbitrary delay or loss; repeated handling models duplication. Crashes are modeled by not scheduling the crashed process, and recovery resumes its retained state. The authors require “all state (vars) is stored in stable storage” (§3.3 p11, Q20). The model has no Byzantine message fabrication, volatile-state reset, implementation of durable storage, or explicit network delivery queue. This is a safety abstraction of benign failures. There are no fairness or eventual-delivery clauses in the displayed Spec. Repeating Init forever is a valid behavior through UNCHANGED vars and never chooses a value. This reader witness demonstrates the absence of decision progress, without challenging agreement. A quorum of functioning processes and delivery assumptions would matter for liveness; no such liveness theorem is established here (Q9,Q15,Q19; math-witness.json). The target is Spec ⇒ □Safe, where Safe means any two chosen values for one slot are equal. The paper identifies C1 proposed-value validity, C2 agreement and C3 learner correctness, then says C1/C3 are excluded from the formal proof; §3.3 and §4.8 discuss them informally (Q5,Q22,Q33). There are no explicit learner variables/actions. Validity means a chosen slot/value occurred in a protocol 2a proposal, not that a value came from an external client or satisfied an application invariant. Equations 24/26 use sent although the state variable is msgs; the record treats this as the printed informal derivation, not a checked new theorem. The precise Chosen definition used in the proof is ∃b ∈ B: ∃Q ∈ Q: ∀a ∈ Q: VotedForIn(a,b,s,v). VotedForIn witnesses a sent 2b message with that ballot and slot/value. The introductory equations 3/4 place ∃b inside ∀a, allowing different ballots for different acceptors. Those predicates differ; use equations 10–12 and Appendix B for the actual theorem (Q6,Q23,Q48). A separating predicate valuation in math-witness.json makes the difference explicit, without claiming a reachable protocol counterexample. ## Minimal algorithm changes Basic Paxos carries one latest accepted ballot/value pair. Multi-Paxos carries a set of ballot-slot-value records in each promise. Phase1a sends a ballot. Phase1b responds only to a strictly higher ballot, returning its voted-record set and recording the promise. Phase2a waits for same-ballot promise replies covering a quorum and sends at most one 2a message per ballot. It selects the maximum accepted ballot separately per slot, retaining that slot's value, and adds new slot/value pairs. Phase2b accepts a ballot at least its promise, sends a 2b reply, and replaces voted records only for the slots in that proposal (Figures 2–5, Q14–Q18). MaxBSV filters the voted records to maximal ballots per slot; MaxSV drops ballots; UnusedS finds absent slots; NewSV chooses a set of unused-slot/value pairs with no duplicate slot carrying different values; PropSV combines old and new pairs. Ballots are shared across slots, and old unfinished slots can be reused. The authors explain that this is more involved than separately running independent Basic Paxos instances (Q15,Q17). NewSV has no explicit nonemptiness, finiteness or client-input requirement. The empty set satisfies its uniqueness predicate. CHOOSE denotes a fixed mathematical choice for the same argument, not a newly sampled nondeterministic result each time. The formulas are useful abstractions for agreement, but do not by themselves ensure an executable finite batch or useful new work. Finite msgs does not imply finite message payloads (Q17,Q47; math-witness.json). Preemption adds an addressed reply containing an acceptor's highest ballot when it rejects a proposer ballot. A proposer receiving a strictly higher preempt ballot updates pBal above it. Phase1a then sends pBal, and the two acceptor actions have extra rejection branches (Figure 6/Appendix A, Q34,Q35,Q47). In Phase1b equality also enters the else branch, although the prose often says lower ballot. The proposer's strict-higher guard prevents equality from raising pBal. Two source differences constrain exact correspondence. The printed NewBal requires only b>b2; the pinned NewBallot also excludes ballots already used by a 1a message, matching §5.1's fresh-ballot explanation. Conversely, the pinned non-preemption Phase1a omits the no-prior-1a guard displayed in Figure 2. Both retain the global no-prior-2a-per-ballot guard. These differences are documented, not silently normalized or labeled agreement violations (Q14,Q35,Q36,Q47,Q57,Q62). Actual software must allocate ballots, for example ordered counter/process-identifier pairs, rather than inspect a global history oracle. Reconfiguration, message/state reduction and failure detection are omitted. A 1b reply can contain votes for every previously used slot. There is no verified Rust implementation, code refinement or operational throughput experiment in this paper (Q21). ## Invariants, decomposition and final argument Inv conjoins TypeOK, AccInv and MsgInv. TypeOK constrains every message/function/record field; the corrected preemption version additionally requires finite msgs. AccInv relates each acceptor's promise and current voted records to the historical 2b votes: stored records were actually voted, every historical vote is covered by a same-slot record at least as high, and no vote lies above the current same-slot maximum (Q25,Q26,Q48). MsgInv1b records the sender's promise, actual historical votes in its returned set, and absence of votes between that slot's stored maximum and the promised ballot. MsgInv2a says every proposal is SafeAt its ballot, a message has at most one value per slot, and there is only one 2a message per ballot. MsgInv2b ties each vote to a matching 2a message and bounds its ballot by the acceptor's highest seen ballot (Q27,Q28). SafeAt(b,s,v) says that for every lower ballot, some quorum consists of acceptors that voted v or have promised above that ballot and never voted there. WontVoteIn expresses the latter alternative. VotedInv carries SafeAt from proposals into votes; VotedOnce states same-ballot/same-slot votes have the same value, even from different acceptors. Their role is concrete: at equal chosen ballots use VotedOnce; at unequal ballots intersect the chosen quorum with the SafeAt quorum. The common acceptor's old vote excludes WontVoteIn, leaving equal values (Q24,Q50,Q55). The proof first establishes Init ⇒ Inv and Inv ∧ [Next]_vars ⇒ Invâ€Č, with separate action cases and an explicit unchanged-state case. PTL then derives Spec ⇒ □Inv and transfers Inv ⇒ Safe to the temporal Safety theorem (Q29,Q52–Q55). The final temporal QED is present; its presence still does not prove the assumed mathematics consistent. The reusable method separates unaffected old elements from each action's new message or voted-record increment. Invariance lemmas preserve old VotedForIn/SafeAt facts; the new element is proved from the sending action and local invariants. Conjuncts and actions form a mechanical decomposition, while difficult bounds and witnesses require manual facts. The paper illustrates this fully for Phase1b and MsgInv and shows the longer Phase2a proof in Appendix C (Q30,Q31,Q51,Q54). Proof syntax matters to performance. A common acceptor voting both values in the equal-ballot case is supplied explicitly; the authors report about 90 seconds reduced to a few milliseconds, calling it a 10,000× local speedup. Replacing direct record membership by an existential record with field equalities made another proof proceed after the original stalled for one or two minutes. These are local development observations, with no repeated-run distribution or uniform ablation (Q32). Tuple access is a concrete proof-engineering choice, not evidence of an algorithm runtime speedup. ## The disclosed checker bug and the remaining assumption problem The authors report that historical PTL coalescing could “prove” a primed state formula from its unprimed assumption outside a valid temporal context. It incorrectly accepted TypeOKâ€Č under TypeOK ∧ [Next]_vars. The official issue's example falsely preserves xyz=0 while Next permits increasing xyz. Choosing increment 1 from xyz=0 gives xyzâ€Č=1, refuting that preservation claim symbolically (Q36,Q66). Historical FM16 modules retain PTL at primed message-type leaves; improved excerpts instead give explicit action proofs (Q60,Q64,Q65). The repair proves type preservation for all phases. Preemption needs a fresh larger natural ballot to exist. With finite msgs, the used 1a ballots form a finite set T; max(TâˆȘ{received ballot})+1 supplies a larger unused witness. The authors added IsFiniteSet(msgs), proved preservation under message addition and supplied this witness. They report initial TypeOK proof growth 54→93 lines and 75→138 lines for the two variants; subsequent improvements reduce those to 54 and 77 (Q36,Q37,Q52). A separate issue remains in the retained text. Appendix C calls two axioms “straightforward consequences” but writes MaxInSet as ∀S∈SUBSET N: Max(S)∈S (Q49). Substitute S=∅: it asserts Max(∅)∈∅, false for every CHOOSE result. The pinned source writes the domain as (SUBSET Nat) \\ {}, which subtracts no elements and still includes ∅ (Q59,Q63). Removing the empty set as an element would require {{}}. That change alone would still leave unbounded infinite subsets: applying MaxInSet and MaxOnNat to Nat gives a natural maximum k, but k+1 is a larger natural. A sound maximum lemma needs nonempty finite or bounded domains and proof that each use meets the restriction. These are static mathematical witnesses to inconsistent assumptions as written, not TLAPS runs, discovered new protocol executions, or an assertion that every leaf exploited inconsistency. The retained files cannot alone support an assumption-free machine-certification claim. Agreement may be true and the intended invariant argument may be repairable, but repairing and replaying it is outside this literature read. The disclosed PTL repair does not address these maximum axioms. This distinction is particularly useful when evaluating automated proof agents: green obligations and completed syntax must be accompanied by an audit of explicit axioms and the actual target. ## Evaluation and quantitative evidence The evaluation compares Basic Paxos, Multi-Paxos and Multi-Paxos with Preemption, plus older incomplete and corrected/improved proof variants. It measures text size, proof-tree structure, lemma reuse, obligations and proof-checking cost, not network performance or application throughput. Table 2 specifies a four-core Intel i7-4720HQ at 2.6 GHz, 16 GB RAM, 64-bit Ubuntu 17.10 and TLAPS 1.5.6. Earlier elapsed times from 1.5.3 are marked separately. No raw timing logs, repeat counts, variance or matched cross-tool benchmark are provided (Q40–Q42). The corrected new rows report specification lines excluding comments of 52, 55 and 74; proof lines 310, 787 and 831; obligations 239, 779 and 825; total CPU seconds 40, 175 and 180; total elapsed seconds 14, 51 and 90. CPU time and elapsed time are distinct; the total CPU values are close to the headline “about 3 minutes,” whereas the elapsed values are 51/90 seconds. Adding Multi-Paxos slots costs only three specification lines but 477 proof lines and 540 obligations; adding preemption costs 19 specification lines, 44 proof lines and 46 obligations. The per-slot data structure creates most of the proof expansion (Q40,Q41). The new proof trees have maximum level 10 and degree 17, against 7 and 3 for Basic Paxos. Multi-Paxos/preemption use five/six invariance lemmas 32/35 times and three proofs using set increments each. §4.6's five lemmas used 27 times describes an earlier count; Table 2 provides the updated reuse counts (Q31,Q41). Reflowed appendix counts, including 528 proof lines excluding comments, are layout alternatives, not another method or independently smaller proof. The three improvements factor message predicates, merge similar unchanged-state cases and remove leaf scaffolding TLAPS can establish automatically. Reported reductions for preemption include 75 lines from predicate factoring, 27 from merged cases, 110 from about 25 unnecessary-obligation instances and 61 from 22 TypeOK instances. The full repaired proofs shrink 1049→787 and 1117→831 lines; those are 25%/26% reductions from the repaired versions. Old incomplete rows marked ^^ are not valid proof-performance baselines (Q3,Q37–Q41). Table 1 gives improved TypeOK elapsed times 8/25 seconds; Table 2 gives 7/24. Their old preemption TypeOK elapsed entries also differ, 21 versus 22. Preserve these printed differences rather than inventing a run-variance explanation. numeric_tables.json retains every metric, alternate count and footnote marker. The report that adding preemption took less than an hour explicitly excludes TypeOK; it cannot be used as total authoring time for the corrected proof (Q34,Q37,Q41). ## Relationship to the requested research topics This is directly useful for TLA+ and formal verification of distributed protocols: concrete fault abstraction, per-slot agreement, quorum reasoning, stronger invariants, hierarchical proof feedback, old/new-set decomposition and sensitivity to formula representation. Its strongest evaluation lesson is the explicit correction history, reinforced by the separate maximum-assumption findings in this read. The work contains no Verus, verified Rust or LLM-agent experiment. Transfer to those topics is a reader proposal: preserve the exact property and fault model; measure changes in executable specification separately from proof scaffolding; give agents small action/conjunct obligations with explicit contexts; distinguish finite-instance testing from parameterized proof; and check axioms, omitted obligations, tool versions and source correspondence before reporting success. No agent success rate or Rust implementation result follows from this paper. Related-work proof-size comparisons with IronFleet, Verdi, EventML/Nuprl, EPR and other systems are author descriptions of differently scoped work, not controlled evidence that TLAPS is uniformly faster or requires fewer lines. The separate executable-program work in reference 45 reportedly found a safety violation missed by testing/model checking, but that example is cited rather than reproduced and verified here (Q43,Q44). Those leads can be followed as separate full reads. - number: Safety proof for Multi-Paxos - number: Proof strategies build on Basic Paxos - limits: Fixedmembership,intersectingquorums,naturalballots/slots,historicalmessages,stableallstateacrosscrashes,unfairstuttering. AgreementC2only; noformallyprovedC1/C3,liveness,clientvalidity,finitepayloadorimplementationrefinement. AuthorscorrectpriorPTLgap;readerfindsretainedmaximumaxiomsinconsistentaswritten;notindependentassumption-freesafetycertification. Noauthorcodeexecution. - how much was read: most of it read - source - record id: `multi-paxos-tlaps-2016` - Practical verification framework for preemptive OS kernels (2016) - title: A Practical Verification Framework for Preemptive OS Kernels - what: Presents a Coq-mechanized framework that models preemptive-kernel API correctness as contextual refinement from a practical C subset, with abstract specifications, concrete interrupt-aware semantics, a relational concurrent separation logic, and proof tactics. It verifies scheduler, timer interrupt, synchronization APIs and priority-inversion freedom in commercial ÎŒC/OS-II. The framework separates application state from kernel state, gives small-step sequentially consistent semantics for task continuations and x86-8259A interrupt state, and uses a high-level language with nondeterministic/configurable scheduler relation. Relational assertions connect concrete memory, abstract state and remaining abstract command; ownership-transfer invariants account for nested interrupt levels. A soundness theorem is proved by compositional simulation. PIF is stated using original task priorities and proved for a simplified ÎŒC/OS-II mutex under no nested mutex use; verification required minor defensive changes because contextual refinement quantifies over arbitrary clients. - number: about 1,300 C lines verified, 63% of frequently used APIs - number: 216,000 lines of Coq implementation/proofs; 5.5 person-years - number: Coq framework package about 216,000 lines and compilation about 16 hours on 3.6 GHz/32 GB machine - number: proof-script to verified-C ratio about 26:1 - limits: The machine model is tailored to Intel 8259A-style interrupts and sequential consistency; adapting other processors requires new interrupt rules. The C subset excludes function pointers and virtual memory. Contextual refinement assumes arbitrary clients, unlike original ÎŒC/OS-II precondition assumptions, motivating code checks. PIF theorem assumes no nested mutexes, no deadlock and scheduler consistency. Task creation/deletion was unfinished. Proof effort and data-structure abstraction (bitmap waiting queues) are substantial. - how much was read: most of it read - - record id: `practical-verification-framework-for-preemptive-os-kernels-2016` - Practical verification of decision-making in agent-based autonomous systems (2016) - what: Verifies actual Gwendolen belief-desire-intention decision code with AJPF, while abstracting continuous control and the external world into nondeterministic percepts and messages. Properties describe beliefs, goals, intentions and actions. Separate environmental hypotheses and control theorems can be combined deductively with these local results to obtain conditional whole-system claims. The property specification language gives temporal operators over belief, goal, action, intention and percept modalities. The method derives possible incoming shared beliefs by inspecting the abstraction-engine code, then explores their combinations instead of simulating a particular physical environment. Search-and-rescue examples distinguish finding a human from believing one was found, and prove a searcher/lifter result under explicit sensor, motion and message-delivery hypotheses using Logics Workbench. The satellite implementation separates reasoning R, abstraction A, continuous planning Ω and physical control Π; the authors verify R and report extra failure/abort plans discovered necessary during verification. Cruise-control agents add speed-limit goals and UK lane rules while retaining the discrete safety constraints previously proved in KeYmaera. Appendices explain abstraction and reasoning code, leader position assignment, cruise-control sensor translation and the propositional encoding used for deduction. - number: search property on 3×3 to 6×6 grids: 52/87/132/187 states, 31 s/1 min 38 s/4 min 48 s/14 min 6 s - number: three-thruster satellite property 18: 16,609 states, 1 h 18 min 42 s - number: x-only repair property 21: 2,754 states, 9 min 4 s - number: single-lane cruise property 31: 7,127 states, 6 min 57 s - limits: Guarantees about agent decisions do not establish physical outcomes without environmental assumptions. The explored program-state space must be finite; the propositional property language uses finite expansion of quantified shorthand. Input selection was manual, with automation left for future work. Reasoning is treated as instantaneous and incoming inputs change only at action points in the satellite abstraction. Some models exclude malicious/corrupt messages and the multi-agent satellite case excludes thruster failures for efficiency. The difficult repair proof is checked for the x thruster only; y/z variants are omitted because of state explosion. Program model checking is slow and unconstrained input combinations increase its state space. Cruise-control composition assumes that safe is computed correctly. The reported probabilistic sensor percentages in the conclusion are proposed future theorem forms, not measured reliability. - how much was read: most of it read - source - record id: `practical-verification-of-decision-2016` - short counterexample FTDA (2016) - title: A Short Counterexample Property for Safety and Liveness Verification of Fault-Tolerant Distributed Algorithms - what: Develops a short-counterexample property: violations of temporal specifications in threshold-guarded fault-tolerant algorithms have bounded representative counterexamples, enabling automated parameterized checking. The method models protocols as counter systems with threshold guards, searches steady schedules and short representative executions, and handles fairness for liveness. It gives reduction arguments for shortening schedules and completeness conditions for the search bound, targeting parameterized process/fault counts. - number: Method is automated and parameterized; representative schedule search is bounded - number: No concise runtime totals exposed in supplied extraction - number: 10 prominent fault-tolerant distributed algorithms verified - number: Counterexample length is bounded independently of process parameters - limits: The bound and completeness arguments rely on threshold-guarded, symmetric protocols and fairness assumptions. Liveness search requires schedule bounds; failure to find a short trace does not prove correctness outside the theorem's class. - how much was read: most of it read - source - record id: `short-counterexample-ftda-2016` - A Messy State of the Union: Taming the Composite State Machines of TLS (2015) - what: The authors test TLS libraries for state-machine bugs by generating traces that deviate from the allowed behavior. They also write a replacement C state machine for OpenSSL and prove in Frama-C that it only allows traces from a hand-written list of allowed traces. A Coq proof shows that two sides with equal handshake logs are in equal states. - number: 8 libraries tested, flaws in 6, ten attacks including eight impersonation attacks - number: replacement about 750 C lines; invariant spec about 460 lines; annotations about 900 lines - number: about 2 minutes per function, 30 minutes total - number: Eight libraries tested, serious flaws in six, ten attacks including eight impersonation attacks - limits: The work proves nothing about integrity or confidentiality. It does not prove that the system eventually makes progress. It covers one component, not the whole library. The human effort was not timed. The authors read the 2015 version, not the CACM version. - how much was read: most of it read - source; notes: A Messy State of the Union: manual specification and annotations, auto; notes: A Messy State of the Union: manual specification and annotations, auto - record id: `a-messy-state-of-2015` - Alloy MCA Verification (2015) - title: An Alloy Verification Model for Consensus-Based Auction Protocols - what: Builds a machine-readable Alloy model of Max-Consensus Auction (MCA) protocols, separating bidding and agreement mechanisms from policy choices, and checks convergence to conflict-free allocations. The model represents asynchronous bid and allocation vectors, timestamps, network topology, physical/virtual network mapping, policy predicates, and bounded message-processing traces. The authors optimize Alloy encoding by replacing ternary relations/integers with binary relations and custom value signatures. Assertions check eventual consensus across scopes; counterexamples show oscillation when bids are non-submodular and agents release/rebid subsequent items, plus denial-of-service via rebidding lost items. - number: 259K SAT clauses reduced to about 190K by abstraction changes - number: representative assertion runtime reduced from about one day to less than two hours - number: Result 1: consensus holds for checked policies except non-submodular utility plus release/rebid policy - number: Result 2 finds no consensus when rebidding on outbid items is allowed - limits: Finite Alloy scopes and SAT bounded analysis cannot establish unbounded correctness; checking SAT is generally exponential. Agents are intended to cooperate, and convergence requires no rebidding on already-lost items and generally submodular utilities. The attack analysis is model-level; preventing malicious rebids and larger instances are left open. - how much was read: most of it read - - record id: `alloy-mca-verification-2015` - Automatic Completion of Distributed Protocols with Symmetry. (2015) - what: # Automatic Completion of Distributed Protocols with Symmetry (authored by agents unless marked 🧑) Rajeev Alur, Mukund Raghothaman, Christos Stergiou, Stavros Tripakis and Abhishek Udupa, arXiv:1505.04409v1. The arXiv comments identify this as the “Full version of paper presented at CAV 2015.” The paper gives a solver-and-model-checker loop that fills missing guards and state updates in finite distributed protocol sketches, requiring determinism, symmetry, deadlock freedom, safety and liveness under supplied fairness assumptions. Its empirical results cover Peterson mutual exclusion, a four-process self-stabilizing line, and five missing cache-coherence corner cases. Guaranteed correctness is explicitly limited to the finite synthesized instance (Q1,Q2,Q6,Q13,W1,W2). ## Reading and evidence scope Read all 21 pages, sections 1–6, all displayed definitions/formulas, nine figures, the complete five-row Table 1, and all 31 bibliography entries. There is no appendix, checklist, numbered theorem/proof or numbered pseudocode algorithm. Figure 2 is the synthesis workflow; §4 gives textual algorithms. Individually inspected page renders 3,8,11,13,14,15,16,17,18,19, covering every figure, the table, protocol diagrams and the weakest-precondition formula. This does not claim visual inspection of all pages. References were read as bibliography entries, not recursively followed. Retained the inventory PDF, raw/layout extractions and official arXiv metadata. The paper says the custom model checker is planned for future public release; it supplies no implementation URL. No implementation/model files or historical logs were acquired or read. A web-search tool request for code returned an error without results; this is not evidence that no code exists. No author contacted, author code executed/imported, checker/solver rerun, or model/checkpoint/serialized experiment data loaded. Source versions and reported runs were not independently reproduced (Q8,W1). ## Problem and modeling assumptions The designer provides extended state-machine sketches, not just an English request or temporal goal. Each process has finite control locations, finite typed variables/channels, an initial valuation, known and unknown typed functions, guarded transitions and fairness sets. All type cardinalities are required finite, including process-identity symmetric types and array domains. A completed function is initially a finite interpretation table. The environment is another specified machine with no unknown functions (Q3,Q4,Q6). Composition synchronizes matching output/input channels and sequences their updates so the receiver sees the transmitted value; independent internal actions interleave. Buffered unordered communication in the cache example is modeled within these finite-state machines, not assumed to be an unbounded reliable network. The formal product assumes disjoint process state variables and output ownership. Safety means no reachable error location. Liveness means no infinite fair accepting run of the supplied monitors; deadlock freedom is separate. Thus a finite deadlock cannot pass just because no infinite violating run exists (Q3,Q4). Weak fairness applies to a set of transitions: either the whole set is disabled infinitely often or some member occurs infinitely often. Strong fairness requires that a set enabled infinitely often has a member taken infinitely often. Fairness sets are attached to output/internal transitions; input behavior depends on the environment/composition. These assumptions matter to the guarantees. The paper argues that using only safety in synthesis permits trivial solutions that disable progress (Q2,Q3). Symmetry means behavior is invariant under renaming values of the designated types. Permutations act on array entries and indices, channel/process parameters and states. Unknown functions are constrained to commute with renaming, f(π(d))=π(f(d)). This is stronger than merely using the same source text while permitting special treatment of one numeric identity. Quantifiers are expanded over finite domains for the solver. The discussion mentions other symmetry notions as possible extensions; the implementation/evaluation described uses the stated finite symmetry treatment (Q5,Q7). The designer can restrict signatures to exclude irrelevant variables, fix known read-only updates, and add constraints across functions. The formal completion requires deterministic individual machines, a symmetric product, satisfaction of initial constraints, and a deadlock-free/safe/live composition. Determinism allows simultaneous input transitions only on distinct input channels. Guarantees concern that chosen environment, monitor and fairness model, not every implementation of the informal protocol name (Q6,Q7). ## Algorithm and what its checks establish The synthesis loop asks Z3 for interpretations satisfying current constraints, instantiates the protocol, then model-checks it. An erroneous candidate yields further necessary conditions excluding its counterexample or repairing the reason it violates the property. A successful interpretation may subsequently be converted to a symbolic expression using an enumerative syntax-guided synthesis solver. A symbolic grammar/output is therefore a later step; the initial solver does not directly synthesize arbitrary program syntax (Q6,Q10,Q13). The custom checker combines a symmetry-reduced annotated quotient graph with permutation tracking in a threaded graph, then searches accepting strongly connected components under fairness. Tracking the renaming matters because a compressed path can stand for multiple original paths and fairness obligations must be adjusted accordingly. The described procedure removes states enabling unmet strong-fairness sets and recomputes components until it finds a fair accepting cycle or rules one out. The authors build on cited algorithms and describe the search as sound and complete; this paper supplies no separate numbered soundness/completeness proof or implementation certification. Their historical limitations of Spin, Murphi, SMC and NuSMV are reports about their tool attempts, not a current feature comparison (Q8). For a deadlock, the next candidate must block the witnessed path or enable some outgoing action at its end. For a safety trace it must block the error path. The paper compiles product transitions to guarded commands, coalesces assignments and computes weakest preconditions; a guarded-command obligation uses guard implication, so a disabled step can break the trace. For liveness, a stem/cycle witness must become infeasible, fail to close, or become unfair. The Peterson example shows why simply banning the waiting loop is too strong: enabling a continuously neglected critical transition can make that loop unfair under the given fairness assumption (Q9,Q10). There is a printed indexing problem worth preserving without treating it as an implementation defect. §4.3 indexes a trace cmd1,
,cmdn but defines pre_i using cmd_(n−i−1). With n=1 and i=1 this refers to cmd_−1 rather than the sole command. The intended reverse traversal would require a corrected index/convention; no source code was available to determine what the implementation uses. The rendered page 11 confirms the printed formula. The liveness recurrence also reuses notation inconsistently around the named union of fairness sets. These are presentation limits on mechanically following the text, not reproduced failures of the tool (Q10,D1). Search heuristics prefer each error path to exercise few unknown functions while choosing diverse paths that collectively cover many. Shorter unknown-function dependencies can give stronger pruning constraints. Candidate costs favor minimally permissive guards, unchanged updates, then fewer input dependencies; bounds relax when the solver cannot satisfy them. Such constraints are search guidance, not protocol requirements. They strongly affect runtime, and Dijkstra required a different guard heuristic. No controlled ablation quantifies each optimization's benefit (Q11,Q12). ## Concrete cases Peterson has two processes with my/other identity parameters, shared flag/turn variables, a critical-section safety condition and a starvation monitor. Figure 1 removes the waiting/critical guards; the experiment additionally leaves flag-update expressions unspecified and requires that at least one guard hold. Weak fairness of selected non-input transitions suffices for the stated monitor. The authors report an interpretation in under one second and expressions matching the known protocol. Table 1 reports three unknown functions; this count is retained as printed rather than inferred by counting the distinct update sites mentioned in prose (Q3,Q12,T1). The self-stabilizing case is four processes in a line, each with Boolean x/up state. The two middle processes have two unknown guarded commands, each with two unknown updates; corresponding middle-process completions must be identical. A legitimate state has exactly one globally enabled guarded command. The specification requires reaching legitimate states from arbitrary starts, staying legitimate thereafter, and reachability among legitimate states. The successful expressions match Dijkstra's displayed rules. This is synthesis/verification for N=4; the general-N illustration is not itself a parameterized correctness proof (Q12). German/MSI has a directory, symmetric caches and one environment per cache; permissions are invalid/shared/exclusive. Its variant adds direct cache-to-cache data/acknowledgment, silent shared eviction and coordinated exclusive eviction. These optimizations create interactions absent from the simpler base protocol. One explicit race has a directory still listing a silently evicted cache as a sharer: that cache has already requested exclusive ownership when it receives an invalidation for another requester, and must acknowledge the invalidation despite its transient state. Two related races vary the pending read/write request (Q12,Q14). Two remaining missing behaviors arise when exclusive eviction/writeback races with another cache's request: the cache receives an unexpected invalidation, while the directory receives unexpected writeback. The synthesized behavior treats the invalidation like a writeback acknowledgment for the evicting cache; the directory accepts the latest data and forwards it to the requester without requiring an extra acknowledgment. Figures 8/9 mark the missing behaviors and recovery messages. The designer still specifies which message kinds each unknown state must handle; §5.4 says this assistance was crucial to scaling. This is completion of supplied protocol structure, not autonomous discovery of all states, messages or correctness requirements (Q14,Q15). ## Measured results and limits Table 1 reports five configurations. Peterson: 3 unknown functions, search space 2^36, 60 states, 14 iterations, 97 ms SMT and 130 ms total. Dijkstra: 6 functions, 2^192 possibilities, about 2,000 states, 30 iterations, 27 s SMT and 64 s total. German/MSI-2: 16 functions, about 2^4700 possibilities, about 20,000 symmetry-reduced states, 217 iterations, 31 s SMT and 298 s total. German/MSI-4: 28 functions, about 2^7614, about 20,000 reduced states, 419 iterations, 898 s SMT and 1,545 s total. German/MSI-5: 34 functions, about 2^9000, about 20,000 reduced states, 525 iterations, 2,261 s SMT and 3,410 s total. The exponents were checked in the page render because the extraction flattens superscripts (T1). The suffix -n counts the missing transitions among five corner cases, not the number of caches. The paper does not state the exact cache-count/channel-capacity/value-domain configuration used for these rows, preventing a precise independent reconstruction from the paper alone. All runs use a Linux desktop with a 3.4 GHz Intel Core i7 and 8 GB memory. Multiple SMT seeds were run and the worst runtimes reported, but the number of seeds, dispersion and exact tool versions are absent. There is no broad benchmark population or matched competing-system comparison. Long cases spend much time solving heuristic constraints; German/MSI-5's SMT fraction is 2261/3410≈66.3%, a reader calculation, not a new measurement (Q15,T1,D2). The authors say synthesized symbolic expressions were parametric and worked on larger instances, but explicitly qualify that interpretations are “only guaranteed to be correct for the finite instance of the protocol”. No sizes/results for the larger checks or cutoff/induction proof is supplied. Symmetry reduces a fixed instance's state graph; it does not by itself prove correctness for every process count. Nor do these finite-state experiments establish crash/Byzantine tolerance or machine-code correctness (Q13). ## Contribution to the requested topics This is directly relevant distributed-protocol synthesis with safety and liveness checking, predating LLM-based agents. Its distinctive combination is finite extended state sketches, symmetry constraints, fine transition-set fairness, and automatically generated counterexample constraints. Its related-work claims distinguish earlier scenario completion, safety-only concurrent sketching, and template-based self-stabilization; these comparisons are attributed to the authors, without independently reading those cited works (Q2). For Verus/TLA+/LLM-agent work, the transfer is a reader proposal: preserve explicit environment/fairness assumptions, use deadlocks and fair cycles as separate feedback, constrain identity symmetry and keep programmer-supplied structure visible in evaluation. An SMT table, a readable symbolic expression, a finite checked instance and a general verified protocol are different outputs. The paper measures the first stages and fixed-instance checks; it contains no Verus/Rust development, TLA+ model, LLM agent or general parameterized proof. - limits: Allfinite types;specifiedenvironment/monitors/fairness;humanprovidedstates/messagekinds;fixedinstancecorrectness;unknowncachecapacities/version/seeds;noimplementationread/rerun;printedrecurrenceindexproblemnotcodefailure. - how much was read: most of it read - source - record id: `automatic-completion-of-distributed-2015` - Coq hierarchical coherence and speculative CPUs (2015) - title: Modular Deductive Verification of Multiprocessor Hardware Designs - what: A Coq proof that speculative processors, composed with a hierarchical MSI memory, implement sequential consistency. It is parameterized over the number of processors and caches. It is built from proofs of separate components. - number: 12,000 lines of Coq - number: 80% can be reused as-is for other inclusive invalidation protocols - number: MSI proof about 12000 lines of Coq; authors say 80% reusable for related inclusive protocols - number: arbitrary processor/cache counts and hierarchy levels - limits: It covers safety only. It verifies the Coq hardware description, not that synthesis preserves it. No person-time is given. - how much was read: most of it read - source; notes: Related work absent from the first pass: Modular Deductive Verificatio - record id: `coq-hierarchical-coherence-and-speculative-cpus-2015` - IronFleet (2015) - title: IronFleet: Proving Practical Distributed Systems Correct - what: It proves a replicated state machine (IronRSL) and a sharded key-value store (IronKV) correct, down to Dafny code. The liveness proofs are built by chaining intermediate progress conditions. - number: 1,400 specification, 5,114 implementation, 39,253 proof lines; 395 minutes to check - number: IronRSL liveness: 7,869 proof lines, 115 minutes; IronKV liveness: 2,093 lines, 23 minutes - number: about 3.7 person-years - number: implementation-level proof/code ratio 3.6 - limits: The top-level spec, event loop, Dafny, runtime, OS and hardware are trusted. IronRSL liveness needs eventual timing bounds and a live quorum. The reduction argument is on paper. - how much was read: most of it read - source; notes: S8 - record id: `ironfleet-2015` - Verdi (2015) - title: Verdi: A Framework for Implementing and Formally Verifying Distributed Systems - what: Verdi proves an application correct under an easy network model. Then a verified system transformer changes the implementation so that it tolerates a harder fault model, and carries the property over. The proofs are in Coq. - number: Table 2 (spec / implementation / proof LOC): KV 41/138/337; primary-backup 20/134/1155; composition 5/N/A/19; Raft linearizability 170/520/4144 - number: Table 2 lines spec/impl/proof: sequence numbering 20/89/576; KV 41/138/337; primary/backup 20/134/1,155; Raft linearizability 170/520/4,144 - number: no comparable total person-time established in the review - limits: The network semantics and the TCB (the trusted computing base) are in Section 3. This paper is not the later complete Raft linearizability result. - how much was read: most of it read - source; notes: S29; notes: Choosing top-level distributed guarantees and trusted boundaries; notes: Appendix B: Concrete systems and theorem scope - record id: `verdi-2015` - A Conference Management System with Verified Document Confidentiality. (2014) - what: CoCon is a multiuser,multiconference web application whose deterministic functional kernel is specified in Isabelle and extracted to Scala. Develops bounded-deducibility(BD)security:before a release trigger,each alternative secret sequence permitted by a bound must remain compatible with the observer’s action/output sequence. Mechanizes a sufficient unwinding theorem and ten concrete confidentiality instances. End-to-end web-application confidentiality depends on informal code-generation/wrapper trust arguments. Specifies45authenticated kernel actions and a phase-based conference lifecycle;derives explicit paper/review/discussion/decision/reviewer-identity policies with role/time triggers and permitted version/count information. Gives a four-argument unwinding relation over paired states and remaining secret lists,independent/reaction/exit cases,a decreasing measure,and disjunction-based decomposition. Details a synchronizing PAP2proof and reports two person months including reusable proof infrastructure. - limits: Formal target is deterministic input-output kernel behavior and finite traces;observations are selected users’ action/output pairs. No distributed replication,network scheduling,crash recovery,availability/liveness or cryptographic secrecy theorem is presented. Isabelle kernel/logic,code generator,Scala compiler/runtime and external library behavior form trust boundaries. Code generation is used restrictively:terminating deterministic executable specification,no nontrivial data refinement,paper contents mapped to JVM files. Trace isomorphism is argued informally,not formally proved end-to-end. Web wrapper is trusted to invoke only exported step/initial-state operations and display outputs without extra leaks;third-party libraries must resist exploits. Timing channels and lower-level/browser attacks are excluded. Mapping abstract content to mutable JVM files is also an implementation representation boundary,not a theorem in this paper. BD is qualitative possibility-based secrecy. Every compatible alternative is treated as plausible;prior probabilities,externally known behavior patterns and high-user cooperation/Trojan-horse signaling are not generally eliminated. Arbitrary unauthorized coalitions are modeled as a fixed observer group,but authorized-user intentional disclosure is not prevented. Trigger occurrence removes the bound for that trace;it does not establish later confidentiality restoration or revocation. An existential trace witness need not preserve invisible high-level user actions,trace length or all external scheduling knowledge. This flexibility is deliberate and matters when interpreting learn-nothing claims. Confidentiality is relative to chosen value/observation filters,producer functions,trigger and bound. Document histories/identity/count policy must match intended disclosure. The ten independently proved source properties are not a stated theorem of joint secrecy for all combinations of secret sources. Unwinding is a sufficient proof method,not a complete decision procedure. Safety lemmas become automated but high-level unwinding strategies still need interaction;fully automated strategy synthesis/abstraction/model checking are future work. - how much was read: most of it read - source - record id: `a-conference-management-system-2014` - AWS TLA+ report (2014) - title: Use of Formal Methods at Amazon Web Services - what: Engineers describe using TLA+ and the TLC model checker on ten AWS designs. TLC is a tool that tries every reachable state of a design to look for bugs. Before checking design changes, they wrote down the failure modes and the environment. - number: ten systems, seven teams; useful results after two to three weeks of learning - number: S3 networking 804 PlusCal lines, two bugs; DynamoDB replication 939 TLA+ lines, three bugs; EBS 102 PlusCal lines, three bugs - number: one DynamoDB bug needed a 35-step counterexample - number: Engineers learn TLA+ and get useful results in 2 to 3 weeks - limits: The method checks designs, not code, and does not prove anything about code. A lock-free structure still had a bug where something should eventually happen but never does. TLC missed it because the engineers did not check that kind of property. - how much was read: most of it read - source; notes: S13 - record id: `aws-tla-report-2014` - Graph- versus Vector-Based Analysis of a Consensus Protocol (2014) - what: # Whole-paper read: Graph- versus Vector-Based Analysis of a Consensus Protocol (authored by agents unless marked 🧑) Giorgio Delzanno, Arend Rensink and Riccardo Traverso; GRAPHITE2014, EPTCS159, pp44–57, doi10.4204/EPTCS.159.5, arXiv1407.7931. This is a finite-state Paxos safety comparison between graph transformation in GROOVE and a PROMELA model in SPIN. It demonstrates how modeling and symmetry reduction affect reachable state counts and exploration cost. It does not establish a parameterized Paxos theorem or correspondence with a deployed implementation. [Q0,Q1,Q2,Q14] ## Property and model assumptions Definition1 requires every chosen value to have been proposed and all choices, including successive rounds, to agree. The general introduction permits arbitrarily delayed messages and crash/recovery retaining local information. The displayed models contain no explicit crash/recovery transitions. Each proposer sends at most one Prepare, and there is one learner. Authors argue that more proposers can mimic repeated rounds and that multiple learners have the same available information. These are modeling justifications; the paper supplies no formal cutoff theorem reducing arbitrary configurations to the finite instances measured. The one-Prepare restriction also prevents indefinite injection of new proposals; this is not a liveness proof for unrestricted Paxos. [Q1,Q2,Q3] Prepare chooses a fresh round; Promise carries the acceptor's last accepted round/value; a quorum causes a proposer to reuse the highest previously accepted value, or its own initial value if none exists. Acceptors promise increasing rounds and accept rounds at least as high as their current promise. Learners choose a round/value after a quorum. Figure1 supplies the pseudocode, including fresh-round and maximum-prior-round selection requirements. [Q2,Q3] ## What the two encodings do GROOVE stores a configuration as a typed graph. Process/value nodes have no explicit identities; round numbers and counters remain integer attributes. Broadcasts are persistent message nodes connected to senders, rather than individually ordered channel contents. Isomorphic configurations can therefore merge. Nested quantification counts matching Promise/Learn nodes, negative conditions prevent duplicate Learn emission and select a maximal prior round, and control functions schedule large rule applications. onPromise removes isPrepared so a proposer accepts a quorum only once; changeMyval precedes sendAccept. A learner may choose again. Unsafe patterns test two distinct chosen values, including two choices by one learner, or a chosen value absent from all proposer values. Depth-first search stops at the first unsafe graph, or explores the complete reachable state space for that initial configuration. [Q4,Q5,Q6,Q7] PROMELA represents each role as a process and communications as four bounded channels. Ordered send (!!) and matching receive (??) reduce irrelevant message-order variation. atomic/d_step blocks combine operations; the proposer scans Promise entries with a sentinel round9, restores them, and sends Accept after a quorum. Temporary variables are reset and learner counters saturate at the majority. Figures9–10 give proposer, acceptor, four-recipient broadcast and learner code. Printed MAX=10 bounds channels and the learner's round-indexed counter array; values use byte/short/int types. The paper does not provide separate complete experiment inputs or a formal GROOVE–PROMELA equivalence proof. The hardcoded four-recipient example is not itself every row's configuration. Atomicity, graph identity, message persistence, finite channels and representation differ together, so this is not a controlled isolation of one implementation feature. Potential blocking inside atomic blocks and fixed channel capacities are modeling limits, not independently demonstrated bugs. [Q8,Q9,Q10] ## Evaluation and exact result scope Table1 has22GROOVE configurations. Low majority searches all find a safety violation before exhausting the state space; their counts measure search to a counterexample. High majority searches report no violation and enumerate all reachable states of those finite models. Examples: two proposers/twelve acceptors/majority7 produce5,491,406states in14,794,452ms; three/six/majority4 produce12,247,549 in8,771,175ms; four/four/majority3 produce9,337,923 in4,523,411ms; seven/two/majority2 produce4,607,455 in1,154,561ms. Authors state that the next larger configurations exhaust memory. This is reported bounded exploration, not a proof for all process counts. [Q10,Q11] Eight high-majority instances are also explored without graph isomorphism reduction. For two proposers/two acceptors,224states become78 (65.18% reduction); two/five:1,178,114→9,729 (99.17%); five/two:12,743,315→55,420 (99.57%). This within-GROOVE comparison more directly supports the symmetry-reduction claim. Reduction has a cost: the authors report over75% of time spent checking isomorphism for two proposers/eleven acceptors, and generation rates from under400 to over6,000states/s. Figures11–12 visualize growth/comparisons; changing quorum thresholds produces sawtooth growth. [Q11,Q12] Table2 has11SPIN configurations, with ordinary and starred bit-hashing columns. Starred exploration is an underapproximation: finding an unsafe state supplies a witness, while finding none does not exhaustively establish safety. The caption says a hash factor above100 indicates high coverage; it is a heuristic, not a completeness guarantee. Nonempty reported factors are1.9,2.2,2.3,5.1,6.5,26, all below100. Retain distinct counts: for two proposers/five acceptors/low majority, ordinary226,306states versus starred387,982; for three/three/high,4,998,934 versus4,997,226. Larger starred counts must not be read as larger complete reachable state spaces. [Q12,Q13] GROOVE used an i7-2600 3.4GHz, Windows7, Java6 and8GB memory; SPIN used an i7, Windows7,6GB, jSpin/SPIN6.2.5May2013 with default memory management. The paper states no repeated-run count or uncertainty estimate. Different resources and modeling choices limit causal claims about engine superiority. It reports search-state counts and verification time, not executable Paxos throughput/latency. [Q10,Q12,Q13] ## Printed inconsistencies and presentation limits The SPIN prose says ordinary search finds violations only through five acceptors with two proposers, and with three proposers finds violations only through three acceptors and proves safety only through two. Table2 nevertheless prints ordinary low-majority results for two/six (4,374,568states,118,000ms) and three/four (2,712,145,68,400ms), plus an ordinary high-majority result for three/three (4,998,934,71,700ms). I retain the table and flag its disagreement with the prose; I did not reproduce either. [Q12,Q13] Two cells require literal preservation. Table2 two/two/high starred state count appears as “62 0” in layout extraction and as spaced “62 0” in the render; raw extraction yields620, matching the adjacent ordinary620. The normalized table records620 with this ambiguity. More materially, two/four/high ordinary Time is printed “3,5” while starred Time is “3,510”; caption units are milliseconds. The former is retained literally, with numeric normalization left unset, rather than silently interpreting it as3.5ms or3,500ms. [Q13] Figure12's visible acceptor axis is labeled1–5, while its embedded spreadsheet text contains rows2–6. That text also differs from Tables1–2:234 versus224 for GROOVE/no-isomorphism/two-two;29,532 versus29,352 for SPIN/high/two-three;4,374,578 versus4,374,568 for SPIN/low/two-six. These are presentation/data discrepancies, not evidence of a model-checker defect. The record uses table values and preserves the figure's text separately. The graph compares early-stopped unsafe searches, complete safe GROOVE explorations and approximate SPIN explorations; its curves are not uniformly complete state-space sizes. [Q11,Q13,Q15] ## Contribution and read scope The paper contributes a concrete distributed-protocol modeling lesson: remove irrelevant process/value identity, message ordering and intermediate steps when that preserves the desired property, and measure the cost and benefit of reductions. For evaluating agents that generate specifications/proofs, my inference is to require an explicit property, finite bounds, preservation argument and completeness status for each reported result before comparing state counts or claiming verification. There is no Verus, Rust, TLA+ or LLM experiment. [Q1,Q7,Q9,Q14] Read all14PDFpages, all14references, all12figures, both result tables, all displayed pseudocode/PROMELA and graph rules; viewed all14page renders. Official arXiv and inventory PDFs are byte-identical. Publisher PDF bytes differ, but its full layout extraction is identical. No separate author artifact URL was identified in the paper's links; the printed models were inspected without execution. No compiler, model checker, solver or author-code run. - limits: onePrepareperproposer;onelearner;boundedchannels/integers;noformalcutofforencodingequivalence;bitstateunderapproximation;printeddiscrepancies - how much was read: most of it read - source - record id: `graph-versus-vector-based-2014` - Robotic pin configuration model checking (2014) - title: Engineering the Hardware/Software Interface for Robotic Platforms – A Comparison of Applied Model Checking with Prolog and Alloy - what: Models sensor/actuator pin-assignment configurations for an STM32F4 Discovery interface board used on self-driving miniature vehicles, and compares Prolog and Alloy model-checking workflows for finding feasible, all, and minimum-cost assignments. The authors build graph/tabular domain models, generate Prolog and Alloy specifications, and run a formal experiment over configurations up to ten pins. Alloy handles feasible/impossible checks with compact specifications, while Prolog is faster for enumerating and finding best assignments in the tested setup; the paper discusses model-generation cost, scope, and threats to validity. - number: configuration space exceeds 14.5 million possibilities - number: Alloy average 0.58 s for feasible larger configurations - number: Prolog 1.38 s for the largest best-assignment configuration - number: Alloy best/all assignment mean times 1.64/4.58 s in Table IV - limits: The study focuses on one board and a bounded configuration model, measures computation time only, and uses a 1.8 GHz Intel Core i7 with 4 GB RAM. Alloy's finite scopes and generated assertions require careful bit-width/scope choices; Prolog model loading can dominate. Generalization to other boards, semantic pin constraints, memory, and maintenance is future work. - how much was read: most of it read - - record id: `robotic-pin-configuration-model-checking-2014` - Spin Paxos (2014) - title: Model Checking Paxos in Spin - what: Models Paxos in executable Promela with proposer, acceptor and learner roles, then uses Spin plus reduction theorems and code transformations to check finite instances. Counting guards and quorum transitions encode majority voting atomically, reducing interleavings. Formalizes safety as learner agreement, proves finite reductions for proposers/learners, and introduces atomic broadcast and counting-guard transformations. Experiments extrapolate quorum constraints and show ordered channel insertion nearly halves state space versus FIFO sends. - number: 2 proposers/2 acceptors: majority 1 violation, majority 2 exhaustive safety - number: 3 acceptors: majority 1 violation, majority 2 no violation; channel state stabilizes at size 6 - number: 4 acceptors: majority 3 correct; ordered-send model at 3 acceptors/channel 6 has 65,091 states versus 172,868 FIFO - number: 5 acceptors exhaustive exploration unmanageable; 16GB machine, Intel i7-4700HQ - limits: Finite-state bounded channels and process counts; no Byzantine faults; Paxos may diverge if proposers inject proposals indefinitely. Acceptor-bound cutoff remains conjectural. Bitstate hashing estimates large instances rather than exhaustive proof. - how much was read: most of it read - - record id: `spin-paxos-2014` - Concurrent data-structure observers and shape analysis (2013) - title: An Integrated Specification and Verification Technique for Highly Concurrent Data Structures - what: Combines infinite-state observer automata, data-independence reduction and pairwise-thread shape analysis to verify safety and linearizability of concurrent stacks, queues and priority queues with unbounded threads, heap and data values, including explicit memory reclamation. - number: M&S queue without GC 550 s, 53,320 constraints - number: Treiber stack without GC 2.28 s, 1,535 constraints - number: Treiber stack with GC 0.23 s - number: M&S queue with GC 3.31 s - limits: Programs and properties must satisfy data-independence conditions; values are copied/compared rather than manipulated, and linearization points must be supplied. Current shape analysis assumes singly linked selectors and pairwise thread views; multiple selectors and richer structures are future work. The abstraction can lose precision and state-space grows with joined constraints, especially without garbage collection. Results concern safety/conformance and linearizability, not liveness or implementation-level Rust memory models. - how much was read: most of it read - - record id: `concurrent-data-structure-observers-and-shape-analysis-2013` - Dagstuhl distributed verification report (2013) - title: Formal Verification of Distributed Algorithms (Dagstuhl Seminar 13141) - what: This seminar report surveys a research meeting joining distributed-algorithm, model-checking and semi-automated-proof communities to establish a common base and identify open verification problems. - limits: Report summarizes seminar contributions rather than presenting one executable case study. - how much was read: most of it read - source - record id: `dagstuhl-distributed-verification-report-2013` - PIA Byzantine verification (2013) - title: Counter Attack on Byzantine Generals: Parameterized Model Checking of Fault-tolerant Distributed Algorithms - what: Introduces parametric interval abstraction and a new counter abstraction to reduce parameterized Byzantine distributed algorithms to finite-state model checking. Interval boundaries are arithmetic expressions over process/fault parameters; abstractions preserve enough threshold behavior to check safety and liveness variants of Srikanth–Toueg algorithms. The method is a semi-decision procedure with soundness/refinement techniques and evaluates Byzantine broadcast variants. - number: Finite-state reductions verify several algorithm variants - number: RBC specification also verified (details in source appendix) - number: No aggregate runtime table visible in supplied extraction - limits: Abstraction quality depends on a tailored abstract domain; failure to find a proof is inconclusive. Parameterized systems and Byzantine bounds are restricted to threshold-style algorithms; spurious transitions require refinement. - how much was read: most of it read - - record id: `pia-byzantine-verification-2013` - Towards Modeling and Model Checking Fault-Tolerant Distributed Algorithms. (2013) - what: Models threshold-guarded fault-tolerant distributed algorithms in extended Promela, replacing explicit message channels by sent/received message counters for efficient fixed-size SPIN verification. Separates receive/compute/send within one atomic process step. Correct processes broadcast each message type at most once; sender identities are abstracted into counts. Byzantine/symmetric process effects become bounded nondeterministic increments, while omission/crash processes are explicitly modeled with weaker fairness. Status variables encode control flow, parameter constraints encode resilience, and quantified atomic propositions are expanded for fixed process counts. Includes full broadcast encoding and appendix fragments for symmetric, omission, crash, folklore broadcast and condition-based consensus. - number: 8 GB encoding comparison; channels exhaust at n=6, counters at n=9 - number: Byzantine n=7,t=2,f=2 relay: 6.3 s,77 MB,290,000 stored states - number: folklore n=6 property F:1690 s,1819 MB - number: Paxos-like target would need at least 14 processes to tolerate one fault, remains future work - limits: Assumes processes can distinguish senders; Byzantine senders cannot forge others’ messages. Asynchronous fairness requires each correct process to run infinitely and sent messages to eventually arrive. Counter encoding relies on uniform sender treatment, finitely many message types, all-to-all sends and at most one send per type/run. This paper verifies fixed parameter instances; parameterized proofs and Paxos-like algorithms are separate/future work. Small counterexamples check adequacy of the encoding but do not establish full refinement equivalence. Source is the 21-page SPIN 2013 submission including appendices, not the publisher final layout; graphs were not separately inspected. - how much was read: most of it read - source - record id: `towards-modeling-and-model-2013` - Dialog Model Checking Fault-Tolerant Algorithms (2012) - title: Starting a Dialog between Model Checking and Fault-tolerant Distributed Algorithms? - what: Introduces a parameterized modeling framework for threshold-guarded fault-tolerant message-passing algorithms. Processes are extended control-flow automata with symbolic parameters, threshold guards, asynchronous interleavings, message buffers and faulty-process nondeterminism; instances become Kripke structures checked in LTL without next. The paper makes the formalization problem explicit (pseudocode semantics and hidden environmental assumptions), defines parameterized process skeletons and CFA operational semantics, and translates a family of broadcast algorithms under Byzantine, symmetric, omission and crash faults. Spin/Promela experiments systematically vary resilience and specifications: expected resilience boundaries are recovered, and impossible configurations produce violations. - number: Byzantine n>3t; symmetric/omission n>2t; clean crash n>t - number: valid cases Spin-verified; n=7,t=3 Byzantine relay specification violates as expected - number: n=5 omission with three faulty processes violates C and R - number: n=11 experiments exhaust memory - limits: Experiments are bounded finite instances and do not establish parameterized correctness; n=11 runs out of memory. The framework initially targets asynchronous threshold algorithms, with partial synchrony and round models left for future work. Correctness depends on explicit resilience, delay, fault and scheduling assumptions. - how much was read: most of it read - - record id: `dialog-model-checking-fault-tolerant-algorithms-2012` - Interactive verification of Markov chains: Two distributed protocol case studies (2012) - what: # Interactive verification of Markov chains: Two distributed protocol case studies (authored by agents unless marked 🧑) Johannes Hölzl and Tobias Nipkow, QFM 2012, EPTCS 103, pp.17–31, DOI 10.4204/EPTCS.103.2; arXiv:1212.3870v1, submitted 17 December 2012. This record covers all 15 PDF pages, §§1–6, acknowledgment, all 23 references and all 4 figures. The local PDF and freshly fetched official PDF are byte-identical. Exact excerpts, source lines, character offsets and PDF/printed pages are in quotes.json; Q-numbers below refer there. The AFP 2012 release and the current AFP source snapshot are distinct supporting artifacts, inspected statically in the ranges recorded in source-scope.json. No Isabelle, author code, model checker or solver was run. ## What is established The contribution is a parameterized mathematical verification of two finite-state discrete-time, time-homogeneous Markov-chain models in Isabelle/HOL. It proves formulas for ZeroConf address-collision probability, almost-sure termination and expected allocation cost, and for Crowds endpoint independence, exposure to collaborators, conditional predecessor identification and an information-leakage upper bound. “It can deal with infinite-state systems, although this paper considers only parameterized finite-state systems” (§1, p.17, Q1) is the scope to retain. Infinite path spaces still require measure theory. This is a proof about abstract global models, with formalization effort reported by the authors; it is not an implementation benchmark. Several discrepancies constrain use of the printed results. The ZeroConf example’s named parameters do not satisfy its printed 10^-13 bound; its displayed cost formula has parentheses inconsistent with the model and retained source. The Crowds §4.2 independence display uses last-ncoll where its heading and definitions concern last-jondo. Finally, the retained information-flow theorem has an additional uniform-initiation hypothesis absent from the paper’s displayed theorem. These are separate issues, documented below rather than silently repaired. ## Probability foundation and proof method (§2, pp.18–20) The chain has a nonempty finite state set S and nonnegative transition weights whose row sums are 1 (Q4). Its path probability is constructed on all infinite state sequences from arbitrary product spaces, avoiding an encoding into infinite boolean choices (Q5). A specified start state precedes the measured sequence: the first measured index represents a transition from that start. Individual sequence elements need not satisfy the transition relation by the definition of path alone; the probability measure provides the operational meaning (Q4). Conditional probability is a quotient; AE means probability 1 (Q3). The reusable tools are one-step equations for event probability, integrals and almost-everywhere predicates (Q6), qualitative reachability over nonzero transition edges and an until operator (Q7), and a theorem that almost every path is state fair (Q8). In the finite chain, if all states reachable before the target remain inside the allowed region or target, and every such non-target state can still reach the target, until holds almost surely (Q8). This is a theorem about the chain’s measure, not an extra fairness assumption on an adversarial scheduler. The model has no nondeterministic scheduler. The hitting-time and accumulated nonnegative-reward definitions support expected termination cost (Q9). LEAST is total but underspecified if no witness exists: “If there is no such n, then the term has some arbitrary (defined!) value” (§2.1, p.18, Q2). Almost-sure termination and reachability lemmas make the meaningful cases explicit. Finiteness of expected hitting time uses the finite-state setting; it should not be generalized to arbitrary infinite chains. Likewise, the §3.4 prose that finiteness almost everywhere suffices for a finite integral is too broad in isolation. Here the finite chain, finite transition rewards and finite expected hitting time supply the needed integrability argument; the historical source explicitly invokes positive_integral_reward_until_finite before solving the cost equations (historical Zeroconf_Analysis.thy:187–196). ## ZeroConf: model, result and concrete case (§3, pp.21–25) The protocol allocates an unused IPv4 link-local address from 169.254.1.0 through 169.254.254.255, a pool of 65024 addresses. A new host chooses uniformly and probes using ARP. The probability q denotes choosing an occupied address; p denotes loss of the request/response exchange (Q10–Q11). This abstracts one allocation against a fixed occupancy/loss environment. Independent repeated choices and constant transition probabilities are encoded in the Markov model; changing occupancy, concurrent allocation races and correlated/history-dependent losses are not additional modeled transitions. Other cited PRISM/timed models contain more protocol features than this selected model (Q10). The explicit assumptions are N∈Nat, 0<p<1, 0<q<1 and nonnegative real r,E (Q13). Thus zero loss, zero occupied addresses and endpoints 1 are outside the stated theorem context, even if limits can be considered separately. There are N+4 valid states: Start, Ok, Error and Probe 0
ProbeN. Ok and Error absorb. From Start, an unused choice reaches Ok with cost r(N+1); an occupied choice reaches Probe 0 with cost r. A successful probe response returns to Start with cost 0. A failed probe advances with probability p and cost r, or at ProbeN reaches Error with cost E (Fig.1, Q12,Q14). E is the repair penalty, not merely packet latency. The graph and formula use N+1 total probes; the prose step 5 says “N requests” (Q11), so N=2 means 3 probes as the numerical example and graph explicitly state. The event is reaching Error, not proving collision impossible: P_err(s)=Pr_s(until S {Error}) (Q15). With p,q strictly positive, its derived Start probability is positive. The proof first establishes P_err(Error)=1 and P_err(Ok)=0, then the one-step recurrence. An unrestricted recurrence is unsuitable as an automatic rewrite because it loops: “using it would result in non-termination of the rewrite engine” (§3.3, p.24, Q16). State-specific rules and induction over the remaining probes yield P_err(Start) = q p^(N+1) / [1−q(1−p^(N+1))]. The printed induction skeleton and theorem are retained in Q17; the historical source gives the same general formula (Q38). Most ZeroConf steps use rewriting, with induction and two rewrite steps for the probe recurrence (Q16–Q17). This is concrete evidence about proof organization rather than an assertion that theorem proving was automatic end to end. The paper names 16 hosts, q=16/65024, p=.01 and N=2, then prints “Perr Start ≀ 1/1013” in extracted text, visually 10^-13 (Q18; PDF8/printed 24). Reader arithmetic with exact rational numbers gives 1/4063000001≈2.46123554×10^-10. It therefore satisfies neither 10^-13 nor 10^-12. This is an arithmetic inconsistency in the stated example, not a protocol execution or a failed prover replay. Both inspected AFP versions instantiate locale arguments in order N,p,q,r,E/e as `2 "16 / 65024 :: real" "0.01" "0.002" "3600"` and state a 10^-12 bound (historical Q36,Q40; current Q46,Q48). That assigns p=16/65024 and q=.01, reversing the paper’s named meanings. Under that assignment the same formula gives 1/6645020000257≈1.50488637×10^-13, which does satisfy the retained 10^-12 claim, but exceeds 10^-13. Thus the retained proof text concerns a different concrete parameterization; it does not validate the numerical sentence as printed. The static source inspection establishes these statements and supplied proof scripts, without certifying that a historical checker run used precisely these downloaded bytes. For expected cost, C_fin integrates transition rewards until Error or Ok. The chain reaches one of them almost surely (Q19,Q21). The model-consistent formula, also present in the historical and current source (Q39,Q47), is C_fin(Start) = [q(r+p^(N+1)E+rp(1−p^N)/(1−p)) + (1−q)r(N+1)] / [1−q+qp^(N+1)]. The paper instead prints the successful-allocation term `(1−q)*(r*N+1)` (Q21, PDF9/printed 25); the model defines `r*(N+1)` (Q14). With the paper’s named parameters, r=.002 s and E=3600 s, the correct formula gives≈.006001383 s, consistent with the reported≀.007 s; the printed parentheses give≈1.004001383 s. With the retained swapped p,q values, the correct cost is≈.006020208 s and also≀.007 s. The 7 ms result is a symbolic expected rewarded-model bound under selected input parameters, not a measured latency, worst-case deadline or successful-allocation-only expectation. Both Error and Ok terminate the cost accumulation, and the error penalty is included. ## Crowds: model and anonymity claims (§4, pp.25–29) Crowds establishes routes by choosing a uniformly random next participant and deciding whether to forward again with probability p_f. Routes can revisit participants; Fig.2 uses J1−J4−J2−J7−J4−C1−S, while Fig.4 illustrates a different route J1−J4−J3−J5−J4−C1−S (Q20,Q25). Neither is a test trace generated by this reader. Fig.3 is a 3-participant transition-graph illustration, not the size limit for the theorem (Q23). Let J be the number of jondos and H the number of honest/non-collaborating jondos. The set is finite and nonempty, collaborators form a nonempty strict subset, 0<p_f<1, and init is a nonnegative distribution with total 1 and zero mass on collaborators (Q24). The model states are Start, Init i for honest i, Mix j for all j and End: H+J+2 states. From Start the init distribution chooses the initiator. An Init state moves uniformly to a Mix participant; from Mix the next Mix identity has probability p_f/J, or the route ends with probability 1−p_f. End absorbs (Q26). Participants can select themselves, and collaborators follow these transitions: active route manipulation, arbitrary topology, timing observations and multiple correlated runs are outside this model. The paper is explicit about the abstraction boundary: “We could model the individual behaviour of jondos in Isabelle/HOL and show that this induces our Markov chain model, but this is not in the scope of this paper” (§4, p.25, Q22). Hence these results do not constitute refinement from distributed node implementations, or whole-protocol anonymity against all observations. The starting state is excluded from the measured path; Init is at index 0. The displayed len value is the last zero-based Mix index, so a terminating path has len+1 Mix states. The paper’s wording calls len the number of Mix states, but its formula and i≀len lemmas count len+1 (Q27; historical Q42). The intended §4.2 claim is that the final server-contacting participant is independent of the initiator, under the specified uniform routing. The displayed lemma instead contains last-ncoll, defined in the next subsection as the predecessor of the first collaborator, rather than last-jondo (Q28 versus Q27,Q29). Preserve this symbol discrepancy. The current AFP `server_view_indep` proves factorization of initiating and final-participant sets (Q49); the historical source has a `server_view` theorem equating the chance that final participant equals initiator to the reciprocal of the participant count; the historical source names that reciprocal J=1/card jondos (Q43; historical Crowds_Protocol.thy:97–98; Q45). The historical notation differs from the paper’s J=count notation. Independence gives no additional identity information from this modeled endpoint observation; it does not remove a nonuniform prior or give the server “no chance” of guessing in an absolute sense. For collaborator exposure, hit-colls means at least one Mix participant is a collaborator, and last-ncoll denotes the participant immediately before the first such collaborator. Conditional identification is meaningful because the nonempty collaborator set makes the hit probability positive. The paper proves (Q29–Q31): - Pr(hit-colls) = (1−H/J)/(1−(H/J)p_f) - Pr(first=i and last-ncoll=l | hit-colls) = init(i)[p_f/J + indicator(i=l)(1−(H/J)p_f)], for honest i,l - Pr(first=last-ncoll | hit-colls) = 1−((H−1)/J)p_f The first expression approaches 0 when the number of collaborators and p_f remain fixed and J tends to infinity. This is not a limit with a fixed attacker fraction. The second and third account for revisiting the initiator; they concern predecessor equality, not a general optimal attacker-classification success rate. The probably-innocent bound≀1/2 requires H>1 and p_f≄J/[2(H−1)]. Since p_f<1, feasibility requires H>J/2+1, stronger than merely an honest majority. The paper gives the precise inequality 1/2<(H−1)/J and then loosely says “more than half” (Q31). Reader-created arithmetic example, separate from the paper’s case: J=10,H=9,p_f=3/4 gives hit probability 4/13 and conditional predecessor-equals-initiator probability 2/5; its threshold is 5/8. For J=10,H=6 the threshold is 1, excluded by p_f<1. These examples clarify the parameter constraints; no simulation, model checking or author code produced them. For information flow, the paper conditions its measure on hitting a collaborator and bounds mutual information between initiating identity and the predecessor of the first collaborator by [1−((H−1)/J)p_f]log2(H) bits (Q32). The formalization uses Radon–NikodĂœm-based information theory and reduces finite-range variables to the discrete probability/logarithm sum. Both retained historical and current `information_flow` theorems add `init_uniform`, requiring equal initiating probability 1/H for each honest participant (Q44,Q50). That hypothesis is absent from the displayed paper theorem and the general §4.1 context. The evidence-backed formal theorem should retain it. This inspection does not show that the numerical inequality is false for arbitrary init; it establishes that the inspected scripts prove the stated bound under an extra hypothesis. The bound covers this pair of identities under the conditional measure, not all data a real collaborator might observe. ## Evaluation, related work and limits (§§5–6, pp.30–31) The evaluation is two worked formal developments, exact parametric formulas and concrete rewrites for a selected ZeroConf instance. The authors report “a couple of days” and approximately 260 Isabelle/HOL lines for ZeroConf; Crowds needs approximately 1060 lines and “one person a couple of weeks,” including finding the information-gain estimate (Q34). These are author-reported effort/size figures with no controlled comparison, replication, distribution or detailed time log. The paper supplies no proof-checking runtimes, hardware measurements, packet experiments, implementation throughput, benchmark suite or user study. The two protocols are case studies, not statistical samples. The related-work discussion matters to the opening comparison with model checking: it explicitly recognizes probabilistic CEGAR for infinite-state systems, parametric transition probabilities for a fixed state count, and quantitative invariants for linear probabilistic programs (Q33). Thus the broad opening PRISM/model-checker contrast should not become a claim that all model checking handles only one fixed numerical instance. This work builds on the authors’ previous pCTL model-checking formalization and measure theory, and compares other HOL/Coq probability frameworks and information-flow analyses. These are discussion-level comparisons, not reproduced comparative experiments. The probabilities here can be written in PCTL, while HOL permits more properties; Markov decision processes, continuous-time models and certification of model-checker runs are future work in this 2012 paper (Q34). Their presence on the modern AFP page is subsequent artifact evolution, not a result reported here. ## What this adds to the requested topic Directly, this is evidence that distributed-protocol questions can require quantitative guarantees over infinite executions: almost-sure termination, finite expected cost, conditional anonymity and information leakage differ from deterministic safety invariants. Isabelle’s reusable probability library supports proofs for arbitrary finite network/probe sizes and symbolic probabilities, with the global model and theorem hypotheses made explicit. The ZeroConf rewrite/induction presentation is useful concrete proof-engineering evidence. It also shows why a local literature database should compare printed statements, parameter meanings and source hypotheses, rather than treat a claimed proof as validation of every nearby prose sentence. There is no Verus, verified Rust, TLA+ or LLM-agent experiment in this paper. Reader inference for those areas: an agent producing a specification/proof should retain the global-model refinement boundary, distinguish probability 1 from every execution, check integrability assumptions, align locale argument order with physical parameter names, and preserve extra theorem hypotheses. Evaluating such an agent should inspect those semantic correspondences as well as checker acceptance. These are lessons drawn by this reader, not results measured by Hölzl and Nipkow. - limits: Finite nonempty time-homogeneous DTMCs, normalized nonnegative transitions. ZeroConf:N natural,0<p,q<1,r,E>=0; fixed global occupancy/loss abstraction,N+1 probes. Crowds:finite nonempty participants,nonempty strict collaborator subset,0<p_f<1,honest-only initiation,uniform routing; retained information-flow proof also requires uniform initiation. Global models without node-level refinement. Printed numerical,formula,symbol and source-hypothesis discrepancies retained. No proof replay. - how much was read: most of it read - source - record id: `interactive-verification-of-markov-2012` - ownership authentication transfer protocol (2012) - title: Formal Verification of Safety Properties for Ownership Authentication Transfer Protocol - what: Models a six-message ownership-transfer protocol for a ubiquitous-computing device in CSP, expresses secrecy and authentication as CTL properties, and checks the finite-state model with NuSMV in the presence of an intruder. The protocol uses a central key server, old/new-owner nonces, a ticket, ownership-transfer confirmation and a final temporary ID. CSP processes define OldOwner, NewOwner and the server, while secrecy is marked with Claim Secret and authentication with Running/Commit events. The NuSMV model checks five concrete constraints: three intended owner properties hold, while an intruder sending UserB or UserA credentials is rejected and yields counterexamples. The paper explains each message and trace, including the fairness motivation for requiring the seller's second confirmation. - number: six protocol steps M1–M6 - number: five specifications in Table 2 - number: three intended-owner cases true - number: two intruder cases false - limits: The price is agreed before transfer, users are physically proximate, and the whole protocol runs on the device for sale; encryption/public-key and nonce handling are idealized. NuSMV checks a finite abstraction with finite data types, so the results establish only the modeled protocol and claims, not implementation security, cryptographic soundness, privacy of residual data, or liveness. The paper reports no state-space size, runtime, parameter sweep, or independent attack analysis beyond the five formulas. - how much was read: most of it read - - record id: `ownership-authentication-transfer-protocol-2012` - Uppaal decentralized traffic monitoring (2012) - title: A Case Study on Formal Verification of Self-Adaptive Behaviors in a Decentralized System - what: Models and verifies a decentralized traffic-monitoring system in Uppaal. Intelligent cameras form and split organizations as traffic changes, while a self-healing subsystem detects silent camera failures, elects replacement masters and restores degraded monitoring. Timed automata model environment, camera agents, organization middleware and repair controllers; TCTL-like Uppaal queries express invariants, flexibility and robustness. The case study gives concrete environment models for car arrivals, camera viewing ranges, congestion-triggered organization merges/splits and injected failures. It verifies invariant/deadlock properties plus flexibility and robustness properties F1/F2 and R1–R4, including failure detection, reorganization, continued traffic monitoring and neighbor restoration. The authors deliberately restrict failure injection with a virtual environment to control state explosion, then reuse verified models as proposed inputs for model-based testing and runtime diagnosis. Verification time is measured as camera count grows and diagnostic traces are used to inspect violations. - number: I1 verification grew from 1.2s for 6 cameras to 197.3s for 60 - number: deadlock I2 grew from 7.2s to 1330.6s over the same sizes - number: flexibility/robustness properties showed quasi-linear growth in the reported camera range - number: all specified properties were satisfied in the final model - limits: The model abstracts the implementation into finite timed automata and uses a restricted virtual environment; arbitrary environments and random failures are avoided because of state-space explosion. Silent failures are detected by timeout-based ping/echo, and recovery guarantees apply to the modeled roles, communication channels and scenarios. The study verifies a model, not the prototype Java implementation; model-based testing is proposed future work. - how much was read: most of it read - - record id: `uppaal-decentralized-traffic-monitoring-2012` - Verifying Safety Properties With the TLA+ Proof System (2010) - what: FirstpublicTLAPSrelease:hierarchical safety-proof management,backendtranslation/trust and Peterson/Bakery/incompletePaxoscases. # Verifying Safety Properties With the TLA+ Proof System (authored by agents unless marked 🧑) Kaustuv Chaudhuri, Damien Doligez, Leslie Lamport, and Stephan Merz, IJCAR 2010, LNCS 6173, pp142–148; arXiv:1011.2560v1, 11 November 2010. The venue/pages are confirmed by Stephan Merz's author bibliography: “booktitle = {5th Intl. Joint Conf. Automated Reasoning (IJCAR 2010)}” and “{142-148}” (Q17; complete bibliography block in quotes.json). Read all seven PDF pages, §§1–5.1, acknowledgements and all 15 references; all seven page renders were inspected individually. The paper has no figures, tables, numbered theorems, benchmark suite, or appendix. This is the saved outside-index arxiv_all PDF, whose hash matches the reconstructed 352-path inventory. No author implementation or proof files were executed/imported, and no checkpoint or serialized data was loaded. Consultation and independent review are complete; the IJCAR bibliographic correction was applied. REVIEW.md records scope and root-only checks. The fetched author-hosted PDF has the same extracted body after removing the arXiv margin and declared glyph/spacing differences; author-copy-comparison.json records the comparison. No additional scientific content was inferred from that normalization. The paper describes the first public TLAPS release, its proof-obligation processing, and three example developments. It directly concerns TLA+ verification of concurrent and distributed systems. Its reported support covers invariance and step simulation but excludes liveness proofs. TLA+ the language can specify liveness; this release's prover cannot establish those properties. These are historical 2010 capabilities, not a statement about today's TLAPS. The authors state: “It handles almost all the non-temporal part of TLA+ as well as the temporal reasoning needed to prove standard safety properties, in particular invariance and step simulation, but not liveness properties” (§1 p1, Q1). ## Proof representation and what must be trusted Specifications and proofs share the TLA+ language. A hierarchical proof decomposes a theorem into steps and ultimately leaf obligations, each citing facts and definitions. TLAPM flattens imported/instantiated modules and sends processed leaves to backends. A user can work with incomplete proofs and choose which steps to check; the release uses pragmas to exclude proofs from checking. Thus a successful check of selected leaves does not itself establish completion of every claimed theorem. This completion check is a practical evaluation requirement inferred from the workflow. Q2–Q4 preserve the architecture and selection semantics. The backend called Isabelle/TLA+ implements the constant fragment as a dedicated Isabelle object logic. The paper explains that embedding into existing HOL/ZF logics was inconvenient because TLA+ is untyped, with no proposition/term distinction. Its single value type, classical first-order logic, equality, conditionals, Hilbert choice, Zermelo–FrĂ€nkel set axioms, and primitive function objects supply the mathematical basis. Natural numbers are introduced using a Peano structure whose existence follows from ZF; arithmetic is developed recursively. Tuples/sequences and records are functions, strings are character sequences. Ordinary “typing” facts become proof hypotheses: the paper's n+0=n example needs a numeric n. Boolean conjunction is described as Boolean-valued even on arbitrary arguments. These are semantics/proof-library facts reported by the authors, not a reader audit of the object logic. Q9/Q10 give the details. Zenon searches for first-order proofs and emits Isabelle/Isar scripts checked against Isabelle/TLA+. The paper explicitly says “Zenon is therefore not part of the trusted code base of TLAPS” (§4.2 p5, Q11). That exclusion applies to this certificate-checking route; it does not make the entire TLAPS pipeline untrusted. TLAPM's priming rewrite engine is expressly trusted. The generic SMT-LIB backend and Cooper Presburger arithmetic backend are expressly non-certifying in this release. “Certifying veriT” is a planned integration even though veriT is already among solvers tried through the generic non-certifying interface. Distinguishing solver brand from integration mode prevents a false claim that all SMT results were certified. Q3/Q5/Q11/Q12 preserve these boundaries. Backends reason over constant expressions. TLAPM moves primes through ordinary mathematical operators and leaves constants unchanged: (u=v+2c)' becomes u'=v'+2c when u,v are state variables and c is constant. Double priming is rejected by the syntactic analyzer. Defined operators are hidden by default and expand when made usable. Modal operators may fail substitution of equals: knowing u=42 now does not imply u'=42. Reader illustration: a transition from u=42 to u'=43 satisfies the former but violates the latter. Usable non-substitutive definitions are expanded; hidden applications become opaque hashes, conservatively losing some valid equivalences such as O(e∧f)=O(f∧e). This is a stated completeness tradeoff, not a collision/security guarantee or a proof of implementation soundness. Q5/Q6 give the transformation and example. Positional and labelled references resolve subexpressions before later processing. In O(x,y)=x=20y+2, O(3,4)!2!1 selects 20·4. A label l on y·20 can keep referring to that term after unrelated surrounding syntax changes. The feature supports concise proof reuse, but the paper supplies no maintenance experiment. Default discharge tries Zenon, then Isabelle automation; pragmas can request tactics or other backends, often indirectly via a named standard theorem such as SimpleArithmetic. Q7/Q8 give these cases. The generic arithmetic route rewrites obligations into SMT-LIB AUFLIRA, often dropping assumptions outside that theory, with conservative sort detection for bound variables. Reader inference: proving a conclusion from fewer assumptions is logically stronger, so omission alone is not a soundness defect; translation and sort handling must still preserve meanings. The paper reports successful use of Yices, CVC3, Z3, veriT, and Alt-Ergo, without solver-specific counts, timings or comparative accuracy. It does not prove the soundness/completeness of these translations in this note. Q12 records the exact scope. ## Development practice and concrete evidence The authors first check finite instances with TLC and then attempt proofs. On leaf failure, TLAPM prints usable hypotheses and the goal, expanding usable definitions. Their reported common failure is omission of a needed fact/definition. They split difficult obligations into lower-level assertions, verify the local qed, then prove those assertions in any order. The example case split proves (P1∹
∹Pn)⇒Q by each Pi⇒Q. This is a concrete incremental authoring/debugging workflow, not evidence that partial obligations are sufficient. The Toolbox then only hid proof portions; broader integration was future work, while an Emacs mode provided hierarchical viewing and proof selection. Q13/Q14 preserve this historical distinction. The authors warn that unchecked “obviously true” assumptions can be wrong and recommend checking such data-structure facts with TLC. Finite model checking can expose counterexamples; it does not universally prove an unbounded assumption. That latter qualification is a reader inference, not a claim that the authors measured assumption-error rates. The claim that specification errors are likelier than TLAPS soundness bugs is also the authors' engineering judgment, with no quantified comparison in this paper. Q3/Q14 carry both source statements. Section 5.1 gives these author-reported developments, without the actual full proof scripts: - two-process Peterson mutual exclusion: about 12 PlusCal lines and a proof of about 130 lines - N-process Bakery with atomic reads/writes: an 800-line proof - high-level Paxos: 100 TLA+ specification lines covering a consensus abstraction and two refinements; first refinement completed with a 550-line proof, second mostly proved and estimated to exceed 1,000 lines The Paxos case is explicitly incomplete, including the acknowledgement to Jean-Baptiste Tristan. The estimated second-proof length is not a measured completed artifact. Neither case length establishes checking time, human time, bug counts, proof coverage across implementations, liveness, or executable-code correctness. The N-process claim concerns the mathematical example as reported, not a finite-N experiment independently rerun here. Q15/Q16 preserve the complete cases. The library is reported to contain more than 1,400 lemmas/theorems, about 200 pages of pretty-printed Isar. These size measures and the three case descriptions support feasibility of the release; no theorem about the verifier itself, controlled user study, performance comparison, memory result, automated success rate or systematic experiment is supplied. The full development files and checker outputs were not inspected/reproduced in this reading. “It has not turned out to be difficult once the proof idea has been understood” is an author experience report, rather than a measured proof-automation guarantee (§5.1 p7, Q16). For the database, this is direct foundational evidence for high-level safety proofs and TLA+ proof tooling. It contributes explicit trust distinctions, partial-proof management, priming/substitution pitfalls, finite-model-checking practice, and a deliberately incomplete Paxos case. It has no Verus, verified Rust, or LLM experiment. A proposed use as an evaluation reference for proof agents is reader inference: record the precise theorem and unchecked assumptions, require every obligation, distinguish certificate-checked from trusted solver routes, and report whether the intended specification captures the requirement. - limits: Historical2010safetyfragment;Isabelleobjectlogic,TLAPMtrustedrewrites and noncertifyingarithmeticpaths. Selected/incompleteproofspossible;uncheckedassumptionsandspecificationvalidityremainhumanresponsibilities. Fullproofscripts/checkerresultsnotread/rerun;noquantitativetime/memory/successbenchmark. - how much was read: most of it read - source - record id: `verifying-safety-properties-with-2010` - D3S (2008) - title: D3S: Debugging Deployed Distributed Systems - what: Developers write C++ predicates over consistent global snapshots. D3S injects instrumentation into running programs and checks the predicates. It reports the state histories that violate them. - number: 5 deployed systems, results within one month - number: PacificA 67,263 code lines / 118 predicate lines, 3 bugs; MPS Paxos 6,993 / 50, 2 bugs - number: runtime overhead less than 8%, below 2% in search and BitTorrent cases - number: 5 deployed systems, PacificA 67,263 code lines / 118 predicate lines with 3 correctness bugs; MPS Paxos 6,993 / 50 with 2 bugs - limits: It checks observed runs and does not prove anything. Snapshot correctness depends on group membership. The window is finite, so it cannot check liveness over infinite runs. Developers must pick useful predicates. - how much was read: most of it read - source; notes: D3S: Debugging Deployed Distributed Systems; notes: D3S: Debugging Deployed Distributed Systems - record id: `d3s-2008` - Anvil repository - title: Anvil: Building Formally Verified Kubernetes Controllers - what: Anvil implements Kubernetes controllers in Rust, specifies their properties in Verus-TLA, and proves an Eventually Stable Reconciliation property. Its Welder extension composes liveness proofs across controllers. - number: Three built-in controllers (ReplicaSet, Deployment, StatefulSet) and one RabbitMQ controller are reported in the README. - limits: The README says verification still requires SMT theorem-proving expertise; examples and assumptions are repository-specific. - how much was read: most of it read - source - record id: `anvil-repository` - Disel repository - title: Disel: Distributed Separation Logic - what: Disel is a Coq framework for implementing and compositionally verifying distributed systems and clients. Its embedded DSL separates protocol specifications from implementation details. - limits: README-level documentation; no new paper claims are added. - how much was read: most of it read - source - record id: `disel-repository` - IronFleet repository - title: IronFleet code release - what: The official code release contains verified IronRSL and IronSHT implementations, with Dafny build and verification instructions. The README says the release proves safety and liveness requirements and reports performance competitive with a reference system. - limits: The README describes the release and commands; it does not give a reproducible run log here. - how much was read: most of it read - source - record id: `ironfleet-repository` - IvyBench - title: IvyBench: Collection of Distributed Protocol Verification Problems - what: IvyBench collects 54 safety-checking problems in Ivy, mypyvy and VMT formats: Paxos, TLA-derived commit examples, locks, elections, I4 cases, FOL-IC3 cases and two DistAI cases. - number: 54 safety checking problems: 10 Paxos, 5 TLA-derived, 14 ex, 7 I4, 16 mypyvy/FOL-IC3, 2 DistAI. - number: 54 problems: paxos 10, tla 5, ex 14, i4 7, mypyv 16, distai 2 - number: README says 54 safety checking problems; six advertised groups total 54, but multisig adds four files making 58 Ivy inputs - number: Group sizes: distai 2, ex 14, i4 7, multisig 4, mypyv 16, paxos 10, tla 5 - limits: The README lists benchmark membership, not pass rates or independently reproduced results. - how much was read: most of it read - source; notes: IC3PO and its shared ivybench collection - record id: `ivybench` - Perennial examples - title: Perennial example programs - what: The examples include an allocator, durable append-only inode, directory composition and a replicated disk block. The README emphasizes modular composition and recovery obligations. - limits: Examples are pedagogical and repository-specific; no deployment guarantee is claimed. - how much was read: most of it read - source - record id: `perennial-examples` - Perennial repository - title: Perennial - what: Perennial verifies Go programs in Lean 4 on top of iris-lean. The README prescribes one specification and proof file per Go function and documents a bounded layer with explicit time and thread receipts. - limits: The current Lean branch says it does not cover crash/recovery reasoning; bounds are parameters and proofs must carry bound premises. - how much was read: most of it read - source - record id: `perennial-repository` - Verdi repository - title: Verdi - what: Verdi is a Coq framework for implementing and verifying distributed systems across fault models. Verified system transformers let a proof in an idealized model transfer to an analogous adversarial environment. - limits: The README points to related Raft papers; this record is repository documentation, not a new paper reading. - how much was read: most of it read - source - record id: `verdi-repository` - Verified IronKV - title: Verified IronKV (IronSHT port) - what: This repository ports IronFleet’s IronSHT host program to Verus. Its README explicitly says it verifies implementation-level reasoning but does not reproduce IronFleet’s proof that the host program implements the distributed TLA state machine and high-level specification. - limits: The repository omits IronFleet’s distributed refinement layer, so it is not a complete end-to-end proof. - how much was read: most of it read - source; notes: D3 - record id: `verified-ironkv` - Barnacle (2026) - title: Barnacle: Adaptive Multi-Leader Scheduling for DAG-Based Consensus - what: A protocol add-on for Sui consensus. Its safety and progress theorems are machine-checked in Lean 4. AI wrote the proofs. Humans read only the definitions and the theorem statements. - number: About 3,900 lines: 1,900 definitions/statements, 2,000 AI proofs, 3,200 lines of executable witnesses - number: Four protocols across Byzantine, crash-only and mixed fault models - limits: One author group's claim. Not independently checked. - how much was read: parts read - source - record id: `barnacle-2026` - Civl reduction ESOP 2026 (2026) - title: Reduction for Structured Concurrent Programs - what: The paper extends reduction to procedures and parallel composition in Civl. Reduction treats a group of small concurrent steps as one atomic step. - number: Cases: Snapshot 119 total / 82 impl+spec lines 0.4 s; ABD register 389/206 1.4 s; FLASH coherence 608/401 5 s; 2PC 146/111 1.8 s - number: About 50 further examples - limits: Some side conditions were checked by hand (Section 7). They are that left-mover procedures terminate and that right-mover statements cannot fail. - how much was read: parts read - source; notes: Civl and inductive sequentialization; notes: S17 - record id: `civl-reduction-esop-2026-2026` - Corten (2026) - title: Corten - Foundational Verification of Rust Programs - what: A framework in the Rocq proof assistant for proving Rust programs correct with separation logic (a logic for reasoning about who owns which memory). It defines Rust's behavior on the compiler's typed high-level IR so proof goals look like Rust source, and adds tactics that follow the code's shape. - number: Automated proofs are about 2x to 4x shorter than proofs done directly against the semantics, on a synthetic test suite - number: Buddy allocator case study: about 300 lines of Rust, about 2800 lines of Rocq (about 250 spec, about 800 general Rust reasoning, about 1400 free-list lemmas) - number: Specifications about 2x the size of the code; automated proofs 2x to 4x the Rust size - limits: Soundness of the semantic axioms is proved only for the pure and heap-statement fragments so far; the rest is itemized in an appendix. Specs of Rust core functions used by the case study are not proved. Single-threaded in practice (concurrency inherited from Iris but not yet exercised), traits only partly handled, no labeled break/continue. Allocator spec covers memory safety, not allocation quality. - how much was read: parts read - source; notes: Corten (2026) - record id: `corten-2026` - I3DP (2026) - title: I3DP: Neuro-Symbolic Inductive Invariant Inference for Distributed Protocols - what: I3DP takes a TLA+ model and a safety goal. TLC screens candidate invariants (facts meant to hold in every reachable state). Apalache checks that each one stays true after every step. An LLM proposes stronger candidates. TLAPS, a proof checker, checks proofs that hold without a size bound. The notes know it only through its public artifact. - number: Artifact README records 29/29 passed in replay (not run by the reviewers) - number: artifact README records 29/29 replay passed (not rerun by notes) - limits: The paper's full text was not accessible. It covers safety of the model only, not running code or liveness. It has the same authors and benchmarks as IC3Syn (2605.24619) and is apparently its successor, but this is not confirmed. So it is not an independent evaluation. - how much was read: parts read - source; notes: I3DP: Neuro-Symbolic Inductive Invariant Inference for Distributed Pro; notes: I3DP: Neuro-Symbolic Inductive Invariant Inference for Distributed Pro - record id: `i3dp-2026` - Lion (2026) - title: Lion: Modular Verification of Async Runtime Liveness - what: Lion is a Tokio-like async runtime written in Rust and verified in Verus. Its top theorem says that, under stated assumptions, a spawned task is eventually polled to completion. The liveness claim does not use temporal operators. Instead it is a bound on how long a task waits, under a filter on what the environment may do. - number: 3,393 lines executable, 39,648 lines spec/proof, 507 trusted (about 11.7 to 1) - number: 126 external_body items in the trusted base - number: Full verification run takes a few minutes - number: At least 95% of unverified-runtime throughput on nine workloads (claim) - limits: No machine-checked proof shows that the compiled runtime matches the model. The SOSP paper is not public, so the notes read the tech report and the repo in part. - how much was read: parts read - source; notes: Lion: Modular Verification of Async Runtime Liveness; notes: Newly found 2026 Verus liveness: Lion - record id: `lion-2026` - MachCSL (2026) - title: xv6 on RISC-V with AI agents (MachCSL) - what: Agents proved an xv6 operating-system kernel on RISC-V in Rocq, against a top-level statement: typing on the console prints only the typed text. Humans laid out the plan and designed the intermediate specs. Agents did the proofs. - number: 93 days; 1,479,165 lines of Rocq (294,402 generated) for 6,593 lines of xv6 - number: 474 sessions, 2,620 sub-agent runs, 5,889 human prompts (median 13 words) - number: 2,062 agent-hours, 1,205 wall-clock hours, 226.9M output tokens, under 3,000 in subscriptions
    • number: Ten xv6 bugs and one Sail bug found; median kernel-update re-proof 35 agent-minutes
    • limits: It covers safety only, not liveness. Humans steered the layering and specs heavily.
    • how much was read: parts read
    • source
    • record id: machcsl-2026
  • Tulip (2026)
    • title: Verifying a high-performance distributed transaction system using permissioned state machines
    • what: Tulip is a distributed transaction system. It comes with a machine-checked proof that the implementation meets a spec identical to that of a local transaction system that is strictly serializable. The method combines TLA-style protocol invariants (facts that stay true in every reachable state) with separation-logic permissions.
    • number: about 4,000 lines of Go, about 42,000 lines of Rocq (about 11x)
    • number: 10 module types
    • number: bugs caught: transactional read, lock release, TAPIR timestamp inversion
    • number: 3,956 lines of Go code (abstract)
    • limits: The spec does not capture liveness, and the authors did not explore whether the method applies to liveness. The PDF does not name the venue.
    • how much was read: parts read
    • source; notes: Verifying a high-performance distributed transaction system using perm
    • record id: tulip-2026
  • Verified Detection and Prevention of Concurrency Anomalies in Multi-Agent Large Language Model Systems (2026)
    • what: The paper writes four concurrency anomalies of shared memory between LLM agents in TLA+, checked with TLC. It verifies Rust detectors and runtimes in a Verus crate.
    • number: 274 Verus obligations (zero assume, zero admit)
    • number: 24 obligations for the spec-implementation chain; refinement obligations 31 (pessimistic), 18 (SSI projection)
    • number: 274 Verus proof obligations
    • limits: Nothing mechanical links the TLA+ and Verus parts. The TLAPS proofs only check that the texts agree, and the Verus refinements are against Verus state machines. It covers safety only, and the authors state that liveness is a gap. It has a single author and the results are self-reported. The notes read about 25% of the paper.
    • how much was read: parts read
    • source
    • record id: verified-detection-and-prevention-2026
  • 3SF model checking (2025)
    • title: Technical Report: Exploring Automatic Model-Checking of the Ethereum specification
    • what: The authors translate the Python spec of Ethereum’s 3-slot-finality (3SF) consensus protocol into TLA+ and use the Apalache model checker to test Accountable Safety: if two conflicting chains are both finalized, at least one third of validators can be shown to have broken a voting rule. They then add hand-made abstractions and re-encode the problem in SMT (CVC5) and Alloy to check larger instances.
    • number: Direct translation (Spec2): checking Accountable Safety timed out after more than 40 hours (Table 1)
    • number: Alloy with Kissat: Accountable Safety holds for up to 6 blocks; e.g. 5 blocks, 25 checkpoints, 12 votes in 234 s (Table 5)
    • number: CVC5: verified up to 5 blocks with 5 checkpoints (1h 40m) or 3 blocks with 6 checkpoints (74h) (Table 4)
    • number: A 7-block Alloy run went over 16 days without finishing
    • limits: Only the finality gadget and only Accountable Safety, on small bounded instances (at most 7 checkpoints and 24 votes); every validator has stake 1. The hand-made abstractions are not proved equal to the Python spec. Appendix A (translation rules) and B (soundness proofs) were skimmed, not read closely.
    • how much was read: parts read
    • source; notes: ## Exploring Automatic Model-Checking of the Ethereum specification (2
    • record id: 3sf-model-checking-2025
  • A Refinement Methodology for Distributed Programs in Rust (precursor: Refinement Proofs in Rust Using Ghost Locks) (2025)
    • what: Proves that Rust distributed programs match a simpler model of what they should do (a refinement proof), using the Prusti verifier. The precursor paper also proves liveness (something good eventually happens). It writes those proofs as ghost code (code used only for proving, never run), using a direct encoding of LTL (a logic for statements about time). Cases include a simplified Memcached.
    • limits: The review notes could not get the final OOPSLA PDF and read the precursor instead. The verifier is Prusti, not Verus. The review notes do not know whether the final version keeps the liveness part.
    • how much was read: parts read
    • source
    • record id: a-refinement-methodology-for-2025
  • Anvil thesis (2025)
    • title: Building and Verifying Cloud Infrastructure Systems with State-Centric Reasoning (PhD dissertation)
    • what: The thesis proves liveness of Kubernetes controllers in Verus, using the Anvil framework. The human writes one general liveness formula, “eventually stable reconciliation”: if the desired state stops changing, the cluster eventually matches it and stays that way. The proof splits into two parts: the environment becomes stable, and the controller reaches the desired state.
    • number: about two person-months to verify the ZooKeeper controller, about two person-weeks for each of the other two
    • number: each controller takes around 2.5 person-months to implement and verify; proof-to-code ratio 4.5 to 7.4
    • number: ZooKeeper: executable 1,134 lines, proof 8,352 (ESR 7,245), trusted 950; RabbitMQ: executable 1,598, proof 7,228, trusted 548
    • number: framework: 5353 lines of reusable lemmas, 7817 lines of trusted code; 70+ temporal-rule lemmas, 60 Kubernetes-environment lemmas
    • limits: The controller must be a state machine whose actions are atomic (they cannot be interrupted). The proof trusts the environment model, the shim layer, external APIs, the verifier, the compiler and the OS. After verification, testing still found one bug. It came from an incomplete spec of a trusted ZooKeeper API. About 40% of the 111 pages were read.
    • how much was read: parts read
    • source
    • record id: anvil-thesis-2025
  • CapybaraKV (2025)
    • title: CapybaraKV (verified-storage)
    • what: CapybaraKV is a verified key-value store written in Verus. An earlier version appears in the OSDI 2025 paper PoWER Never Corrupts. It comes with a line-counting script that computes the ratio of proof lines to code lines.
    • limits: The notes read only the README.
    • how much was read: parts read
    • source
    • record id: capybarakv-2025
  • Clock-SI TLA+ (2025)
    • title: Formal modelling and analysis of Clock-SI with TLA+
    • what: A master’s thesis that models the Clock-SI protocol (snapshot isolation for a partitioned database using loosely synchronized clocks) in TLA+ in two versions, a detailed one and a simpler one, and uses the TLC model checker to test that the protocol gives Snapshot Isolation, stated with a client-centric specification.
    • number: Abstract model, Snapshot Isolation check: 2 keys, 2 partitions, 2 txns 3 s; 3 txns 3 min 28 s; 3 keys, 2 partitions, 3 txns 11 h 23 min 20 s; 3 keys, 3 partitions, 3 txns timed out (Table 10)
    • number: Detailed model: 3 keys, 2 partitions, 2 txns 21 min; most larger cases timed out (Table 9)
    • number: Symmetry and view features cut one 2-key, 2-partition, 3-txn state-space run from 2 h 54 min to 2 min 2 s (Table 8)
    • number: Machine: i7-7700HQ, 16 GB RAM; each time is the average of 3 runs; maximum runtime 12 hours
    • limits: Bounded to at most 3 transactions, keys, partitions; the target of 3/3/3 was not reached. The abstract model removes the message system, so it does not cover the real messaging. Only the safety property (Snapshot Isolation) is checked; no liveness. Chapters 2-3 (background) and the model listings in 4.1-4.2 were skimmed.
    • how much was read: parts read
    • source; notes: ## Formal modelling and analysis of Clock-SI with TLA+ (2025)
    • record id: clock-si-tla-2025
  • Design and Modular Verification of Distributed Transactions in MongoDB (2025)
    • what: A TLA+ spec of MongoDB distributed transactions, with a modular spec of the interface. A follow-up blog generates conformance tests against WiredTiger.
    • number: TLA+ spec about 571 lines plus storage spec about 332 lines
    • number: 87,143 generated tests in about 40 minutes on a small finite model (2 keys, 2 transactions)
    • limits: It is tested only. Code is at https://github.com/mongodb-labs/vldb25-dist-txns.
    • how much was read: parts read
    • record id: design-and-modular-verification-2025
  • Korg thesis (2025)
    • title: Verification and Attack Synthesis for Network Protocols
    • what: Proves properties of three network-protocol pieces with theorem provers (Karn’s RTT algorithm and TCP’s timeout rule in Ivy and ACL2s, and Go-Back-N efficiency in ACL2s), model-checks TCP, DCCP and SCTP handshakes in SPIN, then builds Korg, a tool that searches for attacker behaviour that breaks a given property.
    • number: Handshake properties: TCP 4 (phi1-phi4), SCTP 10 (gamma1-gamma10), DCCP has its own set
    • number: Korg asked for at most 10 attacks per property; default search depth 600,000, maximum 2,400,000
    • number: TCP phi3 (peers do not get stuck) took 72 min to 223 min per attacker model; other TCP properties took seconds
    • number: SCTP: one patched-vs-unpatched check; with the CVE-2021-3772 patch, Korg finds no off-path attack, which proves the patch closes it for the model
    • limits: Models are small by design to avoid state-space explosion; the handshake models are not linked to the Ivy/ACL2s models. Korg handles one centralized attacker, not coordinated multi-process attackers, and is exact only for the model, not the real code. Models took long to write by hand.
    • how much was read: parts read
    • source; notes: ## Von Hippel thesis on protocol verification and attack synthesis (20
    • record id: korg-thesis-2025
  • PolySemist (2025)
    • title: Accelerating Protocol Synthesis and Detecting Unrealizability with Interpretation Reduction.
    • what: A tool that fills in the missing guards and updates of a half-written TLA+ distributed protocol (a sketch) so the protocol meets a safety or liveness property. It loops: the TLC model checker finds a counterexample, the tool rules out every candidate that shares it, and it skips candidates that behave the same on the states seen so far.
    • number: 7 benchmark protocols: 2PC, consensus, decentralized lock, lock server, sharded KV store, two reconfigurable Raft variants
    • number: faster than the previous tool Scythe in 160 of 171 realizable problems; total time about 9,000 s vs 32,000 s on those both solve
    • number: whole distributed-lock protocol (6 expressions over 2 actions) synthesized in 125 s; Scythe timed out at 1 hour
    • number: detected ‘no protocol exists’ in 80 of 123 unrealizable problems vs 16 for Scythe (easy 46/50, medium 21/35, hard 13/38)
    • limits: A human supplies the sketch (state variables, actions, hole grammars) and the property; results hold only for the chosen finite parameters (e.g. number of nodes), and the all-parameters step is left to TLAPS proofs from prior work. Termination is guaranteed only when each hole grammar has finitely many expressions up to interpretation equivalence.
    • how much was read: parts read
    • source; notes: ## PolySemist: protocol synthesis by sketching (2025)
    • record id: polysemist-2025
  • Shipwright (2025)
    • title: Shipwright: Proving liveness of distributed systems with Byzantine participants
    • what: A Dafny framework. A node is written as event handlers and compiled to Go. A refinement proof shows that the real handlers, running over a network model that eventually stabilizes, give safety and liveness. The case study is PBFT agreeing on one log entry, with infinitely many views.
    • number: Shipwright 13,357 lines (1,351 trusted); PBFT implementation 31,138 lines (266 trusted)
    • number: total 1,617 trusted, 42,878 untrusted, 44,495 lines
    • number: proof found three liveness bugs (bad new-view signatures, wrong certificate counting, timer started too early)
    • number: implementation 1888 lines (Figure 11, PDF p.11)
    • limits: It assumes partial synchrony (the network eventually stabilizes), an unverified Go runtime, and unforgeable signatures. It covers only one PBFT iteration. Reply messages to clients are not in the top-level theorem. Some refinements are unfinished. Person-time is not given.
    • how much was read: parts read
    • source
    • record id: shipwright-2025
  • Vest (2025)
    • title: Vest: Verified, Secure, High-Performance Parsing and Serialization for Rust
    • what: Users describe a binary format, and Vest generates Rust parsers and serializers verified in Verus. It uses a reusable combinator library.
    • number: about 6K library lines, verified in under ten seconds
    • number: DSL compiler 5,807 Rust lines
    • number: format descriptions: Bitcoin about 67 lines, TLS 1.3 about 500, WebAssembly about 600
    • limits: It proves that parse and serialize are inverses, plus memory safety. It does not prove consensus or handshake security. Timing side channels are not a Verus theorem. The DSL frontend is unverified.
    • how much was read: parts read
    • source; notes: Vest: Verified, Secure, High-Performance Parsing and Serialization for
    • record id: vest-2025
  • ZENITH (2025)
    • title: ZENITH: Towards A Formally Verified Highly-Available Control Plane
    • what: A microservice SDN (software-defined networking) controller. Its TLA+/PlusCal spec is verified to ensure that the network state eventually matches the intent. Code is generated from the spec.
    • number: spec is 8.6K lines
    • number: eight properties P1-P8 proved by hand in TLAPS
    • number: 26 race conditions from prior SDN controller bugs (9 state inconsistencies, 7 deadlocks)
    • limits: The code generator is assumed correct, as with PGo. Model checking alone does not scale across topologies. TLAPS needed history variables (extra variables recording the past). Person effort is not given.
    • how much was read: parts read
    • record id: zenith-2025
  • Fairneris (2024)
    • title: Fairneris: Verifying Liveness Properties of Distributed Systems via Trace Refinement in Higher-Order Concurrent Separation Logic
    • what: An AnerisLang implementation of Stenning transfer over UDP-like networking. Under fair scheduling and a fair network (nothing is delayed forever), every sequence number is eventually acknowledged. Coq checks the refinement (that the code matches the model) and most of the infrastructure.
    • limits: The model’s liveness theorem is a pen-and-paper proof, not machine-checked. The review notes did not establish the venue, date or artifact.
    • how much was read: parts read
    • source; notes: papers and boundaries
    • record id: fairneris-2024-2
  • Kondo (2024)
    • title: Inductive Invariants That Spark Joy: Using Invariant Taxonomies to Streamline Distributed Protocol Proofs
    • what: Kondo derives inductive invariants for Dafny protocol proofs from the protocol’s structure. This reduces the invariants the user must write.
    • number: Paxos: 418 lines, Kondo needs 20 user invariants, 777 total proof lines, 42.9 s
    • number: IronFleet 4,581 lines of Dafny and Verdi 50,000 lines of Coq for manual proofs
    • number: Paxos row: 631 model lines; 27 invariant clauses without Kondo vs 20 synchronous; 856 proof lines without Kondo vs 557 synchronous plus 220 modified
    • number: Table 1 p. 848: 10 systems (Echo Server, Ring Leader Election, Simplified Leader Election, Two-Phase Commit, Paxos, Flexible Paxos, Distributed Lock, ShardedKV, ShardedKV-Batched, Lock Server)
    • limits: Liveness proofs are beyond its scope. Line counts are not measured human hours.
    • how much was read: parts read
    • source; notes: papers inspected
    • record id: kondo-2024
  • RefinedRust (2024)
    • title: RefinedRust: A Type System for High-Assurance Verification of Rust Programs
    • what: A tool that checks Rust code, including unsafe code that uses raw pointers, against hand-written specs and emits a proof that the Coq proof assistant checks, so the tool itself need not be trusted. Demonstrated on a simplified Vec (growable array).
    • number: Vec and RawVec APIs: 120 lines of code, 76 lines of annotations, about 1200 lines of generated Coq
    • number: verification takes about 6 minutes wall time (22 minutes CPU) on an Apple M1 Max
    • number: for Vec::pop: about 3,000 automatic steps, 100 side conditions, all but five solved automatically, about 20 lines of manual Coq
    • number: type system formalization: about 21k lines of specification and 14k lines of proof; about 80 lines of manual Coq for Vec’s invariant
    • limits: Only sequential code: no concurrency, traits, closures, recursive types or unsized types. Trusts the Rust model (Radium) and the Rust-to-Coq frontend. The Vec code is simplified from the standard library.
    • how much was read: parts read
    • source; notes: RefinedRust (2024)
    • record id: refinedrust-2024
  • SandTable (2024)
    • title: SandTable: Scalable Distributed System Model Checking with Specification-Level State Exploration
    • what: It model-checks a TLA+ spec quickly, then replays the bug traces in the code. A conformance checker replays model traces to find places where the spec and code differ.
    • number: 23 bugs, 18 new, 17 confirmed, 13 fixed
    • number: Half a person day to a few person days to fix modeling errors; two person weeks adapting ZooKeeper specs
    • number: 114x-2989x faster state exploration
    • number: abstract: 18 new bugs, 17 confirmed, 13 fixed (the note’s sentence adds ‘out of 23 total’ garbled)
    • limits: It cannot guarantee that no differences remain between the spec and the implementation.
    • how much was read: parts read
    • source; notes: P10. SandTable: Scalable Distributed System Model Checking with Specif
    • record id: sandtable-2024
  • Trillium / Fairis (2024)
    • title: Trillium and Fairis
    • what: A program-logic framework in Coq and Iris. Fairis proves liveness of concurrent programs under fair scheduling, by refinement of a model. The Aneris instantiation proves that distributed implementations refine TLA+ models (two-phase commit, single-decree Paxos and a CRDT).
    • number: about 1100 lines of proof scripts for Paxos
    • limits: The step from TLA+ to the Coq model was done manually. The distributed refinements give trace safety only. Distributed liveness is in a later manuscript. The notes’ author read about 40%.
    • how much was read: parts read
    • source
    • record id: trillium-fairis-2024
  • Yao thesis (DistAI, DuoAI, LVR) (2024)
    • title: Automated Verification of Safety and Liveness Properties for Distributed Protocols (PhD thesis)
    • what: It shows that liveness can be reduced to a list of simpler safety properties, which invariant-inference tools often prove automatically. One task is left: synthesize a ranking function (a number that decreases toward the goal) to prove termination. It was applied to 8 protocols, including Paxos. It also covers DistAI and DuoAI.
    • number: 37 of 40 generated safety properties are always true, inductive, or get an invariant automatically; 3 found manually in a few hours each
    • number: every Z3 query to synthesize a ranking function finished in under a second
    • number: manual effort 128 and 165 lines versus IronFleet’s 2,093 and 7,869 lines of Dafny (16x and 47x less)
    • number: DuoAI covers 27 protocols and solves Paxos more than two orders of magnitude faster than any alternative
    • limits: It handles only “eventually” properties, not bounded time. Ranking functions are polynomials only. It works on protocol-level models, not code. It assumes fair scheduling, minimum packet delivery and a contention-free Paxos round. Part of the line-count gap is Dafny versus mypyvy. The notes’ author read about 20% of the 137 pages.
    • how much was read: parts read
    • source
    • record id: yao-thesis-distai-duoai-lvr-2024
  • A Case Study on Parametric Verification of Failure Detectors (2023)
    • what: The authors model the Chandra-Toueg failure detector (a protocol that guesses which machines have crashed) in TLA+, Ivy and counter automata, assuming partial synchrony (the network is unpredictable at first, then becomes well-behaved). They prove liveness (something good eventually happens) by hand, turning it into a safety proof (nothing bad happens).
    • limits: The conversion from liveness to safety is done by hand. Ivy’s automatic conversion was not used.
    • how much was read: parts read
    • source
    • record id: a-case-study-on-2023
  • ByMC survey (2023)
    • title: Survey on Parameterized Verification with Threshold Automata and the Byzantine Model Checker
    • what: Protocols are modeled by counting messages and participants against thresholds. This lets the tool check safety, and some liveness, for any number of participants, under conditions like n>3t (n participants, at most t faulty).
    • number: Table 4: 13 asynchronous/randomized algorithms (FRB, STRB, ABA, NBACG, NBACR, CBC, CF1S, C1CS, BOSCO, Ben-Or, RABC, kSet, RS-BOSCO)
    • number: Table 6: 16 synchronous cases, 14 verified; HybridQueen and kSetOmit have no successful check
    • limits: People still supply the models and assumptions. Termination of randomized protocols holds only against adversaries that act in rounds. The Tendermint claim covers one round only. The synchronous checker is a separate prototype.
    • how much was read: parts read
    • source; notes: ByMC and threshold automata
    • record id: bymc-survey-2023
  • IronSync (2023)
    • title: Sharding the State Machine: Automated Modular Reasoning for Complex Concurrent Systems
    • what: It connects ownership reasoning (who may access what) for thread-local code to a global transition model. Cases: a NUMA node-replication library, and SplinterCache, a concurrent page cache.
    • number: 2747 lines of non-ghost implementation plus 316 of shared library, for all four concurrent examples (§7.1, PDF p.12)
    • limits: It covers shared-memory systems, not networking. It does not verify liveness, termination or freedom from deadlock. It trusts the framework’s axioms and the memory model.
    • how much was read: parts read
    • source; notes: papers; notes: Sharding the State Machine: Automated Modular Reasoning for Complex Co
    • record id: ironsync-2023
  • Lessons from Formally Verified Deployed Software Systems (2023)
    • what: A survey of 32 formally verified deployed systems, mostly not distributed.
    • number: 22 of 32 depend on unverified code elements
    • number: HACL* proof-to-code ratio about 2, up to 6
    • number: Vericert: about 3 person-months implementation, 15 person-months proofs
    • limits: The notes’ author did not mine the full survey.
    • how much was read: parts read
    • source
    • record id: lessons-from-formally-verified-2023
  • PGo (2023)
    • title: Compiling distributed system models with PGo
    • what: It compiles Modular PlusCal models into Go.
    • number: Table 2 (MPCal SLOC; glue SLOC; effort): lock service 67; 87; 2 person-days; Raft 771; 676; 22 person-days; distributed KV 256; 383; 3 person-days; primary-backup KV 420; 270; 10 person-days; state-based CRDT 160; 185; 10 person-days
    • number: monolithic RaftKV: 25 person-days, 758 model lines, 1099 glue lines
    • limits: It gives no guarantee about the compiler.
    • how much was read: parts read
    • source; notes: P07. Compiling Distributed System Models with PGo; notes: papers
    • record id: pgo-2023
  • Proving Refinement in a Rust Verifier (MSc thesis) (2023)
    • what: A way to prove that a Rust program, checked by Prusti, refines a TLA+ model (every step of the program matches a step of the model). The model state is ghost state (proof-only state) behind a “ghost lock”. Each implementation step takes the lock to perform one model step.
    • number: Paxos acceptor phases: 112 model / 132 implementation / 152 proof lines (3.5 min)
    • number: lock-free hash set: 123 / 57 / 376 lines (3 min)
    • limits: It covers safety only. Prusti lacks support for ghost code. The translation from TLA+ is manual and not implemented as automatic. The notes’ author read about 35%.
    • how much was read: parts read
    • source
    • record id: proving-refinement-in-a-2023
  • Adore (2022)
    • title: Adore: Atomic Distributed Objects with Certified Reconfiguration
    • what: Adore describes a distributed protocol’s state at a high level. It tracks which parts are committed and which are not, and hides packet details. A Coq proof shows that a Raft-like protocol, SRaft, correctly implements Adore (a refinement). Adore covers several ways of changing cluster membership, chosen by parameters.
    • number: about 13.8k Coq lines overall; 2.5k for SRaft-to-Adore refinement
    • number: 2 weeks for CADO safety plus another 3 for reconfiguration, five person-weeks, abstract safety only (§7, PDF p.13)
    • number: 13.8K lines for the full Raft development
    • limits: The proof is about the protocol, not application code. It makes no claim that the system eventually makes progress or stays available.
    • how much was read: parts read
    • source; notes: papers; notes: Adore: Atomic Distributed Objects with Certified Reconfiguration
    • record id: adore-2022
  • Applying Formal Verification to Microkernel IPC at Meta (2022)
    • what: Meta proved two lock-free queues, used for message passing between processes in an OS under development, using Iris and Coq. The proofs cover verified pseudocode of the algorithm, not the C code.
    • number: Entire IPC implementation about three thousand lines
    • number: Six months with two engineers
    • limits: The specs say nothing about liveness (that operations eventually finish). A queue whose operations loop forever would satisfy them.
    • how much was read: parts read
    • source
    • record id: applying-formal-verification-to-2022
  • Op-based CRDTs (2022)
    • title: Modular Verification of Op-Based CRDTs in Separation Logic
    • what: A reliable causal broadcast library and OpLib, so that a data type can be verified without redoing the proofs about packets and threads. Twelve examples: counters, sets, registers, combinators, composed maps.
    • limits: Proves convergence when replicas have received equal sets of operations. It does not prove eventual delivery, which counts as a progress property.
    • how much was read: parts read
    • source; notes: papers; notes: Modular Verification of Op-Based CRDTs in Separation Logic
    • record id: op-based-crdts-2022
  • Sift (2022)
    • title: Sift: Using Refinement-guided Automation to Verify Complex Distributed Systems
    • what: Starting from a specification, an implementation model and intermediate layers, it turns each layer-to-layer obligation into a safety problem. It infers invariants with IC3PO and generates C++ with Ivy.
    • number: six cases: leader election, distributed lock, two-phase commit, sharded hash table, Raft, Multi-Paxos
    • number: manual work under five minutes for the three small cases, one person-month for Raft, three person-weeks for Multi-Paxos
    • number: Raft proof effort 1 person-month
    • number: MultiPaxos effort 3 person-weeks
    • limits: The top-level abstraction proofs for Raft and Multi-Paxos are manual or reused. Imperative optimizations may need loop invariants written by hand. It targets C++, not Rust.
    • how much was read: parts read
    • source; notes: papers inspected; notes: Sift: refinement from protocol down to executable systems
    • record id: sift-2022
  • Aneris causal memory (2021)
    • title: Distributed Causal Memory: Modular Specification and Verification in Higher-Order Distributed Separation Logic
    • what: Specifies a causally consistent database (one where an effect is never seen before its cause). Servers and clients are proved separately, and a session manager adds guarantees for each client on top.
    • limits: It proves the code does the right thing through separate specs for each part. It makes no promise about response time. The collection filename says 2022 but the paper says 2021.
    • how much was read: parts read
    • source; notes: Distributed Causal Memory: Modular Specification and Verification in H
    • record id: aneris-causal-memory-2021
  • Civl FMCAD 2021 (2021)
    • title: The Civl Verifier
    • what: Describes a static verifier for concurrent programs. It proves a program in layers, where each layer is shown to match the one above. It uses checks for interference between threads, a step-merging technique called reduction, and permissions. Case studies include garbage collection, Paxos and locks.
    • limits: The test suite is a repository that keeps changing. It is not a fixed protocol benchmark. Pin a commit.
    • how much was read: parts read
    • source; notes: Civl and inductive sequentialization; notes: S16
    • record id: civl-fmcad-2021-2021
  • Paxos with IC3PO (2021)
    • title: Towards an Automatic Proof of Lamport’s Paxos
    • what: Uses IC3PO along a hierarchy of simpler protocols chosen by a human: Voting, SimplePaxos, ImplicitPaxos, Paxos, then Flexible Paxos and Multi-Paxos. It passes strengthening assertions (extra facts that make the proof go through) upward.
    • number: Pages 112-122
    • limits: The hierarchy of abstractions, and its link to the intended system, are separate human work.
    • how much was read: parts read
    • source; notes: papers inspected; notes: IC3PO and its shared ivybench collection
    • record id: paxos-with-ic3po-2021
  • ShardStore (2021)
    • title: Using Lightweight Formal Methods to Validate a Key-Value Storage Node in Amazon S3
    • what: Executable reference models and checks for the S3 ShardStore storage node.
    • number: Reference models about 1% of implementation code
    • number: Checks and harnesses 12% of the code base
    • number: Prevented 16 issues from reaching production
    • number: 18% of reference model and harness code written by the engineering team
    • limits: Passing the checks does not mean the code is correct.
    • how much was read: parts read
    • source; notes: papers; notes: Using Lightweight Formal Methods to Validate a Key-Value Storage Node
    • record id: shardstore-2021
  • Civl refinement CAV 2020 (2020)
    • title: Refinement for Structured Concurrent Programs
    • what: This paper moves refinement reasoning (showing that a detailed program implements a simpler one) into structured concurrent programs. It uses yield invariants and permissions.
    • limits: The paper has no fixed, complete list of protocol benchmarks.
    • how much was read: parts read
    • source; notes: Civl and inductive sequentialization; notes: S15
    • record id: civl-refinement-cav-2020-2020
  • eXtreme Modelling (2020)
    • title: eXtreme Modelling in Practice
    • what: MongoDB compared two ways to link a model to code. One is model-based trace checking (MBTC), which checks whether logged runs fit the model. The other is model-based test-case generation (MBTCG). Trace checking of replication was impractical. For Realm Sync’s operational-transformation rules, a Go generator turned TLC states into C++ tests.
    • number: Realm Sync table (§5.2): 795 TLA+ lines, 755 Go lines, 4 weeks total effort
    • number: Abandoned trace checking after 10 weeks
    • number: 4913 generated tests reached 100% branch coverage vs 21% handwritten and 92% AFL fuzzer
    • limits: Trace checking of replication struggled with the level of abstraction, concurrency, incomplete observations, and keeping code and model in sync. The generated tests cover local merge behavior, not the whole distributed product.
    • how much was read: parts read
    • source; notes: P04. eXtreme Modelling in Practice
    • record id: extreme-modelling-2020
  • Inductive sequentialization (2020)
    • title: Inductive Sequentialization of Asynchronous Programs
    • what: The user supplies a simpler sequential ordering of the steps of an asynchronous program, plus evidence that steps can be swapped (commute). A checked induction then shows the simplification is sound.
    • number: Table 1 (7 problems): Broadcast consensus 396/108/121 LOC 1.0s; Ping-Pong 281/91/106; Producer-Consumer 225/65/93; N-Buyer 681/251/256; Chang-Roberts 377/117/135; 2PC 553/181/222; Paxos 1168/534/302, 4.2s
    • number: IS applications: 2,1,1,4,2,4,1
    • limits: It asserts no liveness result. The review notes found no measurement of human hours. The line counts include boilerplate.
    • how much was read: parts read
    • source; notes: Civl and inductive sequentialization
    • record id: inductive-sequentialization-2020
  • Logres (2020)
    • title: A Formally Verified Protocol for Log Replication with Byzantine Fault Tolerance
    • what: A log replication protocol that runs in lock-step rounds (the Heard-Of model), uses signatures, and tolerates Byzantine faults. Its proof in Isabelle/HOL includes liveness.
    • number: About 300 lines for the protocol model and 1000 lines for the proofs
    • number: IronFleet took about 3.7 person-years (the paper’s figure)
    • limits: Liveness is cheap here because the model is lock-step, with no leader and no timing. That is the notes’ inference. The proof is a counting argument, not a fairness argument.
    • how much was read: parts read
    • source
    • record id: logres-2020
  • Apalache (2019)
    • title: Apalache: temporal properties tutorial, feature table and TLA+ model checking made symbolic
    • what: Apalache is a model checker for TLA+ that works on symbols instead of listing states, using an SMT solver. It checks state, action and trace invariants, inductive invariants (a property that holds at the start and is preserved by every step) and temporal properties.
    • limits: Apalache parses ASSUME but does not pass it to the solver. It does not use THEOREM. Its bounded checks do not prove properties for unbounded runs. The authors did not read the original paper.
    • how much was read: parts read
    • source; notes: tools; notes: Model checking: what a successful run means
    • record id: apalache-2019
  • HotStuff (2019)
    • title: HotStuff: BFT Consensus in the Lens of Blockchain
    • what: HotStuff is BFT consensus (it tolerates arbitrarily faulty replicas) with n=3f+1 replicas, a known delay bound Δ and an unknown GST. If a correct leader stays in one view long enough after GST, Basic HotStuff decides. A Pacemaker keeps replicas and leaders in step.
    • limits: The argument is handwritten. The deployed Pacemaker is not machine-checked. The chained variant needs two consecutive correct leaders, and its liveness argument is omitted for brevity. Completing in a single view does not establish that this view is eventually selected (an inference).
    • how much was read: parts read
    • source; notes: HotStuff; notes: Consensus: where the assumptions enter the proof
    • record id: hotstuff-2019
  • Pretend Synchrony / Goolong (2019)
    • title: Pretend synchrony: synchronous verification of asynchronous distributed programs
    • what: Verifies Go distributed programs by automatically rewriting them into an equivalent synchronous program (messages become assignments), then checking ordinary verification conditions with the Z3 solver. Four case studies: two-phase commit, Raft leader election, single-decree Paxos, Multi-Paxos key-value store.
    • number: manual invariant annotations reduced by 6x versus Dafny
    • number: check time 1.73 s total vs 1455.84 s in Dafny for the three protocols
    • number: Paxos 504 lines of Go, 14 loop-invariant lines, 1.51 s; Dafny 72 invariant lines, 1141.35 s
    • number: Multi-Paxos KV: 847 Go lines, 1.64 s check, 118.5 req/ms, within 1.5-3x of unverified EPaxos code
    • limits: Safety only, no liveness. Needs structured loops, symmetric process ids, typed channels, pairwise communication and round non-interference; rules out Multi-Paxos stable-leader optimization, Stoppable Paxos and ring topologies such as Chord.
    • how much was read: parts read
    • source; notes: Pretend Synchrony (2019)
    • record id: pretend-synchrony-goolong-2019
  • Disel (2018)
    • title: Programming and Proving with Distributed Protocols
    • what: Proves distributed components and their clients in Coq against protocol descriptions, and composes their contracts. A protocol can be strengthened for one client without redoing the component proofs.
    • number: about 4,500 lines of framework metatheory
    • number: two-phase commit core: 997 definition/spec lines and 2,113 proof lines; nine person-days
    • number: trusted OCaml shim about 250 lines
    • number: nine person-days for the core two-phase-commit development (§8, PDF p.24)
    • limits: Safety only.
    • how much was read: parts read
    • source; notes: papers and boundaries; notes: Programming and Proving with Distributed Protocols
    • record id: disel-2018
  • Tendermint (2018)
    • title: The latest gossip on BFT consensus
    • what: The paper presents the Tendermint algorithm. It proves that, after GST, a favorable round arises from the proposer rotation, the growing timeouts and the gossip. Then all correct participants decide.
    • number: faulty voting power below one third of total
    • limits: The proof is handwritten. It says nothing about verifying current Tendermint successors. The fault unit is voting power, not replica count. The page reference for lemma 7 in the inherited review was wrong for the v3 the review notes inspected.
    • how much was read: parts read
    • source; notes: Tendermint; notes: Consensus: where the assumptions enter the proof
    • record id: tendermint-2018
  • Velisarios (2018)
    • title: Velisarios: Byzantine Fault-Tolerant Protocols for Verified Distributed Systems
    • what: It proves agreement for an executable Coq implementation of PBFT: correct replicas return the same reply for the same client and timestamp. Code is extracted to OCaml with a networking and cryptography runtime.
    • number: PBFT evaluation uses desktops with 16 GB RAM and 8-core 3.40 GHz i7-6700 CPUs
    • number: Single-machine simulation: 1 million requests, 27.6 microseconds average for f=1 replies
    • number: Primary failure recovery took around 7 seconds
    • number: Compared response times with BFT-SMaRt for f=1–3
    • limits: The theorem assumes authenticated origins, correct keys, and a bound on the number of faulty nodes. Linearizability, liveness and timeliness are left for future work. The runtime and cryptographic assumptions stay in the trust boundary.
    • how much was read: parts read
    • source; notes: Velisarios: Byzantine Fault-Tolerant Protocols Powered by Coq; notes: Velisarios: Byzantine Fault-Tolerant Protocols for Verified Distribute
    • record id: velisarios-2018
  • ConsL cutoff (2017)
    • title: Cutoff Bounds for Consensus Algorithms
    • what: It describes round-based consensus algorithms in a small language, ConsL. It proves bounds on how many processes are enough to check. It translates the algorithms to Promela/LTL for the Spin model checker.
    • number: Table 2: 9 cases (Paxos, Paxos 3 rounds, Chandra-Toueg, an algorithm from Consensus Refined, 1/3-rule, coordinated uniform voting, simplified version, uniform voting variant, Ben-Or)
    • number: Cutoffs: 5 processes, except 1/3-rule at 7
    • number: Pages 217-237
    • limits: Progress claims keep the communication assumptions. Failed processes keep receiving, but their messages are suppressed. Ben-Or termination here is not termination with probability one against arbitrary adversaries. The notes did not recover the generated model download.
    • how much was read: parts read
    • source; notes: Cutoff and bounded instantiation leads
    • record id: consl-cutoff-2017
  • CertiKOS (2016)
    • title: CertiKOS: An Extensible Architecture for Building Certified Concurrent OS Kernels
    • what: CertiKOS specifies an interface and the visible events at each kernel layer. It proves that a module can stand in for its specification in the contexts it allows (this is called contextual refinement). The mC2 kernel is proved in Coq.
    • number: Under 2 person-years for supporting concurrency
    • number: 6500 lines of C and x86 assembly
    • limits: The 2 person-years is the cost of adding concurrency support, not the cost of a whole new kernel.
    • how much was read: parts read
    • source; notes: S9
    • record id: certikos-2016
  • Chapar (2016)
    • title: Chapar: Certified Causally Consistent Distributed Key-Value Stores
    • what: Chapar states the public causal-visibility rule separately from the store internals. The rule says that if an update is visible, its dependencies are visible. The authors prove two store algorithms and extract OCaml. They verify client examples, such as publishing a photo before a post that refers to it.
    • limits: It trusts serialization and the runtime infrastructure.
    • how much was read: parts read
    • source; notes: papers; notes: Chapar: Certified Causally Consistent Distributed Key-Value Stores
    • record id: chapar-2016
  • Verdi Raft (2016)
    • title: Planning for Change in a Formal Verification of the Raft Consensus Protocol
    • what: The authors complete the proof of Raft state-machine safety in Verdi. They manage changes across interdependent invariants by hiding definitions behind interface lemmas.
    • number: 90 system invariants discovered and proved
    • number: about 45000 additional lines on top of an earlier roughly 5,000-line proof
    • number: 530 lines of code and 50,000 lines of proof
    • number: 530 lines of code and 50,000 lines of proof (Raft development only, §5, PDF p.5)
    • limits: It proves safety only. It excludes dynamic membership and log compaction.
    • how much was read: parts read
    • source; notes: S34
    • record id: verdi-raft-2016
  • AWS formal methods (2015)
    • title: Use of Formal Methods at Amazon Web Services (How Amazon Web Services Uses Formal Methods)
    • what: AWS engineers used TLA+ and TLC to explore distributed designs and find subtle bugs, including in replication and recovery designs. It is the clearest industrial statement of the gap between model and code.
    • limits: It checks designs only and does not prove the deployed code correct. The linked manuscript is dated 29 September 2014 and differs from the final publication.
    • how much was read: parts read
    • source; notes: P01. How Amazon Web Services Uses Formal Methods; notes: papers
    • record id: aws-formal-methods-2015
  • Matichuk et al. (seL4 proof size study) (2015)
    • what: The study compares the size of seL4 proofs with the size of the statements they prove.
    • number: 15,018 lemmas, about 215,000 lines of proof
    • how much was read: parts read
    • record id: matichuk-et-al-sel4-2015
  • seL4 comprehensive (2014)
    • title: Comprehensive formal verification of an OS microkernel
    • what: It details seL4’s refinement from the abstract spec to the executable design and then to C. It also covers security and binary checks, assumptions and effort.
    • number: About 20 person-years (py) for the correctness proof, including framework work
    • limits: Binary verification and hardware assumptions are discussed in Sections 4.7-4.8. Do not carry the historical boundaries over to current versions.
    • how much was read: parts read
    • source; notes: S10
    • record id: sel4-comprehensive-2014
  • Formal Verification of Distributed Algorithms: From Pseudo Code to Checked Proofs (2012)
    • what: Isabelle/HOL proofs of safety and liveness for consensus algorithms. They use a transition system with explicit runs. The examples are a Rotating Coordinator, Chandra-Toueg consensus and Paxos.
    • number: approximately 10k lines of Isabelle/HOL per algorithm
    • limits: The work is old and manual. The review notes read about 50% of it.
    • how much was read: parts read
    • source
    • record id: formal-verification-of-distributed-2012
  • Heard-Of (AFP) (2012)
    • title: Verifying Fault-Tolerant Distributed Algorithms in the Heard-Of Model
    • what: Isabelle proofs of six consensus algorithms in the Heard-Of model. Two ways of defining runs are linked by a reduction theorem. Termination of LastVoting is proved under a “communication predicate” (a condition on which messages arrive) instead of weak or strong fairness.
    • number: six consensus algorithms (OneThirdRule, Uv, LastVoting, Ute, Ate, Eigbyz)
    • limits: The communication predicate is a strong assumption about the environment: a good phase in which a coordinator hears a majority and everyone hears the coordinator. The user must argue that it is realistic (the notes’ inference).
    • how much was read: parts read
    • source
    • record id: heard-of-afp-2012
  • seL4 process study (2012)
    • title: Large-Scale Formal Verification in Practice: A Process Perspective
    • what: A study of the process of verifying seL4.
    • number: Design verification consumed roughly 60-70% of time and effort
    • number: Less than 14 person-years for kernel design, development and verification
    • number: Integrity and authority confinement took 10 person months
    • number: Maintenance about one full-time person
    • how much was read: parts read
    • source; notes: S35
    • record id: sel4-process-study-2012
  • CompCert (2009)
    • title: Formal verification of a realistic compiler
    • what: CompCert, a verified C compiler written in Coq. Gives the classic ratio of effort for a verified system.
    • number: 42000 lines of Coq, approximately 3 person-years
    • number: 14% compilation algorithms, 10% semantics, 76% correctness proof
    • number: each compilation pass takes 1500 to 3000 lines for spec and proof
    • number: 42000 lines of Coq and approximately 3 person-years (that historical version)
    • limits: Only the paragraph on effort was read.
    • how much was read: parts read
    • source; notes: S14
    • record id: compcert-2009
  • Proving that non-blocking algorithms don’t block (2009)
    • what: The first fully automatic tool to prove non-blocking liveness (lock-free and obstruction-free) of concurrent data structures. It uses rely-guarantee reasoning (each thread assumes what others do and promises what it does), shape analysis and a termination prover.
    • number: lock-freedom proofs found in under 10 minutes for all cases except Michael’s list, which took about 8 hours
    • number: found a linked-list deletion in Fomitchev and Yahav that is not obstruction-free
    • limits: It is not about distributed systems. The review notes read about 25% of the paper.
    • how much was read: parts read
    • source
    • record id: proving-that-non-blocking-2009
  • seL4 (2009)
    • title: seL4: Formal Verification of an OS Kernel
    • what: This is a proof in Isabelle that a microkernel’s implementation refines (correctly implements) its spec.
    • number: 8,700 lines of C
    • number: 200,000 lines of Isabelle script
    • number: Abstract spec took about 4 person months
    • number: Refinement statements at most 20% of effort
    • limits: It is a historical baseline. The 2014 paper has the expanded stack and the effort analysis.
    • how much was read: parts read
    • source; notes: S11
    • record id: sel4-2009
  • PBFT (1999)
    • title: Practical Byzantine Fault Tolerance
    • what: Clients eventually get replies if at most (n-1)/3 replicas are faulty and message delays do not grow faster than the timeout forever. The proof raises view timeouts, gets correct replicas into the same view, and rotates primaries until a correct one has enough time.
    • limits: Read in the official HTML because the PDFs failed. The delay condition is specific to this paper. It is not the modern GST contract.
    • how much was read: parts read
    • source; notes: Consensus: where the assumptions enter the proof; notes: PBFT
    • record id: pbft-1999
  • PVerifier
    • title: PVerifier (P language verification extensions)
    • what: It checks inductive proofs of designs written in the P language. Users supply assumptions and an inductive invariant. UCLID5 and an SMT solver check that the invariant holds initially, that each step preserves it, and that it implies the desired property. A two-phase-commit tutorial shows that if the protocol accepts, every participant preferred acceptance.
    • limits: The claim holds for the supplied P design under its assumptions. The 2PC tutorial proves no theorem that the protocol completes despite crashes. An internal verification of sharded transactions with snapshot isolation is reported by the author, and its details are unreleased.
    • how much was read: parts read
    • source; notes: PVerifier
    • record id: pverifier
  • tla-rs
    • what: Ports the AutoMan workflow to Rust and Verus. In the RSL and Raft theorems the review notes inspected, finite behaviors of the distributed model are proved to refine an abstract spec. The Raft theorem maps behavior to an abstract behavior of the committed log.
    • limits: It covers safety correspondence only, with no theorem about eventual progress. Collection helpers are marked external_body, so their contracts are not checked against their bodies. The scheduler, unsafe syscall glue, identity and TLS are outside the body proofs. Verification counts and benchmarks are the authors’ reports, which the review notes did not reproduce.
    • how much was read: parts read
    • source; notes: tla-rs primary source audit
    • record id: tla-rs
  • verified-nrkernel
    • what: Verified single-threaded page-table management for an OS, in Verus.
    • number: 288 verified, 0 errors
    • limits: It is currently single-threaded.
    • how much was read: parts read
    • source
    • record id: verified-nrkernel
  • Verus state machines
    • title: Verus State Machines Tutorial and Reference
    • what: Shows how to model a program as a tokenized state machine. Shows how the tool checks the inductive conditions (true at the start, preserved by each step) for each initializer and transition. A counter example shows why a stronger invariant is needed.
    • how much was read: parts read
    • source; notes: D2
    • record id: verus-state-machines
  • A Rust-to-Lean Verification Pipeline with AI Provers: An Experience Report (2026)
    • what: The authors translate production Rust cryptographic code into Lean 4 using Charon/Aeneas or Hax. The target is formal cryptography spec libraries. AI provers (Aristotle, Aleph) then finish the proofs that are still open. They applied this to Plonky3 and RISC Zero. Lean’s small trusted core checks every proof. Aleph proved two bounds theorems that had been left as unproved placeholders (sorry).
    • limits: The abstract is cut off before the results on which proof goals the AI closed.
    • how much was read: only abstract or first pages read
    • source
    • record id: a-rust-to-lean-2026
  • Apalache (2026)
    • title: The TLA+ Model Checker Apalache
    • what: Describes Apalache, a symbolic TLA+ model checker using SMT, with bounded verification, randomized symbolic execution, and inductiveness checking. A Byzantine consensus case study shows safety and liveness-to-safety workflows and their cost.
    • number: Consensus instance n=6, t=1, f=1: bound 10 took 26 min 43 s before abstraction and 1 min 24 s after
    • number: Bound 15 took about 47 h; 100 symbolic simulations took about 17 min
    • number: 13 lemmas took about 15 h of experienced-author work to discover
    • number: 40 experiments over 10 protocols; Apalache answered 8 cases TLC could not
    • limits: Inductiveness checking requires a user-provided invariant; unboundedness is only in rounds while node counts remain bounded. Clever abstractions and lemmas are human supplied.
    • how much was read: only abstract or first pages read
    • source
    • record id: apalache-2026
  • CB-Ver (2026)
    • title: CB-Ver: A Stable Foundation for Modular Network Control Plane Verification
    • what: CB-Ver verifies that network control planes eventually become stable. The human gives a spec for each component, SMT checks them, and soundness is proved in Lean. It can also synthesize component specs using Constrained Horn Clauses.
    • number: benchmarks: fat-tree and Internet2 networks with a 24 h timeout, compared with Timepiece and Minesweeper
    • limits: The notes cover only the abstract and the evaluation setup.
    • how much was read: only abstract or first pages read
    • source
    • record id: cb-ver-2026
  • Deterministic Execution and Margin Enforcement in Financial Transaction Systems: Empirical Evaluation with Formal Safety Verification (2026)
    • what: Proposes an order-handling design for trading in which every balance change is appended to a ledger and margin is reserved explicitly, models the accounting core in TLA+, and compares it with two common designs under concurrent load.
    • number: Median order latency 9.39 ms, p99 33.70 ms
    • number: Optimistic locking accepted 100,000 of capital (509.3% over-commitment); the append-only ledger had zero false acceptances
    • limits: Only the abstract was available (the TechRxiv PDF page returned an HTML page, not the paper); state-space size, invariant text, model effort and proof size are unknown. The abstract says the property holds ‘within the verified state space’, so it is a bounded model check, not a proof.
    • how much was read: only abstract or first pages read
    • source; notes: ## Deterministic margin enforcement with TLA+ (2026)
    • record id: deterministic-execution-and-margin-2026
  • Generalized DBLog (2026)
    • title: Generalized DBLog: A Verified Contract for Interleaving Copied Rows with a Change Log
    • what: This is a verified contract for interleaving table copies with a change log. It covers Netflix DBLog, Debezium and Flink CDC.
    • limits: The conditions are of the safety kind (nothing bad happens).
    • how much was read: only abstract or first pages read
    • source
    • record id: generalized-dblog-2026
  • LLM-assisted Verification of Protocol Implementations for Logic Flaws Using TLA+ (2026)
    • what: A pipeline from code to Protocol Intermediate Language to TLA+ to TLC, with feedback. The abstract reports three logic flaws, including WolfSSL 5.8.2 accepting CertificateVerify before ClientKeyExchange.
    • number: 3 logic flaws confirmed by the vendor
    • number: Three logic flaws identified, confirmed by the vendor (abstract)
    • limits: Only the abstract was available. The human inputs, the scope of the proofs and the method are unverified.
    • how much was read: only abstract or first pages read
    • source; notes: Located but full text unavailable; notes: Located but full text unavailable
    • record id: llm-assisted-verification-of-2026
  • ProofSaX (2026)
    • title: Synthesizing Proofs Using Proof Sharding and Exploration
    • what: ProofSAX is not an LLM. It splits a proof task into shards and searches annotations in parallel for safety proofs of distributed systems.
    • number: finds the last proof annotation in 86 of 103 proof-completion tasks, runtimes one minute to two hours
    • number: leader election fully automatic in under two minutes
    • number: ten 20-core machines
    • limits: It covers safety only. For Paxos and Raft it finds only the last annotation.
    • how much was read: only abstract or first pages read
    • source
    • record id: proofsax-2026
  • Scaling Verification of Cryptographic Software with Aeneas, Rust, and Lean (2026)
    • what: The paper argues that verification still has friction (it takes expertise, and proofs must be maintained as code evolves). It says tools have appeared to reduce it.
    • limits: The abstract text in the notes starts mid-sentence and is cut off.
    • how much was read: only abstract or first pages read
    • source
    • record id: scaling-verification-of-cryptographic-2026
  • SPECA (2026)
    • title: Beyond Code Reasoning: Specification-Anchored Auditing of Multi-Implementation Distributed Protocols
    • what: SPECA has an LLM read protocol specs (Ethereum consensus) and write categorized properties. It then audits each client against them. These are not proofs.
    • number: 15/15 in-scope Fusaka vulnerabilities with expert augmentation, 8/15 automated
    • number: About $30 per high/medium/low bug
    • limits: The authors say the quality of the generated properties is the main limit.
    • how much was read: only abstract or first pages read
    • source; notes: specification-anchored auditing
    • record id: speca-2026
  • SureDistrib (2026)
    • title: SureDistrib: Verifying Almost-Sure Termination of Composite Asynchronous Byzantine Protocols
    • what: SureDistrib is a Rocq framework with refinement and composition lemmas. It gives the first mechanized proof that an asynchronous Byzantine binary agreement algorithm terminates with probability 1. The common coin is treated as a black box.
    • limits: The review notes did not extract the effort and read only the introduction and the framework overview.
    • how much was read: only abstract or first pages read
    • source; notes: SureDistrib: Verifying Almost-Sure Termination of Composite Asynchrono
    • record id: suredistrib-2026
  • The Cross-Domain State Preservation Functor (2026)
    • what: An Isabelle/HOL development that claims safety plus starvation-freedom with f < n/3 Byzantine nodes.
    • number: 3,215 lines (search summary)
    • limits: A company preprint. The theorem and the model of partial synchrony are unchecked.
    • how much was read: only abstract or first pages read
    • source
    • record id: the-cross-domain-state-2026
  • DafnyMPI (2025)
    • what: DafnyMPI is a Dafny library. It proves deadlock freedom, termination, and functional equivalence with sequential implementations of MPI programs. Deadlock freedom comes from preconditions on MPI calls.
    • number: Three PDE solver case studies
    • limits: The notes cover only the abstract.
    • how much was read: only abstract or first pages read
    • source
    • record id: dafnympi-2025
  • Fortifying Integrity, Traceability, and Operational Efficacy in Blockchain-Based Examination Management Through Formal Verification with TLA+ (2025)
    • what: Models an Ethereum smart contract for exam records in TLA+ (a specification language for state machines), checks it with the TLC model checker for safety and liveness, and maps the TLA+ constructs to Solidity code. Hoare logic (pre- and postconditions) is applied to key functions.
    • limits: Full text not obtained (IEEE paywall, no open copy found by Unpaywall or Semantic Scholar); only the abstract was read, so properties checked, state-space size and results are unknown.
    • how much was read: only abstract or first pages read
    • source; notes: TLA+ for a blockchain exam-management contract (2025)
    • record id: fortifying-integrity-traceability-and-2025
  • Gillian-Rust (2025)
    • title: A Hybrid Approach to Semi-automated Rust Verification
    • what: Gillian-Rust verifies safe Rust automatically and unsafe Rust semi-automatically, on the Gillian platform. It is linked with Creusot. It verifies real Rust standard library code with minor annotations.
    • limits: It is a proof-of-concept tool. Only the abstract was read.
    • how much was read: only abstract or first pages read
    • source
    • record id: gillian-rust-2025
  • hax / Bert13 (2025)
    • title: Formal Security and Functional Verification of Cryptographic Protocol Implementations in Rust
    • what: The developer annotates Rust code and picks a backend prover (F*, ProVerif or SSProve) through the hax pipeline. The authors evaluate it on Bert13, a Rust post-quantum TLS 1.3 implementation.
    • limits: The full text was unavailable (HTTP 403). Only the abstract was read, so the scope, numbers and effort are unknown. The abstract makes no liveness claim.
    • how much was read: only abstract or first pages read
    • source; notes: Formal Security and Functional Verification of Cryptographic Protocol
    • record id: hax-bert13-2025
  • Machine Verification of Correctness for a Concurrent Union-Find Object (2025)
    • what: A machine-checked proof, written in TLA+ and checked by TLAPS, that the Jayanti-Tarjan randomized-linking union-find objects are strongly linearizable (a property that keeps concurrent behaviour correct even with randomized callers).
    • number: proof spans over 16,000 lines
    • number: organized into 20 theorems
    • limits: Full text not obtained: the Dartmouth Digital Commons PDF link returned a bot-check page and I did not work around it. Only the landing-page abstract was read.
    • how much was read: only abstract or first pages read
    • source; notes: ## Karun Ram: union-find in TLA+ (abstract only)
    • record id: machine-verification-of-correctness-2025
  • Rust guard refinement (2025)
    • title: A Refinement Methodology for Distributed Programs in Rust
    • what: The author’s abstract says it combines guards, locally inductive invariants and Rust ownership in a library usable with an off-the-shelf verifier. The case study is a concurrent Memcached.
    • limits: The notes’ author read only the abstract. The proof boundary, the verifier and the effort are unaudited. It is not necessarily based on Verus.
    • how much was read: only abstract or first pages read
    • source; notes: A Refinement Methodology for Distributed Programs in Rust
    • record id: rust-guard-refinement-2025
  • Super-V (2025)
    • title: Bolt-On Strong Consistency: Specification, Implementation, and Verification
    • what: It verifies a Raft-like replicated store built on a weak replicated store. SMT checks local, stable preconditions on updates.
    • limits: Only the abstract was read. The PDF was not obtained.
    • how much was read: only abstract or first pages read
    • source
    • record id: super-v-2025
  • TLA+ communication module (2025)
    • title: A Practical TLA+ Library for Designing and Verifying Distributed Systems
    • what: A TLA+ library of communication-channel primitives with selectable faults. It was used to verify atomic broadcast properties and Deferred Update Replication.
    • limits: The full text is behind a subscription, so the review notes have only abstract-level claims. The checked properties, counts and effort are unverified. The repository tests are model checks with TLC, not proofs that code matches the model.
    • how much was read: only abstract or first pages read
    • source; notes: A Practical TLA+ Library for Designing and Verifying Distributed Syste
    • record id: tla-communication-module-2025
  • Verified SCION router (2025)
    • title: Protocols to Code: Formal Verification of a Secure Next-Generation Internet Router
    • what: From the authors’ abstract: network-wide protocol and security refinements in Isabelle/HOL are soundly linked to a proof about a Go production router. The proof covers freedom from crashes, freedom from data races, and adherence to the concrete model. The code is from an independent dev team.
    • limits: Only the abstract and the repo were read. Numeric effort and exactly which files were verified are unaudited.
    • how much was read: only abstract or first pages read
    • source; notes: Protocols to Code: Formal Verification of a Secure Next-Generation Int
    • record id: verified-scion-router-2025
  • Cedar (2024)
    • what: The AWS authorization language Cedar. It is modeled in Lean with proofs, implemented in Rust, and the Rust is tested against the model by comparing their outputs (differential testing).
    • number: Search-result summary: 4 bugs found by verification, 21 more by testing (unchecked)
    • limits: Not distributed.
    • how much was read: only abstract or first pages read
    • source
    • record id: cedar-2024
  • Formal Verification of Digital Twins with TLA and Information Leakage Control (2024)
    • what: A TLA+ model that abstracts physical and communication processes into atomic state transitions. It explicitly assumes that messages are eventually delivered correctly.
    • limits: Delivery is assumed, not proved.
    • how much was read: only abstract or first pages read
    • source; notes: digital twins with TLA+
    • record id: formal-verification-of-digital-2024
  • Cinnabar (2023)
    • title: Synthesis of Distributed Agreement-Based Systems with Efficiently-Decidable Verification
    • what: Introduces Cinnabar, a counterexample-guided synthesis tool that completes sketches of distributed agreement-based systems so they fall in efficiently decidable verification classes.
    • number: Targets leader election and consensus based DAB systems
    • number: Counterexample-guided sketch completion
    • limits: Automated verification is undecidable outside the characterized class; synthesis starts from a designer sketch.
    • how much was read: only abstract or first pages read
    • source
    • record id: cinnabar-2023
  • QuickSilver (2021)
    • title: QuickSilver: Modeling and Parameterized Verification for Distributed Agreement-Based Systems
    • what: Quicksilver abstracts verified agreement protocols. It applies the abstractions to application case studies, using parameterized verification (one proof covers any number of nodes).
    • limits: The notes cite only the abstract. Procedure note: check that the abstractions preserve the application properties the paper claims, not only the agreement primitive.
    • how much was read: only abstract or first pages read
    • source
    • record id: quicksilver-2021
  • Randomized threshold consensus (2021)
    • title: Verification of randomized consensus algorithms under round-rigid adversaries
    • what: Extends threshold automata for randomized consensus with unbounded asynchronous rounds; round-rigid adversaries reduce verification to one-round model checking and support almost-sure termination reasoning.
    • number: Automatically verifies Ben-Or, Bracha, 2-set agreement and RS-Bosco
    • number: Handles crashes and Byzantine faults
    • limits: Round-rigid schedules/adversaries are the fairness abstraction; probabilistic claims are model-specific.
    • how much was read: only abstract or first pages read
    • source
    • record id: randomized-threshold-consensus-2021
  • Ivy: A Multi-modal Verification Tool for Distributed Algorithms. (2020)
    • what: . Ivy is a multi-modal veriïŹcation tool for correct design and implementation of distributed protocols and algorithms, supporting modular speciïŹcation, implementation and proof. Ivy supports proving safety and liveness properties of parameterized and inïŹnite-state systems via three modes: deductive veriïŹcation using an SMT solver, abstraction and model checking, and manual proofs using natural deduction.
    • limits: Not read; claims unverified.
    • how much was read: only abstract or first pages read
    • source
    • record id: ivy-a-multi-modal-2020
  • Making Byzantine Consensus Live (2020)
    • what: A spec for a view synchronizer (the component that gets nodes into the same view) strong enough to give liveness for single-shot HotStuff, Tendermint, PBFT and SBFT. The proofs are rigorous but not machine-checked.
    • limits: The review notes read the abstract only. The proofs are not mechanized.
    • how much was read: only abstract or first pages read
    • source
    • record id: making-byzantine-consensus-live-2020
  • PoS Nakamoto Coq proof (2020)
    • title: Formalizing Nakamoto-Style Proof of Stake
    • what: Gives a Coq machine-checked proof of safety and liveness for a synchronous Proof-of-Stake Nakamoto-style blockchain using chain growth, chain quality and common-prefix properties.
    • number: Safety and liveness jointly implied by three chain properties
    • number: Static corrupted parties in a synchronous network
    • limits: The model assumes synchrony and a static corruption set; it is a protocol model rather than deployed code.
    • how much was read: only abstract or first pages read
    • source
    • record id: pos-nakamoto-coq-proof-2020
  • Global synchronization guards (2019)
    • title: Parameterized Verification of Systems with Global Synchronization and Guards.
    • what: Defines a parameterized-system model with global synchronization and transition guards, proves decidability conditions for reachability and investigates cutoff bounds.
    • number: Reachability decidable without guards under the model
    • number: Sufficient conditions yield small cutoffs
    • limits: Results are decidability/cutoff theorems for the model, not an implementation verification.
    • how much was read: only abstract or first pages read
    • source
    • record id: global-synchronization-guards-2019
  • Threshold decomposition (2019)
    • title: Verification of Threshold-Based Distributed Algorithms by Decomposition to Decidable Logics
    • what: Decomposes verification of threshold-based fault-tolerant distributed protocols into EPR and BAPA. An automatic inference algorithm generates threshold-intersection properties; EPR verifies protocol transition systems and BAPA checks property soundness.
    • number: Evaluates Bosco safety, Hybrid Reliable Broadcast safety/liveness, and Byzantine Fast Paxos safety
    • number: Ten repetitions per experiment on a 2.2 GHz Core i5 laptop
    • number: Aip generated all valid formulas in under one minute; minimized sets contain 3–5 formulas versus 39–79 before minimization
    • number: Verified protocols include fast-learning Byzantine consensus; threshold inference takes minutes
    • limits: The user supplies an inductive invariant and models the protocol in EPR; the method targets restricted threshold use and relies on liveness-to-safety reduction where needed.
    • how much was read: only abstract or first pages read
    • source
    • record id: threshold-decomposition-2019
  • LiLi (2016)
    • title: A Program Logic for Concurrent Objects under Fair Scheduling
    • what: A program logic based on rely-guarantee reasoning (each thread assumes what others do and promises what it does). It verifies linearizability (operations appear to take effect at one instant) and progress together, under fair scheduling. Applied to ticket locks, queue locks, lock-coupling lists, optimistic lists and lazy lists.
    • limits: Abstract only. No effort numbers.
    • how much was read: only abstract or first pages read
    • source
    • record id: lili-2016
  • FCSL (2015)
    • title: Mechanized Verification of Fine-grained Concurrent Programs
    • what: Presents FCSL, a mechanized higher-order concurrent separation logic and framework for verifying fine-grained concurrent programs and data structures. The paper reports mechanized proofs across benchmark libraries and explains recurring invariant patterns.
    • number: Mechanized verification covers a benchmark suite of concurrent programs and data structures
    • number: Framework uses higher-order separation logic and mechanized metatheory
    • limits: The focus is shared-memory concurrency and data-structure verification rather than distributed protocols; proof effort depends on user-supplied invariants and specifications.
    • how much was read: only abstract or first pages read
    • source
    • record id: fcsl-2015
  • Paxos Commit (2006)
    • title: Consensus on Transaction Commit
    • what: Defines Two-Phase Commit and Paxos Commit, with TLA+ specifications of their safety properties, and explains when Paxos Commit makes progress despite coordinator failures.
    • number: Paxos Commit uses 2F+1 coordinators and makes progress when at least F+1 work
    • number: Two-Phase Commit is the F=0 special case
    • limits: The paper’s formal specifications omit liveness assumptions in the appendix; progress depends on the stated failure and majority assumptions.
    • how much was read: only abstract or first pages read
    • source
    • record id: paxos-commit-2006
  • A Formal Analysis of the FIDO UAF Protocol
    • what: —The FIDO protocol suite aims at allowing users to tion specification (WebAuthn) [52] and Client-to-Authenticator log in to remote services with a local and trusted authenticator. Protocol (CTAP) [3]. WebAuthn supports online services to With FIDO, relying services do not need to store user-chosen use FIDO through a standardized web API, whereas CTAP secrets or their hashes, which eliminates a major attack surface supports external devices to work with browsers supporting for e-business.
    • how much was read: only abstract or first pages read
    • source
    • record id: a-formal-analysis-of
  • Applying Formal Methods to Networking: Theory, Techniques, and Applications
    • what: “algebraic path problem” traction from code in sections IV-A1, IV-A2, IV-A3, and (e.g., a classical example of an abstract algebraic path problem IV-A4, respectively. is shortest path routing) [74]. Routing algebra meta-language 9 1) Finite State Machines: The mathematical formalism of that has been used in the study of computability and languages finite state machine (FSM), or finite state automaton, is com- [81].
    • how much was read: only abstract or first pages read
    • source
    • record id: applying-formal-methods-to
  • Architecture of the Formally-Verified Distributed Ledger System InnoChain
    • what: MODELING AND ANALYSIS OF INFORMATION SYSTEMS, VOL. 27, NO. 4, 2020 journal homepage: www.mais-journal.ru THEORY OF COMPUTING Architecture of the Formally-Verified Distributed Ledger System InnoChain L.
    • how much was read: only abstract or first pages read
    • source
    • record id: architecture-of-the-formally
  • Are Users More Willing to Use Formally Verified Password Managers?
    • what: . Formal verification has recently been increasingly used to prove the correctness and security of many applications. It is attractive because it can prove the absence of errors with the same certainty as mathematicians proving theorems.
    • how much was read: only abstract or first pages read
    • source
    • record id: are-users-more-willing
  • Automated Attacker Synthesis for Distributed Protocols
    • what: . Distributed protocols should be robust to both benign malfunction (e.g. packet loss or delay) and attacks (e.g.
    • how much was read: only abstract or first pages read
    • source
    • record id: automated-attacker-synthesis-for
  • Automated Parameterized Verification of CRDTs.
    • what: . Maintaining multiple replicas of data is crucial to achiev- ing scalability, availability and low latency in distributed applications. Conflict-free Replicated Data Types (CRDTs) are important building blocks in this domain because they are designed to operate correctly under the myriad behaviors possible in a weakly-consistent distributed setting.
    • how much was read: only abstract or first pages read
    • source
    • record id: automated-parameterized-verification-of
  • Automated Verification of RPC Stub Code.
    • what: Formal verification has been successfully applied to provide strong correctness guarantees of software systems, but its application to large code bases remains an open challenge. The technique of component-based software devel- opment, traditionally employed for engineering benefit, also aids reasoning about such systems. While there exist compositional verification techniques that lever- age the separation implied by a component system architecture, they implicitly rely on the component platform correctly implementing the isolation and com- position semantics they assume.
    • limits: Read from the saved open PDF; this record uses the abstract/opening section and preserves the exact extracted quote below.
    • how much was read: only abstract or first pages read
    • source
    • record id: automated-verification-of-rpc
  • ’Cause I’m strong enough: reasoning about consistency choices in distributed systems.
    • what: use. Ideally, we would like replicated databases to provide strong Large-scale distributed systems often rely on replicated databases consistency, i.e., to behave as if a single centralised node handles that allow a programmer to request different data consistency guar- all operations. However, achieving this ideal usually requires syn- antees for different operations, and thereby control their perfor- chronisation among replicas, which slows down the database and mance.
    • how much was read: only abstract or first pages read
    • source
    • record id: cause-i-m-strong
  • Code-Level Safety Verification for Automated Driving: A Case Study.
    • what: . The formal safety analysis of automated driving vehicles poses unique challenges due to their dynamic operating conditions and signiïŹcant complexity. This paper presents a case study of applying for- mal safety veriïŹcation to adaptive cruise controllers.
    • how much was read: only abstract or first pages read
    • source
    • record id: code-level-safety-verification
  • Continuous Formal Verification of Amazon s2n.
    • what: . We describe formal verification of s2n, the open source TLS implementation used in numerous Amazon services. A key aspect of this proof infrastructure is continuous checking, to ensure that properties remain proven during the lifetime of the software.
    • how much was read: only abstract or first pages read
    • source
    • record id: continuous-formal-verification-of
  • Deductive Verification of Unmodified Linux Kernel Library Functions
    • what: . This paper presents results from the development and evalu- ation of a deductive verification benchmark consisting of 26 unmodified Linux kernel library functions implementing conventional memory and string operations. The formal contract of the functions was extracted from their source code and was represented in the form of preconditions and postconditions.
    • how much was read: only abstract or first pages read
    • source
    • record id: deductive-verification-of-unmodified
  • DY Fuzzing: Formal Dolev-Yao Models Meet Cryptographic Protocol Fuzz Testing
    • what: — Critical and widely used cryptographic protocols corresponding class of logical attacks [11]. The DY attacker have repeatedly been found to contain flaws in their design and is an active network attacker who treats exchanged messages their implementation. A prominent class of such vulnerabilities as formal terms (in a term algebra): this representation is logical attacks, e.g.
    • how much was read: only abstract or first pages read
    • source
    • record id: dy-fuzzing-formal-dolev
  • Formal Reasoning About the Security of Amazon Web Services.
    • what: . We report on the development and use of formal veriïŹca- tion tools within Amazon Web Services (AWS) to increase the secu- rity assurance of its cloud infrastructure and to help customers secure themselves. We also discuss some remaining challenges that could inspire future research in the community.
    • how much was read: only abstract or first pages read
    • source
    • record id: formal-reasoning-about-the
  • Formal Verification and Validation of ERTMS Industrial Railway Train Spacing System.
    • what: . Formal verification and validation is a fundamental step for the certifi- cation of railways critical systems. Many railways safety standards (e.g.
    • how much was read: only abstract or first pages read
    • source
    • record id: formal-verification-and-validation
  • Formal Verification of a Vehicle-to-Vehicle (V2V) Messaging System.
    • what: . Vehicle-to-Vehicle (V2V) communications is a “connected vehicles” standard that will likely be mandated in the U.S. within the coming decade.
    • how much was read: only abstract or first pages read
    • source
    • record id: formal-verification-of-a
  • Integrated Environment for Verifying and Running Distributed Components
    • what: . This paper targets the generation of distributed applica- tions with safety guarantees. The proposed approach starts from graph- ical speciïŹcation formalisms allowing the architectural and behavioral description of component systems.
    • how much was read: only abstract or first pages read
    • source
    • record id: integrated-environment-for-verifying
  • Integrating Formal Schedulability Analysis into a Verified OS Kernel.
    • what: . Formal veriïŹcation of real-time systems is attractive because these systems often perform critical operations. Unlike non real-time sys- tems, latency and response time guarantees are of critical importance in this setting, as much as functional correctness.
    • how much was read: only abstract or first pages read
    • source
    • record id: integrating-formal-schedulability-analysis
  • Leapfrog: certified equivalence for protocol parsers.
    • what: June 13–17, 2022, San Diego, CA, USA. ACM, New York, NY, USA, We present Leapfrog, a Coq-based framework for verifying 21 pages. https://doi.org/10.1145/3519939.3523715 equivalence of network protocol parsers.
    • how much was read: only abstract or first pages read
    • source
    • record id: leapfrog-certified-equivalence-for
  • Mechanising blockchain consensus
    • what: the previous state of the node or the entire network (we We present the first formalisation of a blockchain-based intentionally leave out the details of what can go into distributed consensus protocol with a proof of its consis- a transaction, as they are application-specific); a node tency mechanised in an interactive proof assistant. can also (b) create and broadcast a block that contains Our development includes a reference mechanisation the encoding of a certain vector of transactions, cre- of the block forest data structure, necessary for imple- ated locally or received via messages of type (a) from menting provably correct per-node protocol logic. We other nodes.
    • limits: Abstract-level reading from openly available PDF; detailed limitations require full paper review.
    • how much was read: only abstract or first pages read
    • source
    • record id: mechanising-blockchain-consensus
  • Modeling and Verification of a Dual Chamber Implantable Pacemaker.
    • what: . The design and implementation of software for medical de- vices is challenging due to their rapidly increasing functionality and the tight coupling of computation, control, and communication. The safety- critical nature and the lack of existing industry standards for veriïŹcation, make this an ideal domain for exploring applications of formal modeling and analysis.
    • how much was read: only abstract or first pages read
    • source
    • record id: modeling-and-verification-of
  • nekton: A Linearizability Proof Checker
    • what: . nekton is a new tool for checking linearizability proofs of highly complex concurrent search structures. The tool’s unique features are its paramet- ric heap abstraction based on separation logic and the flow framework, and its support for hindsight arguments about future-dependent linearization points.
    • how much was read: only abstract or first pages read
    • source
    • record id: nekton-a-linearizability-proof
  • On the Industrial Uptake of Formal Methods in the Railway Domain
    • what: . The railway sector has seen a large number of successful ap- plications of formal methods and tools. However, up-to-date, structured information about the industrial usage and needs related to formal tools in railways is limited.
    • limits: Abstract-level reading from openly available PDF; detailed limitations require full paper review.
    • how much was read: only abstract or first pages read
    • source
    • record id: on-the-industrial-uptake
  • Prove your Colorings: Formal Verification of Cache Coloring of Bao Hypervisor
    • what: . Hypervisors allow sharing of computing resources between applications—possibly of various levels of criticality—that makes them increasingly relevant for modern embedded systems. In this context, memory isolation properties (including low-level cache isolation) are es- sential to guarantee.
    • how much was read: only abstract or first pages read
    • source
    • record id: prove-your-colorings-formal
  • Refinement-Based Specification and Security Analysis of Separation Kernels
    • what: —Assurance of information-flow security by formal methods is mandated in security certification of separation kernels. As an industrial standard for improving safety, ARINC 653 has been complied with by mainstream separation kernels. Due to the new trend of integrating safe and secure functionalities into one separation kernel, security analysis of ARINC 653 as well as a formal specification with security proofs are thus significant for the development and certification of ARINC 653 compliant Separation Kernels (ARINC SKs).
    • how much was read: only abstract or first pages read
    • source
    • record id: refinement-based-specification-and
  • Semantics, Specification, and Bounded Verification of Concurrent Libraries in Replicated Systems.
    • what: . Geo-replicated systems provide a number of desirable prop- erties such as globally low latency, high availability, scalability, and built- in fault tolerance. Unfortunately, programming correct applications on top of such systems has proven to be very challenging, in large part because of the weak consistency guarantees they oïŹ€er.
    • how much was read: only abstract or first pages read
    • source
    • record id: semantics-specification-and-bounded
  • Simpler Specifications and Easier Proofs of Distributed Algorithms Using History Variables
    • what: This paper studies specifications and proofs of distributed algorithms when only message history variables are used, using the Basic Paxos and Multi-Paxos algorithms for distributed consensus as precise case studies. We show that not using and main- taining other state variables yields simpler specifications that are more declarative and easier to understand. It also allows easier proofs to be developed by needing fewer invariants and facilitating proof derivations.
    • limits: Abstract-level reading from openly available PDF; detailed limitations require full paper review.
    • how much was read: only abstract or first pages read
    • source
    • record id: simpler-specifications-and-easier
  • The EMV Standard: Break, Fix, Verify
    • what: —EMV is the international protocol standard for ca. 600,000 Euros [11]. The underlying flaw of Murdoch et smartcard payment and is used in over 9 billion cards worldwide.
    • how much was read: only abstract or first pages read
    • source
    • record id: the-emv-standard-break
  • The mCRL2 Toolset for Analysing Concurrent Systems - Improvements in Expressivity and Usability.
    • what: . Reasoning about the correctness of parallel and distributed systems requires automated tools. By now, the mCRL2 toolset and lan- guage have been developed over a course of more than ïŹfteen years.
    • how much was read: only abstract or first pages read
    • source
    • record id: the-mcrl2-toolset-for
  • Using Flow Specifications of Parameterized Cache Coherence Protocols for Verifying Deadlock Freedom
    • what: . We consider the problem of verifying deadlock freedom for symmet- ric cache coherence protocols. While there are multiple definitions of deadlock in the literature, we focus on a specific form of deadlock which is useful for the cache coherence protocol domain and consistent with the internal definition of deadlock in the Murphi model checker: we refer to this deadlock as a system- wide deadlock (s-deadlock).
    • limits: Abstract-level reading from openly available PDF; detailed limitations require full paper review.
    • how much was read: only abstract or first pages read
    • source
    • record id: using-flow-specifications-of
  • Verification of a lazy cache coherence protocol against a weak memory model.
    • what: —In this paper we verify a modern lazy cache coher- synchronisation boundaries. In these protocols, shared lines are ence protocol, TSO-CC, against the memory consistency model self-invalidated on synchronisation boundaries and therefore arXiv:1705.08262v1 [cs.LO] 18 May 2017 it was designed for, TSO. We achieve this by first showing a no longer require a (poorly scaling) sharing vector.
    • how much was read: only abstract or first pages read
    • source
    • record id: verification-of-a-lazy
  • Verification of an alternating bit protocol by means of process algebra protocol
    • what: VERIFICATION OF AN ALTERNATING BIT PROTOC~. BY MEANS OF PROCESS AtGEBRA J , A , BERGSTRA, J,W, KLOP Centre for Mathematics and Cemputer Science P.O.Box 4079, 1009 AB Amsterdam, The Netherlands We verify a simple verslon o? the alternating bit protocol in the system ACP~ (Algebra of Communicating Processes with silent actions) augmented with Koomenls falr abstraction rule.
    • limits: Abstract-level reading from openly available PDF; detailed limitations require full paper review.
    • how much was read: only abstract or first pages read
    • source
    • record id: verification-of-an-alternating
  • Verus verified node replication
    • title: Verified Node-Replication Crate
    • what: The repository contains a Verus port of IronSync node-replication proofs and reports verification results and benchmark comparisons with unverified Rust and Dafny implementations.
    • number: 254 verified, 0 errors (README status)
    • limits: README status is self-reported and was not rerun.
    • how much was read: only abstract or first pages read
    • source
    • record id: verus-verified-node-replication
  • AWS ARG decade post (2026)
    • title: A decade of mathematical certainty: Reflections on the Automated Reasoning Group
    • what: Lists AWS’s production verification work. Describes Kiro’s requirements checks and its enforcement of agent policies.
    • limits: Does not name the verified components, the properties, the sizes, the models or the success rates.
    • how much was read: reading depth not recorded
    • source; notes: AWS: production proofs exist; published accounts do not attribute them
    • record id: aws-arg-decade-post-2026
  • Isolation levels for free (2026)
    • title: Verifying Isolation Levels of Database Implementations for Free Using Separation Logic
    • what: The paper proves that specs written in separation logic at the implementation level imply transactional consistency models that are defined independently. This holds for all executions of the program.
    • limits: It bridges the meanings of specs. It is not evidence that a new production database is verified.
    • how much was read: reading depth not recorded
    • source; notes: Verifying Isolation Levels of Database Implementations for Free Using
    • record id: isolation-levels-for-free-2026
  • Nitro Isabelle post (2026)
    • title: Isabelle/HOL: The proof assistant behind the Nitro Isolation Engine
    • what: Background on how Isabelle/HOL is used for foundational proofs about the Nitro Isolation Engine.
    • limits: The review notes found no mention of LLMs or agents in the article body.
    • how much was read: reading depth not recorded
    • source; notes: AWS: production proofs exist; published accounts do not attribute them
    • record id: nitro-isabelle-post-2026
  • Quint race post (2026)
    • title: It Told Me No: How Quint Helped Us Fix a Long-Standing Race Condition
    • what: A Quint model of the OpenHands Runtime API rejected two proposed fixes for duplicate Kubernetes pods. The accepted fix counted terminating pods and waited for them to disappear.
    • limits: It is a case report from the team itself. It leaves open whether the model is too simple to capture another race. It gives no success rate or model version.
    • how much was read: reading depth not recorded
    • source; notes: Quint: production case studies, not a measured proof benchmark
    • record id: quint-race-post-2026
  • Weak isolation (Aneris) (2025)
    • title: Reasoning about Weak Isolation Levels in Separation Logic
    • what: The paper writes transaction specs that do not depend on the implementation, for read-uncommitted, read-committed and snapshot isolation. It proves that known bad histories are prohibited. It verifies an in-memory, single-node MVCC key-value database, accessed over RPC, in OCaml/Aneris.
    • limits: It covers a single node, with no replication or crash recovery. The review did not verify the translator from source to AnerisLang or the runtime.
    • how much was read: reading depth not recorded
    • source; notes: Reasoning about Weak Isolation Levels in Separation Logic
    • record id: weak-isolation-aneris-2025
  • AdoB (2024)
    • title: AdoB: Bridging Benign and Byzantine Consensus with Atomic Distributed Objects
    • what: The authors use Coq to prove safety and progress of a generic consensus object. They also prove that specs written at the network level are refinements of it (they behave as a more detailed version of the object). For GenJolteon, they also prove liveness at the network level. They extract it to runnable OCaml event handlers, using a handwritten shim. For Fast Paxos, they prove only safety and refinement.
    • number: abstract benign AdoB proof under one person-month
    • number: GenJolteon refinement/safety eight person-months; liveness two person-months
    • number: Fast Paxos safety/refinement one person-month
    • number: proof lines 17,000, 2,700, 2,000 (case-study discussion, PDF p.22)
    • limits: This does not verify the production Jolteon or Fast Paxos code. There is no network-level liveness proof for Fast Paxos.
    • how much was read: reading depth not recorded
    • source; notes: AdoB: Bridging Benign and Byzantine Consensus with Atomic Distributed
    • record id: adob-2024
  • Fairneris (2024)
    • title: Verifying Liveness Properties of Distributed Systems via Trace Refinement in Higher-Order Concurrent Separation Logic
    • what: Fairneris extends Aneris/Trillium to reason about progress in distributed systems. It reasons about code for the Stenning sliding-window protocol over a formal semantics resembling UDP. The proof that the implementation matches the model is machine-checked.
    • limits: The Stenning model’s liveness theorem is only a proof on paper. So the transfer of its eventual-progress result to the implementation is not fully machine-checked. No runnable OCaml extraction was established, and the final venue is unknown.
    • how much was read: reading depth not recorded
    • source; notes: Verifying Liveness Properties of Distributed Systems via Trace Refinem
    • record id: fairneris-2024
  • Aneris reliable channels (2023)
    • title: Verifying Reliable Network Components in a Distributed Separation Logic with Dependent Separation Protocols
    • what: The paper specifies the order and contents of messages over a reliable-channel abstraction built on unreliable UDP. It uses dependent protocols, which let each message’s allowed form depend on earlier messages. The authors reuse the channel for RPC and for a leader/follower key-value service.
    • limits: It proves the code does the right thing under the modeled network. It does not claim that a failed peer eventually answers. No audited link from the model to the real runtime is given.
    • how much was read: reading depth not recorded
    • source; notes: Verifying Reliable Network Components in a Distributed Separation Logi
    • record id: aneris-reliable-channels-2023
  • StateLib (2023)
    • title: Modular Verification of State-Based CRDTs in Separation Logic
    • what: A reusable verified library for merging replica states. Each CRDT proof connects its lattice and merge function to the application’s operations. Proves convergence and functional correctness of several example CRDTs.
    • limits: The proof is over AnerisLang. Running on OCaml is an experiment (§4.2), not a verified compiler or runtime. No theorem about delivery or termination.
    • how much was read: reading depth not recorded
    • source; notes: Modular Verification of State-Based CRDTs in Separation Logic
    • record id: statelib-2023
  • ADO (2021)
    • title: Much ADO about Failures: A Fault-Aware Model for Compositional Verification of Strongly Consistent Distributed Systems
    • what: The ADO interface shows chosen failure cases to the user. It does not pretend that each operation either fully succeeds or does nothing. The authors use Coq and CCAL to prove that distributed C implementations (for example Multi-Paxos), and the clients built on them, match their abstract specs. The proofs sit on top of the verified CertiKOS.
    • number: multi-Paxos: 2.6K lines of C and 43.9K lines of functional correctness proofs (§6, PDF p.23)
    • limits: The results say nothing about progress (that the system eventually finishes its work). One example assumes termination. That assumption is not a proof of progress.
    • how much was read: reading depth not recorded
    • source; notes: Much ADO about Failures: A Fault-Aware Model for Compositional Verific
    • record id: ado-2021
  • ReSync (2020)
    • title: Programming at the Edge of Synchrony
    • what: ReSync lets a process receive messages bit by bit within a round. It also lets each protocol set its own policy for moving to the next round. The paper establishes a round-switch abstraction and evaluates runnable consensus implementations.
    • limits: The evaluated applications are not thereby fully proved.
    • how much was read: reading depth not recorded
    • source; notes: Programming at the Edge of Synchrony
    • record id: resync-2020
  • Perennial (2019)
    • title: Verifying concurrent, crash-safe systems with Perennial
    • what: Perennial adds reasoning about crashes and recovery to concurrent separation logic. It separates specs for ordinary calls from specs for recovery, and durable ownership from volatile ownership. Examples are a crash-safe mail system and local replicated disks.
    • limits: It covers replication across local disks only, not a replication protocol over a network.
    • how much was read: reading depth not recorded
    • source; notes: Verifying concurrent, crash-safe systems with Perennial
    • record id: perennial-2019
  • WormSpace (2019)
    • title: WormSpace: A Modular Foundation for Simple, Verifiable Distributed Systems
    • what: Wormspace has a write-once-register API. Clients can reason about immutable agreed values instead of the coordination protocol. Certified concurrent abstraction layers prove that C code refines the API, and links it to the verified CertiKOS.
    • number: 6 person-months core verification (4.5 functional correctness, 1.5 ghost layer) and 5 person-weeks application/linking proofs (§6, PDF p.10)
    • number: 108K verification lines
    • limits: Chain-replication registers and reconfiguration are outside the verified part. There is no availability proof.
    • how much was read: reading depth not recorded
    • source; notes: WormSpace: A Modular Foundation for Simple, Verifiable Distributed Sys
    • record id: wormspace-2019
  • PSync (2016)
    • title: PSync: A Partially Synchronous Language for Fault-Tolerant Distributed Algorithms
    • what: PSync algorithms are written in communication rounds, with stated assumptions about which rounds are good. A Scala runtime runs them. SMT checks the user’s invariants and progress conditions under lockstep round semantics (all nodes advance round by round together). A reduction connects these to partially synchronous executions.
    • number: LastVoting algorithm is 89 lines (Table 2, PDF p.13)
    • limits: The runtime cannot be written in PSync’s round language. So the reduction theorem does not verify every statement of the runtime.
    • how much was read: reading depth not recorded
    • source; notes: PSync: A Partially Synchronous Language for Fault-Tolerant Distributed
    • record id: psync-2016
  • DistAlgo (2012)
    • title: From Clarity to Efficiency for Distributed Algorithms
    • what: DistAlgo lets you write queries over message history directly. It compiles them, and makes them incremental, into efficient Python.
    • limits: It is a paper about a language and its optimization. It gives no machine-checked guarantee of safety or liveness.
    • how much was read: reading depth not recorded
    • source; notes: From Clarity to Efficiency for Distributed Algorithms
    • record id: distalgo-2012
  • Resume Means Resume: A Machine-Checked Conformance Contract for Checkpoint, Interrupt, and Resume Semantics in Workflow Persistence Layers (2026)
    • what: A machine-checked conformance contract for a framework that saves execution state. It covers how a run can be interrupted, survive a crash, and continue.
    • limits: Seen only as a Google Scholar snippet. Not read.
    • how much was read: not read; title and metadata only
    • source
    • record id: resume-means-resume-a-2026
  • Testing LLM-Generated Distributed Protocol Code (2026)
    • what: A framework evaluates LLM-written Two-Phase Commit, Ring Election and Raft. It uses a simulator that injects message loss, delay and duplication. LLMs do well on simple protocols and code completion, struggle on complex consensus, and debug inconsistently.
    • limits: Based on the schedule abstract, through a fetch-tool summary. The review notes have no full text and no numbers.
    • how much was read: not read; title and metadata only
    • source
    • record id: testing-llm-generated-distributed-2026
  • Verifier-supervised fine-tuning for Rust/Verus: vericoding dataset (restricted) (2026)
    • what: A Zenodo record for a training dataset of Rust/Verus verified-code tasks used to fine-tune a code model with the verifier as the supervision signal. Only the record’s metadata could be read: the files are under embargo until 2026-12-31 and the record has no listed files.
    • limits: Blocked: no full text exists and the data is embargoed (‘access_right’: ‘embargoed’, embargo_date 2026-12-31) with the author listed as ‘Anonymous’ (double-blind review). Everything here comes from the record’s description and keywords; content, size, and results are unknown.
    • how much was read: not read; title and metadata only
    • source; notes: Verifier-supervised fine-tuning for Rust/Verus dataset (2026)
    • record id: verifier-supervised-fine-tuning-2026
  • AWS correctness practices (2025)
    • title: Systems Correctness Practices at Amazon Web Services
    • what: The paper was not read. Search summaries say it covers P, model checking, fuzzing, property-based testing, fault injection and simulation, with formal specs used as test oracles (the source of expected answers).
    • limits: Fetching the paper returned HTTP 403. The claims are unverified search summaries.
    • how much was read: not read; title and metadata only
    • source; notes: P02. Systems Correctness Practices at Amazon Web Services
    • record id: aws-correctness-practices-2025
  • Blockchain verification monograph (2025)
    • title: Security analysis and formal verification on blockchain and its applications
    • what: Per its abstract, a monograph that sorts real blockchain correctness and security flaws, and surveys the models, specifications and techniques used to formally verify blockchains.
    • limits: Full text not obtained: publisher PDF is behind a bot-check page (not worked around), no open copy found. Only the publisher abstract from Crossref was read, so nothing about its content beyond the abstract is recorded.
    • how much was read: not read; title and metadata only
    • source; notes: Security analysis and formal verification on blockchain and its applic
    • record id: blockchain-verification-monograph-2025
  • Practical Verification of Distributed Systems: Streamlining Safety Proofs Using Invariant Taxonomies, and Verifying Latency Properties Using Symbolic Latency (2025)
    • what: PhD thesis on proving distributed protocols safe by sorting the needed invariants into types, and on extending verification to end-to-end latency. Full text could not be fetched; this record rests on a search-engine summary of the library page.
    • limits: Full text blocked: the Deep Blue library (deepblue.lib.umich.edu) returned a Cloudflare ‘Just a moment’ challenge to command-line fetches, and I did not try to get around it. Nothing here comes from reading the thesis.
    • how much was read: not read; title and metadata only
    • source; notes: Practical Verification of Distributed Systems (2025)
    • record id: practical-verification-of-distributed-2025
  • AWS formal methods video (2024)
    • title: Formal Methods for Distributed Systems
    • what: AWS video metadata describes a re:Invent session introducing P for modeling and verifying complex distributed protocols and discussing formal methods in design and testing.
    • limits: Only the official video page metadata was read; no transcript or slides were retrieved.
    • how much was read: not read; title and metadata only
    • source
    • record id: aws-formal-methods-video-2024
  • Derecho coordination proof (2024)
    • title: Verifying a C Implementation of Derecho’s Coordination Mechanism Using VST and Coq
    • what: Metadata points to a VST/Coq proof of a C implementation of Derecho’s coordination mechanism.
    • limits: The review notes saw metadata only and did not retrieve the exact theorem. It covers that one mechanism, not the whole Derecho system.
    • how much was read: not read; title and metadata only
    • source; notes: Verifying a C Implementation of Derecho’s Coordination Mechanism Using
    • record id: derecho-coordination-proof-2024
  • Kukovec TU Wien dissertation (2024)
    • title: SMT-driven techniques for verifying distributed systems
    • what: The dissertation develops symbolic-transition abstractions, SMT encodings of TLA+ and type inference to verify distributed algorithms.
    • number: 168 pages
    • limits: Repository metadata/abstract read; linked 1.97 MB PDF not downloaded in this pass.
    • how much was read: not read; title and metadata only
    • source
    • record id: kukovec-tu-wien-dissertation-2024
  • Towards Mechanised Consensus in Isabelle (2024)
    • what: Verifies Bitcoin’s Proof-of-Work consensus in Isabelle/HOL. Proves the common prefix property.
    • limits: Known only from a search-result summary.
    • how much was read: not read; title and metadata only
    • record id: towards-mechanised-consensus-in-2024
  • Counterexample Driven Quantifier Instantiations with Applications to Distributed Protocols (2023)
    • what: An interactive method in Ivy that stops SMT solvers from diverging on quantifier-heavy proofs of distributed protocols, by abstracting functions as relations and refining with counterexamples.
    • limits: Full text not read: the ACM PDF sits behind a bot check, and no open copy was found. Facts here come from the input abstract and a web-search summary.
    • how much was read: not read; title and metadata only
    • source; notes: Counterexample Driven Quantifier Instantiations (2023)
    • record id: counterexample-driven-quantifier-instantiations-2023
  • Performal: Formal Verification of Latency Properties for Distributed Systems (2023)
    • what: This is a search lead from OpenAlex that nobody has read. The notes give only its title, year and DOI.
    • limits: The notes screened it as unreachable. The DOI PDF request returned paywall HTML, and no author copy was exposed. The notes mark it as a priority lead.
    • how much was read: not read; title and metadata only
    • source
    • record id: performal-formal-verification-of-2023
  • Proving Correctness of Parallel Implementations of Transition System Specifications (2023)
    • what: Listed as an unread search lead from OpenAlex. The notes give only its title, year and DOI.
    • limits: Screened as unreachable: the downloaded file could not be extracted.
    • how much was read: not read; title and metadata only
    • source
    • record id: proving-correctness-of-parallel-2023
  • Formal Verification of Liveness Properties in Causal Order Broadcast Systems Using Event-B (2021)
    • what: An unread search lead from OpenAlex. The notes give only its title, year and DOI.
    • limits: Not read. The claims are unverified.
    • how much was read: not read; title and metadata only
    • source
    • record id: formal-verification-of-liveness-2021
  • Formal specification and verification of a broadcasting protocol: a refinement-based approach (2020)
    • what: Listed as an unread search lead from OpenAlex. The notes give only its title, year and DOI.
    • limits: Not read. Claims are unverified.
    • how much was read: not read; title and metadata only
    • source
    • record id: formal-specification-and-verification-2020
  • Formal verification of a consensus algorithm in the Heard-Of model (2009)
    • what: The paper proves a consensus algorithm correct in Isabelle, in the Heard-Of model. The proof is at least five times shorter than a fine-grained Paxos proof.
    • number: proof at least five times shorter than a fine-grained Paxos proof in Isabelle
    • limits: The review notes saw only a search summary and did not open the paper.
    • how much was read: not read; title and metadata only
    • record id: formal-verification-of-a-2009
  • Correctness of a gossip based membership protocol (2005)
    • what: Citation-snowball lead; full text was not retrieved from the attempted open endpoints.
    • limits: Metadata-only: attempted open endpoints returned access-denied or non-PDF HTML; the paper was not read.
    • how much was read: not read; title and metadata only
    • source
    • record id: correctness-of-a-gossip-2005
  • Pang VU thesis (2004)
    • title: Formal Verification of Distributed Systems
    • what: The VU repository record identifies Pang’s 2004 PhD thesis on formal verification of distributed systems and provides a complete-dissertation link.
    • limits: Only repository metadata was read; dissertation PDF was not downloaded.
    • how much was read: not read; title and metadata only
    • source
    • record id: pang-vu-thesis-2004
  • Mao Michigan thesis
    • title: Automating the Verification of Distributed Systems
    • what: The lead title identifies a University of Michigan thesis on automating distributed-system verification. Deep Blue returned Cloudflare challenges for the handle and guessed bitstream and API/OAI retrievals did not expose the thesis, so its contents were not read.
    • limits: Metadata only. The repository was inaccessible in this pass; the title and repository URL are the only source facts recorded.
    • how much was read: not read; title and metadata only
    • source
    • record id: mao-michigan-thesis
  • Schultz Stanford thesis
    • title: Automated and interpretable verification of distributed protocols
    • what: Crossref identifies this as William Schultz’s dissertation on automated and interpretable verification of distributed protocols. The repository landing page redirected to a 403 response during this pass, so the dissertation’s methods and cases were not read.
    • limits: Metadata only. The DOI repository response was HTTP 403, so no abstract or full text was available in this pass.
    • how much was read: not read; title and metadata only
    • source
    • record id: schultz-stanford-thesis

Last edited: