Results 1  10
of
22
Software Verification with Integrated Data Type Refinement for Integer Arithmetic
, 2004
"... We present an approach to integrating the refinement relation between infinite integer types (used in specification languages) and finite integer types (used in programming languages) into software verification calculi. Since integer types in programming languages have finite ranges, in general they ..."
Abstract

Cited by 16 (3 self)
 Add to MetaCart
(Show Context)
We present an approach to integrating the refinement relation between infinite integer types (used in specification languages) and finite integer types (used in programming languages) into software verification calculi. Since integer types in programming languages have finite ranges, in general they are not a correct data refinement of the mathematical integers usually used in specification languages. Ensuring the correctness of such a refinement requires generating and verifying additional proof obligations. We tackle this problem considering Java and UML/OCL as example. We present a sequent calculus for Java integer arithmetic with integrated generation of refinement proof obligations. Thus, there is no explicit...
Formal verification of square root algorithms
 Formal Methods in Systems Design
, 2003
"... Abstract. We discuss the formal verification of some lowlevel mathematical software for the Intel ® Itanium ® architecture. A number of important algorithms have been proven correct using the HOL Light theorem prover. After briefly surveying some of our formal verification work, we discuss in more ..."
Abstract

Cited by 11 (1 self)
 Add to MetaCart
Abstract. We discuss the formal verification of some lowlevel mathematical software for the Intel ® Itanium ® architecture. A number of important algorithms have been proven correct using the HOL Light theorem prover. After briefly surveying some of our formal verification work, we discuss in more detail the verification of a square root algorithm, which helps to illustrate why some features of HOL Light, in particular programmability, make it especially suitable for these applications. 1. Overview The Intel ® Itanium ® architecture is a new 64bit architecture jointly developed by Intel and HewlettPackard, implemented in the Itanium® processor family (IPF). Among the software supplied by Intel to support IPF processors are some optimized mathematical functions to supplement or replace less efficient generic libraries. Naturally, the correctness of the algorithms used in such software is always a major concern. This is particularly so for division, square root and certain transcendental function kernels, which are intimately tied to the basic architecture. First, in IA32 compatibility mode, these algorithms are used by hardware instructions like fptan and fdiv. And while in “native ” mode, division and square root are implemented in software, typical users are likely to see them as part of the basic architecture. The formal verification of some of the division algorithms is described by Harrison (2000b), and a representative verification of a transcendental function by Harrison (2000a). In this paper we complete the picture by considering a square root algorithm. Division, transcendental functions and square roots all have quite distinctive features and their formal verifications differ widely from each other. The present proofs have a number of interesting features, and show how important some theorem prover features — in particular programmability — are. The formal verifications are conducted using the freely available 1 HOL Light prover (Harrison, 1996). HOL Light is a version of HOL (Gordon and Melham, 1993), itself a descendent of Edinburgh LCF
Java's Integral Types in PVS
 Formal Methods for Open ObjectBased Distributed Systems (FMOODS 2003), volume 2884 of LNCS
, 2003
"... This paper extends PVS's standard bitvector library with multiplication, division and remainder operations, together with associated results. This extension is needed to give appropriate semantics to Java's integral types in program verification. Special emphasis is therefore put on Jav ..."
Abstract

Cited by 7 (2 self)
 Add to MetaCart
(Show Context)
This paper extends PVS's standard bitvector library with multiplication, division and remainder operations, together with associated results. This extension is needed to give appropriate semantics to Java's integral types in program verification. Special emphasis is therefore put on Java's widening and narrowing functions in relation to the newly defined operations on bitvectors.
Floatingpoint verification
 International Journal Of ManMachine Studies
, 1995
"... Abstract: This paper overviews the application of formal verification techniques to hardware in general, and to floatingpoint hardware in particular. A specific challenge is to connect the usual mathematical view of continuous arithmetic operations with the discrete world, in a credible and verifia ..."
Abstract

Cited by 5 (0 self)
 Add to MetaCart
(Show Context)
Abstract: This paper overviews the application of formal verification techniques to hardware in general, and to floatingpoint hardware in particular. A specific challenge is to connect the usual mathematical view of continuous arithmetic operations with the discrete world, in a credible and verifiable way.
Proof Assistants: history, ideas and future
"... In this paper we will discuss the fundamental ideas behind proof assistants: What are they and what is a proof anyway? We give a short history of the main ideas, emphasizing the way they ensure the correctness of the mathematics formalized. We will also briefly discuss the places where proof assista ..."
Abstract

Cited by 4 (0 self)
 Add to MetaCart
(Show Context)
In this paper we will discuss the fundamental ideas behind proof assistants: What are they and what is a proof anyway? We give a short history of the main ideas, emphasizing the way they ensure the correctness of the mathematics formalized. We will also briefly discuss the places where proof assistants are used and how we envision their extended use in the future. While being an introduction into the world of proof assistants and the main issues behind them, this paper is also a position paper that pushes the further use of proof assistants. We believe that these systems will become the future of mathematics, where definitions, statements, computations and proofs are all available in a computerized form. An important application is and will be in computer supported modelling and verification of systems. But their is still along road ahead and we will indicate what we believe is needed for the further proliferation of proof assistants.
Isolating critical cases for reciprocals using integer factorization
"... One approach to testing and/or proving correctness of a floatingpoint algorithm computing a function f is based on finding input floatingpoint numbers a such that the exact result f(a) is very close to a “rounding boundary”, i.e. a floatingpoint number or a midpoint between them. In the present p ..."
Abstract

Cited by 2 (0 self)
 Add to MetaCart
One approach to testing and/or proving correctness of a floatingpoint algorithm computing a function f is based on finding input floatingpoint numbers a such that the exact result f(a) is very close to a “rounding boundary”, i.e. a floatingpoint number or a midpoint between them. In the present paper we show how to do this for the reciprocal function by utilizing prime factorizations. We present the method and show examples, as well as making a fairly detailed study of its expected and worstcase behavior. We point out how this analysis of reciprocals can be useful in analyzing certain reciprocal algorithms, and also show how the approach can be trivially adapted to the reciprocal square root function.
Guaranteed Precision for Transcendental and Algebraic Computation made Easy
, 2006
"... ..."
(Show Context)
NewtonRaphson Algorithms for FloatingPoint Division Using an FMA
"... Since the introduction of the Fused Multiply and Add (FMA) in the IEEE7542008 standard [6] for floatingpoint arithmetic, division based on NewtonRaphson’s iterations becomes a viable alternative to SRTbased divisions. The NewtonRaphson iterations were already used in some architecture prior to ..."
Abstract

Cited by 1 (1 self)
 Add to MetaCart
(Show Context)
Since the introduction of the Fused Multiply and Add (FMA) in the IEEE7542008 standard [6] for floatingpoint arithmetic, division based on NewtonRaphson’s iterations becomes a viable alternative to SRTbased divisions. The NewtonRaphson iterations were already used in some architecture prior to the revision of the IEEE754 norm. For example, Itanium architecture already used this kind of iterations [8]. Unfortunately, the proofs of the correctness of binary algorithms do not extend to the case of decimal floatingpoint arithmetic. In this paper, we present general methods to prove the correct rounding of division algorithms using NewtonRaphson’s iterations in software, for radix 2 and radix 10 floatingpoint arithmetic. Keywords floatingpoint arithmetic; decimal floatingpoint arithmetic; division
Some issues related to double roundings
, 2011
"... Double rounding is a phenomenon that may occur when different floatingpoint precisions are available on a same system, or when performing scaled operations whose final result is subnormal. Although double rounding is, in general, innocuous, it may change the behavior of some useful small floatingp ..."
Abstract
 Add to MetaCart
(Show Context)
Double rounding is a phenomenon that may occur when different floatingpoint precisions are available on a same system, or when performing scaled operations whose final result is subnormal. Although double rounding is, in general, innocuous, it may change the behavior of some useful small floatingpoint algorithms. We analyze the potential influence of double roundings on the Fast2Sum and 2Sum algorithms, on some summation algorithms, and Veltkamp’s splitting. We also show how to handle possible double roundings when performing scaled NewtonRaphson division iterations (to avoid possible underflow problems).
To appear in Formal Aspects of Computing Refinement and Retrenchment for Programming Language Data Types
"... Abstract. Refinement is a wellestablished and accepted technique for the systematic development of correct software systems. However, for the step from already refined specification to implementation, a correct refinement is often not possible because the data types used in the specification respec ..."
Abstract
 Add to MetaCart
Abstract. Refinement is a wellestablished and accepted technique for the systematic development of correct software systems. However, for the step from already refined specification to implementation, a correct refinement is often not possible because the data types used in the specification respectively the implementation language differ. In this paper, we discuss this problem and its consequences, using the integer data types of Java as an example, which do not correctly refine the mathematical integers Z. We present a solution, which can be seen as a generalisation of refinement and a variant of retrenchment. It has successfully been implemented as part of the KeY software verification system.