{"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/proving-olympiad-inequalities-by-synergizing","title":"Proving Olympiad Inequalities by Synergizing LLMs and Symbolic Reasoning","arxiv_id":"2502.13834","date":"2025-02-19","proceeding":null,"authors":["Zenan Li","Zhaoyu Li","Wen Tang","Xian Zhang","Yuan YAO","Xujie Si","Fan Yang","Kaiyu Yang","Xiaoxing Ma"],"abstract":"Large language models (LLMs) can prove mathematical theorems formally by generating proof steps (\\textit{a.k.a.} tactics) within a proof system. However, the space of possible tactics is vast and complex, while the available training data for formal proofs is limited, posing a significant challenge to LLM-based tactic generation. To address this, we introduce a neuro-symbolic tactic generator that synergizes the mathematical intuition learned by LLMs with domain-specific insights encoded by symbolic methods. The key aspect of this integration is identifying which parts of mathematical reasoning are best suited to LLMs and which to symbolic methods. While the high-level idea of neuro-symbolic integration is broadly applicable to various mathematical problems, in this paper, we focus specifically on Olympiad inequalities (Figure~1). We analyze how humans solve these problems and distill the techniques into two types of tactics: (1) scaling, handled by symbolic methods, and (2) rewriting, handled by LLMs. In addition, we combine symbolic tools with LLMs to prune and rank the proof goals for efficient proof search. We evaluate our framework on 161 challenging inequalities from multiple mathematics competitions, achieving state-of-the-art performance and significantly outperforming existing LLM and symbolic approaches without requiring additional training data.","url_abs":"https://arxiv.org/abs/2502.13834v1","url_pdf":"https://arxiv.org/pdf/2502.13834v1.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":"proving-olympiad-inequalities-by-synergizing","repo_url":"https://github.com/lizn-zn/neqlips","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"none","reach":{"status":"ok","spdx":"MIT"}}],"tasks":[{"task_slug":"mathematical-reasoning","task_name":"Mathematical Reasoning"}],"methods":[{"method_slug":"focus","method_name":"Focus"}],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"syntology_url":"https://syntology.ai/paper/2502.13834","atlas_url":"https://app.syntology.ai/?focus=2502.13834","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2502.13834"}},"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":"deterministic:regex_extraction","url":"https://github.com/Lizn-zn/NeqLIPS","reach":{"status":"ok","spdx":"MIT"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/lizn-zn/neqlips","reach":{"status":"ok","spdx":"MIT"}}],"summary":{"ran":4,"unverified":3},"by_repo_kind":{"official":{"samples":7,"ran":4,"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":"6390dea763ce122e","entry":"extract_boxed_answers","repo":"Lizn-zn/NeqLIPS","repo_kind":"official","path":"LIPS/NeSyCore/parser.py","file_url":"https://github.com/Lizn-zn/NeqLIPS/blob/HEAD/LIPS/NeSyCore/parser.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":"6390dea763ce122e"}},{"code_sha256_prefix":"0f666345c612f780","entry":"setup_logger","repo":"Lizn-zn/NeqLIPS","repo_kind":"official","path":"LIPS/logger_config.py","file_url":"https://github.com/Lizn-zn/NeqLIPS/blob/HEAD/LIPS/logger_config.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":"0f666345c612f780"}},{"code_sha256_prefix":"7584545a07430735","entry":"sympy_equal","repo":"Lizn-zn/NeqLIPS","repo_kind":"official","path":"LIPS/NeSyCore/utils.py","file_url":"https://github.com/Lizn-zn/NeqLIPS/blob/HEAD/LIPS/NeSyCore/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":"7584545a07430735"}},{"code_sha256_prefix":"e85ce5e0444d9dcb","entry":"wrap_parse_expr","repo":"Lizn-zn/NeqLIPS","repo_kind":"official","path":"LIPS/NeSyCore/parser.py","file_url":"https://github.com/Lizn-zn/NeqLIPS/blob/HEAD/LIPS/NeSyCore/parser.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":"e85ce5e0444d9dcb"}},{"code_sha256_prefix":"ec2913a87bc45c5c","entry":"main","repo":"Lizn-zn/NeqLIPS","repo_kind":"official","path":"viz.py","file_url":"https://github.com/Lizn-zn/NeqLIPS/blob/HEAD/viz.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":"ec2913a87bc45c5c"}},{"code_sha256_prefix":"6797d4c6c44ed8fa","entry":"sympy_simp","repo":"Lizn-zn/NeqLIPS","repo_kind":"official","path":"LIPS/NeSyCore/utils.py","file_url":"https://github.com/Lizn-zn/NeqLIPS/blob/HEAD/LIPS/NeSyCore/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":"6797d4c6c44ed8fa"}},{"code_sha256_prefix":"b6a0ee5efd4b1454","entry":"wrap_parse_latex","repo":"Lizn-zn/NeqLIPS","repo_kind":"official","path":"LIPS/NeSyCore/parser.py","file_url":"https://github.com/Lizn-zn/NeqLIPS/blob/HEAD/LIPS/NeSyCore/parser.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":"b6a0ee5efd4b1454"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}