skip to main content
10.1145/2402676.2402690acmconferencesArticle/Chapter ViewAbstractPublication PagesadaConference Proceedingsconference-collections
research-article

Hi-Lite: the convergence of compiler technology and program verification

Published:02 December 2012Publication History

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.

References

  1. Eiffel : Analysis, design and programming language. Standard ECMA-367, 2d Edition (2006).Google ScholarGoogle Scholar
  2. J.-R. Abrial. The B-book: assigning programs to meanings. Cambridge University Press, New York, NY, USA, 1996. Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. J. Barnes. High Integrity Software: The SPARK Approach to Safety and Security. Addison-Wesley Longman Publishing Co., Inc., Boston, MA, USA, 2003. Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  5. 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 ScholarGoogle Scholar
  6. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  7. 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 ScholarGoogle ScholarCross RefCross Ref
  8. 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 ScholarGoogle ScholarCross RefCross Ref
  9. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  10. 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 ScholarGoogle Scholar
  11. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  12. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  13. E. Dijsktra and C. Sholten. Predicate Calculus and Program Semantics. Springer, New York, Berlin, 1989. Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  15. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  16. 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 ScholarGoogle ScholarCross RefCross Ref
  17. Hi-Lite: Simplifying the use of formal methods. http://www.open-do.org/projects/hi-lite/.Google ScholarGoogle Scholar
  18. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  19. X. Leroy. A formally verified compiler back-end. Journal of Automated Reasoning, 43(4):363--446, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  20. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  21. G. C. Necula. Proof-carrying code. In P. Lee, F. Henglein, and N. D. Jones, editors, POPL, pages 106--119. ACM Press, 1997. Google ScholarGoogle ScholarDigital LibraryDigital Library
  22. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  23. Robby and P. Chalin. Preliminary design of a unified JML representation and software infrastructure. Technical report, SAnToS Laboratory, Kansas State University, 2009.Google ScholarGoogle Scholar
  24. C. Spear. SystemVerilog for Verification: A Guide to Learning the Testbench Language Features. Springer, New York, Berlin, 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. Hi-Lite: the convergence of compiler technology and program verification

          Recommendations

          Comments

          Login options

          Check if you have access through your login credentials or your institution to get full access on this article.

          Sign in
          • Published in

            cover image ACM Conferences
            HILT '12: Proceedings of the 2012 ACM conference on High integrity language technology
            December 2012
            118 pages
            ISBN:9781450315050
            DOI:10.1145/2402676

            Copyright © 2012 ACM

            Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

            Publisher

            Association for Computing Machinery

            New York, NY, United States

            Publication History

            • Published: 2 December 2012

            Permissions

            Request permissions about this article.

            Request Permissions

            Check for updates

            Qualifiers

            • research-article

            Acceptance Rates

            HILT '12 Paper Acceptance Rate6of11submissions,55%Overall Acceptance Rate27of48submissions,56%

          PDF Format

          View or Download as a PDF file.

          PDF

          eReader

          View online with eReader.

          eReader