Tackling Concurrency Bugs with TLA+
summary
Specifies a bank transfer system with math not code, models it in TLA+ (PlusCal for authoring) and runs the TLC checker from the TLA+ Toolbox to exhaustively explore schedules. The model enumerates combinatorics — 100 initial states and 24 orderings (2,400 behaviors) — finds an interleaving that violates a no‑overdraft invariant, and validates fixes (transactional or architectural) before coding. Also catches real bugs in app installer and deployment models and documents designs compactly.
AI-written summary · about
chapters (13)
- 0:00Introduction
- 0:37Housekeeping Notes
- 2:27Concurrency
- 5:43Tools
- 6:05Unit Tests
- 7:18Static Typing
- 8:15Purity
- 13:35Invariants
- 14:31Coding
- 22:20Demo Itis
- 23:11App Sinker
- 24:50Documentation
- 26:01Finding Bugs
related talks
24mTLA+: Your Secret Weapon Against Concurrency Hell
01h 12mDistributed systems showdown — TLA + vs real code
22meXtreme Modelling in Practice
23mKayfabe: Model-based program testing with TLC
30mModel-based testing with TLA+ and Apalache
14mModel-guided Fuzzing of Distributed Systems
05mLT: Proof Driven Development
37mContracts For Getting More Programs Less Wrong
