Sans fine-tuning, une IA prouve les 6 problèmes de l'IMO 2026 en Lean
Un stagiaire d'Amazon Web Services et des collègues de la Case Western Reserve University ont conçu un système qui prouve des théorèmes et la correction de programmes dans le langage Lean. Il n'y a aucun fine-tuning : le système repose sur le modèle Anthropic Fable-5, utilisé tel quel. Il a résolu les six problèmes formalisés de l'Olympiade internationale de mathématiques 2026, ainsi que toutes les tâches du jeu VERINA (code vérifié). Une réponse n'est comptabilisée qu'après vérification par le noyau de Lean : il faut soit une preuve, soit une réfutation. L'agent principal découpe le problème et envoie des agents enfants tester différentes approches. Chacun dispose d'un contexte vierge, et les résultats remontent au parent dès qu'ils sont prêts, sans attendre les autres branches. Les anciens benchmarks étant presque épuisés, les auteurs en ont construit un nouveau : des problèmes d'olympiade de programmation sont transformés en tâches de vérification de code Rust réel. • Le système dispose de 30 minutes par énoncé • La vérification Lean a été déportée dans un service distinct sur Kubernetes • Les preuves les plus difficiles ont nécessité des dizaines de sous-agents en un seul lancement
Traité par IA depuis Hugging Face Daily Papers ; édité par Hamidun News
Des chercheurs de la Case Western Reserve University (travail réalisé pendant un stage chez Amazon Web Services) montrent qu'un grand modèle de langage prêt à l'emploi, sans aucun fine-tuning, peut prouver des théorèmes complexes et la correction de programmes, à condition d'organiser correctement le travail autour de lui. Ils ont choisi Anthropic Fable-5 comme modèle. Les preuves sont écrites dans Lean : dans ce langage, un petit « noyau » vérifie chaque étape du raisonnement, et il est impossible de le tromper.
Le système a résolu les six problèmes formalisés de l'Olympiade internationale de mathématiques 2026. Il est aussi venu à bout de toutes les tâches de VERINA (un jeu de programmation vérifiée) et a traité les conditions de vérification de NTP4VC, un jeu industriel de vérification formelle de code. Il résout en outre des problèmes de PutnamBench, un jeu de problèmes formalisés issus du concours universitaire Putnam.
Chaque résultat comptabilisé est soit une preuve, soit une réfutation de l'énoncé, et les deux sont vérifiées par le noyau de Lean.
Un arbre d'agents plutôt qu'une série de relances
La difficulté tient à ce que Lean ne répond qu'à une question locale : une étape donnée passe-t-elle ou non ? Un mauvais découpage du problème ou un lemme manquant (énoncé auxiliaire) ne se révèlent qu'après des dizaines d'étapes. De plus, le modèle est limité par sa fenêtre de contexte et son budget de calcul.
Les auteurs résolvent ce problème de façon récursive. L'agent principal lance des agents enfants, et chacun cherche soit une autre stratégie de preuve, soit le lemme nécessaire. Voici comment le dispositif fonctionne :
• chaque enfant dispose d'un contexte vierge et de sa propre copie du projet ; • un enfant peut lui-même engendrer des enfants, et tous les agents ont les mêmes outils ; • un enfant peut consacrer des dizaines d'appels à un seul lemme, mais ne renvoie au parent que le lemme abouti, un contre-exemple ou des résultats partiels ; • les résultats parviennent au parent au tour suivant, sans attendre les autres branches, si bien qu'une découverte précoce peut réorienter la recherche ; • la recherche s'arrête dès que la première preuve valable est acceptée.
L'esprit rappelle la recherche arborescente de Monte-Carlo, mais c'est le modèle lui-même qui décide. Il lit le contenu des réponses de ses enfants et choisit seul quelles branches poursuivre, modifier ou étendre. Le système n'utilise ni compteurs de visites ni estimations moyennes.
Un autre outil est l'essai parallèle de tactiques. L'agent lance plusieurs candidates à la fois sur l'état courant de la preuve. Celle qui fonctionne est réintégrée au contexte, tandis que les traces des tentatives échouées sont écartées, ce qui évite d'encombrer le contexte.
Lean comme service scalable
Les preuves les plus difficiles ont nécessité des dizaines de sous-agents dans un même lancement. Une seule machine n'offrait pas assez de puissance pour Lean : la vérification a donc été déportée dans un service distinct, sans état. Les clients envoient le code source Lean par JSON-RPC au lieu de renvoyer à des fichiers locaux. Toute réplique disponible, pourvu qu'elle utilise les mêmes versions de Lean et de Mathlib, peut traiter n'importe quelle requête.
Chaque réplique contient un pool de processus de travail dans lesquels la bibliothèque Mathlib est préchargée. L'import prend des dizaines de secondes ; les processus sont donc réutilisés, et la vérification sur un processus « chaud » est nettement plus rapide. Les répliques tournent sous Kubernetes, et leur nombre s'ajuste automatiquement à la charge.
Le système est par ailleurs protégé contre la triche. Un agent qui modifie le fichier de preuve pourrait affaiblir l'énoncé du théorème, laisser un `sorry` en guise de bouchon ou ajouter un axiome. Tout ce qui précède la signature du théorème est donc gelé, et la vérification finale revient à Lean Comparator : le fichier doit compiler sans bouchon et n'utiliser que les axiomes autorisés. Le rapport de réussite de l'agent lui-même n'est pas pris en compte.
Un nouvel examen : du code d'olympiade comme tâches de vérification
Les anciens benchmarks sont presque épuisés, et les jeux de vérification de code rédigés à la main restent modestes : ils comptent quelques centaines de tâches, que l'on peut mémoriser ou retrouver dans les données d'entraînement. Les auteurs ont donc construit un pipeline qui génère les tâches automatiquement :
• un agent codeur écrit des solutions sûres en Rust pour des problèmes de type LeetCode, où une fonction pure opère sur des données simples (nombres, listes, chaînes, arbres, listes chaînées) ; • la solution passe des tests de référence, puis est traduite en un modèle exécutable en Lean ; • Rust et Lean sont exécutés sur les mêmes entrées, et seuls les programmes dont les sorties coïncident entièrement sont retenus ; • un agent distinct rédige la spécification, c'est-à-dire une propriété qui doit être vérifiée ou violée ; • l'énoncé est gelé, puis le prouveur le démontre ou le réfute.
Par rapport aux jeux rédigés à la main, ces tâches imposent des obligations au niveau de l'implémentation : arithmétique à largeur fixe, erreurs explicites, boucles générées, conversions de types, remplacement fonctionnel de l'état mutable. Les réfutations fournissent des étiquettes négatives, absentes des pipelines qui ne produisent que des preuves. La spécification est écrite par un autre agent avant que le prouveur ne la voie, et celui-ci ne peut pas choisir une formulation plus facile.
Sur un échantillon d'énoncés, avec une limite de 30 minutes par énoncé, le système n'en résout qu'une partie. Pour un prouveur qui a presque épuisé les anciens benchmarks, ces tâches restent loin de la saturation. On peut les faire passer à l'échelle par le calcul, s'en servir pour comparer d'autres démonstrateurs, et les utiliser comme récompenses dans l'apprentissage par renforcement à récompenses vérifiables (RLVR). Ce test sur du code ne « devine » rien : il produit un verdict vérifiable du noyau. Les mutations de programmes (de petites modifications d'un code correct) fournissent des tâches supplémentaires à étiquettes négatives, mais l'article ne les évalue pas.
Ce que cela change pour les ingénieurs
La principale leçon pratique : sans fine-tuning, on peut miser sur l'infrastructure autour du modèle. L'isolation des contextes, la recherche asynchrone, les essais parallèles et un service de vérification élastique permettent à un modèle ordinaire d'obtenir avec Lean un résultat qui exigeait jusqu'ici des modèles spécialement entraînés, comme Goedel-Code-Prover. Pour ceux qui construisent des agents de vérification de code, le schéma associant énoncé gelé et vérification finale indépendante sera aussi utile : il couvre les moyens les plus courants de tromper le vérificateur.
- 31 oct. 2026Mirendil dévoile Fern 0.1 : contexte de 10 millions de tokens, mais agent faible
- 30 oct. 2026Mistral ouvre les poids de Large 4 : fort en code, mais les modèles chinois affichent 32 points contre 26
- 30 oct. 2026128 agents IA sans chef passent 49% de tests en plus qu'un seul agent
- 30 oct. 2026MoEngage ouvre 400 API privées à ses agents IA via AgentCore Gateway, sans serveurs MCP maison
Questions clés sur cet article
Que sait-on sur Un arbre d'agents plutôt qu'une série de relances ?
La difficulté tient à ce que Lean ne répond qu'à une question locale : une étape donnée passe-t-elle ou non ? Un mauvais découpage du problème ou un lemme manquant (énoncé auxiliaire) ne se révèlent qu'après des dizaines d'étapes. De plus, le modèle est limité par sa fenêtre de contexte et son budget de calcul. Les auteurs résolvent ce problème de façon récursive. L'agent principal lance des agents enfants, et chacun cherche soit une autre stratégie de preuve, soit le lemme nécessaire. Voici comment le dispositif fonctionne : chaque enfant dispose d'un contexte vierge et de
Que sait-on sur Lean comme service scalable ?
Les preuves les plus difficiles ont nécessité des dizaines de sous-agents dans un même lancement. Une seule machine n'offrait pas assez de puissance pour Lean : la vérification a donc été déportée dans un service distinct, sans état. Les clients envoient le code source Lean par JSON-RPC au lieu de renvoyer à des fichiers locaux. Toute réplique disponible, pourvu qu'elle utilise les mêmes versions de Lean et de Mathlib, peut traiter n'importe quelle requête. Chaque réplique contient un pool de processus de travail dans lesquels la bibliothèque Mathlib est préchargée. L'impor
Que sait-on sur Un nouvel examen : du code d'olympiade comme tâches de vérification ?
Les anciens benchmarks sont presque épuisés, et les jeux de vérification de code rédigés à la main restent modestes : ils comptent quelques centaines de tâches, que l'on peut mémoriser ou retrouver dans les données d'entraînement. Les auteurs ont donc construit un pipeline qui génère les tâches automatiquement : un agent codeur écrit des solutions sûres en Rust pour des problèmes de type LeetCode, où une fonction pure opère sur des données simples (nombres, listes, chaînes, arbres, listes chaînées) ; la solution passe des tests de référence, puis est traduite en un modèle e
Build & Ship Production AI Agents Without Boilerplate Code
Start your free 72-hour trial at Hamidun Academy (academy.hamidun.com) — interactive lessons on Claude Code & Cursor, live Tech Radar, and production agent templates.
L'essentiel de l'IA — une fois par semaine
Sept actus qui ont vraiment compté, choisies à la main. Sans bruit ni communiqués.
C'est fait ! Vérifiez votre boîte mail pour la confirmation.