Changing Data Structures in Type Theory: A Study of Natural Numbers
TYPES '00 Selected papers from the International Workshop on Types for Proofs and Programs
Dynamic ADTs: a "don't ask, don't tell" policy for data abstraction
Proceedings of the 2007 International Lisp Conference
Hi-index | 0.00 |
I present an automatic technique for transforming a program by changing the data types in that program to ones which are more appropriate for the task. Programs are synthesised by proving modified synthesis theorems in the proofs-as-programs paradigm. The transformation can be verified in the logic of type theory. Transformations are motivated by the presence of subexpressions in the synthesised program. A library of data type changes is maintained, indexed by the motivating subexpressions. These transformations are extended from the motivating expressions to cover as much of the program as possible. I describe the general pattern of the revised synthesis proof, and show how such a proof can be guided by difference matching followed by rippling.