EXTENDS Naturals
CONSTANT Data
VARIABLE chan
TypeInvariant == chan \in [ val : Data, ready: {0,1} , ack : {0,1}]
Init == /\ TypeInvariant
/\ chan.ack = chan.ready
Send(data) == /\ chan.ready = chan.ack
/\ chan' = [chan EXCEPT ![chan].val = data, ![chan].ack = 1 - chan.ack]
Receive == /\ chan.ready # chan.ack
/\ chan' = [ chan EXCEPT ![chan].ack = 1 - chan.ack ]
Next == (\E d \in Data : Send(d)) \/ Receive
Spec == Init /\ [] [Next]_chan
--
You received this message because you are subscribed to the Google Groups "tlaplus" group.
To unsubscribe from this group and stop receiving emails from it, send an email to tlaplus+u...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/tlaplus/88f3075a-5ce8-4546-aae0-197d79bea7afn%40googlegroups.com.