Data refinement by calculation
Acta Informatica
Proceedings of the seventh ACM SIGPLAN international conference on Functional programming
A lightweight implementation of generics and dynamics
Proceedings of the 2002 ACM SIGPLAN workshop on Haskell
Introduction to Functional Programming
Introduction to Functional Programming
Deforestation: Transforming Programs to Eliminate Trees
ESOP '88 Proceedings of the 2nd European Symposium on Programming
ICALP '93 Proceedings of the 20th International Colloquium on Automata, Languages and Programming
Calculating Functional Programs
Revised Lectures from the International Summer School and Workshop on Algebraic and Coalgebraic Methods in the Mathematics of Program Construction
Some Lambda Calculi with Categorial Sums and Products
RTA '93 Proceedings of the 5th International Conference on Rewriting Techniques and Applications
Editorial: transformations everywhere
Science of Computer Programming - Special issue on program transformation
Proceedings of the 32nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Scrap your boilerplate with class: extensible generic functions
Proceedings of the tenth ACM SIGPLAN international conference on Functional programming
Co-transformations in Information System Reengineering
Electronic Notes in Theoretical Computer Science (ENTCS)
“Scrap your boilerplate” reloaded
FLOPS'06 Proceedings of the 8th international conference on Functional and Logic Programming
Type-safe two-level data transformation
FM'06 Proceedings of the 14th international conference on Formal Methods
Program optimizations and transformations in calculation form
GTTSE'05 Proceedings of the 2005 international conference on Generative and Transformational Techniques in Software Engineering
Co-transformations in database applications evolution
GTTSE'05 Proceedings of the 2005 international conference on Generative and Transformational Techniques in Software Engineering
A framework for point-free program transformation
IFL'05 Proceedings of the 17th international conference on Implementation and Application of Functional Languages
Coupled Transformation of Schemas, Documents, Queries, and Constraints
Electronic Notes in Theoretical Computer Science (ENTCS)
'Galculator': functional prototype of a Galois-connection based proof assistant
Proceedings of the 10th international ACM SIGPLAN conference on Principles and practice of declarative programming
Specifying Strategies for Exercises
Proceedings of the 9th AISC international conference, the 15th Calculemas symposium, and the 7th international MKM conference on Intelligent Computer Mathematics
From spreadsheets to relational databases and back
Proceedings of the 2009 ACM SIGPLAN workshop on Partial evaluation and program manipulation
Electronic Notes in Theoretical Computer Science (ENTCS)
MPC'10 Proceedings of the 10th international conference on Mathematics of program construction
Calculating with lenses: optimising bidirectional transformations
Proceedings of the 20th ACM SIGPLAN workshop on Partial evaluation and program manipulation
Algebraic Specialization of Generic Functions for Recursive Types
Electronic Notes in Theoretical Computer Science (ENTCS)
Transformation of structure-shy programs with application to XPath queries and strategic functions
Science of Computer Programming
Type-safe evolution of spreadsheets
FASE'11/ETAPS'11 Proceedings of the 14th international conference on Fundamental approaches to software engineering: part of the joint European conferences on theory and practice of software
Multifocal: a strategic bidirectional transformation language for XML schemas
ICMT'12 Proceedings of the 5th international conference on Theory and Practice of Model Transformations
Constraint-aware Schema Transformation
Electronic Notes in Theoretical Computer Science (ENTCS)
Hi-index | 0.00 |
Coupled transformations occur in software evolution when multiple artifacts must be modified in such a way that they remain consistent with each other. An important example involves the coupled transformation of a data type, its instances, and the programs that consume or produce it. Previously, we have provided a formal treatment of transformation of the first two: data types and instances. The treatment involved the construction of type-safe, type-changing strategic rewrite systems. In this paper, we extend our treatment to the transformation of corresponding data processing programs. The key insight underlying the extension is that both data migration functions and data processors can be represented type-safely by a generalized abstract data type (GADT). These representations are then subjected to program calculation rules, harnessed in type-safe, type-preserving strategic rewrite systems. For ease of calculation, we use point-free representations and corresponding calculation rules. Thus, coupled transformations are carried out in two steps. First, a type-changing rewrite system is applied to a source type to obtain a target type together with (representations of) migration functions between source and target. Then, a type-preserving rewrite system is applied to the composition of a migration function and a data processor on the source (or target) type to obtain a data processor on the target (or source) type. All rewrites are type-safe.