ABSTRACT
Formal program verification tools check that a program correctly implements its specification. Existing specification languages for well-known programming languages (Ada, C, Java, C#) have been developed independently from the programming language to which they apply. As a result, specifications are expressed separately from the code, typically as stylized comments, and the verification tools often bear no direct relation to the production compiler. We argue that this approach is problematic, and that the compiler and the verification tools should be integrated seamlessly. Based on our current work on the Hi-Lite project to develop a formal verification tool for Ada2012, we show that in an integrated setting, the compiler becomes the centerpiece of the verification architecture, and supports both static proofs and run-time assertion checking. Such an environment does much to simplify software certification.
- Eiffel : Analysis, design and programming language. Standard ECMA-367, 2d Edition (2006).Google Scholar
- J.-R. Abrial. The B-book: assigning programs to meanings. Cambridge University Press, New York, NY, USA, 1996. Google ScholarDigital Library
- J. Barnes. High Integrity Software: The SPARK Approach to Safety and Security. Addison-Wesley Longman Publishing Co., Inc., Boston, MA, USA, 2003. Google ScholarDigital Library
- M. Barnett, K. R. M. Leino, and W. Schulte. Thespecsharp programming system: An overview. In G. Barthe, L. Burdy, M. Huisman, J.-L. Lanet, and T. Muntean, editors, Construction and Analysis of Safe, Secure, and Interoperable Smart Devices, volume 3362 of Lecture Notes in Computer Science, pages 49--69. Springer Berlin / Heidelberg, 2005. Google ScholarDigital Library
- F. Bobot, J.-C. Filliâtre, A. Paskevich, and C. Marché. Why3: Shepherd your herd of provers. In Proceedings of the First International Workshop on Intermediate Verification Languages, Boogie, 2011.Google Scholar
- L. Burdy, Y. Cheon, D. R. Cok, M. D. Ernst, J. R. Kiniry, G. T. Leavens, K. R. M. Leino, and E. Poll. An overview of JML tools and applications. International Journal on Software Tools for Technology Transfer (STTT), 7:212--232, 2005. Google ScholarDigital Library
- M. Christakis, P. Müller, and V. Wüstholz. Collaborative verification and testing with explicit assumptions. In Proceedings of the 18th International Symposium on Formal Methods, Paris, France, August 2012.Google ScholarCross Ref
- E. Cohen, M. Dahlweid, M. Hillebrand, D. Leinenbach, M. Moskal, T. Santen, W. Schulte, and S. Tobies. VCC: A practical system for verifying concurrent C. In Proceedings of the 22nd International Conference on Theorem Proving in Higher Order Logics, TPHOLs '09, pages 23--42, Berlin, Heidelberg, 2009. Springer-Verlag. Google ScholarCross Ref
- D. R. Cok. OpenJML: JML for Java 7 by extending OpenJDK. In Proceedings of the Third international conference on NASA Formal methods, NFM'11, pages 472--479, Berlin, Heidelberg, 2011. Springer-Verlag. Google ScholarDigital Library
- C. Comar, J. Kanig, and Y. Moy. Integrating formal program verification with testing. In Proceedings of the Embedded Real Time Software and Systems conference, ERTS$^2$ 2012, Feb. 2012.Google Scholar
- D. Crocker and J. Carlton. Verification of C programs using automated reasoning. In Proceedings of the Fifth IEEE International Conference on Software Engineering and Formal Methods, SEFM '07, pages 7--14, Washington, DC, USA, 2007. IEEE Computer Society. Google ScholarDigital Library
- P. Cuoq, F. Kirchner, N. Kosmatov, V. Prevosto, J. Signoles, and B. Yakobowski. Frama-C, A software Analysis Perspective. In Software Engineering and Formal Methods (SEFM), Oct. 2012. To appear. Google ScholarDigital Library
- E. Dijsktra and C. Sholten. Predicate Calculus and Program Semantics. Springer, New York, Berlin, 1989. Google ScholarDigital Library
- C. Dross, J.-C. Filliâtre, and Y. Moy. Correct code containing containers. In 5th International Conference on Tests & Proofs (TAP'11), Zurich, June 2011. Google ScholarDigital Library
- C. Ellison and G. Rosu. An executable formal semantics of C with applications. In Proceedings of the 39th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages, POPL '12, pages 533--544, New York, NY, USA, 2012. ACM. Google ScholarDigital Library
- M. Fahndrich, M. Barnett, D. Leijen, and F. Logozzo. Integrating a set of contract checking tools into Visual Studio. In Proceedings of the 2012 Second International Workshop on Developing Tools as Plug-ins (TOPI 2012). IEEE, 2012.Google ScholarCross Ref
- Hi-Lite: Simplifying the use of formal methods. http://www.open-do.org/projects/hi-lite/.Google Scholar
- C. A. R. Hoare. The verifying compiler, a grand challenge for computing research. In R. Cousot, editor, VMCAI, volume 3385 of Lecture Notes in Computer Science, pages 78--78. Springer, 2005. Google ScholarDigital Library
- X. Leroy. A formally verified compiler back-end. Journal of Automated Reasoning, 43(4):363--446, 2009. Google ScholarDigital Library
- B. Meyer. Eiffel as a framework for verification. In Verified Software : Theories, Tools Experiments, Forst IFIP TC2/WG2.3 Conference, Lecture Notes in Computer Science LNCS 4171. Springer, Zurich, Switzerland, 2005.Google ScholarDigital Library
- G. C. Necula. Proof-carrying code. In P. Lee, F. Henglein, and N. D. Jones, editors, POPL, pages 106--119. ACM Press, 1997. Google ScholarDigital Library
- J. C. Reynolds. An overview of separation logic. In B. Meyer and J. Woodcock, editors, VSTTE, volume 4171 of Lecture Notes in Computer Science, pages 460--469. Springer, 2005. Google ScholarDigital Library
- Robby and P. Chalin. Preliminary design of a unified JML representation and software infrastructure. Technical report, SAnToS Laboratory, Kansas State University, 2009.Google Scholar
- C. Spear. SystemVerilog for Verification: A Guide to Learning the Testbench Language Features. Springer, New York, Berlin, 2008. Google ScholarDigital Library
Index Terms
- Hi-Lite: the convergence of compiler technology and program verification
Recommendations
Hi-Lite: the convergence of compiler technology and program verification
HILT '12Formal program verification tools check that a program correctly implements its specification. Existing specification languages for well-known programming languages (Ada, C, Java, C#) have been developed independently from the programming language to ...
Conditional model checking: a technique to pass information between verifiers
FSE '12: Proceedings of the ACM SIGSOFT 20th International Symposium on the Foundations of Software EngineeringSoftware model checking, as an undecidable problem, has three possible outcomes: (1) the program satisfies the specification, (2) the program does not satisfy the specification, and (3) the model checker fails. The third outcome usually manifests itself ...
Leading-edge ada verification technologies: combining testing and verification with GNATTest and GNATProve -- the hi-lite project
HILT '12: Proceedings of the 2012 ACM conference on High integrity language technologyWe give a hands-on introduction to the tools GNATtest and GNATprove, both developed at AdaCore in the Hi-Lite research project. They allow to do verification of Ada 2012 contracts through testing and formal verification, and also allow a combination of ...
Comments