{"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/searching-latent-program-spaces","title":"Searching Latent Program Spaces","arxiv_id":"2411.08706","date":"2024-11-13","proceeding":null,"authors":["Clément Bonnet","Matthew V Macfarlane"],"abstract":"Program synthesis methods aim to automatically generate programs restricted to a language that can explain a given specification of input-output pairs. While purely symbolic approaches suffer from a combinatorial search space, recent methods leverage neural networks to learn distributions over program structures to narrow this search space significantly, enabling more efficient search. However, for challenging problems, it remains difficult to train models to perform program synthesis in one shot, making test-time search essential. Most neural methods lack structured search mechanisms during inference, relying instead on stochastic sampling or gradient updates, which can be inefficient. In this work, we propose the Latent Program Network (LPN), a general algorithm for program induction that learns a distribution over latent programs in a continuous space, enabling efficient search and test-time adaptation. We explore how to train these networks to optimize for test-time computation and demonstrate the use of gradient-based search both during training and at test time. We evaluate LPN on ARC-AGI, a program synthesis benchmark that evaluates performance by generalizing programs to new inputs rather than explaining the underlying specification. We show that LPN can generalize beyond its training distribution and adapt to unseen tasks by utilizing test-time computation, outperforming algorithms without test-time adaptation mechanisms.","url_abs":"https://arxiv.org/abs/2411.08706v1","url_pdf":"https://arxiv.org/pdf/2411.08706v1.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":"searching-latent-program-spaces","repo_url":"https://github.com/clement-bonnet/lpn","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"jax","reach":null}],"tasks":[{"task_slug":"arc","task_name":"ARC"},{"task_slug":"program-synthesis","task_name":"Program Synthesis"},{"task_slug":"program-induction","task_name":"Program induction"},{"task_slug":"test-time-adaptation","task_name":"Test-time Adaptation"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2411.08706","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2411.08706"}},"developers":"https://syntology.ai/developers","read_at":"2026-09-24T18:15:14+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/clement-bonnet/lpn","reach":null}],"summary":{"ran":3,"ran_draft_wrong":1,"unverified":5},"by_repo_kind":{"official":{"samples":9,"ran":4,"repositories":1}},"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":0,"samples":[{"code_sha256_prefix":"0f531f57807295b0","entry":"DecoderTransformerConfig","repo":"clement-bonnet/lpn","repo_kind":"official","path":"src/models/lpn.py","file_url":"https://github.com/clement-bonnet/lpn/blob/HEAD/src/models/lpn.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"0f531f57807295b0"}},{"code_sha256_prefix":"3318937578858691","entry":"EncoderTransformerConfig","repo":"clement-bonnet/lpn","repo_kind":"official","path":"src/models/lpn.py","file_url":"https://github.com/clement-bonnet/lpn/blob/HEAD/src/models/lpn.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"3318937578858691"}},{"code_sha256_prefix":"7fec010592e488d3","entry":"TransformerLayerConfig","repo":"clement-bonnet/lpn","repo_kind":"official","path":"src/models/lpn.py","file_url":"https://github.com/clement-bonnet/lpn/blob/HEAD/src/models/lpn.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"7fec010592e488d3"}},{"code_sha256_prefix":"fc57a1ab0def3cdd","entry":"make_leave_one_out","repo":"clement-bonnet/lpn","repo_kind":"official","path":"src/models/lpn.py","file_url":"https://github.com/clement-bonnet/lpn/blob/HEAD/src/models/lpn.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"MISDECLARED","metamorphic_tier":"invariant","behaviour_fingerprint":true,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"fc57a1ab0def3cdd"}},{"code_sha256_prefix":"67bab420e1ea8aba","entry":"DecoderTransformer","repo":"clement-bonnet/lpn","repo_kind":"official","path":"src/models/lpn.py","file_url":"https://github.com/clement-bonnet/lpn/blob/HEAD/src/models/lpn.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"67bab420e1ea8aba"}},{"code_sha256_prefix":"778e4c65122f1271","entry":"EncoderTransformer","repo":"clement-bonnet/lpn","repo_kind":"official","path":"src/models/lpn.py","file_url":"https://github.com/clement-bonnet/lpn/blob/HEAD/src/models/lpn.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"778e4c65122f1271"}},{"code_sha256_prefix":"958ab1b5d4ea8b60","entry":"LPN","repo":"clement-bonnet/lpn","repo_kind":"official","path":"src/models/lpn.py","file_url":"https://github.com/clement-bonnet/lpn/blob/HEAD/src/models/lpn.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"958ab1b5d4ea8b60"}},{"code_sha256_prefix":"105ac46cb40d3715","entry":"MlpBlock","repo":"clement-bonnet/lpn","repo_kind":"official","path":"src/models/lpn.py","file_url":"https://github.com/clement-bonnet/lpn/blob/HEAD/src/models/lpn.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"105ac46cb40d3715"}},{"code_sha256_prefix":"5bdc653acd891cd4","entry":"TransformerLayer","repo":"clement-bonnet/lpn","repo_kind":"official","path":"src/models/lpn.py","file_url":"https://github.com/clement-bonnet/lpn/blob/HEAD/src/models/lpn.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"5bdc653acd891cd4"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}