From 892b29f9259b9e49e6eea455134300a2104e7c87 Mon Sep 17 00:00:00 2001 From: Markus Alexander Kuppe Date: Wed, 21 Oct 2026 07:41:46 -0700 Subject: [PATCH 01/14] DiningPhilosophers: rename APDiningPhilosophers to APDiningPhilosophersPCal The Apalache wrapper instantiates DiningPhilosophersPCal, so give it the same PCal suffix. Rename the module and its config, and update manifest.json. The non-PlusCal DiningPhilosophers gets no Apalache wrapper. Apalache has nothing useful to check there: NoDeadlock uses ENABLED, which Apalache does not support, and NoLivelock and NoStarvation are liveness properties under SF fairness, which Apalache also rejects. That leaves TypeOK, which tells us little. Co-authored-by: Claude Opus 5.5 Signed-off-by: Markus Alexander Kuppe --- ...{APDiningPhilosophers.cfg => APDiningPhilosophersPCal.cfg} | 0 ...{APDiningPhilosophers.tla => APDiningPhilosophersPCal.tla} | 2 +- specifications/DiningPhilosophers/manifest.json | 4 ++-- 3 files changed, 3 insertions(+), 3 deletions(-) rename specifications/DiningPhilosophers/{APDiningPhilosophers.cfg => APDiningPhilosophersPCal.cfg} (100%) rename specifications/DiningPhilosophers/{APDiningPhilosophers.tla => APDiningPhilosophersPCal.tla} (90%) diff --git a/specifications/DiningPhilosophers/APDiningPhilosophers.cfg b/specifications/DiningPhilosophers/APDiningPhilosophersPCal.cfg similarity index 100% rename from specifications/DiningPhilosophers/APDiningPhilosophers.cfg rename to specifications/DiningPhilosophers/APDiningPhilosophersPCal.cfg diff --git a/specifications/DiningPhilosophers/APDiningPhilosophers.tla b/specifications/DiningPhilosophers/APDiningPhilosophersPCal.tla similarity index 90% rename from specifications/DiningPhilosophers/APDiningPhilosophers.tla rename to specifications/DiningPhilosophers/APDiningPhilosophersPCal.tla index 43161f89..44997f25 100644 --- a/specifications/DiningPhilosophers/APDiningPhilosophers.tla +++ b/specifications/DiningPhilosophers/APDiningPhilosophersPCal.tla @@ -1,4 +1,4 @@ ----- MODULE APDiningPhilosophers ---- +---- MODULE APDiningPhilosophersPCal ---- (* Apalache type annotations for DiningPhilosophersPCal.tla, applied via INSTANCE so the original spec remains free of tool-specific idiosyncrasies. *) diff --git a/specifications/DiningPhilosophers/manifest.json b/specifications/DiningPhilosophers/manifest.json index 7491e783..44081ae5 100644 --- a/specifications/DiningPhilosophers/manifest.json +++ b/specifications/DiningPhilosophers/manifest.json @@ -9,11 +9,11 @@ ], "modules": [ { - "path": "specifications/DiningPhilosophers/APDiningPhilosophers.tla", + "path": "specifications/DiningPhilosophers/APDiningPhilosophersPCal.tla", "features": [], "models": [ { - "path": "specifications/DiningPhilosophers/APDiningPhilosophers.cfg", + "path": "specifications/DiningPhilosophers/APDiningPhilosophersPCal.cfg", "runtime": "00:00:01", "mode": "symbolic", "result": "success" From 615db5de3fa4010fdf2c99785ff4a54852f4f1ef Mon Sep 17 00:00:00 2001 From: Markus Alexander Kuppe Date: Wed, 21 Oct 2026 11:29:32 -0700 Subject: [PATCH 02/14] DP: remove the TLA+ spec to rebuild it in order The footman solution belongs after taking both forks at once and before the fork-order solutions. The commits on master already end with the fork-order solutions, so the footman cannot go in between. Remove DiningPhilosophers, its animation, and its proof, and add them back one solution per commit, so that the history reads in order and the README can link to each step. Co-authored-by: Claude Opus 5.5 Signed-off-by: Markus Alexander Kuppe --- README.md | 2 +- .../DiningPhilosophers/DiningPhilosophers.cfg | 4 - .../DiningPhilosophers/DiningPhilosophers.tla | 95 --- .../DiningPhilosophers_anim.cfg | 6 - .../DiningPhilosophers_anim.gif | Bin 60149 -> 0 bytes .../DiningPhilosophers_anim.tla | 160 ---- .../DiningPhilosophers_proof.tla | 705 ------------------ .../DiningPhilosophers/manifest.json | 38 - 8 files changed, 1 insertion(+), 1009 deletions(-) delete mode 100644 specifications/DiningPhilosophers/DiningPhilosophers.cfg delete mode 100644 specifications/DiningPhilosophers/DiningPhilosophers.tla delete mode 100644 specifications/DiningPhilosophers/DiningPhilosophers_anim.cfg delete mode 100644 specifications/DiningPhilosophers/DiningPhilosophers_anim.gif delete mode 100644 specifications/DiningPhilosophers/DiningPhilosophers_anim.tla delete mode 100644 specifications/DiningPhilosophers/DiningPhilosophers_proof.tla diff --git a/README.md b/README.md index e19baadc..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, 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.cfg b/specifications/DiningPhilosophers/DiningPhilosophers.cfg deleted file mode 100644 index c1a8d2d7..00000000 --- a/specifications/DiningPhilosophers/DiningPhilosophers.cfg +++ /dev/null @@ -1,4 +0,0 @@ -CONSTANTS N = 5 -SPECIFICATION Spec -INVARIANT TypeOK NoDeadlock -PROPERTY NoLivelock NoStarvation diff --git a/specifications/DiningPhilosophers/DiningPhilosophers.tla b/specifications/DiningPhilosophers/DiningPhilosophers.tla deleted file mode 100644 index 32bd01b3..00000000 --- a/specifications/DiningPhilosophers/DiningPhilosophers.tla +++ /dev/null @@ -1,95 +0,0 @@ ----------------------------- 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) == - \* 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)} - /\ 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) - -\* Proved in DiningPhilosophers_proof. -THEOREM DeadlockFreedom == Spec => []NoDeadlock -THEOREM LivelockFreedom == Spec => NoLivelock -THEOREM StarvationFreedom == Spec => NoStarvation - ------ - -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 deleted file mode 100644 index 1a23796b..00000000 --- a/specifications/DiningPhilosophers/DiningPhilosophers_anim.cfg +++ /dev/null @@ -1,6 +0,0 @@ -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 deleted file mode 100644 index d88a0f83cfd939b23e1fc82d2135e67aa376d882..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 60149 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 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] - right == RightFork(p) \in philosophers[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) - -\* Spectacle has no TLCGet, so only AnimDoc, not AnimView, shows the step number. -StepNumber == - Text(ViewWidth - 10, ViewHeight - 10, "Step " \o ToString(TLCGet("level")), - ("text-anchor" :> "end" @@ "font-family" :> "monospace" @@ - "font-size" :> "17" @@ "fill" :> "#666")) - -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 ")")) - -AnimDoc == SVGDoc(Group(<>, <<>>), 0, 0, ViewWidth, ViewHeight, <<>>) - -\* Animation alias for generating SVG files with TLC. -AnimAlias == - [ - philosophers |-> philosophers, forks |-> forks - ] @@ - [ _anim |-> SVGSerialize(AnimDoc, "DiningPhilosophers_anim_", TLCGet("level")) ] - -\* Watch expression for the TLA+ Debugger; overwrites a single SVG file. -AnimWatch == - SVGSerialize(AnimDoc, "DiningPhilosophers_anim", 0) - -==== diff --git a/specifications/DiningPhilosophers/DiningPhilosophers_proof.tla b/specifications/DiningPhilosophers/DiningPhilosophers_proof.tla deleted file mode 100644 index 0286b8ec..00000000 --- a/specifications/DiningPhilosophers/DiningPhilosophers_proof.tla +++ /dev/null @@ -1,705 +0,0 @@ -------------------------- 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 44081ae5..ad6bb467 100644 --- a/specifications/DiningPhilosophers/manifest.json +++ b/specifications/DiningPhilosophers/manifest.json @@ -20,21 +20,6 @@ } ] }, - { - "path": "specifications/DiningPhilosophers/DiningPhilosophers.tla", - "features": [], - "models": [ - { - "path": "specifications/DiningPhilosophers/DiningPhilosophers.cfg", - "runtime": "00:00:01", - "mode": "exhaustive search", - "result": "success", - "distinctStates": 70, - "totalStates": 220, - "stateDepth": 6 - } - ] - }, { "path": "specifications/DiningPhilosophers/DiningPhilosophersPCal.tla", "features": [ @@ -51,29 +36,6 @@ "stateDepth": 29 } ] - }, - { - "path": "specifications/DiningPhilosophers/DiningPhilosophers_anim.tla", - "features": [], - "models": [ - { - "path": "specifications/DiningPhilosophers/DiningPhilosophers_anim.cfg", - "runtime": "00:00:01", - "mode": "exhaustive search", - "result": "success", - "distinctStates": 70, - "totalStates": 220, - "stateDepth": 6 - } - ] - }, - { - "path": "specifications/DiningPhilosophers/DiningPhilosophers_proof.tla", - "features": [], - "models": [], - "proof": { - "maxRuntimeMinutes": 3 - } } ] } \ No newline at end of file From 8c5d5f7a3671e9f39ffb08867ff6abf83cc7b973 Mon Sep 17 00:00:00 2001 From: Markus Alexander Kuppe Date: Wed, 21 Oct 2026 11:29:32 -0700 Subject: [PATCH 03/14] DP: add a README that walks through the solutions The folder holds two independent solutions, and the TLA+ one is best read as a series of commits. Add the README before the series, so that each of the following commits adds its step to the table. A commit cannot link to itself, so each commit links the step before it. Co-authored-by: Claude Opus 5.5 Signed-off-by: Markus Alexander Kuppe --- specifications/DiningPhilosophers/README.md | 35 +++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 specifications/DiningPhilosophers/README.md diff --git a/specifications/DiningPhilosophers/README.md b/specifications/DiningPhilosophers/README.md new file mode 100644 index 00000000..8af4cfa2 --- /dev/null +++ b/specifications/DiningPhilosophers/README.md @@ -0,0 +1,35 @@ +# Dining Philosophers + +This folder contains specifications of the +[Dining Philosophers problem](https://en.wikipedia.org/wiki/Dining_philosophers_problem). + +## From naive to correct (TLA+) + +The git history builds a TLA+ spec of the forks, one solution per +commit. The table lists, for each commit, the properties for which TLC +finds a counterexample: + +| Step | Solution | Known as | Coordination | Deadlock | Livelock | Starvation | Spectacle | +|---|---|---|---|---|---|---|---| + +This repository has specs of two other solutions: + +- **Chandy-Misra:** philosophers hand clean forks to their neighbors on + request. See [`DiningPhilosophersPCal.tla`](DiningPhilosophersPCal.tla) + [below](#chandy-misra-pluscal). +- **Bakery:** hungry philosophers take a ticket, and the lowest ticket eats + first. The ticket order gives a fair, first-come-first-served solution. + Lamport's Bakery algorithm and its Boulangerie variant are in + [`Bakery-Boulangerie`](../Bakery-Boulangerie). They solve mutual exclusion, + not dining, but the ticket idea carries over. + +## Chandy-Misra (PlusCal) + +[`DiningPhilosophersPCal.tla`](DiningPhilosophersPCal.tla) is a PlusCal +algorithm of the +[Chandy-Misra solution](https://en.wikipedia.org/wiki/Dining_philosophers_problem#Chandy/Misra_solution). +Unlike in Dijkstra's formulation, philosophers here talk to each other: they +hand clean forks to their neighbors on request. It is based on the exercise +at [learntla.com](https://learntla.com/temporal-logic/operators/). +[`APDiningPhilosophersPCal.tla`](APDiningPhilosophersPCal.tla) adds the type +annotations that Apalache needs. From 89da1aa3e41b33fdb00062fa0a0a57ef4494e211 Mon Sep 17 00:00:00 2001 From: Markus Alexander Kuppe Date: Wed, 21 Oct 2026 11:29:33 -0700 Subject: [PATCH 04/14] DP: 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 --- .../DiningPhilosophers/DiningPhilosophers.cfg | 4 + .../DiningPhilosophers/DiningPhilosophers.tla | 86 ++++++++++ .../DiningPhilosophers_anim.cfg | 6 + .../DiningPhilosophers_anim.gif | Bin 0 -> 28577 bytes .../DiningPhilosophers_anim.tla | 160 ++++++++++++++++++ specifications/DiningPhilosophers/README.md | 16 +- .../DiningPhilosophers/manifest.json | 24 +++ 7 files changed, 292 insertions(+), 4 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/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..cce05147 --- /dev/null +++ b/specifications/DiningPhilosophers/DiningPhilosophers_anim.tla @@ -0,0 +1,160 @@ +---- 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] + right == RightFork(p) \in philosophers[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) + +\* Spectacle has no TLCGet, so only AnimDoc, not AnimView, shows the step number. +StepNumber == + Text(ViewWidth - 10, ViewHeight - 10, "Step " \o ToString(TLCGet("level")), + ("text-anchor" :> "end" @@ "font-family" :> "monospace" @@ + "font-size" :> "17" @@ "fill" :> "#666")) + +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 ")")) + +AnimDoc == SVGDoc(Group(<>, <<>>), 0, 0, ViewWidth, ViewHeight, <<>>) + +\* Animation alias for generating SVG files with TLC. +AnimAlias == + [ + philosophers |-> philosophers, forks |-> forks + ] @@ + [ _anim |-> SVGSerialize(AnimDoc, "DiningPhilosophers_anim_", TLCGet("level")) ] + +\* Watch expression for the TLA+ Debugger; overwrites a single SVG file. +AnimWatch == + SVGSerialize(AnimDoc, "DiningPhilosophers_anim", 0) + +==== diff --git a/specifications/DiningPhilosophers/README.md b/specifications/DiningPhilosophers/README.md index 8af4cfa2..57d818b5 100644 --- a/specifications/DiningPhilosophers/README.md +++ b/specifications/DiningPhilosophers/README.md @@ -1,16 +1,18 @@ # Dining Philosophers -This folder contains specifications of the +This folder contains two independent specifications of the [Dining Philosophers problem](https://en.wikipedia.org/wiki/Dining_philosophers_problem). ## From naive to correct (TLA+) -The git history builds a TLA+ spec of the forks, one solution per -commit. The table lists, for each commit, the properties for which TLC -finds a counterexample: +[`DiningPhilosophers.tla`](DiningPhilosophers.tla) models the forks directly. + +The git history shows how the spec got there. The table lists, for each +commit, the properties for which TLC finds a counterexample: | Step | Solution | Known as | Coordination | Deadlock | Livelock | Starvation | Spectacle | |---|---|---|---|---|---|---|---| +| 1 | Take the forks in any order | Unordered fork acquisition | none | yes | yes | yes | | This repository has specs of two other solutions: @@ -23,6 +25,12 @@ This repository has specs of two other solutions: [`Bakery-Boulangerie`](../Bakery-Boulangerie). They solve mutual exclusion, not dining, but the ticket idea carries over. +[`DiningPhilosophers_anim.tla`](DiningPhilosophers_anim.tla) draws the table, +forks, and philosophers for any `N` and writes one SVG per state. The +animation comes from [Spectacle](https://github.com/will62794/spectacle). + +![Animation of DiningPhilosophers](DiningPhilosophers_anim.gif) + ## Chandy-Misra (PlusCal) [`DiningPhilosophersPCal.tla`](DiningPhilosophersPCal.tla) is a PlusCal diff --git a/specifications/DiningPhilosophers/manifest.json b/specifications/DiningPhilosophers/manifest.json index ad6bb467..17bd0824 100644 --- a/specifications/DiningPhilosophers/manifest.json +++ b/specifications/DiningPhilosophers/manifest.json @@ -20,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": [ @@ -36,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 bf33e1bb350d46fc55904002e5de3807466de573 Mon Sep 17 00:00:00 2001 From: Markus Alexander Kuppe Date: Wed, 21 Oct 2026 11:29:33 -0700 Subject: [PATCH 05/14] DP: 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 specifications/DiningPhilosophers/README.md | 3 ++- 3 files changed, 3 insertions(+), 1 deletion(-) 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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 diff --git a/specifications/DiningPhilosophers/README.md b/specifications/DiningPhilosophers/README.md index 257b415e..b38b7cb7 100644 --- a/specifications/DiningPhilosophers/README.md +++ b/specifications/DiningPhilosophers/README.md @@ -15,7 +15,8 @@ commit, the properties for which TLC finds a counterexample: | 1 | [Take the forks in any order](https://github.com/tlaplus/examples/commit/89da1aa3e41b33fdb00062fa0a0a57ef4494e211) | Unordered fork acquisition | none | yes | yes | yes | [open](https://will62794.github.io/spectacle/#!/home?specpath=https%3A%2F%2Fraw.githubusercontent.com%2Ftlaplus%2Fexamples%2F89da1aa3e41b33fdb00062fa0a0a57ef4494e211%2Fspecifications%2FDiningPhilosophers%2FDiningPhilosophers.tla&constants%5BN%5D=5) | | 2 | [Take the left fork before the right fork](https://github.com/tlaplus/examples/commit/bf33e1bb350d46fc55904002e5de3807466de573) | [Naive (symmetric) solution](https://en.wikipedia.org/wiki/Dining_philosophers_problem#Problems) | none | yes | yes | yes | [open](https://will62794.github.io/spectacle/#!/home?specpath=https%3A%2F%2Fraw.githubusercontent.com%2Ftlaplus%2Fexamples%2Fbf33e1bb350d46fc55904002e5de3807466de573%2Fspecifications%2FDiningPhilosophers%2FDiningPhilosophers.tla&constants%5BN%5D=5) | | 3 | [Put the left fork back if the right fork is taken](https://github.com/tlaplus/examples/commit/3f171e1ec2db66c4ffa87727e8ed1a74f40c46fa) | Back-off and retry | none | no | yes | yes | [open](https://will62794.github.io/spectacle/#!/home?specpath=https%3A%2F%2Fraw.githubusercontent.com%2Ftlaplus%2Fexamples%2F3f171e1ec2db66c4ffa87727e8ed1a74f40c46fa%2Fspecifications%2FDiningPhilosophers%2FDiningPhilosophers.tla&constants%5BN%5D=5) | -| 4 | Take both forks at once | [Dijkstra's semaphore solution (Tanenbaum's monitor)](https://en.wikipedia.org/wiki/Dining_philosophers_problem#Dijkstra's_solution) | atomic fork pair | no | no | yes | | +| 4 | [Take both forks at once](https://github.com/tlaplus/examples/commit/de09177ff01f1c821ce17a0243286a27d605eba5) | [Dijkstra's semaphore solution (Tanenbaum's monitor)](https://en.wikipedia.org/wiki/Dining_philosophers_problem#Dijkstra's_solution) | atomic fork pair | no | no | yes | [open](https://will62794.github.io/spectacle/#!/home?specpath=https%3A%2F%2Fraw.githubusercontent.com%2Ftlaplus%2Fexamples%2Fde09177ff01f1c821ce17a0243286a27d605eba5%2Fspecifications%2FDiningPhilosophers%2FDiningPhilosophers.tla&constants%5BN%5D=5) | +| 5 | Let a philosopher who ate wait for its neighbors | [Priority to waiting neighbors](https://www.cs.utexas.edu/~EWD/transcriptions/EWD03xx/EWD310.html) | neighbors + atomic fork pair | no | no | no | | This repository has specs of two other solutions: diff --git a/specifications/DiningPhilosophers/manifest.json b/specifications/DiningPhilosophers/manifest.json index ad17735e..fd9ae14b 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": 161, + "totalStates": 331, + "stateDepth": 11 } ] }, @@ -58,9 +61,9 @@ "runtime": "00:00:01", "mode": "exhaustive search", "result": "success", - "distinctStates": 11, - "totalStates": 31, - "stateDepth": 3 + "distinctStates": 161, + "totalStates": 331, + "stateDepth": 11 } ] } From 637ef15fc210e5785bb3f9a68769392ca36601d3 Mon Sep 17 00:00:00 2001 From: Markus Alexander Kuppe Date: Wed, 21 Oct 2026 11:29:33 -0700 Subject: [PATCH 09/14] DP: let a waiter serve philosophers in order Waiting for the neighbors makes every philosopher eat eventually, but hungry philosophers do not eat in the order in which they got hungry. Replace waits with a waiter who keeps a queue of hungry philosophers and lets a philosopher take both forks once no neighbor asked before it. Neighbors thus eat first come, first served, and philosophers who share no fork do not wait for each other. TLC finds no violation of NoDeadlock, NoLivelock, or NoStarvation for N = 2 to 7, even under weak fairness. The queue holds every hungry philosopher, so the waiter is global state. DiningPhilosophers_stats.tla measures with TLC how many philosophers eat at once, on average. The README now shows the average per step. TLC's -generate does not choose uniformly among the philosophers who can act: https://github.com/tlaplus/tlaplus/issues/1485. Keeping Next one action reduces the bias, so TLC's averages come close to the exact ones computed by PRISM. Co-authored-by: Claude Opus 5.5 Signed-off-by: Markus Alexander Kuppe --- .../DiningPhilosophers/DiningPhilosophers.tla | 34 +++++++++++------- .../DiningPhilosophers_anim.gif | Bin 44359 -> 40185 bytes .../DiningPhilosophers_stats.cfg | 5 +++ .../DiningPhilosophers_stats.tla | 33 +++++++++++++++++ specifications/DiningPhilosophers/README.md | 25 +++++++++---- .../DiningPhilosophers/manifest.json | 25 +++++++++---- 6 files changed, 96 insertions(+), 26 deletions(-) create mode 100644 specifications/DiningPhilosophers/DiningPhilosophers_stats.cfg create mode 100644 specifications/DiningPhilosophers/DiningPhilosophers_stats.tla diff --git a/specifications/DiningPhilosophers/DiningPhilosophers.tla b/specifications/DiningPhilosophers/DiningPhilosophers.tla index 12471f7b..f6964c30 100644 --- a/specifications/DiningPhilosophers/DiningPhilosophers.tla +++ b/specifications/DiningPhilosophers/DiningPhilosophers.tla @@ -1,6 +1,6 @@ ---------------------------- MODULE DiningPhilosophers ---------------------------- -EXTENDS Naturals, FiniteSets +EXTENDS Naturals, FiniteSets, Sequences CONSTANT N \* Number of philosophers ASSUME NIsPosNat == N \in Nat \ {0} @@ -16,39 +16,47 @@ ASSUME ForksCovered == {RightFork(p) : p \in P} = P Neighbors(p) == {q \in P \ {p} : {LeftFork(q), RightFork(q)} \cap {LeftFork(p), RightFork(p)} # {}} -VARIABLES philosophers, forks, waits -vars == <> +VARIABLES philosophers, forks, queue +vars == <> TypeOK == /\ philosophers \in [P -> SUBSET P] /\ forks \in SUBSET P - /\ waits \in [P -> SUBSET P] + /\ queue \in Seq(P) Init == \* each philosopher starts with no forks /\ philosophers = [ p \in P |-> {} ] \* all forks are available /\ forks = 1..N - \* no philosopher has eaten yet - /\ waits = [ p \in P |-> {} ] + \* the waiter's queue of hungry philosophers is empty + /\ queue = <<>> + +Request(p) == + /\ philosophers[p] = {} + /\ \A i \in 1..Len(queue) : queue[i] # p + /\ queue' = Append(queue, p) + /\ UNCHANGED <> TakeBoth(p) == - \* p has let its neighbors eat since it last ate. - /\ waits[p] = {} + \* The waiter serves p once no neighbor of p asked before p. + /\ \E i \in 1..Len(queue) : + /\ queue[i] = p + /\ \A j \in 1..(i - 1) : queue[j] \notin Neighbors(p) + /\ queue' = SubSeq(queue, 1, i - 1) \o SubSeq(queue, i + 1, Len(queue)) /\ {LeftFork(p), RightFork(p)} \subseteq forks /\ forks' = forks \ {LeftFork(p), RightFork(p)} /\ philosophers' = [philosophers EXCEPT ![p] = {LeftFork(p), RightFork(p)}] - /\ waits' = [q \in P |-> waits[q] \ {p}] Release(p) == /\ philosophers[p] = {LeftFork(p), RightFork(p)} /\ forks' = forks \cup {LeftFork(p), RightFork(p)} /\ philosophers' = [philosophers EXCEPT ![p] = {}] - \* p waits until both neighbors have eaten. - /\ waits' = [waits EXCEPT ![p] = Neighbors(p)] + /\ UNCHANGED queue Next == \E p \in P: + \/ Request(p) \/ TakeBoth(p) \/ Release(p) @@ -56,7 +64,7 @@ Spec == /\ Init /\ [][Next]_vars /\ \A p \in P : - SF_vars(TakeBoth(p) \/ Release(p)) + SF_vars(Request(p) \/ TakeBoth(p) \/ Release(p)) IsEating(p) == Cardinality(philosophers[p]) = 2 @@ -80,7 +88,7 @@ Alias == [ philosophers |-> philosophers, forks |-> forks, - waits |-> waits, + queue |-> queue, eating |-> [ p \in DOMAIN philosophers |-> ThinkHungryEat(p) ] ] diff --git a/specifications/DiningPhilosophers/DiningPhilosophers_anim.gif b/specifications/DiningPhilosophers/DiningPhilosophers_anim.gif index 8240c82b2d4a59ac7d6287da99054525e6598661..5de6ab090fe79394714756239c492c5cf72ace65 100644 GIT binary patch literal 40185 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 YH9b=)U6iw%OItOs13P)2EvaAm3yD$`$^ZZW literal 44359 zcmcG#Ra9F~+`o$kNPq^n0Ku(TfD|aS1gA)$xLa^3UMRH12_D>OaEIXTt_|)^DcVv> zsnB0Jec%6ot#fm3&%T(w_QkB(>zO?>Ykl_jQPWVBma#Pt);1>o#iVR6C~2X&CSi(+0nW!}{+SH=M!lKo}yu$ol*t?nt)23L{^a#)F*Z_1?KzF)RRa#(M zZct5vOJ7mQbs6Fmqcoi7G4|eTvMg}1He?0+ZarJs`*l=sOlCk>QcO%tUT$t$T3UQ^ zMsZ(^($d&aH&zpes}J97joRsmS#3d0 zH)qc@rG4lwUmvaiG+lAKiv7A+w=qzd-!xayg3GEM9T^#!o}OM@T-@H?-kl%%xITM$ zczAw({^exv+qZA`_xHbk++1HApC4`*85tRy8JYcqV`^+`W$s{QY-(?6>TYW6Xk-## zg0!=8ajFOejViR>gi)? zZMzpNlk2A$_fr2K!;&EF@_!72Tu>n|O(IN86HHChP0jMm%uCG8Yt8@h{72QL+r=l| zCulUNHp(>ZAJXWTxv{>wd~{94>o1S^0LU z?#)?Q;7EbzKd>RFtbbr5A|etJ5@Jv>>FMctd3pcv{$tztKDMJQAv&Wnp|CkD8G|nA ztgNhPZf^dEx3RuFr#WY)CTyr8{vYAxrpV2<=zoxBT5~>kWL!2U&h}KLd`M|rYwXR8NR1SyT6#RRr!I0nr1EML8`cr>0-!gXt+v1B|MsuTy&XeymdaWuK4g?Ap*$ytfg|kL_JN=a;l|ju|l`xS;4c`>g5`f zX4mbh)|%A@o8dTC&9>V0X6MCf%jved&33QDsRGUR`t9z(Z)e-n?G3yAp@bkdtq$z| zFp5UVYNn&{a2(C0S*X?7^l>^{!fj`!v-#5pj8Z(Cc2~>kVx@kK)ofSm`6||ax={P^ zXDRdQ+llpFwTwEqR&y)!45#+5hd~A^Ae{{(HgV)10&DF;&Ly%>@>{KV)?OD+3GaA-tR-M4Ol~SWy(Lq@$gjl}c z$u>Oc_m6zW%C+eoc(BFKe4@)PHv_h)k>5a`O!}snvACVH)1I58+}Z{Lswv9>LW$p6 zMVljGaYI}Ze@@^*>Uec&b3`^5!uUw7CSBk;bq%AFNp(Eq8pH$K^R-wGU0F&muZ!n0 zr1cG6{JVW~kU(n2w|Mg=56(m=Wk3-N4N>wq9%ce42usc%;Qz(1%ZziDYnFzdc`T_ykOyHE38 z=Li?)CoXJMhmQD4YZMnas7UUvh?3CVCwElQhPIecHenGUgE|6fH)c}d4t-%KbWC(!PDg(#�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 z
      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 TLCGet(1), states |-> TLCGet(2)]) +============================================================================= + +Check out the commit of a solution, then run: + +$ tlc DiningPhilosophers_stats -generate num=1000 -depth 1000 diff --git a/specifications/DiningPhilosophers/README.md b/specifications/DiningPhilosophers/README.md index b38b7cb7..6e221adc 100644 --- a/specifications/DiningPhilosophers/README.md +++ b/specifications/DiningPhilosophers/README.md @@ -10,13 +10,14 @@ This folder contains two independent specifications of the The git history shows how the spec got there. The table lists, for each commit, the properties for which TLC finds a counterexample: -| Step | Solution | Known as | Coordination | Deadlock | Livelock | Starvation | Spectacle | -|---|---|---|---|---|---|---|---| -| 1 | [Take the forks in any order](https://github.com/tlaplus/examples/commit/89da1aa3e41b33fdb00062fa0a0a57ef4494e211) | Unordered fork acquisition | none | yes | yes | yes | [open](https://will62794.github.io/spectacle/#!/home?specpath=https%3A%2F%2Fraw.githubusercontent.com%2Ftlaplus%2Fexamples%2F89da1aa3e41b33fdb00062fa0a0a57ef4494e211%2Fspecifications%2FDiningPhilosophers%2FDiningPhilosophers.tla&constants%5BN%5D=5) | -| 2 | [Take the left fork before the right fork](https://github.com/tlaplus/examples/commit/bf33e1bb350d46fc55904002e5de3807466de573) | [Naive (symmetric) solution](https://en.wikipedia.org/wiki/Dining_philosophers_problem#Problems) | none | yes | yes | yes | [open](https://will62794.github.io/spectacle/#!/home?specpath=https%3A%2F%2Fraw.githubusercontent.com%2Ftlaplus%2Fexamples%2Fbf33e1bb350d46fc55904002e5de3807466de573%2Fspecifications%2FDiningPhilosophers%2FDiningPhilosophers.tla&constants%5BN%5D=5) | -| 3 | [Put the left fork back if the right fork is taken](https://github.com/tlaplus/examples/commit/3f171e1ec2db66c4ffa87727e8ed1a74f40c46fa) | Back-off and retry | none | no | yes | yes | [open](https://will62794.github.io/spectacle/#!/home?specpath=https%3A%2F%2Fraw.githubusercontent.com%2Ftlaplus%2Fexamples%2F3f171e1ec2db66c4ffa87727e8ed1a74f40c46fa%2Fspecifications%2FDiningPhilosophers%2FDiningPhilosophers.tla&constants%5BN%5D=5) | -| 4 | [Take both forks at once](https://github.com/tlaplus/examples/commit/de09177ff01f1c821ce17a0243286a27d605eba5) | [Dijkstra's semaphore solution (Tanenbaum's monitor)](https://en.wikipedia.org/wiki/Dining_philosophers_problem#Dijkstra's_solution) | atomic fork pair | no | no | yes | [open](https://will62794.github.io/spectacle/#!/home?specpath=https%3A%2F%2Fraw.githubusercontent.com%2Ftlaplus%2Fexamples%2Fde09177ff01f1c821ce17a0243286a27d605eba5%2Fspecifications%2FDiningPhilosophers%2FDiningPhilosophers.tla&constants%5BN%5D=5) | -| 5 | Let a philosopher who ate wait for its neighbors | [Priority to waiting neighbors](https://www.cs.utexas.edu/~EWD/transcriptions/EWD03xx/EWD310.html) | neighbors + atomic fork pair | no | no | no | | +| Step | Solution | Known as | Coordination | Deadlock | Livelock | Starvation | Eating[^eating] | Spectacle | +|---|---|---|---|---|---|---|---|---| +| 1 | [Take the forks in any order](https://github.com/tlaplus/examples/commit/89da1aa3e41b33fdb00062fa0a0a57ef4494e211) | Unordered fork acquisition | none | yes | yes | yes | | [open](https://will62794.github.io/spectacle/#!/home?specpath=https%3A%2F%2Fraw.githubusercontent.com%2Ftlaplus%2Fexamples%2F89da1aa3e41b33fdb00062fa0a0a57ef4494e211%2Fspecifications%2FDiningPhilosophers%2FDiningPhilosophers.tla&constants%5BN%5D=5) | +| 2 | [Take the left fork before the right fork](https://github.com/tlaplus/examples/commit/bf33e1bb350d46fc55904002e5de3807466de573) | [Naive (symmetric) solution](https://en.wikipedia.org/wiki/Dining_philosophers_problem#Problems) | none | yes | yes | yes | | [open](https://will62794.github.io/spectacle/#!/home?specpath=https%3A%2F%2Fraw.githubusercontent.com%2Ftlaplus%2Fexamples%2Fbf33e1bb350d46fc55904002e5de3807466de573%2Fspecifications%2FDiningPhilosophers%2FDiningPhilosophers.tla&constants%5BN%5D=5) | +| 3 | [Put the left fork back if the right fork is taken](https://github.com/tlaplus/examples/commit/3f171e1ec2db66c4ffa87727e8ed1a74f40c46fa) | Back-off and retry | none | no | yes | yes | | [open](https://will62794.github.io/spectacle/#!/home?specpath=https%3A%2F%2Fraw.githubusercontent.com%2Ftlaplus%2Fexamples%2F3f171e1ec2db66c4ffa87727e8ed1a74f40c46fa%2Fspecifications%2FDiningPhilosophers%2FDiningPhilosophers.tla&constants%5BN%5D=5) | +| 4 | [Take both forks at once](https://github.com/tlaplus/examples/commit/de09177ff01f1c821ce17a0243286a27d605eba5) | [Dijkstra's semaphore solution (Tanenbaum's monitor)](https://en.wikipedia.org/wiki/Dining_philosophers_problem#Dijkstra's_solution) | atomic fork pair | no | no | yes | | [open](https://will62794.github.io/spectacle/#!/home?specpath=https%3A%2F%2Fraw.githubusercontent.com%2Ftlaplus%2Fexamples%2Fde09177ff01f1c821ce17a0243286a27d605eba5%2Fspecifications%2FDiningPhilosophers%2FDiningPhilosophers.tla&constants%5BN%5D=5) | +| 5 | [Let a philosopher who ate wait for its neighbors](https://github.com/tlaplus/examples/commit/173c60f8d1375217f61b901094b0dd36acd967c2) | [Priority to waiting neighbors](https://www.cs.utexas.edu/~EWD/transcriptions/EWD03xx/EWD310.html) | neighbors + atomic fork pair | no | no | no | —[^step5] | [open](https://will62794.github.io/spectacle/#!/home?specpath=https%3A%2F%2Fraw.githubusercontent.com%2Ftlaplus%2Fexamples%2F173c60f8d1375217f61b901094b0dd36acd967c2%2Fspecifications%2FDiningPhilosophers%2FDiningPhilosophers.tla&constants%5BN%5D=5) | +| 6 | Let a waiter serve philosophers in order | Waiter (arbitrator) with a queue | global queue | no | no | no | 0.73 | | This repository has specs of two other solutions: @@ -35,6 +36,16 @@ animation comes from [Spectacle](https://github.com/will62794/spectacle). ![Animation of DiningPhilosophers](DiningPhilosophers_anim.gif) +[^eating]: Average number of philosophers eating per state, for `N = 5`. The + spec does not model time, so states stand in for it. In each step, a + random philosopher who can act takes one step. TLC's averages come close + to the exact ones computed by [PRISM](https://www.prismmodelchecker.org). + +[^step5]: Not measured. A meal takes three steps in the other solutions but + two with priority to waiting neighbors, because philosophers get hungry + without a step. More of its states are thus eating states, so its average + is not comparable. + ## Chandy-Misra (PlusCal) [`DiningPhilosophersPCal.tla`](DiningPhilosophersPCal.tla) is a PlusCal diff --git a/specifications/DiningPhilosophers/manifest.json b/specifications/DiningPhilosophers/manifest.json index fd9ae14b..774f118e 100644 --- a/specifications/DiningPhilosophers/manifest.json +++ b/specifications/DiningPhilosophers/manifest.json @@ -29,9 +29,9 @@ "runtime": "00:00:01", "mode": "exhaustive search", "result": "success", - "distinctStates": 161, - "totalStates": 331, - "stateDepth": 11 + "distinctStates": 731, + "totalStates": 1951, + "stateDepth": 8 } ] }, @@ -61,9 +61,22 @@ "runtime": "00:00:01", "mode": "exhaustive search", "result": "success", - "distinctStates": 161, - "totalStates": 331, - "stateDepth": 11 + "distinctStates": 731, + "totalStates": 1951, + "stateDepth": 8 + } + ] + }, + { + "path": "specifications/DiningPhilosophers/DiningPhilosophers_stats.tla", + "features": [], + "models": [ + { + "path": "specifications/DiningPhilosophers/DiningPhilosophers_stats.cfg", + "runtime": "unknown", + "mode": "generate", + "result": "unknown", + "workers": 1 } ] } From 20efef8f7b1b790d3643284d7c96434453580581 Mon Sep 17 00:00:00 2001 From: Markus Alexander Kuppe Date: Wed, 21 Oct 2026 11:29:33 -0700 Subject: [PATCH 10/14] DP: let a footman seat at most N-1 philosophers The waiter keeps a queue of every hungry philosopher, and TakeBoth takes two forks in one step, which no lock on a single fork provides. Go back to TakeLeft and TakeRight, with every philosopher taking the left fork first, and add a footman who seats at most N-1 philosophers, as in Hoare's CSP book. Not every philosopher can hold one fork, so the circular wait cannot close. TLC finds no violation of NoDeadlock, NoLivelock, or NoStarvation for N = 2 to 7. The footman needs strong fairness: under weak fairness, TLC finds a NoStarvation violation in which a philosopher never gets a seat. Strong fairness plays the part of a fair semaphore. The footman's guard reads the state of every philosopher, which makes the footman global state. The animation shows the number of seated philosophers and fades a philosopher who waits for a seat. Co-authored-by: Claude Opus 5.5 Signed-off-by: Markus Alexander Kuppe --- .../DiningPhilosophers/DiningPhilosophers.tla | 53 ++++++++---------- .../DiningPhilosophers_anim.gif | Bin 40185 -> 96557 bytes .../DiningPhilosophers_anim.tla | 16 +++++- specifications/DiningPhilosophers/README.md | 3 +- .../DiningPhilosophers/manifest.json | 12 ++-- 5 files changed, 45 insertions(+), 39 deletions(-) diff --git a/specifications/DiningPhilosophers/DiningPhilosophers.tla b/specifications/DiningPhilosophers/DiningPhilosophers.tla index f6964c30..a289dbb5 100644 --- a/specifications/DiningPhilosophers/DiningPhilosophers.tla +++ b/specifications/DiningPhilosophers/DiningPhilosophers.tla @@ -1,6 +1,6 @@ ---------------------------- MODULE DiningPhilosophers ---------------------------- -EXTENDS Naturals, FiniteSets, Sequences +EXTENDS Naturals, FiniteSets CONSTANT N \* Number of philosophers ASSUME NIsPosNat == N \in Nat \ {0} @@ -13,58 +13,52 @@ 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 -Neighbors(p) == - {q \in P \ {p} : {LeftFork(q), RightFork(q)} \cap {LeftFork(p), RightFork(p)} # {}} - -VARIABLES philosophers, forks, queue -vars == <> +VARIABLES philosophers, forks +vars == <> TypeOK == /\ philosophers \in [P -> SUBSET P] /\ forks \in SUBSET P - /\ queue \in Seq(P) Init == \* each philosopher starts with no forks /\ philosophers = [ p \in P |-> {} ] \* all forks are available /\ forks = 1..N - \* the waiter's queue of hungry philosophers is empty - /\ queue = <<>> - -Request(p) == - /\ philosophers[p] = {} - /\ \A i \in 1..Len(queue) : queue[i] # p - /\ queue' = Append(queue, p) - /\ UNCHANGED <> - -TakeBoth(p) == - \* The waiter serves p once no neighbor of p asked before p. - /\ \E i \in 1..Len(queue) : - /\ queue[i] = p - /\ \A j \in 1..(i - 1) : queue[j] \notin Neighbors(p) - /\ queue' = SubSeq(queue, 1, i - 1) \o SubSeq(queue, i + 1, Len(queue)) - /\ {LeftFork(p), RightFork(p)} \subseteq forks - /\ forks' = forks \ {LeftFork(p), RightFork(p)} - /\ philosophers' = [philosophers EXCEPT ![p] = {LeftFork(p), RightFork(p)}] + +TakeLeft(p) == + \* The footman seats at most N-1 philosophers. This conjunct reads + \* every philosopher's state: the footman is essentially global state. + /\ Cardinality({q \in P : philosophers[q] # {}}) < N - 1 + /\ LeftFork(p) \in forks + /\ forks' = forks \ {LeftFork(p)} + /\ philosophers' = + [philosophers EXCEPT ![p] = philosophers[p] \cup {LeftFork(p)}] + +TakeRight(p) == + \* Philosophers grab the left fork first. + /\ 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)} /\ forks' = forks \cup {LeftFork(p), RightFork(p)} /\ philosophers' = [philosophers EXCEPT ![p] = {}] - /\ UNCHANGED queue Next == \E p \in P: - \/ Request(p) - \/ TakeBoth(p) + \/ TakeLeft(p) + \/ TakeRight(p) \/ Release(p) Spec == /\ Init /\ [][Next]_vars /\ \A p \in P : - SF_vars(Request(p) \/ TakeBoth(p) \/ Release(p)) + SF_vars(TakeLeft(p) \/ TakeRight(p) \/ Release(p)) IsEating(p) == Cardinality(philosophers[p]) = 2 @@ -88,7 +82,6 @@ Alias == [ philosophers |-> philosophers, forks |-> forks, - queue |-> queue, eating |-> [ p \in DOMAIN philosophers |-> ThinkHungryEat(p) ] ] diff --git a/specifications/DiningPhilosophers/DiningPhilosophers_anim.gif b/specifications/DiningPhilosophers/DiningPhilosophers_anim.gif index 5de6ab090fe79394714756239c492c5cf72ace65..628a1982b08a83e958321aa3d59c3cced5ce38c9 100644 GIT binary patch literal 96557 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%0DSPnsVXg&T#)p*5wUMX8prem44-8E$XL?ROELs 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 literal 40185 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 YH9b=)U6iw%OItOs13P)2EvaAm3yD$`$^ZZW diff --git a/specifications/DiningPhilosophers/DiningPhilosophers_anim.tla b/specifications/DiningPhilosophers/DiningPhilosophers_anim.tla index cce05147..3a6d2e17 100644 --- a/specifications/DiningPhilosophers/DiningPhilosophers_anim.tla +++ b/specifications/DiningPhilosophers/DiningPhilosophers_anim.tla @@ -46,6 +46,12 @@ StateColor(p) == [] Cardinality(philosophers[p]) = 1 -> HungryColor [] OTHER -> ThinkingColor +\* Philosophers who hold a fork are seated by the footman. +Seated == Cardinality({q \in P : philosophers[q] # {}}) + +\* A thinking philosopher waits for the footman while all N-1 seats are taken. +WaitsForSeat(p) == philosophers[p] = {} /\ Seated = N - 1 + (***************************************************************************) (* A fork centered at (x, y), rotated by a degrees. Unrotated, its tines *) (* point up. *) @@ -98,7 +104,8 @@ Philosopher(p) == Show(right, ForkGlyph(Cx - 22, 70, 160)) \o Show(left, hand(Cx + 25)) \o Show(right, hand(Cx - 25)), - ("transform" :> RotateAboutCenter(t))) + ("transform" :> RotateAboutCenter(t) @@ + "opacity" :> IF WaitsForSeat(p) THEN "0.35" ELSE "1")) \* Fork f on the table; only its number remains while someone holds it. TableFork(f) == @@ -118,7 +125,12 @@ Legend == IN Group(<< entry(0, ThinkingColor, "thinking"), entry(1, HungryColor, "hungry (1 fork)"), - entry(2, EatingColor, "eating (2 forks)") + entry(2, EatingColor, "eating (2 forks)"), + Text(x, 32 + 22 * 3, "seated: " \o ToString(Seated) \o "/" \o ToString(N - 1), + ("font-family" :> "sans-serif" @@ "font-size" :> "11" @@ + "fill" :> IF Seated = N - 1 THEN "#c0392b" ELSE "#333")), + Text(x, 32 + 22 * 4, "faded: no free seat", + ("font-family" :> "sans-serif" @@ "font-size" :> "11" @@ "fill" :> "#333")) >>, <<>>) \* Scale the drawing, in hundredths, to 600 wide, which fits Spectacle's pane. diff --git a/specifications/DiningPhilosophers/README.md b/specifications/DiningPhilosophers/README.md index 6e221adc..601e8456 100644 --- a/specifications/DiningPhilosophers/README.md +++ b/specifications/DiningPhilosophers/README.md @@ -17,7 +17,8 @@ commit, the properties for which TLC finds a counterexample: | 3 | [Put the left fork back if the right fork is taken](https://github.com/tlaplus/examples/commit/3f171e1ec2db66c4ffa87727e8ed1a74f40c46fa) | Back-off and retry | none | no | yes | yes | | [open](https://will62794.github.io/spectacle/#!/home?specpath=https%3A%2F%2Fraw.githubusercontent.com%2Ftlaplus%2Fexamples%2F3f171e1ec2db66c4ffa87727e8ed1a74f40c46fa%2Fspecifications%2FDiningPhilosophers%2FDiningPhilosophers.tla&constants%5BN%5D=5) | | 4 | [Take both forks at once](https://github.com/tlaplus/examples/commit/de09177ff01f1c821ce17a0243286a27d605eba5) | [Dijkstra's semaphore solution (Tanenbaum's monitor)](https://en.wikipedia.org/wiki/Dining_philosophers_problem#Dijkstra's_solution) | atomic fork pair | no | no | yes | | [open](https://will62794.github.io/spectacle/#!/home?specpath=https%3A%2F%2Fraw.githubusercontent.com%2Ftlaplus%2Fexamples%2Fde09177ff01f1c821ce17a0243286a27d605eba5%2Fspecifications%2FDiningPhilosophers%2FDiningPhilosophers.tla&constants%5BN%5D=5) | | 5 | [Let a philosopher who ate wait for its neighbors](https://github.com/tlaplus/examples/commit/173c60f8d1375217f61b901094b0dd36acd967c2) | [Priority to waiting neighbors](https://www.cs.utexas.edu/~EWD/transcriptions/EWD03xx/EWD310.html) | neighbors + atomic fork pair | no | no | no | —[^step5] | [open](https://will62794.github.io/spectacle/#!/home?specpath=https%3A%2F%2Fraw.githubusercontent.com%2Ftlaplus%2Fexamples%2F173c60f8d1375217f61b901094b0dd36acd967c2%2Fspecifications%2FDiningPhilosophers%2FDiningPhilosophers.tla&constants%5BN%5D=5) | -| 6 | Let a waiter serve philosophers in order | Waiter (arbitrator) with a queue | global queue | no | no | no | 0.73 | | +| 6 | [Let a waiter serve philosophers in order](https://github.com/tlaplus/examples/commit/637ef15fc210e5785bb3f9a68769392ca36601d3) | Waiter (arbitrator) with a queue | global queue | no | no | no | 0.73 | [open](https://will62794.github.io/spectacle/#!/home?specpath=https%3A%2F%2Fraw.githubusercontent.com%2Ftlaplus%2Fexamples%2F637ef15fc210e5785bb3f9a68769392ca36601d3%2Fspecifications%2FDiningPhilosophers%2FDiningPhilosophers.tla&constants%5BN%5D=5) | +| 7 | Let a footman seat at most `N-1` philosophers | [Footman (butler) solution](https://en.wikipedia.org/wiki/Dining_philosophers_problem#Limiting_the_number_of_diners_in_the_table) | global counter | no | no | no | 0.42 | | This repository has specs of two other solutions: diff --git a/specifications/DiningPhilosophers/manifest.json b/specifications/DiningPhilosophers/manifest.json index 774f118e..80ad233e 100644 --- a/specifications/DiningPhilosophers/manifest.json +++ b/specifications/DiningPhilosophers/manifest.json @@ -29,9 +29,9 @@ "runtime": "00:00:01", "mode": "exhaustive search", "result": "success", - "distinctStates": 731, - "totalStates": 1951, - "stateDepth": 8 + "distinctStates": 81, + "totalStates": 261, + "stateDepth": 6 } ] }, @@ -61,9 +61,9 @@ "runtime": "00:00:01", "mode": "exhaustive search", "result": "success", - "distinctStates": 731, - "totalStates": 1951, - "stateDepth": 8 + "distinctStates": 81, + "totalStates": 261, + "stateDepth": 6 } ] }, From 048764145a337a362be7bcb3140c158ed06d35f6 Mon Sep 17 00:00:00 2001 From: Markus Alexander Kuppe Date: Wed, 21 Oct 2026 11:29:33 -0700 Subject: [PATCH 11/14] DP: let philosopher N take its right fork first The footman reads the state of every philosopher. Replace it with a rule that each philosopher checks alone, the order in which it 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 | 9 ++++----- .../DiningPhilosophers_anim.gif | Bin 96557 -> 60149 bytes .../DiningPhilosophers_anim.tla | 16 ++-------------- specifications/DiningPhilosophers/README.md | 3 ++- .../DiningPhilosophers/manifest.json | 8 ++++---- 5 files changed, 12 insertions(+), 24 deletions(-) diff --git a/specifications/DiningPhilosophers/DiningPhilosophers.tla b/specifications/DiningPhilosophers/DiningPhilosophers.tla index a289dbb5..76463d8b 100644 --- a/specifications/DiningPhilosophers/DiningPhilosophers.tla +++ b/specifications/DiningPhilosophers/DiningPhilosophers.tla @@ -27,17 +27,16 @@ Init == /\ forks = 1..N TakeLeft(p) == - \* The footman seats at most N-1 philosophers. This conjunct reads - \* every philosopher's state: the footman is essentially global state. - /\ Cardinality({q \in P : philosophers[q] # {}}) < N - 1 + \* 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) == - \* Philosophers grab the left fork first. - /\ philosophers[p] = {LeftFork(p)} + \* All other philosophers grab the left fork first. + /\ p # N => philosophers[p] = {LeftFork(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 628a1982b08a83e958321aa3d59c3cced5ce38c9..d88a0f83cfd939b23e1fc82d2135e67aa376d882 100644 GIT binary patch literal 60149 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%0DSPnsVXg&T#)p*5wUMX8prem44-8E$XL?ROELs z{m&0>uYTQn<1iL86!qk2EOqh6vx9YqsNHWw>{ag5!za~G=UXqQJz|Oa*y96MD18;> z$5TAE*b{WxHh1pRm5_VCfKrdi^^T#@m%6{F=N<09I`jLAM#;-H<-PX@=dq=2Z><+X z;0=I?Cy8+WM0fug_(BtI5fB0@!!B;X8>DfRj=*^B0HAeDFFIzZ!y{hE|CMmWq%@9) z5P2Z%&M*`;D~+Qi$Fz9hq7U4?K~YNx#;K;T3x~1eh&Ug`xFKP9uame0BuYBeR2Xv5r>^ z+VH?RT8A%5`{q3I^TkBpS4yY=#{`Q+EIGwgXeUO9BwP}?O$}+8BMEKJxXV_atEGvA zLkLsUFrzEgpgJHdp#v{tunfZRL}UzSUQ*zp#~ng^G&s3Jh>0KsM`6QfNa0zt?njB9 zZxFFdesJPYQr|w}C=r{K>mS|`SVc~OWZ)QvalIm`!{pSLovCB9e-$YTk~pPId}B@g zt4NWF^PR+nS>pS{zls#Kk+W`{_MefdLw3QA=$=6$bz5oAI^9g#U?G(CG8GC_n(z+m z0iZzbc9Y{nO&6s>>^bSjoiH=$sHvLtzbu$0vC~l2Nomj%EmDrVN3k&oV3R?`!PJzB zE!HqIj(D-zWH>k(pYI}abipKQNo<_|ChNEY(g9mE(0}Wx|0C=Cn^ntP&LIe@H(wb3 z?{JqsZ)kBz`BxGV7gXCe4A=lj3+m?5KcE(BPrZ(Gp+JL}DP~`QfoBzI{tf%I*HL91 zqNZ+J+bt_?kJQlK|JWV2+;P<;&UDx_%aoNrdbs$Q8unrD6dmF1#N~)3tA{lHgS!NK zuKO+zC71fy{L@oUcz5;vf`|#rSgA$|?>TdQwuzzxB#OE_{CS3z=%@8m1;#f^-5qv+ z0D^l@BnDH%K0GqzOGRaD)UeNyh0w6dz5LZD)Uc1(Q*zQX73O_v*vI!&bCn$7^kJ16 z_Hjhi9`$&Xw%oh^{P^1ej`{7%0lI>+F^3&K%A=Dr_oAdh|)v9IV z%qUMI0_oQ?Fjv<(GKgbjYES*_I^NfyK*lDUn)B%=sp^qG(^4?sX330NdKF>gBKuf%s%U$fw%r--%9s=9z0>n zi;wu)JpZ|=+ds2EX0ljqyQSN+MKB!qsCTr9RbF~g+PF;`ZAF`@j+(+8f^{u6CiJe$fPc!BGDM9<#&3$()GT*`j%irp7^ za5@e}gw^G231hx*{jBE3{sZhbZKwb?L7kNm_3S4fhLz8DoMcH{=R^G%lb=Zi%0r1S zhIvh-dx2ch=hnVcuB@1jif3xxgrE!<_%VD~l6asJ6hx=R;)A12K5MIDus367NHkW` zw?i??U|B0hSsj`f_ur`vB*rU4yubI)c~(%Nh%AB6fb}LuFk?(MMFJ1t zQyN`sC{Ge94C>1j3ETLs!)|`M6Q&hEE3P_D+kCT?In=`_RYaT5d1s?Z!&U!0zemOZ z`?+h)@td?|0mssHpBGhG7W#dj=-`Wb*H~!P0=p%98?Q!g3|TpvL|$j?HAW{`-tsZXN_9DU`EQPG9)wnc<+oRX6XDo$$;}whbubVCK`RmFj=N3Jgx7) z9y!m!;G01eE)ElsdH+0eKHPGm^UrAOQ;|T#?4IAjJc?KRZ*QCxMfm>$cPS!mhq#I8 zoIN9%OV;GSJ4EoFJ;wqm(-e}OOd5~jA1|dO3QY|qJMHnG^><-V)AV<@laEIpv1(sT zYgTZ({o?Ge(m`1Jw`AY`G4Y#M4FwImx*I+z)j26`j0iKml z7#5CYMmZa}y7@I<(%=!yTr13nZUhd+b(&;lXSke)@F$^NW87^Zni6%^dK!|6W{XPNG;cI&KUsF8YGOgaX6Khz64agjH($f9MMCaPc>tfS4WHnD4z00y}=}b{rzDN~Sw{V#tP_fH7 ze7^CGyL-8)3s6aIn3`brZUML#G+skV#K^Z@J80O@kLG$!IH8FJ4S1@zG{u*6Z)THE zuqJAKuktVC)C75LnO~8G)K4+jCzNkks;Cpt4Q*D&=jv@|UQR#i{@;;xw5VT|(b@h- z$;~8ugUdDcxtEf`E!iy%?lQLo$Ud5_r60D<)Kr-%1(t0>FI}|^xNYBrW7_N89=O@R z8*4i?)qM2e{!XmZuj{X_0y_%dO2mX-GD-x5JUZVC8s0vL_oQ78c4GfxA6a1ep87=2 z0O?A&Dw3}9Ip@%3*ht^6M=Fp*Se~^@YBpV*OTWz__8ufaT zH=G&H4|3n?Y2>05zGsR+KIVtY0Kf*T#|73>6UN`TY;V6?q74z0t@;+}9qIBUm97{1 zzR6er;*CsTSigp3i^GBo% zr-P2UzT|<(oI#lDqcwDMa_ud$@Mu?mP}NKSuLf}TiX-W}Rni%B64`2JTzOQU$(BDB zUssU}7fHLjrySZ$)|@$<(j1Y;zQ6TY+?WPxF4BHq?KkT}%g3h*Ao=}j<)iXw{ zcHH0%dAnELlkI=n(=`{l?8f*<`y`>w)Uc45ne*hx`;iu%A8z?J^7H5z88vx-wHRa> ztf(|K#7)TY_OJfQEVaI~vL?wUR1$6eEUornEZJXUZb41PTfWXIUV_BW`4ZCELsyb& zLT#j5&8IvaC4P;xnr78L>=OkW`6p-f!K(U3`?z_%hLc~|kO83sI!3z&r56PmPbEhN zRhVuMI>fUHrg!z|qVPW6f*%BJR7THTO*7)7`6zoPT$YJRnY_9npt_{;ppXV<0{p#2 zBL!j!z7v=p9z4RW+dUN_%jD0u!eV^pmuQ1iAOW|xZCy>6?wDX*LJ4d;Umv^xSWZZ` zUfk5l8=jwg$SUYc`vrF%bR-n;vai~HN6tlg=}u;R2OaO1;X~S$uU||_+fmj-o9{}7eFji)#qqGV!+Q+!Wm7&OPToc?V7xSFw{aVnr)`segh);H=Z zrRKoA$1{w&u-wMoCBfGm*A}jSI~J_&Ld;n`$Bc;(4ys*OzaNC=8wZQ#I_VDH9N&mG zT?wKgN4V)QJ?WuO2*!H#(9_(<1=*Mc$H8i|UI%YpH=8g=A2NGJjdvm3S z!6V_WP$)-7UaY!D6i|j~hQz=k;weKuYta-Y54mGWaePB!xI*BNL&ghsfC@-*!NKw2 zR7M{nTF=@)4-gJkb2lb)eA32Si1_7^{D77C8`QaYKd8eYK93Slua@A3O~4-F*@VNA z-#Yl#aA2H30FlHIr@$M*iD4!nOb^Zx3j-kF55a`9v;co=eEz94=vozls)gv08BLd= zuZ5CAnn9kJDC!dL0x78g%i+|N_&tx&i2~hLNY26#Rzsi|3cP+eIdPIOkO&3zsJCKL z63P+>lwjI87}H=%;!5~KWJo>$Kt6Qt4@DLN05{N)*Ezz5^Y9ICQUSzI86migbF@@POJm0ZvKU!U^utGfR+b@_i;1s=^4z2xaU z4Ej%p_IlihP4SceHlKROQ!>5yzVSa#`Af zRFi*Z7aIIcUGik`mBr~aud0R?3O=K|&GU&mpZa$#`De;ta( z=0-o$9X|npk)<4lyTbR*eS+33$9~@NSPnKi8KOSrd99Y?Hr|@7B=D3d;(d`N)s~5Z zxyaeuDAkR44xvYz<<=Zk%1Z>PX{?Jm-^<}e;^qBNwq(^m``PK5XOqlW)Krx!GYk~- zO;dHdtID#>EjdloOrGVI=GX=6GH2TS(WZBH$n|vBFi!BaWc7HoC8Wkw7dBlOR06Fk za-URlDUMW4if0X-f2-*jb#~shC}6euep%{wf@Z1vote!_r2ra{%8&-kR+SXL*hYC# zLN}@^q*C}(Eq9fuM|{nrm!)-H)2ADs8jkz}JWI`D<$P9g$sa@}+iCIi;VwQFubAQ zbw-VzJdoi?JTYbYc42Et=XZF6L=S&QgDLy!RmeGvX#IltsN}}&OyD~!wPc;P7@Q)1ufr~(uG{N(`^eA_Q_DbAE0O)i?J)tRJh}- z4_!_6xN2gbV(%`kzp`z5G_85dr(4tQw_<_e`fm5AU+>wMIe)NY;YrZ!Cq&d6H~+(4q&Lde&rUf0o5zYot#$Q7N9 z!>uMbj|x&@-+dL#1io0r&F82LjI6#yC+X`oowemY)*!W1S{4nY6;@pd@%>rv@2@c^ z8xRWw+d~UmgBGF*%I1M!NVv4%Vol$9F>5sw&1%*{s_JU#T_+^4(2EM3i@adytIVX$>vh&RR4P;uDw$j0Cd^GH})&pV% zy~G&##<&oJb&Yc8cwsO*D8BN9LwF+d~NMm}S-Iva%ors}e125!+I zGpa8OTe2jF$@j6 zW&6H-weGl=?T>=lu`0!mk#V2!ABD?|)yhM<69EN3iZ*XENKSK(2hC>`?*@5ruIRoB ze)%KjXXVC~E9BExpN%tfomy)X&&wOp<= zh*GC9-mr7VuC zb|L6SWG&$WA;AvF1`17|8s#_d? z;Xco^J>hd{f8Ao&f4Rk*GqWjJ+b);PplQ#IVkV1LQ{{jsD|0$Wh8k%`(|ZFqqdi&V z$CWhlhcD!Ve(t}l^y~QsQylJ6+Nz9sTFzEdnjq$t(c&bGuxcXpQY~Xat);pqp40C8 zM(PE+7kE~Rk&8*sB4KD_S}o5vJoni(*K3A_>czd5&AaE2f^Is4JWeYIZ`)FOnTM1X zdeuzDEoD9V0MnG5JfG^cmCuc8Q2kQN!LyIIpX^OvWLJ4UEX$+!dXs?=$`MoIvrJcRk#yS!|-v{aM#M@BKM!^@IKS+Z{Xm@BD@&4i&Xv_j@0kHH&(vCf6jU| z{@$nlc>X?EPL%p{xSr?x=V-IK@z3#g$Jal**6#GF;zL*yoAN&$k z*@n-YMu@baXnP3Sf~!NM;THmmCP}<5Hxb3kS|Y&)$>_FKmO_G-ghNJ(Q$sn&##=41 zv`GgygH_I)oI&A-GB)09Yuq~QLn@N>X~ERxfmX7P>xbQRoVm;SZ*0Tr-TtI_`StV6 zBg4<3Eg9jFf`av|EUGjCnP6smrSjfX_s|y3F#=er-=tEXD~Z)yIu@OZ1{p5+@+@w; z%2hHGu~-f6_Ur`Vib=SK({MKOJ1rm+2Ugf#Ax9X~ab*Gkl4DZ2t#1YutEfMoUKLqm zyZ7<9d|r?86+|l4x*HNT(&nLsYuEJs8l-_6>$Mi_wz&)6HzDl#{kW`4pyeMPIlX>Y zh#&TaTSvZtnHb8&Rzl|nMo|J^<<0UV9yuj(WR@oQ?f)oWThL&!%fA|OL-%@N_ z8L=y>E|WZ>V>#~0xPW%Pha}c2GiLymDjSRW*lRI&Mp6{A>F;xTzF_Bv0o3_oU|iG) z;h2+2{>$vDVr56At97sIi~>ua)NFX+RGHPsZt_{7`_yTi7zFuN>N#rFS@xITJW38c zv%x(i{y=ZWJIIvH%NTAYz>-wKRCxx2eSvPl#jDu?p(dF48yvS1gtHrq?>xA8{fJcX zR2|6Su2qjB?Z)$g`J33Aw>S&Bt*gai^VhOI%kkf^%2X6!t7#V3gm6Ppr&np983>GH z2H#MEK@2oeLlx3eE;MZ{fJIw;jX#sC(=U=y_cHHAW!pW)6Y5ycDtmJ7`-= zNs!MRosTbg)0OgOSbU62Q;ly0Mpq`Oe_qx^A@txGc6sw)-PZWK_H_IF?a{#Vv5U>q zeGQrlVy5R-O$Xl3JdO~NJnUDqIBl`aTkspjoui#SqUCF#J{{e;Zvy2>`@Jbz@rPAj z&fh<^aMKz!YNx{RF^4p5v}N8J6S!6Si|Ua>-pwh6YA@SwccREw>d}htY+@EV2VrWo z=@BPR7O_&p>PC`sMY!r&#`msftjsj3cJN}-&5vtsNCV> z2fLC>Xy`LDPZ52d`d}gTPTY2)V>Yuf!u?3(vTyQ`8CTb-k);yO&@0YwVNJ#`E`D6; zZDwIn0oclt-SR0cKD2j5`s)Vg`^aZ&^Cuto9dd;&A2`PCUD{l8jprn!J*&O?>*H(j zjutY_HkPf6&j8o0e5w-o1Fy-micC~i74^Yp?R_5RqG!o;itpwwgLfkbW%mDI)gtUF z9`LHj2Oa5N_X&H*c7F5OS2p-Wf;vYxVt{>`>rQf?-6#JKV8seGB30t&o+$+jUz-b7 zQF2)kb5!R}P)nWe_;W^kd7qOE_^c)n3pL%Tlxw0%d;jat!7Nf_)%S{VXZlOl>xhKU zd5!pLC4OdYr~1d&?XLz;WF9?jdn%Iq{KO8aMsY8VYGI9uXg!n7 zHJ={6-?%a|CCu?5rNc}qwUpueV+W)*!frLl7OjNkVz;8Z1OMKEdzJ|Qk?ls;?jtr7 z{bwc|AcFG+0j6eLQgQB^uZ>{CIQ~ss>6@E$`0$tfA!}AKA2&jX(m~vzj;GmI%|Oxo zp>caNy1#R-$I7=NH@dVX zzy}cjkUnCv6oFlimAwy%egxeLw0n=h8zc27ZE=@CdV@MrL>*9hDMKG0%+?9m(1b82 z0X_Hz#u73po66AG{C;49)|V^f;m;jIhkIvp2Vgw}-mUeGOKsj#BF#aLL6|?2Wd9qJa4S3Gz*;0Ln4sy*T z9Lf%#@ynY%|uCz2I%?&d;NSATG zL@Y>yL<(Sf|LBINb5N*Qzy%mf!yF@v7n^u8Y^(=Vvjvh>t*}Q~neE~?x}bKYSZ2L) zbTUG%*T_uzo`W=~5Ldy`T?w76WK#u+Cc?~`{JN$YEyEFG6lgU)yq@HzH3}S(|L7b4l2o?2wj@!Ug+DY|V9MZ2 zr>Fzi$oYbCQHHtJBS~JPy;sYM{Z#bFUDkqWZ2ht2&nd=GAAm)sbjl;Br_y!XF5>CC zk!1Ev{#5|(;7uw6^Gr#y9lNqo(GE6>CP*NY7gr^=1{_+z$*p7#IK?8U5+b7zn|*Zs z?ne-dRdZ~1^w^&E4G#`&rMGwM31;!adz>p=>H#!5K%BJ&%2>{nhR-SP+MIiZxBc7i z{Z1JaY8v3>WV@|5EvJc=7^YlZGXbEP_0p7^cK{A31SSgl6)$gOq90svX>BVmh@ZUfX0LFDC2H$`4p*l4X|{@ebqE6EK^H zmx0yd^z^opD($$oGoj>?2Ni z=-(@dPV4ZIJtv1HAMx)M1ii+j5{0j!$&Sf76R*#G#)WzX<=%4mgzlE5{dc6En6 zfyQ_=1_K}-e|f^N!>@)3je$Lbz4j0Tym|5vd|qwI{1PC38yWufjny@=Zc97azXfu2 zm{1FKFHSo9HqWAy`( z56?|6;XseWw0(`angL`Fo=Q;dCBnXp-UBOba!3iHSVsV*5G`!7)X7Jjh+fHO&4Zr( zIZcG>T+$anlae4`Vx00A%BF!2WSY902r$qVI!$%rNT|FX2K00WUy@~5Xh*TAmKC8H zn_2y~c9X65M%WrC*Z62)kuwMc%+S8Po=^D(r^gOe(=&96uR z<5d=!SO)R+heirdPyqL4fi7JtwO$Y-D(N}m8i|qubLvPVtuY+?EP@T|BWR|?cpy~M z2(x=bJkL`{${H2lwooB@f<^r7N;{(qbQ6g>Vs^EaNyA{)(aX8Y?gerw6@-r$I&k`N zMHz+VPoOH?VWm0=Q#aTzS6}rPIR#M zDpFGPv}q*F#6``UKdBhW8g9V@K^;38Cl%}kR5jIH=FO{FVf}vq=YcPQg&8& zd`t6pttsD4T6>1DEyXC=?!&jWHx%F0nudfVm3;AMW1GYp-)^o*c$f)$Xjf->aYLgz zT&C27SWBe>#ryjFY{=1|z5Y~8y(uB5RIPdI2Sv}SH!9|V<5P%TT&%h7o1cv_FMtj) z)-W$gFh?@5;pRrwbnl;CmghGbT-#MaLw_i+tnqEr*Pb>2evQ`BE1oRVUUT;n_S-fz z)y*z3^hnLZ+MA*-c-Yi4x}G8xA9X%(aq+BAHO0zy^o;X!SdQMv1s`-;6-nIkPFeW4 zDxKc2QxRC5a!qu1I(qQ_!{CSztM@{5HSge!TZ+y2&+0is^DK?w+~)6BAF&F0-)M}? ze{DZ~x5F^Bu<>r9nazBOl3>BRM%)<};MD3*majX6PY)HA!C6{eaZjZpIkuN!S#F(^ z>?5%z*cB!^5R@|TnZx!|23&6Tg~&rFix`)4hY`6?H0_(A2F6a_SA6jy9j9YX4>_{K@qE;A`l&gzuUoUS^MN zd$$Z%>TD$5TD_a+ubH?n=P(4eP5C+9quo|@>FKBw_pgEGi3?Jeq1)~r@gr-}0s!!* zTRy6f=Y*cUq_x-C@p61OH#fcixqIicugj%(w9Esa`Mkaa3m6YmTpm5%C?0h_ACLH6 z)$xql7>{UtJRh;x@gQr*cSZ%Ve1Sc*MvaJw&eBT@C5hSKY>tctIeUJI@=tHf@^9=kh2C1Rfwq z!X_PiCH9c#E6+G?UyYCw< z{@ycXdy$NEOUE-el=ma5e=o-g2~RIw-h9?5E%{RNq)GbyH&E|@Qw@clUg-IYOxCNP z%hE~W;$_D(*Zoho!e0H}ZOp%WDU5b%-0=X-cklOZ`ty^G>!-)>PX8Rfdj99&)#;yK zR4odLqgBQMt#RN`9E6O6b>bLjaZHCe1Tuz2Ifl(T=4@yTk{rX;8N)Lh!+RJ*t!eWs z#|m1IXir*Kl908^ct4Yeqp2)R@=tXu=QS)9X|=LGb@8Q!l^ zE`hieE5K;wAdMo*^&}w5-DcQHy?8mf!&<3;;xL2PwH1N&VwBcU)&rZ@sGxXE55q{O zBE<=q8fu@01^$#JvaWGHCJ^h%LJLTl24kmj5%oF(&_gb5#WZb0S^ZHz|F($ahnmDE zcc`C7`Ug^SlKQU?(*W`wUajdBQ}7%JX_ElFrB13>H-U(%lLkl+TG-A&(YlY~Sv-Y* zhZ4UY+P@=b1j{l}cQn~OL85e-A?isyVQDv(-9(^*!#C60?mz|iGtqr;<5Q8WV!V@L zl5k0x+nF$^B(=e9nudmw9MRgEBSJ)H(5ZFmQaeolNMMa>&yy50V}QBCwy*myn$_}6 z;$W-+@!F&$?!fFPIZ!jdn~q(`wI&$19Oy0r)>X<7EDDQ8gS1INOjG9V97a>WOz(W2 zG19rar40Qfa&i~B&xuF738Y$UgvV#Z3&rrk z3iAsJ@)<5Q=ZM{bVx&oxD#}&)40U0J$)b$com?}vw8#jq)-GfTHMg2nI9OY#yPR$G zR_7R5L|Eah@hqCEWzYo>AJ*zbVmT+myv&xtQ%A-90GQe7K6weE`7~7hT@tbu2h4|- zOzDD(DU6iiYY{=PCL54Leo3@Hcl2_}k|?ZMl&SiVObu`R5k!-n)Xhk++qL)HS2%aV z3cGrM&c;9!9Jy145jMx&;8dWEJbV5nRCBeIFbTDCD(Xf9^_J=H8UvjXWpz-9f(jFb z!dUNDF^-cG>_(bPLk9CfTGEV3`Q=xW3(K8==*|k@D)(eqp#ce$tiq_dOh4oaJgTi6 zGa({jB~fVLjkzTc3F&Jhl?<6;b7j*BXv8?2;kmtGGI)JiVAHD5(%N^}=1 z)-wi9)e=Kr@_=oM>O>j!5U`Ydkf!nd!Bdu+kr*H$xzHH^O0faz;mWo73e)P41q zNA#K$a2Wz-fCd`Y6~r~=7S{39Gfx`N%Vx|fsi>Z9U_x`HmJ`<-<> zg=o+p(PD1|cds7Lf)g;qwxPC`L7P%DB387$)lewPXznEOx`2m24AkiLAZZJ%Ut0Sv z8M)8|wB3C$@rfSecmG2-lF|gUpwthlF#6zttA`IqdZ`y4usyk)Rq(;F9?vQTs$B|- z4=?NnKx{GjbcH-r4x~03R9edLNsqA`K@~p)&mT3>$ucEd#%u2a&CwwKOKxM7Qr=M> zr&tz)7ckZC7THU!@;6!)OCws93tLqmw_bkNdi7T;n!8Q?Qk&+DHtmQuOktbe<2HkL zZAQP^jJexQFSVQBXt#`Lw=QhA)feL{ym;fY@)$ba44~*3!D`wCjZha6yYYyJ8Ggur z&ujFN0*$cWsB-|rt&1idw<0m@6sjb?>*Owz zA76$t%rnw5bRlIx56ij~lDb|!lK%IjRe*Z5iqUfYk4NkOWNUP-&w+F{joWj~S`G6S zoc1|qs^Z_QJLSNMBE^sIG_3vE(s-=AQ;YoRo@c0uHO-J6RR7Nidu#am)@zh;+1l_^ zRA5l4xC&i;Mp#|@gLnT-t-YK4r{O8{Ps8)+zZ#ws@_^UxQ+E}F!%wYm%ync)Ia@nWcaU! zr}N1_4bN0+!_%X=$66nnMs0Z7VXKx0(Wn1ZJl{0`!>hbv=jhT0J+a_2<*6DR#3TeE z0bNv}HV6=zNrQMVwN65fx{iugQvJKgnScDd1lP^3YHIE!coU_im+=i2Py19RQA&hs z#__LzM~@@?q%LKOlvDjXt#%;VonDlF6vOf-nCjn=f#`(uR0MveK^1+PxPPjew&&du z=leNtHI)Z>ntC`&Qv*nMsQw)!)ZQ5KTNdp8FaPdDc;xh97G;N+Lg*8|tqN ze;dS7cQPjA6VoP5LmiLb2vIAaX6Dg=;h2wVeNW3pdHkNl8V3IGtn+kklzzKWTT@jh zrr8oCOre^1rz=z!PdsO-p{WN;Oufum>z?aJrbnA#Td-mP4XEn{)4&=_L}tDA#hte5 z*cYN$7xMZ!&cM_=Wa|ZWunx~sJbj{Wv-sH$u~b&Jm1ECS)xqXrruN&h_E$cOx1a2P z{+jT&_Zc8&DCZaR=ctbba8LbUTnc3QdbE!&royjl7MOcqO(SZJRYmozIlS*Q_rJI9 z#l80^YxelA@R??LVV&CP9-h<)^VzJ_l&5R zE4Oy=v2CWrW8+@R!-(lh9ahCJb&n-4f1XE-x9toIKSzBk{rc?E)&h?p)8ss(@0HIb zat}}T7dnKPRwfd^9&OVZz8d?v+4#^KeCDt3(GJm5tvh3(P=+Oi8h`kUq=~zOkw z$Oa7RA{g1-h0?mqW4?U+NvMx&o`SmdV(?2rbDysr9p0L?Sn0H2lK9m^D&aT_Eax-a zFT^Dn+x-H3QID+PW#At&hSR3z!k@d7UL`p-IDaS^VmSBxOLBKy(eKWh9``+|R6k(Z zZwOhzy{Rv?Jj+ooZCHCxO)?D^w9K=W2KbtzQESS^@HC-!Q?iX0S zY-RXaRHkq5VuCAg^1aoCb)AygXKh$joo+EtI!g2djUGvrbZ@8YBg&xaWCK8g{N_PvlcH9 z20Po^-`pR^d75>oO8AFLX0bg1D?XG_OV^Hzta)4~Z{7R$Q9v5Ezi0VVZ#IkOY~|FUr!&V5*~hVLjj2TO_5|?MPYLrDGBMZUV)(>Z zxT1x21NPcA{duz;wzAKoTAo(*)oowQN*ag{GPk>W15O{l;%*uD&a}HRp7LqGgJ-^q z-#^T7nXBW<(wZpuOb2mIwd2aIh(V#5kmnn=R#$4wzR>E2EPfeu_a4J|9gELg{aTQx zpplahir-Lir|dr2bu%3QzMooYD(U-y*m!qq3jSov(08(D;V%6)mw(U;_XUxgve2<* z@TJ3E#J}fWni7=8R+u6VUr@s?1RVpaXMET%V$_^$HMV;8@!^1UT63z0!5Y{9q|a&R zVu$49(0sU?kyo@1kvbZ|_{heUow$m!l3yA;`i^Vnaf?IRjDEz+s`oQ~{OsPvXD!(p zl5T*I46!*KpT6@We`Ud5<@MZ{P1Sd`y2y>G08T(4FQ(vEk&TK#*hH|9ybFBX9UZMQ znJg(@@#^*_Mk;uU=<}mgBFa z%bGXlFSKiMQ}?ni&eFaUysy~tYuDZHl$GP|vLYL!vrnpaENtzr9BO`dC)kB`aiOZu z4OH&!!_fDBR2=vu1ML%wET0ETDfOVj5=8udL4SdRx-*)-;J#a`mot_8_cWni zx{qBwgTbV;7ov-a6obUVe00=y($6@{r2=3#$?x~N(dr*FjPVz|JXoV4Pa#7xpld~c z_PeENSyU(W=9c{S`Z|B_v@e5}UNEzpBmV5rn}F65nU7vxyCPDue9{nsg1#VJm03XG zK~|?xCFs~wW_9K$XF=yPoWGvIf0l&VL!yz^PP77PWp}wB_I)XZJd@U>!3zqOGpC`Y z3aA$dAAWQ8|S;I({r<2-=aQV7vFW{wYG2LR~ez+O%Cyq)x3IIu1NFi?$K zkYnmy{(IH3i$JNqRbmfBTse-|1BpO@0Hhe9&MWEYIHDg|8$q3Hi_;`POr&EkkuSfH zj!X56k3h#8TgRl9f_05!bupJ#dSVU9Kmr2qFbg37K>B|8b`2;y7HoHjcN~V8=iyw* zDsvP_1ORZoCc&$dUY8Q-3sGL{f#^DcgOP-!WxoiB@?8?}B9h=W4Ds3k<4*~Sm{M@E za#CUs&}^4r5=Y2VPD)0AK!hZ81r*zqREfb`LXu_UfOjy-S!BpfLh=>4_y*;qR2=vo zBt<%l(5jq-CZtGZ0Us-;AU9GZ=u&$z$%ZwF{bX5fzPO>zq$FJYC|S1UFg3XbjFBda z212GglkV0Kh2=mV6k=g0_$4Im4=rdNle8HsYu}j`d`R5cl(LXc-o+*=E2p1+PdnJe zyO%gdQGi;QB^9sQuzyeijgv|&Wmt-hK~FbIRGJO9b?;fwz%7=c?-TDy_QLI& zpue~7otuQ)l|t`om8zha9B`%X6{X5$P>Uv*E**dZC{t7m24%qh{n*H&?rnAd+ul}F z>EFIAQyaguZdT%%3_;!4%2mxoM4=$FvR2tpI-f=|k8aC~8sU;WJqMzQGHOf`L_sP%PI;rR6#{qLVLcTo4XXdb^m7ZJQmh2#4w1mqoJFIVSK z;rPXFtQ*aEODY^cqEEE3IsLTi^~~d=A1?=J{W+lPN+tehk0ZrF)SJmFS4F7-Z z-^&o-nzwByrl`3c>2T=@3#f3fe>-7xP*iK%uNN!Z(F+B33$W_Sl-obf& z?H3b|_?4FfeE6+WSb4L_F} z9DXWtWoE_IDPp;WY+4z>TaPl;C)Ka0WbZfobaQfNd4~FnCHc!f9a$LPW~AB{Hshs6 zs9ywQkKf+FtW^_MD>Q0OTBuTZyoTDfDBM6Y06(ycaONv@FA<(pq! zaS;_@dh8;-(`@%ci_nb5Og*<9MFAC?y)q|k<%oUxX8Rr2<`(&~XPaE)_{F|FS@S{h z3F`uupN#MJ+%|1KBHY{|)Ftg!V0hngw!zQLsk1x2u4!4I|;H11zZ3gZ9HM^j)#UqfpZuSNQz4S`~FCJ z(Z`2Efewy893~l`{_&K3R^UWQrp$dT@=TmfM?_~#kCPYnIKk_n=&#_|;jk@4r1RyL z>h0ws%wHQ@o-%A{bdlf69v`bBdR0l_qX%%cnd0|HN`F3|N^NveV2%Y{^!4!4uh$pK z`RBY?!u^F^DDug^-QQn47PA)G%xvKO@p$->nqObmKePV8c%!hlqGWN{p^Y4NrwRoh{&@V9X{P(S2^S|6-Dy=4 zmprjfL}*f4%n=pI;~tJituiy7C|jCUy1QkuN-vzEEb94lyPqBF)Rj7qwIW}d2V1Gi zY}9$Iks0Y7ZT581&MPYV(JxOgwK1ALNk+|3`{b1TCqdo!1JX176%^-Q#hYU&)ksbjx#g7tM$Hgu$8`WZl7_XNvmX$$kJuDs$GFHc_9mLzggja z^yfvlE|YfEtt&kJr4CQwYgw%GSHUyA>f($=7na^!z0xf)q#Tb9~hed(Vl5wMWY zwAIcwi$8Hy$P}rqD;;7rL#DqvxiaeOs))0z!nU8fx~}T$>IB}^5y!o*ZJPCUO@=QC z`(-IR25s;xvM0Z@LBioNy?1!imN1E~7P#GFZOE#Zu_%cvIO1r_LdCv6Jk3R5 zF7$A(&p9ug);4qX1SWc+u@D;io=Ki5O8 mwW8xgO@ttChDkGbsDNP0(T$x;Dix*L!VH$av;o~HU=0A4axzr_ diff --git a/specifications/DiningPhilosophers/DiningPhilosophers_anim.tla b/specifications/DiningPhilosophers/DiningPhilosophers_anim.tla index 3a6d2e17..cce05147 100644 --- a/specifications/DiningPhilosophers/DiningPhilosophers_anim.tla +++ b/specifications/DiningPhilosophers/DiningPhilosophers_anim.tla @@ -46,12 +46,6 @@ StateColor(p) == [] Cardinality(philosophers[p]) = 1 -> HungryColor [] OTHER -> ThinkingColor -\* Philosophers who hold a fork are seated by the footman. -Seated == Cardinality({q \in P : philosophers[q] # {}}) - -\* A thinking philosopher waits for the footman while all N-1 seats are taken. -WaitsForSeat(p) == philosophers[p] = {} /\ Seated = N - 1 - (***************************************************************************) (* A fork centered at (x, y), rotated by a degrees. Unrotated, its tines *) (* point up. *) @@ -104,8 +98,7 @@ Philosopher(p) == Show(right, ForkGlyph(Cx - 22, 70, 160)) \o Show(left, hand(Cx + 25)) \o Show(right, hand(Cx - 25)), - ("transform" :> RotateAboutCenter(t) @@ - "opacity" :> IF WaitsForSeat(p) THEN "0.35" ELSE "1")) + ("transform" :> RotateAboutCenter(t))) \* Fork f on the table; only its number remains while someone holds it. TableFork(f) == @@ -125,12 +118,7 @@ Legend == IN Group(<< entry(0, ThinkingColor, "thinking"), entry(1, HungryColor, "hungry (1 fork)"), - entry(2, EatingColor, "eating (2 forks)"), - Text(x, 32 + 22 * 3, "seated: " \o ToString(Seated) \o "/" \o ToString(N - 1), - ("font-family" :> "sans-serif" @@ "font-size" :> "11" @@ - "fill" :> IF Seated = N - 1 THEN "#c0392b" ELSE "#333")), - Text(x, 32 + 22 * 4, "faded: no free seat", - ("font-family" :> "sans-serif" @@ "font-size" :> "11" @@ "fill" :> "#333")) + entry(2, EatingColor, "eating (2 forks)") >>, <<>>) \* Scale the drawing, in hundredths, to 600 wide, which fits Spectacle's pane. diff --git a/specifications/DiningPhilosophers/README.md b/specifications/DiningPhilosophers/README.md index 601e8456..b9cbf369 100644 --- a/specifications/DiningPhilosophers/README.md +++ b/specifications/DiningPhilosophers/README.md @@ -18,7 +18,8 @@ commit, the properties for which TLC finds a counterexample: | 4 | [Take both forks at once](https://github.com/tlaplus/examples/commit/de09177ff01f1c821ce17a0243286a27d605eba5) | [Dijkstra's semaphore solution (Tanenbaum's monitor)](https://en.wikipedia.org/wiki/Dining_philosophers_problem#Dijkstra's_solution) | atomic fork pair | no | no | yes | | [open](https://will62794.github.io/spectacle/#!/home?specpath=https%3A%2F%2Fraw.githubusercontent.com%2Ftlaplus%2Fexamples%2Fde09177ff01f1c821ce17a0243286a27d605eba5%2Fspecifications%2FDiningPhilosophers%2FDiningPhilosophers.tla&constants%5BN%5D=5) | | 5 | [Let a philosopher who ate wait for its neighbors](https://github.com/tlaplus/examples/commit/173c60f8d1375217f61b901094b0dd36acd967c2) | [Priority to waiting neighbors](https://www.cs.utexas.edu/~EWD/transcriptions/EWD03xx/EWD310.html) | neighbors + atomic fork pair | no | no | no | —[^step5] | [open](https://will62794.github.io/spectacle/#!/home?specpath=https%3A%2F%2Fraw.githubusercontent.com%2Ftlaplus%2Fexamples%2F173c60f8d1375217f61b901094b0dd36acd967c2%2Fspecifications%2FDiningPhilosophers%2FDiningPhilosophers.tla&constants%5BN%5D=5) | | 6 | [Let a waiter serve philosophers in order](https://github.com/tlaplus/examples/commit/637ef15fc210e5785bb3f9a68769392ca36601d3) | Waiter (arbitrator) with a queue | global queue | no | no | no | 0.73 | [open](https://will62794.github.io/spectacle/#!/home?specpath=https%3A%2F%2Fraw.githubusercontent.com%2Ftlaplus%2Fexamples%2F637ef15fc210e5785bb3f9a68769392ca36601d3%2Fspecifications%2FDiningPhilosophers%2FDiningPhilosophers.tla&constants%5BN%5D=5) | -| 7 | Let a footman seat at most `N-1` philosophers | [Footman (butler) solution](https://en.wikipedia.org/wiki/Dining_philosophers_problem#Limiting_the_number_of_diners_in_the_table) | global counter | no | no | no | 0.42 | | +| 7 | [Let a footman seat at most `N-1` philosophers](https://github.com/tlaplus/examples/commit/20efef8f7b1b790d3643284d7c96434453580581) | [Footman (butler) solution](https://en.wikipedia.org/wiki/Dining_philosophers_problem#Limiting_the_number_of_diners_in_the_table) | global counter | no | no | no | 0.42 | [open](https://will62794.github.io/spectacle/#!/home?specpath=https%3A%2F%2Fraw.githubusercontent.com%2Ftlaplus%2Fexamples%2F20efef8f7b1b790d3643284d7c96434453580581%2Fspecifications%2FDiningPhilosophers%2FDiningPhilosophers.tla&constants%5BN%5D=5) | +| 8 | Let philosopher `N` take its right fork first | [Resource hierarchy (asymmetric) solution](https://doi.org/10.1147/sj.72.0074) | fork order (local) | no | no | no | 0.55 | | This repository has specs of two other solutions: diff --git a/specifications/DiningPhilosophers/manifest.json b/specifications/DiningPhilosophers/manifest.json index 80ad233e..f7a65e1a 100644 --- a/specifications/DiningPhilosophers/manifest.json +++ b/specifications/DiningPhilosophers/manifest.json @@ -29,8 +29,8 @@ "runtime": "00:00:01", "mode": "exhaustive search", "result": "success", - "distinctStates": 81, - "totalStates": 261, + "distinctStates": 70, + "totalStates": 220, "stateDepth": 6 } ] @@ -61,8 +61,8 @@ "runtime": "00:00:01", "mode": "exhaustive search", "result": "success", - "distinctStates": 81, - "totalStates": 261, + "distinctStates": 70, + "totalStates": 220, "stateDepth": 6 } ] From 57a50b9008e41e108b270b97ef804929c7c300dd Mon Sep 17 00:00:00 2001 From: Markus Alexander Kuppe Date: Wed, 21 Oct 2026 11:29:34 -0700 Subject: [PATCH 12/14] DP: 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 ++++++++++++++++++ specifications/DiningPhilosophers/README.md | 10 +- .../DiningPhilosophers/manifest.json | 8 + 5 files changed, 728 insertions(+), 2 deletions(-) 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/README.md b/specifications/DiningPhilosophers/README.md index b9cbf369..3b96a9fd 100644 --- a/specifications/DiningPhilosophers/README.md +++ b/specifications/DiningPhilosophers/README.md @@ -19,7 +19,7 @@ commit, the properties for which TLC finds a counterexample: | 5 | [Let a philosopher who ate wait for its neighbors](https://github.com/tlaplus/examples/commit/173c60f8d1375217f61b901094b0dd36acd967c2) | [Priority to waiting neighbors](https://www.cs.utexas.edu/~EWD/transcriptions/EWD03xx/EWD310.html) | neighbors + atomic fork pair | no | no | no | —[^step5] | [open](https://will62794.github.io/spectacle/#!/home?specpath=https%3A%2F%2Fraw.githubusercontent.com%2Ftlaplus%2Fexamples%2F173c60f8d1375217f61b901094b0dd36acd967c2%2Fspecifications%2FDiningPhilosophers%2FDiningPhilosophers.tla&constants%5BN%5D=5) | | 6 | [Let a waiter serve philosophers in order](https://github.com/tlaplus/examples/commit/637ef15fc210e5785bb3f9a68769392ca36601d3) | Waiter (arbitrator) with a queue | global queue | no | no | no | 0.73 | [open](https://will62794.github.io/spectacle/#!/home?specpath=https%3A%2F%2Fraw.githubusercontent.com%2Ftlaplus%2Fexamples%2F637ef15fc210e5785bb3f9a68769392ca36601d3%2Fspecifications%2FDiningPhilosophers%2FDiningPhilosophers.tla&constants%5BN%5D=5) | | 7 | [Let a footman seat at most `N-1` philosophers](https://github.com/tlaplus/examples/commit/20efef8f7b1b790d3643284d7c96434453580581) | [Footman (butler) solution](https://en.wikipedia.org/wiki/Dining_philosophers_problem#Limiting_the_number_of_diners_in_the_table) | global counter | no | no | no | 0.42 | [open](https://will62794.github.io/spectacle/#!/home?specpath=https%3A%2F%2Fraw.githubusercontent.com%2Ftlaplus%2Fexamples%2F20efef8f7b1b790d3643284d7c96434453580581%2Fspecifications%2FDiningPhilosophers%2FDiningPhilosophers.tla&constants%5BN%5D=5) | -| 8 | Let philosopher `N` take its right fork first | [Resource hierarchy (asymmetric) solution](https://doi.org/10.1147/sj.72.0074) | fork order (local) | no | no | no | 0.55 | | +| 8 | [Let philosopher `N` take its right fork first](https://github.com/tlaplus/examples/commit/048764145a337a362be7bcb3140c158ed06d35f6) | [Resource hierarchy (asymmetric) solution](https://doi.org/10.1147/sj.72.0074) | fork order (local) | no | no | no | 0.55 | [open](https://will62794.github.io/spectacle/#!/home?specpath=https%3A%2F%2Fraw.githubusercontent.com%2Ftlaplus%2Fexamples%2F048764145a337a362be7bcb3140c158ed06d35f6%2Fspecifications%2FDiningPhilosophers%2FDiningPhilosophers.tla&constants%5BN%5D=5) | This repository has specs of two other solutions: @@ -32,6 +32,14 @@ This repository has specs of two other solutions: [`Bakery-Boulangerie`](../Bakery-Boulangerie). They solve mutual exclusion, not dining, but the ticket idea carries over. +TLC checks the spec only for `N = 5`. +[`DiningPhilosophers_proof.tla`](DiningPhilosophers_proof.tla) proves with +TLAPS that the spec is free of deadlock, livelock, and starvation for every `N`: + +``` +tlapm --strict DiningPhilosophers_proof.tla +``` + [`DiningPhilosophers_anim.tla`](DiningPhilosophers_anim.tla) draws the table, forks, and philosophers for any `N` and writes one SVG per state. The animation comes from [Spectacle](https://github.com/will62794/spectacle). diff --git a/specifications/DiningPhilosophers/manifest.json b/specifications/DiningPhilosophers/manifest.json index f7a65e1a..ec0ff55e 100644 --- a/specifications/DiningPhilosophers/manifest.json +++ b/specifications/DiningPhilosophers/manifest.json @@ -79,6 +79,14 @@ "workers": 1 } ] + }, + { + "path": "specifications/DiningPhilosophers/DiningPhilosophers_proof.tla", + "features": [], + "models": [], + "proof": { + "maxRuntimeMinutes": 3 + } } ] } \ No newline at end of file From 0f6e467d33ee55cdd23936e72b1d1931ef05eb5f Mon Sep 17 00:00:00 2001 From: Markus Alexander Kuppe Date: Wed, 21 Oct 2026 11:29:34 -0700 Subject: [PATCH 13/14] DP: let even philosophers take their right fork first If only philosopher N takes its right fork first, philosophers 1 to N-1 can wait for each other in one long chain. Alternating the fork order between odd and even philosophers keeps these chains short, so more philosophers can eat at once. TLC finds no violation for N = 2 to 7. The animation shows pairs of philosophers eating at once. The proof now ranks the forks in place of their numbers: odd forks but fork 1, then fork 1, then the even forks. Co-authored-by: Claude Opus 5.5 Signed-off-by: Markus Alexander Kuppe --- .../DiningPhilosophers/DiningPhilosophers.tla | 8 +- .../DiningPhilosophers_anim.gif | Bin 60149 -> 59561 bytes .../DiningPhilosophers_proof.tla | 172 ++++++++++-------- specifications/DiningPhilosophers/README.md | 1 + .../DiningPhilosophers/manifest.json | 8 +- 5 files changed, 108 insertions(+), 81 deletions(-) diff --git a/specifications/DiningPhilosophers/DiningPhilosophers.tla b/specifications/DiningPhilosophers/DiningPhilosophers.tla index 32bd01b3..2078bc05 100644 --- a/specifications/DiningPhilosophers/DiningPhilosophers.tla +++ b/specifications/DiningPhilosophers/DiningPhilosophers.tla @@ -27,16 +27,16 @@ Init == /\ forks = 1..N TakeLeft(p) == - \* Philosopher N grabs the right fork first. - /\ p = N => philosophers[p] = {RightFork(p)} + \* Even philosophers grab the right fork first. + /\ p % 2 = 0 => 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)} + \* Odd philosophers grab the left fork first. + /\ p % 2 = 1 => philosophers[p] = {LeftFork(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 d88a0f83cfd939b23e1fc82d2135e67aa376d882..ecd4ea83753c212fdb2b7fc4ff87a788be1cd6bd 100644 GIT binary patch delta 56981 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

      eQ0J6pH7qpFtkCB8ZAfU0_n&jBYz#!mg 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 QeF_*S`6q%;BSGr_1+oRv*8l(j literal 60149 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. USE DEF Inv, TypeOK, LowFork, HighFork -<1>1. CASE TakeLeft(p) /\ p # N +<1>1. CASE TakeLeft(p) /\ p % 2 = 1 <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 +<1>2. CASE TakeLeft(p) /\ p % 2 = 0 BY <1>2 DEF TakeLeft, TakeHigh -<1>3. CASE TakeRight(p) /\ p # N +<1>3. CASE TakeRight(p) /\ p % 2 = 1 BY <1>3 DEF TakeRight, TakeHigh -<1>4. CASE TakeRight(p) /\ p = N +<1>4. CASE TakeRight(p) /\ p % 2 = 0 <2>1. RightFork(p) \in P /\ RightFork(p) \notin philosophers[p] BY <1>4, ForksDistinct DEF TakeRight, OnTable <2>2. philosophers[p] = {} @@ -119,7 +129,7 @@ LEMMA TakeAgree == <2>. QED BY <1>4, <2>2 DEF TakeRight, TakeLow <1>. QED - BY <1>1, <1>2, <1>3, <1>4 + BY <1>1, <1>2, <1>3, <1>4, Parity LEMMA NextAgree == ASSUME Inv, Next PROVE NextLH BY TakeAgree DEF Next, NextLH @@ -323,7 +333,7 @@ LEMMA IdleEnabled == OBVIOUS <1>1. philosophers \in [P -> SUBSET P] /\ philosophers[q] = {} BY DEF Inv, TypeOK, Idle -<1>2. CASE q # N +<1>2. CASE q % 2 = 1 <2>1. LeftFork(q) \in forks BY <1>2 DEF LowFork <2>2. <<[philosophers EXCEPT ![q] = philosophers[q] \cup {LeftFork(q)}], @@ -333,7 +343,7 @@ LEMMA IdleEnabled == 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 +<1>3. CASE q % 2 = 0 <2>1. RightFork(q) \in forks BY <1>3 DEF LowFork <2>2. <<[philosophers EXCEPT ![q] = philosophers[q] \cup {RightFork(q)}], @@ -344,7 +354,7 @@ LEMMA IdleEnabled == <2>. QED BY <2>3, ExpandENABLED DEF Act, TakeLeft, TakeRight, Release, vars <1>. QED - BY <1>2, <1>3 + BY <1>2, <1>3, Parity LEMMA HungryEnabled == ASSUME NEW q \in P @@ -356,32 +366,32 @@ LEMMA HungryEnabled == BY DEF Inv, TypeOK, Hungry <1>2. LeftFork(q) # RightFork(q) BY ForksDistinct -<1>3. CASE q # N +<1>3. CASE q % 2 = 1 <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 + <2>3. (q % 2 = 1 => 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 +<1>4. CASE q % 2 = 0 <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 + <2>3. (q % 2 = 0 => 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 + BY <1>3, <1>4, Parity LEMMA EatingEnabled == ASSUME NEW q \in P @@ -483,14 +493,14 @@ LEMMA EatRelease == 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. +\* provided that all forks ranked above 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) + PROVE Spec /\ (\A g \in P : Rank(g) > Rank(f) => FreeIO(g)) => HungryFrees(f, q) <1>1. CASE f = LowFork(q) - <2>1. HighFork(q) \in P /\ HighFork(q) > f + <2>1. HighFork(q) \in P /\ Rank(HighFork(q)) > Rank(f) BY <1>1, ForkFacts - <2>2. (\A g \in P : g > f => FreeIO(g)) => FreeIO(HighFork(q)) + <2>2. (\A g \in P : Rank(g) > Rank(f) => FreeIO(g)) => FreeIO(HighFork(q)) BY <2>1 <2>3. Spec /\ FreeIO(HighFork(q)) => HungryToEating(q) BY HungryEat @@ -540,7 +550,7 @@ LEMMA HeldBy == LEMMA FreeStep == ASSUME NEW f \in P - PROVE Spec /\ (\A g \in P : g > f => FreeIO(g)) => FreeIO(f) + PROVE Spec /\ (\A g \in P : Rank(g) > Rank(f) => FreeIO(g)) => FreeIO(f) <1>1. Pred(f) \in P BY PredInP <1>2. Inv /\ ~(f \in forks) => @@ -552,30 +562,30 @@ LEMMA FreeStep == 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) +<1>5. Spec /\ (\A g \in P : Rank(g) > Rank(f) => FreeIO(g)) => HungryFrees(f, f) BY HungryRelease -<1>6. Spec /\ (\A g \in P : g > f => FreeIO(g)) => HungryFrees(f, Pred(f)) +<1>6. Spec /\ (\A g \in P : Rank(g) > Rank(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>. DEFINE Q(m) == Spec => \A g \in P : Rank(g) + m > 2 => FreeIO(g) <1>1. Q(0) - BY NAtLeastTwo DEF P + BY RankType <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 + <2>1. ASSUME NEW g \in P, Rank(g) + (m + 1) > 2 PROVE Spec => FreeIO(g) - <3>1. CASE g + m > N + <3>1. CASE Rank(g) + m > 2 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) + <3>2. CASE ~(Rank(g) + m > 2) + <4>1. \A h \in P : Rank(h) > Rank(g) => Rank(h) + m > 2 + BY <2>1, <3>2, RankType + <4>2. Spec => \A h \in P : Rank(h) > Rank(g) => FreeIO(h) BY <4>1 <4>. QED BY <4>2, FreeStep @@ -586,10 +596,10 @@ THEOREM AllFree == \A f \in P : Spec => FreeIO(f) <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>4. Q(3) + BY <1>3 <1>. QED - BY <1>4, NAtLeastTwo DEF Q, P + BY <1>4, RankType DEF Q ----------------------------------------------------------------------------- (***************************************************************************) @@ -646,9 +656,11 @@ 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. *) +(* Deadlock freedom. If no one eats, every even fork is free, because it *) +(* is the high fork of both philosophers who can hold it. So a hungry *) +(* philosopher whose high fork is even can take it. Otherwise philosopher *) +(* 1 is idle, and fork 1 is free: philosopher N could hold it only as its *) +(* low fork, and then N's high fork would be even. *) (***************************************************************************) LEMMA ActEnabledNext == @@ -656,46 +668,60 @@ LEMMA ActEnabledNext == 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 +LEMMA EvenFree == + ASSUME Inv, \A q \in P : ~Eating(q), NEW f \in P, Rank(f) = 2 + PROVE f \in forks +<1>. SUFFICES ASSUME ~(f \in forks) PROVE FALSE + OBVIOUS +<1>1. PICK q \in P : f \in philosophers[q] + BY DEF Inv, OnTable +<1>2. f = LowFork(q) + BY <1>1 DEF Inv, Phases, Idle, Hungry +<1>. QED + BY <1>2, ForkFacts, RankType + +LEMMA OneForks == + /\ 1 \in P /\ 2 \in P /\ N \in P + /\ LowFork(1) = 1 /\ HighFork(1) = 2 /\ Rank(2) = 2 + /\ Pred(1) = N /\ N # 1 + /\ LowFork(N) = 1 => Rank(HighFork(N)) = 2 +BY NAtLeastTwo, RightForkDef DEF P, LowFork, HighFork, LeftFork, Pred, Rank 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>0. OneForks + BY OneForks <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 + <2>1. CASE \E q \in P : Hungry(q) /\ Rank(HighFork(q)) = 2 + <3>1. PICK q \in P : Hungry(q) /\ Rank(HighFork(q)) = 2 + BY <2>1 + <3>2. HighFork(q) \in forks + BY <1>2, <3>1, ForkFacts, EvenFree <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 + BY <3>1, <3>2, HungryEnabled, ActEnabledNext + <2>2. CASE \A q \in P : ~(Hungry(q) /\ Rank(HighFork(q)) = 2) + <3>1. Idle(1) + BY <1>0, <1>2, <2>2 DEF Inv, Phases + <3>2. 1 \in forks + <4>. SUFFICES ASSUME ~(1 \in forks) PROVE FALSE + OBVIOUS + <4>1. PICK r \in P : 1 \in philosophers[r] + BY <1>0 DEF Inv, OnTable + <4>2. Hungry(r) /\ 1 = LowFork(r) + BY <1>2, <4>1 DEF Inv, Phases, Idle, Hungry + <4>3. r = 1 \/ r = N + BY <1>0, <4>2, Holders + <4>4. r # 1 + BY <3>1, <4>1 DEF Idle + <4>. QED + BY <1>0, <2>2, <4>2, <4>3, <4>4 <3>. QED - BY <1>0, <3>1, <3>3, IdleEnabled, ActEnabledNext + BY <1>0, <3>1, <3>2, IdleEnabled, ActEnabledNext <2>. QED - BY <2>3, <2>4, <2>5 + BY <2>1, <2>2 <1>. QED BY <1>1, <1>2 diff --git a/specifications/DiningPhilosophers/README.md b/specifications/DiningPhilosophers/README.md index 3b96a9fd..90d9e567 100644 --- a/specifications/DiningPhilosophers/README.md +++ b/specifications/DiningPhilosophers/README.md @@ -20,6 +20,7 @@ commit, the properties for which TLC finds a counterexample: | 6 | [Let a waiter serve philosophers in order](https://github.com/tlaplus/examples/commit/637ef15fc210e5785bb3f9a68769392ca36601d3) | Waiter (arbitrator) with a queue | global queue | no | no | no | 0.73 | [open](https://will62794.github.io/spectacle/#!/home?specpath=https%3A%2F%2Fraw.githubusercontent.com%2Ftlaplus%2Fexamples%2F637ef15fc210e5785bb3f9a68769392ca36601d3%2Fspecifications%2FDiningPhilosophers%2FDiningPhilosophers.tla&constants%5BN%5D=5) | | 7 | [Let a footman seat at most `N-1` philosophers](https://github.com/tlaplus/examples/commit/20efef8f7b1b790d3643284d7c96434453580581) | [Footman (butler) solution](https://en.wikipedia.org/wiki/Dining_philosophers_problem#Limiting_the_number_of_diners_in_the_table) | global counter | no | no | no | 0.42 | [open](https://will62794.github.io/spectacle/#!/home?specpath=https%3A%2F%2Fraw.githubusercontent.com%2Ftlaplus%2Fexamples%2F20efef8f7b1b790d3643284d7c96434453580581%2Fspecifications%2FDiningPhilosophers%2FDiningPhilosophers.tla&constants%5BN%5D=5) | | 8 | [Let philosopher `N` take its right fork first](https://github.com/tlaplus/examples/commit/048764145a337a362be7bcb3140c158ed06d35f6) | [Resource hierarchy (asymmetric) solution](https://doi.org/10.1147/sj.72.0074) | fork order (local) | no | no | no | 0.55 | [open](https://will62794.github.io/spectacle/#!/home?specpath=https%3A%2F%2Fraw.githubusercontent.com%2Ftlaplus%2Fexamples%2F048764145a337a362be7bcb3140c158ed06d35f6%2Fspecifications%2FDiningPhilosophers%2FDiningPhilosophers.tla&constants%5BN%5D=5) | +| 9 | Let even philosophers take their right fork first | Odd/even (alternating) solution | fork order (local) | no | no | no | 0.72 | | This repository has specs of two other solutions: diff --git a/specifications/DiningPhilosophers/manifest.json b/specifications/DiningPhilosophers/manifest.json index ec0ff55e..46546f4b 100644 --- a/specifications/DiningPhilosophers/manifest.json +++ b/specifications/DiningPhilosophers/manifest.json @@ -29,8 +29,8 @@ "runtime": "00:00:01", "mode": "exhaustive search", "result": "success", - "distinctStates": 70, - "totalStates": 220, + "distinctStates": 58, + "totalStates": 174, "stateDepth": 6 } ] @@ -61,8 +61,8 @@ "runtime": "00:00:01", "mode": "exhaustive search", "result": "success", - "distinctStates": 70, - "totalStates": 220, + "distinctStates": 58, + "totalStates": 174, "stateDepth": 6 } ] From 1868d4c2401410409e4361ac9d37342de5ca97f9 Mon Sep 17 00:00:00 2001 From: Markus Alexander Kuppe Date: Wed, 21 Oct 2026 11:29:34 -0700 Subject: [PATCH 14/14] DP: link the last step in the README A commit cannot link to itself, so the odd/even step is the only one in the table without a link. Co-authored-by: Claude Opus 5.5 Signed-off-by: Markus Alexander Kuppe --- specifications/DiningPhilosophers/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/specifications/DiningPhilosophers/README.md b/specifications/DiningPhilosophers/README.md index 90d9e567..da4a518e 100644 --- a/specifications/DiningPhilosophers/README.md +++ b/specifications/DiningPhilosophers/README.md @@ -20,7 +20,7 @@ commit, the properties for which TLC finds a counterexample: | 6 | [Let a waiter serve philosophers in order](https://github.com/tlaplus/examples/commit/637ef15fc210e5785bb3f9a68769392ca36601d3) | Waiter (arbitrator) with a queue | global queue | no | no | no | 0.73 | [open](https://will62794.github.io/spectacle/#!/home?specpath=https%3A%2F%2Fraw.githubusercontent.com%2Ftlaplus%2Fexamples%2F637ef15fc210e5785bb3f9a68769392ca36601d3%2Fspecifications%2FDiningPhilosophers%2FDiningPhilosophers.tla&constants%5BN%5D=5) | | 7 | [Let a footman seat at most `N-1` philosophers](https://github.com/tlaplus/examples/commit/20efef8f7b1b790d3643284d7c96434453580581) | [Footman (butler) solution](https://en.wikipedia.org/wiki/Dining_philosophers_problem#Limiting_the_number_of_diners_in_the_table) | global counter | no | no | no | 0.42 | [open](https://will62794.github.io/spectacle/#!/home?specpath=https%3A%2F%2Fraw.githubusercontent.com%2Ftlaplus%2Fexamples%2F20efef8f7b1b790d3643284d7c96434453580581%2Fspecifications%2FDiningPhilosophers%2FDiningPhilosophers.tla&constants%5BN%5D=5) | | 8 | [Let philosopher `N` take its right fork first](https://github.com/tlaplus/examples/commit/048764145a337a362be7bcb3140c158ed06d35f6) | [Resource hierarchy (asymmetric) solution](https://doi.org/10.1147/sj.72.0074) | fork order (local) | no | no | no | 0.55 | [open](https://will62794.github.io/spectacle/#!/home?specpath=https%3A%2F%2Fraw.githubusercontent.com%2Ftlaplus%2Fexamples%2F048764145a337a362be7bcb3140c158ed06d35f6%2Fspecifications%2FDiningPhilosophers%2FDiningPhilosophers.tla&constants%5BN%5D=5) | -| 9 | Let even philosophers take their right fork first | Odd/even (alternating) solution | fork order (local) | no | no | no | 0.72 | | +| 9 | [Let even philosophers take their right fork first](https://github.com/tlaplus/examples/commit/0f6e467d33ee55cdd23936e72b1d1931ef05eb5f) | Odd/even (alternating) solution | fork order (local) | no | no | no | 0.72 | [open](https://will62794.github.io/spectacle/#!/home?specpath=https%3A%2F%2Fraw.githubusercontent.com%2Ftlaplus%2Fexamples%2F0f6e467d33ee55cdd23936e72b1d1931ef05eb5f%2Fspecifications%2FDiningPhilosophers%2FDiningPhilosophers.tla&constants%5BN%5D=5) | This repository has specs of two other solutions:

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 diff --git a/specifications/DiningPhilosophers/README.md b/specifications/DiningPhilosophers/README.md index 57d818b5..16df8484 100644 --- a/specifications/DiningPhilosophers/README.md +++ b/specifications/DiningPhilosophers/README.md @@ -12,7 +12,8 @@ commit, the properties for which TLC finds a counterexample: | Step | Solution | Known as | Coordination | Deadlock | Livelock | Starvation | Spectacle | |---|---|---|---|---|---|---|---| -| 1 | Take the forks in any order | Unordered fork acquisition | none | yes | yes | yes | | +| 1 | [Take the forks in any order](https://github.com/tlaplus/examples/commit/89da1aa3e41b33fdb00062fa0a0a57ef4494e211) | Unordered fork acquisition | none | yes | yes | yes | [open](https://will62794.github.io/spectacle/#!/home?specpath=https%3A%2F%2Fraw.githubusercontent.com%2Ftlaplus%2Fexamples%2F89da1aa3e41b33fdb00062fa0a0a57ef4494e211%2Fspecifications%2FDiningPhilosophers%2FDiningPhilosophers.tla&constants%5BN%5D=5) | +| 2 | Take the left fork before the right fork | [Naive (symmetric) solution](https://en.wikipedia.org/wiki/Dining_philosophers_problem#Problems) | none | yes | yes | yes | | This repository has specs of two other solutions: From 3f171e1ec2db66c4ffa87727e8ed1a74f40c46fa Mon Sep 17 00:00:00 2001 From: Markus Alexander Kuppe Date: Wed, 21 Oct 2026 11:29:33 -0700 Subject: [PATCH 06/14] DP: 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 specifications/DiningPhilosophers/README.md | 3 ++- .../DiningPhilosophers/manifest.json | 7 +++++-- 4 files changed, 15 insertions(+), 4 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: Wed, 21 Oct 2026 11:29:33 -0700 Subject: [PATCH 07/14] DP: 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 specifications/DiningPhilosophers/README.md | 3 +- .../DiningPhilosophers/manifest.json | 6 ++-- 4 files changed, 11 insertions(+), 26 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/README.md b/specifications/DiningPhilosophers/README.md index d3c04025..257b415e 100644 --- a/specifications/DiningPhilosophers/README.md +++ b/specifications/DiningPhilosophers/README.md @@ -14,7 +14,8 @@ commit, the properties for which TLC finds a counterexample: |---|---|---|---|---|---|---|---| | 1 | [Take the forks in any order](https://github.com/tlaplus/examples/commit/89da1aa3e41b33fdb00062fa0a0a57ef4494e211) | Unordered fork acquisition | none | yes | yes | yes | [open](https://will62794.github.io/spectacle/#!/home?specpath=https%3A%2F%2Fraw.githubusercontent.com%2Ftlaplus%2Fexamples%2F89da1aa3e41b33fdb00062fa0a0a57ef4494e211%2Fspecifications%2FDiningPhilosophers%2FDiningPhilosophers.tla&constants%5BN%5D=5) | | 2 | [Take the left fork before the right fork](https://github.com/tlaplus/examples/commit/bf33e1bb350d46fc55904002e5de3807466de573) | [Naive (symmetric) solution](https://en.wikipedia.org/wiki/Dining_philosophers_problem#Problems) | none | yes | yes | yes | [open](https://will62794.github.io/spectacle/#!/home?specpath=https%3A%2F%2Fraw.githubusercontent.com%2Ftlaplus%2Fexamples%2Fbf33e1bb350d46fc55904002e5de3807466de573%2Fspecifications%2FDiningPhilosophers%2FDiningPhilosophers.tla&constants%5BN%5D=5) | -| 3 | Put the left fork back if the right fork is taken | Back-off and retry | none | no | yes | yes | | +| 3 | [Put the left fork back if the right fork is taken](https://github.com/tlaplus/examples/commit/3f171e1ec2db66c4ffa87727e8ed1a74f40c46fa) | Back-off and retry | none | no | yes | yes | [open](https://will62794.github.io/spectacle/#!/home?specpath=https%3A%2F%2Fraw.githubusercontent.com%2Ftlaplus%2Fexamples%2F3f171e1ec2db66c4ffa87727e8ed1a74f40c46fa%2Fspecifications%2FDiningPhilosophers%2FDiningPhilosophers.tla&constants%5BN%5D=5) | +| 4 | Take both forks at once | [Dijkstra's semaphore solution (Tanenbaum's monitor)](https://en.wikipedia.org/wiki/Dining_philosophers_problem#Dijkstra's_solution) | atomic fork pair | no | no | yes | | This repository has specs of two other solutions: diff --git a/specifications/DiningPhilosophers/manifest.json b/specifications/DiningPhilosophers/manifest.json index 7a4d40f5..ad17735e 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 173c60f8d1375217f61b901094b0dd36acd967c2 Mon Sep 17 00:00:00 2001 From: Markus Alexander Kuppe Date: Wed, 21 Oct 2026 11:29:33 -0700 Subject: [PATCH 08/14] DP: let a philosopher who ate wait for its neighbors Taking both forks at once lets a philosopher's neighbors starve it by eating in overlapping turns. Make a philosopher who releases its forks wait until both neighbors have eaten before it takes them again. The neighbors of a hungry philosopher thus cannot eat twice while it waits. Philosophers who wait for each other never form a cycle: of two neighbors, the one who ate last waits for the other. TLC finds no violation of NoDeadlock, NoLivelock, or NoStarvation for N = 2 to 7, even under weak fairness. The new variable waits relates only neighbors. The solution promises that every philosopher eats eventually, but not that hungry philosophers eat in the order in which they got hungry. Co-authored-by: Claude Opus 5.5 Signed-off-by: Markus Alexander Kuppe --- .../DiningPhilosophers/DiningPhilosophers.tla | 16 ++++++++++++++-- .../DiningPhilosophers_anim.gif | Bin 87441 -> 44359 bytes specifications/DiningPhilosophers/README.md | 3 ++- .../DiningPhilosophers/manifest.json | 11 +++++++---- 4 files changed, 23 insertions(+), 7 deletions(-) diff --git a/specifications/DiningPhilosophers/DiningPhilosophers.tla b/specifications/DiningPhilosophers/DiningPhilosophers.tla index 3b3aaee6..12471f7b 100644 --- a/specifications/DiningPhilosophers/DiningPhilosophers.tla +++ b/specifications/DiningPhilosophers/DiningPhilosophers.tla @@ -13,28 +13,39 @@ 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 == <> +Neighbors(p) == + {q \in P \ {p} : {LeftFork(q), RightFork(q)} \cap {LeftFork(p), RightFork(p)} # {}} + +VARIABLES philosophers, forks, waits +vars == <> TypeOK == /\ philosophers \in [P -> SUBSET P] /\ forks \in SUBSET P + /\ waits \in [P -> SUBSET P] Init == \* each philosopher starts with no forks /\ philosophers = [ p \in P |-> {} ] \* all forks are available /\ forks = 1..N + \* no philosopher has eaten yet + /\ waits = [ p \in P |-> {} ] TakeBoth(p) == + \* p has let its neighbors eat since it last ate. + /\ waits[p] = {} /\ {LeftFork(p), RightFork(p)} \subseteq forks /\ forks' = forks \ {LeftFork(p), RightFork(p)} /\ philosophers' = [philosophers EXCEPT ![p] = {LeftFork(p), RightFork(p)}] + /\ waits' = [q \in P |-> waits[q] \ {p}] Release(p) == /\ philosophers[p] = {LeftFork(p), RightFork(p)} /\ forks' = forks \cup {LeftFork(p), RightFork(p)} /\ philosophers' = [philosophers EXCEPT ![p] = {}] + \* p waits until both neighbors have eaten. + /\ waits' = [waits EXCEPT ![p] = Neighbors(p)] Next == \E p \in P: @@ -69,6 +80,7 @@ Alias == [ philosophers |-> philosophers, forks |-> forks, + waits |-> waits, eating |-> [ p \in DOMAIN philosophers |-> ThinkHungryEat(p) ] ] diff --git a/specifications/DiningPhilosophers/DiningPhilosophers_anim.gif b/specifications/DiningPhilosophers/DiningPhilosophers_anim.gif index e77d7bdefa4577a2e53f42d457f1e9a12f6047a6..8240c82b2d4a59ac7d6287da99054525e6598661 100644 GIT binary patch literal 44359 zcmcG#Ra9F~+`o$kNPq^n0Ku(TfD|aS1gA)$xLa^3UMRH12_D>OaEIXTt_|)^DcVv> zsnB0Jec%6ot#fm3&%T(w_QkB(>zO?>Ykl_jQPWVBma#Pt);1>o#iVR6C~2X&CSi(+0nW!}{+SH=M!lKo}yu$ol*t?nt)23L{^a#)F*Z_1?KzF)RRa#(M zZct5vOJ7mQbs6Fmqcoi7G4|eTvMg}1He?0+ZarJs`*l=sOlCk>QcO%tUT$t$T3UQ^ zMsZ(^($d&aH&zpes}J97joRsmS#3d0 zH)qc@rG4lwUmvaiG+lAKiv7A+w=qzd-!xayg3GEM9T^#!o}OM@T-@H?-kl%%xITM$ zczAw({^exv+qZA`_xHbk++1HApC4`*85tRy8JYcqV`^+`W$s{QY-(?6>TYW6Xk-## zg0!=8ajFOejViR>gi)? zZMzpNlk2A$_fr2K!;&EF@_!72Tu>n|O(IN86HHChP0jMm%uCG8Yt8@h{72QL+r=l| zCulUNHp(>ZAJXWTxv{>wd~{94>o1S^0LU z?#)?Q;7EbzKd>RFtbbr5A|etJ5@Jv>>FMctd3pcv{$tztKDMJQAv&Wnp|CkD8G|nA ztgNhPZf^dEx3RuFr#WY)CTyr8{vYAxrpV2<=zoxBT5~>kWL!2U&h}KLd`M|rYwXR8NR1SyT6#RRr!I0nr1EML8`cr>0-!gXt+v1B|MsuTy&XeymdaWuK4g?Ap*$ytfg|kL_JN=a;l|ju|l`xS;4c`>g5`f zX4mbh)|%A@o8dTC&9>V0X6MCf%jved&33QDsRGUR`t9z(Z)e-n?G3yAp@bkdtq$z| zFp5UVYNn&{a2(C0S*X?7^l>^{!fj`!v-#5pj8Z(Cc2~>kVx@kK)ofSm`6||ax={P^ zXDRdQ+llpFwTwEqR&y)!45#+5hd~A^Ae{{(HgV)10&DF;&Ly%>@>{KV)?OD+3GaA-tR-M4Ol~SWy(Lq@$gjl}c z$u>Oc_m6zW%C+eoc(BFKe4@)PHv_h)k>5a`O!}snvACVH)1I58+}Z{Lswv9>LW$p6 zMVljGaYI}Ze@@^*>Uec&b3`^5!uUw7CSBk;bq%AFNp(Eq8pH$K^R-wGU0F&muZ!n0 zr1cG6{JVW~kU(n2w|Mg=56(m=Wk3-N4N>wq9%ce42usc%;Qz(1%ZziDYnFzdc`T_ykOyHE38 z=Li?)CoXJMhmQD4YZMnas7UUvh?3CVCwElQhPIecHenGUgE|6fH)c}d4t-%KbWC(!PDg(#�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 z