From e1e2d5f08a44701d76190852c72ff3b2655bf25b Mon Sep 17 00:00:00 2001 From: Markus Alexander Kuppe Date: Tue, 20 Oct 2026 06:41:00 -0700 Subject: [PATCH 1/8] DiningPhilosophers: rename the PlusCal spec to DiningPhilosophersPCal This makes room for a pure TLA+ version under the name DiningPhilosophers. The PCal suffix matches EWD998PCal and show521677PCal. APDiningPhilosophers now instantiates DiningPhilosophersPCal. The state space is unchanged. Co-authored-by: Claude Opus 5.5 Signed-off-by: Markus Alexander Kuppe --- .github/workflows/run.sh | 4 ++-- specifications/DiningPhilosophers/APDiningPhilosophers.tla | 4 ++-- .../{DiningPhilosophers.cfg => DiningPhilosophersPCal.cfg} | 0 .../{DiningPhilosophers.tla => DiningPhilosophersPCal.tla} | 2 +- specifications/DiningPhilosophers/manifest.json | 4 ++-- 5 files changed, 7 insertions(+), 7 deletions(-) rename specifications/DiningPhilosophers/{DiningPhilosophers.cfg => DiningPhilosophersPCal.cfg} (100%) rename specifications/DiningPhilosophers/{DiningPhilosophers.tla => DiningPhilosophersPCal.tla} (99%) diff --git a/.github/workflows/run.sh b/.github/workflows/run.sh index c224f5cb..ce746754 100755 --- a/.github/workflows/run.sh +++ b/.github/workflows/run.sh @@ -39,8 +39,8 @@ echo Check MCDieHarder $TLC_COMMAND specifications/DieHard/MCDieHarder || (($? == 12)) ## Expect a safety violation echo Check DieHard $TLC_COMMAND specifications/DieHard/DieHard || (($? == 12)) ## Expect a safety violation -echo Check DiningPhilosophers -$TLC_COMMAND specifications/DiningPhilosophers/DiningPhilosophers +echo Check DiningPhilosophersPCal +$TLC_COMMAND specifications/DiningPhilosophers/DiningPhilosophersPCal echo Check TransitiveClosure $TLC_COMMAND specifications/TransitiveClosure/TransitiveClosure echo Check MCEcho diff --git a/specifications/DiningPhilosophers/APDiningPhilosophers.tla b/specifications/DiningPhilosophers/APDiningPhilosophers.tla index 0f8ac5a7..43161f89 100644 --- a/specifications/DiningPhilosophers/APDiningPhilosophers.tla +++ b/specifications/DiningPhilosophers/APDiningPhilosophers.tla @@ -1,5 +1,5 @@ ---- MODULE APDiningPhilosophers ---- -(* Apalache type annotations for DiningPhilosophers.tla, applied via +(* Apalache type annotations for DiningPhilosophersPCal.tla, applied via INSTANCE so the original spec remains free of tool-specific idiosyncrasies. *) @@ -17,6 +17,6 @@ VARIABLES \* @type: Int -> Bool; hungry -INSTANCE DiningPhilosophers +INSTANCE DiningPhilosophersPCal ==== diff --git a/specifications/DiningPhilosophers/DiningPhilosophers.cfg b/specifications/DiningPhilosophers/DiningPhilosophersPCal.cfg similarity index 100% rename from specifications/DiningPhilosophers/DiningPhilosophers.cfg rename to specifications/DiningPhilosophers/DiningPhilosophersPCal.cfg diff --git a/specifications/DiningPhilosophers/DiningPhilosophers.tla b/specifications/DiningPhilosophers/DiningPhilosophersPCal.tla similarity index 99% rename from specifications/DiningPhilosophers/DiningPhilosophers.tla rename to specifications/DiningPhilosophers/DiningPhilosophersPCal.tla index 2fbce81f..b83538eb 100644 --- a/specifications/DiningPhilosophers/DiningPhilosophers.tla +++ b/specifications/DiningPhilosophers/DiningPhilosophersPCal.tla @@ -1,4 +1,4 @@ ----- MODULE DiningPhilosophers ---- +---- MODULE DiningPhilosophersPCal ---- (* TLA+ / PlusCal implementation of the Dining Philosophers problem. diff --git a/specifications/DiningPhilosophers/manifest.json b/specifications/DiningPhilosophers/manifest.json index f71b9010..eaaa0032 100644 --- a/specifications/DiningPhilosophers/manifest.json +++ b/specifications/DiningPhilosophers/manifest.json @@ -20,13 +20,13 @@ ] }, { - "path": "specifications/DiningPhilosophers/DiningPhilosophers.tla", + "path": "specifications/DiningPhilosophers/DiningPhilosophersPCal.tla", "features": [ "pluscal" ], "models": [ { - "path": "specifications/DiningPhilosophers/DiningPhilosophers.cfg", + "path": "specifications/DiningPhilosophers/DiningPhilosophersPCal.cfg", "runtime": "00:00:01", "mode": "exhaustive search", "result": "success", From ee7a6e3d38cd41c0b3ae55beb48d449869c6059c Mon Sep 17 00:00:00 2001 From: Markus Alexander Kuppe Date: Tue, 20 Oct 2026 06:42:58 -0700 Subject: [PATCH 2/8] DiningPhilosophers: point to the current VS Code extension The alygin.vscode-tlaplus extension has moved to the tlaplus organization and is now published as tlaplus.vscode-ide. Signed-off-by: Markus Alexander Kuppe --- specifications/DiningPhilosophers/DiningPhilosophersPCal.tla | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/specifications/DiningPhilosophers/DiningPhilosophersPCal.tla b/specifications/DiningPhilosophers/DiningPhilosophersPCal.tla index b83538eb..d0caf75b 100644 --- a/specifications/DiningPhilosophers/DiningPhilosophersPCal.tla +++ b/specifications/DiningPhilosophers/DiningPhilosophersPCal.tla @@ -14,7 +14,7 @@ In the Chandy-Misra formulation, philosophers may hand forks directly to each other. I ran this with alygin's TLA+ extension for VSCode: - https://marketplace.visualstudio.com/items?itemName=alygin.vscode-tlaplus + https://marketplace.visualstudio.com/items?itemName=tlaplus.vscode-ide "> TLA+: Parse module" updates the translated TLA+ to match the PlusCal 'algorithm' above. "> TLA+: Check model with TLC" checks the model's correctness. From b9d1c96f2eaf8835465a6931e402675b34ccad40 Mon Sep 17 00:00:00 2001 From: Markus Alexander Kuppe Date: Tue, 20 Oct 2026 09:38:43 -0700 Subject: [PATCH 3/8] DiningPhilosophers: add a pure TLA+ spec with an animation The PlusCal spec fixes one solution in code, so it cannot show why the naive solutions fail. DiningPhilosophers models the forks directly: philosophers take their left and right forks in any order and release both after eating. Strong fairness of each philosopher makes NoStarvation counterexamples show actual starvation. NoDeadlock and NoLivelock tell whether the table as a whole makes progress. The ASSUMEs reject fork layouts in which a fork is outside 1..N, a philosopher's two forks are the same, or a fork is no one's right fork. TLC finds the deadlock where every philosopher holds one fork. DiningPhilosophers_anim draws the table, plates, forks, and philosophers for any N, colored by state, and writes one SVG per state with SVGSerialize. The spec and animation come from Spectacle: https://github.com/will62794/spectacle Co-authored-by: Claude Opus 5.5 Signed-off-by: Markus Alexander Kuppe --- README.md | 2 +- .../DiningPhilosophers/DiningPhilosophers.cfg | 4 + .../DiningPhilosophers/DiningPhilosophers.tla | 86 ++++++++++ .../DiningPhilosophers_anim.cfg | 6 + .../DiningPhilosophers_anim.gif | Bin 0 -> 28577 bytes .../DiningPhilosophers_anim.tla | 149 ++++++++++++++++++ .../DiningPhilosophers/manifest.json | 27 +++- 7 files changed, 272 insertions(+), 2 deletions(-) create mode 100644 specifications/DiningPhilosophers/DiningPhilosophers.cfg create mode 100644 specifications/DiningPhilosophers/DiningPhilosophers.tla create mode 100644 specifications/DiningPhilosophers/DiningPhilosophers_anim.cfg create mode 100644 specifications/DiningPhilosophers/DiningPhilosophers_anim.gif create mode 100644 specifications/DiningPhilosophers/DiningPhilosophers_anim.tla diff --git a/README.md b/README.md index 0e4a22cb..7ad1609d 100644 --- a/README.md +++ b/README.md @@ -33,7 +33,7 @@ Here is a list of specs included in this repository which are validated by the C | [Boyer-Moore Majority Vote](specifications/Majority) | Stephan Merz | ✔ | ✔ | | ✔ | | | [Proof x+x is Even](specifications/sums_even) | Martin Riener | ✔ | ✔ | | ✔ | | | [The N-Queens Puzzle](specifications/N-Queens) | Stephan Merz | ✔ | | ✔ | ✔ | | -| [The Dining Philosophers Problem](specifications/DiningPhilosophers) | Jeff Hemphill | ✔ | | ✔ | ✔ | ✔ | +| [The Dining Philosophers Problem](specifications/DiningPhilosophers) | Jeff Hemphill, Markus Kuppe | ✔ | | (✔) | ✔ | ✔ | | [The Car Talk Puzzle](specifications/CarTalkPuzzle) | Leslie Lamport | ✔ | | | ✔ | | | [The Die Hard Problem](specifications/DieHard) | Leslie Lamport | ✔ | ✔ | | ✔ | ✔ | | [The Prisoners & Switches Puzzle](specifications/Prisoners) | Leslie Lamport | ✔ | | | ✔ | | diff --git a/specifications/DiningPhilosophers/DiningPhilosophers.cfg b/specifications/DiningPhilosophers/DiningPhilosophers.cfg new file mode 100644 index 00000000..c1a8d2d7 --- /dev/null +++ b/specifications/DiningPhilosophers/DiningPhilosophers.cfg @@ -0,0 +1,4 @@ +CONSTANTS N = 5 +SPECIFICATION Spec +INVARIANT TypeOK NoDeadlock +PROPERTY NoLivelock NoStarvation diff --git a/specifications/DiningPhilosophers/DiningPhilosophers.tla b/specifications/DiningPhilosophers/DiningPhilosophers.tla new file mode 100644 index 00000000..263bb3f5 --- /dev/null +++ b/specifications/DiningPhilosophers/DiningPhilosophers.tla @@ -0,0 +1,86 @@ +---------------------------- MODULE DiningPhilosophers ---------------------------- + +EXTENDS Naturals, FiniteSets + +CONSTANT N \* Number of philosophers +ASSUME NIsPosNat == N \in Nat \ {0} + +P == 1..N + +LeftFork(p) == p +RightFork(p) == (p % N) + 1 + +ASSUME ForksDistinct == \A p \in P : RightFork(p) \in P /\ RightFork(p) # LeftFork(p) +ASSUME ForksCovered == {RightFork(p) : p \in P} = P + +VARIABLES philosophers, forks +vars == <> + +TypeOK == + /\ philosophers \in [P -> SUBSET P] + /\ forks \in SUBSET P + +Init == + \* each philosopher starts with no forks + /\ philosophers = [ p \in P |-> {} ] + \* all forks are available + /\ forks = 1..N + +TakeLeft(p) == + /\ LeftFork(p) \in forks + /\ forks' = forks \ {LeftFork(p)} + /\ philosophers' = + [philosophers EXCEPT ![p] = philosophers[p] \cup {LeftFork(p)}] + +TakeRight(p) == + /\ RightFork(p) \in forks + /\ forks' = forks \ {RightFork(p)} + /\ philosophers' = + [philosophers EXCEPT ![p] = philosophers[p] \cup {RightFork(p)}] + +Release(p) == + /\ philosophers[p] = {LeftFork(p), RightFork(p)} + /\ forks' = forks \cup {LeftFork(p), RightFork(p)} + /\ philosophers' = [philosophers EXCEPT ![p] = {}] + +Next == + \E p \in P: + \/ TakeLeft(p) + \/ TakeRight(p) + \/ Release(p) + +Spec == + /\ Init + /\ [][Next]_vars + /\ \A p \in P : + SF_vars(TakeLeft(p) \/ TakeRight(p) \/ Release(p)) + +IsEating(p) == + Cardinality(philosophers[p]) = 2 + +NoDeadlock == + ENABLED Next + +NoLivelock == + []<>(\E p \in P: IsEating(p)) + +NoStarvation == + \A p \in P: []<>IsEating(p) + +----- + +Alias == + LET ThinkHungryEat(p) == + IF IsEating(p) THEN "eating" + ELSE IF Cardinality(philosophers[p]) = 1 THEN "hungry" + ELSE "thinking" IN + [ + philosophers |-> philosophers, + forks |-> forks, + eating |-> [ p \in DOMAIN philosophers |-> ThinkHungryEat(p) ] + ] + +----------------------------------------------------------------------------- + + +===== diff --git a/specifications/DiningPhilosophers/DiningPhilosophers_anim.cfg b/specifications/DiningPhilosophers/DiningPhilosophers_anim.cfg new file mode 100644 index 00000000..1a23796b --- /dev/null +++ b/specifications/DiningPhilosophers/DiningPhilosophers_anim.cfg @@ -0,0 +1,6 @@ +CONSTANT + N = 5 +SPECIFICATION + Spec +ALIAS + AnimAlias \ No newline at end of file diff --git a/specifications/DiningPhilosophers/DiningPhilosophers_anim.gif b/specifications/DiningPhilosophers/DiningPhilosophers_anim.gif new file mode 100644 index 0000000000000000000000000000000000000000..7f9d9d9708497f161dd840c2b46c360deaec14f2 GIT binary patch literal 28577 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 literal 0 HcmV?d00001 diff --git a/specifications/DiningPhilosophers/DiningPhilosophers_anim.tla b/specifications/DiningPhilosophers/DiningPhilosophers_anim.tla new file mode 100644 index 00000000..7dfb34c3 --- /dev/null +++ b/specifications/DiningPhilosophers/DiningPhilosophers_anim.tla @@ -0,0 +1,149 @@ +---- MODULE DiningPhilosophers_anim ---- +EXTENDS TLC, Integers, Sequences, SVG, DiningPhilosophers + +(***************************************************************************) +(* Every seat is drawn once, in the frame of the philosopher at the top of *) +(* the table, and then rotated about the table's center. Philosophers are *) +(* placed counter-clockwise so that, facing the table, LeftFork(p) is at *) +(* p's left hand and RightFork(p) at p's right hand. *) +(***************************************************************************) + +\* Table radius. Plates lie 25 inside the edge and need about 65 between +\* neighbors, so the table grows with N. +R == IF 25 + 11 * N > 80 THEN 25 + 11 * N ELSE 80 + +\* The table's top edge is at y = 70, which all seat coordinates rely on. +Cx == R + 70 +Cy == R + 70 + +\* Angles are in tenths of a degree, in 0..7200 to avoid negative numbers. +SeatAngle(p) == 3600 - (3600 * (p - 1)) \div N +ForkAngle(f) == SeatAngle(f) + 1800 \div N \* Fork f lies between seats f and f-1. + +Deg(t) == ToString(t \div 10) \o "." \o ToString(t % 10) + +RotateAboutCenter(t) == + "rotate(" \o Deg(t) \o " " \o ToString(Cx) \o " " \o ToString(Cy) \o ")" + +\* Undo the rotation of the enclosing seat so that labels stay upright. +Upright(t, x, y) == + "rotate(" \o Deg(7200 - t) \o " " \o ToString(x) \o " " \o ToString(y) \o ")" + +Show(cond, elem) == IF cond THEN <> ELSE <<>> + +Label(x, y, t, str, size, color) == + Text(x, y, str, + ("text-anchor" :> "middle" @@ "font-family" :> "sans-serif" @@ + "font-size" :> ToString(size) @@ "fill" :> color @@ + "transform" :> Upright(t, x, y - size \div 3))) + +ThinkingColor == "#9db4d0" +HungryColor == "#f2a541" +EatingColor == "#5cb85c" + +StateColor(p) == + CASE IsEating(p) -> EatingColor + [] Cardinality(philosophers[p]) = 1 -> HungryColor + [] OTHER -> ThinkingColor + +(***************************************************************************) +(* A fork centered at (x, y), rotated by a degrees. Unrotated, its tines *) +(* point up. *) +(***************************************************************************) +ForkGlyph(x, y, a) == + LET style(w) == ("stroke" :> "#5a5a5a" @@ "stroke-width" :> w @@ + "stroke-linecap" :> "round") + IN Group(<< + Line(0, 2, 0, 14, style("3")), + Line(-4, -2, 4, -2, style("1.5")), + Line(-4, -2, -4, -13, style("1.5")), + Line( 0, -2, 0, -13, style("1.5")), + Line( 4, -2, 4, -13, style("1.5")) + >>, + ("transform" :> "translate(" \o ToString(x) \o " " \o ToString(y) \o + ") rotate(" \o ToString(a) \o ")")) + +Table == + Circle(Cx, Cy, R, ("fill" :> "#deb887" @@ "stroke" :> "#a0764a" @@ + "stroke-width" :> "3")) + +\* A plate in front of philosopher p, with food on it while p eats. +Plate(p) == + Group(<< + Circle(Cx, 95, 15, [fill |-> "white", stroke |-> "#999"]), + Circle(Cx, 95, 10, [fill |-> "none", stroke |-> "#ddd"]) + >> \o + Show(IsEating(p), Circle(Cx, 95, 7, [fill |-> "#e07b39"])), + ("transform" :> RotateAboutCenter(SeatAngle(p)))) + +\* Philosopher p with an arm and a fork for each fork that p holds. +Philosopher(p) == + LET t == SeatAngle(p) + arm(x1, x2) == Line(x1, 52, x2, 62, + ("stroke" :> StateColor(p) @@ "stroke-width" :> "6" @@ + "stroke-linecap" :> "round")) + hand(x) == Circle(x, 61, 4, [fill |-> "#f6d7b0", stroke |-> "#555"]) + left == LeftFork(p) \in philosophers[p] + \* For N = 1, both hands would show the same, only, fork. + right == RightFork(p) \in philosophers[p] /\ RightFork(p) # LeftFork(p) + IN Group( + Show(left, arm(Cx + 10, Cx + 25)) \o + Show(right, arm(Cx - 10, Cx - 25)) \o + << + Rect(Cx - 18, 44, 36, 24, [rx |-> "12", fill |-> StateColor(p), stroke |-> "#555"]), + Circle(Cx, 32, 12, [fill |-> "#f6d7b0", stroke |-> "#555"]), + Label(Cx, 36, t, ToString(p), 12, "#333") + >> \o + \* Held forks point towards the plate. + Show(left, ForkGlyph(Cx + 22, 70, 200)) \o + Show(right, ForkGlyph(Cx - 22, 70, 160)) \o + Show(left, hand(Cx + 25)) \o + Show(right, hand(Cx - 25)), + ("transform" :> RotateAboutCenter(t))) + +\* Fork f on the table; only its number remains while someone holds it. +TableFork(f) == + Group( + Show(f \in forks, ForkGlyph(Cx, 92, 180)) \o + <>, + ("transform" :> RotateAboutCenter(ForkAngle(f)))) + +Legend == + LET x == 2 * Cx + 15 + entry(i, color, str) == + Group(<< + Rect(x, 20 + 22 * i, 14, 14, [rx |-> "4", fill |-> color, stroke |-> "#555"]), + Text(x + 20, 32 + 22 * i, str, + ("font-family" :> "sans-serif" @@ "font-size" :> "11" @@ "fill" :> "#333")) + >>, <<>>) + IN Group(<< + entry(0, ThinkingColor, "thinking"), + entry(1, HungryColor, "hungry (1 fork)"), + entry(2, EatingColor, "eating (2 forks)") + >>, <<>>) + +\* Scale the drawing, in hundredths, to 600 wide, which fits Spectacle's pane. +ViewWidth == 600 +Scale == (100 * ViewWidth) \div (2 * Cx + 130) +ViewHeight == (2 * Cy * Scale) \div 100 + +ScaleStr == + ToString(Scale \div 100) \o "." \o + (IF Scale % 100 < 10 THEN "0" ELSE "") \o ToString(Scale % 100) + +AnimView == + Group(<> \o + [p \in P |-> Plate(p)] \o + [f \in P |-> TableFork(f)] \o + [p \in P |-> Philosopher(p)] \o + <>, + ("transform" :> "scale(" \o ScaleStr \o " " \o ScaleStr \o ")")) + +\* Animation alias for generating SVG files with TLC. +AnimAlias == + [ + philosophers |-> philosophers, forks |-> forks + ] @@ + [ _anim |-> SVGSerialize(SVGDoc(AnimView, 0, 0, ViewWidth, ViewHeight, <<>>), "DiningPhilosophers_anim_", TLCGet("level")) ] + +==== diff --git a/specifications/DiningPhilosophers/manifest.json b/specifications/DiningPhilosophers/manifest.json index eaaa0032..d10a75dd 100644 --- a/specifications/DiningPhilosophers/manifest.json +++ b/specifications/DiningPhilosophers/manifest.json @@ -1,7 +1,8 @@ { "sources": [], "authors": [ - "Jeff Hemphill" + "Jeff Hemphill", + "Markus Kuppe" ], "tags": [ "beginner" @@ -19,6 +20,18 @@ } ] }, + { + "path": "specifications/DiningPhilosophers/DiningPhilosophers.tla", + "features": [], + "models": [ + { + "path": "specifications/DiningPhilosophers/DiningPhilosophers.cfg", + "runtime": "00:00:01", + "mode": "exhaustive search", + "result": "safety failure" + } + ] + }, { "path": "specifications/DiningPhilosophers/DiningPhilosophersPCal.tla", "features": [ @@ -35,6 +48,18 @@ "stateDepth": 29 } ] + }, + { + "path": "specifications/DiningPhilosophers/DiningPhilosophers_anim.tla", + "features": [], + "models": [ + { + "path": "specifications/DiningPhilosophers/DiningPhilosophers_anim.cfg", + "runtime": "00:00:01", + "mode": "exhaustive search", + "result": "deadlock failure" + } + ] } ] } \ No newline at end of file From ced77d1a1432f7131dcc651ffd3f5d9a6b4b1659 Mon Sep 17 00:00:00 2001 From: Markus Alexander Kuppe Date: Mon, 19 Oct 2026 17:57:25 -0700 Subject: [PATCH 4/8] DiningPhilosophers: take the left fork before the right fork TakeRight had no ordering guard, so philosophers could grab either fork first. Require the left fork to be held before taking the right one, which models the naive left-then-right algorithm. TLC finds the classic deadlock where every philosopher holds only the left fork. Co-authored-by: Claude Opus 5.5 Signed-off-by: Markus Alexander Kuppe --- .../DiningPhilosophers/DiningPhilosophers.tla | 1 + .../DiningPhilosophers_anim.gif | Bin 28577 -> 28487 bytes 2 files changed, 1 insertion(+) diff --git a/specifications/DiningPhilosophers/DiningPhilosophers.tla b/specifications/DiningPhilosophers/DiningPhilosophers.tla index 263bb3f5..cb26d800 100644 --- a/specifications/DiningPhilosophers/DiningPhilosophers.tla +++ b/specifications/DiningPhilosophers/DiningPhilosophers.tla @@ -33,6 +33,7 @@ TakeLeft(p) == [philosophers EXCEPT ![p] = philosophers[p] \cup {LeftFork(p)}] TakeRight(p) == + /\ LeftFork(p) \in philosophers[p] /\ RightFork(p) \in forks /\ forks' = forks \ {RightFork(p)} /\ philosophers' = diff --git a/specifications/DiningPhilosophers/DiningPhilosophers_anim.gif b/specifications/DiningPhilosophers/DiningPhilosophers_anim.gif index 7f9d9d9708497f161dd840c2b46c360deaec14f2..b6a0d35ca1f1d9599f0ce718665ff6f2268fabd2 100644 GIT binary patch delta 19566 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 YKT%qSwGk>%vuIZ|69Of~vz}@L1%zKv00000 delta 19685 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 z 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 From 91c897af8357bbf6a3a670f217b38ecfd583c4e1 Mon Sep 17 00:00:00 2001 From: Markus Alexander Kuppe Date: Mon, 19 Oct 2026 18:12:03 -0700 Subject: [PATCH 5/8] DiningPhilosophers: put the left fork back when the right fork is taken The naive left-then-right algorithm deadlocks once every philosopher holds a left fork. Let a philosopher who cannot get the right fork put the left fork back and retry. This removes the deadlock, but TLC still finds NoStarvation violations: philosophers can livelock by taking and returning their left forks, or starve while a neighbor keeps eating. Co-authored-by: Claude Opus 5.5 Signed-off-by: Markus Alexander Kuppe --- .../DiningPhilosophers/DiningPhilosophers.tla | 9 ++++++++- .../DiningPhilosophers_anim.gif | Bin 28487 -> 76564 bytes .../DiningPhilosophers/manifest.json | 7 +++++-- 3 files changed, 13 insertions(+), 3 deletions(-) diff --git a/specifications/DiningPhilosophers/DiningPhilosophers.tla b/specifications/DiningPhilosophers/DiningPhilosophers.tla index cb26d800..7af434cf 100644 --- a/specifications/DiningPhilosophers/DiningPhilosophers.tla +++ b/specifications/DiningPhilosophers/DiningPhilosophers.tla @@ -39,6 +39,12 @@ TakeRight(p) == /\ philosophers' = [philosophers EXCEPT ![p] = philosophers[p] \cup {RightFork(p)}] +PutBack(p) == + /\ philosophers[p] = {LeftFork(p)} + /\ RightFork(p) \notin forks + /\ forks' = forks \cup {LeftFork(p)} + /\ philosophers' = [philosophers EXCEPT ![p] = {}] + Release(p) == /\ philosophers[p] = {LeftFork(p), RightFork(p)} /\ forks' = forks \cup {LeftFork(p), RightFork(p)} @@ -48,13 +54,14 @@ Next == \E p \in P: \/ TakeLeft(p) \/ TakeRight(p) + \/ PutBack(p) \/ Release(p) Spec == /\ Init /\ [][Next]_vars /\ \A p \in P : - SF_vars(TakeLeft(p) \/ TakeRight(p) \/ Release(p)) + SF_vars(TakeLeft(p) \/ TakeRight(p) \/ PutBack(p) \/ Release(p)) IsEating(p) == Cardinality(philosophers[p]) = 2 diff --git a/specifications/DiningPhilosophers/DiningPhilosophers_anim.gif b/specifications/DiningPhilosophers/DiningPhilosophers_anim.gif index b6a0d35ca1f1d9599f0ce718665ff6f2268fabd2..2c00bc2130f5054832e184d5e6a75e6279f2b5c7 100644 GIT binary patch literal 76564 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 delta 26763 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 Date: Mon, 19 Oct 2026 18:26:28 -0700 Subject: [PATCH 6/8] DiningPhilosophers: take both forks at once Philosophers who put the left fork back can livelock. Replace TakeLeft, TakeRight, and PutBack with TakeBoth, which takes both forks in one step and only when both are free (Dijkstra's solution, as in Tanenbaum's monitor version). No philosopher ever holds a single fork, so there is no deadlock or livelock. TLC still finds a NoStarvation violation: a philosopher's two neighbors can eat in overlapping turns, so the philosopher's forks are never both free, and not even strong fairness forces it to eat. Co-authored-by: Claude Opus 5.5 Signed-off-by: Markus Alexander Kuppe --- .../DiningPhilosophers/DiningPhilosophers.tla | 28 ++++-------------- .../DiningPhilosophers_anim.gif | Bin 76564 -> 87441 bytes .../DiningPhilosophers/manifest.json | 6 ++-- 3 files changed, 9 insertions(+), 25 deletions(-) diff --git a/specifications/DiningPhilosophers/DiningPhilosophers.tla b/specifications/DiningPhilosophers/DiningPhilosophers.tla index 7af434cf..3b3aaee6 100644 --- a/specifications/DiningPhilosophers/DiningPhilosophers.tla +++ b/specifications/DiningPhilosophers/DiningPhilosophers.tla @@ -26,24 +26,10 @@ Init == \* all forks are available /\ forks = 1..N -TakeLeft(p) == - /\ LeftFork(p) \in forks - /\ forks' = forks \ {LeftFork(p)} - /\ philosophers' = - [philosophers EXCEPT ![p] = philosophers[p] \cup {LeftFork(p)}] - -TakeRight(p) == - /\ LeftFork(p) \in philosophers[p] - /\ RightFork(p) \in forks - /\ forks' = forks \ {RightFork(p)} - /\ philosophers' = - [philosophers EXCEPT ![p] = philosophers[p] \cup {RightFork(p)}] - -PutBack(p) == - /\ philosophers[p] = {LeftFork(p)} - /\ RightFork(p) \notin forks - /\ forks' = forks \cup {LeftFork(p)} - /\ philosophers' = [philosophers EXCEPT ![p] = {}] +TakeBoth(p) == + /\ {LeftFork(p), RightFork(p)} \subseteq forks + /\ forks' = forks \ {LeftFork(p), RightFork(p)} + /\ philosophers' = [philosophers EXCEPT ![p] = {LeftFork(p), RightFork(p)}] Release(p) == /\ philosophers[p] = {LeftFork(p), RightFork(p)} @@ -52,16 +38,14 @@ Release(p) == Next == \E p \in P: - \/ TakeLeft(p) - \/ TakeRight(p) - \/ PutBack(p) + \/ TakeBoth(p) \/ Release(p) Spec == /\ Init /\ [][Next]_vars /\ \A p \in P : - SF_vars(TakeLeft(p) \/ TakeRight(p) \/ PutBack(p) \/ Release(p)) + SF_vars(TakeBoth(p) \/ Release(p)) IsEating(p) == Cardinality(philosophers[p]) = 2 diff --git a/specifications/DiningPhilosophers/DiningPhilosophers_anim.gif b/specifications/DiningPhilosophers/DiningPhilosophers_anim.gif index 2c00bc2130f5054832e184d5e6a75e6279f2b5c7..e77d7bdefa4577a2e53f42d457f1e9a12f6047a6 100644 GIT binary patch literal 87441 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 literal 76564 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 diff --git a/specifications/DiningPhilosophers/manifest.json b/specifications/DiningPhilosophers/manifest.json index 9ce2e8a8..2de6ec31 100644 --- a/specifications/DiningPhilosophers/manifest.json +++ b/specifications/DiningPhilosophers/manifest.json @@ -58,9 +58,9 @@ "runtime": "00:00:01", "mode": "exhaustive search", "result": "success", - "distinctStates": 82, - "totalStates": 351, - "stateDepth": 6 + "distinctStates": 11, + "totalStates": 31, + "stateDepth": 3 } ] } From 99a39d0dab8167d2053efcb9e3c690ab7e4abced Mon Sep 17 00:00:00 2001 From: Markus Alexander Kuppe Date: Mon, 19 Oct 2026 20:32:34 -0700 Subject: [PATCH 7/8] DiningPhilosophers: let philosopher N take its right fork first Taking both forks at once lets a philosopher's neighbors starve it. Go back to TakeLeft and TakeRight and fix the order in which a philosopher takes its forks: all but philosopher N take the left fork first, and N takes the right fork first. Each philosopher thus takes the lower-numbered of its two forks first (Dijkstra's resource hierarchy), which breaks the circular wait. TLC finds no violation of NoDeadlock, NoLivelock, or NoStarvation: under strong fairness, a philosopher who holds its first fork eventually gets the second, because that fork becomes free again and again. Co-authored-by: Claude Opus 5.5 Signed-off-by: Markus Alexander Kuppe --- .../DiningPhilosophers/DiningPhilosophers.tla | 24 +++++++++++++----- .../DiningPhilosophers_anim.gif | Bin 87441 -> 60149 bytes .../DiningPhilosophers/manifest.json | 11 +++++--- 3 files changed, 25 insertions(+), 10 deletions(-) diff --git a/specifications/DiningPhilosophers/DiningPhilosophers.tla b/specifications/DiningPhilosophers/DiningPhilosophers.tla index 3b3aaee6..76463d8b 100644 --- a/specifications/DiningPhilosophers/DiningPhilosophers.tla +++ b/specifications/DiningPhilosophers/DiningPhilosophers.tla @@ -26,10 +26,21 @@ Init == \* all forks are available /\ forks = 1..N -TakeBoth(p) == - /\ {LeftFork(p), RightFork(p)} \subseteq forks - /\ forks' = forks \ {LeftFork(p), RightFork(p)} - /\ philosophers' = [philosophers EXCEPT ![p] = {LeftFork(p), RightFork(p)}] +TakeLeft(p) == + \* Philosopher N grabs the right fork first. + /\ p = N => philosophers[p] = {RightFork(p)} + /\ LeftFork(p) \in forks + /\ forks' = forks \ {LeftFork(p)} + /\ philosophers' = + [philosophers EXCEPT ![p] = philosophers[p] \cup {LeftFork(p)}] + +TakeRight(p) == + \* All other philosophers grab the left fork first. + /\ p # N => philosophers[p] = {LeftFork(p)} + /\ RightFork(p) \in forks + /\ forks' = forks \ {RightFork(p)} + /\ philosophers' = + [philosophers EXCEPT ![p] = philosophers[p] \cup {RightFork(p)}] Release(p) == /\ philosophers[p] = {LeftFork(p), RightFork(p)} @@ -38,14 +49,15 @@ Release(p) == Next == \E p \in P: - \/ TakeBoth(p) + \/ TakeLeft(p) + \/ TakeRight(p) \/ Release(p) Spec == /\ Init /\ [][Next]_vars /\ \A p \in P : - SF_vars(TakeBoth(p) \/ Release(p)) + SF_vars(TakeLeft(p) \/ TakeRight(p) \/ Release(p)) IsEating(p) == Cardinality(philosophers[p]) = 2 diff --git a/specifications/DiningPhilosophers/DiningPhilosophers_anim.gif b/specifications/DiningPhilosophers/DiningPhilosophers_anim.gif index e77d7bdefa4577a2e53f42d457f1e9a12f6047a6..d88a0f83cfd939b23e1fc82d2135e67aa376d882 100644 GIT binary patch literal 60149 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 diff --git a/specifications/DiningPhilosophers/manifest.json b/specifications/DiningPhilosophers/manifest.json index 2de6ec31..52ca0003 100644 --- a/specifications/DiningPhilosophers/manifest.json +++ b/specifications/DiningPhilosophers/manifest.json @@ -28,7 +28,10 @@ "path": "specifications/DiningPhilosophers/DiningPhilosophers.cfg", "runtime": "00:00:01", "mode": "exhaustive search", - "result": "liveness failure" + "result": "success", + "distinctStates": 70, + "totalStates": 220, + "stateDepth": 6 } ] }, @@ -58,9 +61,9 @@ "runtime": "00:00:01", "mode": "exhaustive search", "result": "success", - "distinctStates": 11, - "totalStates": 31, - "stateDepth": 3 + "distinctStates": 70, + "totalStates": 220, + "stateDepth": 6 } ] } From 925e668d374da2877f772d100d690bb01808f2a7 Mon Sep 17 00:00:00 2001 From: Markus Alexander Kuppe Date: Tue, 20 Oct 2026 06:48:11 -0700 Subject: [PATCH 8/8] DiningPhilosophers: prove starvation freedom with TLAPS TLC checks NoStarvation only for N = 5. The proof shows Spec => NoStarvation for every N. Forks are freed infinitely often, by induction from the highest fork down: a hungry philosopher holds its low fork and waits only for a higher one. Strong fairness then lets each philosopher take both forks. Check with: tlapm --strict DiningPhilosophers_proof.tla Co-authored-by: Claude Opus 5.5 Signed-off-by: Markus Alexander Kuppe --- README.md | 2 +- .../DiningPhilosophers/DiningPhilosophers.tla | 5 + .../DiningPhilosophers_proof.tla | 705 ++++++++++++++++++ .../DiningPhilosophers/manifest.json | 8 + 4 files changed, 719 insertions(+), 1 deletion(-) create mode 100644 specifications/DiningPhilosophers/DiningPhilosophers_proof.tla diff --git a/README.md b/README.md index 7ad1609d..e19baadc 100644 --- a/README.md +++ b/README.md @@ -33,7 +33,7 @@ Here is a list of specs included in this repository which are validated by the C | [Boyer-Moore Majority Vote](specifications/Majority) | Stephan Merz | ✔ | ✔ | | ✔ | | | [Proof x+x is Even](specifications/sums_even) | Martin Riener | ✔ | ✔ | | ✔ | | | [The N-Queens Puzzle](specifications/N-Queens) | Stephan Merz | ✔ | | ✔ | ✔ | | -| [The Dining Philosophers Problem](specifications/DiningPhilosophers) | Jeff Hemphill, Markus Kuppe | ✔ | | (✔) | ✔ | ✔ | +| [The Dining Philosophers Problem](specifications/DiningPhilosophers) | Jeff Hemphill, Markus Kuppe | ✔ | ✔ | (✔) | ✔ | ✔ | | [The Car Talk Puzzle](specifications/CarTalkPuzzle) | Leslie Lamport | ✔ | | | ✔ | | | [The Die Hard Problem](specifications/DieHard) | Leslie Lamport | ✔ | ✔ | | ✔ | ✔ | | [The Prisoners & Switches Puzzle](specifications/Prisoners) | Leslie Lamport | ✔ | | | ✔ | | diff --git a/specifications/DiningPhilosophers/DiningPhilosophers.tla b/specifications/DiningPhilosophers/DiningPhilosophers.tla index 76463d8b..32bd01b3 100644 --- a/specifications/DiningPhilosophers/DiningPhilosophers.tla +++ b/specifications/DiningPhilosophers/DiningPhilosophers.tla @@ -71,6 +71,11 @@ NoLivelock == NoStarvation == \A p \in P: []<>IsEating(p) +\* Proved in DiningPhilosophers_proof. +THEOREM DeadlockFreedom == Spec => []NoDeadlock +THEOREM LivelockFreedom == Spec => NoLivelock +THEOREM StarvationFreedom == Spec => NoStarvation + ----- Alias == diff --git a/specifications/DiningPhilosophers/DiningPhilosophers_proof.tla b/specifications/DiningPhilosophers/DiningPhilosophers_proof.tla new file mode 100644 index 00000000..0286b8ec --- /dev/null +++ b/specifications/DiningPhilosophers/DiningPhilosophers_proof.tla @@ -0,0 +1,705 @@ +------------------------- MODULE DiningPhilosophers_proof ------------------------- +(***************************************************************************) +(* Proof that the solution in DiningPhilosophers is starvation free: every *) +(* philosopher eats infinitely often. *) +(* *) +(* All philosophers but N take their left fork first, and N takes its *) +(* right fork first. Either way, each philosopher first takes the lower- *) +(* numbered of its two forks (Dijkstra's resource hierarchy). *) +(* *) +(* A philosopher who holds fork f either eats, and then releases f, or *) +(* holds f as its low fork and waits for its high fork, whose number is *) +(* larger. By induction from the largest fork down, every fork is free *) +(* infinitely often, so strong fairness lets every philosopher take its *) +(* low fork, then its high fork, and eat. *) +(***************************************************************************) +EXTENDS DiningPhilosophers, TLAPS, NaturalsInduction, FiniteSetTheorems + +----------------------------------------------------------------------------- +(***************************************************************************) +(* Fork numbering. *) +(***************************************************************************) + +LEMMA NAtLeastTwo == N \in Nat /\ N >= 2 +<1>1. N \in Nat /\ N # 0 + BY NIsPosNat +<1>2. N # 1 + <2>. SUFFICES ASSUME N = 1 PROVE FALSE + OBVIOUS + <2>1. 1 \in P + BY <1>1 DEF P + <2>2. RightFork(1) # LeftFork(1) + BY <2>1, ForksDistinct + <2>. QED + BY <2>2 DEF RightFork, LeftFork +<1>. QED + BY <1>1, <1>2 + +LEMMA RightForkDef == + \A q \in P : RightFork(q) = IF q = N THEN 1 ELSE q + 1 +BY NAtLeastTwo DEF P, RightFork + +\* The fork that a philosopher takes first, and the one it takes second. +LowFork(p) == IF p = N THEN RightFork(p) ELSE LeftFork(p) +HighFork(p) == IF p = N THEN LeftFork(p) ELSE RightFork(p) + +LEMMA ForkFacts == + \A q \in P : + /\ LowFork(q) \in P + /\ HighFork(q) \in P + /\ LowFork(q) < HighFork(q) + /\ {LowFork(q), HighFork(q)} = {LeftFork(q), RightFork(q)} +BY NAtLeastTwo, RightForkDef DEF P, LowFork, HighFork, LeftFork + +\* The philosopher whose right fork is f. +Pred(f) == IF f = 1 THEN N ELSE f - 1 + +LEMMA PredInP == \A f \in P : Pred(f) \in P +BY NAtLeastTwo DEF P, Pred + +\* Fork f is only ever held by philosopher f or philosopher Pred(f). +LEMMA Holders == + \A f, q \in P : f \in {LowFork(q), HighFork(q)} => q = f \/ q = Pred(f) +BY NAtLeastTwo, ForkFacts, RightForkDef DEF P, LeftFork, Pred + +----------------------------------------------------------------------------- +(***************************************************************************) +(* Inductive invariant. *) +(***************************************************************************) + +Idle(p) == philosophers[p] = {} +Hungry(p) == philosophers[p] = {LowFork(p)} +Eating(p) == philosophers[p] = {LowFork(p), HighFork(p)} + +Phases == \A p \in P : Idle(p) \/ Hungry(p) \/ Eating(p) + +\* A fork lies on the table iff no one holds it ... +OnTable == \A f \in P : f \in forks <=> \A p \in P : f \notin philosophers[p] + +\* ... and no two philosophers hold the same fork. +Exclusive == \A p, q \in P : p # q => philosophers[p] \cap philosophers[q] = {} + +Inv == TypeOK /\ Phases /\ OnTable /\ Exclusive + +\* TakeLeft and TakeRight, seen as taking the low fork, then the high one. +TakeLow(p) == + /\ philosophers[p] = {} + /\ LowFork(p) \in forks + /\ forks' = forks \ {LowFork(p)} + /\ philosophers' = [philosophers EXCEPT ![p] = {LowFork(p)}] + +TakeHigh(p) == + /\ philosophers[p] = {LowFork(p)} + /\ HighFork(p) \in forks + /\ forks' = forks \ {HighFork(p)} + /\ philosophers' = [philosophers EXCEPT ![p] = {LowFork(p), HighFork(p)}] + +NextLH == \E p \in P : TakeLow(p) \/ TakeHigh(p) \/ Release(p) + +LEMMA TakeAgree == + ASSUME Inv, NEW p \in P, TakeLeft(p) \/ TakeRight(p) + PROVE TakeLow(p) \/ TakeHigh(p) +<1>. USE DEF Inv, TypeOK, LowFork, HighFork +<1>1. CASE TakeLeft(p) /\ p # N + <2>1. LeftFork(p) \in P /\ LeftFork(p) \notin philosophers[p] + BY <1>1 DEF TakeLeft, OnTable, LeftFork + <2>2. philosophers[p] = {} + BY <2>1, <1>1 DEF Phases, Idle, Hungry, Eating + <2>. QED + BY <1>1, <2>2 DEF TakeLeft, TakeLow +<1>2. CASE TakeLeft(p) /\ p = N + BY <1>2 DEF TakeLeft, TakeHigh +<1>3. CASE TakeRight(p) /\ p # N + BY <1>3 DEF TakeRight, TakeHigh +<1>4. CASE TakeRight(p) /\ p = N + <2>1. RightFork(p) \in P /\ RightFork(p) \notin philosophers[p] + BY <1>4, ForksDistinct DEF TakeRight, OnTable + <2>2. philosophers[p] = {} + BY <2>1, <1>4 DEF Phases, Idle, Hungry, Eating + <2>. QED + BY <1>4, <2>2 DEF TakeRight, TakeLow +<1>. QED + BY <1>1, <1>2, <1>3, <1>4 + +LEMMA NextAgree == ASSUME Inv, Next PROVE NextLH +BY TakeAgree DEF Next, NextLH + +\* What each action does, stated pointwise. +LEMMA TakeLowFrame == + ASSUME TypeOK, NEW p \in P, TakeLow(p) + PROVE /\ philosophers[p] = {} /\ LowFork(p) \in forks + /\ forks' = forks \ {LowFork(p)} + /\ philosophers'[p] = {LowFork(p)} + /\ \A r \in P : r # p => philosophers'[r] = philosophers[r] +BY DEF TypeOK, TakeLow + +LEMMA TakeHighFrame == + ASSUME TypeOK, NEW p \in P, TakeHigh(p) + PROVE /\ philosophers[p] = {LowFork(p)} /\ HighFork(p) \in forks + /\ forks' = forks \ {HighFork(p)} + /\ philosophers'[p] = {LowFork(p), HighFork(p)} + /\ \A r \in P : r # p => philosophers'[r] = philosophers[r] +BY DEF TypeOK, TakeHigh + +LEMMA ReleaseFrame == + ASSUME TypeOK, NEW p \in P, Release(p) + PROVE /\ philosophers[p] = {LowFork(p), HighFork(p)} + /\ forks' = forks \cup {LowFork(p), HighFork(p)} + /\ philosophers'[p] = {} + /\ \A r \in P : r # p => philosophers'[r] = philosophers[r] +BY ForkFacts DEF TypeOK, Release + +THEOREM TypeOKInit == Init => TypeOK +BY DEF Init, TypeOK, P + +THEOREM TypeOKNext == TypeOK /\ [Next]_vars => TypeOK' +<1>. SUFFICES ASSUME TypeOK, [Next]_vars PROVE TypeOK' + OBVIOUS +<1>. USE ForkFacts DEF TypeOK +<1>1. ASSUME NEW p \in P, TakeLeft(p) PROVE TypeOK' + BY <1>1 DEF TakeLeft, LeftFork +<1>2. ASSUME NEW p \in P, TakeRight(p) PROVE TypeOK' + BY <1>2, ForksDistinct DEF TakeRight +<1>3. ASSUME NEW p \in P, Release(p) PROVE TypeOK' + BY <1>3, ReleaseFrame DEF Release +<1>4. CASE UNCHANGED vars + BY <1>4 DEF vars +<1>. QED + BY <1>1, <1>2, <1>3, <1>4 DEF Next + +THEOREM PhasesNext == Inv /\ [Next]_vars => Phases' +<1>. SUFFICES ASSUME Inv, [Next]_vars PROVE Phases' + OBVIOUS +<1>. USE DEF Inv, Phases, Idle, Hungry, Eating +<1>1. ASSUME NEW p \in P, TakeLow(p) PROVE Phases' + BY <1>1, TakeLowFrame +<1>2. ASSUME NEW p \in P, TakeHigh(p) PROVE Phases' + BY <1>2, TakeHighFrame +<1>3. ASSUME NEW p \in P, Release(p) PROVE Phases' + BY <1>3, ReleaseFrame +<1>4. CASE UNCHANGED vars + BY <1>4 DEF vars +<1>. QED + BY <1>1, <1>2, <1>3, <1>4, NextAgree DEF NextLH + +THEOREM OnTableNext == Inv /\ [Next]_vars => OnTable' +<1>. SUFFICES ASSUME Inv, [Next]_vars, NEW g \in P + PROVE g \in forks' <=> \A r \in P : g \notin philosophers'[r] + BY DEF OnTable +<1>. USE ForkFacts DEF Inv, TypeOK, OnTable +<1>1. ASSUME NEW p \in P, TakeLow(p) + PROVE g \in forks' <=> \A r \in P : g \notin philosophers'[r] + <2>1. CASE g = LowFork(p) + BY <1>1, <2>1, TakeLowFrame + <2>2. CASE g # LowFork(p) + <3>1. \A r \in P : g \in philosophers'[r] <=> g \in philosophers[r] + BY <1>1, <2>2, TakeLowFrame + <3>. QED + BY <1>1, <2>2, <3>1, TakeLowFrame + <2>. QED + BY <2>1, <2>2 +<1>2. ASSUME NEW p \in P, TakeHigh(p) + PROVE g \in forks' <=> \A r \in P : g \notin philosophers'[r] + <2>1. CASE g = HighFork(p) + BY <1>2, <2>1, TakeHighFrame + <2>2. CASE g # HighFork(p) + <3>1. \A r \in P : g \in philosophers'[r] <=> g \in philosophers[r] + BY <1>2, <2>2, TakeHighFrame + <3>. QED + BY <1>2, <2>2, <3>1, TakeHighFrame + <2>. QED + BY <2>1, <2>2 +<1>3. ASSUME NEW p \in P, Release(p) + PROVE g \in forks' <=> \A r \in P : g \notin philosophers'[r] + <2>1. CASE g \in {LowFork(p), HighFork(p)} + BY <1>3, <2>1, ReleaseFrame DEF Exclusive + <2>2. CASE g \notin {LowFork(p), HighFork(p)} + <3>1. \A r \in P : g \in philosophers'[r] <=> g \in philosophers[r] + BY <1>3, <2>2, ReleaseFrame + <3>. QED + BY <1>3, <2>2, <3>1, ReleaseFrame + <2>. QED + BY <2>1, <2>2 +<1>4. CASE UNCHANGED vars + BY <1>4 DEF vars +<1>. QED + BY <1>1, <1>2, <1>3, <1>4, NextAgree DEF NextLH + +THEOREM ExclusiveNext == Inv /\ [Next]_vars => Exclusive' +<1>. SUFFICES ASSUME Inv, [Next]_vars, + NEW r1 \in P, NEW r2 \in P, r1 # r2 + PROVE philosophers'[r1] \cap philosophers'[r2] = {} + BY DEF Exclusive +<1>. USE DEF Inv, TypeOK +<1>1. ASSUME NEW p \in P, TakeLow(p) + PROVE philosophers'[r1] \cap philosophers'[r2] = {} + <2>1. \A r \in P : LowFork(p) \notin philosophers[r] + BY <1>1, TakeLowFrame DEF OnTable + <2>. QED + BY <1>1, <2>1, TakeLowFrame DEF Exclusive +<1>2. ASSUME NEW p \in P, TakeHigh(p) + PROVE philosophers'[r1] \cap philosophers'[r2] = {} + <2>1. \A r \in P : HighFork(p) \notin philosophers[r] + BY <1>2, TakeHighFrame DEF OnTable + <2>2. \A r \in P : r # p => LowFork(p) \notin philosophers[r] + <3>. SUFFICES ASSUME NEW r \in P, r # p PROVE LowFork(p) \notin philosophers[r] + OBVIOUS + <3>1. philosophers[p] \cap philosophers[r] = {} + BY DEF Exclusive + <3>. QED + BY <1>2, <3>1, TakeHighFrame + <2>. QED + BY <1>2, <2>1, <2>2, TakeHighFrame DEF Exclusive +<1>3. ASSUME NEW p \in P, Release(p) + PROVE philosophers'[r1] \cap philosophers'[r2] = {} + BY <1>3, ReleaseFrame DEF Exclusive +<1>4. CASE UNCHANGED vars + BY <1>4 DEF vars, Exclusive +<1>. QED + BY <1>1, <1>2, <1>3, <1>4, NextAgree DEF NextLH + +THEOREM InvInit == Init => Inv +BY ForkFacts, TypeOKInit DEF Init, Inv, Phases, OnTable, Exclusive, Idle, P + +THEOREM InvNext == Inv /\ [Next]_vars => Inv' +BY TypeOKNext, PhasesNext, OnTableNext, ExclusiveNext DEF Inv + +THEOREM InvSpec == Spec => []Inv +BY InvInit, InvNext, PTL DEF Spec + +----------------------------------------------------------------------------- +(***************************************************************************) +(* The steps of a single philosopher. *) +(***************************************************************************) + +Act(p) == TakeLeft(p) \/ TakeRight(p) \/ Release(p) + +LEMMA SpecNext == Spec => [][Next]_vars +BY DEF Spec + +LEMMA SpecFair == \A q \in P : Spec => SF_vars(Act(q)) +BY DEF Spec, Act + +\* A step either is a step of q or leaves q's forks alone. +LEMMA NextSplit == + ASSUME Inv, [Next]_vars, NEW q \in P + PROVE <>_vars \/ philosophers'[q] = philosophers[q] +<1>1. CASE UNCHANGED vars + BY <1>1 DEF vars +<1>2. ASSUME NEW p \in P, p # q, Act(p) + PROVE philosophers'[q] = philosophers[q] + BY <1>2 DEF Act, TakeLeft, TakeRight, Release, Inv, TypeOK +<1>3. CASE Act(q) + BY <1>3 DEF vars +<1>. QED + BY <1>1, <1>2, <1>3 DEF Next, Act + +\* A step of q is a step of TakeLow, TakeHigh, or Release. +LEMMA ActAgree == + ASSUME Inv, NEW q \in P, Act(q) + PROVE TakeLow(q) \/ TakeHigh(q) \/ Release(q) +BY TakeAgree DEF Act + +LEMMA IdleStep == + ASSUME Inv, NEW q \in P, Idle(q), <>_vars + PROVE Hungry(q)' +BY ActAgree, ForkFacts DEF Inv, TypeOK, Idle, Hungry, TakeLow, TakeHigh, Release + +LEMMA HungryStep == + ASSUME Inv, NEW q \in P, Hungry(q), <>_vars + PROVE Eating(q)' +BY ActAgree, ForkFacts DEF Inv, TypeOK, Hungry, Eating, TakeLow, TakeHigh, Release + +LEMMA EatingStep == + ASSUME Inv, NEW q \in P, Eating(q), <>_vars + PROVE \A f \in philosophers[q] : f \in forks' +BY ActAgree, ForkFacts DEF Inv, TypeOK, Eating, TakeLow, TakeHigh, Release + +LEMMA IdleEnabled == + ASSUME NEW q \in P + PROVE Inv /\ Idle(q) /\ LowFork(q) \in forks => ENABLED <>_vars +<1>. SUFFICES ASSUME Inv, Idle(q), LowFork(q) \in forks + PROVE ENABLED <>_vars + OBVIOUS +<1>1. philosophers \in [P -> SUBSET P] /\ philosophers[q] = {} + BY DEF Inv, TypeOK, Idle +<1>2. CASE q # N + <2>1. LeftFork(q) \in forks + BY <1>2 DEF LowFork + <2>2. <<[philosophers EXCEPT ![q] = philosophers[q] \cup {LeftFork(q)}], + forks \ {LeftFork(q)}>> # <> + BY <1>1 + <2>3. ENABLED <>_vars + BY <1>1, <1>2, <2>1, <2>2, ExpandENABLED DEF TakeLeft, vars + <2>. QED + BY <2>3, ExpandENABLED DEF Act, TakeLeft, TakeRight, Release, vars +<1>3. CASE q = N + <2>1. RightFork(q) \in forks + BY <1>3 DEF LowFork + <2>2. <<[philosophers EXCEPT ![q] = philosophers[q] \cup {RightFork(q)}], + forks \ {RightFork(q)}>> # <> + BY <1>1 + <2>3. ENABLED <>_vars + BY <1>1, <1>3, <2>1, <2>2, ExpandENABLED DEF TakeRight, vars + <2>. QED + BY <2>3, ExpandENABLED DEF Act, TakeLeft, TakeRight, Release, vars +<1>. QED + BY <1>2, <1>3 + +LEMMA HungryEnabled == + ASSUME NEW q \in P + PROVE Inv /\ Hungry(q) /\ HighFork(q) \in forks => ENABLED <>_vars +<1>. SUFFICES ASSUME Inv, Hungry(q), HighFork(q) \in forks + PROVE ENABLED <>_vars + OBVIOUS +<1>1. philosophers \in [P -> SUBSET P] /\ philosophers[q] = {LowFork(q)} + BY DEF Inv, TypeOK, Hungry +<1>2. LeftFork(q) # RightFork(q) + BY ForksDistinct +<1>3. CASE q # N + <2>1. philosophers[q] = {LeftFork(q)} /\ RightFork(q) \in forks + BY <1>1, <1>3 DEF LowFork, HighFork + <2>2. <<[philosophers EXCEPT ![q] = philosophers[q] \cup {RightFork(q)}], + forks \ {RightFork(q)}>> # <> + BY <1>1, <1>2, <2>1 + <2>3. (q # N => philosophers[q] = {LeftFork(q)}) /\ RightFork(q) \in forks + BY <2>1 + <2>4. ENABLED <>_vars + BY <2>2, <2>3, ExpandENABLED DEF TakeRight, vars + <2>. QED + BY <2>4, ExpandENABLED DEF Act, TakeLeft, TakeRight, Release, vars +<1>4. CASE q = N + <2>1. philosophers[q] = {RightFork(q)} /\ LeftFork(q) \in forks + BY <1>1, <1>4 DEF LowFork, HighFork + <2>2. <<[philosophers EXCEPT ![q] = philosophers[q] \cup {LeftFork(q)}], + forks \ {LeftFork(q)}>> # <> + BY <1>1, <1>2, <2>1 + <2>3. (q = N => philosophers[q] = {RightFork(q)}) /\ LeftFork(q) \in forks + BY <2>1 + <2>4. ENABLED <>_vars + BY <2>2, <2>3, ExpandENABLED DEF TakeLeft, vars + <2>. QED + BY <2>4, ExpandENABLED DEF Act, TakeLeft, TakeRight, Release, vars +<1>. QED + BY <1>3, <1>4 + +LEMMA EatingEnabled == + ASSUME NEW q \in P + PROVE Inv /\ Eating(q) => ENABLED <>_vars +<1>. SUFFICES ASSUME Inv, Eating(q) + PROVE ENABLED <>_vars + OBVIOUS +<1>1. philosophers \in [P -> SUBSET P] + /\ philosophers[q] = {LeftFork(q), RightFork(q)} + BY ForkFacts DEF Inv, TypeOK, Eating +<1>2. {LeftFork(q), RightFork(q)} # {} + OBVIOUS +<1>3. <<[philosophers EXCEPT ![q] = {}], forks \cup {LeftFork(q), RightFork(q)}>> + # <> + BY <1>1, <1>2 +<1>4. ENABLED <>_vars + BY <1>1, <1>3, ExpandENABLED DEF Release, vars +<1>. QED + BY <1>4, ExpandENABLED DEF Act, TakeLeft, TakeRight, Release, vars + +----------------------------------------------------------------------------- +(***************************************************************************) +(* Progress of a single philosopher. *) +(***************************************************************************) + +FreeIO(f) == []<>(f \in forks) + +HeldEat(f, q) == Eating(q) /\ f \in philosophers[q] + +\* Named so that the lemmas below can be instantiated: backends other than +\* PTL only see temporal formulas through opaque operators. +IdleToHungry(q) == Idle(q) ~> Hungry(q) +HungryToEating(q) == Hungry(q) ~> Eating(q) +EatingFrees(f, q) == HeldEat(f, q) ~> (f \in forks) +HungryFrees(f, q) == (Hungry(q) /\ f = LowFork(q)) ~> (f \in forks) + +LEMMA IdleHungry == + ASSUME NEW q \in P + PROVE Spec /\ FreeIO(LowFork(q)) => IdleToHungry(q) +<1>1. Inv /\ Idle(q) /\ [Next]_vars => Idle(q)' \/ Hungry(q)' + <2>. SUFFICES ASSUME Inv, Idle(q), [Next]_vars PROVE Idle(q)' \/ Hungry(q)' + OBVIOUS + <2>1. CASE philosophers'[q] = philosophers[q] + BY <2>1 DEF Idle + <2>2. CASE <>_vars + BY <2>2, IdleStep + <2>. QED + BY <2>1, <2>2, NextSplit +<1>2. Inv /\ Idle(q) /\ <>_vars => Hungry(q)' + BY IdleStep +<1>3. Inv /\ Idle(q) /\ LowFork(q) \in forks => ENABLED <>_vars + BY IdleEnabled +<1>4. Spec => SF_vars(Act(q)) + BY SpecFair +<1>. QED + BY <1>1, <1>2, <1>3, <1>4, InvSpec, SpecNext, PTL DEF FreeIO, IdleToHungry + +LEMMA HungryEat == + ASSUME NEW q \in P + PROVE Spec /\ FreeIO(HighFork(q)) => HungryToEating(q) +<1>1. Inv /\ Hungry(q) /\ [Next]_vars => Hungry(q)' \/ Eating(q)' + <2>. SUFFICES ASSUME Inv, Hungry(q), [Next]_vars PROVE Hungry(q)' \/ Eating(q)' + OBVIOUS + <2>1. CASE philosophers'[q] = philosophers[q] + BY <2>1 DEF Hungry + <2>2. CASE <>_vars + BY <2>2, HungryStep + <2>. QED + BY <2>1, <2>2, NextSplit +<1>2. Inv /\ Hungry(q) /\ <>_vars => Eating(q)' + BY HungryStep +<1>3. Inv /\ Hungry(q) /\ HighFork(q) \in forks => ENABLED <>_vars + BY HungryEnabled +<1>4. Spec => SF_vars(Act(q)) + BY SpecFair +<1>. QED + BY <1>1, <1>2, <1>3, <1>4, InvSpec, SpecNext, PTL DEF FreeIO, HungryToEating + +LEMMA EatRelease == + ASSUME NEW f \in P, NEW q \in P + PROVE Spec => EatingFrees(f, q) +<1>1. Inv /\ HeldEat(f, q) /\ [Next]_vars => HeldEat(f, q)' \/ (f \in forks)' + <2>. SUFFICES ASSUME Inv, HeldEat(f, q), [Next]_vars + PROVE HeldEat(f, q)' \/ (f \in forks)' + OBVIOUS + <2>1. CASE philosophers'[q] = philosophers[q] + BY <2>1 DEF HeldEat, Eating + <2>2. CASE <>_vars + BY <2>2, EatingStep DEF HeldEat + <2>. QED + BY <2>1, <2>2, NextSplit +<1>2. Inv /\ HeldEat(f, q) /\ <>_vars => (f \in forks)' + BY EatingStep DEF HeldEat +<1>3. Inv /\ HeldEat(f, q) => ENABLED <>_vars + BY EatingEnabled DEF HeldEat +<1>4. Spec => SF_vars(Act(q)) + BY SpecFair +<1>. QED + BY <1>1, <1>2, <1>3, <1>4, InvSpec, SpecNext, PTL DEF EatingFrees + +\* A hungry philosopher who holds f as its low fork eventually frees f, +\* provided that all forks larger than f are free infinitely often. +LEMMA HungryRelease == + ASSUME NEW f \in P, NEW q \in P + PROVE Spec /\ (\A g \in P : g > f => FreeIO(g)) => HungryFrees(f, q) +<1>1. CASE f = LowFork(q) + <2>1. HighFork(q) \in P /\ HighFork(q) > f + BY <1>1, ForkFacts + <2>2. (\A g \in P : g > f => FreeIO(g)) => FreeIO(HighFork(q)) + BY <2>1 + <2>3. Spec /\ FreeIO(HighFork(q)) => HungryToEating(q) + BY HungryEat + <2>4. Spec => EatingFrees(f, q) + BY EatRelease + <2>5. Eating(q) => HeldEat(f, q) + BY <1>1 DEF HeldEat, Eating + <2>6. (Hungry(q) /\ f = LowFork(q)) => Hungry(q) + OBVIOUS + <2>. QED + BY <2>2, <2>3, <2>4, <2>5, <2>6, PTL + DEF HungryToEating, EatingFrees, HungryFrees +<1>2. CASE f # LowFork(q) + <2>1. ~(Hungry(q) /\ f = LowFork(q)) + BY <1>2 + <2>. QED + BY <2>1, PTL DEF HungryFrees +<1>. QED + BY <1>1, <1>2 + +----------------------------------------------------------------------------- +(***************************************************************************) +(* Every fork is free infinitely often. *) +(***************************************************************************) + +LEMMA HeldBy == + ASSUME NEW f \in P + PROVE Inv /\ ~(f \in forks) => + \/ HeldEat(f, f) \/ HeldEat(f, Pred(f)) + \/ Hungry(f) /\ f = LowFork(f) + \/ Hungry(Pred(f)) /\ f = LowFork(Pred(f)) +<1>. SUFFICES ASSUME Inv, ~(f \in forks) + PROVE \/ HeldEat(f, f) \/ HeldEat(f, Pred(f)) + \/ Hungry(f) /\ f = LowFork(f) + \/ Hungry(Pred(f)) /\ f = LowFork(Pred(f)) + OBVIOUS +<1>1. PICK q \in P : f \in philosophers[q] + BY DEF Inv, OnTable +<1>2. f \in {LowFork(q), HighFork(q)} + BY <1>1 DEF Inv, Phases, Idle, Hungry, Eating +<1>3. q = f \/ q = Pred(f) + BY <1>2, Holders +<1>4. HeldEat(f, q) \/ (Hungry(q) /\ f = LowFork(q)) + BY <1>1 DEF Inv, Phases, Idle, Hungry, Eating, HeldEat +<1>. QED + BY <1>3, <1>4 + +LEMMA FreeStep == + ASSUME NEW f \in P + PROVE Spec /\ (\A g \in P : g > f => FreeIO(g)) => FreeIO(f) +<1>1. Pred(f) \in P + BY PredInP +<1>2. Inv /\ ~(f \in forks) => + \/ HeldEat(f, f) \/ HeldEat(f, Pred(f)) + \/ Hungry(f) /\ f = LowFork(f) + \/ Hungry(Pred(f)) /\ f = LowFork(Pred(f)) + BY HeldBy +<1>3. Spec => EatingFrees(f, f) + BY EatRelease +<1>4. Spec => EatingFrees(f, Pred(f)) + BY <1>1, EatRelease +<1>5. Spec /\ (\A g \in P : g > f => FreeIO(g)) => HungryFrees(f, f) + BY HungryRelease +<1>6. Spec /\ (\A g \in P : g > f => FreeIO(g)) => HungryFrees(f, Pred(f)) + BY <1>1, HungryRelease +<1>. QED + BY <1>2, <1>3, <1>4, <1>5, <1>6, InvSpec, PTL + DEF FreeIO, EatingFrees, HungryFrees + +THEOREM AllFree == \A f \in P : Spec => FreeIO(f) +<1>. DEFINE Q(m) == Spec => \A g \in P : g + m > N => FreeIO(g) +<1>1. Q(0) + BY NAtLeastTwo DEF P +<1>2. \A m \in Nat : Q(m) => Q(m + 1) + <2>. SUFFICES ASSUME NEW m \in Nat, Q(m) + PROVE Q(m + 1) + OBVIOUS + <2>1. ASSUME NEW g \in P, g + (m + 1) > N + PROVE Spec => FreeIO(g) + <3>1. CASE g + m > N + BY <3>1 + <3>2. CASE ~(g + m > N) + <4>1. \A h \in P : h > g => h + m > N + BY <2>1, <3>2, NAtLeastTwo DEF P + <4>2. Spec => \A h \in P : h > g => FreeIO(h) + BY <4>1 + <4>. QED + BY <4>2, FreeStep + <3>. QED + BY <3>1, <3>2 + <2>. QED + BY <2>1 +<1>. HIDE DEF Q +<1>3. \A m \in Nat : Q(m) + BY <1>1, <1>2, NatInduction +<1>4. Q(N) + BY <1>3, NAtLeastTwo +<1>. QED + BY <1>4, NAtLeastTwo DEF Q, P + +----------------------------------------------------------------------------- +(***************************************************************************) +(* Starvation freedom. *) +(***************************************************************************) + +LEMMA EatingIsEating == \A p \in P : Eating(p) => IsEating(p) +<1>. SUFFICES ASSUME NEW p \in P, Eating(p) PROVE IsEating(p) + OBVIOUS +<1>1. LowFork(p) # HighFork(p) + BY ForkFacts +<1>2. IsFiniteSet({LowFork(p)}) /\ Cardinality({LowFork(p)}) = 1 + BY FS_Singleton +<1>3. Cardinality({LowFork(p)} \cup {HighFork(p)}) = 2 + BY <1>1, <1>2, FS_AddElement +<1>. QED + BY <1>3 DEF Eating, IsEating + +THEOREM StarvationFreedom +<1>. SUFFICES ASSUME NEW p \in P PROVE Spec => []<>IsEating(p) + BY DEF NoStarvation +<1>1. Spec => FreeIO(LowFork(p)) + BY AllFree, ForkFacts +<1>2. Spec => FreeIO(HighFork(p)) + BY AllFree, ForkFacts +<1>3. Spec /\ FreeIO(LowFork(p)) => IdleToHungry(p) + BY IdleHungry +<1>4. Spec /\ FreeIO(HighFork(p)) => HungryToEating(p) + BY HungryEat +<1>5. Inv => Idle(p) \/ Hungry(p) \/ Eating(p) + BY DEF Inv, Phases +<1>6. Eating(p) => IsEating(p) + BY EatingIsEating +<1>. QED + BY <1>1, <1>2, <1>3, <1>4, <1>5, <1>6, InvSpec, PTL + DEF IdleToHungry, HungryToEating + +EatsIO(p) == []<>IsEating(p) + +THEOREM StarvationImpliesNoLivelock == NoStarvation => NoLivelock +<1>1. 1 \in P + BY NIsPosNat DEF P +<1>2. NoStarvation => \A p \in P : EatsIO(p) + BY DEF NoStarvation, EatsIO +<1>3. NoStarvation => EatsIO(1) + BY <1>1, <1>2 +<1>4. IsEating(1) => \E p \in P : IsEating(p) + BY <1>1 +<1>. QED + BY <1>3, <1>4, PTL DEF EatsIO, NoLivelock + +THEOREM LivelockFreedom +BY StarvationFreedom, StarvationImpliesNoLivelock + +----------------------------------------------------------------------------- +(***************************************************************************) +(* Deadlock freedom. If no one eats, fork N is free, because it is the *) +(* high fork of both philosophers who can hold it. So philosopher N-1 or *) +(* N can take it if hungry; if both are idle, fork N-1 is free too. *) +(***************************************************************************) + +LEMMA ActEnabledNext == + ASSUME NEW q \in P + PROVE (ENABLED <>_vars) => ENABLED Next +BY ExpandENABLED DEF Act, Next, TakeLeft, TakeRight, Release, vars + +LEMMA TopForks == + /\ N - 1 \in P /\ N \in P + /\ LowFork(N - 1) = N - 1 /\ HighFork(N - 1) = N + /\ LowFork(N) = 1 /\ HighFork(N) = N + /\ Pred(N) = N - 1 /\ 1 # N /\ N - 1 # N + /\ Pred(N - 1) = N \/ LowFork(Pred(N - 1)) # N - 1 +BY NAtLeastTwo, RightForkDef DEF P, LowFork, HighFork, LeftFork, Pred + +THEOREM InvNoDeadlock == Inv => NoDeadlock +<1>. SUFFICES ASSUME Inv PROVE ENABLED Next + BY DEF NoDeadlock +<1>. DEFINE M == N - 1 +<1>0. TopForks + BY TopForks +<1>1. CASE \E q \in P : Eating(q) + BY <1>1, EatingEnabled, ActEnabledNext +<1>2. CASE \A q \in P : ~Eating(q) + <2>1. ~HeldEat(N, N) /\ ~HeldEat(N, Pred(N)) + /\ ~HeldEat(M, M) /\ ~HeldEat(M, Pred(M)) + BY <1>0, <1>2, PredInP DEF HeldEat + <2>2. N \in forks + <3>1. N # LowFork(N) /\ N # LowFork(Pred(N)) + BY <1>0 + <3>. QED + BY <1>0, <2>1, <3>1, HeldBy + <2>3. CASE Hungry(M) + BY <1>0, <2>2, <2>3, HungryEnabled, ActEnabledNext + <2>4. CASE Hungry(N) + BY <1>0, <2>2, <2>4, HungryEnabled, ActEnabledNext + <2>5. CASE ~Hungry(M) /\ ~Hungry(N) + <3>1. Idle(M) /\ Idle(N) + BY <1>0, <1>2, <2>5 DEF Inv, Phases + <3>2. ~Hungry(Pred(M)) \/ LowFork(Pred(M)) # M + BY <1>0, <2>5 + <3>3. M \in forks + BY <1>0, <2>1, <2>5, <3>2, HeldBy + <3>. QED + BY <1>0, <3>1, <3>3, IdleEnabled, ActEnabledNext + <2>. QED + BY <2>3, <2>4, <2>5 +<1>. QED + BY <1>1, <1>2 + +THEOREM DeadlockFreedom +BY InvNoDeadlock, InvSpec, PTL + +============================================================================= diff --git a/specifications/DiningPhilosophers/manifest.json b/specifications/DiningPhilosophers/manifest.json index 52ca0003..7491e783 100644 --- a/specifications/DiningPhilosophers/manifest.json +++ b/specifications/DiningPhilosophers/manifest.json @@ -66,6 +66,14 @@ "stateDepth": 6 } ] + }, + { + "path": "specifications/DiningPhilosophers/DiningPhilosophers_proof.tla", + "features": [], + "models": [], + "proof": { + "maxRuntimeMinutes": 3 + } } ] } \ No newline at end of file