Data-Driven Loop Invariant Inference with Automatic Feature Synthesis

07/07/2017
by   Saswat Padhi, et al.
0

We present LoopInvGen, a tool for generating loop invariants that can provably guarantee correctness of a program with respect to a given specification. We extend the data-driven approach to inferring sufficient loop invariants from a collection of program states. In contrast to existing data-driven techniques, LoopInvGen is not restricted to a fixed set of features -- atomic predicates that are composed together to build complex loop invariants. Instead, we start with no initial features, and use program synthesis techniques to grow the set on demand. We compare with existing static and dynamic tools for loop invariant inference, and show that LoopInvGen enables a less onerous and more expressive form of inference.

READ FULL TEXT

page 1

page 2

page 3

research
02/13/2023

From Polynomial Invariants to Linear Loops

Loop invariants are software properties that hold before and after every...
research
03/26/2020

Data-Driven Inference of Representation Invariants

A representation invariant is a property that holds of all values of abs...
research
05/30/2022

Data-driven Numerical Invariant Synthesis with Automatic Generation of Attributes

We propose a data-driven algorithm for numerical invariant synthesis and...
research
06/09/2021

Data-Driven Invariant Learning for Probabilistic Programs

Morgan and McIver's weakest pre-expectation framework is one of the most...
research
03/03/2020

Data Invariants: On Trust in Data-Driven Systems

The reliability and proper function of data-driven applications hinge on...
research
04/26/2014

SPEEDY: An Eclipse-based IDE for invariant inference

SPEEDY is an Eclipse-based IDE for exploring techniques that assist user...
research
03/17/2020

Learning Nonlinear Loop Invariants with Gated Continuous Logic Networks (Extended Version)

Verifying real-world programs often requires inferring loop invariants w...

Please sign up or login with your details

Forgot password? Click here to reset