Abstract
We present the first steps of a broad effort to develop a formal representation of SPARK 2014 suitable for supporting machine-verified static analyses and translations. In our initial work, we have developed technology for translating the GNAT compiler's abstract syntax trees into the Coq proof assistant, and we have formalized in Coq the dynamic semantics for a toy subset of the SPARK 2014 language. SPARK 2014 programs must ensure the absence of certain run-time errors (for example, those arising while performing division by zero, accessing non existing array cells, overflow on integer computation). The main novelty in our semantics is the encoding of (a small part of) the run-time checks performed by the compiler to ensure that any well-formed terminating SPARK programs do not lead to erroneous execution. This and other results are mechanically proved using the Coq proof assistant. The modeling of on-the-fly run-time checks within the semantics lays the foundation for future work on mechanical reasoning about SPARK 2014 program correctness (in the particular area of robustness) and for studying the correctness of compiler optimizations concerning run-time checks, among others.
- Ada reference manual. http://www.ada-auth.org/standards/ada12.html.Google Scholar
- Adacore Gnatprove tool. http://www.open-do.org/projects/hi-lite/gnatprove/.Google Scholar
- Adacore Hi-Lite project. http://www.open-do.org/projects/hi-lite/.Google Scholar
- Jago translation tool. https://github.com/sireum/bakar/tree/master/sireum-bakarjago.Google Scholar
- Sireum software analysis platform. http://www.sireum.org.Google Scholar
- Source code for SPARK 2014 language subset formalization. https://github.com/sireum/bakar/tree/master/sireum-bakarformalization.Google Scholar
- X. Leroy. Formal verification of a realistic compiler. Communications of the ACM, 52(7):107--115, 2009. Google Scholar
Digital Library
- W. Marsh. Formal semantics of SPARK - static semantics, Oct 1994.Google Scholar
- I. O'Neill. Formal semantics of SPARK - dynamic semantics, Oct 1994.Google Scholar
- RTCA DO-178. Software considerations in airborne systems and equipment, 2011.Google Scholar
- RTCA DO-333. Formal methods supplement to do-178c and do-278a, 2011.Google Scholar
Index Terms
Towards the formalization of SPARK 2014 semantics with explicit run-time checks using coq
Recommendations
Towards the formalization of SPARK 2014 semantics with explicit run-time checks using coq
HILT '13: Proceedings of the 2013 ACM SIGAda annual conference on High integrity language technologyWe present the first steps of a broad effort to develop a formal representation of SPARK 2014 suitable for supporting machine-verified static analyses and translations. In our initial work, we have developed technology for translating the GNAT compiler'...
Strong equivalence of logic programs under the infinite-valued semantics
We consider the notion of strong equivalence [V. Lifschitz, D. Pearce, A. Valverde, Strongly equivalent logic programs, ACM Transactions on Computational Logic 2 (4) (2001) 526-541] of normal propositional logic programs under the infinite-valued ...
A Sound Deep Embedding of Arbitrary Normal Modal Logics in Coq
SBLP '22: Proceedings of the XXVI Brazilian Symposium on Programming LanguagesThis work describes an encoding of modal logics using the Coq proof assistant. Our formalization differs from previous attempts by providing a uniform representation of several systems for modal logic using Coq’s rich type structure. We illustrate the ...







Comments