Affiliation:
1. University of Pennsylvania, Philadelphia, PA, USA
Abstract
While many type systems based on the intuitionistic fragment of linear logic have been proposed, applications in programming languages of the full power of linear logic - including double-negation elimination - have remained elusive. Meanwhile, linearity has been used in many type systems for concurrent programs - e.g., session types - which suggests applicability to the problems of concurrent programming, but the ways in which linearity has interacted with concurrency primitives in lambda calculi have remained somewhat ad-hoc. In this paper we connect classical linear logic and concurrent functional programming in the language Lolliproc, which provides simple primitives for concurrency that have a direct logical interpretation and that combine to provide the functionality of session types. Lolliproc features a simple process calculus "under the hood" but hides the machinery of processes from programmers. We illustrate Lolliproc by example and prove soundness, strong normalization, and confluence results, which, among other things, guarantees freedom from deadlocks and race conditions.
Publisher
Association for Computing Machinery (ACM)
Subject
Computer Graphics and Computer-Aided Design,Software
Cited by
10 articles.
订阅此论文施引文献
订阅此论文施引文献,注册后可以免费订阅5篇论文的施引文献,订阅后可以查看论文全部施引文献
1. Label-dependent session types;Proceedings of the ACM on Programming Languages;2020-01
2. Par means parallel: multiplicative linear logic proofs as concurrent functional programs;Proceedings of the ACM on Programming Languages;2020-01
3. The linearity Monad;ACM SIGPLAN Notices;2017-10-31
4. The linearity Monad;Proceedings of the 10th ACM SIGPLAN International Symposium on Haskell;2017-09-07
5. Linear $$ \lambda \mu $$ is $$ \textsc {CP} $$ (more or less);A List of Successes That Can Change the World;2016