Title
A Monadic Framework for Relational Verification (Functional Pearl).
Abstract
Relational properties relate 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 have received much attention in the recent literature. Rather than designing and developing tools for special classes of relational properties, as typically proposed in the literature, we advocate the relational verification of effectful programs within general purpose proof assistants. The essence of our approach is to model effectful computations using monads and prove relational properties on their monadic representations, making the most of existing support for reasoning about pure programs. We apply our method in F* and evaluate it by encoding a variety of relational program analyses, including static information flow control, semantic declassification, provenance tracking, program equivalence at higher order, game-based cryptographic security, and various combinations thereof. By relying on SMT-based automation, unary weakest preconditions, user-defined effects, and monadic reification, we show that the task of verifying relational properties requires little additional effort from the F* programmer.
Year
Venue
Field
2017
arXiv: Programming Languages
Codd's theorem,Relational calculus,Programming language,Relational database,Statistical relational learning,Computer science,Theoretical computer science,Monad (functional programming)
DocType
Volume
Citations 
Journal
abs/1703.00055
1
PageRank 
References 
Authors
0.35
38
9
Name
Order
Citations
PageRank
Niklas Grimm1122.65
Kenji Maillard210.69
Cédric Fournet33698213.79
Catalin Hritcu422215.18
Matteo Maffei564440.03
Jonathan Protzenko68811.94
Aseem Rastogi713314.49
Nikhil Swamy876345.69
Santiago Zanella Béguelin91146.28