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.
KeywordsDependency Graph Operational Semantic Formal Semantic Functional Programming Language Functional Subset
Unable to display preview. Download preview PDF.
- 1.Bertot, Y., Castéran, P.: Interactive Theorem Proving and Program Development—Coq’Art: The Calculus of Inductive Constructions. Texts in Theoretical Computer Science. Springer (2004)Google Scholar
- 2.Boyer, R.S., Hunt Jr., W.A.: Function memoization and unique object representation for ACL2 functions. In: ACL2 Theorem Prover and its Applications, pp. 81–89. ACM (2006)Google Scholar
- 4.Heydon, A., Levin, R., Mann, T., Yu, Y.: Software Configuration Management Using Vesta. Monographs in Computer Science. Springer (2006)Google Scholar
- 8.Leino, K.R.M., Wüstholz, V.: The Dafny integrated development environment. In: Workshop on Formal-IDE (to appear, 2014)Google Scholar
- 9.Lerner, S., Millstein, T., Chambers, C.: Automatically proving the correctness of compiler optimizations. In: PLDI, pp. 220–231. ACM (2003)Google Scholar
- 11.McCarthy, J., Painter, J.: Correctness of a compiler for arithmetic expressions. In: Proceedings of Applied Mathematica. Mathematical Aspects of Computer Science, vol. 19, pp. 33–41. American Mathematical Society (1967)Google Scholar