Export Citations
Save this search
Please login to be able to save your searches and receive alerts for new content matching your search criteria.
Synchronous Programming with Refinement Types
- Jiawei Chen,
- José Luiz Vargas de Mendonça,
- Bereket Shimels Ayele,
- Bereket Ngussie Bekele,
- Shayan Jalili,
- Pranjal Sharma,
- Nicholas Wohlfeil,
- Yicheng Zhang,
- Jean-Baptiste Jeannin
Proceedings of the ACM on Programming Languages (PACMPL), Volume 8, Issue ICFPArticle No.: 268, Pages 938–972https://doi.org/10.1145/3674657Cyber-Physical Systems (CPS) consist of software interacting with the physical world, such as robots, vehicles, and industrial processes. CPS are frequently responsible for the safety of lives, property, or the environment, and so software correctness ...
- research-articleAugust 2024
Gradual Indexed Inductive Types
Proceedings of the ACM on Programming Languages (PACMPL), Volume 8, Issue ICFPArticle No.: 255, Pages 544–572https://doi.org/10.1145/3674644Indexed inductive types are essential in dependently-typed programming languages, enabling precise and expressive specifications of data structures and properties. Recognizing that programming and proving with dependent types could benefit from the ...
- research-articleJune 2024
Stream Types
- Joseph W. Cutler,
- Christopher Watson,
- Emeka Nkurumeh,
- Phillip Hilliard,
- Harrison Goldstein,
- Caleb Stanford,
- Benjamin C. Pierce
Proceedings of the ACM on Programming Languages (PACMPL), Volume 8, Issue PLDIArticle No.: 204, Pages 1412–1436https://doi.org/10.1145/3656434We propose a rich foundational theory of typed data streams and stream transformers, motivated by two high-level goals. First, the type of a stream should be able to express complex sequential patterns of events over time. And second, it should describe ...
- research-articleJune 2024
Decidable Subtyping of Existential Types for Julia
Proceedings of the ACM on Programming Languages (PACMPL), Volume 8, Issue PLDIArticle No.: 191, Pages 1091–1114https://doi.org/10.1145/3656421Julia is a modern scientific-computing language that relies on multiple dispatch to implement generic libraries. While the language does not have a static type system, method declarations are decorated with expressive type annotations to determine when ...
Automated Verification of Fundamental Algebraic Laws
Proceedings of the ACM on Programming Languages (PACMPL), Volume 8, Issue PLDIArticle No.: 178, Pages 766–789https://doi.org/10.1145/3656408Algebraic laws of functions in mathematics – such as commutativity, associativity, and idempotence – are often used as the basis to derive more sophisticated properties of complex mathematical structures and are heavily used in abstract computational ...
-
- research-articleApril 2024
Message-Observing Sessions
Proceedings of the ACM on Programming Languages (PACMPL), Volume 8, Issue OOPSLA1Article No.: 142, Pages 1351–1379https://doi.org/10.1145/3649859We present Most, a process language with message-observing session types. Message-observing session types extend binary session types with type-level computation to specify communication protocols that vary based on messages observed on other channels. ...
- research-articleApril 2024
Degrees of Separation: A Flexible Type System for Safe Concurrency
Proceedings of the ACM on Programming Languages (PACMPL), Volume 8, Issue OOPSLA1Article No.: 136, Pages 1181–1207https://doi.org/10.1145/3649853Data races have long been a notorious problem in concurrent programming. They are hard to detect, and lead to non-deterministic behaviours. There has been a lot of interest in type systems that statically guarantee data race freedom. Significant progress ...
- research-articleApril 2024
Fulfilling OCaml Modules with Transparency
Proceedings of the ACM on Programming Languages (PACMPL), Volume 8, Issue OOPSLA1Article No.: 101, Pages 194–222https://doi.org/10.1145/3649818ML modules come as an additional layer on top of a core language to offer large-scale notions of composition and abstraction. They largely contributed to the success of OCaml and SML. While modules are easy to write for common cases, their advanced use ...
Parametric Subtyping for Structural Parametric Polymorphism
Proceedings of the ACM on Programming Languages (PACMPL), Volume 8, Issue POPLArticle No.: 90, Pages 2700–2730https://doi.org/10.1145/3632932We study the interaction of structural subtyping with parametric polymorphism and recursively defined type constructors. Although structural subtyping is undecidable in this setting, we describe a notion of parametricity for type constructors and then ...
- research-articleJanuary 2024
Type-Based Gradual Typing Performance Optimization
Proceedings of the ACM on Programming Languages (PACMPL), Volume 8, Issue POPLArticle No.: 89, Pages 2667–2699https://doi.org/10.1145/3632931Gradual typing has emerged as a popular design point in programming languages, attracting significant interests from both academia and industry. Programmers in gradually typed languages are free to utilize static and dynamic typing as needed. To make ...
Indexed Types for a Statically Safe WebAssembly
Proceedings of the ACM on Programming Languages (PACMPL), Volume 8, Issue POPLArticle No.: 80, Pages 2395–2424https://doi.org/10.1145/3632922We present Wasm-prechk, a superset of WebAssembly (Wasm) that uses indexed types to express and check simple constraints over program values. This additional static reasoning enables safely removing dynamic safety checks from Wasm, such as memory bounds ...
Soundly Handling Linearity
Proceedings of the ACM on Programming Languages (PACMPL), Volume 8, Issue POPLArticle No.: 54, Pages 1600–1628https://doi.org/10.1145/3632896We propose a novel approach to soundly combining linear types with multi-shot effect handlers. circear type systems statically ensure that resources such as file handles and communication channels are used exactly once. Effect handlers provide a rich ...
- research-articleJanuary 2024
Unboxed Data Constructors: Or, How cpp Decides a Halting Problem
Proceedings of the ACM on Programming Languages (PACMPL), Volume 8, Issue POPLArticle No.: 51, Pages 1509–1539https://doi.org/10.1145/3632893We propose a new language feature for ML-family languages, the ability to selectively unbox certain data constructors, so that their runtime representation gets compiled away to just the identity on their argument. Unboxing must be statically rejected ...
Polymorphic Type Inference for Dynamic Languages
Proceedings of the ACM on Programming Languages (PACMPL), Volume 8, Issue POPLArticle No.: 40, Pages 1179–1210https://doi.org/10.1145/3632882We present a type system that combines, in a controlled way, first-order polymorphism with intersection types, union types, and subtyping, and prove its safety. We then define a type reconstruction algorithm that is sound and terminating. This yields a ...
- research-articleOctober 2023
Gradual Typing for Effect Handlers
Proceedings of the ACM on Programming Languages (PACMPL), Volume 7, Issue OOPSLA2Article No.: 284, Pages 1758–1786https://doi.org/10.1145/3622860We present a gradually typed language, GrEff, with effects and handlers that supports migration from unchecked to checked effect typing. This serves as a simple model of the integration of an effect typing discipline with an existing effectful typed ...
Validating IoT Devices with Rate-Based Session Types
Proceedings of the ACM on Programming Languages (PACMPL), Volume 7, Issue OOPSLA2Article No.: 278, Pages 1589–1617https://doi.org/10.1145/3622854We develop a session types based framework for implementing and validating rate-based message passing systems in Internet of Things (IoT) domains. To model the indefinite repetition present in many embedded and IoT systems, we introduce a timed ...
- research-articleOctober 2023
Resource-Aware Soundness for Big-Step Semantics
Proceedings of the ACM on Programming Languages (PACMPL), Volume 7, Issue OOPSLA2Article No.: 267, Pages 1281–1309https://doi.org/10.1145/3622843We extend the semantics and type system of a lambda calculus equipped with common constructs to be resource-aware. That is, reduction is instrumented to keep track of the usage of resources, and the type system guarantees, besides standard soundness, ...
A Grounded Conceptual Model for Ownership Types in Rust
Proceedings of the ACM on Programming Languages (PACMPL), Volume 7, Issue OOPSLA2Article No.: 265, Pages 1224–1252https://doi.org/10.1145/3622841Programmers learning Rust struggle to understand ownership types, Rust’s core mechanism for ensuring memory safety without garbage collection. This paper describes our attempt to systematically design a pedagogy for ownership types. First, we studied ...
A Graded Modal Dependent Type Theory with a Universe and Erasure, Formalized
Proceedings of the ACM on Programming Languages (PACMPL), Volume 7, Issue ICFPArticle No.: 220, Pages 920–954https://doi.org/10.1145/3607862We present a graded modal type theory, a dependent type theory with grades that can be used to enforce various properties of the code. The theory has Π-types, weak and strong Σ-types, natural numbers, an empty type, and a universe, and we also extend the ...
With or Without You: Programming with Effect Exclusion
Proceedings of the ACM on Programming Languages (PACMPL), Volume 7, Issue ICFPArticle No.: 204, Pages 448–475https://doi.org/10.1145/3607846Type and effect systems have been successfully used to statically reason about effects in many different domains, including region-based memory management, exceptions, and algebraic effects and handlers. Such systems’ soundness is often stated in terms ...