A relational logic for higher-order programs
@article{Aguirre2019ARL, title={A relational logic for higher-order programs}, author={Alejandro Aguirre and Gilles Barthe and Marco Gaboardi and Deepak Garg and Pierre-Yves Strub}, journal={Proceedings of the ACM on Programming Languages}, year={2019}, volume={1}, pages={1 - 29} }
Relational program verification is a variant of program verification where one can reason about two programs and as a special case about two executions of a single program on different inputs. Relational program verification can be used for reasoning about a broad range of properties, including equivalence and refinement, and specialized notions such as continuity, information flow security or relative cost. In a higher-order setting, relational program verification can be achieved using…
9 Citations
Bidirectional type checking for relational properties
- Computer SciencePLDI
- 2019
This paper develops bidirectional relational type checking for systems with relational refinements and effects, and significantly reduces the need for typing annotations through the combination of type checking and type inference.
A Monadic Framework for Relational Verification
- Computer Science
- 2018
The essence of the 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.
A monadic framework for relational verification: applied to information security, program equivalence, and optimizations
- Computer ScienceCPP
- 2018
The essence of the 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.
The next 700 relational program logics
- Computer ScienceProc. ACM Program. Lang.
- 2020
The first framework for defining relational program logics for arbitrary monadic effects is proposed, and it is shown that this generic framework can be used to define relational programLogics for effects as diverse as state, input-output, nondeterminism, and discrete probabilities.
ReLoC: A Mechanised Relational Logic for Fine-Grained Concurrency
- Computer ScienceLICS
- 2018
ReLoC is a logic for proving refinements of programs in a language with higher-order state, fine-grained concurrency, polymorphism and recursive types, and a mechanisation of the logic in Coq is provided, which does not just contain a proof of soundness, but also tactics for interactively carrying out refinements proofs.
RHLE: Modular Deductive Verification of Relational $\forall\exists$ Properties.
- Computer Science
- 2020
A novel form of function specification that requires the existence of certain behaviors in valid implementations is developed, and a tool is built which is used to verify a diverse set of relational properties drawn from the literature, including refinement and generalized noninterference.
ReLoC Reloaded: A Mechanized Relational Logic for Fine-Grained Concurrency and Logical Atomicity
- Computer ScienceLog. Methods Comput. Sci.
- 2021
ReLoC Reloaded extends the ReLoC logic with various technical improvements, a new Coq mechanization, and support for Iris's prophecy variables, and expands the notion of logically atomic specifications to the relational case, which is called logically atomic relational specifications.
RHLE: Automatic Verification of $\forall\exists$-Hyperproperties
- Computer Science
- 2020
RHLE is presented, a relational program logic for reasoning about a class of hyperproperties that all $\forall\exists$-hyperproperties, including refinement and non-interference properties, on a corpus of representative programs which is used to automatically verify a number of k-safety and k-liveness hyperproperties.
RHLE: Automatic Verification of ∀∃-Hyperproperties
- Computer ScienceArXiv
- 2020
RHLE is presented, a relational program logic for reasoning about a class of hyperproperties that is capable of automatically verifying a number of ∀∃hyperproperties, including refinement and non-interference properties, on a corpus of representative programs.
Constraint-based Relational Verification
- Computer ScienceCAV
- 2021
This paper describes a novel and fully automated constraint-based approach to relational verification and presents a constraint solving method for pfwCSP based on stratified CounterExample-Guided Inductive Synthesis of ordinary, well-founded, and functional predicates.
References
SHOWING 1-10 OF 59 REFERENCES
A monadic framework for relational verification: applied to information security, program equivalence, and optimizations
- Computer ScienceCPP
- 2018
The essence of the 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.
A relational model of types-and-effects in higher-order concurrent separation logic
- Computer SciencePOPL 2017
- 2017
This paper presents a relational model of a type-and-effect system for a higher-order, concurrent program- ming language that supports both effect-based optimizations and data abstraction and proves semantic invariants expressed by the effect annotations strong enough to prove advanced program transformations.
Relational Verification Using Product Programs
- Computer ScienceFM
- 2011
This work provides a general notion of product program that supports a direct reduction of relational verification to standard verification, and illustrates the benefits of the method with selected examples, including non-interference, standard loop optimizations, and a state-of-the-art optimization for incremental computation.
Simple relational correctness proofs for static analyses and program transformations
- Computer SciencePOPL '04
- 2004
We show how some classical static analyses for imperative programs, and the optimizing transformations which they enable, may be expressed and proved correct using elementary logical and…
A relational modal logic for higher-order stateful ADTs
- Computer SciencePOPL '10
- 2010
The proposed model of LADR is based on Ahmed, Dreyer, and Rossberg's state-of-the-art step-indexed Kripke logical relation, which was designed to facilitate proofs of representation independence for "state-dependent" ADTs.
Verifying Relational Properties of Functional Programs by First-Order Refinement
- Computer SciencePEPM
- 2015
A restricted form of higher-order refinement types where refinement predicates can refer to functions is introduced, and a systematic program transformation is formalized to reduce type checking/inference for higher-orders refinement types to that for first- order refinement types, so that the latter can be automatically solved by using an existing software model checker.
Relational cost analysis
- Computer SciencePOPL 2017
- 2017
This work proposes a relational cost analysis technique that is capable of establishing precise bounds on the difference in the execution cost of two programs by making use of relational properties of programs and inputs, and develops a refinement type and effect system for a higher-order functional language with recursion and subtyping.
Monadic refinements for relational cost analysis
- Computer ScienceProc. ACM Program. Lang.
- 2018
This paper derives two syntax-directed proof systems, UC and RC, for unary and relational cost analysis, by adding a cost monad to a (syntax-directed) logic of higher-order programs.
Probabilistic relational verification for cryptographic implementations
- Computer SciencePOPL 2014
- 2014
RF*, a relational extension of F*, a general-purpose higher-order stateful programming language with a verification system based on refinement types, is presented, which is a relational Hoare logic for a higher- order, stateful, probabilistic language.
A core calculus of dependency
- Computer SciencePOPL '99
- 1999
It is argued that there is a central notion of dependency common to these settings that can be captured within a single calculus, the Dependency Core Calculus (DCC), a small extension of Moggi's computational lambda calculus.