RHLE: Relational Reasoning for Existential Program Verification

02/07/2020
by   Robert Dickerson, et al.
0

Reasoning about nondeterministic programs requires a specification of how their nondeterministic choices are allowed to be resolved. When reasoning about safety properties, it is sound to overapproximate the permitted behaviors. Once its safety is established, a program remains safe for every valid implementation of its nondeterministic choices. Overapproximate specifications are less useful when establishing that a nondeterministic program exhibits some desirable behavior, however, as resolving nondeterminism to specific choices is not guaranteed to preserve the execution that resulted in the desirable final state. This paper proposes a flexible way to underapproximate the behaviors of nondeterministic choices so that clients can soundly reason about the existence of desirable behaviors, while at the same time permitting some freedom in how those choices are implemented. We present a pair of program logics, called HLE and RHLE, that use these specifications to reason about existential program behaviors in the single program and relational settings, respectively. We have implemented a verifier based on these program logics that is capable of automatically verifying a wide range of relational properties, including refinement and noninterference. We have evaluated our approach by using this tool to verify a diverse set of programs and properties drawn from the literature.

READ FULL TEXT
POST COMMENT

Comments

There are no comments yet.

Authors

02/07/2020

RHLE: Automatic Verification of ∀∃-Hyperproperties

Specifications of program behavior typically consider single executions ...
06/24/2019

Verifying Relational Properties using Trace Logic

We present a logical framework for the verification of relational proper...
07/11/2019

The Next 700 Relational Program Logics

We propose the first framework for defining relational program logics fo...
05/10/2021

Incorrectness Logic for Graph Programs

Program logics typically reason about an over-approximation of program b...
01/19/2022

Code Sophistication: From Code Recommendation to Logic Recommendation

A typical approach to programming is to first code the main execution sc...
07/12/2021

Incremental Vulnerability Detection with Insecurity Separation Logic

We present the first compositional, incremental static analysis for dete...
02/19/2018

Verifying Semantic Conflict-Freedom in Three-Way Program Merges

Even though many programmers rely on 3-way merge tools to integrate chan...
This week in AI

Get the week's most popular data science and artificial intelligence research sent straight to your inbox every Saturday.