Abstract
Refinement is a well-established 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 ℤ. 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.
Similar content being viewed by others
Author information
Authors and Affiliations
Corresponding author
Additional information
Received November 2004
Revised July 2005
Accepted July 2005 by Eerke A. Boiten, John Derrick, Graeme Smith and Ian Hayes
Rights and permissions
About this article
Cite this article
Beckert, B., Schlager, S. Refinement and retrenchment for programming language data types. Form Asp Comp 17, 423–442 (2005). https://doi.org/10.1007/s00165-005-0073-x
Published:
Issue Date:
DOI: https://doi.org/10.1007/s00165-005-0073-x