Untrusted Authors, Trusted Answers: A Calculus of Fidelity-Graded Translations
Cet article présente un calcul mécanisé sous Lean 4 et un système à double plan (« hurdy-gurdy ») qui permet à des LLM non fiables de générer des traductions auto-certifiées et à fidélité graduée entre des langages de programmation, garantissant qu'un graphe de confiance en évolution continue, vérifié par l'humain, converge vers des questions de programmes décidables avec une assurance toujours croissante.
Article original sous licence CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). Ceci est une explication générée par l'IA de l'article ci-dessous. Elle n'a pas été rédigée ni approuvée par les auteurs. Pour une précision technique, consultez l'article original. Lire la clause de non-responsabilité complète
Le dilemme du détective : quand on ne peut pas faire confiance au messager
Imaginez que vous essayiez de résoudre un mystère concernant une machine complexe, comme un moteur de voiture ou le comportement d'un personnage de jeu vidéo. Vous avez une question : « Est-ce que cette voiture va s'écraser si j'appuie sur l'accélérateur à 50 mph ? » Pour y répondre, vous ne pouvez pas simplement regarder la voiture ; vous devez traduire sa mécanique réelle et désordonnée dans un langage qu'un solveur informatique ultra-intelligent peut comprendre, comme une équation mathématique. Mais voici le piège : la personne qui traduit la voiture en mathématiques peut commettre une erreur. Peut-être a-t-elle oublié un engrenage, ou a-t-elle mal compris le fonctionnement des freins. Si le traducteur se trompe, le solveur mathématique vous donnera une réponse parfaite à la mauvaise question.
Dans le monde de l'informatique, c'est le problème de la « traduction ». Nous devons souvent déplacer un programme d'un langage (comme le C ou le Python) vers un autre (comme un casse-tête logique pour un solveur) afin de vérifier s'il est sûr. Traditionnellement, les scientifiques ont tenté de résoudre cela en prouvant que le traducteur était parfait une fois pour toutes, comme on certifie qu'un pont est sûr avant que quiconque ne roule dessus. Mais c'est incroyablement difficile, surtout lorsque les traducteurs sont complexes ou même écrits par une intelligence artificielle. Ce document pose une question différente : et si, au lieu d'essayer de prouver que le traducteur est parfait, nous construisions un système capable de détecter les erreurs du traducteur pendant qu'il travaille ? C'est la différence entre faire confiance à un guide unique pour vous guider à travers une forêt et avoir une équipe de guides qui vérifient les cartes les uns des autres, avec une règle stipulant que s'ils ne sont pas d'accord, vous vous arrêtez et cherchez qui a tort.
La machine « Hurdy-Gurdy » : une usine pour des réponses dignes de confiance
Ce document présente un système appelé hurdy-gurdy (nommé d'après un instrument de musique qui produit des mélodies, mais ici, il produit des réponses). Les auteurs, dirigés par Christoph Kirsch, proposent une nouvelle façon de gérer les programmes informatiques : les traiter comme une partie de « téléphone arabe » où chaque étape est vérifiée, et où chaque réponse est accompagnée d'un reçu.
L'idée centrale est simple mais puissante : ne faites pas confiance au traducteur ; faites confiance au processus.
Imaginez que vous ayez une question sur un programme écrit en C. Au lieu de l'envoyer à un seul traducteur, le système l'envoie sur deux chemins différents.
- La Traduction : Le programme est traduit en un langage logique plus simple (comme transformer un roman en une équation mathématique).
- La Double Vérification : Le système exécute le programme original et la version traduite côte à côte. Il vérifie s'ils se comportent de la même manière. Si c'est le cas, parfait ! Si ce n'est pas le cas, le système indique précisément l'étape où ils ont divergé, comme un arbitre sifflant une faute au moment exact où un joueur commet une faute.
- L'astuce du « Témoin » : Si le solveur dit : « Oui, un crash est possible », le système ne se contente pas de croire le solveur. Il prend la « preuve » (les conditions spécifiques qui causent le crash) et la fait circuler à rebours à travers la traduction. Il injecte ces conditions dans le programme original. Si le programme original plante réellement, alors la réponse est 100 % réelle. Le système a « rejoué » la scène du crime.
Les deux plans : Construction et Utilisation
Le système possède deux modes distincts, comme un atelier de fabrication et une salle d'exposition :
- Le Plan d'Utilisation (La Salle d'Exposition) : C'est là que les réponses se produisent. Ici, une IA (ou un humain) pose des questions. Le système ne devine pas ; il choisit un itinéraire, vérifie la traduction, et si la réponse est « Oui, c'est possible », il lance la relecture pour le prouver. Si la réponse est « Non, c'est impossible », le système s'appuie sur une pile de vérifications : plusieurs traducteurs, plusieurs solveurs, et même des certificats mathématiquement vérifiés pour en être sûr.
- Le Plan d'Évolution (L'Usine) : C'est là que le système grandit. Si le système ne peut pas répondre à une question, il ne se contente pas d'abandonner. Il note pourquoi il a échoué (par exemple : « Nous n'avons pas de traducteur pour ce type spécifique de boucle »). Il utilise ensuite une IA pour construire un nouveau traducteur afin de combler cette lacune. Une fois construit, le nouveau traducteur est testé par rapport aux anciens. S'il réussit, il est ajouté au registre. S'il échoue, il est corrigé. Cette boucle tourne indéfiniment, rendant le système plus intelligent et plus digne de confiance au fil du temps, mais crucialement, le processus de croissance ne répond jamais aux questions lui-même. Il ne fait que construire les outils pour y répondre.
Le rebondissement des « Auteurs non fiables »
La partie la plus surprenante du document est que les traducteurs eux-mêmes ont été construits par des agents d'IA non fiables. Les auteurs n'ont pas codé les traducteurs à la main ; ils ont demandé à des modèles d'IA de les écrire sur la base d'une description d'une page. Habituellement, cela serait un désastre. Mais parce que le système vérifie chaque étape, les erreurs de l'IA sont immédiatement détectées.
Par exemple, lors d'un test, un traducteur d'IA a omis une instruction spécifique, provoquant un comportement différent du programme original. La « vérification carrée » du système (la comparaison côte à côte) a repéré l'erreur instantanément, localisant la ligne exacte et la variable exacte qui posaient problème. Le système a ensuite corrigé le traducteur. Le document montre que même avec des auteurs d'IA qui peuvent se tromper, l'architecture du système garantit que les réponses finales sont dignes de confiance.
Ce que le système a trouvé (et n'a pas trouvé)
Les auteurs ont testé ce système sur un instantané de leur travail de juillet 2026. Voici ce qu'ils ont mesuré :
- Couverture : Ils ont réussi à traduire des programmes de 13 langages différents (incluant le C, le Python et même des réseaux de réactions chimiques) en solveurs logiques. Pour le langage de processeur RISC-V, ils ont couvert 96 sur 96 types d'instructions spécifiques, ce qui signifie que le système pouvait gérer chaque instruction de cet ensemble sans perdre le fil.
- Accord : Lorsqu'ils ont envoyé la même question via deux chemins de traduction différents (l'un basé sur un manuel, l'autre sur un modèle formel), les réponses concordaient 100 % du temps sur les cas de test.
- Défauts détectés : Le système a détecté 24 défauts spécifiques dans ses propres traducteurs et outils. Certains étaient de simples fautes de frappe, d'autres des erreurs de logique où l'IA avait mal compris le fonctionnement d'une instruction informatique. Crucialement, le système a trouvé ces erreurs sans qu'un humain n'ait à examiner le code.
- Le « Point aveugle » : Le système a également identifié une limite. Si deux traducteurs différents commettent la même erreur (parce qu'ils ont tous deux mal compris la même règle), le système ne peut pas la détecter. C'est ce qu'on appelle une « défaillance de mode commun ». Le document admet que c'est un risque, mais le système est conçu pour le minimiser en utilisant des sources de traduction diversifiées.
- Joueurs LLM : Ils ont testé si une IA pouvait utiliser le système pour répondre à des questions. Dans une expérience, une IA sans outils a répondu correctement à 7 questions sur 8, mais a deviné pour la plus difficile. L'IA avec le système a obtenu 8 sur 8, et chaque réponse était accompagnée d'une preuve vérifiée par machine.
L'essentiel
Ce document ne prétend pas avoir résolu tous les problèmes de sécurité informatique. Il ne dit pas que les traducteurs d'IA sont désormais parfaits. Au contraire, il prouve que vous pouvez construire un système digne de confiance à partir de composants non fiables.
En traitant chaque traduction comme une erreur potentielle et en construisant un « cliquet » qui ne permet que l'amélioration durable, le système crée une échelle de confiance. Si la question est « Cela peut-il arriver ? », le système peut rejouer l'événement pour le prouver. Si la réponse est « Non, cela ne peut pas arriver », le système s'appuie sur une chaîne de vérifications indépendantes et de certificats mathématiquement vérifiés pour en être certain.
Les auteurs concluent que cette approche — utiliser un graphe de routes, vérifier chaque étape et rejouer les preuves — est un moyen viable de gérer la complexité des logiciels modernes, même lorsque les personnes (ou les IA) qui construisent les outils sont faillibles. C'est un passage de « la confiance envers l'auteur » à « la confiance envers l'architecture ».
Noyé(e) sous les articles dans votre domaine ?
Recevez des digests quotidiens des articles les plus récents correspondant à vos mots-clés de recherche — avec des résumés techniques, dans votre langue.