Search for a command to run...
Concurrent ML (CML) is an extension of the functional language Standard ML (SML) with primitives for the dynamic creation of processes and channels and for the communication of values over channels. Because of the powerful abstraction mechanisms the communication topology of a given program may be very complex and therefore an efficient implementation maybe facilitated by knowledge of the topology. This paper presents an analysis for determining when a bounded number of processes and channels will be generated. The analysis proceeds in two stages. First we extend a polymorphic type system for SML to deduce not only the type of CML programs but also their communication behaviour expressed as terms in a new process algebra. Next we develop an analysis that given the communication behaviour predicts the number of processes and channels required during the execution of the CML program. The correctness of the analysis is proved using a subject reduction property for the type system. Permission to copy without fee all or part of this material is granted provided that the copies are not mada or distributed for direct commercial advantaga, tha ACM copyright notica and tha titla of tha publication and its data appear, and notica ia givan that copying is by permission of the Association for Computing Machinery. To copy otherwise, or to republish, requires a foe ar-dor spacific permission. POPL 941K14, Portland Oregon, USA @ 1994 ACM 0-89791436-0/94/001 ..$3.50