Abstract
We present a semantic theory for concurrent, functional and imperative programming languages that consists mainly in a static semantics together with a dynamic semantics. The static semantics is inspired by the type and effect discipline. More precisely, we present a generalization of this discipline in order to deal with concurrency. The generalization consists in an inference type system that propagates the communication effects that result from channel creation, sending, and receiving. Hence, the static evaluation of an expression in our type system yields as a result not only the principal type, but also all the minimal communication effects. The dynamic semantics presented is denotational. It is based on an extension of the acceptance trees model. The main novelties of the model described are its construction and its expressiveness. The construction is not classical and relies on an established dependency between the static and the dynamic spaces. The dynamic spaces are typed according to the hierarchy laid down by the static spaces. The dynamic semantic domains are then generated in a compositional and systematic way thanks to an induction on the static information. A significant advantage of this method is that it provides a semantic treatment for polymorphism at the dynamic level by handling suitably free type and effect algebras. The expressiveness of the model is exemplified by the fact that it provides a semantics for communication, value-passing, return of results, dynamic creation of channels and processes, sequencing, and higher-order objects.
Talk to us
Join us for a 30 min session where you can share your feedback and ask us any queries you have