explicitly described states
Test & Set (TAS) is a mutual-exclusion protocol where several concurrent processes make use of a shared lock to ensure that, at any moment of time, at most one process is in a critical section. In a nutshell, the protocol works as follows:
For TAS, we are interested in verifying the following strong mutual-exclusion property: at every moment of time, at most one process is in a critical section, in which case the lock is closed.
We formalize this property as a conjunction of two goals (defined in this case as contradictions; cf. the OTS/CafeOBJ method) that are proved simultaneously.
ceq true = false if < open, (cs LS:LSet) > := R:Reach ;
ceq true = false if < S:Status, (cs cs LS:LSet) > := R:Reach ;
See me.maude for the full proof.