{"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/prover-proof-generation-for-interpretable","title":"PRover: Proof Generation for Interpretable Reasoning over Rules","arxiv_id":"2010.02830","date":"2020-10-06","proceeding":"EMNLP 2020 11","authors":["Swarnadeep Saha","Sayan Ghosh","Shashank Srivastava","Mohit Bansal"],"abstract":"Recent work by Clark et al. (2020) shows that transformers can act as 'soft theorem provers' by answering questions over explicitly provided knowledge in natural language. In our work, we take a step closer to emulating formal theorem provers, by proposing PROVER, an interpretable transformer-based model that jointly answers binary questions over rule-bases and generates the corresponding proofs. Our model learns to predict nodes and edges corresponding to proof graphs in an efficient constrained training paradigm. During inference, a valid proof, satisfying a set of global constraints is generated. We conduct experiments on synthetic, hand-authored, and human-paraphrased rule-bases to show promising results for QA and proof generation, with strong generalization performance. First, PROVER generates proofs with an accuracy of 87%, while retaining or improving performance on the QA task, compared to RuleTakers (up to 6% improvement on zero-shot evaluation). Second, when trained on questions requiring lower depths of reasoning, it generalizes significantly better to higher depths (up to 15% improvement). Third, PROVER obtains near perfect QA accuracy of 98% using only 40% of the training data. However, generating proofs for questions requiring higher depths of reasoning becomes challenging, and the accuracy drops to 65% for 'depth 5', indicating significant scope for future work. Our code and models are publicly available at https://github.com/swarnaHub/PRover","url_abs":"https://arxiv.org/abs/2010.02830v1","url_pdf":"https://arxiv.org/pdf/2010.02830v1.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":"prover-proof-generation-for-interpretable","repo_url":"https://github.com/swarnaHub/PRover","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}},{"paper_slug":"prover-proof-generation-for-interpretable","repo_url":"https://github.com/swarnaHub/multiPRover","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}}],"tasks":[{"task_slug":null,"task_name":"valid"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2010.02830","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2010.02830"}},"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/swarnaHub/multiPRover","reach":{"status":"ok","spdx":"MIT"}},{"provenance":"deterministic:regex_extraction","url":"https://github.com/swarnaHub/PRover","reach":{"status":"ok","spdx":"MIT"}}],"summary":{"ran":2,"unverified":10},"by_repo_kind":{"official":{"samples":12,"ran":2,"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":"c13d0749a5472646","entry":"get_proof_graph","repo":"swarnaHub/PRover","repo_kind":"official","path":"proof_utils.py","file_url":"https://github.com/swarnaHub/PRover/blob/HEAD/proof_utils.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"c13d0749a5472646"}},{"code_sha256_prefix":"5621c0d34ff2bff6","entry":"get_proof_graph_with_fail","repo":"swarnaHub/PRover","repo_kind":"official","path":"proof_utils.py","file_url":"https://github.com/swarnaHub/PRover/blob/HEAD/proof_utils.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"5621c0d34ff2bff6"}},{"code_sha256_prefix":"edca3480666257aa","entry":"compute_metrics","repo":"swarnaHub/PRover","repo_kind":"official","path":"utils.py","file_url":"https://github.com/swarnaHub/PRover/blob/HEAD/utils.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":"edca3480666257aa"}},{"code_sha256_prefix":"ecb790feacadaaad","entry":"convert_examples_to_features_RR","repo":"swarnaHub/PRover","repo_kind":"official","path":"utils.py","file_url":"https://github.com/swarnaHub/PRover/blob/HEAD/utils.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":"ecb790feacadaaad"}},{"code_sha256_prefix":"3f327d827ee113e3","entry":"convert_examples_to_features_RR","repo":"swarnaHub/PRover","repo_kind":"official","path":"utils_natlang.py","file_url":"https://github.com/swarnaHub/PRover/blob/HEAD/utils_natlang.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":"3f327d827ee113e3"}},{"code_sha256_prefix":"abf6d8b134f4edd6","entry":"filter_context","repo":"swarnaHub/PRover","repo_kind":"official","path":"evaluation/eval_natlang.py","file_url":"https://github.com/swarnaHub/PRover/blob/HEAD/evaluation/eval_natlang.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":"abf6d8b134f4edd6"}},{"code_sha256_prefix":"555f983801abb905","entry":"get_fact_rule_identifiers","repo":"swarnaHub/PRover","repo_kind":"official","path":"ilp_infer/inference.py","file_url":"https://github.com/swarnaHub/PRover/blob/HEAD/ilp_infer/inference.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":"555f983801abb905"}},{"code_sha256_prefix":"89fc1d14be606f95","entry":"get_index_component_maps","repo":"swarnaHub/PRover","repo_kind":"official","path":"evaluation/print_graphs.py","file_url":"https://github.com/swarnaHub/PRover/blob/HEAD/evaluation/print_graphs.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":"89fc1d14be606f95"}},{"code_sha256_prefix":"5fe3351fd927fc60","entry":"get_natlang_mappings","repo":"swarnaHub/PRover","repo_kind":"official","path":"evaluation/eval_natlang.py","file_url":"https://github.com/swarnaHub/PRover/blob/HEAD/evaluation/eval_natlang.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":"5fe3351fd927fc60"}},{"code_sha256_prefix":"3c241ecfe3749a6d","entry":"simple_accuracy","repo":"swarnaHub/PRover","repo_kind":"official","path":"utils.py","file_url":"https://github.com/swarnaHub/PRover/blob/HEAD/utils.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":"3c241ecfe3749a6d"}},{"code_sha256_prefix":"fcbaf738dc6fc42a","entry":"solve_LP","repo":"swarnaHub/PRover","repo_kind":"official","path":"ilp_infer/inference.py","file_url":"https://github.com/swarnaHub/PRover/blob/HEAD/ilp_infer/inference.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":"fcbaf738dc6fc42a"}},{"code_sha256_prefix":"f7b1e7bc7db74fa7","entry":"solve_LP_unconstrained","repo":"swarnaHub/PRover","repo_kind":"official","path":"ilp_infer/inference.py","file_url":"https://github.com/swarnaHub/PRover/blob/HEAD/ilp_infer/inference.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":"f7b1e7bc7db74fa7"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}