Abstract
UK MoD has long been an advocate of the use of mathematically formal verification in software for safety critical applications. In the past this has been focused on the SPARK Ada subset, but it is increasingly becoming difficult to find suppliers willing or capable of delivering Ada programs. Instead, there is a pressure to use more commercially attractive languages, such as C and C++. In order to maintain the high levels of confidence necessary for critical applications, this means being able to formally reason about these ‘new’ languages.
This paper covers two related programmes that are developing formal semantics for restricted subsets of C and C++ respectively. It will also consider how the formal semantics will be exploited in a verification environment.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
5 References
Barnes J (1997). High Integrity Ada: The SPARK Approach, Addison-Wesley, 1997. ISBN 0-201-17517-7.
C++ (2003). ISO/IEC 14882:2003(E), Programming Languages — C++ Language Standard, ISO, 1998.
Carré B, O’Halloran C, and Sennett C T (1993). Final Report on Work to Define a Formal Semantics for SPARK, DRA customer report, 1993.
Garnsworthy J, O’Neill I, and Carré B (1993). Automatic Proof of the Absence of Run-Time Errors. In: Ada: Towards Maturity — Proceedings of the 1993 AdaUK conference, IOS Press, 1993. ISBN 9051991428.
Hatton L (1994). Safer C, McGraw-Hill, 1994. ISBN 0-07-707640-0.
HICPP (2004). High-Integrity C++ Coding Standard Manual v2.2, The Programming Research Group, May 2004. Available from: http://www.codingstandard.com/HICPP_MANUAL_REQUEST.htm
JSF (2005). Joint Strike Fighter Air Vehicle C++ Coding Standards for the System Development and Demonstration Program, Document Number 2RDU00001 Rev C, December 2005. Available from: http://www.jsf.mil/downloads/downdocumentation.htm
Koenig A (1989). C Traps and Pitfalls, Addison-Wesley, 1989. ISBN 0-201-17928-8
March M, Smith A, and Whiting E (2003). Concrete and Abstract Syntaxes for Restricted C, QinetiQ internal report, Version 2, July 2003.
MISRA (2004). MISRA C: Guidelines for the Use of the C Language in Critical Systems, Motor Industry Research Association, 2004. ISBN 0-9524156-2-3.
NATO (2005). EJ200, Digital Electronic Control and Monitoring Unit (DECMU) Software Programmer’s Manual for C, EJ 494/12000 Issue 1E, NATO UNCLASSIFIED, Date of Issue: 08-AUG-05.
Norrish M (1998). C Formalised in HOL, PhD thesis, Cambridge University, 1998.
Reynolds J C (2002). Separation Logic: a Logic for Shared Mutable Data Structures. Invited Paper, Proceedings of the 17th IEEE Symposium on Logic in Computer Science, 2002; 55–74.
Schofield A, and Pygott C (2006). A Tabulation of the Unpredictable Features of the C++ Language, QinetiQ Report QINETIQ/S&DU/TIM/CR060019, September 2006.
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2007 Springer-Verlag London Limited
About this paper
Cite this paper
O’Halloran, C.M., Pygott, C.H. (2007). Formalising C and C++ for Use in High Integrity Systems. In: Redmill, F., Anderson, T. (eds) The Safety of Systems. Springer, London. https://doi.org/10.1007/978-1-84628-806-7_15
Download citation
DOI: https://doi.org/10.1007/978-1-84628-806-7_15
Publisher Name: Springer, London
Print ISBN: 978-1-84628-805-0
Online ISBN: 978-1-84628-806-7
eBook Packages: Computer ScienceComputer Science (R0)