Pour les nuls débutants Coq Pour les nuls débutants
Un formalisme Un outil Des bibliothèques Pourquoi faire ? Comment ?
le calcul des constructions inductives (Huet, Coquand, Paulin) Un calcul très expressif (plus expressif t’es incohérent) Programmes (fonctionnels, impératifs, polymorphes) Spécifications de programmes Programmes certifiés (+ extraction) Raisonnement mathématique Logiques (HOL, modales, temporelles, etc.) Objets et preuves infinis
Un outil Famille des assistants de preuves Caractéristiques communes: LCF, PVS, Nqthm, HOL, Isabelle, Coq, … Caractéristiques communes: Preuves complètes Tactiques (programmables), procédures de décision Pas de prétention à l’automaticité totale
Des bibliothèques … Domaines divers Composants réutilisables Arithmétique, Cryptologie, Protocoles, Programmation, etc.(voir site ) Composants réutilisables Théories = modules Deux niveaux d’utilisation Ecriture des bibliothèques Utilisation « simple » (coq de base et procédures de décision)
Pour quoi faire? Utile dans le cas de formalismes assez complexes Calculs et déductions (souvent coexistants) « Jouer » avec une théorie (cf Maple) Risque d’erreurs (vérifications jamais exhaustives « à la main ») Mécanisation de preuves fastidieuses Vérification d’algorithmes compliqués Paramètres variables (développements génériques) Puissance d’expression supérieure au -calcul simplement typé Exemple de la tour d’exponentielle, premier pas d’une récurrence = calcul, pas général = déduction
Utilité pour le TAL? Début de travail sur les MMCG Paramètres : Vocabulaire Catégories syntaxiques Modes de composition Principes d’interaction Lexique (syntaxe, sémantique) Influence de ces paramètres sur l’analyse syntaxique Jusqu’à présent, étude de principes d’interaction Calcul de la sémantique de Montague (Houda) Fusion des deux approches précédentes (A faire) Interface H/M (en cours)
Travaux futurs Relation minimalisme/ grammaires catégorielles (Houda) Extension de la sémantique de Montague (en profitant de la richesse des types de Coq) DRT??? Autres !?
Comment ça marche? Noyau : un -calcul typé Tout terme a un type 3:nat true : bool plus : nat nat nat bool : Set nat nat nat : Set 3 6 : Prop 34 6 : Prop x:nat y:nat y2 x < (y+1)2 : Prop : x:nat y:nat y2 x < (y+1)2 est une preuve de l’existence de racine carrée
Les termes de preuves sont: Gros, voire énormes Explorables (jusqu’à une certaine limite) Leur vérification utilise le vérificateur de types (noyau réduit de Coq, seul composant à valider) Leur obtention se fait par le moyen de tactiques (élémentaires, programmables); ces tactiques n’ont en principe pas besoin d’être validées Les tactiques spécialisées à un domaine font bien sûr partie des bibliothèques.
Premiers pas Quelques exemples pour débuter Types élémentaires Programmation fonctionnelle Un peu de raisonnement logique propositionnelle minimale logique intuitionnisme, du 1er ordre un peu d’ordre sup. Un exemple de programme certifié (si l’heure et le public l’autorisent)