{"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/neural-unification-for-logic-reasoning-over","title":"Neural Unification for Logic Reasoning over Natural Language","arxiv_id":"2109.08460","date":"2021-09-17","proceeding":"Findings (EMNLP) 2021 11","authors":["Gabriele Picco","Hoang Thanh Lam","Marco Luca Sbodio","Vanessa Lopez Garcia"],"abstract":"Automated Theorem Proving (ATP) deals with the development of computer programs being able to show that some conjectures (queries) are a logical consequence of a set of axioms (facts and rules). There exists several successful ATPs where conjectures and axioms are formally provided (e.g. formalised as First Order Logic formulas). Recent approaches, such as (Clark et al., 2020), have proposed transformer-based architectures for deriving conjectures given axioms expressed in natural language (English). The conjecture is verified through a binary text classifier, where the transformers model is trained to predict the truth value of a conjecture given the axioms. The RuleTaker approach of (Clark et al., 2020) achieves appealing results both in terms of accuracy and in the ability to generalize, showing that when the model is trained with deep enough queries (at least 3 inference steps), the transformers are able to correctly answer the majority of queries (97.6%) that require up to 5 inference steps. In this work we propose a new architecture, namely the Neural Unifier, and a relative training procedure, which achieves state-of-the-art results in term of generalisation, showing that mimicking a well-known inference procedure, the backward chaining, it is possible to answer deep queries even when the model is trained only on shallow ones. The approach is demonstrated in experiments using a diverse set of benchmark data.","url_abs":"https://arxiv.org/abs/2109.08460v1","url_pdf":"https://arxiv.org/pdf/2109.08460v1.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":"neural-unification-for-logic-reasoning-over","repo_url":"https://github.com/ibm/neural_unification_for_logic_reasoning_over_language","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"Apache-2.0"}}],"tasks":[{"task_slug":"automated-theorem-proving","task_name":"Automated Theorem Proving"},{"task_slug":"question-answering","task_name":"Question Answering"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2109.08460","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2109.08460"}},"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/ibm/neural_unification_for_logic_reasoning_over_language","reach":{"status":"ok","spdx":"Apache-2.0"}}],"summary":{"unverified":7},"by_repo_kind":{"official":{"samples":7,"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":0,"samples":[{"code_sha256_prefix":"448433cb2e3a3d6a","entry":"grad_stats","repo":"ibm/neural_unification_for_logic_reasoning_over_language","repo_kind":"official","path":"spectre/module/utils/utils.py","file_url":"https://github.com/ibm/neural_unification_for_logic_reasoning_over_language/blob/HEAD/spectre/module/utils/utils.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":"448433cb2e3a3d6a"}},{"code_sha256_prefix":"2cd279f1abf8a32b","entry":"padding_sentence_embeddings","repo":"ibm/neural_unification_for_logic_reasoning_over_language","repo_kind":"official","path":"spectre/module/utils/utils.py","file_url":"https://github.com/ibm/neural_unification_for_logic_reasoning_over_language/blob/HEAD/spectre/module/utils/utils.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":"2cd279f1abf8a32b"}},{"code_sha256_prefix":"5138dac0857eed5c","entry":"padding_sentences","repo":"ibm/neural_unification_for_logic_reasoning_over_language","repo_kind":"official","path":"spectre/module/utils/utils.py","file_url":"https://github.com/ibm/neural_unification_for_logic_reasoning_over_language/blob/HEAD/spectre/module/utils/utils.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":"5138dac0857eed5c"}},{"code_sha256_prefix":"34d6c0755a0a2b26","entry":"ruletaker_predictions","repo":"ibm/neural_unification_for_logic_reasoning_over_language","repo_kind":"official","path":"spectre/ensemble_tuning.py","file_url":"https://github.com/ibm/neural_unification_for_logic_reasoning_over_language/blob/HEAD/spectre/ensemble_tuning.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":"34d6c0755a0a2b26"}},{"code_sha256_prefix":"543e5dd41bc1f404","entry":"tune","repo":"ibm/neural_unification_for_logic_reasoning_over_language","repo_kind":"official","path":"spectre/ensemble_tuning.py","file_url":"https://github.com/ibm/neural_unification_for_logic_reasoning_over_language/blob/HEAD/spectre/ensemble_tuning.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":"543e5dd41bc1f404"}},{"code_sha256_prefix":"8b73774460f84275","entry":"valid","repo":"ibm/neural_unification_for_logic_reasoning_over_language","repo_kind":"official","path":"spectre/train_backward_chaining_inference.py","file_url":"https://github.com/ibm/neural_unification_for_logic_reasoning_over_language/blob/HEAD/spectre/train_backward_chaining_inference.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":"8b73774460f84275"}},{"code_sha256_prefix":"ba9afc355125de1c","entry":"valid","repo":"ibm/neural_unification_for_logic_reasoning_over_language","repo_kind":"official","path":"spectre/train_fact_lookup_unit.py","file_url":"https://github.com/ibm/neural_unification_for_logic_reasoning_over_language/blob/HEAD/spectre/train_fact_lookup_unit.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":"ba9afc355125de1c"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}