Présentation de Zstandard

Zstandard est un compresseur de données qui semble gagner la compétition pour remplacer gzip en tant qu'utilitaire de compression canonique. Il s'agit d'un compresseur de type LZ77, mais il offre un meilleur codage d'entropie et une conception soignée qui lui permet d'atteindre des vitesses de décompression impressionnantes.

Contexte technique de l'automatisation de preuve

Les langages de programmation à types dépendants, tels que Coq, Rocq et Lean, offrent la possibilité d'un système de types capable d'encoder et de faire respecter des invariants arbitrairement subtils. Cependant, la création de preuves pour ces invariants peut être très fastidieuse et prendre beaucoup de temps. L'automatisation de la preuve est donc un sujet de recherche actif.

Fonctionnement de l'automatisation de preuve avec les LLM

Les modèles de langage LLM (Large Language Model) promettent d'être une forme très capable d'automatisation de preuve. En combinant les LLM avec l'irrélevance de la preuve, il est possible de réduire considérablement l'effort nécessaire pour créer des preuves. Cela rend les systèmes de types dépendants beaucoup plus pratiques.

Implémentation de Zstandard en Lean

L'auteur a construit un décompresseur Zstandard en Lean, un langage de programmation à types dépendants. L'implémentation utilise l'automatisation de preuve pour vérifier les invariants du code. Le code utilise également l'algorithme de Huffman pour le codage d'entropie, ainsi que l'algorithme FSE (Finite State Entropy) pour une compression plus élevée.

def zstandard_decompressor(data: bytes) -> bytes:
   # Implémentation du décompresseur Zstandard en Lean
   # ...

Les résultats montrent que l'utilisation de l'automatisation de preuve avec les LLM peut considérablement réduire l'effort nécessaire pour créer des preuves, ce qui rend les systèmes de types dépendants plus pratiques pour les développeurs.