Importation de preuves HOL-Light en Coq



Documents pareils
Vérification formelle de la plate-forme Java Card

Théorie de la Programmation

Cours de Programmation 2

Rappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme

Une introduction rapide à Coq

Cours 1 : La compilation

Classes et Objets en Ocaml.

Réalisabilité et extraction de programmes

Analyse de sécurité de logiciels système par typage statique

Machines virtuelles fonctionnelles (suite) Compilation ML Java

Recherche dans un tableau

Évaluation et implémentation des langages

Conception de circuits numériques et architecture des ordinateurs

Arbres binaires de recherche

A.E.C. GESTION DES APPLICATIONS TECHNOLOGIE DE L'INFORMATION LEA.BW

Vérification de programmes et de preuves Première partie. décrire des algorithmes

Spécification et certification d implantation chaînée avec des orbites : les hypercartes combinatoires

Plan du cours : Zippers. Des fonctions sur les listes avec position. Des fonctions sur les listes avec position

Mesures de Risque Multipériodes Cohérentes Appliquées au Compte à Terme

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Gestion mémoire et Représentation intermédiaire

3. SPÉCIFICATIONS DU LOGICIEL. de l'expression des besoins à la conception. Spécifications fonctionnelles Analyse fonctionnelle et méthodes

Chap 4: Analyse syntaxique. Prof. M.D. RAHMANI Compilation SMI- S5 2013/14 1

Traduction des Langages : Le Compilateur Micro Java

Algorithmique des Systèmes Répartis Protocoles de Communications

Chapitre 1 : Introduction aux bases de données


Expression des contraintes. OCL : Object C o n t r a i n t L a n g u a g e

# let rec concat l1 l2 = match l1 with [] -> l2 x::l 1 -> x::(concat l 1 l2);; val concat : a list -> a list -> a list = <fun>

Algorithmique et Programmation Fonctionnelle

length : A N add : Z Z Z (n 1, n 2 ) n 1 + n 2

Peut-on tout programmer?

Logiciel Libre Cours 2 Fondements: Programmation

Raisonnement probabiliste

2 Grad Info Soir Langage C++ Juin Projet BANQUE

Catalogue des connaissances de base en mathématiques dispensées dans les gymnases, lycées et collèges romands.

Génie Logiciel avec Ada. 4 février 2013

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if

Les Nouveautés Sage 100 CRM Vi7

MEMOIRE. Présenté à. L École Nationale d Ingénieurs de Sfax. en vue de l obtention du MASTERE

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

Machines virtuelles Cours 1 : Introduction

UNIVERSITE DE NICE-SOPHIA ANTIPOLIS ECOLE DOCTORALE STIC SCIENCES ET TECHNOLOGIES DE L INFORMATION ET DE LA COMMUNICATION THESE

Introduction à MATLAB R

modules & compilation

Model checking temporisé

Plan. Exemple: Application bancaire. Introduction. OCL Object Constraint Language Le langage de contraintes d'uml

Logique. Plan du chapitre

6 - Le système de gestion de fichiers F. Boyer, UJF-Laboratoire Lig, Fabienne.Boyer@imag.fr

D'UN THÉORÈME NOUVEAU

La syllabe (1/5) Unité intuitive (différent du phonème) Constituant essentiel pour la phonologie au même titre que phonème et trait

Vérification formelle de la plate-forme Java Card

Le modèle standard, SPE (1/8)

Formula Negator, Outil de négation de formule.

MS SQL Express 2005 Sauvegarde des données

Rapport d activité. Mathieu Souchaud Juin 2007

Suivant les langages de programmation, modules plus avancés : modules imbriqués modules paramétrés par des modules (foncteurs)

Algorithmique et Programmation, IMA

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples

Programmation Orientée Objet

Correction Code nécessaire à la compilation : let bs ="\\" let nl = "\n" ;; let appliquer = List.map ;; (* affichage d'un noeud *)

Perl Console. Votre compagnon pour développer en Perl. Les Journées du Perl , 17 novembre, Lyon. Alexis Sukrieh

XML par la pratique Bases indispensables, concepts et cas pratiques (3ième édition)

Automatisation de l administration système

Conditions : stage indemnisé, aide au logement possible, transport CEA en Ile-de-France gratuit.

Java 1.5 : principales nouveautés

Vers l'ordinateur quantique

Science Direct - Cell Press

MIS 102 Initiation à l Informatique

Introduction au langage C

Windows Front-End Installation Guide HOPEX V1R1 FR

Sécuristation du Cloud

Fondements de l informatique Logique, modèles, et calculs

CH.6 Propriétés des langages non contextuels

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

Une introduction à Java

Programmer en JAVA. par Tama

! Text Encoding Initiative

La Licence Mathématiques et Economie-MASS Université de Sciences Sociales de Toulouse 1

Carl-Louis-Ferdinand von Lindemann ( )

Architecture d'entreprise : Guide Pratique de l'architecture Logique

Lambda! Rémi Forax Univ Paris-Est Marne-la-Vallée

Principes des langages de programmation INF 321. Eric Goubault

Seconde et première Exercices de révision sur les probabilités Corrigé

Date : Tangram en carré page

Bernard HAMM, Évelyne LAVOISIER

ADAPT: un modèle de transcodage des nombres. Une application des systèmes de production au développement

Proposition de sujet de thèse CIFRE EUROCOPTER / LGI2P

Introduction à la programmation concurrente

Preuves formelles en arithmétiques à virgule flottante

Compilation (INF 564)

Les travaux doivent être remis sous forme papier.

CHAPITRE IV. L axiome du choix

Équations non linéaires

Centre CPGE TSI - Safi 2010/2011. Algorithmique et programmation :

1 Définition et Appel d une fonction. V. Phan Luong. Cours 4 : Fonctions

Fonctions de plusieurs variables : dérivés partielles, diérentielle. Fonctions composées. Fonctions de classe C 1. Exemples

LMI 2. Programmation Orientée Objet POO - Cours 9. Said Jabbour. jabbour@cril.univ-artois.fr

Machines Virtuelles. et bazard autour. Rémi Forax

Transcription:

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