Data-Driven Abductive Inference of Library Specifications

08/10/2021
by   Zhe Zhou, et al.
0

Programmers often leverage data structure libraries that provide useful and reusable abstractions. Modular verification of programs that make use of these libraries naturally rely on specifications that capture important properties about how the library expects these data structures to be accessed and manipulated. However, these specifications are often missing or incomplete, making it hard for clients to be confident they are using the library safely. When library source code is also unavailable, as is often the case, the challenge to infer meaningful specifications is further exacerbated. In this paper, we present a novel data-driven abductive inference mechanism that infers specifications for library methods sufficient to enable verification of the library's clients. Our technique combines a data-driven learning-based framework to postulate candidate specifications, along with SMT-provided counterexamples to refine these candidates, taking special care to prevent generating specifications that overfit to sampled tests. The resulting specifications form a minimal set of requirements on the behavior of library implementations that ensures safety of a particular client program. Our solution thus provides a new multi-abduction procedure for precise specification inference of data structure libraries guided by client-side verification tasks. Experimental results on a wide range of realistic OCaml data structure programs demonstrate the effectiveness of the approach.

READ FULL TEXT
research
11/09/2017

Active Learning of Points-To Specifications

When analyzing programs, large libraries pose significant challenges to ...
research
02/08/2022

SPIDER: Specification-based Integration Defect Revealer

Modern software design practice implies widespread use in the developmen...
research
11/06/2021

Abstraction for Crash-Resilient Objects (Extended Version)

We study abstraction for crash-resilient concurrent objects using non-vo...
research
09/06/2022

Specification-Guided Component-Based Synthesis from Effectful Libraries

Component-based synthesis seeks to build programs using the APIs provide...
research
05/16/2019

Inferring Concise Specifications of APIs

Modern software relies on libraries and uses them via application progra...
research
06/17/2019

Neurally-Guided Structure Inference

Most structure inference methods either rely on exhaustive search or are...
research
06/02/2023

Specifying and Verifying Persistent Libraries

We present a general framework for specifying and verifying persistent l...

Please sign up or login with your details

Forgot password? Click here to reset