LAProof: accuracy and correctness of linear algebra programs

LAProof is a modular, portable proof layer between the verification of application software and the verification of programs implementing operations defined by the basic linear algebra subprograms (BLAS) specification.

See also:

LAProof provides formal machine-checked proofs of the accuracy of basic linear algebra operations: inner product using conventional multiply and add, inner product using fused multiply-add, scaled matrix-vector and matrix-matrix multiplication, and scaled vector and matrix addition. LAProof error bounds are backward error bounds and mixed backward-forward error bounds that account for underflow, proved subject to no assumptions except a low- level formal model of IEEE-754 arithmetic. We treat low-order error terms concretely, not approximating as O(u2).

The LAProof repository contains a machine-checked correctness proof of a C function implementing compressed sparse row matrix-vector multiplication as an example of connecting LAProof to concrete programs.

LAProof 2.0beta1 is based more directly on MathComp (compared to LAProof 1.0 which used a list-of-list representation for matrices). That is, matrix and vector operations use definitions in mathcomp.algebra.matrix.

DOCUMENTATION

C programs

Algorithm Accuracy Proofs

See also the specs-and-proofs table of contents.

Most of the definitions and lemmas listed here are parameterized by a floating-point format not shown in this summary: that is, implicit parameters {_: FPCore.Nans}{t: FPStdLib.type}.

C Program Correctness Proofs

See also the specs-and-proofs table of contents.

Generally these prove that the C programs correctly implement the algorithms. These theorems may be composed with the algorithm accuracy proofs.

Functional models
Matrix model definitions and lemmas
Dense Matrices: densemat.c
Specifications, Supporting lemmas, Correctness proofs of basic operations, matrix multiply, Cholesky factoring and solve, and packaging the Verified Software Unit.
Band Matrices: bandmat.c
(not yet proved correct).
Sparse Matrices: sparse.c
Specification, Verification. Correctness of CSR matrix-vector multiply.