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 Grimm | 1 | 12 | 2.65 |
Kenji Maillard | 2 | 1 | 0.69 |
Cédric Fournet | 3 | 3698 | 213.79 |
Catalin Hritcu | 4 | 222 | 15.18 |
Matteo Maffei | 5 | 644 | 40.03 |
Jonathan Protzenko | 6 | 88 | 11.94 |
Aseem Rastogi | 7 | 133 | 14.49 |
Nikhil Swamy | 8 | 763 | 45.69 |
Santiago Zanella Béguelin | 9 | 114 | 6.28 |