{"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/pdp-a-general-neural-framework-for-learning","title":"PDP: A General Neural Framework for Learning Constraint Satisfaction Solvers","arxiv_id":"1903.01969","date":"2019-03-05","proceeding":null,"authors":["Saeed Amizadeh","Sergiy Matusevych","Markus Weimer"],"abstract":"There have been recent efforts for incorporating Graph Neural Network models\nfor learning full-stack solvers for constraint satisfaction problems (CSP) and\nparticularly Boolean satisfiability (SAT). Despite the unique representational\npower of these neural embedding models, it is not clear how the search strategy\nin the learned models actually works. On the other hand, by fixing the search\nstrategy (e.g. greedy search), we would effectively deprive the neural models\nof learning better strategies than those given. In this paper, we propose a\ngeneric neural framework for learning CSP solvers that can be described in\nterms of probabilistic inference and yet learn search strategies beyond greedy\nsearch. Our framework is based on the idea of propagation, decimation and\nprediction (and hence the name PDP) in graphical models, and can be trained\ndirectly toward solving CSP in a fully unsupervised manner via energy\nminimization, as shown in the paper. Our experimental results demonstrate the\neffectiveness of our framework for SAT solving compared to both neural and the\nstate-of-the-art baselines.","url_abs":"http://arxiv.org/abs/1903.01969v1","url_pdf":"http://arxiv.org/pdf/1903.01969v1.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":"pdp-a-general-neural-framework-for-learning","repo_url":"https://github.com/Microsoft/PDP-Solver","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}},{"paper_slug":"pdp-a-general-neural-framework-for-learning","repo_url":"https://github.com/negotiatorvivian/PDP-SP","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}},{"paper_slug":"pdp-a-general-neural-framework-for-learning","repo_url":"https://github.com/negotiatorvivian/SAT-Solver","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}},{"paper_slug":"pdp-a-general-neural-framework-for-learning","repo_url":"https://github.com/shi27feng/transformers.satisfy","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok"}}],"tasks":[{"task_slug":"graph-neural-network","task_name":"Graph Neural Network"}],"methods":[{"method_slug":"graph-neural-network","method_name":"Graph Neural Network"}],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=1903.01969","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"1903.01969"}},"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/shi27feng/transformers.satisfy","reach":{"status":"ok"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/negotiatorvivian/PDP-SP","reach":{"status":"ok","spdx":"MIT"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/negotiatorvivian/SAT-Solver","reach":{"status":"ok","spdx":"MIT"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/Microsoft/PDP-Solver","reach":{"status":"ok","spdx":"MIT"}}],"summary":{"unverified":7},"by_repo_kind":{"official":{"samples":4,"ran":0,"repositories":1},"listed":{"samples":3,"ran":0,"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":3,"samples":[{"code_sha256_prefix":"79e12ce4b848bc39","entry":"is_sat","repo":"Microsoft/PDP-Solver","repo_kind":"official","path":"src/pdp/generator.py","file_url":"https://github.com/Microsoft/PDP-Solver/blob/HEAD/src/pdp/generator.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":"79e12ce4b848bc39"}},{"code_sha256_prefix":"67b02f95734304ef","entry":"mask","repo":"negotiatorvivian/PDP-SP","repo_kind":"listed","path":"src/pdp/nn/attention.py","file_url":"https://github.com/negotiatorvivian/PDP-SP/blob/HEAD/src/pdp/nn/attention.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":false,"mcp_get_code":{"code_sha256":"67b02f95734304ef"}},{"code_sha256_prefix":"ff31b01f9c2b4b49","entry":"position_embedding","repo":"negotiatorvivian/PDP-SP","repo_kind":"listed","path":"src/pdp/nn/attention.py","file_url":"https://github.com/negotiatorvivian/PDP-SP/blob/HEAD/src/pdp/nn/attention.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":false,"mcp_get_code":{"code_sha256":"ff31b01f9c2b4b49"}},{"code_sha256_prefix":"449159ff0937d675","entry":"safe_exp","repo":"Microsoft/PDP-Solver","repo_kind":"official","path":"src/pdp/nn/util.py","file_url":"https://github.com/Microsoft/PDP-Solver/blob/HEAD/src/pdp/nn/util.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":"449159ff0937d675"}},{"code_sha256_prefix":"a4e81f0f0be4c23d","entry":"sequence_mask","repo":"negotiatorvivian/PDP-SP","repo_kind":"listed","path":"src/pdp/nn/attention.py","file_url":"https://github.com/negotiatorvivian/PDP-SP/blob/HEAD/src/pdp/nn/attention.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":false,"mcp_get_code":{"code_sha256":"a4e81f0f0be4c23d"}},{"code_sha256_prefix":"f695327ff91160dc","entry":"sparse_argmax","repo":"Microsoft/PDP-Solver","repo_kind":"official","path":"src/pdp/nn/util.py","file_url":"https://github.com/Microsoft/PDP-Solver/blob/HEAD/src/pdp/nn/util.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":"f695327ff91160dc"}},{"code_sha256_prefix":"638459184cc132fd","entry":"sparse_max","repo":"Microsoft/PDP-Solver","repo_kind":"official","path":"src/pdp/nn/util.py","file_url":"https://github.com/Microsoft/PDP-Solver/blob/HEAD/src/pdp/nn/util.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":"638459184cc132fd"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}