Title
Safe Pointers in SPARK 2014.
Abstract
In the context of deductive software verification, programs with pointers present a major challenge due to pointer aliasing. In this paper, we introduce pointers to SPARK, a well-defined subset of the Ada language, intended for formal verification of mission-critical software. Our solution is based on static alias analysis inspired by Rustu0027s borrow-checker and affine types, and enforces the Concurrent Read, Exclusive Write principle. This analysis has been implemented in the GNAT Ada compiler and tested against a number of challenging examples including parts of real-life applications. Our tests show that only minor changes in the source code are required to fit the idiomatic Ada code into SPARK extended with pointers, which is a significant improvement upon the previous state of the art. The proposed extension has been approved by the Language Design Committee for SPARK for inclusion in a future version of SPARK, and is being discussed by the Ada Rapporteur Group for inclusion in the next version of Ada. In the report, we give a formal presentation of the analysis rules for a miniature version of SPARK and prove their soundness. We discuss the implementation and the case studies, and compare our solution with Rust.
Year
Venue
Field
2017
arXiv: Programming Languages
Pointer (computer programming),Spark (mathematics),Ada,Programming language,Computer science,Pointer aliasing,Compiler,Alias analysis,Formal verification,Software verification
DocType
Volume
Citations 
Journal
abs/1710.07047
0
PageRank 
References 
Authors
0.34
4
1
Name
Order
Citations
PageRank
Georges-Axel Jaloyan111.41