{"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/techniques-for-symbol-grounding-with-satnet","title":"Techniques for Symbol Grounding with SATNet","arxiv_id":"2106.11072","date":"2021-06-16","proceeding":"NeurIPS 2021 12","authors":["Sever Topan","David Rolnick","Xujie Si"],"abstract":"Many experts argue that the future of artificial intelligence is limited by the field's ability to integrate symbolic logical reasoning into deep learning architectures. The recently proposed differentiable MAXSAT solver, SATNet, was a breakthrough in its capacity to integrate with a traditional neural network and solve visual reasoning problems. For instance, it can learn the rules of Sudoku purely from image examples. Despite its success, SATNet was shown to succumb to a key challenge in neurosymbolic systems known as the Symbol Grounding Problem: the inability to map visual inputs to symbolic variables without explicit supervision (\"label leakage\"). In this work, we present a self-supervised pre-training pipeline that enables SATNet to overcome this limitation, thus broadening the class of problems that SATNet architectures can solve to include datasets where no intermediary labels are available at all. We demonstrate that our method allows SATNet to attain full accuracy even with a harder problem setup that prevents any label leakage. We additionally introduce a proofreading method that further improves the performance of SATNet architectures, beating the state-of-the-art on Visual Sudoku.","url_abs":"https://arxiv.org/abs/2106.11072v1","url_pdf":"https://arxiv.org/pdf/2106.11072v1.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":"techniques-for-symbol-grounding-with-satnet","repo_url":"https://github.com/SeverTopan/SATNet","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}}],"tasks":[{"task_slug":"logical-reasoning","task_name":"Logical Reasoning"},{"task_slug":"visual-reasoning","task_name":"Visual Reasoning"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"syntology_url":"https://syntology.ai/paper/2106.11072","atlas_url":"https://app.syntology.ai/?focus=2106.11072","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2106.11072"}},"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/SeverTopan/SATNet","reach":{"status":"ok","spdx":"MIT"}}],"summary":{"ran_honours":1,"unverified":3},"by_repo_kind":{"official":{"samples":4,"ran":1,"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":"83f53a6a79c8de4c","entry":"computeErr","repo":"SeverTopan/SATNet","repo_kind":"official","path":"exps/parity.py","file_url":"https://github.com/SeverTopan/SATNet/blob/HEAD/exps/parity.py","link_basis":"plan_row","language":"python","status":"ran_honours","verification_level":1,"contract_check":"HONOURS","metamorphic_tier":"invariant","behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"83f53a6a79c8de4c"}},{"code_sha256_prefix":"b65c4afca5a45ef2","entry":"apply_seq","repo":"SeverTopan/SATNet","repo_kind":"official","path":"exps/parity.py","file_url":"https://github.com/SeverTopan/SATNet/blob/HEAD/exps/parity.py","link_basis":"plan_row","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":"b65c4afca5a45ef2"}},{"code_sha256_prefix":"25e922737e549d7d","entry":"get_k","repo":"SeverTopan/SATNet","repo_kind":"official","path":"satnet/models.py","file_url":"https://github.com/SeverTopan/SATNet/blob/HEAD/satnet/models.py","link_basis":"first_harvest_node","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":"25e922737e549d7d"}},{"code_sha256_prefix":"17b469179fef90e6","entry":"insert_constants","repo":"SeverTopan/SATNet","repo_kind":"official","path":"satnet/models.py","file_url":"https://github.com/SeverTopan/SATNet/blob/HEAD/satnet/models.py","link_basis":"first_harvest_node","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":"17b469179fef90e6"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}