On Automated Lemma Generation for Separation Logic with Inductive Definitions
This addresses the challenge of reducing manual effort in deductive verification for programmers and verification engineers, though it is incremental as it builds on existing separation logic methods.
The paper tackles the problem of automating lemma generation for verifying programs that manipulate dynamic data structures using Separation Logic with inductive definitions, and the result is an approach that efficiently handles sophisticated benchmarks like operations on sorted lists, binary search trees, red-black trees, and AVL trees.
Separation Logic with inductive definitions is a well-known approach for deductive verification of programs that manipulate dynamic data structures. Deciding verification conditions in this context is usually based on user-provided lemmas relating the inductive definitions. We propose a novel approach for generating these lemmas automatically which is based on simple syntactic criteria and deterministic strategies for applying them. Our approach focuses on iterative programs, although it can be applied to recursive programs as well, and specifications that describe not only the shape of the data structures, but also their content or their size. Empirically, we find that our approach is powerful enough to deal with sophisticated benchmarks, e.g., iterative procedures for searching, inserting, or deleting elements in sorted lists, binary search tress, red-black trees, and AVL trees, in a very efficient way.