 Janus models concurrency through the use of "bag channels".Code that needs to send a message to a process does so by constraining a bag to be the union of another bag and the singleton bag of the message.The other bag is then available to be constrained for sending subsequent messages.