Importation de preuves HOL-Light en Coq Stage de M2 Chantal Keller chantal.keller@ens-lyon.fr Sous la direction de Benjamin Werner 7 septembre 2009 Importation de preuves HOL-Light en Coq 1 / 33
Idée HOL Light + proof recording Coq + axiomes classiques théorème HOL Light enregis trement terme de preuve exportation terme de preuve fonction de traduction proposition Coq P preuve de P Importation de preuves HOL-Light en Coq 2 / 33
But Plusieurs intérêts : utiliser les théorèmes de HOL-Light en Coq (analyse) établir un modèle de HOL-Light en Coq comparer deux systèmes de preuve Importation de preuves HOL-Light en Coq 3 / 33
Plan 1 HOL-Light et Coq 2 Enregistrement et exportation des termes de preuve de HOL-Light 3 Modèle de HOL-Light en Coq 4 Résultats Importation de preuves HOL-Light en Coq 4 / 33
HOL-Light et Coq Première partie I HOL-Light et Coq Importation de preuves HOL-Light en Coq 5 / 33
HOL-Light et Coq Présentation HOL Light + proof recording Coq + axiomes classiques théorème enregis HOL Light trement terme de preuve exportation terme de preuve fonction de traduction proposition Coq P preuve de P Importation de preuves HOL-Light en Coq 6 / 33
HOL-Light et Coq HOL-Light HOL-Light HOL-Light : assistant de preuve écrit par John Harrison et al. dans un top-level OCaml logique classique d'ordre supérieur (extensionnelle) outils automatiques, bibliothèque étendue programmable sans compromettre la cohérence noyau logique simple et concis Importation de preuves HOL-Light en Coq 7 / 33
HOL-Light et Coq HOL-Light Système logique Système logique : λ-calcul simplement typé polymorphisme : schémas de types variables de types (et de termes) règles logiques traitant de l'égalité entre termes système de tactiques Exemples de règle d'inférence : (λx.t) x = t Γ p q Γ q p où représente = bool. Importation de preuves HOL-Light en Coq 8 / 33
HOL-Light et Coq HOL-Light Correction Correction : type thm abstrait (on ne peut construire des théorèmes qu'en utilisant les primitives fournies par HOL-Light) preuves non enregistrées, mais interprétation de HOL-Light à chaque ouverture de session Importation de preuves HOL-Light en Coq 9 / 33
HOL-Light et Coq Coq Coq Coq : assistant de preuve compilé calcul des constructions inductives (intuitionniste, calculatoire) preuves réexives noyau logique complexe Importation de preuves HOL-Light en Coq 10 / 33
HOL-Light et Coq Coq Système logique et correction Système logique : extension de HOL-Light si on se donne des axiomes classiques Correction : preuves enregistrées et vériables Importation de preuves HOL-Light en Coq 11 / 33
Enregistrement et exportation des termes de preuve de HOL-Light Deuxième partie II Enregistrement et exportation des termes de preuve de HOL-Light Importation de preuves HOL-Light en Coq 12 / 33
Enregistrement et exportation des termes de preuve de HOL-Light Enregistrement - Exportation Présentation HOL Light + proof recording Coq + axiomes classiques théorème enregis HOL Light trement terme de preuve exportation terme de preuve fonction de traduction proposition Coq P preuve de P Importation de preuves HOL-Light en Coq 13 / 33
Enregistrement et exportation des termes de preuve de HOL-Light Enregistrement - Exportation Proof recording (S. Obua) Enregistrement de l'arbre de dérivation : termes de preuve compacts courte durée d'enregistrement granularité type proof = Proof of (proof_info proof_content (unit > unit)) and proof_content = Pconj of proof proof Pconjunct1 of proof Pconjunct2 of proof... Importation de preuves HOL-Light en Coq 14 / 33
Enregistrement et exportation des termes de preuve de HOL-Light Enregistrement - Exportation Exportation Exportation des arbres de dérivation : petits chiers petit nombre de chiers partage Inductive proof : Type := Pconj : proof proof proof Pconjunct1 : proof proof Pconjunct2 : proof proof... Poracle : forall h t, deriv h t proof. Importation de preuves HOL-Light en Coq 15 / 33
Modèle de HOL-Light en Coq Troisième partie III Modèle de HOL-Light en Coq Importation de preuves HOL-Light en Coq 16 / 33
Modèle de HOL-Light en Coq Présentation HOL Light + proof recording Coq + axiomes classiques théorème enregis HOL Light trement terme de preuve exportation terme de preuve fonction de traduction proposition Coq P preuve de P Importation de preuves HOL-Light en Coq 17 / 33
Modèle de HOL-Light en Coq Plongements Plongements Plongement profond (deep embedding : types de données pour représenter les types et les termes) : raisonnement par induction sur la structure des objets Plongement peu profond (shallow embedding : en utilisant les types et les termes de Coq) : facilités de Coq Importation de preuves HOL-Light en Coq 18 / 33
Modèle de HOL-Light en Coq Plongements Plongements Plongement profond (deep embedding : types de données pour représenter les types et les termes) : raisonnement par induction sur la structure des objets Plongement peu profond (shallow embedding : en utilisant les types et les termes de Coq) : facilités de Coq obtenir des propositions Coq Importation de preuves HOL-Light en Coq 18 / 33
Modèle de HOL-Light en Coq Plongements Plongements Plongement profond (deep embedding : types de données pour représenter les types et les termes) : raisonnement par induction sur la structure des objets simple compact Plongement peu profond (shallow embedding : en utilisant les types et les termes de Coq) : facilités de Coq obtenir des propositions Coq Importation de preuves HOL-Light en Coq 18 / 33
Modèle de HOL-Light en Coq Plongements Plongements Plongement profond (deep embedding : types de données pour représenter les types et les termes) : raisonnement par induction sur la structure des objets simple compact Plongement peu profond (shallow embedding : en utilisant les types et les termes de Coq) : facilités de Coq obtenir des propositions Coq fonction de traduction de profond vers peu profond Importation de preuves HOL-Light en Coq 18 / 33
Modèle de HOL-Light en Coq Plongements Types Inductif type : Bool type X idt TVar X type A, B type A B type... idt un ensemble inni dénombrable Importation de preuves HOL-Light en Coq 19 / 33
Modèle de HOL-Light en Coq Plongements Termes Inductif term : n N Dbr n term x idv Var x A term A type u, v term App u v term A type u term Abs A u term... idv un ensemble inni dénombrable Importation de preuves HOL-Light en Coq 20 / 33
Modèle de HOL-Light en Coq Plongements Typage Typage : λ-calcul simplement typé contexte pour les indices de De Bruijn (liste de types) Importation de preuves HOL-Light en Coq 21 / 33
Modèle de HOL-Light en Coq Traduction Types Types : interface entre syntaxe et sémantique. Traduction d'un type : T Bool Prop A B A B Importation de preuves HOL-Light en Coq 22 / 33
Modèle de HOL-Light en Coq Traduction Types Types : interface entre syntaxe et sémantique. Traduction d'un type : T Bool Prop A B A B TVar X? Importation de preuves HOL-Light en Coq 22 / 33
Modèle de HOL-Light en Coq Traduction Types Types : interface entre syntaxe et sémantique. Traduction d'un type : T I Bool I Prop A B I A I B I TVar X I I(X ) Importation de preuves HOL-Light en Coq 22 / 33
Modèle de HOL-Light en Coq Traduction Termes Utilisation des types dépendants. [GW07] Traduction d'un terme : si Γ t : T, alors t I : T I si t non typable, t I n'est pas déni Exemple : si t p q t a le type Bool et on veut que t I soit une proposition Coq Importation de preuves HOL-Light en Coq 23 / 33
Modèle de HOL-Light en Coq Dérivations et termes de preuve Deux types de données Inductive proof : Type := Pconj : proof proof proof Pconjunct1 : proof proof Pconjunct2 : proof proof... Inductive deriv : set term term Prop := Dconj : forall h1 h2 t1 t2, deriv h1 t1 deriv h2 t2 deriv (union h1 h2) t1 t2 Dconjunct1 : forall h t1 t2, deriv h t1 t2 deriv h t1 Dconjunct2 : forall h t1 t2, deriv h t1 t2 deriv h t2... Importation de preuves HOL-Light en Coq 24 / 33
Modèle de HOL-Light en Coq Dérivations et termes de preuve Passage de l'un à l'autre p : proof deriv h t proof2deriv sem_deriv { Some (h,t) tels que deriv h t None h correct t correct t correct : t : Bool (t est donc localement clos) la traduction de t est une proposition Coq correcte Importation de preuves HOL-Light en Coq 25 / 33
Résultats Quatrième partie IV Résultats Importation de preuves HOL-Light en Coq 26 / 33
Résultats Résultats Qualitatifs HOL Light + proof recording Coq + axiomes classiques théorème HOL Light enregis trement terme de preuve exportation terme de preuve fonction de traduction proposition Coq P preuve de P théorèmes utilisables en Coq CONJ_SYM : t 1 t 2. t 1 t 2 t 2 t 1 forall x x0 : Prop, (x x0) = (x0 x) Importation de preuves HOL-Light en Coq 27 / 33
Résultats Résultats Quantitatifs Échelle Nombre théorèmes Nombre lemmes Taille Petite 69 1213 0, 7 Mo Grande 1694 191620 921 Mo Échelle D. enregistrement D. exportation D. compilation Petite 4 s 1 s 21 s Grande 3 min 7 min 30 X Environ 6900 lignes de code Importation de preuves HOL-Light en Coq 28 / 33
Conclusion et perspectives Cinquième partie V Conclusion et perspectives Importation de preuves HOL-Light en Coq 29 / 33
Conclusion et perspectives Conclusion HOL-Light : Coq : enregistrer des termes de preuve exporter des termes de preuve modèle de HOL-Light prouvé correct Interface : début de la bibliothèque partage de preuves Importation de preuves HOL-Light en Coq 30 / 33
Conclusion et perspectives Perspectives Améliorer l'ecacité : utiliser des types Coq ecaces (ensembles nis) termes de preuve plus petits exportation plus rapide Passer à l'échelle : grands développements interface utilisateur Importation de preuves HOL-Light en Coq 31 / 33
Merci de votre attention! Des questions? Importation de preuves HOL-Light en Coq 32 / 33
Traduction La fonction de traduction pour les contextes de De Bruijn Γ contexte de De Bruijn (liste de types) Γ I n, match nth n Γ return Type with Some T T I None unit end Si Γ n : T, alors n I,f Γ I f (n) T I. Importation de preuves HOL-Light en Coq 33 / 33