Simple Science

La science de pointe expliquée simplement

# Informatique# Langages de programmation

Réinventer Mizar : Une approche moderne des preuves

Mizar se refait une beauté avec Rust, ça booste la vitesse et débusque des bugs.

― 8 min lire


Le Revival Rouillé deLe Revival Rouillé deMizarcritiques.performances et révèle des bugsLa transformation de Mizar améliore les
Table des matières

Mizar est un langage unique créé pour écrire et vérifier des preuves mathématiques. Ce langage existe depuis 1973, et au fil des ans, il a développé une énorme bibliothèque d'articles couvrant de nombreux sujets mathématiques. Mizar a une façon bien à lui de fonctionner, ce qui le rend à la fois puissant et un peu complexe. Récemment, des efforts ont été faits pour réécrire Mizar en Rust, un langage de programmation moderne connu pour son efficacité et sa sécurité.

Le but de cette initiative n'est pas seulement de créer une version de Mizar qui fonctionne plus vite, mais aussi de trouver et corriger des erreurs cachées dans le système original. Pense à ça comme donner un nouveau moteur à une voiture vintage tout en nettoyant les vieux trucs qui pourraient la faire caler.

Qu'est-ce que Mizar ?

Mizar est principalement un langage de preuve conçu pour les mathématiciens et les logiciens. Il permet aux utilisateurs d'écrire des preuves d'une manière qui ressemble à un langage naturel mais avec une structure stricte. Ce langage offre une façon formalisée d'assurer que les étapes logiques prises dans une preuve sont correctes. Au fil des ans, Mizar a accumulé une grande bibliothèque connue sous le nom de Mizar Mathematical Library (MML), qui contient des milliers d'articles et de théorèmes.

L'utilisateur typique de Mizar écrit un document qui décrit sa preuve, et les outils de Mizar vérifient la logique de ces preuves pour s'assurer qu'elles ont du sens. C'est comme avoir un prof de maths qui non seulement corrige tes devoirs mais t'aide aussi à comprendre où tu t'es trompé si tu fais une erreur.

La transition vers Rust

Rust est connu pour sa capacité à gérer la mémoire de manière sûre et efficace. En réimplémentant Mizar en Rust, les développeurs visent à améliorer la performance de l'outil de vérification des preuves tout en maintenant la même logique.

La nouvelle version s'appelle "mizar-rs." L'équipe derrière ça s'est fixée quelques objectifs : accélérer le processus de vérification et dénicher des bugs ou des problèmes qui pourraient exister dans la version originale. Ils ont même réussi à rendre la vérification des preuves plus rapide - environ cinq fois plus rapide pour certaines tâches !

Pourquoi réimplémenter Mizar ?

Un nouveau départ

Bien que Mizar ait bien rempli sa fonction pendant de nombreuses années, son code original est plutôt vieux, écrit en Pascal, qui n'est pas aussi populaire aujourd'hui. Au fil des décennies, le style de codage et les pratiques ont beaucoup changé, menant à ce que les programmeurs appellent souvent "la dette technique." C'est comme posséder une maison où tu continues à ajouter de nouveaux meubles sans jamais nettoyer les anciens.

En réécrivant Mizar en Rust, les développeurs visent non seulement à moderniser la base de code mais aussi à faciliter la compréhension et la contribution des nouveaux développeurs au projet. Imagine essayer de lire une vieille recette qui continue d'ajouter de nouveaux ingrédients sans jamais être réécrite ; ça devient dur à suivre.

Amélioration des performances

Une des raisons clés pour la réécriture est l'amélioration des performances. Avec le système original, vérifier de grandes bibliothèques de preuves pouvait prendre beaucoup de temps. En utilisant les capacités modernes de Rust, la nouvelle version fait le même travail beaucoup plus rapidement.

Par exemple, en utilisant huit cœurs d'ordinateur, le nouveau Vérificateur de preuves a réussi à vérifier l'ensemble de la MML en un peu plus de 11 minutes. C'est une amélioration significative par rapport à la version originale.

Structure interne de Mizar

Mizar se compose de plusieurs composants, chacun jouant un rôle crucial dans le traitement des preuves. Voici un petit aperçu :

Analyzeur

La première étape est l'"Analyseur," qui lit le fichier Mizar (le document où les preuves sont écrites) et le convertit dans un format plus gérable connu sous le nom d'arbre de syntaxe abstrait (AST). Tu peux penser à l'analyseur comme à un traducteur, transformant le texte original en une version structurée qu'un ordinateur peut facilement comprendre.

Vérificateur

Ensuite, il y a le "vérificateur." Ce composant vérifie la structure logique de la preuve. Il cherche des incohérences ou des erreurs dans l'utilisation des termes et des symboles. C'est comme avoir un pote qui comprend bien les maths et qui passe en revue ton travail pour s'assurer que tu n'as pas fait d'erreurs bêtes.

Contrôleur

Enfin, on a le "contrôleur," qui vérifie chaque étape d'une preuve. C'est la partie qui confirme si les étapes prises dans la preuve sont logiquement valables. Si tu veux penser au contrôleur comme à un juge dans un jeu, alors le contrôleur s'assure que les règles sont respectées et attribue des points (ou rejette des étapes) en conséquence.

Défis dans la recréation de Mizar

Pas de spécification officielle

Un des grands défis rencontrés par les développeurs dans ce projet était le manque de spécification officielle pour le langage Mizar. Typiquement, les langages de programmation ont des spécifications détaillées qui décrivent comment ils devraient fonctionner. Mizar, cependant, n'avait que son code original comme référence. C'était comme essayer d'apprendre une nouvelle langue en n'écoutant que des conversations sans aucune règle de grammaire écrite !

Accès au code

De plus, le code source original n'était pas disponible publiquement pendant de nombreuses années. Il n'était accessible qu'aux membres d'un groupe particulier, ce qui compliquait la participation des développeurs en dehors de ce cercle. Heureusement, grâce aux efforts de l'équipe derrière le projet mizar-rs, le code original a maintenant été rendu disponible pour tout le monde.

Manque d'un petit noyau de confiance

Mizar n'a également pas de "petit noyau de confiance," ce qui signifie que les composants responsables de la logique critique étaient étroitement interconnectés. Pour garantir la justesse, la nouvelle implémentation devait rester proche de la façon dont Mizar fonctionnait à l'origine, compliquant encore le processus de développement.

Bugs et découvertes

Alors que l'équipe réimplémentait Mizar, elle a découvert plusieurs bugs dans le code original. Ils ont pu écrire des preuves qui menaient à des contradictions à cause de problèmes dans la logique du système original. Cela montre comment réécrire le code peut fournir une nouvelle perspective sur des problèmes existants, un peu comme faire du tri dans ton placard peut révéler de vieux vêtements que tu avais oubliés !

Exemples de bugs

Voyons quelques exemples de bugs trouvés durant le processus :

  1. Débordement arithmétique polynômial : Le code original ne vérifiait pas les débordements dans l'arithmétique polynômiale. Ça veut dire que si les nombres devenaient trop grands, le système pouvait produire des résultats incorrects, comme une classe de maths où on enseigne aux élèves que 2 + 2 peut égaler 5 un mauvais jour.

  2. Problèmes de négation : Dans certains cas, le système de vérification des preuves pouvait mal interpréter la négation des énoncés, menant à des conclusions absurdes. C'est comme argumenter que si tu n'as pas faim, tu dois être plein juste parce que tu as eu une collation plus tôt !

  3. Flex-and et interprétations erronées : Il y avait des problèmes liés à des expressions logiques complexes appelées déclarations flex-and qui conduisaient à des conclusions incorrectes. C'est un peu comme un puzzle qui semble s'emboîter mais qui a en fait une pièce mal placée.

Gains de performance

Le passage à Rust a entraîné des améliorations de performances notables. L'ancien Mizar prenait beaucoup plus de temps pour traiter les articles à cause de son architecture et de ses anciennes méthodes de programmation. La nouvelle implémentation est plus rapide car le design de Rust permet des modèles de programmation efficaces qui réduisent le temps perdu.

Travail futur

Bien que la nouvelle version de Mizar soit déjà impressionnante, il y a toujours de la place pour des améliorations. L'équipe espère continuer à développer mizar-rs, explorer son potentiel et affiner ses capacités.

Par exemple, ils pourraient lever certaines restrictions que l'ancien Mizar imposait, comme la longueur des noms d'articles. Imagine essayer de donner un nom compliqué à ton poisson rouge - ça ne fonctionne tout simplement pas avec les limitations !

Conclusion

Réimplémenter Mizar en Rust a produit un outil de vérification des preuves plus rapide et plus efficace qui non seulement conserve les capacités originales mais améliore aussi le processus de débogage. En découvrant des bugs et en améliorant les performances, les développeurs espèrent redonner vie à Mizar.

Ce projet met en évidence comment des outils modernes peuvent apporter de la clarté à des systèmes plus anciens et ouvrir la voie à de futures innovations dans la vérification mathématique. Qui aurait cru que vérifier des preuves mathématiques pourrait être si palpitant ? C'est comme passer d'un vieux vélo à une toute nouvelle trottinette électrique - le trajet devient tout de suite beaucoup plus agréable !

Source originale

Titre: Reimplementing Mizar in Rust

Résumé: This paper describes a new open-source proof processing tool, mizar-rs, a wholesale reimplementation of core parts of the Mizar proof system, written in Rust. In particular, the "checker" and "analyzer" of Mizar are implemented, which together form the trusted core of Mizar. This is to our knowledge the first and only external implementation of these components. Thanks to the loose coupling of Mizar's passes, it is possible to use the checker as a drop-in replacement for the original, and we have used this to verify the entire MML in 11.8 minutes on 8 cores, a 4.8x speedup over the original Pascal implementation. Since Mizar is not designed to have a small trusted core, checking Mizar proofs entails following Mizar closely, so our ability to detect bugs is limited. Nevertheless, we were able to find multiple memory errors, four soundness bugs in the original (which were not being exploited in MML), in addition to one non-critical bug which was being exploited in 46 different MML articles. We hope to use this checker as a base for proof export tooling, as well as revitalizing development of the language.

Auteurs: Mario Carneiro

Dernière mise à jour: 2024-12-23 00:00:00

Langue: English

Source URL: https://arxiv.org/abs/2304.08391

Source PDF: https://arxiv.org/pdf/2304.08391

Licence: https://creativecommons.org/licenses/by/4.0/

Changements: Ce résumé a été créé avec l'aide de l'IA et peut contenir des inexactitudes. Pour obtenir des informations précises, veuillez vous référer aux documents sources originaux dont les liens figurent ici.

Merci à arxiv pour l'utilisation de son interopérabilité en libre accès.

Plus de l'auteur

Articles similaires