We present a logical relation for showing the correctness of program transformations based on a new type-and-eﬀect system for a concurrent extension of an ML-like language with higher-order functions, higher-order store and dynamic memory allocation. We show how to use our model to verify a number of interesting program transformations that rely on eﬀect annotations. In particular, we prove a Parallelization Theorem, which expresses when it is sound to run two expressions in parallel instead of sequentially. The conditions are expressed solely in terms of the types and eﬀects of the expressions. To the best of our knowledge, this is the ﬁrst such result for a concurrent higher-order language with higher-order store and dynamic memory allocation.
Dagstuhl Seminar Proceedings, 2012, Vol 16
verification; logical relation; concurrency; type and eﬀect system