AutoFrame: Automatic Frame Inference for Object-Oriented Languages

08/27/2018
by   Victor Rivera, et al.
0

Automatic program verification has made tremendous strides, but is not yet for the masses. How do we make it less painful? This article addresses one of the obstacles: the need to specify explicit "frame clauses", expressing what properties are left unchanged by an operation. It is fair enough to ask the would-be (human) prover to state what each operation changes, and how, but the (mechanical) prover also requires knowledge of what it does not change. The process of specifying and verifying these properties is tedious and error-prone, and must be repeated whenever the software evolves. it is also hard to justify, since all the information about what the code changes is in the code itself. The AutoFrame tool presented here performs this analysis entirely automatically. It applies to object-oriented programming, where the issue is compounded by aliasing: if x is aliased to y, any update to x.a also affects y.a, even though the updating instruction usually does not even mention y. This aspect turns out to be the most delicate, and is addressed in AutoFrame by taking advantage of a companion tool, AutoAlias, which performs sound and sufficiently precise alias analysis, also in an entirely automatic way. Some practical results of AutoFrame so far are: (1) the automatic reconstruction (in about 25 seconds on an ordinary laptop) of the exact frame clauses, a total of 169 clauses, for an 8,000-line data structures and algorithms library which was previously (with the manually written frame clauses) verified for functional correctness using a mechanical program prover; and (2) the automatic generation (in less than 4 minutes) of frame conditions for a 150,000-line graphical and GUI library. The source code of AutoFrame and these examples are available for download.

READ FULL TEXT

page 1

page 2

page 3

page 4

research
08/27/2018

AutoAlias: Automatic Variable-Precision Alias Analysis for Object-Oriented Programs

The aliasing question (can two reference expressions point, during an ex...
research
10/08/2017

Expressing and verifying embedded software requirements

Writing requirements for embedded software is pointless unless they refl...
research
01/25/2018

Automatic Labeling of the Object-oriented Source Code: The Lotus Approach

Most of open-source software systems become available on the internet to...
research
11/26/2019

GOOL: A Generic Object-Oriented Language (extended version)

We present GOOL, a Generic Object-Oriented Language. It demonstrates tha...
research
11/18/2019

Invariant Diffs

Software development is inherently incremental. Nowadays, many software ...
research
06/19/2013

Verifying the Steane code with Quantomatic

In this paper we give a partially mechanized proof of the correctness of...

Please sign up or login with your details

Forgot password? Click here to reset