File Download
  Links for fulltext
     (May Require Subscription)
Supplementary

Article: Imperative Compositional Programming: Type Sound Distributive Intersection Subtyping with References via Bidirectional Typing

TitleImperative Compositional Programming: Type Sound Distributive Intersection Subtyping with References via Bidirectional Typing
Authors
KeywordsBidirectional Typing
Compositional Programming
Distributive Subtyping
Intersection Types
Mutable References
Type Soundness
Issue Date8-Oct-2024
PublisherAssociation for Computing Machinery (ACM)
Citation
Proceedings of the ACM on Programming Languages, 2024, v. 8, n. OOPSLA2 How to Cite?
AbstractCompositional programming is a programming paradigm that emphasizes modularity and is implemented in the CP programming language. The foundations for compositional programming are based on a purely functional variant of System F with intersection types, called Fi+, which includes distributivity rules for subtyping. This paper shows how to extend compositional programming and CP with mutable references, enabling a modular, imperative compositional programming style. A technical obstacle solved in our work is the interaction between distributive intersection subtyping and mutable references. Davies and Pfenning [2000] studied this problem in standard formulations of intersection type systems and argued that, when combined with references, distributive subtyping rules lead to type unsoundness. To recover type soundness, they proposed dropping distributivity rules in subtyping. CP cannot adopt this solution, since it fundamentally relies on distributivity for modularity. Therefore, we revisit the problem and show that, by adopting bidirectional typing, a more lightweight and type sound restriction is possible: we can simply restrict the typing rule for references. This solution retains distributivity and an unrestricted intersection introduction rule. We present a first calculus, based on Davies and Pfenning's work, which illustrates the generality of our solution. Then we present an extension of Fi+ with references, which adopts our restriction and enables imperative compositional programming. We implement an extension of CP with references and show how to model a modular live-variable analysis in CP. Both calculi and their proofs are formalized in the Coq proof assistant.
Persistent Identifierhttp://hdl.handle.net/10722/361882
ISSN
2023 Impact Factor: 2.2
2023 SCImago Journal Rankings: 1.242

 

DC FieldValueLanguage
dc.contributor.authorYe, Wenjia-
dc.contributor.authorSun, Yaozhu-
dc.contributor.authorDos Santos Oliveira, Bruno Cesar-
dc.date.accessioned2025-09-17T00:31:34Z-
dc.date.available2025-09-17T00:31:34Z-
dc.date.issued2024-10-08-
dc.identifier.citationProceedings of the ACM on Programming Languages, 2024, v. 8, n. OOPSLA2-
dc.identifier.issn2475-1421-
dc.identifier.urihttp://hdl.handle.net/10722/361882-
dc.description.abstractCompositional programming is a programming paradigm that emphasizes modularity and is implemented in the CP programming language. The foundations for compositional programming are based on a purely functional variant of System F with intersection types, called Fi+, which includes distributivity rules for subtyping. This paper shows how to extend compositional programming and CP with mutable references, enabling a modular, imperative compositional programming style. A technical obstacle solved in our work is the interaction between distributive intersection subtyping and mutable references. Davies and Pfenning [2000] studied this problem in standard formulations of intersection type systems and argued that, when combined with references, distributive subtyping rules lead to type unsoundness. To recover type soundness, they proposed dropping distributivity rules in subtyping. CP cannot adopt this solution, since it fundamentally relies on distributivity for modularity. Therefore, we revisit the problem and show that, by adopting bidirectional typing, a more lightweight and type sound restriction is possible: we can simply restrict the typing rule for references. This solution retains distributivity and an unrestricted intersection introduction rule. We present a first calculus, based on Davies and Pfenning's work, which illustrates the generality of our solution. Then we present an extension of Fi+ with references, which adopts our restriction and enables imperative compositional programming. We implement an extension of CP with references and show how to model a modular live-variable analysis in CP. Both calculi and their proofs are formalized in the Coq proof assistant.-
dc.languageeng-
dc.publisherAssociation for Computing Machinery (ACM)-
dc.relation.ispartofProceedings of the ACM on Programming Languages-
dc.rightsThis work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.-
dc.subjectBidirectional Typing-
dc.subjectCompositional Programming-
dc.subjectDistributive Subtyping-
dc.subjectIntersection Types-
dc.subjectMutable References-
dc.subjectType Soundness-
dc.titleImperative Compositional Programming: Type Sound Distributive Intersection Subtyping with References via Bidirectional Typing-
dc.typeArticle-
dc.description.naturepublished_or_final_version-
dc.identifier.doi10.1145/3689782-
dc.identifier.scopuseid_2-s2.0-85206892260-
dc.identifier.volume8-
dc.identifier.issueOOPSLA2-
dc.identifier.eissn2475-1421-
dc.identifier.issnl2475-1421-

Export via OAI-PMH Interface in XML Formats


OR


Export to Other Non-XML Formats