scispace - formally typeset
Open AccessJournal ArticleDOI

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

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

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.
Related Papers (5)