I'm a graduate student learning PlusCal in an Independent Study. I'm using PlusCal to model a concurrent system, and I need to use channels and message queues to model communication between processes. I attempted to reuse the Channel and FIFO modules described in the Specifying Systems book, but I'm having trouble. The model I'm creating requires more than one channel so I tried to use INSTANCE to create multiple instances of the Channel module. I used define { InChan == INSTANCE Channel WITH Data <- PassengerNames, chan <- in }. PlusCal failed to translate, and the translator complains about the comma in the InChan definition (I can give you the exact error message in a second post). I also don't know how to make InChan!Init apart of the Init operation generated by PlusCal. Also, I'm having trouble getting a TypeInvariant operation to work. I've had no luck modeling any part of a system in TLA when using PlusCal. Ultimately, I decided to use PlusCal to implement the channels and message queue, but it was tedious work.
Do you have any suggestions for geting TLA modules to work in a PlusCal model?
