Intensional datatype refinement: with application to scalable verification of pattern-match safety
-
Published:2021-01-04
Issue:POPL
Volume:5
Page:1-29
-
ISSN:2475-1421
-
Container-title:Proceedings of the ACM on Programming Languages
-
language:en
-
Short-container-title:Proc. ACM Program. Lang.
Author:
Jones Eddie1,
Ramsay Steven1ORCID
Affiliation:
1. University of Bristol, UK
Abstract
The 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-style type systems with algebraic datatypes by a limited form of structural subtyping and environment-level intersection. We describe a fully automatic, sound and complete type inference procedure for this system which, under reasonable assumptions, is worst-case linear-time in the program size. Compositionality is essential to obtaining this complexity guarantee. A prototype implementation for Haskell is able to analyse a selection of packages from the Hackage database in a few hundred milliseconds.
Funder
Engineering and Physical Sciences Research Council
Publisher
Association for Computing Machinery (ACM)
Subject
Safety, Risk, Reliability and Quality,Software
Reference55 articles.
1. Alexander Aiken. 1999. Introduction to set constraint-based program analysis. Science of Computer Programming 35 2 ( 1999 ) 79-111. https://doi.org/10.1016/S0167-6423 ( 99 ) 00007-6 10.1016/S0167-6423(99)00007-6 Alexander Aiken. 1999. Introduction to set constraint-based program analysis. Science of Computer Programming 35 2 ( 1999 ) 79-111. https://doi.org/10.1016/S0167-6423 ( 99 ) 00007-6 10.1016/S0167-6423(99)00007-6
2. Type inclusion constraints and type inference
3. Soft typing with conditional types
4. Soft typing with conditional types
Cited by
3 articles.
订阅此论文施引文献
订阅此论文施引文献,注册后可以免费订阅5篇论文的施引文献,订阅后可以查看论文全部施引文献
1. Ill-Typed Programs Don’t Evaluate;Proceedings of the ACM on Programming Languages;2024-01-05
2. Contextual Refinement Types;Electronic Proceedings in Theoretical Computer Science;2023-11-17
3. Structural refinement types;Proceedings of the 7th ACM SIGPLAN International Workshop on Type-Driven Development;2022-09-06