{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2025,10,16]],"date-time":"2025-10-16T03:57:26Z","timestamp":1760587046422,"version":"3.41.0"},"reference-count":56,"publisher":"Association for Computing Machinery (ACM)","issue":"OOPSLA","license":[{"start":{"date-parts":[[2020,11,13]],"date-time":"2020-11-13T00:00:00Z","timestamp":1605225600000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/creativecommons.org\/licenses\/by\/4.0\/"}],"content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":["Proc. ACM Program. Lang."],"published-print":{"date-parts":[[2020,11,13]]},"abstract":"<jats:p>While editing code, it is common for developers to make multiple related repeated edits that are all instances of a more general program transformation. Since this process can be tedious and error-prone, we study the problem of automatically learning program transformations from past edits, which can then be used to predict future edits. We take a novel view of the problem as a semi-supervised learning problem: apart from the concrete edits that are instances of the general transformation, the learning procedure also exploits access to additional inputs (program subtrees) that are marked as positive or negative depending on whether the transformation applies on those inputs. We present a procedure to solve the semi-supervised transformation learning problem using anti-unification and programming-by-example synthesis technology. To eliminate reliance on access to marked additional inputs, we generalize the semi-supervised learning procedure to a feedback-driven procedure that also generates the marked additional inputs in an iterative loop. We apply these ideas to build and evaluate three applications that use different mechanisms for generating feedback. Compared to existing tools that learn program transformations from edits, our feedback-driven semi-supervised approach is vastly more effective in successfully predicting edits with significantly lesser amounts of past edit data.<\/jats:p>","DOI":"10.1145\/3428287","type":"journal-article","created":{"date-parts":[[2020,11,24]],"date-time":"2020-11-24T23:36:06Z","timestamp":1606260966000},"page":"1-30","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":17,"title":["Feedback-driven semi-supervised synthesis of program transformations"],"prefix":"10.1145","volume":"4","author":[{"given":"Xiang","family":"Gao","sequence":"first","affiliation":[{"name":"National University of Singapore, Singapore"}]},{"given":"Shraddha","family":"Barke","sequence":"additional","affiliation":[{"name":"University of California at San Diego, USA"}]},{"given":"Arjun","family":"Radhakrishna","sequence":"additional","affiliation":[{"name":"Microsoft, USA"}]},{"given":"Gustavo","family":"Soares","sequence":"additional","affiliation":[{"name":"Microsoft, USA"}]},{"given":"Sumit","family":"Gulwani","sequence":"additional","affiliation":[{"name":"Microsoft, USA"}]},{"given":"Alan","family":"Leung","sequence":"additional","affiliation":[{"name":"Microsoft, USA"}]},{"given":"Nachiappan","family":"Nagappan","sequence":"additional","affiliation":[{"name":"Microsoft Research, USA"}]},{"given":"Ashish","family":"Tiwari","sequence":"additional","affiliation":[{"name":"Microsoft, USA"}]}],"member":"320","published-online":{"date-parts":[[2020,11,13]]},"reference":[{"key":"e_1_2_2_1_1","doi-asserted-by":"publisher","DOI":"10.1109\/FMCAD.2013.6679385"},{"key":"e_1_2_2_2_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-319-13338-6_7"},{"key":"e_1_2_2_3_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-319-21668-3_10"},{"key":"e_1_2_2_4_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-662-54577-5_18"},{"key":"e_1_2_2_5_1","first-page":"1","volume":"4","author":"An S.","year":"2019","unstructured":"S. An , R. Singh , S. Misailovic , and R. Samanta . Augmented example-based synthesis using relational perturbation properties. Proceedings of the ACM on Programming Languages , 4 (POPL): 1 - 24 , 2019 . S. An, R. Singh, S. Misailovic, and R. Samanta. Augmented example-based synthesis using relational perturbation properties. Proceedings of the ACM on Programming Languages, 4 (POPL): 1-24, 2019.","journal-title":"Augmented example-based synthesis using relational perturbation properties. Proceedings of the ACM on Programming Languages"},{"key":"e_1_2_2_6_1","doi-asserted-by":"publisher","DOI":"10.1145\/3360585"},{"key":"e_1_2_2_7_1","doi-asserted-by":"publisher","DOI":"10.1145\/1646353.1646374"},{"key":"e_1_2_2_8_1","doi-asserted-by":"publisher","DOI":"10.1090\/S0002-9947-1969-0280205-0"},{"key":"e_1_2_2_9_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-642-22110-1_20"},{"key":"e_1_2_2_10_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-642-39799-8_68"},{"key":"e_1_2_2_11_1","volume-title":"At https:\/\/www.eclipse.org\/","author":"Foundation Eclipse","year":"2020","unstructured":"Eclipse Foundation . Eclipse. At https:\/\/www.eclipse.org\/ , 2020 . Eclipse Foundation. Eclipse. At https:\/\/www.eclipse.org\/, 2020."},{"key":"e_1_2_2_12_1","doi-asserted-by":"publisher","DOI":"10.1007\/s11219-009-9074-y"},{"key":"e_1_2_2_13_1","doi-asserted-by":"publisher","DOI":"10.1145\/2737924.2737977"},{"key":"e_1_2_2_14_1","doi-asserted-by":"publisher","DOI":"10.1145\/2837614.2837629"},{"key":"e_1_2_2_15_1","doi-asserted-by":"publisher","DOI":"10.1145\/1926385.1926423"},{"key":"e_1_2_2_16_1","doi-asserted-by":"publisher","DOI":"10.1145\/2491956.2462192"},{"key":"e_1_2_2_17_1","doi-asserted-by":"publisher","DOI":"10.1145\/3385412.3386027"},{"key":"e_1_2_2_18_1","volume-title":"At https:\/\/www.jetbrains.com\/idea\/","author":"J.","year":"2020","unstructured":"JetBrains. Intelli J. At https:\/\/www.jetbrains.com\/idea\/ , 2020 a. JetBrains. IntelliJ. At https:\/\/www.jetbrains.com\/idea\/, 2020a."},{"volume-title":"At https:\/\/www.jetbrains.com\/resharper\/","year":"2020","key":"e_1_2_2_19_1","unstructured":"JetBrains. ReSharper. At https:\/\/www.jetbrains.com\/resharper\/ , 2020 b. JetBrains. ReSharper. At https:\/\/www.jetbrains.com\/resharper\/, 2020b."},{"key":"e_1_2_2_20_1","doi-asserted-by":"publisher","DOI":"10.1145\/1806799.1806833"},{"key":"e_1_2_2_21_1","doi-asserted-by":"publisher","DOI":"10.1109\/ICSE.2007.30"},{"key":"e_1_2_2_22_1","doi-asserted-by":"publisher","DOI":"10.1145\/2393596.2393655"},{"key":"e_1_2_2_23_1","volume-title":"Interactive program synthesis. arXiv preprint arXiv:1703.03539","author":"Le V.","year":"2017","unstructured":"V. Le , D. Perelman , O. Polozov , M. Raza , A. Udupa , and S. Gulwani . Interactive program synthesis. arXiv preprint arXiv:1703.03539 , 2017 . V. Le, D. Perelman, O. Polozov, M. Raza, A. Udupa, and S. Gulwani. Interactive program synthesis. arXiv preprint arXiv:1703.03539, 2017."},{"key":"e_1_2_2_24_1","doi-asserted-by":"publisher","DOI":"10.1145\/357084.357090"},{"key":"e_1_2_2_25_1","doi-asserted-by":"publisher","DOI":"10.1145\/2807442.2807459"},{"key":"e_1_2_2_26_1","volume-title":"Systematic editing: generating program transformations from an example. ACM SIGPLAN Notices, 46 ( 6 ): 329-342","author":"Meng N.","year":"2011","unstructured":"N. Meng , M. Kim , and K. S. McKinley . Systematic editing: generating program transformations from an example. ACM SIGPLAN Notices, 46 ( 6 ): 329-342 , 2011 . N. Meng, M. Kim, and K. S. McKinley. Systematic editing: generating program transformations from an example. ACM SIGPLAN Notices, 46 ( 6 ): 329-342, 2011."},{"key":"e_1_2_2_27_1","doi-asserted-by":"publisher","DOI":"10.5555\/2486788.2486855"},{"key":"e_1_2_2_28_1","doi-asserted-by":"publisher","DOI":"10.1109\/TSE.2004.1265817"},{"key":"e_1_2_2_29_1","volume-title":"At https:\/\/www.visualstudio.com","author":"Studio Visual","year":"2019","unstructured":"Microsoft. Visual Studio . At https:\/\/www.visualstudio.com , 2019 . Microsoft. Visual Studio. At https:\/\/www.visualstudio.com, 2019."},{"volume-title":"Intellicode suggestions. At https:\/\/docs.microsoft.com\/en-us\/visualstudio\/intellicode\/intellicode-suggestions","year":"2020","key":"e_1_2_2_30_1","unstructured":"Microsoft. Intellicode suggestions. At https:\/\/docs.microsoft.com\/en-us\/visualstudio\/intellicode\/intellicode-suggestions , 2020 . Microsoft. Intellicode suggestions. At https:\/\/docs.microsoft.com\/en-us\/visualstudio\/intellicode\/intellicode-suggestions, 2020."},{"key":"e_1_2_2_31_1","first-page":"1","volume":"3","author":"Miltner A.","year":"2019","unstructured":"A. Miltner , S. Gulwani , V. Le , A. Leung , A. Radhakrishna , G. Soares , A. Tiwari , and A. Udupa . On the fly synthesis of edit suggestions. Proceedings of the ACM on Programming Languages , 3 (OOPSLA): 1 - 29 , 2019 . A. Miltner, S. Gulwani, V. Le, A. Leung, A. Radhakrishna, G. Soares, A. Tiwari, and A. Udupa. On the fly synthesis of edit suggestions. Proceedings of the ACM on Programming Languages, 3 (OOPSLA): 1-29, 2019.","journal-title":"On the fly synthesis of edit suggestions. Proceedings of the ACM on Programming Languages"},{"key":"e_1_2_2_32_1","volume-title":"Generalization as search. Artificial intelligence, 18 ( 2 ): 203-226","author":"Mitchell T. M.","year":"1982","unstructured":"T. M. Mitchell . Generalization as search. Artificial intelligence, 18 ( 2 ): 203-226 , 1982 . T. M. Mitchell. Generalization as search. Artificial intelligence, 18 ( 2 ): 203-226, 1982."},{"key":"e_1_2_2_33_1","doi-asserted-by":"publisher","DOI":"10.1109\/ASE.2013.6693078"},{"key":"e_1_2_2_35_1","doi-asserted-by":"publisher","DOI":"10.1145\/2254064.2254098"},{"key":"e_1_2_2_36_1","doi-asserted-by":"publisher","DOI":"10.1145\/75277.75293"},{"key":"e_1_2_2_37_1","doi-asserted-by":"publisher","DOI":"10.1145\/2814270.2814310"},{"key":"e_1_2_2_38_1","doi-asserted-by":"publisher","DOI":"10.1145\/2594291.2594321"},{"key":"e_1_2_2_39_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-319-21668-3_12"},{"key":"e_1_2_2_40_1","doi-asserted-by":"publisher","DOI":"10.1109\/ICSE.2017.44"},{"key":"e_1_2_2_41_1","volume-title":"Learning quick fixes from code repositories","author":"Rolim R.","year":"2018","unstructured":"R. Rolim , G. Soares , R. Gheyi , T. Barik , and L. D'Antoni . Learning quick fixes from code repositories , 2018 . R. Rolim, G. Soares, R. Gheyi, T. Barik, and L. D'Antoni. Learning quick fixes from code repositories, 2018."},{"key":"e_1_2_2_42_1","doi-asserted-by":"publisher","DOI":"10.14778\/2977797.2977807"},{"key":"e_1_2_2_43_1","doi-asserted-by":"publisher","DOI":"10.1145\/2025113.2025153"},{"key":"e_1_2_2_44_1","doi-asserted-by":"publisher","DOI":"10.1145\/1065010.1065045"},{"key":"e_1_2_2_45_1","doi-asserted-by":"publisher","DOI":"10.1145\/1168857.1168907"},{"key":"e_1_2_2_46_1","doi-asserted-by":"publisher","DOI":"10.1145\/1168857.1168907"},{"key":"e_1_2_2_47_1","doi-asserted-by":"publisher","DOI":"10.1145\/1250734.1250754"},{"key":"e_1_2_2_48_1","doi-asserted-by":"publisher","DOI":"10.1145\/1375581.1375599"},{"key":"e_1_2_2_49_1","doi-asserted-by":"publisher","DOI":"10.1145\/2351676.2351726"},{"key":"e_1_2_2_50_1","volume-title":"Transit: specifying protocols with concolic snippets. ACM SIGPLAN Notices, 48 ( 6 ):  287-296","author":"Udupa A.","year":"2013","unstructured":"A. Udupa , A. Raghavan , J. V. Deshmukh , S. Mador-Haim , M. M. Martin , and R. Alur . Transit: specifying protocols with concolic snippets. ACM SIGPLAN Notices, 48 ( 6 ): 287-296 , 2013 . A. Udupa, A. Raghavan, J. V. Deshmukh, S. Mador-Haim, M. M. Martin, and R. Alur. Transit: specifying protocols with concolic snippets. ACM SIGPLAN Notices, 48 ( 6 ): 287-296, 2013."},{"key":"e_1_2_2_51_1","doi-asserted-by":"publisher","DOI":"10.1109\/ICSE.2012.6227190"},{"key":"e_1_2_2_52_1","doi-asserted-by":"publisher","DOI":"10.1145\/1706299.1706338"},{"key":"e_1_2_2_53_1","doi-asserted-by":"publisher","DOI":"10.1145\/3187009.3177735"},{"key":"e_1_2_2_54_1","volume-title":"Data-driven synthesis for object-oriented frameworks. ACM SIGPLAN Notices, 46 ( 10 ): 65-82","author":"Yessenov K.","year":"2011","unstructured":"K. Yessenov , Z. Xu , and A. Solar-Lezama . Data-driven synthesis for object-oriented frameworks. ACM SIGPLAN Notices, 46 ( 10 ): 65-82 , 2011 . K. Yessenov, Z. Xu, and A. Solar-Lezama. Data-driven synthesis for object-oriented frameworks. ACM SIGPLAN Notices, 46 ( 10 ): 65-82, 2011."},{"key":"e_1_2_2_55_1","doi-asserted-by":"publisher","DOI":"10.1145\/2950290.2983955"},{"key":"e_1_2_2_56_1","volume-title":"Introduction to semi-supervised learning. Synthesis lectures on artificial intelligence and machine learning, 3 ( 1 ):  1-130","author":"Zhu X.","year":"2009","unstructured":"X. Zhu and A. B. Goldberg . Introduction to semi-supervised learning. Synthesis lectures on artificial intelligence and machine learning, 3 ( 1 ): 1-130 , 2009 . X. Zhu and A. B. Goldberg. Introduction to semi-supervised learning. Synthesis lectures on artificial intelligence and machine learning, 3 ( 1 ): 1-130, 2009."},{"key":"e_1_2_2_57_1","volume-title":"Technical report","author":"Zhu X. J.","year":"2005","unstructured":"X. J. Zhu . Semi-supervised learning literature survey. Technical report , University of Wisconsin-Madison Department of Computer Sciences , 2005 . X. J. Zhu. Semi-supervised learning literature survey. Technical report, University of Wisconsin-Madison Department of Computer Sciences, 2005."}],"container-title":["Proceedings of the ACM on Programming Languages"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3428287","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3428287","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,6,17]],"date-time":"2025-06-17T22:02:58Z","timestamp":1750197778000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3428287"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2020,11,13]]},"references-count":56,"journal-issue":{"issue":"OOPSLA","published-print":{"date-parts":[[2020,11,13]]}},"alternative-id":["10.1145\/3428287"],"URL":"https:\/\/doi.org\/10.1145\/3428287","relation":{},"ISSN":["2475-1421"],"issn-type":[{"type":"electronic","value":"2475-1421"}],"subject":[],"published":{"date-parts":[[2020,11,13]]},"assertion":[{"value":"2020-11-13","order":2,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}