Bidirectionalizing Structural Recursion on Graphs Soichiro Hidaka Zhenjiang

Zhenjiang Hu,K. Inaba,H. Matsuda,Keisuke Nakano
2009-01-01
Abstract:The bidirectional transformation problem has been attracting more and more attention in the programming language community. Despite many promising results about bidirectional transformation on linear strings or tree-like data structures, it remains as an open problem whether it is possible to design a language that can support practical development of bidirectional transformations on graphs. In this paper, we propose the first language-based (linguistic) solution towards solving this challenging problem. We approach this problem by giving a well-behaved bidirectional semantics for structural recursion (on graphs), the most essential construct in UnCAL which is the underlying graph algebra for the known UnQL graph query language. In particular, we carefully refine the existing forward evaluation of structural recursion so that it can produce useful trace information for later backward evaluation, and extending the bulk semantics of structural recursion from forward evaluation to backward evaluation. We have formally proved the well-behavedness of our bidirectional semantics, fully implemented bidirectional transformation engine for UnQL, and confirmed the effectiveness of our approach through many non-trivial examples including typical transformation in database and software engineering.
What problem does this paper attempt to address?