UniMath-35B-A3B is an open-source olympiad-level mathematical reasoning model with 35 billion total parameters and 3 billion activated per token. Developed by UniPat AI, it is obtained by further post-training Qwen3.6-35B-A3B on fine-grained proof-synthesis data covering the full arc of a proof: initial attempt, self-critique, obstruction diagnosis, targeted repair, and final synthesis. This activates a reusable self-evolving reasoning capability rather than a fixed answer format, and at test time UniMath-35B-A3B spends additional compute auditing, repairing, and reconciling its own proof attempts instead of resampling blindly.
With this test-time self-evolution, UniMath-35B-A3B reaches human gold-medal-contestant level on IMO 2025 (35/42) and USAMO 2026 (36/42), and scores 86.0% on IMO-ProofBench.
More details can be found in our Blog and on Hugging Face.
- Fine-Grained Proof-Evolution Data: Training trajectories supervise how a proof changes, not only what the final proof says — an initial route with visible proof obligations, a critical self-assessment naming the first real obstruction, a targeted repair or reroute that preserves earned mathematics, and a final synthesis that fuses drafts, critiques, and surviving routes into one rigorous argument.
- Test-Time Self-Evolution: At inference time the model reuses this learned proof-editing loop instead of blind resampling — it samples and self-ranks a pool of candidate proofs, refines the strongest non-perfect candidates by repairing their first real obstruction, and merges surviving proofs so a clean lemma from one route can rescue a stronger route from another.
- Adaptive Inference Compute: The self-evolution loop short-circuits straight to synthesis once enough self-verified proofs accumulate, so extra inference budget is spent only where a problem is genuinely hard.
Scores use the strict {0, 1, 6, 7} proof rubric; each olympiad is out of 42 points.
w/o TTS is avg@8 direct proof attempts; w/ TTS is the final proof produced by the test-time
self-evolution loop in tts_eval.
| Benchmark | w/o TTS | w/ TTS |
|---|---|---|
| IMO 2025 (/42) | 20.25 | 35 🥇 |
| USAMO 2026 (/42) | 17.88 | 36 🥇 |
| IMO-ProofBench (%) | 52.6% | 86.0% |
See the blog post for the full per-problem breakdown and case studies.
tts_eval/— self-contained test-time scaling (TTS) evaluation framework used to produce thew/ TTSresults above. Implements thepool_refine_tournamentstrategy (sample & rank → refine the best → merge the survivors) against an OpenAI-compatible API, with bundled IMO 2025 / USAMO 2026 / IMO-ProofBench datasets and independent reference graders.
cd tts_eval
pip install -r requirements.txt
cp .env.example .env # fill in BASE_URL / API_KEY
./run_tts.sh # default config, all imo2025 problemsSee tts_eval/README.md for the full strategy description, configuration
options, and output format.
Model weights are available on Hugging Face; run the inference/evaluation scripts in this repository against them.
@misc{unipat2026unimath,
title = {UniMath: From Proof-Synthesis Data to Test-Time Self-Evolution},
author = {UniPat AI},
year = {2026},
url = {https://unipat.ai/blog/UniMath},
}