Skip to content

RecursiveProver parent proof should use extended thinking for hard assembly steps #106

Description

@crqu

Problem

The recursive prover's parent proof step (_prove_parent_with_children) calls the LLM with use_extended_thinking=self._prover_config.use_extended_thinking, but the test harness and default pipeline configuration run with extended_thinking=False.

For competition-level problems (Putnam, IMO), proving the parent theorem from child lemma axioms often requires multi-step reasoning:

  • Set equality proofs ({n | P(n)} = {1}): need ext → biconditional → forward witness + backward impossibility argument
  • Modular arithmetic: need case analysis on residues, which requires planning before tactic selection
  • Induction/descent: need to identify the right induction variable and base case

Without extended thinking, the model gets ~900 output tokens to produce both the proof strategy and Lean 4 tactics. That's insufficient for Putnam-level proofs.

Evidence

From the Putnam 2024 A1 E2E run (PR #104):

llm_request  extended_thinking=False  max_tokens=4096
llm_response output_tokens=880  → recursive_prover_parent_failed failure_type=stuck_goal retry=1
llm_response output_tokens=986  → recursive_prover_parent_failed failure_type=stuck_goal retry=2
llm_response output_tokens=923  → recursive_prover_parent_failed failure_type=stuck_goal retry=3

The model uses 880-986 tokens per attempt but can't close the proof. Extended thinking would give it a dedicated reasoning budget before generating tactics.

Proposed Fix

Two options (not mutually exclusive):

Option A — Adaptive extended thinking based on proof complexity:

If the parent theorem involves set equality, quantifier alternation, or >3 child lemmas, automatically enable extended thinking for the parent proof step:

use_thinking = self._prover_config.use_extended_thinking
if not use_thinking and self._should_use_extended_thinking(node, children):
    use_thinking = True

Where _should_use_extended_thinking checks heuristics like:

  • Statement contains = { (set equality)
  • Statement has nested ∀ ... ∃ (quantifier alternation)
  • Node has >3 children (complex assembly)
  • Retry count >1 (previous attempts failed without thinking)

Option B — Always enable extended thinking for parent proofs:

Parent proofs are the hardest step (assembling child results into the main theorem). The cost of extended thinking (~2x tokens) is small relative to the cost of 3 failed retries + diagnosis + reformulation.

Impact

  • Putnam 2024 A1 currently fails at parent assembly despite correct decomposition into 5 valid child lemmas
  • "Beyond the Library" (arXiv:2606.31134) achieves 91.3% on PutnamBench — they use extended reasoning at the assembly step
  • This is likely the single highest-impact change for competition-level proof success rate

References

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions