skip to main content

Synbit: synthesizing bidirectional programs using unidirectional sketches

Published:15 October 2021Publication History
Skip Abstract Section

Abstract

We propose a technique for synthesizing bidirectional programs from the corresponding unidirectional code plus a few input/output examples. The core ideas are: (1) constructing a sketch using the given unidirectional program as a specification, and (2) filling the sketch in a modular fashion by exploiting the properties of bidirectional programs. These ideas are enabled by our choice of programming language, HOBiT, which is specifically designed to maintain the unidirectional program structure in bidirectional programming, and keep the parts that control bidirectional behavior modular. To evaluate our approach, we implemented it in a tool called Synbit and used it to generate bidirectional programs for intricate microbenchmarks, as well as for a few larger, more realistic problems. We also compared Synbit to a state-of-the-art unidirectional synthesis tool on the task of synthesizing backward computations.

Skip Supplemental Material Section

Supplemental Material

Auxiliary Presentation Video

This is a presentation video of my talk at OOPSLA2021 on our paper accepted in the research track. We propose a technique for synthesizing bidirectional programs from the corresponding unidirectional code and input/output examples. The core ideas are: (1) constructing a sketch using the given unidirectional program as a specification, (2) filling the sketch in a modular fashion by exploiting the properties of bidirectional programs. These ideas are enabled by our choice of programming language, HOBiT, which is specifically designed to maintain the unidirectional program structure in bidirectional programming, and keep the parts that control bidirectional behavior modular. To evaluate our approach, we implemented it in a tool called Synbit and used it to generate bidirectional programs for intricate microbenchmarks, a few larger, and more realistic problems. We also compared Synbit to a state-of-the-art unidirectional synthesis tool on the task of synthesizing backward computations.

References

  1. Alessandro Abate, Iury Bessa, Dario Cattaruzza, Lucas C. Cordeiro, Cristina David, Pascal Kesseli, Daniel Kroening, and Elizabeth Polgreen. 2017. Automated Formal Synthesis of Digital Controllers for State-Space Physical Plants. In Computer Aided Verification - 29th International Conference, CAV 2017, Heidelberg, Germany, July 24-28, 2017, Proceedings, Part I, Rupak Majumdar and Viktor Kuncak (Eds.) (Lecture Notes in Computer Science, Vol. 10426). Springer, 462–482. https://doi.org/10.1007/978-3-319-63387-9_23 Google ScholarGoogle ScholarCross RefCross Ref
  2. Alessandro Abate, Cristina David, Pascal Kesseli, Daniel Kroening, and Elizabeth Polgreen. 2018. Counterexample Guided Inductive Synthesis Modulo Theories. In Computer Aided Verification - 30th International Conference, CAV 2018, Held as Part of the Federated Logic Conference, FloC 2018, Oxford, UK, July 14-17, 2018, Proceedings, Part I, Hana Chockler and Georg Weissenbacher (Eds.) (Lecture Notes in Computer Science, Vol. 10981). Springer, 270–288. https://doi.org/10.1007/978-3-319-96145-3_15 Google ScholarGoogle ScholarCross RefCross Ref
  3. Aws Albarghouthi, Sumit Gulwani, and Zachary Kincaid. 2013. Recursive Program Synthesis. In Computer Aided Verification - 25th International Conference, CAV 2013, Saint Petersburg, Russia, July 13-19, 2013. Proceedings, Natasha Sharygina and Helmut Veith (Eds.) (Lecture Notes in Computer Science, Vol. 8044). Springer, 934–950. isbn:978-3-642-39798-1 https://doi.org/10.1007/978-3-642-39799-8_67 Google ScholarGoogle ScholarCross RefCross Ref
  4. Jesús Manuel Almendros-Jiménez and Germán Vidal. 2006. Automatic Partial Inversion of Inductively Sequential Functions. In Implementation and Application of Functional Languages, 18th International Symp osium, IFL 2006, Budapest, Hungary, September 4-6, 2006, Revised Selected Papers, Zoltán Horváth, Viktória Zsók, and Andrew Butterfield (Eds.) (Lecture Notes in Computer Science, Vol. 4449). Springer, 253–270. isbn:978-3-540-74129-9 https://doi.org/10.1007/978-3-540-74130-5_15 Google ScholarGoogle ScholarCross RefCross Ref
  5. François Bancilhon and Nicolas Spyratos. 1981. Update Semantics of Relational Views. ACM Trans. Database Syst., 6, 4 (1981), 557–575. https://doi.org/10.1145/319628.319634 Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. Aaron Bohannon, J. Nathan Foster, Benjamin C. Pierce, Alexandre Pilkiewicz, and Alan Schmitt. 2008. Boomerang: resourceful lenses for string data. In Proceedings of the 35th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, POPL 2008, San Francisco, California, USA, January 7-12, 2008, George C. Necula and Philip Wadler (Eds.). ACM, 407–419. https://doi.org/10.1145/1328438.1328487 Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. Nathan Chong, Byron Cook, Konstantinos Kallas, Kareem Khazem, Felipe R. Monteiro, Daniel Schwartz-Narbonne, Serdar Tasiran, Michael Tautschnig, and Mark R. Tuttle. 2020. Code-level model checking in the software development workflow. In ICSE-SEIP 2020: 42nd International Conference on Software Engineering, Software Engineering in Practice, Seoul, South Korea, 27 June - 19 July, 2020, Gregg Rothermel and Doo-Hwan Bae (Eds.). ACM, 11–20. https://doi.org/10.1145/3377813.3381347 Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. Cristina David, Pascal Kesseli, Daniel Kroening, and Matt Lewis. 2018. Program Synthesis for Program Analysis. ACM Trans. Program. Lang. Syst., 40, 2 (2018), 5:1–5:45. https://doi.org/10.1145/3174802 Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. Cristina David, Daniel Kroening, and Matt Lewis. 2015. Unrestricted Termination and Non-termination Arguments for Bit-Vector Programs. In Programming Languages and Systems - 24th European Symposium on Programming, ESOP 2015, Held as Part of the European Joint Conferences on Theory and Practice of Software, ETAPS 2015, London, UK, April 11-18, 2015. Proceedings, Jan Vitek (Ed.) (Lecture Notes in Computer Science, Vol. 9032). Springer, 183–204. https://doi.org/10.1007/978-3-662-46669-8_8 Google ScholarGoogle ScholarCross RefCross Ref
  10. Rowan Davies and Frank Pfenning. 2001. A modal analysis of staged computation. J. ACM, 48, 3 (2001), 555–604. https://doi.org/10.1145/382780.382785 Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. Maartje de Jonge and Eelco Visser. 2011. An Algorithm for Layout Preservation in Refactoring Transformations. In Software Language Engineering - 4th International Conference, SLE 2011, Braga, Portugal, July 3-4, 2011, Revised Selected Papers, Anthony M. Sloane and Uwe Aß mann (Eds.) (Lecture Notes in Computer Science, Vol. 6940). Springer, 40–59. isbn:978-3-642-28829-6 https://doi.org/10.1007/978-3-642-28830-2_3 Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. Yu Feng, Ruben Martins, Yuepeng Wang, Isil Dillig, and Thomas W. Reps. 2017. Component-based synthesis for complex APIs. In Proceedings of the 44th ACM SIGPLAN Symposium on Principles of Programming Languages, POPL 2017, Paris, France, January 18-20, 2017, Giuseppe Castagna and Andrew D. Gordon (Eds.). ACM, 599–612. http://dl.acm.org/citation.cfm?id=3009851Google ScholarGoogle Scholar
  13. John K. Feser, Swarat Chaudhuri, and Isil Dillig. 2015. Synthesizing data structure transformations from input-output examples. In Proceedings of the 36th ACM SIGPLAN Conference on Programming Language Design and Implementation, Portland, OR, USA, June 15-17, 2015, David Grove and Stephen M. Blackburn (Eds.). ACM, 229–239. https://doi.org/10.1145/2737924.2737977 Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. Sebastian Fischer, Oleg Kiselyov, and Chung-chieh Shan. 2011. Purely functional lazy nondeterministic programming. J. Funct. Program., 21, 4-5 (2011), 413–465. https://doi.org/10.1017/S0956796811000189 Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. J. Nathan Foster, Michael B. Greenwald, Jonathan T. Moore, Benjamin C. Pierce, and Alan Schmitt. 2007. Combinators for bidirectional tree transformations: A linguistic approach to the view-update problem. ACM Trans. Program. Lang. Syst., 29, 3 (2007), https://doi.org/10.1145/1232420.1232424 Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. J. Nathan Foster, Alexandre Pilkiewicz, and Benjamin C. Pierce. 2008. Quotient lenses. In Proceeding of the 13th ACM SIGPLAN international conference on Functional programming, ICFP 2008, Victoria, BC, Canada, September 20-28, 2008, James Hook and Peter Thiemann (Eds.). ACM, 383–396. isbn:978-1-59593-919-7 https://doi.org/10.1145/1411204.1411257 Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. Robert Glück and Masahiko Kawabe. 2005. Revisiting an automatic program inverter for Lisp. SIGPLAN Notices, 40, 5 (2005), 8–17.Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. Carsten K. Gomard and Neil D. Jones. 1991. A Partial Evaluator for the Untyped lambda-Calculus. J. Funct. Program., 1, 1 (1991), 21–69. https://doi.org/10.1017/S0956796800000058 Google ScholarGoogle ScholarCross RefCross Ref
  19. David Gries. 1981. The Science of Programming. Springer, Heidelberg.Google ScholarGoogle Scholar
  20. Sumit Gulwani. 2011. Automating string processing in spreadsheets using input-output examples. In Proceedings of the 38th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, POPL 2011, Austin, TX, USA, January 26-28, 2011, Thomas Ball and Mooly Sagiv (Eds.). ACM, 317–330. https://doi.org/10.1145/1926385.1926423 Google ScholarGoogle ScholarDigital LibraryDigital Library
  21. Stephen J. Hegner. 1990. Foundations of Canonical Update Support for Closed Database Views. In ICDT, Serge Abiteboul and Paris C. Kanellakis (Eds.) (Lecture Notes in Computer Science, Vol. 470). Springer, 422–436. isbn:3-540-53507-1 https://doi.org/10.1007/3-540-53507-1_93 Google ScholarGoogle ScholarCross RefCross Ref
  22. Martin Hofmann, Benjamin C. Pierce, and Daniel Wagner. 2011. Symmetric lenses. In Proceedings of the 38th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, POPL 2011, Austin, TX, USA, January 26-28, 2011, Thomas Ball and Mooly Sagiv (Eds.). ACM, 371–384. isbn:978-1-4503-0490-0 https://doi.org/10.1145/1926385.1926428 Google ScholarGoogle ScholarDigital LibraryDigital Library
  23. Zhenjiang Hu and Hsiang-Shang Ko. 2016. Principles and Practice of Bidirectional Programming in BiGUL. In Bidirectional Transformations - International Summer School, Oxford, UK, July 25-29, 2016, Tutorial Lectures, Jeremy Gibbons and Perdita Stevens (Eds.) (Lecture Notes in Computer Science, Vol. 9715). Springer, 100–150. isbn:978-3-319-79107-4 https://doi.org/10.1007/978-3-319-79108-1_4 Google ScholarGoogle ScholarCross RefCross Ref
  24. Susmit Jha, Sumit Gulwani, Sanjit A. Seshia, and Ashish Tiwari. 2010. Oracle-guided component-based program synthesis. In Proceedings of the 32nd ACM/IEEE International Conference on Software Engineering - Volume 1, ICSE 2010, Cape Town, South Africa, 1-8 May 2010, Jeff Kramer, Judith Bishop, Premkumar T. Devanbu, and Sebastián Uchitel (Eds.). ACM, 215–224. https://doi.org/10.1145/1806799.1806833 Google ScholarGoogle ScholarDigital LibraryDigital Library
  25. Susumu Katayama. 2005. Systematic search for lambda expressions. In Revised Selected Papers from the Sixth Symposium on Trends in Functional Programming, TFP 2005, Tallinn, Estonia, 23-24 September 2005, Marko C. J. D. van Eekelen (Ed.) (Trends in Functional Programming, Vol. 6). Intellect, 111–126.Google ScholarGoogle Scholar
  26. 2012. Proceedings of the ACM SIGPLAN 2012 Workshop on Partial Evaluation and Program Manipulation, PEPM 2012, Philadelphia, Pennsylvania, USA, January 23-24, 2012, Oleg Kiselyov and Simon J. Thompson (Eds.). ACM. isbn:978-1-4503-1118-2 http://dl.acm.org/citation.cfm?id=2103746Google ScholarGoogle Scholar
  27. Etienne Kneuss, Ivan Kuraj, Viktor Kuncak, and Philippe Suter. 2013. Synthesis modulo recursive functions. In Proceedings of the 2013 ACM SIGPLAN International Conference on Object Oriented Programming Systems Languages & Applications, OOPSLA 2013, part of SPLASH 2013, Indianapolis, IN, USA, October 26-31, 2013, Antony L. Hosking, Patrick Th. Eugster, and Cristina V. Lopes (Eds.). ACM, 407–426. https://doi.org/10.1145/2509136.2509555 Google ScholarGoogle ScholarDigital LibraryDigital Library
  28. Hsiang-Shang Ko, Tao Zan, and Zhenjiang Hu. 2016. BiGUL: a formally verified core language for putback-based bidirectional programming. In Proceedings of the 2016 ACM SIGPLAN Workshop on Partial Evaluation and Program Manipulation, PEPM 2016, St. Petersburg, FL, USA, January 20 - 22, 2016, Martin Erwig and Tiark Rompf (Eds.). ACM, 61–72. isbn:978-1-4503-4097-7 https://doi.org/10.1145/2847538.2847544 Google ScholarGoogle ScholarDigital LibraryDigital Library
  29. Richard E. Korf. 1981. Inversion of Applicative Programs. In IJCAI, Patrick J. Hayes (Ed.). William Kaufmann, 1007–1009.Google ScholarGoogle Scholar
  30. Jan Kort and Ralf Lämmel. 2003. Parse-Tree Annotations Meet Re-Engineering Concerns. In 3rd IEEE International Workshop on Source Code Analysis and Manipulation (SCAM 2003), 26-27 September 2003, Amsterdam, The Netherlands. IEEE Computer Society, 161. isbn:0-7695-2005-7 https://doi.org/10.1109/SCAM.2003.1238042 Google ScholarGoogle ScholarCross RefCross Ref
  31. Manos Koukoutos, Etienne Kneuss, and Viktor Kuncak. 2016. An Update on Deductive Synthesis and Repair in the Leon Tool. In Proceedings Fifth Workshop on Synthesis, [email protected] 2016, Toronto, Canada, July 17-18, 2016, Ruzica Piskac and Rayna Dimitrova (Eds.) (EPTCS, Vol. 229). 100–111. https://doi.org/10.4204/EPTCS.229.9 Google ScholarGoogle ScholarCross RefCross Ref
  32. Justin Lubin, Nick Collins, Cyrus Omar, and Ravi Chugh. 2020. Program sketching with live bidirectional evaluation. Proc. ACM Program. Lang., 4, ICFP (2020), 109:1–109:29. https://doi.org/10.1145/3408991 Google ScholarGoogle ScholarDigital LibraryDigital Library
  33. Christopher Lutz. 1986. Janus: a time-reversible language. Letter to R. Landauer. Available on: http://tetsuo.jp/ref/janus.pdfGoogle ScholarGoogle Scholar
  34. Solomon Maina, Anders Miltner, Kathleen Fisher, Benjamin C. Pierce, David Walker, and Steve Zdancewic. 2018. Synthesizing quotient lenses. Proc. ACM Program. Lang., 2, ICFP (2018), 80:1–80:29. https://doi.org/10.1145/3236775 Google ScholarGoogle ScholarDigital LibraryDigital Library
  35. Kazutaka Matsuda, Zhenjiang Hu, Keisuke Nakano, Makoto Hamana, and Masato Takeichi. 2007. Bidirectionalization transformation based on automatic derivation of view complement functions. In Proceedings of the 12th ACM SIGPLAN International Conference on Functional Programming, ICFP 2007, Freiburg, Germany, October 1-3, 2007, Ralf Hinze and Norman Ramsey (Eds.). ACM, 47–58. isbn:978-1-59593-815-2 https://doi.org/10.1145/1291151.1291162 Google ScholarGoogle ScholarDigital LibraryDigital Library
  36. Kazutaka Matsuda, Kazuhiro Inaba, and Keisuke Nakano. 2012. Polynomial-time inverse computation for accumulative functions with multiple data traversals. 5–14. isbn:978-1-4503-1118-2 https://doi.org/10.1145/2103746.2103752 Google ScholarGoogle ScholarDigital LibraryDigital Library
  37. Kazutaka Matsuda, Shin-Cheng Mu, Zhenjiang Hu, and Masato Takeichi. 2010. A Grammar-Based Approach to Invertible Programs. In ESOP, Andrew D. Gordon (Ed.) (Lecture Notes in Computer Science, Vol. 6012). Springer, 448–467. isbn:978-3-642-11956-9Google ScholarGoogle Scholar
  38. Kazutaka Matsuda and Meng Wang. 2015. Applicative bidirectional programming with lenses. In Proceedings of the 20th ACM SIGPLAN International Conference on Functional Programming, ICFP 2015, Vancouver, BC, Canada, September 1-3, 2015, Kathleen Fisher and John H. Reppy (Eds.). ACM, 62–74. isbn:978-1-4503-3669-7 https://doi.org/10.1145/2784731.2784750 Google ScholarGoogle ScholarDigital LibraryDigital Library
  39. Kazutaka Matsuda and Meng Wang. 2015. "Bidirectionalization for free" for monomorphic transformations. Sci. Comput. Program., 111 (2015), 79–109. https://doi.org/10.1016/j.scico.2014.07.008 Google ScholarGoogle ScholarDigital LibraryDigital Library
  40. Kazutaka Matsuda and Meng Wang. 2018. Applicative bidirectional programming: Mixing lenses and semantic bidirectionalization. J. Funct. Program., 28 (2018), e15. https://doi.org/10.1017/S0956796818000096 Google ScholarGoogle ScholarCross RefCross Ref
  41. Kazutaka Matsuda and Meng Wang. 2018. HOBiT: Programming Lenses Without Using Lens Combinators. In Programming Languages and Systems - 27th European Symposium on Programming, ESOP 2018, Held as Part of the European Joint Conferences on Theory and Practice of Software, ETAPS 2018, Thessaloniki, Greece, April 14-20, 2018, Proceedings, Amal Ahmed (Ed.) (Lecture Notes in Computer Science, Vol. 10801). Springer, 31–59. https://doi.org/10.1007/978-3-319-89884-1_2 Google ScholarGoogle ScholarCross RefCross Ref
  42. Kazutaka Matsuda and Meng Wang. 2020. Sparcl: a language for partially-invertible computation. Proc. ACM Program. Lang., 4, ICFP (2020), 118:1–118:31. https://doi.org/10.1145/3409000 Google ScholarGoogle ScholarDigital LibraryDigital Library
  43. Anders Miltner, Kathleen Fisher, Benjamin C. Pierce, David Walker, and Steve Zdancewic. 2018. Synthesizing bijective lenses. Proc. ACM Program. Lang., 2, POPL (2018), 1:1–1:30. https://doi.org/10.1145/3158089 Google ScholarGoogle ScholarDigital LibraryDigital Library
  44. Anders Miltner, Solomon Maina, Kathleen Fisher, Benjamin C. Pierce, David Walker, and Steve Zdancewic. 2019. Synthesizing symmetric lenses. Proc. ACM Program. Lang., 3, ICFP (2019), 95:1–95:28. https://doi.org/10.1145/3341699 Google ScholarGoogle ScholarDigital LibraryDigital Library
  45. Naoki Nishida, Masahiko Sakai, and Toshiki Sakabe. 2005. Partial Inversion of Constructor Term Rewriting Systems. In Term Rewriting and Applications, 16th International Conference, RTA 2005, Nara, Japan, April 19-21, 2005, Proceedings, Jürgen Giesl (Ed.) (Lecture Notes in Computer Science, Vol. 3467). Springer, 264–278. isbn:3-540-25596-6 https://doi.org/10.1007/978-3-540-32033-3_20 Google ScholarGoogle ScholarDigital LibraryDigital Library
  46. Naoki Nishida and Germán Vidal. 2011. Program Inversion for Tail Recursive Functions. In Proceedings of the 22nd International Conference on Rewriting Techniques and Applications, RTA 2011, May 30 - June 1, 2011, Novi Sad, Serbia, Manfred Schmidt-Schauß (Ed.) (LIPIcs, Vol. 10). Schloss Dagstuhl - Leibniz-Zentrum für Informatik, 283–298. isbn:978-3-939897-30-9 https://doi.org/10.4230/LIPIcs.RTA.2011.283 Google ScholarGoogle ScholarCross RefCross Ref
  47. Peter-Michael Osera and Steve Zdancewic. 2015. Type-and-example-directed program synthesis. In Proceedings of the 36th ACM SIGPLAN Conference on Programming Language Design and Implementation, Portland, OR, USA, June 15-17, 2015, David Grove and Stephen M. Blackburn (Eds.). ACM, 619–630. https://doi.org/10.1145/2737924.2738007 Google ScholarGoogle ScholarDigital LibraryDigital Library
  48. Hugo Pacheco, Zhenjiang Hu, and Sebastian Fischer. 2014. Monadic combinators for "Putback" style bidirectional programming. In Proceedings of the ACM SIGPLAN 2014 workshop on Partial evaluation and program manipulation, PEPM 2014, January 20-21, 2014, San Diego, California, USA, Wei-Ngan Chin and Jurriaan Hage (Eds.). ACM, 39–50. isbn:978-1-4503-2619-3 https://doi.org/10.1145/2543728.2543737 Google ScholarGoogle ScholarDigital LibraryDigital Library
  49. Justin Pombrio and Shriram Krishnamurthi. 2014. Resugaring: lifting evaluation sequences through syntactic sugar. In ACM SIGPLAN Conference on Programming Language Design and Implementation, PLDI ’14, Edinburgh, United Kingdom - June 09 - 11, 2014, Michael F. P. O’Boyle and Keshav Pingali (Eds.). ACM, 361–371. isbn:978-1-4503-2784-8 https://doi.org/10.1145/2594291.2594319 Google ScholarGoogle ScholarDigital LibraryDigital Library
  50. John C. Reynolds. 1983. Types, Abstraction and Parametric Polymorphism. In Information Processing 83, Proceedings of the IFIP 9th World Computer Congress, Paris, France, September 19-23, 1983, R. E. A. Mason (Ed.). North-Holland/IFIP, 513–523. isbn:0-444-86729-5Google ScholarGoogle Scholar
  51. Calvin Smith and Aws Albarghouthi. 2019. Program Synthesis with Equivalence Reduction. In Verification, Model Checking, and Abstract Interpretation - 20th International Conference, VMCAI 2019, Cascais, Portugal, January 13-15, 2019, Proceedings, Constantin Enea and Ruzica Piskac (Eds.) (Lecture Notes in Computer Science, Vol. 11388). Springer, 24–47. https://doi.org/10.1007/978-3-030-11245-5_2 Google ScholarGoogle ScholarCross RefCross Ref
  52. Armando Solar-Lezama. 2009. The Sketching Approach to Program Synthesis. In Programming Languages and Systems, 7th Asian Symposium, APLAS 2009, Seoul, Korea, December 14-16, 2009. Proceedings, Zhenjiang Hu (Ed.) (Lecture Notes in Computer Science, Vol. 5904). Springer, 4–13. https://doi.org/10.1007/978-3-642-10672-9_3 Google ScholarGoogle ScholarDigital LibraryDigital Library
  53. Armando Solar-Lezama, Christopher Grant Jones, and Rastislav Bodík. 2008. Sketching concurrent data structures. In PLDI. 136–148. https://doi.org/10.1145/1375581.1375599 Google ScholarGoogle ScholarDigital LibraryDigital Library
  54. Saurabh Srivastava, Sumit Gulwani, Swarat Chaudhuri, and Jeffrey S. Foster. 2011. Path-based inductive synthesis for program inversion. In Proceedings of the 32nd ACM SIGPLAN Conference on Programming Language Design and Implementation, PLDI 2011, San Jose, CA, USA, June 4-8, 2011, Mary W. Hall and David A. Padua (Eds.). ACM, 492–503. isbn:978-1-4503-0663-8 https://doi.org/10.1145/1993498.1993557 Google ScholarGoogle ScholarDigital LibraryDigital Library
  55. Perdita Stevens. 2008. A Landscape of Bidirectional Model Transformations. Springer Berlin Heidelberg, Berlin, Heidelberg. 408–424. isbn:978-3-540-88643-3 https://doi.org/10.1007/978-3-540-88643-3_10 Google ScholarGoogle ScholarDigital LibraryDigital Library
  56. Janis Voigtländer. 2009. Bidirectionalization for Free! (Pearl). In Proceedings of the 36th Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL ’09). Association for Computing Machinery, New York, NY, USA. 165–176. isbn:9781605583792 https://doi.org/10.1145/1480881.1480904 Google ScholarGoogle ScholarDigital LibraryDigital Library
  57. Janis Voigtländer. 2009. Bidirectionalization for free! (Pearl). In Proceedings of the 36th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, POPL 2009, Savannah, GA, USA, January 21-23, 2009, Zhong Shao and Benjamin C. Pierce (Eds.). ACM, 165–176. isbn:978-1-60558-379-2 https://doi.org/10.1145/1480881.1480904 Google ScholarGoogle ScholarDigital LibraryDigital Library
  58. Janis Voigtländer. 2012. Ideas for connecting inductive program synthesis and bidirectionalization. 39–42. isbn:978-1-4503-1118-2 https://doi.org/10.1145/2103746.2103757 Google ScholarGoogle ScholarDigital LibraryDigital Library
  59. Janis Voigtländer, Zhenjiang Hu, Kazutaka Matsuda, and Meng Wang. 2013. Enhancing semantic bidirectionalization via shape bidirectionalizer plug-ins. J. Funct. Program., 23, 5 (2013), 515–551. https://doi.org/10.1017/S0956796813000130 Google ScholarGoogle ScholarCross RefCross Ref
  60. Philip Wadler. 1989. Theorems for Free!. In Proceedings of the fourth international conference on Functional programming languages and computer architecture, FPCA 1989, London, UK, September 11-13, 1989, Joseph E. Stoy (Ed.). ACM, 347–359. isbn:0-201-51389-7 https://doi.org/10.1145/99370.99404 Google ScholarGoogle ScholarDigital LibraryDigital Library
  61. Philip Wadler. 1990. Deforestation: Transforming Programs to Eliminate Trees. Theor. Comput. Sci., 73, 2 (1990), 231–248. https://doi.org/10.1016/0304-3975(90)90147-A Google ScholarGoogle ScholarDigital LibraryDigital Library
  62. Masaomi Yamaguchi, Kazutaka Matsuda, Cristina David, and Meng Wang. 2021. Synbit: Synthesizing Bidirectional Programs using Unidirectional Sketches. CoRR, abs/2108.13783 (2021), arXiv:2108.13783. arxiv:2108.13783Google ScholarGoogle Scholar
  63. Tetsuo Yokoyama, Holger Bock Axelsen, and Robert Glück. 2008. Principles of a reversible programming language. In Proceedings of the 5th Conference on Computing Frontiers, 2008, Ischia, Italy, May 5-7, 2008, Alex Ramírez, Gianfranco Bilardi, and Michael Gschwind (Eds.). ACM, 43–54. isbn:978-1-60558-077-7 https://doi.org/10.1145/1366230.1366239 Google ScholarGoogle ScholarDigital LibraryDigital Library
  64. Tetsuo Yokoyama, Holger Bock Axelsen, and Robert Glück. 2011. Towards a Reversible Functional Language. In RC, Alexis De Vos and Robert Wille (Eds.) (Lecture Notes in Computer Science, Vol. 7165). Springer, 14–29. isbn:978-3-642-29516-4 https://doi.org/10.1007/978-3-642-29517-1_2 Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. Synbit: synthesizing bidirectional programs using unidirectional sketches

        Recommendations

        Comments

        Login options

        Check if you have access through your login credentials or your institution to get full access on this article.

        Sign in

        Full Access

        • Article Metrics

          • Downloads (Last 12 months)74
          • Downloads (Last 6 weeks)8

          Other Metrics

        PDF Format

        View or Download as a PDF file.

        PDF

        eReader

        View online with eReader.

        eReader
        About Cookies On This Site

        We use cookies to ensure that we give you the best experience on our website.

        Learn more

        Got it!