{"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/enhancing-sat-solvers-with-glue-variable","title":"Enhancing SAT solvers with glue variable predictions","arxiv_id":"2007.02559","date":"2020-07-06","proceeding":null,"authors":["Jesse Michael Han"],"abstract":"Modern SAT solvers routinely operate at scales that make it impractical to query a neural network for every branching decision. NeuroCore, proposed by Selsam and Bjorner, offered a proof-of-concept that neural networks can still accelerate SAT solvers by only periodically refocusing a score-based branching heuristic. However, that work suffered from several limitations: their modified solvers require GPU acceleration, further ablations showed that they were no better than a random baseline on the SATCOMP 2018 benchmark, and their training target of unsat cores required an expensive data pipeline which only labels relatively easy unsatisfiable problems. We address all these limitations, using a simpler network architecture allowing CPU inference for even large industrial problems with millions of clauses, and training instead to predict {\\em glue variables}---a target for which it is easier to generate labelled data, and which can also be formulated as a reinforcement learning task. We demonstrate the effectiveness of our approach by modifying the state-of-the-art SAT solver CaDiCaL, improving its performance on SATCOMP 2018 and SATRACE 2019 with supervised learning and its performance on a dataset of SHA-1 preimage attacks with reinforcement learning.","url_abs":"https://arxiv.org/abs/2007.02559v1","url_pdf":"https://arxiv.org/pdf/2007.02559v1.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":"enhancing-sat-solvers-with-glue-variable","repo_url":"https://github.com/jesse-michael-han/neuro-cadical","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":null}],"tasks":[{"task_slug":null,"task_name":"CPU"},{"task_slug":null,"task_name":"GPU"},{"task_slug":"reinforcement-learning","task_name":"Reinforcement Learning"},{"task_slug":"reinforcement-learning-1","task_name":"Reinforcement Learning (RL)"},{"task_slug":"reinforcement-learning-2","task_name":"reinforcement-learning"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2007.02559","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2007.02559"}},"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/jesse-michael-han/neuro-cadical","reach":null}],"summary":{"ran_draft_wrong":5,"ran_honours":1,"ran_violates":1,"ran_fixture":1},"by_repo_kind":{"official":{"samples":8,"ran":8,"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":"d516335bf8ec4fd4","entry":"decode_activation","repo":"jesse-michael-han/neuro-cadical","repo_kind":"official","path":"python/gnn.py","file_url":"https://github.com/jesse-michael-han/neuro-cadical/blob/HEAD/python/gnn.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":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"d516335bf8ec4fd4"}},{"code_sha256_prefix":"658d370f8dacf5e3","entry":"discount_cumsum","repo":"jesse-michael-han/neuro-cadical","repo_kind":"official","path":"python/rl_loop.py","file_url":"https://github.com/jesse-michael-han/neuro-cadical/blob/HEAD/python/rl_loop.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":"658d370f8dacf5e3"}},{"code_sha256_prefix":"2a1029d8aecc0f37","entry":"flop","repo":"jesse-michael-han/neuro-cadical","repo_kind":"official","path":"python/gnn.py","file_url":"https://github.com/jesse-michael-han/neuro-cadical/blob/HEAD/python/gnn.py","link_basis":"first_harvest_node","language":"python","status":"ran_honours","verification_level":1,"contract_check":"HONOURS","metamorphic_tier":"invariant","behaviour_fingerprint":true,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"2a1029d8aecc0f37"}},{"code_sha256_prefix":"ff660a889a945b5b","entry":"get_name","repo":"jesse-michael-han/neuro-cadical","repo_kind":"official","path":"python/solver_eval.py","file_url":"https://github.com/jesse-michael-han/neuro-cadical/blob/HEAD/python/solver_eval.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":"deterministic","behaviour_fingerprint":true,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"ff660a889a945b5b"}},{"code_sha256_prefix":"5d3eed6eb2dfde23","entry":"is_baseline","repo":"jesse-michael-han/neuro-cadical","repo_kind":"official","path":"python/solver_eval.py","file_url":"https://github.com/jesse-michael-han/neuro-cadical/blob/HEAD/python/solver_eval.py","link_basis":"first_harvest_node","language":"python","status":"ran_violates","verification_level":1,"contract_check":"VIOLATES","metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"5d3eed6eb2dfde23"}},{"code_sha256_prefix":"be14495f3c766a0a","entry":"mk_G","repo":"jesse-michael-han/neuro-cadical","repo_kind":"official","path":"python/rl_loop.py","file_url":"https://github.com/jesse-michael-han/neuro-cadical/blob/HEAD/python/rl_loop.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":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"be14495f3c766a0a"}},{"code_sha256_prefix":"4d3575b362679b8f","entry":"softmax_sample_from_logits","repo":"jesse-michael-han/neuro-cadical","repo_kind":"official","path":"python/rl_loop.py","file_url":"https://github.com/jesse-michael-han/neuro-cadical/blob/HEAD/python/rl_loop.py","link_basis":"first_harvest_node","language":"python","status":"ran_fixture","verification_level":1,"contract_check":"RAISES","metamorphic_tier":"invariant","behaviour_fingerprint":true,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"4d3575b362679b8f"}},{"code_sha256_prefix":"9139be05f74d45b8","entry":"swap_polarity","repo":"jesse-michael-han/neuro-cadical","repo_kind":"official","path":"python/gnn.py","file_url":"https://github.com/jesse-michael-han/neuro-cadical/blob/HEAD/python/gnn.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":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"9139be05f74d45b8"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}