Who: a verifier for effectful higher-order programs

We present Who, a tool for verifying effectful higher-order functions. It features Effect polymorphism, higher-order logic and the possibility to reason about state in the logic, which enable highly modular specifications of generic code. Several small examples and a larger case study demonstrate its usefulness. The Who tool is intended to be used as an intermediate language for verification tools targeting ML-like programming languages.

[1]  P. J. Landin The Mechanical Evaluation of Expressions , 1964, Comput. J..

[2]  Nobuko Yoshida,et al.  A logical analysis of aliasing in imperative higher-order functions , 2007, J. Funct. Program..

[3]  Arthur Charguéraud,et al.  Functional translation of a calculus of capabilities , 2008, ICFP 2008.

[4]  Peter W. O'Hearn,et al.  From Algol to polymorphic linear lambda-calculus , 2000, JACM.

[5]  Nobuko Yoshida,et al.  An observationally complete program logic for imperative higher-order functions , 2005, 20th Annual IEEE Symposium on Logic in Computer Science (LICS' 05).

[6]  Jean-Christophe Filliâtre,et al.  Verification of non-functional programs using interpretations in type theory , 2003, J. Funct. Program..

[7]  Frank D. Valencia,et al.  Formal Methods for Components and Objects , 2002, Lecture Notes in Computer Science.

[8]  K. Rustan M. Leino,et al.  The Spec# Programming System: An Overview , 2004, CASSIS.

[9]  Aleksandar Nanevski,et al.  Ynot : Reasoning with the Awkward Squad , 2008 .

[10]  Bor-Yuh Evan Chang,et al.  Boogie: A Modular Reusable Verifier for Object-Oriented Programs , 2005, FMCO.

[11]  Holger Hermanns,et al.  Proceedings of the 19th international conference on Computer aided verification , 2007 .

[12]  Donald Ervin Knuth,et al.  The Art of Computer Programming , 1968 .

[13]  Gérard Boudol,et al.  Typing termination in a higher-order concurrent imperative language , 2007, Inf. Comput..

[14]  Yann Régis-Gianas,et al.  A Hoare Logic for Call-by-Value Functional Programs , 2008, MPC.

[15]  Jean-Christophe Filliâtre,et al.  Producing all ideals of a forest, functionally , 2003, Journal of Functional Programming.

[16]  Lars Birkedal,et al.  Ynot: dependent types for imperative programs , 2008, ICFP 2008.

[17]  Frank Ruskey,et al.  A Gray Code for the Ideals of a Forest Poset , 1993, J. Algorithms.

[18]  Claude Marché,et al.  The Why/Krakatoa/Caduceus Platform for Deductive Program Verification , 2007, CAV.

[19]  Mads Tofte,et al.  Region-based Memory Management , 1997, Inf. Comput..