Paper: 2611.11368
Authors: Rui Zou, Xin Zhao, Mengqi Wei, Ji-Rong Wen (Gaoling School of Artificial Intelligence, Renmin University of China; Central China Normal University)
Categories: cs.AI

The Gap

Despite rapid advances in frontier reasoning models (e.g., DeepSeek-R1, GPT-o-series, Gemini-Thinking), large language models (LLMs) continue to stumble on intricate, multi-step mathematical problems. A critical bottleneck is their inability to reliably self-correct: when asked to reflect on their own mistakes, LLMs frequently fall into hallucinations, “confirming” invalid solutions or rewriting correct answers into incorrect ones (negative damage transitions C→WC \to W).

Existing verification paradigms predominantly operate in a single direction, each harboring fatal structural blind spots:

  1. Backward Verification (Answer-to-Constraint): Starts from the proposed final answer and substitutes it back into the original problem constraints (e.g., ProgCo).
    The Blind Spot: Passing surface-level constraints does not guarantee that the reasoning path was logically valid, nor does it guarantee objective completeness (e.g., finding all valid roots, non-trivial boundary solutions, or global extrema).
  2. Forward Verification (Premise-to-Conclusion): Reads the solution step by step from problem conditions, verifying each deduction sequentially (e.g., Process Reward Models / PRMs).
    The Blind Spot: On long reasoning chains, forward checkers suffer from error accumulation and cognitive drift, frequently losing sight of global boundary constraints or accepting plausible-sounding but mathematically vacuous intermediate claims.
                    THE UNIDIRECTIONAL VERIFICATION DILEMMA

  Problem q: Solve f(x) = 0 under global constraints C

  [Backward Verification]:
  Answer a_0 ──> Check against constraints C?
  ├── Pros: Bypasses complex intermediate algebraic drift.
  └── Cons: Blind to faulty reasoning paths and missing root sets (e.g., missed x_2).

  [Forward Verification]:
  Condition q ──> Step 1 ──> Step 2 ──> ... ──> Step K
  ├── Pros: Checks local logical entailment (q ∧ c_1 ... |= c_k).
  └── Cons: Accumulates verification error on long chains; easily overlooks global invariants.

  Missing Piece: How to close the loop between both directions without invalidating states?

The Increment

One sentence: Renmin University researchers propose BiVerify, an agentic mathematical verification system that establishes a formal state machine coordinating backward constraint checking and forward claim entailment over the exact same solution candidate, dynamically managing direction switching, candidate updates, and state resets while offloading exact calculations to shared symbolic tools.

                          BIVERIFY BIDIRECTIONAL ARCHITECTURE

                                 Problem q + Response y_0
                                            │
                                            ▼
                          Extract Candidate Answer a_0: C_0 = (q, y_0, a_0)
                                            │
                        ┌───────────────────┴───────────────────┐
                        │                                       │
                        ▼                                       ▼
             [Backward Verification]                 [Forward Verification]
             Constraint Decomposition                Claim Extraction: K_t = {c_{t,i}}
             Adjudication: A^B_ver                   Step Entailment: q ∧ c_{<i} |= c_i
                        │                                       │
                        └───────────────────┬───────────────────┘
                                            │
                                            ▼
                               [Bidirectional Scheduler S]
                                State: Σ_t = (C_t, B_t, F_t, d_t)
                                            │
              ┌─────────────────────────────┼─────────────────────────────┐
              │ B_t = Pass ∧ F_t = Pass     │ s_t = Pass ∧ ¬Accept        │ s_t = Fail
              ▼                             ▼                             ▼
       [TERMINAL ACCEPT]            [SWITCH DIRECTION]            [UPDATE / REFINE]
       Candidate is certified!      d_t ──> Other(d_t)            Generate Proposal Ĉ_t
                                                                  Reset: B = F = Unknown!

Core Framework & Mechanisms

1. Bidirectional Scheduling State Machine

BiVerify formulates verification as a closed-loop discrete dynamical system. For candidate Ct=(q,yt,at)C_t = (q, y_t, a_t) at turn tt, the scheduling state is: Σt=(Ct,Bt,Ft,dt)\Sigma_t = (C_t, B_t, F_t, d_t) where Bt,Ft∈{Unknown,Pass,Fail}B_t, F_t \in \{\text{Unknown}, \text{Pass}, \text{Fail}\} represent the directional verification verdicts, and dt∈{B,F}d_t \in \{B, F\} is the active direction.

The system enforces a strict Joint Acceptance Criterion: Accept(Ct)  ⟺  Bt=Pass∧Ft=Pass\text{Accept}(C_t) \iff B_t = \text{Pass} \wedge F_t = \text{Pass} Crucially, pass states are candidate-bound: if candidate CiC_i passes backward checks and an updated proposal CjC_j (j≠ij \neq i) passes forward checks, neither is accepted. Prior verification records are wiped whenever a candidate is updated, preventing cross-candidate state pollution.

The scheduling transition function S(Σt,st,C^t)S(\Sigma_t, s_t, \hat{C}_t) follows:

\textbf{Accept}, & \text{if } B_t = F_t = \text{Pass} \\ \textbf{Switch}, & \text{if } s_t = \text{Pass} \wedge \neg\text{Accept}(C_t) \\ \textbf{Update}, & \text{if } s_t = \text{Fail} \wedge \hat{C}_t \neq C_t \\ \textbf{Refine}, & \text{if } s_t = \text{Fail} \wedge \hat{C}_t = C_t \end{cases}$$ - **Switch**: Switches $d_t \to \text{Other}(d_t)$ to verify the complementary direction. - **Update**: Adopts the revised solution $C_{t+1} \leftarrow \hat{C}_t$ and resets both states $B_{t+1} = F_{t+1} = \text{Unknown}$. - **Refine**: Fixes ambiguous verification workflows without altering the candidate. ### 2. Backward & Forward Verification Agents - **Backward Adjudication**: Decomposes problem $q$ into explicit algebraic, boundary, and domain constraints. The proposed answer $a_t$ is back-substituted. Mathematical tools (SymPy, Z3 SMT solver) evaluate satisfaction symbolically. - **Forward Step Entailment**: Extracts an ordered list of key intermediate claims $K_t = \{c_{t,1}, c_{t,2}, \dots, c_{t,n}\}$. Each claim is verified under semantic entailment: $$q \wedge c_{t,1} \wedge \dots \wedge c_{t,i-1} \models c_{t,i}$$ If claim $k_t$ fails, verification halts immediately, pinpointing $c_{t,k_t}$ as the exact source of error to guide surgical correction. ``` FORWARD CLAIM ENTAILMENT CHAIN Problem q: "Find all real roots of x^4 - 5x^2 + 4 = 0" Claim 1: Let u = x^2, then u^2 - 5u + 4 = 0 ──> [Entailed] ✓ Claim 2: Roots for u are u = 1 and u = 4 ──> [Entailed] ✓ Claim 3: Since u = x^2, x = ±1 and x = ±2 ──> [Entailed] ✓ Claim 4: Completeness: Exactly 4 distinct roots ──> [Entailed] ✓ Verdict: Pass ``` --- ## Benchmark Results & Empirical Findings ### 1. Main Results Across 7 Model Configurations The authors evaluated BiVerify across 5 challenging mathematical benchmarks (including MATH, OlympiadBench, and ScaleDiff-Math) against 7 model backbones. BiVerify delivers massive, consistent gains over initial scores and outperforms all single-direction baselines: | Model Backbone | Initial Accuracy (%) | Self-Refine | ProgCo-Py (Prog. SOTA) | Backward-Only | Forward-Only | **BiVerify (Ours)** | Net Delta vs Initial | | :--- | :--- | :--- | :--- | :--- | :--- | :--- | :--- | | **DeepSeek-Flash** | 44.1 | 50.6 (+6.5) | 52.9 (+8.8) | 61.2 (+17.1) | 60.6 (+16.5) | **71.2** | **+27.1** | | **DeepSeek-Flash-Think** | 88.8 | 83.5 (-5.3) | 88.2 (-0.6) | 89.4 (+0.6) | 86.5 (-2.3) | **88.8** | **+0.0** | | **DeepSeek-Pro** | 38.8 | 53.5 (+14.7) | 49.4 (+10.6) | 57.1 (+18.3) | 69.4 (+30.6) | **75.9** | **+37.1** | | **GPT-Mini** | 22.9 | 39.4 (+16.5) | 24.7 (+1.8) | 29.4 (+6.5) | 70.6 (+47.7) | **70.6** | **+47.7** | | **GPT-Mini-Think** | 50.6 | 60.6 (+10.0) | 59.4 (+8.8) | 61.2 (+10.6) | 63.5 (+12.9) | **66.5** | **+15.9** | | **Gemini-Lite** | 36.5 | 36.5 (+0.0) | 35.9 (-0.6) | 40.0 (+3.5) | 40.0 (+3.5) | **41.2** | **+4.7** | | **Gemini-Lite-Think** | 37.6 | 41.2 (+3.6) | 41.8 (+4.2) | 42.4 (+4.8) | 39.4 (+1.8) | **45.9** | **+8.3** | | **Mean Across All Models** | **45.6** | **52.2 (+6.6)** | **50.3 (+4.7)** | **54.4 (+8.8)** | **61.4 (+15.8)** | **65.7** | **+20.1** | Key observations: - **Beating SOTA baselines**: BiVerify achieves an average accuracy of **65.7%**, outpacing the strongest public baseline (ProgCo-Py at 50.3%) by **+15.4 percentage points**. - **Preventing Negative Damage**: On reasoning models like `DeepSeek-Flash-Think`, standard Self-Refine degrades accuracy from 88.8% down to 83.5% (-5.3%). BiVerify completely avoids this degradation (+0.0%), validating solutions without destructive tampering. ### 2. Transition Analysis: Corrections vs Damage By tracking transition dynamics across 1,190 problem-model instances: - **Wrong-to-Correct ($W \to C$)**: BiVerify successfully corrects **40.3%** of initially wrong answers (compared to only 9.4% for ProgCo and 12.2% for ProgCo-Py). - **Correct-to-Wrong Damage ($C \to W$)**: BiVerify limits damage to just **4.1%**, proving that accuracy jumps stem from true error correction rather than aggressive, lucky re-sampling. ### 3. Scaling with Problem Difficulty Categorizing problems by empirical difficulty (number of base models solving initially): - On **"Very Hard" problems** (initially solved by 0–1 models), BiVerify achieves a **232.4% relative accuracy gain**, compared to just 40.5% for ProgCo-Py. --- ## Practical Implications 1. **The Fallacy of Unidirectional Self-Correction**: Relying on prompting LLMs to "check your work" forwards or backwards alone hits a hard ceiling. Bidirectional cross-examination is fundamentally necessary to catch both logic derivation errors and boundary constraint violations. 2. **Strict Candidate-State Isolation**: Self-correction pipelines must treat verification states as strictly coupled to candidate identities. Allowing "partial pass" signals to linger across revised text introduces hallucinated confidence and destabilizes reasoning loops. 3. **Synergy Between Thinking Models and Symbolic Oracles**: Decoupling fuzzy reasoning (handled by the LLM) from exact algebraic computation and constraint satisfiability (handled by SymPy / Z3) eliminates arithmetic calculation noise, letting the verifier focus purely on logical rigor.

论文: 2611.11368
作者: 邹瑞(Rui Zou)、赵鑫(Xin Zhao)、魏梦琪(Mengqi Wei)、文继荣(Ji-Rong Wen)(中国人民大学高瓴人工智能学院、华中师范大学国家教育大数据工程技术研究中心)
分类: cs.AI

核心痛点:大模型数学自我纠错的“单向死局”

以 DeepSeek-R1、OpenAI o-系列以及 Gemini-Thinking 为代表的前沿推理模型,虽然在长思维链(CoT)推理上取得了长足进步,但在面对复杂的奥数及前沿高维数学问题时,仍然极易出现细微而致命的逻辑失误。更严峻的是,当让大模型对自己的解题过程进行“反思与自我纠错(Self-Correction)”时,模型往往陷入虚假自洽:不仅无法纠正错误,反而常常把原本正确的题目改错(即所谓的负向修正 C→WC \to W 损伤)。

究其根本,现有自我纠错方法主要依赖单向验证,存在不可逾越的结构性缺陷:

  1. 逆向验证(Backward Verification,以答案代入约束):从候选答案出发,直接代入原题的边界条件与约束方程中核验(例如 ProgCo 代码校验)。
    致命盲区:即便答案偶然吻合显式约束,也完全无法保证推导过程的数学完备性与逻辑严密性。例如在求解多解方程、极值或离散组合时,逆向验证极易漏掉有效根或边界解(无法核验“是否求出了全部解”)。
  2. 正向验证(Forward Verification,从条件顺推推导):沿着题干条件与解答步骤,逐行推演每一步逻辑蕴含(例如过程奖励模型 PRM)。
    致命盲区:在超长推导链条下,正向验证极易遭受认知漂移与误差累积;检查者容易陷入繁复的代数代换中,反而“一叶障目”忽略了题干最底层的全局守恒量与隐式定义域约束。
                     单向数学验证的互补性与结构盲区

  题目 q: 在全局约束 C 下求解方程 f(x) = 0 的所有解

  【逆向验证】:从候选答案 a_0 倒推回原题约束 C
  ├── 优势:跳过冗长复杂的中间代数变换,直接核验结果合法性;
  └── 缺陷:对推理过程中的逻辑跳步、虚假推论、以及“解集完整性”完全盲目(漏根无法察觉)。

  【正向验证】:题干条件 q ──> 步骤 1 ──> 步骤 2 ──> ... ──> 最终推论
  ├── 优势:严格核查局部逻辑蕴含(q ∧ c_1 ... |= c_k),精准定位步骤错误;
  └── 缺陷:在长链推导下极易误差累积,对全局边界条件的约束全局把控力薄弱。

  破局之钥:如何构建严密的双向闭环机制,使正反两向验证无缝协调、状态严格对齐?

核心突破:BiVerify 双向闭环调度架构

核心结论:中国人民大学文继荣、赵鑫团队联合华中师范大学研究者,提出全新的大模型双向数学验证框架 BiVerify。该框架通过构建形式化状态机,将**“逆向约束筛选”与“正向过程推演”**紧密闭环在同一个候选解答上,引入动态方向切换、状态清空重置与符号工具链解耦,在五大数学基准上全面刷新 SOTA,平均准确率提升 20.1 个百分点。

                         BIVERIFY 闭环双向验证系统总览

                               原始问题 q + 初始解答 y_0
                                            │
                                            ▼
                           提取候选答案 a_0: C_0 = (q, y_0, a_0)
                                            │
                        ┌───────────────────┴───────────────────┐
                        │                                       │
                        ▼                                       ▼
             【逆向验证智能体】                       【正向验证智能体】
             分解约束条件,答案代入                   提取关键断言集: K_t = {c_{t,i}}
             符号判定: A^B_ver                        语义蕴含核验: q ∧ c_{<i} |= c_i
                        │                                       │
                        └───────────────────┬───────────────────┘
                                            │
                                            ▼
                              【双向调度器 (Scheduler S)】
                               维护全局状态: Σ_t = (C_t, B_t, F_t, d_t)
                                            │
              ┌─────────────────────────────┼─────────────────────────────┐
              │ B_t = Pass ∧ F_t = Pass     │ s_t = Pass ∧ 未双向通过     │ s_t = Fail
              ▼                             ▼                             ▼
       【终态接受 ACCEPT】             【切换方向 SWITCH】            【状态重置 UPDATE】
       数学解严格认证通过!           d_t ──> 转向互补方向           生成新提议 Ĉ_t
                                                                    旧状态全部作废清空!

核心机制与数学建模

1. 严格绑定的调度状态机(Scheduling State Machine)

BiVerify 彻底改变了传统自我纠错中“随意覆盖、状态不清”的混乱逻辑,在第 tt 轮迭代中将候选解答 Ct=(q,yt,at)C_t = (q, y_t, a_t) 的验证状态形式化定义为四元组: Σt=(Ct,Bt,Ft,dt)\Sigma_t = (C_t, B_t, F_t, d_t) 其中:

  • Bt,Ft∈{Unknown,Pass,Fail}B_t, F_t \in \{\text{Unknown}, \text{Pass}, \text{Fail}\} 分别记录当前候选在逆向(Backward)与正向(Forward)维度的裁决结果。
  • dt∈{B,F}d_t \in \{B, F\} 为当前激活的验证方向。

系统确立了绝对刚性的联合接受准则(Joint Acceptance Criterion): Accept(Ct)  ⟺  Bt=Pass∧Ft=Pass\text{Accept}(C_t) \iff B_t = \text{Pass} \wedge F_t = \text{Pass} 关键定理:验证状态与候选解具有强物理绑定性。 若解答 CiC_i 仅通过了逆向核验,而系统在修改后生成了新解答 CjC_j并通过了正向核验,系统绝不认可两者的拼接,必须触发状态彻底清空,确保最终采纳的解答在同一个静态版本上同时通过双向检验。

调度函数 S(Σt,st,C^t)S(\Sigma_t, s_t, \hat{C}_t) 执行状态转移:

\textbf{Accept}, & \text{当且仅当 } B_t = F_t = \text{Pass} \\ \textbf{Switch}, & \text{当前方向通过但未完全闭环,切换至互补方向 } \text{Other}(d_t) \\ \textbf{Update}, & \text{当前方向报错且产生新候选 } \hat{C}_t \neq C_t \implies \text{重置 } B_{t+1} = F_{t+1} = \text{Unknown} \\ \textbf{Refine}, & \text{报错源于验证流程自身定义不清,修正流程后重试当前方向} \end{cases}$$ ### 2. 逆向约束解构与正向断言蕴含 - **逆向验证模块**:先于正向执行。将原题条件拆解为显式代数等式、不等式与值域边界;将候选答案直接代入,调用 SymPy 或 Z3 求解器执行精确的符号真值检验。若代入不合规,无需执行昂贵的正向推演,即可立刻打回修改。 - **正向推演模块**:从解答中抽取拓扑有序的关键断言链 $K_t = \{c_{t,1}, c_{t,2}, \dots, c_{t,n}\}$。逐级验证局部语义蕴含(Semantic Entailment): $$q \wedge c_{t,1} \wedge \dots \wedge c_{t,i-1} \models c_{t,i}$$ 一旦第 $k_t$ 个断言出现逻辑裂痕,验证立即终止并返回断言失败快照,为修改模块提供靶向手术级错误定位。 ``` 正向断言链的逐步语义蕴含示例 题目 q: "求方程 x^4 - 5x^2 + 4 = 0 在实数范围内的所有根" 断言 1: 设 u = x^2, 原方程转化为二次方程 u^2 - 5u + 4 = 0 ──> [蕴含成立] ✓ 断言 2: 解得根为 u = 1 或 u = 4 ──> [蕴含成立] ✓ 断言 3: 由 x^2 = 1 得 x = ±1; 由 x^2 = 4 得 x = ±2 ──> [蕴含成立] ✓ 断言 4: 完备性检查: 四次多项式在实数域内至多 4 根,解集完备 ──> [蕴含成立] ✓ 正向裁决: Pass ``` --- ## 实验结果与深度剖析 ### 1. 七大主流模型基准测试评测 研究团队在包含 MATH、OlympiadBench、ScaleDiff-Math 等五大高难度数学基准测试集上,针对 DeepSeek、GPT 和 Gemini 系列共 7 个模型配置进行了全面评测: | 评测底座模型 | 初始得分 (Initial %) | Self-Refine | ProgCo-Py (代码校验 SOTA) | 纯逆向 (Backward) | 纯正向 (Forward) | **BiVerify (本文方案)** | 相对初始净提升 | | :--- | :--- | :--- | :--- | :--- | :--- | :--- | :--- | | **DeepSeek-Flash** | 44.1 | 50.6 (+6.5) | 52.9 (+8.8) | 61.2 (+17.1) | 60.6 (+16.5) | **71.2** | **+27.1** | | **DeepSeek-Flash-Think** | 88.8 | 83.5 (-5.3) | 88.2 (-0.6) | 89.4 (+0.6) | 86.5 (-2.3) | **88.8** | **+0.0 (无损伤)** | | **DeepSeek-Pro** | 38.8 | 53.5 (+14.7) | 49.4 (+10.6) | 57.1 (+18.3) | 69.4 (+30.6) | **75.9** | **+37.1** | | **GPT-Mini** | 22.9 | 39.4 (+16.5) | 24.7 (+1.8) | 29.4 (+6.5) | 70.6 (+47.7) | **70.6** | **+47.7** | | **GPT-Mini-Think** | 50.6 | 60.6 (+10.0) | 59.4 (+8.8) | 61.2 (+10.6) | 63.5 (+12.9) | **66.5** | **+15.9** | | **Gemini-Lite** | 36.5 | 36.5 (+0.0) | 35.9 (-0.6) | 40.0 (+3.5) | 40.0 (+3.5) | **41.2** | **+4.7** | | **Gemini-Lite-Think** | 37.6 | 41.2 (+3.6) | 41.8 (+4.2) | 42.4 (+4.8) | 39.4 (+1.8) | **45.9** | **+8.3** | | **全模型宏平均得分** | **45.6** | **52.2 (+6.6)** | **50.3 (+4.7)** | **54.4 (+8.8)** | **61.4 (+15.8)** | **65.7** | **+20.1** | 核心结论: - **断崖式超越现有 SOTA**:BiVerify 取得 **65.7%** 的平均准确率,较当前公开最强的程序化纠错框架 ProgCo-Py(50.3%)大幅领先 **+15.4 个百分点**。 - **终结反思负向损伤难题**:在高智力推理模型 `DeepSeek-Flash-Think`(初始高达 88.8%)上,传统 Self-Refine 会将准确率大幅改退至 83.5%(损伤 -5.3%),而 BiVerify 凭借严格的逆向门禁与闭环一致性,达成了 **0.0% 的无损通过**。 ### 2. 状态转移深度剖析:纠错率 vs 破坏率 在 1,190 个典型样本流转中: - **错误转正确率($W \to C$)**:BiVerify 成功纠正了 **40.3%** 的初始错题,而 ProgCo 仅能修正 9.4%,ProgCo-Py 仅能修正 12.2%。 - **正确转错误破坏率($C \to W$)**:BiVerify 将对原本正确题目的误改率严格压制在 **4.1%** 的极低水位,充分证明了精度提升来自于真实的数学纠错能力,而非激进的重采样撞大运。 ### 3. 极难问题上的爆发力 按 7 大模型初始解题人数对题目难度分级: - 在最困难的 **"Very Hard" 级难题**(初始仅有 0–1 个模型答对)上,BiVerify 斩获了 **232.4% 的相对精度跃升**,远超 ProgCo-Py 的 40.5%,真正展现了复杂推理下的纠错深水区攻坚能力。 --- ## 实践启示与工程落地 1. **废弃粗暴的“让模型自行反思”模式**:单纯给 LLM 提示词施加“请检查你的答案”只能诱导模型陷入确认偏误。必须在工程上将正向逻辑蕴含与逆向约束回代解耦并闭环控制。 2. **严防跨轮次状态污染**:自我纠错智能体系统在更新解答文本时,必须以形式化状态机将历史核验记录完全失效;任何“由于前一版本逆向通过,故新版本直接免检”的偷懒优化,都会直接导致严重幻觉。 3. **大模型负责抽象逻辑,符号求解器负责硬算**:将 SymPy 与 Z3 作为底层算力工具嵌入正反验证链路,使大模型彻底解放出容易出错的数值乘除与高阶因式分解,聚焦于宏观证明策略与语义推理。