POPL 2025
Sun 19 - Sat 25 January 2025 Denver, Colorado, United States
Wed 22 Jan 2025 17:40 - 18:00 at Marco Polo - TOPLAS Chair(s): Jingbo Wang

Current static verification techniques such as separation logic support a wide range of programs. However, such techniques only support complete and detailed specifications, which places an undue burden on users. To solve this problem, prior work proposed gradual verification, which handles complete, partial, or missing specifications by soundly combining static and dynamic checking. Gradual verification has also been extended to programs that manipulate recursive, mutable data structures on the heap. Unfortunately, this extension does not reward users with decreased dynamic checking as more specifications are written and more static guarantees are made. In fact, all properties are checked dynamically regardless of any static guarantees. Additionally, no full-fledged implementation of gradual verification exists so far, which prevents studying its performance and applicability in practice.

We present Gradual C0, the first practicable gradual verifier for recursive heap data structures, which targets C0, a safe subset of C designed for education. Static verifiers supporting separation logic or implicit dynamic frames use symbolic execution for reasoning; so Gradual C0, which extends one such verifier, adopts symbolic execution at its core instead of the weakest liberal precondition approach used in prior work. Our approach addresses technical challenges related to symbolic execution with imprecise specifications, heap ownership, and branching in both program statements and specification formulas. We also deal with challenges related to minimizing insertion of dynamic checks and extensibility to other programming languages beyond C0. Finally, we provide the first empirical performance evaluation of a gradual verifier, and found that on average, Gradual C0 decreases run-time overhead between 7.1 and 40.2% compared to the fully dynamic approach used in prior work (for context, the worst cases for the approach by Wise et al. [2020] range from 0.1 to 4.5 seconds depending on the benchmark). Further, the worst-case scenarios for performance are predictable and avoidable. This work paves the way towards evaluating gradual verification at scale.

Wed 22 Jan

Displayed time zone: Mountain Time (US & Canada) change

17:00 - 18:00
TOPLASPOPL at Marco Polo
Chair(s): Jingbo Wang Purdue University
17:00
20m
Talk
Universal Composability is Robust Compilation
POPL
Marco Patrignani University of Trento, Robert Künnemann CISPA Helmholtz Center for Information Security, Riad S. Wahby Stanford University, USA, Ethan Cecchetti University of Wisconsin-Madison
17:20
20m
Talk
Adversities in Abstract Interpretation - Accommodating Robustness by Abstract Interpretation
POPL
Roberto Giacobazzi University of Arizona, Isabella Mastroeni University of Verona, Elia Perantoni
17:40
20m
Talk
Gradual C0: Symbolic Execution for Gradual Verification
POPL
Jenna DiVincenzo (Wise) Purdue University, Ian McCormack Carnegie Mellon University, Hemant Gouni Carnegie Mellon University, Pittsburgh, Pennsylvania, United States, Jacob Gorenburg , Jan-Paul Ramos-Davila Cornell University, Mona Zhang Columbia University, Conrad Zimmerman Northeastern University, Joshua Sunshine Carnegie Mellon University, Éric Tanter University of Chile, Jonathan Aldrich Carnegie Mellon University
Link to publication DOI