Over-approximating (OX) program logics, such as separation logic (SL), are used for verifying properties of heap-manipulating programs: all terminating behaviour is characterised, but established results and errors need not be~reachable. OX function specifications are thus incompatible with true bug-finding supported by symbolic execution tools such as Pulse and Pulse-X. In contrast, under-approximating (UX) program logics, such as incorrectness separation logic, are used to find true results and bugs: established results and errors are reachable, but there is no mechanism for understanding if all terminating behaviour has been characterised.

We introduce exact separation logic (ESL), which provides fully-verified function specifications compatible with both OX verification and UX true bug-funding: all terminating behaviour is characterised, and all established results and errors are reachable. We prove soundness for ESL with mutually recursive functions, demonstrating, for the first time, function compositionality for a UX logic. We show that UX program logics require subtle definitions of internal and external function specifications compared with the familiar definitions of OX logics. We investigate the expressivity of ESL and, for the first time, explore the role of abstraction in UX reasoning by verifying abstract ESL specifications of various data-structure algorithms. In doing so, we highlight the difference between abstraction (hiding information) and over-approximation (losing information). Our findings demonstrate that, expectedly, abstraction cannot be used as freely in UX logics as in OX logics, but also that it should be feasible to use ESL to provide tractable function specifications for self-contained, critical code, which would then be used for both verification and true bug-finding.

Fri 21 Jul

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

10:30 - 12:00
ECOOP 7: Verification and TestingResearch Papers at Amazon Auditorium (Gates G20)
Chair(s): Wenxi Wang University of Texas at Austin
10:30
15m
Talk
On using VeriFast, VerCors, Plural, and KeY to check object usage
Research Papers
João Mota NOVA School of Science and Technology, António Ravara NOVA LINCS & FCT, NOVA University of Lisbon, Marco Giunti NOVA-LINCS, FCT NOVA / Universidade Nova de Lisboa
DOI
10:45
15m
Talk
Exact Separation Logic
Research Papers
Petar Maksimović Imperial College London, UK, Caroline Cronjäger Ruhr-Universität Bochum, Andreas Lööw Imperial College London, Julian Sutherland Imperial College London, Philippa Gardner Imperial College London
DOI Pre-print
11:00
15m
Talk
Morpheus: Automated Safety Verification of Data-dependent Parser Combinator Programs
Research Papers
Ashish Mishra Purdue University, Suresh Jagannathan Purdue University
DOI
11:15
15m
Talk
Constraint Based Compiler Optimization for Energy Harvesting Applications
Research Papers
Yannan Li University of Southern California, Chao Wang University of Southern California
DOI
11:30
15m
Talk
Dynamic Determinacy Race Detection for Task-Parallel Programs with Promises
Research Papers
Feiyang Jin Georgia Institute of Technology, Lechen Yu Georgia Institute of Technology, Tiago Cogumbreiro University of Massachusetts Boston, Vivek Sarkar Georgia Institute of Technology, Jun Shirako Georgia Institute of Technology
DOI
11:45
15m
Talk
On Leveraging Tests to Infer Nullable Annotations
Research Papers
Jens Dietrich Victoria University of Wellington, David J. Pearce ConsenSys, Mahin Chandramohan Oracle Labs
DOI