Enhancing semantic bidirectionalization via shape bidirectionalizer plug-ins

Matsuda et al. (2007) and Voigtlander (2009) have introduced two techniques that given a source+to-view function provide an update propagation function mapping an original source and an updated view back to an updated source, subject to standard consistency conditions. Previously, we developed a synthesis of the two techniques, based on a separation of shape and content aspects (Voigtlander et al. 2010). Here, we carry that idea further, reworking the technique of Voigtlander such that any shape bidirectionalizer (based on the work of Matsuda et al. or not) can be used as a plug-in, to good effect. We also provide a data-type-generic account, enabling wider reuse, including the use of pluggable bidirectionalization itself as a plug-in.

[1]  Georg Gottlob,et al.  Properties and update semantics of consistent views , 1988, TODS.

[2]  C. Barry Jay,et al.  A Semantics for Shape , 1995, Sci. Comput. Program..

[3]  Annalisa Bossi Logic-Based Program Synthesis and Transformation , 1999, Lecture Notes in Computer Science.

[4]  Bruno C. d. S. Oliveira,et al.  The essence of the Iterator pattern , 2006, J. Funct. Program..

[5]  Peyton Jones,et al.  Haskell 98 language and libraries : the revised report , 2003 .

[6]  Alcino Cunha,et al.  Generic Point-free Lenses , 2010, MPC.

[7]  Philip Wadler,et al.  Theorems for free! , 1989, FPCA.

[8]  Kazutaka Matsuda,et al.  Bidirectionalization transformation based on automatic derivation of view complement functions , 2007, ICFP '07.

[9]  Benjamin C. Pierce,et al.  Relational lenses: a language for updatable views , 2006, PODS '06.

[10]  Benjamin C. Pierce,et al.  Quotient lenses , 2008, ICFP 2008.

[11]  Joyce L. Vedral,et al.  Functional Programming Languages and Computer Architecture , 1989, Lecture Notes in Computer Science.

[12]  M. F.,et al.  Bibliography , 1985, Experimental Gerontology.

[13]  Jürgen Giesl,et al.  Deaccumulation techniques for improving provability , 2007, J. Log. Algebraic Methods Program..

[14]  Nicolas Spyratos,et al.  Update semantics of relational views , 1981, TODS.

[15]  Kazutaka Matsuda,et al.  Three Complementary Approaches to Bidirectional Programming , 2010, SSGIP.

[16]  Meng Wang,et al.  Refactoring pattern matching , 2013, Sci. Comput. Program..

[17]  Zhenjiang Hu,et al.  Delta Lenses over Inductive Types , 2012 .

[18]  Arthur M. Keller,et al.  Comment on Bancilhon and Spyratos' “Update semantics and relational views” , 1987, TODS.

[19]  Meng Wang,et al.  Combining syntactic and semantic bidirectionalization , 2010, ICFP '10.

[20]  Shin-Cheng Mu,et al.  A programmable editor for developing structured documents based on bidirectional transformations , 2008, High. Order Symb. Comput..

[21]  Benjamin C. Pierce,et al.  Boomerang: resourceful lenses for string data , 2008, POPL '08.

[22]  Christopher Strachey,et al.  Fundamental Concepts in Programming Languages , 2000, High. Order Symb. Comput..

[23]  Janis Voigtländer Bidirectionalization for free! (Pearl) , 2009, POPL '09.

[24]  Kazutaka Matsuda,et al.  Bidirectionalizing graph transformations , 2010, ICFP '10.

[25]  Meng Wang,et al.  Incremental updates for efficient bidirectional transformations , 2011, ICFP '11.

[26]  Meng Wang,et al.  Bidirectionalization for free with runtime recording: or, a light-weight approach to the view-update problem , 2013, PPDP.

[27]  Philip Wadler,et al.  Deforestation: Transforming Programs to Eliminate Trees , 1988, Theoretical Computer Science.

[28]  GibbonsJeremy,et al.  The essence of the iterator pattern , 2009 .

[29]  Janis Voigtländer Ideas for connecting inductive program synthesis and bidirectionalization , 2012, PEPM '12.

[30]  Thorsten Altenkirch,et al.  Foundations of Software Science and Computation Structures: 6th International Conference, FOSSACS 2003 Held as Part of the Joint European Conferences on Theory and Practice of Software, ETAPS 2003 Warsaw, Poland, April 7–11, 2003 Proceedings , 2003, Lecture Notes in Computer Science.

[31]  Benjamin C. Pierce,et al.  Combinators for bi-directional tree transformations: a linguistic approach to the view update problem , 2005, POPL '05.

[32]  Ralf Lämmel,et al.  Bidirectional Transformations: A Cross-Discipline Perspective , 2009, ICMT@TOOLS.

[33]  Philip Wadler,et al.  The essence of functional programming (Invited talk) , 1997 .

[34]  Jürgen Giesl,et al.  Context-Moving Transformations for Function Verification , 1999, LOPSTR.

[35]  John C. Reynolds,et al.  Types, Abstraction and Parametric Polymorphism , 1983, IFIP Congress.