Skip to main content

Introduction to Bidirectional Transformations

  • Chapter
  • First Online:
Bidirectional Transformations

Abstract

Bidirectional transformations (BX) serve to maintain consistency between different representations of related and often overlapping information, translating changes in one representation to the others. We present a brief introduction to the field, in order to provide some common background to the remainder of this volume, which constitutes the lecture notes from the Summer School on Bidirectional Transformations, held in Oxford in July 2016 as one of the closing activities of the UK EPSRC-funded project A Theory of Least Change for Bidirectional Transformations.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 39.99
Price excludes VAT (USA)
  • Available as EPUB and PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 54.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

Notes

  1. 1.

    The reader troubled by the apparent lack of generality implied by equivalences between consistency relations may wonder whether a richer class of 2-cells might fit with this analysis. Certainly, the choice of equivalences is sufficient to consider all the constructions and coherence conditions necessary for the definition of a bicategory. Moreover, the need for consistency restoration functions to go ‘back-and-forth’, restoring the same consistency relation \({ R }\) (at least up to extensional equivalence), seems to make our choice also necessary.

References

  1. Abou-Saleh, F., Cheney, J., Gibbons, J., McKinna, J., Stevens, P.: Notions of bidirectional computation and entangled state monads. In: Hinze, R., Voigtländer, J. (eds.) MPC 2015. LNCS, vol. 9129, pp. 187–214. Springer, Cham (2015). https://doi.org/10.1007/978-3-319-19797-5_9

    Chapter  Google Scholar 

  2. Abou-Saleh, F., Cheney, J., Gibbons, J., McKinna, J., Stevens, P.: Reflections on monadic lenses. In: Lindley, S., McBride, C., Trinder, P., Sannella, D. (eds.) A List of Successes That Can Change the World. LNCS, vol. 9600, pp. 1–31. Springer, Cham (2016). https://doi.org/10.1007/978-3-319-30936-1_1

    Chapter  Google Scholar 

  3. Abou-Saleh, F., McKinna, J., Gibbons, J.: Coalgebraic aspects of bidirectional computation. In: BX 2015. CEUR-WS, vol. 1396, pp. 15–30 (2015)

    Google Scholar 

  4. Abou-Saleh, F., McKinna, J., Gibbons, J.: Coalgebraic aspects of bidirectional computation. J. Object Technol. (2017, in press)

    Google Scholar 

  5. Ambler, S.W.: Mapping objects to relational databases: O/R mapping in detail (1998). http://www.agiledata.org/essays/mappingObjects.html

  6. Angiuli, C., Morehouse, E., Licata, D.R., Harper, R.: Homotopical patch theory. In: International Conference on Functional Programming, pp. 243–256. ACM (2014)

    Google Scholar 

  7. Anjorin, A.: Class diagrams to database schemas v0.1. BX Repository. http://bx-community.wikidot.com/examples:classdiagramstodatabaseschemas. Accessed Jan 2017

  8. Bancilhon, F., Spyratos, N.: Update semantics of relational views. ACM Trans. Database Syst. 6(4), 557–575 (1981)

    Article  MATH  Google Scholar 

  9. Barbosa, D.M.J., Cretin, J., Foster, N., Greenberg, M., Pierce, B.C.: Matching lenses: alignment and view update. In: Hudak, P., Weirich, S. (eds.) International Conference on Functional Programming, pp. 193–204. ACM, New York (2010)

    Google Scholar 

  10. Bénabou, J., Davis, R., Dold, A., Isbell, J., MacLane, S., Oberst, U., Roos, J.-E.: Reports of the Midwest Category Seminar. LNM, vol. 47, pp. 1–77. Springer, Heidelberg (1967). https://doi.org/10.1007/BFb0074298

    MATH  Google Scholar 

  11. Benton, N., Hughes, J., Moggi, E.: Monads and effects. In: Barthe, G., Dybjer, P., Pinto, L., Saraiva, J. (eds.) APPSEM 2000. LNCS, vol. 2395, pp. 42–122. Springer, Heidelberg (2002). https://doi.org/10.1007/3-540-45699-6_2

    Chapter  Google Scholar 

  12. Bohannon, A., Foster, J.N., Pierce, B.C., Pilkiewicz, A., Schmitt, A.: Boomerang: resourceful lenses for string data. In: Principles of Programming Languages (2008)

    Google Scholar 

  13. Bohannon, A., Pierce, B.C., Vaughan, J.A.: Relational lenses: a language for updatable views. In: Principles of Database Systems, pp. 338–347. ACM (2006)

    Google Scholar 

  14. Boyer, J.M.: W3C XForms, October 2009. https://www.w3.org/TR/xforms/

  15. Brady, E.: Type-Driven Development with Idris. Manning Publications, Shelter Island (2017)

    Google Scholar 

  16. Cai, Y., Giarrusso, P.G., Rendel, T., Ostermann, K.: A theory of changes for higher-order languages: incrementalizing \(\lambda \)-calculi by static differentiation. In: Programming Language Design and Implementation, pp. 145–155. ACM (2014)

    Google Scholar 

  17. Cheney, J., Gibbons, J., McKinna, J., Stevens, P.: On principles of least change and least surprise for bidirectional transformations. J. Object Technol. (2017, to appear)

    Google Scholar 

  18. Cheney, J., McKinna, J., Stevens, P., Gibbons, J.: Towards a repository of BX examples. In: BX Workshop, March 2014

    Google Scholar 

  19. Cicchetti, A., Di Ruscio, D., Eramo, R., Pierantonio, A.: JTL: a bidirectional and change propagating transformation language. In: Malloy, B., Staab, S., van den Brand, M. (eds.) SLE 2010. LNCS, vol. 6563, pp. 183–202. Springer, Heidelberg (2011). https://doi.org/10.1007/978-3-642-19440-5_11

    Chapter  Google Scholar 

  20. Cooper, E., Lindley, S., Wadler, P., Yallop, J.: The essence of form abstraction. In: Ramalingam, G. (ed.) APLAS 2008. LNCS, vol. 5356, pp. 205–220. Springer, Heidelberg (2008). https://doi.org/10.1007/978-3-540-89330-1_15

    Chapter  Google Scholar 

  21. Czarnecki, K., Foster, J.N., Hu, Z., Lämmel, R., Schürr, A., Terwilliger, J.F.: Bidirectional transformations: a cross-discipline perspective. In: Paige, R.F. (ed.) ICMT 2009. LNCS, vol. 5563, pp. 260–283. Springer, Heidelberg (2009). https://doi.org/10.1007/978-3-642-02408-5_19

    Chapter  Google Scholar 

  22. Date, C.J.: View Updating and Relational Theory. O’Reilly, Newton (2012)

    Google Scholar 

  23. Diskin, Z., Xiong, Y., Czarnecki, K.: From state- to delta-based bidirectional model transformations: the asymmetric case. J. Object Technol. 10(6), 1–25 (2011)

    Google Scholar 

  24. Diskin, Z., Xiong, Y., Czarnecki, K., Ehrig, H., Hermann, F., Orejas, F.: From state- to delta-based bidirectional model transformations: the symmetric case. In: Whittle, J., Clark, T., Kühne, T. (eds.) MODELS 2011. LNCS, vol. 6981, pp. 304–318. Springer, Heidelberg (2011). https://doi.org/10.1007/978-3-642-24485-8_22

    Chapter  Google Scholar 

  25. Ehrig, H., Engels, G., Kreowski, H.-J., Rozenberg, G. (eds.): Handbook of Graph Grammars and Computing by Graph Transformation. Applications, Languages and Tools, vol. 2. World Scientific, Singapore (1999)

    MATH  Google Scholar 

  26. Foster, J.N., Greenwald, M.B., Moore, J.T., Pierce, B.C., Schmitt, A.: combinators for bidirectional tree transformations: a linguistic approach to the view update problem. In: Principles of Programming Languages, pp. 233–246. ACM (2005)

    Google Scholar 

  27. Foster, N., Matsuda, K., Voigtländer, J.: Three complementary approaches to bidirectional programming. In: Gibbons, J. (ed.) Generic and Indexed Programming. LNCS, vol. 7470, pp. 1–46. Springer, Heidelberg (2012). https://doi.org/10.1007/978-3-642-32202-0_1

    Chapter  Google Scholar 

  28. Hegner, S.J.: An order-based theory of updates for closed database views. Ann. Math. Artif. Intell. 40(1–2), 63–125 (2004)

    Article  MathSciNet  MATH  Google Scholar 

  29. Hofmann, M.: Modular edit lenses. In: Gibbons, J., Stevens, P. (eds.) Summer School on Bidirectional Transformations. LNCS, vol. 9715, pp. 73–99. Springer, Cham (2018)

    Chapter  Google Scholar 

  30. Hofmann, M., Pierce, B.C., Wagner, D.: Symmetric lenses. In: Ball, T., Sagiv, M. (eds.) Principles of Programming Languages, pp. 371–384. ACM, New York (2011)

    Google Scholar 

  31. Hofmann, M., Pierce, B.C., Wagner, D.: Edit lenses. In: Field, J., Hicks, M. (eds.) Principles of Programming Languages, pp. 495–508. ACM, New York (2012)

    Google Scholar 

  32. Hu, Z., Schürr, A., Stevens, P., Terwilliger, J.F.: Bidirectional transformations “bx” (Dagstuhl Seminar 11031). Dagstuhl Rep. 1(1), 42–67 (2011)

    Google Scholar 

  33. Johnson, M., Rosebrugh, R.D.: Lens put-put laws: monotonic and mixed. In: BX Workshop (2012). ECEASST 49

    Google Scholar 

  34. Johnson, M., Rosebrugh, R.D.: Spans of lenses. In: Terwilliger, J., Hidaka, S. (eds.) BX Workshop. CEUR Workshop Proceedings, vol. 1133, pp. 112–118 (2014). CEUR-WS.org

    Google Scholar 

  35. Johnson, M., Rosebrugh, R.D.: Unifying set-based, delta-based and edit-based lenses. In: Anjorin, A., Gibbons, J. (eds.) BX Workshop. CEUR Workshop Proceedings, vol. 1571, pp. 1–13 (2016). CEUR-WS.org

    Google Scholar 

  36. Johnson, M., Rosebrugh, R.D., Wood, R.J.: Lenses, fibrations and universal translations. Math. Struct. Comput. Sci. 22(1), 25–42 (2012)

    Article  MathSciNet  MATH  Google Scholar 

  37. Peyton Jones, S.L., Wadler, P.: Imperative functional programming. In: Principles of Programming Languages, pp. 71–84 (1993)

    Google Scholar 

  38. Liang, S., Hudak, P., Jones, M.: Monad transformers and modular interpreters. In: Principles of Programming Languages, pp. 333–343 (1995)

    Google Scholar 

  39. Luo, Z.: Computation and Reasoning: A Type Theory for Computer Science. International Series of Monographs on Computer Science. Oxford University Press, Oxford (1994)

    MATH  Google Scholar 

  40. Macedo, N., Cunha, A.: Least-change bidirectional model transformation with QVT-R and ATL. Softw. Syst. Model. 15(3), 783–810 (2016)

    Article  Google Scholar 

  41. McKinna, J.: Bidirectional transformations are proof-relevant bisimulations. Extended Abstract Presented at ICFP Workshop TyDe, Nara, Japan (2016). https://www.youtube.com/watch?v=33RYwcIQ7UM

  42. McKinna, J.: Bidirectional transformations with deltas: a dependently typed approach (talk proposal). In: Bx Workshop, ETAPS (2016). http://ceur-ws.org/Vol-1571/paper_11.pdf

  43. McKinna, J.: Complements witness consistency. In: Bx Workshop, ETAPS (2016). http://ceur-ws.org/Vol-1571/paper_10.pdf

  44. Meertens, L.: Designing constraint maintainers for user interaction. CWI, Amsterdam, June 1998. http://www.kestrel.edu/home/people/meertens/pub/dcm.ps

  45. Meertens, L.: Designing constraint maintainers for user interaction. In: Mu, S.-C. (ed.) Third Workshop on Programmable Structured Documents, pp. 1–3. PSD Laboratory, Tokyo University (2005)

    Google Scholar 

  46. Microsoft. Windows Presentation Foundation (2006). https://msdn.microsoft.com/en-us/library/ms754130.aspx

  47. Moggi, E.: Notions of computation and monads. Inf. Comput. 93(1), 55–92 (1991)

    Article  MathSciNet  MATH  Google Scholar 

  48. Neward, T.: The Vietnam of computer science, June 2006. http://blogs.tedneward.com/post/the-vietnam-of-computer-science/

  49. Nordström, B., Petersson, K., Smith, J.: Programming in Martin-Löf’s Type Theory: An Introduction. International Series of Monographs on Computer Science, vol. 7. Oxford University Press, Oxford (1990). https://www.cse.chalmers.se/research/group/logic/book/book.pdf

    MATH  Google Scholar 

  50. Norell, U.: Dependently typed programming in agda. In: Koopman, P., Plasmeijer, R., Swierstra, D. (eds.) AFP 2008. LNCS, vol. 5832, pp. 230–266. Springer, Heidelberg (2009). https://doi.org/10.1007/978-3-642-04652-0_5

    Chapter  Google Scholar 

  51. Pacheco, H., Hu, Z., Fischer, S.: Monadic combinators for “putback” style bidirectional programming. In: Partial Evaluation and Program Manipulation, pp. 39–50. ACM (2014)

    Google Scholar 

  52. Plotkin, G., Power, J.: Notions of computation determine monads. In: Nielsen, M., Engberg, U. (eds.) FoSSaCS 2002. LNCS, vol. 2303, pp. 342–356. Springer, Heidelberg (2002). https://doi.org/10.1007/3-540-45931-6_24

    Chapter  Google Scholar 

  53. Pratt, T.W.: Pair grammars, graph languages and string-to-graph translations. J. Comput. Syst. Sci. 5(6), 560–595 (1971)

    Article  MathSciNet  MATH  Google Scholar 

  54. Rozenberg, G. (ed.): Handbook of Graph Grammars and Computing by Graph Transformation. Foundations, vol. 1. World Scientific, Singapore (1997)

    MATH  Google Scholar 

  55. Schürr, A.: Specification of graph translators with triple graph grammars. In: Mayr, E.W., Schmidt, G., Tinhofer, G. (eds.) WG 1994. LNCS, vol. 903, pp. 151–163. Springer, Heidelberg (1995). https://doi.org/10.1007/3-540-59071-4_45

    Chapter  Google Scholar 

  56. Schürr, A., Klar, F.: 15 years of triple graph grammars. In: Ehrig, H., Heckel, R., Rozenberg, G., Taentzer, G. (eds.) ICGT 2008. LNCS, vol. 5214, pp. 411–425. Springer, Heidelberg (2008). https://doi.org/10.1007/978-3-540-87405-8_28

    Chapter  Google Scholar 

  57. Shkaravska, O.: Side-effect monad, its equational theory and applications (2005). http://www.ioc.ee/~tarmo/tsem05/shkaravska1512-slides.pdf

  58. Stevens, P.: ModelTests v0.1 in Bx Examples Repository. http://bx-community.wikidot.com/examples:modeltests. Accessed 6 Feb 2017

  59. Stevens, P.: Bidirectional model transformations in QVT: semantic issues and open questions. Softw. Syst. Model. 9(1), 7–20 (2010)

    Article  MathSciNet  Google Scholar 

  60. Stevens, P.: Observations relating to the equivalences induced on model sets by bidirectional transformations. In: BX Workshop (2012). ECEASST 49

    Google Scholar 

  61. Stevens, P., McKinna, J., Cheney, J.: Composers v0.1. BX Repository. http://bx-community.wikidot.com/examples:composers. Accessed Jan 2017

  62. Swierstra, W., Löh, A.: The semantics of version control. In: Onward!, pp. 43–54 (2014)

    Google Scholar 

  63. Wadler, P.: Monads for functional programming. In: Jeuring, J., Meijer, E. (eds.) AFP 1995. LNCS, vol. 925, pp. 24–52. Springer, Heidelberg (1995). https://doi.org/10.1007/3-540-59451-5_2

    Chapter  Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Jeremy Gibbons .

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2018 Springer International Publishing AG, part of Springer Nature

About this chapter

Check for updates. Verify currency and authenticity via CrossMark

Cite this chapter

Abou-Saleh, F., Cheney, J., Gibbons, J., McKinna, J., Stevens, P. (2018). Introduction to Bidirectional Transformations. In: Gibbons, J., Stevens, P. (eds) Bidirectional Transformations. Lecture Notes in Computer Science(), vol 9715. Springer, Cham. https://doi.org/10.1007/978-3-319-79108-1_1

Download citation

  • DOI: https://doi.org/10.1007/978-3-319-79108-1_1

  • Published:

  • Publisher Name: Springer, Cham

  • Print ISBN: 978-3-319-79107-4

  • Online ISBN: 978-3-319-79108-1

  • eBook Packages: Computer ScienceComputer Science (R0)

Publish with us

Policies and ethics