Get 20M+ Full-Text Papers For Less Than $1.50/day. Start a 14-Day Trial for You or Your Team.

Learn More →

Formal Verification of Numerical Programs: From C Annotated Programs to Mechanical Proofs

Formal Verification of Numerical Programs: From C Annotated Programs to Mechanical Proofs Numerical programs may require a high level of guarantee. This can be achieved by applying formal methods, such as machine-checked proofs. But these tools handle mathematical theorems while we are interested in C code, in which numerical computations are performed using floating-point arithmetic, whereas proof tools typically handle exact real arithmetic. To achieve this high level of confidence on C programs, we use a chain of tools: Frama-C, its Jessie plugin, Why and provers among Coq, Gappa, Alt-Ergo, CVC3 and Z3. This approach requires the C program to be annotated: each function must be precisely specified, and we prove the correctness of the program by proving both that it meets its specifications and that no runtime error may occur. The purpose of this paper is to illustrate, on various examples, the features of this approach. http://www.deepdyve.com/assets/images/DeepDyve-Logo-lg.png Mathematics in Computer Science Springer Journals

Formal Verification of Numerical Programs: From C Annotated Programs to Mechanical Proofs

Loading next page...
 
/lp/springer-journals/formal-verification-of-numerical-programs-from-c-annotated-programs-to-L0K7V3FSTh

References (51)

Publisher
Springer Journals
Copyright
Copyright © 2011 by Springer Basel AG
Subject
Mathematics; Mathematics, general; Computer Science, general
ISSN
1661-8270
eISSN
1661-8289
DOI
10.1007/s11786-011-0099-9
Publisher site
See Article on Publisher Site

Abstract

Numerical programs may require a high level of guarantee. This can be achieved by applying formal methods, such as machine-checked proofs. But these tools handle mathematical theorems while we are interested in C code, in which numerical computations are performed using floating-point arithmetic, whereas proof tools typically handle exact real arithmetic. To achieve this high level of confidence on C programs, we use a chain of tools: Frama-C, its Jessie plugin, Why and provers among Coq, Gappa, Alt-Ergo, CVC3 and Z3. This approach requires the C program to be annotated: each function must be precisely specified, and we prove the correctness of the program by proving both that it meets its specifications and that no runtime error may occur. The purpose of this paper is to illustrate, on various examples, the features of this approach.

Journal

Mathematics in Computer ScienceSpringer Journals

Published: Nov 12, 2011

There are no references for this article.