{"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/arxiv-2602-02909","title":"Reasoning about Reasoning: BAPO Bounds on Chain-of-Thought Token Complexity in LLMs","arxiv_id":"2602.02909","date":"2026-02-02","proceeding":"ICML","authors":["Kiran Tomlinson","Tobias Schnabel","Adith Swaminathan","Jennifer Neville"],"abstract":"Inference-time scaling via chain-of-thought (CoT) reasoning is a major driver of state-of-the-art LLM performance, but it comes with substantial latency and compute costs. We address a fundamental theoretical question: how many reasoning tokens are required to solve a problem as input size grows? By extending the bounded attention prefix oracle (BAPO) model--an abstraction of LLMs that quantifies the information flow required to solve a task--we prove lower bounds on the CoT tokens required for three canonical BAPO-hard tasks: binary majority, triplet matching, and graph reachability. We show that each requires $Ω(n)$ reasoning tokens when the input size is $n$. We complement these results with matching or near-matching upper bounds via explicit constructions. Finally, our experiments with frontier reasoning models show approximately linear reasoning token scaling on these tasks and failures when constrained to smaller reasoning budgets, consistent with our theoretical lower bounds. Together, our results identify fundamental bottlenecks in inference-time compute through CoT and offer a principled tool for analyzing optimal reasoning length.","url_abs":"https://arxiv.org/abs/2602.02909","url_pdf":"https://arxiv.org/pdf/2602.02909","source":{"archive":null,"snapshot":"2025-07-28","note":"not in the Papers with Code archive (frozen at the snapshot)","row_kind":"graph","title_abstract_authors_date":"arXiv metadata, CC0 1.0 (https://info.arxiv.org/help/license)"},"code_links":[],"tasks":[],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2602.02909","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2602.02909"}},"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":[{"mentioned_in_github":null,"is_official":null,"provenance":"deterministic:regex_extraction","mentioned_in_paper":null,"url":"https://github.com/microsoft/bapo-cot","reach":null}],"summary":{"unverified":7},"by_repo_kind":{"found_in_text":{"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":"63200532c5af76a9","entry":"compute_accs","repo":"microsoft/bapo-cot","repo_kind":"found_in_text","path":"results.py","file_url":"https://github.com/microsoft/bapo-cot/blob/HEAD/results.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":"63200532c5af76a9"}},{"code_sha256_prefix":"e46f6098318fc90a","entry":"create_provider","repo":"microsoft/bapo-cot","repo_kind":"found_in_text","path":"providers.py","file_url":"https://github.com/microsoft/bapo-cot/blob/HEAD/providers.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":"e46f6098318fc90a"}},{"code_sha256_prefix":"d667ccaf0a0890c9","entry":"generate_prompts_for_problem","repo":"microsoft/bapo-cot","repo_kind":"found_in_text","path":"experiments.py","file_url":"https://github.com/microsoft/bapo-cot/blob/HEAD/experiments.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":"d667ccaf0a0890c9"}},{"code_sha256_prefix":"71cac7aa83e58b36","entry":"get_cots","repo":"microsoft/bapo-cot","repo_kind":"found_in_text","path":"results.py","file_url":"https://github.com/microsoft/bapo-cot/blob/HEAD/results.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":"71cac7aa83e58b36"}},{"code_sha256_prefix":"17fe37a2eeec8c1a","entry":"load_data","repo":"microsoft/bapo-cot","repo_kind":"found_in_text","path":"plot.py","file_url":"https://github.com/microsoft/bapo-cot/blob/HEAD/plot.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":"17fe37a2eeec8c1a"}},{"code_sha256_prefix":"353137ad6657c18d","entry":"make_df","repo":"microsoft/bapo-cot","repo_kind":"found_in_text","path":"plot.py","file_url":"https://github.com/microsoft/bapo-cot/blob/HEAD/plot.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":"353137ad6657c18d"}},{"code_sha256_prefix":"f303dafbacbc2d08","entry":"make_df","repo":"microsoft/bapo-cot","repo_kind":"found_in_text","path":"results.py","file_url":"https://github.com/microsoft/bapo-cot/blob/HEAD/results.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":"f303dafbacbc2d08"}}]},"arxiv_metadata":{"licence":"arXiv metadata, CC0 1.0 (https://info.arxiv.org/help/license)","fields":["title","abstract","authors","date"],"primary_category":"cs.LG","source":"arxiv_2026.jsonl"},"syntology_extracted_results":null}