RHLE: Relational Reasoning for Existential Program Verification

by   Robert Dickerson, et al.

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.



There are no comments yet.



RHLE: Automatic Verification of ∀∃-Hyperproperties

Specifications of program behavior typically consider single executions ...

Verifying Relational Properties using Trace Logic

We present a logical framework for the verification of relational proper...

The Next 700 Relational Program Logics

We propose the first framework for defining relational program logics fo...

Incorrectness Logic for Graph Programs

Program logics typically reason about an over-approximation of program b...

Code Sophistication: From Code Recommendation to Logic Recommendation

A typical approach to programming is to first code the main execution sc...

Incremental Vulnerability Detection with Insecurity Separation Logic

We present the first compositional, incremental static analysis for dete...

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.