Skip to content
Snippets Groups Projects
Commit 79c9bb91 authored by Justin Loew's avatar Justin Loew
Browse files

Add check for fairness which passes but maybe shouldn't be passing

parent 1920021f
No related branches found
No related tags found
No related merge requests found
...@@ -58,12 +58,16 @@ omod CHECK-NODE-SYSTEM{N :: NZNAT#} is ...@@ -58,12 +58,16 @@ omod CHECK-NODE-SYSTEM{N :: NZNAT#} is
op isUnfairPair : Oid Oid -> Formula . op isUnfairPair : Oid Oid -> Formula .
op isUnfairPre : Oid Oid -> Prop . op isUnfairPre : Oid Oid -> Prop .
eq isUnfair = isUnfairAux(#, #) . --- TODO: Why does this work? Shouldn't it break if M and N transition to Queued at the same timestamp if N < M?
eq isUnfairAux([0], [0]) = False . eq isUnfair = isUnfairAux([0], [0]) .
eq isUnfairAux([s(I)], [0]) = isUnfairPair([s(I)], [0]) \/ isUnfairAux([I], [#]) . ceq isUnfairAux([I], [J]) =
eq isUnfairAux([I], [s(J)]) = isUnfairPair([I], [s(J)]) \/ isUnfairAux([I], [J]) . isUnfairPair([I], [J]) \/ isUnfairAux([I], [s(J)])
eq isUnfairPair(M, N) = if I < # /\ J < # .
isUnfairPre(M, N) -> ~ ((~ inCritSec(N)) U inCritSec(M)) [owise] . ceq isUnfairAux([I], [J]) =
isUnfairAux([s(I)], [0])
if I < # /\ J >= # .
ceq isUnfairAux([I], [J]) = False if I >= # .
eq isUnfairPair(M, N) = isUnfairPre(M, N) /\ (isQueued(M) U inCritSec(N)) .
eq < M : Node | mode : Queued, A > eq < M : Node | mode : Queued, A >
< N : Node | mode : Idle, B > C < N : Node | mode : Idle, B > C
|= isUnfairPre(M, N) = true . |= isUnfairPre(M, N) = true .
......
...@@ -19,6 +19,5 @@ red modelCheck(init, <>[]~ hasUnsentMessages) . ...@@ -19,6 +19,5 @@ red modelCheck(init, <>[]~ hasUnsentMessages) .
--- Expected: true --- Expected: true
--- Check for fairness. --- Check for fairness.
red modelCheck(init, (<> isExhausted) -> [] ~ isUnfair) . red modelCheck(init, [] ~ isUnfair) .
---red modelCheck(init, (isUnfair_Pre(N:Oid, I:Nat, M:Oid, J:Nat) -> <> isUnfair_Post(N:Oid, I:Nat, M:Oid, J:Nat))) .
--- Expected: true --- Expected: true
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment