English

Borrowing Safe Pointers from Rust in SPARK

Programming Languages 2018-05-16 v1

Abstract

In the field 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 uses a permission-based static alias analysis method inspired by Rust's borrow-checker and affine types, and enforces the Concurrent Read, Exclusive Write policy. This analysis has been implemented in the GNAT Ada compiler and tested against a number of challenging examples. In the paper, we give a formal presentation of the analysis rules for a miniature version of SPARK and prove their soundness. We discuss the implementation and compare our solution with Rust.

Keywords

Cite

@article{arxiv.1805.05576,
  title  = {Borrowing Safe Pointers from Rust in SPARK},
  author = {Georges-Axel Jaloyan and Yannick Moy and Andrei Paskevich},
  journal= {arXiv preprint arXiv:1805.05576},
  year   = {2018}
}

Comments

17 pages, 0 figures

R2 v1 2026-06-23T01:55:16.483Z