Commit 2390e52
proof(verisimdb): harden V10 scenario to actually exercise concurrency
Replaces the all-pairs-conflict scenario (trivially degenerates to
serial execution; at most 1 ACTIVE txn) with a partial conflict graph:
t1: reads {m1}, writes {m1} -- disjoint from t2
t2: reads {m2}, writes {m2} -- disjoint from t1
t3: reads {m1, m2}, writes {m3} -- conflicts with BOTH t1 and t2
This makes the reachable state graph actually contain states where
two transactions (t1, t2) are simultaneously ACTIVE, so
`NoConcurrentConflict` stops being vacuous and starts doing work.
Verified by a throwaway `NoTwoActive` invariant: TLC produces a
counter-example at depth 3 (t1 begins, t2 begins, both ACTIVE).
All safety invariants (SerializabilitySafe composite) and the
EveryTxnCommits liveness property still hold under this richer
scenario. 33 distinct states (vs 31 under the trivial scenario;
small absolute delta but qualitatively different -- the two extra
states are the genuinely-concurrent (ACTIVE, ACTIVE) configurations).
No config/Justfile/README changes needed; all scenario data is
module-level in the .tla.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>1 parent a301cef commit 2390e52
1 file changed
Lines changed: 16 additions & 12 deletions
Lines changed: 16 additions & 12 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
26 | 26 | | |
27 | 27 | | |
28 | 28 | | |
29 | | - | |
30 | | - | |
31 | | - | |
32 | | - | |
33 | | - | |
34 | | - | |
35 | | - | |
36 | | - | |
37 | | - | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
38 | 42 | | |
39 | 43 | | |
40 | 44 | | |
41 | 45 | | |
42 | 46 | | |
43 | | - | |
44 | | - | |
45 | | - | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
46 | 50 | | |
47 | 51 | | |
48 | 52 | | |
| |||
0 commit comments