Skip to main content
Log in

Refinement and retrenchment for programming language data types

  • Published:
Formal Aspects of Computing

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.

This is a preview of subscription content, log in via an institution to check access.

Access this article

Price excludes VAT (USA)
Tax calculation will be finalised during checkout.

Instant access to the full article PDF.

Similar content being viewed by others

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Bernhard Beckert.

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

Reprints 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

Download citation

  • Published:

  • Issue Date:

  • DOI: https://doi.org/10.1007/s00165-005-0073-x

Keywords

Navigation