OOPSLA’22, Finding real bugs in big programs with incorrectness logic

This paper proposes a static analysis method using Incorrectness Separation Logic, underpinned by bi-abduction technique.

Goal

Compute a set of function summary for each method , without any specification from the users.

Analysis

The static analysis in Pulse is a worklist-style forward Data-flow Analysis. Each control flow point is associated with a set of triples , which means ‘if is added to the precondition of the function, then holds at this point’.

The transfer function is represented by the Eval(p, C, T) function:

inst represents all other types of statements and function calls. contains all computed summaries for functions, and predefined IL triple for each instruction inst.

Bi-Abduction

Given a spec of next instruction , and the current precondition , the goal of bi-abduction is to synthesize and such that

is added to the post-condition, and propagated back to the precondition of the summary.

The method for bi-abduction is detailed in POPL’09 Compositional Shape Analysis by Means of Bi-Abduction