À propos du service
TraduitJe suis ingénieur en preuves et je me spécialise dans le système de preuve interactive Coq et son langage de spécification Gallina. Ma tâche est de supprimer la phrase "fonctionne probablement" de votre code et de la remplacer par une preuve que la machine elle-même vérifie. Étant donné un algorithme, un protocole ou une déclaration mathématique, j'écris sa spécification en Gallina, puis construis de manière interactive une preuve que l'implémentation correspond à celle-ci, couvrant tous les cas sans exception. Rien n'est pris pour acquis : chaque lemme est dérivé et vérifié à nouveau par le compilateur coqc à chaque construction. En général, je suis contacté pour prouver formellement les invariants des structures de données, justifier la terminaison et la correction fonctionnelle des fonctions récursives, mécaniser des théorèmes de combinatoire, d'algèbre ou de logique, et modéliser des automates finis pour des propriétés de concurrence et de sécurité. Je maîtrise les langages de tactique Ltac et Ltac2, la discipline SSReflect ainsi que la bibliothèque Mathematical Components, les types dépendants, la récursion bien fondée et les prédicats inductifs. Lorsque les preuves convergent, j'utilise le mécanisme d'extraction de Coq pour obtenir un code exécutable propre en OCaml qui porte les garanties de preuve en production ; si nécessaire, je prépare l'extraction vers Haskell ou Scheme. Vous recevez un développement Coq documenté qui se compile sans admission et axiomes inutiles, une spécification lisible, des modules extraits et testés et un court rapport sur ce que les théorèmes promettent et où se situent leurs limites. J'ai mécanisé des passes de compilateur, vérifié des primitives arithmétiques et cryptographiques et restauré des scripts de preuve cassés par des mises à jour de bibliothèque. Si vous avez besoin non seulement d'un échantillon de test mais de confiance, je vous fournirai un résultat qui est vrai par construction et reste vrai à mesure que le code évolue.