Abstract.
Data refinement is the systematic replacement of a data structure with another one in program development. Data refinement between program statements can on an abstract level be described as a commutativity property where the abstraction relationship between the data structures involved is represented by an abstract statement (a decoding). We generalise the traditional notion of data refinement by defining an encoding operator that describes the least (most abstract) data refinement with respect to a given abstraction. We investigate the categorical and algebraic properties of encoding and describe a number of special cases, which include traditional notions of data refinement. The dual operator of encoding is decoding, which we investigate and give an intuitive interpretation to. Finally we show a number of applications of encoding and decoding.
Similar content being viewed by others
Author information
Authors and Affiliations
Additional information
Received May 1999 / Accepted in revised form November 2000
Rights and permissions
About this article
Cite this article
Back, RJ., von Wright, J. Encoding, Decoding and Data Refinement. Form Aspects Comput 12, 313–349 (2000). https://doi.org/10.1007/s001650070008
Issue Date:
DOI: https://doi.org/10.1007/s001650070008