Journal of Formalized Reasoning (Dec 2019)

A Why3 proof of GMP algorithms

  • Raphael Rieu-Helft

DOI
https://doi.org/10.6092/issn.1972-5787/9730
Journal volume & issue
Vol. 12, no. 1
pp. 53 – 97

Abstract

Read online

Large-integer arithmetic algorithms are used in contexts where both their performance and their correctness are critical, such as cryptographic software. The fastest algorithms are complex enough that formally verifying them is desirable but challenging. We have formally verified a comprehensive arbitrary-precision integer arithmetic library that implements many state-of-the-art algorithms from the GMP library. The algorithms we have verified include addition, subtraction, Toom-Cook multiplication, division and square root. We use the Why3 platform to perform the proof semi-automatically. We obtain an efficient and formally verified C library of low-level functions on arbitrary-precision natural integers. This verification covers the functional correctness of the algorithms, as well as the memory safety and absence of arithmetic overflows of their C implementation. Using detailed pseudocode, we present the algorithms that we verified and outline their proofs.

Keywords