Papers for

functional language compiler developers

Papers whose findings have a practical use for this group, as judged from the abstract. Open a paper to read what it means in practice.

DueList enhances automated reasoning about lists in SMT solvers

DueList: A Theory of Lists with Combinators for SMT Solvers

Abstract: Formal verification tools commonly rely on SMT solvers to automatically reason about programs, leveraging a range of logical theories, e.g., linear integer arithmetic, arrays, or strings, to encode program constructs and verification conditions. Despite recent advances, such solvers still struggle when reasoning about recursive data structures such as lists, which are pervasive in modern functional languages. Additionally, lists are commonly used in conjunction with higher-order combinators to, e.g., generically apply a function to all elements of the list. In this work, we provide first-class support for reasoning about lists within SMT solvers. We focus on lists of arbitrary size that, following the map-reduce paradigm, can be manipulated exclusively through a set of abstract combinators. To this end, we introduce DueList, an abstraction-refinement approach geared towards list reasoning, which we implement on top of off-the-shelf SMT solvers. To evaluate the efficiency of our approach, we assemble a diverse set of 752 benchmarks curated from previous works and real-world programs, and compare DueList against state-of-the-art solvers such as Z3 and CVC5. Our experimental evaluation shows that DueList extends reasoning facilities of existing solvers, allowing to conclude about the (un)satisfiability of a larger range of problems, while outperforming existing solvers in the vast majority of previously supported cases.

Thu 24 SeptProgramming Languages
The gist
Automated tools that check the correctness of computer programs often struggle with reasoning about lists, especially when these lists are used with complex operations called combinators. The authors created DueList, a new approach that helps these tools better understand and verify properties of lists by focusing on abstract operations like map and reduce. They tested DueList on hundreds of examples and showed that it solves more problems and works faster than popular existing tools. This advancement can make program verification more reliable when functional programming features are involved.
Open → 2609.29962v1