Abstract
AbstractThis paper presents a formal definition and machine-checked soundness proof for a very expressive type-and-capability system, that is, a low-level type system that keeps precise track of ownership and side effects. The programming language has first-class functions and references. The type system's features include the following: universal, existential, and recursive types; subtyping; a distinction between affine and unrestricted data; support for strong updates; support for naming values and heap fragments via singleton and group regions; a distinction between ordinary values (which exist at runtime) and capabilities (which do not); support for dynamic reorganizations of the ownership hierarchy by disassembling and reassembling capabilities; and support for temporarily or permanently hiding a capability via frame and anti-frame rules. One contribution of the paper is the definition of the type-and-capability system itself. We present the system as modularly as possible. In particular, at the core of the system, the treatment of affinity, in the style of dual intuitionistic linear logic, is formulated in terms of an arbitrarymonotonic separation algebra, a novel axiomatization of resources, ownership, and the manner in which they evolve with time. Only the peripheral layers of the system are aware that we are dealing with a specific monotonic separation algebra, whose resources are references and regions. This semi-abstract organization should facilitate further extensions of the system with new forms of resources. The other main contribution is a machine-checked proof of type soundness. The proof is carried out in the Wright and Felleisen's syntactic style. This offers an evidence that this relatively simple-minded proof technique can scale up to systems of this complexity, and constitutes a viable alternative to more sophisticated semantic proof techniques. We do not claim that the syntactic technique is superior: We simply illustrate how it is used and highlight its strengths and shortcomings.
Publisher
Cambridge University Press (CUP)
Reference89 articles.
1. Gauthier N. & Pottier F. (2004) Numbering matters: First-order canonical forms for second-order recursive types. In Proceedings of the ACM International Conference on Functional Programming (ICFP), pp. 150–161.
2. Recursive subtyping revealed
3. Semantics of fractional permissions with nesting
4. The Locally Nameless Representation
Cited by
15 articles.
订阅此论文施引文献
订阅此论文施引文献,注册后可以免费订阅5篇论文的施引文献,订阅后可以查看论文全部施引文献
1. Revisiting Iso-Recursive Subtyping;ACM Transactions on Programming Languages and Systems;2022-09-21
2. Revisiting iso-recursive subtyping;Proceedings of the ACM on Programming Languages;2020-11-13
3. MoSeL: a general, extensible modal framework for interactive proofs in separation logic;Proceedings of the ACM on Programming Languages;2018-07-30
4. On Models of Higher-Order Separation Logic;Electronic Notes in Theoretical Computer Science;2018-04
5. Iris from the ground up: A modular foundation for higher-order concurrent separation logic;Journal of Functional Programming;2018