{"id":361034,"date":"2017-02-02T13:37:27","date_gmt":"2017-02-02T21:37:27","guid":{"rendered":"https:\/\/www.microsoft.com\/en-us\/research\/?post_type=msr-project&#038;p=361034"},"modified":"2020-01-24T08:27:25","modified_gmt":"2020-01-24T16:27:25","slug":"program-synthesis","status":"publish","type":"msr-project","link":"https:\/\/www.microsoft.com\/en-us\/research\/project\/program-synthesis\/","title":{"rendered":"Program Synthesis"},"content":{"rendered":"<h1>Introduction<\/h1>\n<p>Program synthesis is the task of automatically discovering an executable piece of code given user intent expressed using various forms of constraints such as input-output examples, demonstrations, natural language, etc. Program synthesis has direct applications for various classes of users in the technology pyramid:<\/p>\n<ul>\n<li>(100s of millions of) <b>End Users<\/b> (people who have access to a computational device but are not expert programmers): Helping them to create small snippets of code for performing repetitive tasks, simple data manipulation. In other words, enabling them to <i>bring their creativity to life!<\/i><\/li>\n<li>(Billions of) <b>Students and Teachers<\/b>: Intelligent tutoring systems (<a href=\"https:\/\/www.microsoft.com\/en-us\/research\/publication\/example-based-learning-computer-aided-stem-education\/\">pdf<\/a>, <a href=\"https:\/\/www.microsoft.com\/en-us\/research\/video\/synthesis-for-education\/\">video<\/a>) that support <b><i>solution generation<\/i><\/b> (the step-by-step solution to a problem is like a program! <a href=\"https:\/\/www.microsoft.com\/en-us\/research\/publication\/synthesizing-geometry-constructions\/\">PLDI 2011<\/a>, <a href=\"https:\/\/www.microsoft.com\/en-us\/research\/publication\/automatically-generating-problems-solutions-natural-deduction\/\">IJCAI 2013b<\/a>), <b><i>problem generation<\/i><\/b> (of a certain difficulty level and that exercises use of certain concepts <a href=\"https:\/\/www.microsoft.com\/en-us\/research\/publication\/synthesis-geometry-proof-problems\/\">AAAI 2014<\/a>, <a href=\"https:\/\/www.microsoft.com\/en-us\/research\/publication\/automatically-generating-problems-solutions-natural-deduction\/\">IJCAI 2013b<\/a>, <a href=\"https:\/\/www.microsoft.com\/en-us\/research\/publication\/trace-based-framework-analyzing-synthesizing-educational-progressions\/\">CHI 2013<\/a>, <a href=\"https:\/\/www.microsoft.com\/en-us\/research\/publication\/automatically-generating-algebra-problems\/\">AAAI 2012<\/a>, <a href=\"https:\/\/www.microsoft.com\/en-us\/research\/publication\/automatic-generation-alternative-starting-positions-simple-traditional-board-games\/\">AAAI 2015<\/a>), <b><i>automated grading<\/i><\/b> (<a href=\"https:\/\/www.microsoft.com\/en-us\/research\/publication\/automated-feedback-generation-for-introductory-programming-assignments\/\">PLDI 2013<\/a>, <a href=\"https:\/\/www.microsoft.com\/en-us\/research\/publication\/automated-grading-dfa-constructions\/\">IJCAI 2013a<\/a>) , and <b><i>digital content creation<\/i><\/b> (<a href=\"https:\/\/www.microsoft.com\/en-us\/research\/publication\/quickdraw-improving-drawing-experience-geometric-diagrams\/?from=http%3A%2F%2Fresearch.microsoft.com%2Fen-us%2Fum%2Fpeople%2Fsumitg%2Fpubs%2Fchi12.pdf#\">CHI 2012<\/a>). Interestingly, all of these activities can be phrased as program synthesis problems.<\/li>\n<li><b>Software Developers<\/b>: Help synthesize mundane pieces of code.<\/li>\n<li><b>Algorithm Designers<\/b>: Help discover new algorithms<\/li>\n<\/ul>\n<p>Recent advances in AI-style search techniques and formal reasoning techniques based on SAT\/SMT solvers have made it possible to efficiently synthesize small programs. I strongly believe that the program synthesis technology is now set to create the next revolution in computing. And hence I spend most of my time working in this area: &#8220;devHIeloping new program synthesis techniques and incorporating them into easy-to-use tools&#8221; with the goal of democratizing effective use of computational devices, thereby enabling people to bring their creativity to life!<\/p>\n<h2>Selected Invited Talks<\/h2>\n<ul>\n<li><a href=\"https:\/\/www.microsoft.com\/en-us\/research\/publication\/example-based-learning-computer-aided-stem-education\/\"><i>Example-based Learning in Computer-Aided STEM Education<\/i><\/a>, Conference on <i>Technology for Education<\/i>, Dec 2013<\/li>\n<li><i>Program Synthesis<\/i>, Lectures at Marktoberdorf Summer School, August 2013<\/li>\n<li><i>Synthesis for Computer-aided Education<\/i>, ExCAPE Summer School, Jun 2013<\/li>\n<li><i>Synthesis for Intelligent Tutoring Systems<\/i> [<a href=\"https:\/\/www.microsoft.com\/en-us\/research\/video\/synthesis-for-education\/?from=http%3A%2F%2Fresearch.microsoft.com%2Fapps%2Fvideo%2Fdefault.aspx%3Fid%3D179951#\">video<\/a>], ExCAPE Webinar Series, Jan 2013<\/li>\n<li><a href=\"https:\/\/www.microsoft.com\/en-us\/research\/publication\/applications-program-synthesis-end-user-programming-intelligent-tutoring-systems\/\"><i>End User Programming and Intelligent Tutoring Systems<\/i><\/a>, Distinguished Lecture Series at UC-Berkeley, Fall 2012<\/li>\n<li><a href=\"https:\/\/www.microsoft.com\/en-us\/research\/publication\/synthesis-examples-interaction-models-algorithms\/\"><i>Synthesis from Examples: Interaction Models and Algorithms<\/i><\/a>, Invited Talk at SYNASC 2012<\/li>\n<li><a href=\"https:\/\/www.microsoft.com\/en-us\/research\/publication\/dimensions-program-synthesis\/\"><i>Dimensions in Synthesis<\/i><\/a>, Lectures at Summer School on Formal Methods 2012<\/li>\n<li><a href=\"https:\/\/www.microsoft.com\/en-us\/research\/publication\/synthesis-from-examples\/\"><i>Synthesis from Examples<\/i><\/a>, Keynote at WAMBSE 2012<\/li>\n<li><a href=\"https:\/\/www.microsoft.com\/en-us\/research\/publication\/applications-program-synthesis-end-user-programming-intelligent-tutoring-systems\/\"><i>Program Synthesis for Automating End-user Programming and Education<\/i><\/a>, Keynote at AVM\/RiSE Meeting 2011<\/li>\n<li><i>Usable Synthesis<\/i>, Short Invited talk at UV 2010<\/li>\n<li><a href=\"https:\/\/www.microsoft.com\/en-us\/research\/publication\/dimensions-program-synthesis\/\"><i>Dimensions in Program Synthesis<\/i><\/a>, Invited Tutorial at FMCAD 2010<\/li>\n<li><i>Program Synthesis for Automating Education<\/i>, Keynote at AVM 2010<\/li>\n<li><a href=\"https:\/\/www.microsoft.com\/en-us\/research\/publication\/dimensions-program-synthesis\/\"><i>Dimensions in Program Synthesis<\/i><\/a>, Invited Talk at PPDP 2010<\/li>\n<li><i>Component Based Synthesis<\/i>, Dagstuhl Seminar on Software Synthesis (December 2009)<\/li>\n<\/ul>\n<h3><b>Dimensions in Program Synthesis [<\/b><a href=\"https:\/\/www.microsoft.com\/en-us\/research\/publication\/dimensions-program-synthesis\/\"><b>PPDP 2010<\/b><\/a><b>]<\/b><\/h3>\n<table style=\"border-color: #000000; height: 398px; border-collapse: separate; border-spacing: 2px;\" border=\"1\" width=\"100%\" cellspacing=\"2\" cellpadding=\"3\">\n<tbody>\n<tr>\n<td style=\"padding: 3px; border: 1px solid;\"><strong> Application<\/strong><\/td>\n<td style=\"padding: 3px; border: 1px solid;\"><strong> Target User<\/strong><\/td>\n<td style=\"padding: 3px; border: 1px solid;\"><strong> User Intent<\/strong><\/td>\n<td style=\"padding: 3px; border: 1px solid;\"><strong> Search Technique<\/strong><\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 3px; border: 1px solid;\">Web Search Strategies [<a href=\"https:\/\/www.microsoft.com\/en-us\/research\/publication\/laseweb-automating-search-strategies-semi-structured-web-data\/\">KDD 2014<\/a>]<\/td>\n<td style=\"padding: 3px; border: 1px solid;\">End Users<\/td>\n<td style=\"padding: 3px; border: 1px solid;\">Logic<\/td>\n<td style=\"padding: 3px; border: 1px solid;\">Natural Language Processing + Implicit Table Inference<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 3px; border: 1px solid;\">Spreadsheet Formulas [<a href=\"https:\/\/www.microsoft.com\/en-us\/research\/publication\/nlyze-interactive-programming-natural-language-spreadsheet-data-analysis-manipulation\/\">SIGMOD 2014<\/a>]<\/td>\n<td style=\"padding: 3px; border: 1px solid;\">End Users<\/td>\n<td style=\"padding: 3px; border: 1px solid;\">Natural Language<\/td>\n<td style=\"padding: 3px; border: 1px solid;\">Natural Language Processing + Type-based Synthesis<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 3px; border: 1px solid;\">Smartphone Scripts [<a href=\"https:\/\/www.microsoft.com\/en-us\/research\/publication\/smartsynth-synthesizing-smartphone-automation-scripts-natural-language\/\">MobiSys 2013<\/a>]<\/td>\n<td style=\"padding: 3px; border: 1px solid;\">End Users<\/td>\n<td style=\"padding: 3px; border: 1px solid;\">Natural Language<\/td>\n<td style=\"padding: 3px; border: 1px solid;\">Natural Language Processing + Type-based Synthesis<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 3px; border: 1px solid;\">Data Extraction (from text files and web pages) [<a href=\"https:\/\/www.microsoft.com\/en-us\/research\/publication\/flashextract-framework-data-extraction-examples\/\">PLDI 2014<\/a>]<\/td>\n<td style=\"padding: 3px; border: 1px solid;\">End Users<\/td>\n<td style=\"padding: 3px; border: 1px solid;\">Examples<\/td>\n<td style=\"padding: 3px; border: 1px solid;\">Version Space Algebra<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 3px; border: 1px solid;\">Data Extraction (from semi-structured spreadsheets) [<a href=\"https:\/\/www.microsoft.com\/en-us\/research\/publication\/flashrelate-extracting-relational-data-from-semi-structured-spreadsheets-using-examples\/\">PLDI 2015<\/a>]<\/td>\n<td style=\"padding: 3px; border: 1px solid;\">End Users<\/td>\n<td style=\"padding: 3px; border: 1px solid;\">Examples<\/td>\n<td style=\"padding: 3px; border: 1px solid;\">Version Space Algebra<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 3px; border: 1px solid;\">String Transformations [<a href=\"https:\/\/www.microsoft.com\/en-us\/research\/publication\/automating-string-processing-spreadsheets-using-input-output-examples\/\">POPL 2011<\/a>, <a href=\"https:\/\/www.microsoft.com\/en-us\/research\/publication\/learning-semantic-string-transformations-from-examples-2\/\">VLDB 2012<\/a>, <a href=\"https:\/\/www.microsoft.com\/en-us\/research\/publication\/spreadsheet-data-manipulation-using-examples\/\">CACM 2012<\/a>, <a href=\"https:\/\/www.microsoft.com\/en-us\/research\/publication\/machine-learning-framework-programming-example\/\">ICML 2013<\/a>]<\/td>\n<td style=\"padding: 3px; border: 1px solid;\">End Users<\/td>\n<td style=\"padding: 3px; border: 1px solid;\">Examples<\/td>\n<td style=\"padding: 3px; border: 1px solid;\">Version Space Algebra + Machine Learning<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 3px; border: 1px solid;\">Number Transformations [<a href=\"https:\/\/www.microsoft.com\/en-us\/research\/publication\/synthesizing-number-transformations-from-input-output-examples-2\/\">CAV 2012<\/a>]<\/td>\n<td style=\"padding: 3px; border: 1px solid;\">End Users<\/td>\n<td style=\"padding: 3px; border: 1px solid;\">Examples<\/td>\n<td style=\"padding: 3px; border: 1px solid;\">Version Space Algebra<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 3px; border: 1px solid;\">Table Transformations [<a href=\"https:\/\/www.microsoft.com\/en-us\/research\/publication\/spreadsheet-data-manipulation-using-examples\/?from=http%3A%2F%2Fresearch.microsoft.com%2Fen-us%2Fum%2Fpeople%2Fsumitg%2Fpubs%2Fpldi11-table-synthesis.pdf#\">PLDI 2011<\/a>]<\/td>\n<td style=\"padding: 3px; border: 1px solid;\">End Users<\/td>\n<td style=\"padding: 3px; border: 1px solid;\">Examples<\/td>\n<td style=\"padding: 3px; border: 1px solid;\">Version Space Algebra<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 3px; border: 1px solid;\">XML Transformations [<a href=\"https:\/\/www.microsoft.com\/en-us\/research\/publication\/synthesis-geometry-proof-problems\/\">AAAI 2014<\/a>, <a href=\"https:\/\/www.microsoft.com\/en-us\/research\/publication\/test-driven-synthesis\/\">PLDI 2014<\/a>]<\/td>\n<td style=\"padding: 3px; border: 1px solid;\">End Users<\/td>\n<td style=\"padding: 3px; border: 1px solid;\">Examples<\/td>\n<td style=\"padding: 3px; border: 1px solid;\"><\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 3px; border: 1px solid;\">Text Transformations [<a href=\"https:\/\/www.microsoft.com\/en-us\/research\/publication\/colorful-approach-text-processing-example\/\">UIST 2013<\/a>]<\/td>\n<td style=\"padding: 3px; border: 1px solid;\">End Users<\/td>\n<td style=\"padding: 3px; border: 1px solid;\">Set or Sequence of Examples<\/td>\n<td style=\"padding: 3px; border: 1px solid;\"><\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 3px; border: 1px solid;\">Geometry Drawings [<a href=\"https:\/\/www.microsoft.com\/en-us\/research\/publication\/quickdraw-improving-drawing-experience-geometric-diagrams\/\">CHI 2012<\/a>]<\/td>\n<td style=\"padding: 3px; border: 1px solid;\">End Users<\/td>\n<td style=\"padding: 3px; border: 1px solid;\">Sketch<\/td>\n<td style=\"padding: 3px; border: 1px solid;\"><\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 3px; border: 1px solid;\">Geometry Ruler\/Compass Constructions [<a href=\"https:\/\/www.microsoft.com\/en-us\/research\/publication\/synthesizing-geometry-constructions\/\">PLDI 2011<\/a>]<\/td>\n<td style=\"padding: 3px; border: 1px solid;\">Students\/Teachers<\/td>\n<td style=\"padding: 3px; border: 1px solid;\">Logic<\/td>\n<td style=\"padding: 3px; border: 1px solid;\"><\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 3px; border: 1px solid;\">Geometry Proof Problems [<a href=\"https:\/\/www.microsoft.com\/en-us\/research\/publication\/synthesis-geometry-proof-problems\/\">AAAI 2014<\/a>]<\/td>\n<td style=\"padding: 3px; border: 1px solid;\">Students\/Teachers<\/td>\n<td style=\"padding: 3px; border: 1px solid;\">Examples<\/td>\n<td style=\"padding: 3px; border: 1px solid;\"><\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 3px; border: 1px solid;\">Algebraic Proof Problems [<a href=\"https:\/\/www.microsoft.com\/en-us\/research\/publication\/automatically-generating-algebra-problems\/\">AAAI 2012<\/a>]<\/td>\n<td style=\"padding: 3px; border: 1px solid;\">Students\/Teachers<\/td>\n<td style=\"padding: 3px; border: 1px solid;\">Examples<\/td>\n<td style=\"padding: 3px; border: 1px solid;\"><\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 3px; border: 1px solid;\">Procedural Math Problems [<a href=\"https:\/\/www.microsoft.com\/en-us\/research\/publication\/trace-based-framework-analyzing-synthesizing-educational-progressions\/\">CHI 2013<\/a>]<\/td>\n<td style=\"padding: 3px; border: 1px solid;\">Students\/Teachers<\/td>\n<td style=\"padding: 3px; border: 1px solid;\">Examples<\/td>\n<td style=\"padding: 3px; border: 1px solid;\"><\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 3px; border: 1px solid;\">Natural Deduction Problems [<a href=\"https:\/\/www.microsoft.com\/en-us\/research\/publication\/automatically-generating-problems-solutions-natural-deduction\/\">IJCAI 2013<\/a>]<\/td>\n<td style=\"padding: 3px; border: 1px solid;\">Students\/Teachers<\/td>\n<td style=\"padding: 3px; border: 1px solid;\">Examples<\/td>\n<td style=\"padding: 3px; border: 1px solid;\"><\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 3px; border: 1px solid;\">Grading of Introductory Programming Assignments [<a href=\"https:\/\/www.microsoft.com\/en-us\/research\/publication\/automated-feedback-generation-for-introductory-programming-assignments\/\">PLDI 2013<\/a>]<\/td>\n<td style=\"padding: 3px; border: 1px solid;\">Students\/Teachers<\/td>\n<td style=\"padding: 3px; border: 1px solid;\">Sample Solution<\/td>\n<td style=\"padding: 3px; border: 1px solid;\">Edit-distance based search using Sketch<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 3px; border: 1px solid;\">Grading of Automata Constructions [<a href=\"https:\/\/www.microsoft.com\/en-us\/research\/publication\/automated-grading-dfa-constructions\/\">IJCAI 2013<\/a>]<\/td>\n<td style=\"padding: 3px; border: 1px solid;\">Students\/Teachers<\/td>\n<td style=\"padding: 3px; border: 1px solid;\">Sample Solution<\/td>\n<td style=\"padding: 3px; border: 1px solid;\">Edit-distance based Search<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 3px; border: 1px solid;\">Recursive Programs [<a href=\"https:\/\/www.microsoft.com\/en-us\/research\/publication\/recursive-program-synthesis\/\">CAV 2013<\/a>]<\/td>\n<td style=\"padding: 3px; border: 1px solid;\">End Users<\/td>\n<td style=\"padding: 3px; border: 1px solid;\">Examples<\/td>\n<td style=\"padding: 3px; border: 1px solid;\">Goal-directed Search<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 3px; border: 1px solid;\"><span style=\"color: #cc0000;\">Biological Synthesis<\/span> [<a href=\"https:\/\/www.microsoft.com\/en-us\/research\/publication\/biological-synthesis\/\">Distraction 2013<\/a>]<\/td>\n<td style=\"padding: 3px; border: 1px solid;\">First-time PL parents<\/td>\n<td style=\"padding: 3px; border: 1px solid;\">(lack of) Logic<\/td>\n<td style=\"padding: 3px; border: 1px solid;\">Template-based and Inductive<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 3px; border: 1px solid;\">Vectorized Code [<a href=\"https:\/\/www.microsoft.com\/en-us\/research\/publication\/relational-verification-simd-loop-synthesis\/\">PPoPP 2013<\/a>]<\/td>\n<td style=\"padding: 3px; border: 1px solid;\">Software developers<\/td>\n<td style=\"padding: 3px; border: 1px solid;\">Loop to be vectorized<\/td>\n<td style=\"padding: 3px; border: 1px solid;\">Combination of Deductive and Inductive Synthesis<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 3px; border: 1px solid;\">API Discovery and Code Completion [<a href=\"https:\/\/www.microsoft.com\/en-us\/research\/publication\/type-directed-completion-partial-expressions\/\">PLDI 2012<\/a>]<\/td>\n<td style=\"padding: 3px; border: 1px solid;\">Software developers<\/td>\n<td style=\"padding: 3px; border: 1px solid;\">Partial Expression<\/td>\n<td style=\"padding: 3px; border: 1px solid;\">Type-based search and ranking<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 3px; border: 1px solid;\">Program Inverses [<a href=\"https:\/\/www.microsoft.com\/en-us\/research\/publication\/path-based-inductive-synthesis-program-inversion\/\">PLDI 2011<\/a>]<\/td>\n<td style=\"padding: 3px; border: 1px solid;\">Software developers<\/td>\n<td style=\"padding: 3px; border: 1px solid;\">Templates<\/td>\n<td style=\"padding: 3px; border: 1px solid;\">PathTesting-based synthesis + SMT solvers<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 3px; border: 1px solid;\">Bit-vector Algorithms [<a href=\"https:\/\/www.microsoft.com\/en-us\/research\/publication\/synthesis-loop-free-programs\/\">PLDI 2011<\/a>, <a href=\"https:\/\/www.microsoft.com\/en-us\/research\/publication\/oracle-guided-component-based-program-synthesis\/\">ICSE 2010<\/a>]<\/td>\n<td style=\"padding: 3px; border: 1px solid;\">Algorithm designers<\/td>\n<td style=\"padding: 3px; border: 1px solid;\">(Logic or Examples) + Components<\/td>\n<td style=\"padding: 3px; border: 1px solid;\">SMT solvers<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 3px; border: 1px solid;\">Graph Algorithms [<a href=\"https:\/\/www.microsoft.com\/en-us\/research\/publication\/a-simple-inductive-synthesis-methodology-and-its-applications\/\">OOPSLA 2010<\/a>]<\/td>\n<td style=\"padding: 3px; border: 1px solid;\">Algorithm designers<\/td>\n<td style=\"padding: 3px; border: 1px solid;\">Logic<\/td>\n<td style=\"padding: 3px; border: 1px solid;\">Inductive Learning + SAT solvers<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 3px; border: 1px solid;\">Undergraduate Textbook Algorithms [<a href=\"https:\/\/www.microsoft.com\/en-us\/research\/publication\/program-verification-program-synthesis\/\">POPL 2010<\/a>]<\/td>\n<td style=\"padding: 3px; border: 1px solid;\">Algorithm designers<\/td>\n<td style=\"padding: 3px; border: 1px solid;\">Logic + Templates<\/td>\n<td style=\"padding: 3px; border: 1px solid;\">Invariant-based synthesis + SMT solvers<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 3px; border: 1px solid;\">Switching Logic [<a href=\"https:\/\/www.microsoft.com\/en-us\/research\/publication\/synthesizing-switching-logic-safety-dwell-time-requirement\/\">ICCPS 2010<\/a>, <a href=\"https:\/\/www.microsoft.com\/en-us\/research\/publication\/synthesizing-switching-logic-using-constraint-solving\/\">VMCAI 2009<\/a>]<\/td>\n<td style=\"padding: 3px; border: 1px solid;\">Embedded-system designers<\/td>\n<td style=\"padding: 3px; border: 1px solid;\">Logic + Templates<\/td>\n<td style=\"padding: 3px; border: 1px solid;\">(Inductive Learning + Numerical Methods) or SMT Solvers<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Introduction Program synthesis is the task of automatically discovering an executable piece of code given user intent expressed using various forms of constraints such as input-output examples, demonstrations, natural language, etc. Program synthesis has direct applications for various classes of users in the technology pyramid: (100s of millions of) End Users (people who have access [&hellip;]<\/p>\n","protected":false},"featured_media":0,"template":"","meta":{"msr-url-field":"","msr-podcast-episode":"","msrModifiedDate":"","msrModifiedDateEnabled":false,"ep_exclude_from_search":false,"_classifai_error":"","footnotes":""},"research-area":[13560],"msr-locale":[268875],"msr-impact-theme":[],"msr-pillar":[],"class_list":["post-361034","msr-project","type-msr-project","status-publish","hentry","msr-research-area-programming-languages-software-engineering","msr-locale-en_us","msr-archive-status-active"],"msr_project_start":"2010-01-01","related-publications":[335843,335447,335471,335492,335543,335552,335696,335714,335804,335825,335348,335864,335900,335936,336008,336026,336380,336386,336518,268593,160306,162576,164710,166504,168017,238207,238222,238223,238224,159375,317504,326828,334466,335258,335279,335291,335327,335339],"related-downloads":[],"related-videos":[359483,359492,359498,359501,359507,359522,818371],"related-groups":[],"related-events":[],"related-opportunities":[],"related-posts":[620838],"related-articles":[],"tab-content":[],"slides":[],"related-researchers":[{"type":"user_nicename","value":"sumitg","display_name":"Sumit Gulwani","author_link":"<a href=\"https:\/\/www.microsoft.com\/en-us\/research\/people\/sumitg\/\" aria-label=\"Visit the profile page for Sumit Gulwani\">Sumit Gulwani<\/a>","is_active":false,"user_id":33755,"last_first":"Gulwani, Sumit","people_section":0,"alias":"sumitg"}],"msr_research_lab":[],"msr_impact_theme":[],"_links":{"self":[{"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/msr-project\/361034","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/msr-project"}],"about":[{"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/types\/msr-project"}],"version-history":[{"count":4,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/msr-project\/361034\/revisions"}],"predecessor-version":[{"id":390179,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/msr-project\/361034\/revisions\/390179"}],"wp:attachment":[{"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/media?parent=361034"}],"wp:term":[{"taxonomy":"msr-research-area","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/research-area?post=361034"},{"taxonomy":"msr-locale","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/msr-locale?post=361034"},{"taxonomy":"msr-impact-theme","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/msr-impact-theme?post=361034"},{"taxonomy":"msr-pillar","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/msr-pillar?post=361034"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}