Preuve de la correction de la mémoïsation dans Lean : étude de cas
Cet article de blog montre comment résoudre un problème de programmation dynamique en utilisant la mémoïsation dans le prouveur de théorèmes Lean et comment vérifier formellement sa correction. L’auteur aborde le problème des pièces d’or de Bytelandie, en présentant d’abord une solution mémorisée utilisant un HashMap. La difficulté de prouver directement sa correction est soulignée en raison des défis liés au raisonnement sur les invariants de structure de données. La solution utilise des sous-types et des paires dépendantes pour créer un `PropMap`, une table de mémoïsation qui stocke non seulement les valeurs calculées, mais aussi les preuves de leur correction. La correction de l’algorithme est ensuite prouvée de manière incrémentale au sein de sa propre implémentation récursive, aboutissant à une preuve de niveau supérieur triviale. Cette approche relie élégamment le code et la preuve, montrant une technique puissante pour vérifier formellement les algorithmes de programmation dynamique.