diff --git a/README.md b/README.md index 9f4e88c..e82fb6f 100644 --- a/README.md +++ b/README.md @@ -161,12 +161,12 @@ Example of history: ### bank -A Jepsen's checker for bank histories. Option `negative-balances` is always -enabled. +A Jepsen's checker for bank histories. Test simulates a set of bank accounts, one per row, and transfers money -between them at random, ensuring that no account goes negative. Under snapshot -isolation, one can prove that transfers must serialize, and the sum of all +between them at random, ensuring that no account goes negative. +An option `--allow-negative-balances` change this behaviour. +Under snapshot isolation, one can prove that transfers must serialize, and the sum of all accounts is conserved. Meanwhile, read transactions select the current balance of all accounts. Snapshot isolation ensures those reads see a consistent snapshot, which implies the sum of accounts in any read is constant as well. @@ -289,7 +289,7 @@ Example of history: {:type :ok, :f :add, :value [0 2], :process 0, :time 11209256522, :index 5} ``` -Beware, `set` and `set-ful ` have a different computational +Beware, `set` and `set-full` have a different computational complexities. The `set-full` checker is a lot more expensive, but gives you precise bounds on latencies and stability of records over time, whereas `set` assumes a single read at the end of the @@ -298,7 +298,7 @@ test. ### set-full A Jepsen's checker for a set histories. It is a more rigorous set analysis. We -allow `:add` operations which add a single element, and `:reads` which return +allow `:add` operations which add a single element, and `:read` which return all elements present at that time. ```clojure @@ -315,7 +315,7 @@ all elements present at that time. {:type :invoke, :f :add, :value [0 5], :process 0, :time 11786251931, :index 10} ``` -Beware, `set` and `set-ful ` have a different computational +Beware, `set` and `set-full` have a different computational complexities. The `set-full` checker is a lot more expensive, but gives you precise bounds on latencies and stability of records over time, whereas `set` assumes a single read at the end of the