Communicating Sequential Processes Definition