Isomorphic Data Type Transformations
Alessandro Coglio (Kestrel Institute), Stephen Westfold (Kestrel, Institute)

TL;DR
This paper introduces APT tools for automating isomorphic data type refinements and verifications within the ACL2 theorem prover, facilitating program derivation and verification through data representation transformations.
Contribution
The paper presents novel APT tools, isodata and propagate-iso, for automating isomorphic data type refinements and extending these transformations to complex types with proof support.
Findings
Successfully implemented tools for isomorphic data type transformations.
Enabled automatic generation of interface functions for refined data types.
Provided proof mechanisms to verify the correctness of transformations.
Abstract
In stepwise derivations of programs from specifications, data type refinements are common. Many data type refinements involve isomorphic mappings between the more abstract and more concrete data representations. Examples include refinement of finite sets to duplicate-free ordered lists or to bit vectors, adding record components that are functions of the other fields to avoid expensive recomputation, etc. This paper describes the APT (Automated Program Transformations) tools to carry out isomorphic data type refinements in the ACL2 theorem prover and gives examples of their use. Because of the inherent symmetry of isomorphisms, these tools are also useful to verify existing programs, by turning more concrete data representations into more abstract ones to ease verification. Typically, a data type will have relatively few interface functions that access the internals of the type. Once…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsLogic, programming, and type systems · Software Testing and Debugging Techniques · Formal Methods in Verification
