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 ...
A HAT Trick: Automatically Verifying Representation Invariants using Symbolic Finite Automata
Proceedings of the ACM on Programming Languages (PACMPL), Volume 8, Issue PLDIArticle No.: 203, Pages 1387–1411https://doi.org/10.1145/3656433Functional programs typically interact with stateful libraries that hide state behind typed abstractions. One particularly important class of applications are data structure implementations that rely on such libraries to provide a level of efficiency and ...
Mechanizing Refinement Types
Proceedings of the ACM on Programming Languages (PACMPL), Volume 8, Issue POPLArticle No.: 70, Pages 2099–2128https://doi.org/10.1145/3632912Practical checkers based on refinement types use the combination of implicit semantic subtyping and parametric polymorphism to simplify the specification and automate the verification of sophisticated properties of programs. However, a formal ...
- research-articleJanuary 2024
Quotient Haskell: Lightweight Quotient Types for All
Proceedings of the ACM on Programming Languages (PACMPL), Volume 8, Issue POPLArticle No.: 27, Pages 785–815https://doi.org/10.1145/3632869Subtypes and quotient types are dual type abstractions. However, while subtypes are widely used both explicitly and implicitly, quotient types have not seen much practical use outside of proof assistants. A key difficulty to wider adoption of quotient ...
- research-articleAugust 2023
Weighted Refinement Types for Counterpoint Composition
FARM 2023: Proceedings of the 11th ACM SIGPLAN International Workshop on Functional Art, Music, Modelling, and DesignPages 2–7https://doi.org/10.1145/3609023.3609804Refinement types are useful for describing specifications of programs. When applied to music theory, however, refinement types are too restrictive in that they do not allow breaking of rules. To relax this restriction, we propose weighted refinement ...
-
Covering All the Bases: Type-Based Verification of Test Input Generators
Proceedings of the ACM on Programming Languages (PACMPL), Volume 7, Issue PLDIArticle No.: 157, Pages 1244–1267https://doi.org/10.1145/3591271Test input generators are an important part of property-based testing (PBT) frameworks. Because PBT is intended to test deep semantic and structural properties of a program, the outputs produced by these generators can be complex data structures, ...
- research-articleJuly 2023
Grammar-Based String Refinement Types
ICSE '23: Proceedings of the 45th International Conference on Software Engineering: Companion ProceedingsPages 267–269https://doi.org/10.1109/ICSE-Companion58688.2023.00072Programmers use strings to represent variates of data that contain internal structure or syntax. However, existing mainstream programming languages do not provide users with means to further narrow down the set of valid values for a string. An invalid ...
Usability-Oriented Design of Liquid Types for Java
ICSE '23: Proceedings of the 45th International Conference on Software EngineeringPages 1520–1532https://doi.org/10.1109/ICSE48619.2023.00132Developers want to detect bugs as early in the development lifecycle as possible, as the effort and cost to fix them increases with the incremental development of features. Ultimately, bugs that are only found in production can have catastrophic ...
- research-articleJanuary 2023
CN: Verifying Systems C Code with Separation-Logic Refinement Types
Proceedings of the ACM on Programming Languages (PACMPL), Volume 7, Issue POPLArticle No.: 1, Pages 1–32https://doi.org/10.1145/3571194Despite significant progress in the verification of hypervisors, operating systems, and compilers, and in verification tooling, there exists a wide gap between the approaches used in verification projects and conventional development of systems software. ...
- research-articleDecember 2022
Synchronous Programming and Refinement Types in Robotics: From Verification to Implementation
- Jiawei Chen,
- José Luiz Vargas de Mendonça,
- Shayan Jalili,
- Bereket Ayele,
- Bereket Ngussie Bekele,
- Zhemin Qu,
- Pranjal Sharma,
- Tigist Shiferaw,
- Yicheng Zhang,
- Jean-Baptiste Jeannin
FTSCS 2022: Proceedings of the 8th ACM SIGPLAN International Workshop on Formal Techniques for Safety-Critical SystemsPages 68–79https://doi.org/10.1145/3563822.3568015Robots and other cyber-physical systems are held to high standards of safety and reliability, and thus one must be confident in the correctness of their software. Formal verification can provide such confidence, but programming languages that lend ...
- research-articleDecember 2022
Grammar Inference for Ad Hoc Parsers
SPLASH Companion 2022: Companion Proceedings of the 2022 ACM SIGPLAN International Conference on Systems, Programming, Languages, and Applications: Software for HumanityPages 38–42https://doi.org/10.1145/3563768.3565550Any time we use common string functions like split, trim, or slice, we effectively perform parsing. Yet no one ever bothers to write down grammars for such ad hoc parsers. We propose a grammar inference system that allows programmers to get input ...
BFF: foundational and automated verification of bitfield-manipulating programs
Proceedings of the ACM on Programming Languages (PACMPL), Volume 6, Issue OOPSLA2Article No.: 182, Pages 1613–1638https://doi.org/10.1145/3563345Low-level systems code often needs to interact with data, such as page table entries or network packet headers, in which multiple pieces of information are packaged together as bitfield components of a single machine integer and accessed via bitfield ...
Coinduction inductively: mechanizing coinductive proofs in Liquid Haskell
Haskell 2022: Proceedings of the 15th ACM SIGPLAN International Haskell SymposiumPages 1–12https://doi.org/10.1145/3546189.3549922Liquid Haskell is an inductive verifier that cannot reason about codata. In this work we present two alternative approaches, namely indexed and constructive coinduction, to consistently encode coinductive proofs in Liquid Haskell. The ...
How to safely use extensionality in Liquid Haskell
Haskell 2022: Proceedings of the 15th ACM SIGPLAN International Haskell SymposiumPages 13–26https://doi.org/10.1145/3546189.3549919Refinement type checkers are a powerful way to reason about functional programs. For example, one can prove properties of a slow, specification implementation and port the proofs to an optimized pure implementation that behaves the same. But to reason ...
Safe couplings: coupled refinement types
Proceedings of the ACM on Programming Languages (PACMPL), Volume 6, Issue ICFPArticle No.: 112, Pages 596–624https://doi.org/10.1145/3547643We enhance refinement types with mechanisms to reason about relational properties of probabilistic computations. Our mechanisms, which are inspired from probabilistic couplings, are applicable to a rich set of probabilistic properties, including expected ...
ANOSY: approximated knowledge synthesis with refinement types for declassification
PLDI 2022: Proceedings of the 43rd ACM SIGPLAN International Conference on Programming Language Design and ImplementationPages 15–30https://doi.org/10.1145/3519939.3523725Non-interference is a popular way to enforce confidentiality of sensitive data. However, declassification of sensitive information is often needed in realistic applications but breaks non-interference. We present ANOSY, an approximate knowledge ...
- research-articleJune 2021
RefinedC: automating the foundational verification of C code with refined ownership types
PLDI 2021: Proceedings of the 42nd ACM SIGPLAN International Conference on Programming Language Design and ImplementationPages 158–174https://doi.org/10.1145/3453483.3454036Given the central role that C continues to play in systems software, and the difficulty of writing safe and correct C code, it remains a grand challenge to develop effective formal methods for verifying C programs. In this paper, we propose a new ...
- ArticleMarch 2021
- research-articleJanuary 2021
Intensional datatype refinement: with application to scalable verification of pattern-match safety
Proceedings of the ACM on Programming Languages (PACMPL), Volume 5, Issue POPLArticle No.: 55, Pages 1–29https://doi.org/10.1145/3434336The pattern-match safety problem is to verify that a given functional program will never crash due to non-exhaustive patterns in its function definitions. We present a refinement type system that can be used to solve this problem. The system extends ML-...
Verifying replicated data types with typeclass refinements in Liquid Haskell
Proceedings of the ACM on Programming Languages (PACMPL), Volume 4, Issue OOPSLAArticle No.: 216, Pages 1–30https://doi.org/10.1145/3428284This paper presents an extension to Liquid Haskell that facilitates stating and semi-automatically proving properties of typeclasses. Liquid Haskell augments Haskell with refinement types—our work allows such types to be attached to typeclass method ...