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