Safe Pointers in SPARK 2014

10/19/2017
by   Georges-Axel Jaloyan, et al.
0

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 Rust's 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.

READ FULL TEXT

page 1

page 2

page 3

page 4

research
05/15/2018

Borrowing Safe Pointers from Rust in SPARK

In the field of deductive software verification, programs with pointers ...
research
05/29/2021

Computing with Infinite Objects: the Gray Code Case

Infinite Gray code has been introduced by Tsuiki <cit.> as a redundancy-...
research
08/24/2017

Towards Evaluating Size Reduction Techniques for Software Model Checking

Formal verification techniques are widely used for detecting design flaw...
research
04/13/2018

CUBA: Interprocedural Context-UnBounded Analysis of Concurrent Programs (Extended Manuscript)

A classical result by Ramalingam about synchronization-sensitive interpr...
research
12/15/2016

HADES: Microprocessor Hazard Analysis via Formal Verification of Parameterized Systems

HADES is a fully automated verification tool for pipeline-based micropro...
research
04/07/2018

Symbolic Reasoning for Automatic Signal Placement (Extended Version)

Explicit signaling between threads is a perennial cause of bugs in concu...
research
10/10/2016

Verification of the Tree-Based Hierarchical Read-Copy Update in the Linux Kernel

Read-Copy Update (RCU) is a scalable, high-performance Linux-kernel sync...

Please sign up or login with your details

Forgot password? Click here to reset