# A Monadic Framework for Relational Verification: Applied to Information   Security, Program Equivalence, and Optimizations

**Authors:** Niklas Grimm, Kenji Maillard, C\'edric Fournet, Catalin Hritcu, Matteo, Maffei, Jonathan Protzenko, Tahina Ramananandro, Aseem Rastogi, Nikhil Swamy,, Santiago Zanella-B\'eguelin

arXiv: 1703.00055 · 2023-04-21

## TL;DR

This paper introduces a monadic framework within a proof assistant for verifying relational properties of effectful programs, enabling unified reasoning about security, equivalence, and optimizations with minimal extra effort.

## Contribution

It presents a general monadic approach in F* for relational verification, unifying various analyses and demonstrating its effectiveness across multiple application domains.

## Key findings

- Effective encoding of relational properties in F*
- Automated verification of security and equivalence
- Minimal additional effort compared to unary verification

## Abstract

Relational properties describe multiple runs of one or more programs. They characterize many useful notions of security, program refinement, and equivalence for programs with diverse computational effects, and they have received much attention in the recent literature. Rather than developing separate tools for special classes of effects and relational properties, we advocate using a general purpose proof assistant as a unifying framework for the relational verification of effectful programs. The essence of our approach is to model effectful computations using monads and to prove relational properties on their monadic representations, making the most of existing support for reasoning about pure programs.   We apply this method in F* and evaluate it by encoding a variety of relational program analyses, including information flow control, program equivalence and refinement at higher order, correctness of program optimizations and game-based cryptographic security. By relying on SMT-based automation, unary weakest preconditions, user-defined effects, and monadic reification, we show that, compared to unary properties, verifying relational properties requires little additional effort from the F* programmer.

## Full text

_Full body text omitted from this summary view._ Fetch the complete paper as Markdown: https://tomesphere.com/paper/1703.00055/full.md

## Figures

2 figures with captions in the complete paper: https://tomesphere.com/paper/1703.00055/full.md

## References

87 references — full list in the complete paper: https://tomesphere.com/paper/1703.00055/full.md

---
Source: https://tomesphere.com/paper/1703.00055