{"about":{"site":"https://codewithpapers.app","non_affiliation":"Code with Papers and Syntology are not affiliated with, endorsed by, or sponsored by Papers with Code, Meta, or the pwc-archive mirror.","licence":"CC BY-SA 4.0","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","attribution":"https://codewithpapers.app/attribution","modified":"archive material modified by Syntology; see the attribution page"},"url":"/paper/robustfill-neural-program-learning-under","title":"RobustFill: Neural Program Learning under Noisy I/O","arxiv_id":"1703.07469","date":"2017-03-21","proceeding":"ICML 2017 8","authors":["Jacob Devlin","Jonathan Uesato","Surya Bhupatiraju","Rishabh Singh","Abdel-rahman Mohamed","Pushmeet Kohli"],"abstract":"The problem of automatically generating a computer program from some\nspecification has been studied since the early days of AI. Recently, two\ncompeting approaches for automatic program learning have received significant\nattention: (1) neural program synthesis, where a neural network is conditioned\non input/output (I/O) examples and learns to generate a program, and (2) neural\nprogram induction, where a neural network generates new outputs directly using\na latent program representation.\n  Here, for the first time, we directly compare both approaches on a\nlarge-scale, real-world learning task. We additionally contrast to rule-based\nprogram synthesis, which uses hand-crafted semantics to guide the program\ngeneration. Our neural models use a modified attention RNN to allow encoding of\nvariable-sized sets of I/O pairs. Our best synthesis model achieves 92%\naccuracy on a real-world test set, compared to the 34% accuracy of the previous\nbest neural synthesis approach. The synthesis model also outperforms a\ncomparable induction model on this task, but we more importantly demonstrate\nthat the strength of each approach is highly dependent on the evaluation metric\nand end-user application. Finally, we show that we can train our neural models\nto remain very robust to the type of noise expected in real-world data (e.g.,\ntypos), while a highly-engineered rule-based system fails entirely.","url_abs":"http://arxiv.org/abs/1703.07469v1","url_pdf":"http://arxiv.org/pdf/1703.07469v1.pdf","source":{"archive":"pwc-archive (Hugging Face), CC BY-SA 4.0","snapshot":"2025-07-28","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","row_kind":"abstracts"},"code_links":[{"paper_slug":"robustfill-neural-program-learning-under","repo_url":"https://github.com/amitz25/PCCoder","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":null},{"paper_slug":"robustfill-neural-program-learning-under","repo_url":"https://github.com/insperatum/pinn","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":null},{"paper_slug":"robustfill-neural-program-learning-under","repo_url":"https://github.com/yeoedward/Robust-Fill","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}}],"tasks":[{"task_slug":"program-synthesis","task_name":"Program Synthesis"},{"task_slug":"program-induction","task_name":"Program induction"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"syntology_url":"https://syntology.ai/paper/1703.07469","atlas_url":"https://app.syntology.ai/?focus=1703.07469","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"1703.07469"}},"developers":"https://syntology.ai/developers","read_at":"2026-09-25T09:33:49+00:00","read_at_is":"when the build read Syntology's graph, not when any sample ran","claim":"Per-sample execution status on synthesized fixtures; not a correctness claim about the paper. Samples come from repositories linked to the paper, official or community; repo_kind says which.","repos":[{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/amitz25/PCCoder","reach":null},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/insperatum/pinn","reach":null},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/yeoedward/Robust-Fill","reach":{"status":"ok","spdx":"MIT"}}],"summary":{"ran_draft_wrong":2,"unverified":6},"by_repo_kind":{"listed":{"samples":8,"ran":2,"repositories":3}},"repo_kind_vocabulary":{"official":"The archive marks this repository official for the paper","named_in_paper":"The archive records that the paper mentions this repository; it is not marked official","listed":"In the archive's code links for this paper, not marked official and not recorded as mentioned in the paper","found_in_text":"Syntology found this repository in the paper's own text; whether it is the authors' implementation is not asserted","community":"Not in the archive's code links for this paper; a community repository Syntology harvested"},"n_pointer_only_for_licence":1,"samples":[{"code_sha256_prefix":"4e57120be17c7bb3","entry":"choose","repo":"insperatum/pinn","repo_kind":"listed","path":"robustfill.py","file_url":"https://github.com/insperatum/pinn/blob/HEAD/robustfill.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"MISDECLARED","metamorphic_tier":"invariant","behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"4e57120be17c7bb3"}},{"code_sha256_prefix":"e629f07b6ec5ad50","entry":"load_problems","repo":"amitz25/PCCoder","repo_kind":"listed","path":"scripts/solve_problems.py","file_url":"https://github.com/amitz25/PCCoder/blob/HEAD/scripts/solve_problems.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"e629f07b6ec5ad50"}},{"code_sha256_prefix":"d80c1fa9e21e791c","entry":"expand_vector","repo":"yeoedward/Robust-Fill","repo_kind":"listed","path":"robust_fill.py","file_url":"https://github.com/yeoedward/Robust-Fill/blob/HEAD/robust_fill.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"d80c1fa9e21e791c"}},{"code_sha256_prefix":"77c412c400e6cca0","entry":"match_dsl_regex","repo":"yeoedward/Robust-Fill","repo_kind":"listed","path":"operators.py","file_url":"https://github.com/yeoedward/Robust-Fill/blob/HEAD/operators.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"77c412c400e6cca0"}},{"code_sha256_prefix":"c9a9236911b80557","entry":"match_type","repo":"yeoedward/Robust-Fill","repo_kind":"listed","path":"operators.py","file_url":"https://github.com/yeoedward/Robust-Fill/blob/HEAD/operators.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"c9a9236911b80557"}},{"code_sha256_prefix":"af49f6b539e8f80c","entry":"randchoice","repo":"yeoedward/Robust-Fill","repo_kind":"listed","path":"sample.py","file_url":"https://github.com/yeoedward/Robust-Fill/blob/HEAD/sample.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"af49f6b539e8f80c"}},{"code_sha256_prefix":"22a80ccfacca282e","entry":"randint","repo":"yeoedward/Robust-Fill","repo_kind":"listed","path":"sample.py","file_url":"https://github.com/yeoedward/Robust-Fill/blob/HEAD/sample.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"22a80ccfacca282e"}},{"code_sha256_prefix":"30973f38b2f538ff","entry":"regex_for_type","repo":"yeoedward/Robust-Fill","repo_kind":"listed","path":"operators.py","file_url":"https://github.com/yeoedward/Robust-Fill/blob/HEAD/operators.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"30973f38b2f538ff"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}