Verifying relational properties of functional programs by first-order refinement
TLDR
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.About:
This article is published in Science of Computer Programming.The article was published on 2017-04-01 and is currently open access. It has received 15 citations till now. The article focuses on the topics: Refinement calculus & Refinement.read more
Citations
More filters
Journal ArticleDOI
A relational logic for higher-order programs
TL;DR: This work presents a logic, called Relational Higher Order Logic (RHOL), for proving relational properties of a simply typed λ-calculus with inductive types and recursive definitions, and shows that RHOL has strong foundations, by proving an equivalence with higher-order logic (HOL), and leverage this equivalence to derive key meta-theoretical properties: subject reduction, admissibility of a transitivity rule and set- theoretical soundness.
Book ChapterDOI
Relational Verification Through Horn Clause Transformation
TL;DR: Through an experimental evaluation, it is shown that in many cases CHC solvers are able to prove the satisfiability (or the unsatisfiability) of sets of clauses obtained by applying the transformations proposed, whereas the samesolvers are unable to perform those proofs when given as input the original, untransformed sets of CHCs.
Book ChapterDOI
Exploiting Synchrony and Symmetry in Relational Verification
TL;DR: This work proposes to exploit relational specifications for simplifying the generated verification subtasks by maximizing opportunities for synchronizing code fragments and compute symmetries in the specifications to reveal and avoid redundant subtasks.
Proceedings ArticleDOI
Relational Symbolic Execution
TL;DR: A relational symbolic execution engine is designed, named RelSym, which supports interactive refutation, as well as proving of relational properties for programs written in a language with arrays and for-like loops.
Posted Content
A Monadic Framework for Relational Verification: Applied to Information Security, Program Equivalence, and Optimizations
Niklas Grimm,Kenji Maillard,Cédric Fournet,Catalin Hritcu,Matteo Maffei,Jonathan Protzenko,Tahina Ramananandro,Aseem Rastogi,Nikhil Swamy,Santiago Zanella-Béguelin +9 more
TL;DR: 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.
References
More filters
Proceedings ArticleDOI
Computational lambda-calculus and monads
TL;DR: The author gives a calculus based on a categorical semantics for computations, which provides a correct basis for proving equivalence of programs, independent from any specific computational model.
Proceedings ArticleDOI
Dependent types in practical programming
Hongwei Xi,Frank Pfenning +1 more
TL;DR: An approach to enriching the type system of ML with a restricted form of dependent types, where type index objects are drawn from a constraint domain C, leading to the DML(C) language schema, which allows specification and inference of significantly more precise type information, facilitating program error detection and compiler optimization.
Book
Semantics of Programming Languages: Structures and Techniques
TL;DR: Semantics of Programming Languages exposes the basic motivations and philosophy underlying the applications of semantic techniques in computer science, and introduces the mathematical theory of programming languages with an emphasis on higher-order functions and type systems.
Proceedings ArticleDOI
Liquid types
TL;DR: Logically Qualified Data Types, abbreviated to Liquid Types, is a system that combines Hindley-Milner type inference with Predicate Abstraction to automatically infer dependent types precise enough to prove a variety of safety properties.
Journal ArticleDOI
Refinement types for secure implementations
TL;DR: The design and implementation of a typechecker for verifying security properties of the source code of cryptographic protocols and access control mechanisms and typechecking generates veri¿cation conditions that are passed to an SMT solver.