Probando la Corrección de la Memorización en Lean: Un Estudio de Caso

2025-06-20
Probando la Corrección de la Memorización en Lean: Un Estudio de Caso

Esta publicación de blog demuestra cómo resolver un problema de programación dinámica usando memorización en el probador de teoremas Lean y verificar formalmente su corrección. El autor aborda el problema de las Monedas de Oro de Bytelandia, presentando inicialmente una solución memorizada usando un HashMap. Se destaca la dificultad de probar directamente su corrección debido a los desafíos en el razonamiento sobre invariantes de estructuras de datos. La solución utiliza subtipos y pares dependientes para crear un `PropMap`, una tabla de memorización que almacena no solo los valores calculados, sino también las pruebas de su corrección. La corrección del algoritmo se prueba luego de forma incremental dentro de la propia implementación recursiva, culminando en una prueba de nivel superior trivial. Este enfoque entrelaza elegantemente el código y la prueba, mostrando una técnica poderosa para verificar formalmente algoritmos de programación dinámica.