Skip to content

feat: add ProofNet benchmark - #1114

Merged
gwarmstrong merged 3 commits into
mainfrom
stepheng/benchmark-proofnet
Apr 23, 2026
Merged

gwarmstrong merged 3 commits into
mainfrom
stepheng/benchmark-proofnet

Conversation

@stephencge

Copy link
Copy Markdown
Contributor

Summary

Binds the ProofNet Lean4 formal-proof test split (186 theorems) to the existing math_formal_lean resources server and simple_agent (single-turn, matching NeMo-Skills' evaluation protocol). No new server code.

Includes

  • benchmarks/proofnet/ β€” benchmark config, prepare.py, prompts/default.yaml, README.
    • Data source: deepseek-ai/DeepSeek-Prover-V1.5 proofnet.jsonl pinned to commit 2c4ba9119eef74d0d611f494261b2c5bae98c69a. 186 test theorems; 185 valid rows dropped.
    • Prompt: zero-shot port of lean4/formal-proof.yaml. The upstream template has a {examples} few-shot placeholder that renders to an empty string when examples_type=None (NeMo-Skills default), so dropping it here is equivalent for zero-shot evaluation.
    • Per-row schema {name, split, header, informal_prefix, formal_statement, goal} β€” byte-identical to Skills' nemo_skills/dataset/proofnet/test.jsonl (verified via sorted-diff across all 186 rows).
    • prepare.py asserts len(test_rows) == 186 to catch upstream drift.

Test plan

  • ng_prepare_benchmark writes 186-row JSONL byte-identical to NeMo-Skills' upstream.
  • ng_list_benchmarks shows proofnet bound to proofnet_math_formal_lean_simple_agent with num_repeats=32.
  • Existing resources_servers/math_formal_lean tests unaffected (mocked sandbox).
  • pre-commit run --files benchmarks/proofnet/**/* clean.

End-to-end pass@k baseline deferred to a follow-up run with a Lean sandbox; this PR is a pure binding β€” same pipeline as the miniF2F port (#1111) which was validated against NeMo-Skills.

πŸ€– Generated with Claude Code

stephencge and others added 3 commits April 22, 2026 13:52
Binds the ProofNet Lean4 formal-proof test split (186 theorems) to the existing
`math_formal_lean` resources server and `simple_agent` (single-turn, matching
NeMo-Skills' evaluation protocol). No new server code.

## Includes

- `benchmarks/proofnet/` β€” benchmark config, `prepare.py`, `prompts/default.yaml`,
  README.
  - Data source: deepseek-ai/DeepSeek-Prover-V1.5 `proofnet.jsonl` (186 test
    theorems; 185 `valid` rows dropped), pinned to commit
    `2c4ba9119eef74d0d611f494261b2c5bae98c69a`.
  - Prompt: zero-shot port of `lean4/formal-proof`. Upstream template has a
    `{examples}` placeholder that renders to an empty string when
    `examples_type=None` (the NeMo-Skills default), so dropping it here is
    equivalent for zero-shot evaluation.
  - Per-row schema `{name, split, header, informal_prefix, formal_statement, goal}`
    β€” byte-identical to Skills' `nemo_skills/dataset/proofnet/test.jsonl` (verified
    via sorted-diff across all 186 rows).
  - `prepare.py` asserts `len(test_rows) == 186` to catch upstream drift.

## Test plan

- `ng_prepare_benchmark` writes 186-row JSONL byte-identical to Skills' upstream.
- `ng_list_benchmarks` shows `proofnet` bound to
  `proofnet_math_formal_lean_simple_agent` with `num_repeats=32`.
- Existing `resources_servers/math_formal_lean` tests unaffected (mocked sandbox).
- `pre-commit run --files benchmarks/proofnet/**/*` clean.

End-to-end pass@k baseline deferred to a follow-up run with a Lean sandbox;
same pipeline as the miniF2F port (#1111) which was validated against Skills.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Signed-off-by: Stephen Ge <stephen.ge@gmail.com>
Two changes on top of the original port:

1. Prompt switch: drop the zero-shot port of `lean4/formal-proof` in favor of
   the shared `lean4_formal_proof_deepseek_prover_v2` prompt used by miniF2F
   (#1111) and MOBench (#1113). Intentionally differs from NeMo-Skills'
   upstream choice for ProofNet; per user request, all four ported Lean
   benchmarks should use the same prompt for consistency.

2. Move to shared location: reference
   `benchmarks/prompts/lean4_formal_proof_deepseek_prover_v2.yaml` (merged in
   via main) and delete the benchmark-local `prompts/default.yaml`.

Data output and server binding unchanged; only prompt rendering differs at
rollout time.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Signed-off-by: Stephen Ge <stephen.ge@gmail.com>
@copy-pr-bot

copy-pr-bot Bot commented Apr 23, 2026

Copy link
Copy Markdown

This pull request requires additional validation before any workflows can run on NVIDIA's runners.

Pull request vetters can view their responsibilities here.

Contributors can view more details about this message here.

@gwarmstrong
gwarmstrong enabled auto-merge (squash) April 23, 2026 18:13
@gwarmstrong
gwarmstrong merged commit a652715 into main Apr 23, 2026
6 checks passed
@gwarmstrong
gwarmstrong deleted the stepheng/benchmark-proofnet branch April 23, 2026 18:25
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants