Formalizing and Verifying a Modern Build Language

CloudMake is a software utility that automatically builds executable programs and libraries from source code--a modern Make utility. Its design gives rise to a number of possible optimizations, like cached builds, and the executables to be built are described using a functional programming language. This paper formally and mechanically verifies the correctness of central CloudMake algorithms. The paper defines the CloudMake language using an operational semantics, but with a twist: the central operation exec is defined axiomatically, making it pluggable so that it can be replaced by calls to compilers, linkers, and other tools. The formalization and proofs of the central CloudMake algorithms are done entirely in Dafny, the proof engine of which is an SMT-based program verifier.

[1]  Tobias Nipkow,et al.  Isabelle/HOL , 2002, Lecture Notes in Computer Science.

[2]  Xavier Leroy,et al.  Formal verification of a realistic compiler , 2009, CACM.

[3]  Yves Bertot,et al.  Interactive Theorem Proving and Program Development: Coq'Art The Calculus of Inductive Constructions , 2010 .

[4]  Akinori Yonezawa,et al.  Proving Compiler Correctness in a Mechanized Logic R. Milner and R. Weyhrauch , 1974 .

[5]  Allan Heydon,et al.  Software Configuration Management Using Vesta , 2006, Monographs in Computer Science.

[6]  Frank Wolter,et al.  Monodic fragments of first-order temporal logics: 2000-2001 A.D , 2001, LPAR.

[7]  K. Rustan M. Leino,et al.  Automating Induction with an SMT Solver , 2012, VMCAI.

[8]  Allan Heydon,et al.  Software Configuration Management System Using Vesta (Monographs in Computer Science) , 2004 .

[9]  Stuart I. Feldman,et al.  Make — a program for maintaining computer programs , 1979, Softw. Pract. Exp..

[10]  Pierre Castéran,et al.  Interactive Theorem Proving and Program Development , 2004, Texts in Theoretical Computer Science An EATCS Series.

[11]  K. Rustan M. Leino,et al.  Automating Theorem Proving with SMT , 2013, ITP.

[12]  K. Rustan M. Leino,et al.  Dafny: An Automatic Program Verifier for Functional Correctness , 2010, LPAR.

[13]  Sorin Lerner,et al.  Automatically proving the correctness of compiler optimizations , 2003, PLDI '03.

[14]  Kousha Etessami,et al.  Analysis of Recursive Game Graphs Using Data Flow Equations , 2004, VMCAI.

[15]  Robert S. Boyer,et al.  Function memoization and unique object representation for ACL2 functions , 2006, ACL2 '06.

[16]  John McCarthy,et al.  Correctness of a compiler for arithmetic expressions , 1966 .

[17]  Lawrence Charles Paulson,et al.  Isabelle/HOL: A Proof Assistant for Higher-Order Logic , 2002 .

[18]  K. Rustan M. Leino,et al.  The Dafny Integrated Development Environment , 2014, F-IDE.