Spelling suggestions: "subject:"théorie dess types"" "subject:"théorie deus types""
21 |
Changements de Représentation des Données dans le Calcul des ConstructionsMagaud, Nicolas 21 October 2003 (has links) (PDF)
Nous étudions comment faciliter la réutilisation des <br />preuves formelles en théorie des types. Nous traitons cette question <br />lors de l'étude <br />de la correction du programme de calcul de la racine carrée de GMP. <br />A partir d'une description formelle, nous construisons <br />un programme impératif avec l'outil Correctness. Cette description <br />prend en compte tous les détails de l'implantation, y compris <br />l'arithmétique de pointeurs utilisée et la gestion de la mémoire. <br />Nous étudions aussi comment réutiliser des preuves formelles lorsque<br />l'on change la représentation concrète des données. <br />Nous proposons un outil qui permet d'abstraire <br />les propriétés calculatoires associées à un type inductif dans<br />les termes de preuve.<br />Nous proposons également des outils pour simuler ces propriétés<br />dans un type isomorphe. Nous pouvons ainsi passer, systématiquement,<br />d'une représentation des données à une autre dans un développement<br />formel.
|
22 |
Vers un calcul des constructions pédagogiqueDemange, Vincent 07 December 2012 (has links) (PDF)
Les systèmes pédagogiques sont apparus récemment à propos des calculs propositionnels (jusqu'à l'ordre supérieur), et consistent à donner systématiquement des exemples des notions (hypothèses) introduites. Formellement, cela signifie que pour mettre un ensemble Delta de formules en hypothèse, il est requis de donner une substitution sigma telle que les instances de formules sigma(Delta) soient démontrables. Cette nécessité d'exemplification ayant été pointée du doigt par Poincaré (1913) comme relevant du bon sens: une définition d'un objet par postulat n'ayant d'intérêt que si un tel objet peut être construit. Cette restriction appliquée à des systèmes formels intuitionnistes rejoint l'idée des mathématiques sans négation défendues par Griss (1946) au milieu du siècle dernier, et présentées comme une version approfondie de l'intuitionnisme. À travers l'isomorphisme de Curry-Howard (1980), la contrepartie calculatoire est l'utilité des programmes définis dans les systèmes fonctionnels correspondants: toute fonction peut être appliquée à un argument clos. Les premiers résultats concernant les calculs propositionnels jusqu'au second ordre ont été publiés récemment par Colson et Michel (2007, 2008, 2009). Nous exposons dans cette thèse une tentative d'uniformisation et d'extension au Calcul des Constructions (CC) des précédents résultats. Tout d'abord une définition formelle et précise de sous-système pédagogique du Calcul des Constructions est introduite, puis différents tels sous-systèmes sont déclinés en exemple.
|
23 |
Programmation fonctionnelle certifiée : <br />L'extraction de programmes dans l'assistant CoqLetouzey, Pierre 09 July 2004 (has links) (PDF)
Nous nous intéressons ici à la génération de programmes certifiés<br />corrects par construction. Ces programmes sont obtenus en<br />extrayant l'information pertinente de preuves constructives réalisées<br />dans l'assistant de preuves Coq.<br /><br />Une telle traduction, ou "extraction", des preuves constructives<br />en programmes fonctionnels n'est pas nouvelle, elle correspond <br />à un isomorphisme bien connu sous le nom de Curry-Howard. Et<br />l'assistant Coq comporte depuis longtemps un tel outil d'extraction. <br />Mais l'outil précédent présentait d'importantes limitations. Certaines <br />preuves Coq étaient ainsi hors de son champ d'application, alors que <br />d'autres engendraient des programmes incorrects.<br /><br />Afin de résoudre ces limitations, nous avons effectué une refonte<br />complète de l'extraction dans Coq, tant du point de vue de la théorie<br />que de l'implantation. Au niveau théorique, cette refonte a entraîné<br />la réalisation de nouvelles preuves de correction de ce mécanisme<br />d'extraction, preuves à la fois complexes et originales. Concernant<br />l'implantation, nous nous sommes efforcés d'engendrer du code <br />extrait efficace et réaliste, pouvant en particulier être intégré dans des<br />développement logiciels de plus grande échelle, par le biais de<br />modules et d'interfaces.<br /><br />Enfin, nous présentons également plusieurs études de cas illustrant<br />les possibilités de notre nouvelle extraction. Nous décrivons ainsi la<br />certification d'une bibliothèque modulaire d'ensembles finis, et <br />l'obtention de programmes d'arithmétique réelle exacte à partir d'une <br />formalisation d'analyse réelle constructive. Même si des progrès <br />restent encore à obtenir, surtout dans ce dernier cas, ces exemples <br />mettent en évidence le chemin déjà parcouru.
|
24 |
Réalisabilité et paramétricité dans les systèmes de types pursLasson, Marc 20 November 2012 (has links) (PDF)
Cette thèse porte sur l'adaptation de la réalisabilité et la paramétricité au cas des types dépendants dans le cadre des Systèmes de Types Purs. Nous décrivons une méthode systématique pour construire une logique à partir d'un langage de programmation, tous deux décrits comme des systèmes de types purs. Cette logique fournit des formules pour exprimer des propriétés des programmes et elle offre un cadre formel adéquat pour développer une théorie de la réalisabilité au sein de laquelle les réalisateurs des formules sont exactement les programmes du langage de départ. Notre cadre permet alors de considérer les théorèmes de représentation pour le système T de Gödel et le système F de Girard comme deux instances d'un théorème plus général.Puis, nous expliquons comment les relations logiques de la théorie de la paramétricité peuvent s'exprimer en terme de réalisabilité, ce qui montre que la logique engendrée fournit un cadre adéquat pour développer une théorie de la paramétricité du langage de départ. Pour finir, nous montrons comment cette théorie de la paramétricité peut-être adaptée au système sous-jacent à l'assistant de preuve Coq et nous donnons un exemple d'application original de la paramétricité à la formalisation des mathématiques.
|
25 |
Conception d'un noyau de vérification de preuves pour le λΠ-calcul moduloBoespflug, Mathieu 18 January 2011 (has links) (PDF)
Ces dernières années ont vu l'émergence d'assistants interactifs de preuves riches en fonctionnalités et d'une grande maturité d'implémentation, ce qui a permis l'essor des grosses formalisations de résultats papier et la résolution de conjectures célèbres. Mais autant d'assistants de preuves reposent sur presque autant de logiques comme fondements théoriques. Cousineau et Dowek (2007) proposent le λΠ-calcul modulo comme un cadre universel cible pour tous ces environnement de démonstration. Nous montrons dans cette thèse comment ce formalisme particulièrement simple admet une implémentation d'un vérificateur de taille modeste mais pour autant modulaire et efficace, à la correction de laquelle on peut réduire la cohérence de systèmes tout entiers. <p> Un nombre croissant de preuves dépendent de calculs intensifs comme dans la preuve du théorème des quatre couleurs de Gonthier (2007). Les méthodologies telles que SSReflect et les outils attenants privilégient les preuves contenant de nombreux petits calculs plutôt que les preuves purement déductives. L'encodage de preuves provenant d'autres systèmes dans le λΠ-calcul modulo introduit d'autres calculs encore. Nous montrons comment gérer la taille de ces calculs en interprétant les preuves tout entières comme des programmes fonctionnels, que l'on peut compiler vers du code machine à l'aide de compilateurs standards et clé-en-main. Nous employons pour cela une variante non typée de la normalisation par évaluation (NbE), et montrons comment optimiser de précédentes formulation de celle-ci. <p> Au travers d'une seule petite modification à l'interprétation des termes de preuves, nous arrivons aussi à une représentation des preuves en syntaxe abstraite d'ordre supérieur (HOAS), qui admet naturellement un algorithme de typage sans aucun contexte de typage explicite. Nous généralisons cet algorithme à tous les systèmes de types purs (PTS). Nous observons que cet algorithme est une extension à un cadre avec types dépendants de l'algorithme de typage des assistants de preuves de la famille HOL. Cette observation nous amène à développer une architecture à la LCF pour une large classe de PTS, c'est à dire une architecture où tous les termes de preuves sont corrects par construction, a priori donc, et n'ont ainsi pas besoin d'être vérifié a posteriori. Nous prouvons formellement en Coq un théorème de correspondance entre les système de types sans contexte et leur pendant standard avec contexte explicite. Ces travaux jettent un pont entre deux lignées historiques d'assistants de preuves : la lignée issue de LCF à qui nous empruntons l'architecture du noyau, et celle issue de Automath, dont nous héritons la notion de types dépendants. <p> Les algorithmes présentés dans cette thèse sont au coeur d'un nouveau vérificateur de preuves appelé Dedukti et ont aussi été transférés vers un système plus mature : Coq. En collaboration avec Dénès, nous montrons comment étendre la NbE non typée pour gérer la syntaxe et les règles de réduction du calcul des constructions inductives (CIC). En collaboration avec Burel, nous généralisons des travaux précédents de Cousineau et Dowek (2007) sur l'encodage dans le λΠ-calcul modulo d'une large classe de PTS à des PTS avec types inductifs, motifs de filtrage et opérateurs de point fixe.
|
26 |
Outils génériques de preuve et théorie des groupes finisGarillot, François 05 December 2011 (has links) (PDF)
Cette thèse présente des avancées dans l'utilisation des Structures Canoniques, un mécanisme du langage de programmation de l'assistant de preuve Coq, équivalent à la notion de classes de types. Elle fournit un nouveau modèle pour le développement de hiérarchies mathématiques à l'aide d'enregistrements dépendants, et, en guise d'illustration, fournit une reformulation de la preuve formelle de correction du cryptosystème RSA, offrant des méthodes de raisonnement algébrique ainsi que la représentation en théorie des types des notions mathématiques nécessaires (incluant les groupes cycliques, les groupes d'automorphisme, les isomorphismes de groupe). Nous produisons une extension du mécanisme d'inférence de Structures Canoniques à l'aide de types fantômes, et l'appliquons au traitement de fonctions partielles. Ensuite, nous considérons un traitement générique de plusieurs formes de définitions de sous-groupes rencontrées au long de la preuve du théorème de Feit-Thomspon, une large librairie d'algèbre formelle développée au sein de l'équipe Mathematical Components au laboratoire commun MSR-INRIA. Nous montrons qu'un traitement unifié de ces 16 sous-groupes nous permet de raccourcir la preuve de leur propriétés élémentaires, et d'obtenir des définitions offrant une meilleure compositionnalité. Nous formalisons une correspondance entre l'étude de ces fonctorielles, et des propriété de théorie des groupes usuelles, telles que représentées par la classe des groupes qui les vérifie. Nous concluons en explorant les possibilités d'analyse de la fonctorialité de ces définitions par l'inspection de leur type, et suggérons une voie d'approche vers l'obtention d'instances d'un résultat de paramétricité en Coq.
|
27 |
Automated verification of termination certificates / Vérification automatisée de certificats de terminaisonLy, Kim Quyen 09 October 2014 (has links)
S'assurer qu'un programme informatique se comporte bien, surtout dans des applications critiques (santé, transport, énergie, communications, etc.) est de plus en plus important car les ordinateurs et programmes informatiques sont de plus en plus omniprésents, voir essentiel au bon fonctionnement de la société. Mais comment vérifier qu'un programme se comporte comme prévu, quand les informations qu'il prend en entrée sont de très grande taille, voire de taille non bornée a priori ? Pour exprimer avec exactitude ce qu'est le comportement d'un programme, il est d'abord nécessaire d'utiliser un langage logique formel. Cependant, comme l'a montré Gödel dans, dans tout système formel suffisamment riche pour faire de l'arithmétique, il y a des formules valides qui ne peuvent pas être prouvées. Donc il n'y a pas de programme qui puisse décider si toute propriété est vraie ou fausse. Cependant, il est possible d'écrire un programme qui puisse vérifier la correction d'une preuve. Ce travail utilisera justement un tel programme, Coq, pour formellement vérifier la correction d'un certain programme. Dans cette thèse, nous expliquons le développement d'une nouvelle version de Rainbow, plus rapide et plus sûre, basée sur le mécanisme d'extraction de Coq. La version précédente de Rainbow vérifiait un certificat en deux étapes. Premièrement, elle utilisait un programme OCaml non certifié pour traduire un fichier CPF en un script Coq, en utilisant la bibliothèque Coq sur la théorie de la réécriture et la terminaison appelée CoLoR. Deuxièmement, elle appelait Coq pour vérifier la correction du script ainsi généré. Cette approche est intéressante car elle fournit un moyen de réutiliser dans Coq des preuves de terminaison générée par des outils extérieurs à Coq. C'est également l'approche suivie par CiME3. Mais cette approche a aussi plusieurs désavantages. Premièrement, comme dans Coq les fonctions sont interprétées, les calculs sont beaucoup plus lents qu'avec un langage où les programmes sont compilés vers du code binaire exécutable. Deuxièmement, la traduction de CPF dans Coq peut être erronée et conduire au rejet de certificats valides ou à l'acceptation de certificats invalides. Pour résoudre ce deuxième problème, il est nécessaire de définir et prouver formellement la correction de la fonction vérifiant si un certificat est valide ou non. Et pour résoudre le premier problème, il est nécessaire de compiler cette fonction vers du code binaire exécutable. Cette thèse montre comment résoudre ces deux problèmes en utilisant l'assistant à la preuve Coq et son mécanisme d'extraction vers le langage de programmation OCaml. En effet, les structures de données et fonctions définies dans Coq peuvent être traduits dans OCaml et compilées en code binaire exécutable par le compilateur OCaml. Une approche similaire est suivie par CeTA en utilisant l'assistant à la preuve Isabelle et le langage Haskell. / Making sure that a computer program behaves as expected, especially in critical applications (health, transport, energy, communications, etc.), is more and more important, all the more so since computer programs become more and more ubiquitous and essential to the functioning of modern societies. But how to check that a program behaves as expected, in particular when the range of its inputs is very large or potentially infinite? In this work, we explain the development of a new, faster and formally proved version of Rainbow based on the extraction mechanism of Coq. The previous version of Rainbow verified a CPF le in two steps. First, it used a non-certified OCaml program to translate a CPF file into a Coq script, using the Coq libraries on rewriting theory and termination CoLoR and Coccinelle. Second, it called Coq to check the correctness of the script. This approach is interesting for it provides a way to reuse in Coq termination proofs generated by external tools. This is also the approach followed by CiME3. However, it suffers from a number of deficiencies. First, because in Coq functions are interpreted, computation is much slower than with programs written in a standard programming language and compiled into binary code. Second, because the translation from CPF to Coq is not certified, it may contain errors and either lead to the rejection of valid certificates, or to the acceptance of wrong certificates. To solve the latter problem, one needs to define and formally prove the correctness of a function checking whether a certificate is valid or not. To solve the former problem, one needs to compile this function to binary code. The present work shows how to solve these two problems by using the proof assistant Coq and its extraction mechanism to the programming language OCaml. Indeed, data structures and functions de fined in Coq can be translated to OCaml and then compiled to binary code by using the OCaml compiler. A similar approach was first initiated in CeTA using the Isabelle proof assistant.
|
28 |
La référence dans le langage des sciences de la natureClémencon, Éric 21 October 2011 (has links)
La question à laquelle nous essayons de répondre est : comment les sciences réfèrent à des entités posées comme "réelles", extralinguistiques? Le problème est divisé en deux problématiques : par quels outils linguistiques les sciences assurent-elles la relation référentielle ? A quelles sortes d'entités (individus, classes, classes de classes) les sciences réfèrent-elles ? L'enquête prend la forme d'une analyse linguistique du langage des sciences de la nature. Nous commençons par étudier la structure des classifications. En effet, les lexiques scientifiques sont impliqués dans des systèmes formels, dont nous cherchons à montrer qu'ils sont justiciables de la théorie des types russellienne. Les 2nde et 3ème parties examinent ces lexiques normalisés et codifiés que sont les nomenclatures des sciences naturelles. Nous retraçons d'abord l'origine des nomenclatures biologique et chimique de Linné à Lavoisier. Nous exposons ensuite les débats nomenclaturaux et taxinomiques de la biologie systématique qui se sont déroulés au cours de la 2nde moitié du 20ème siècle. Cette présentation est centrée sur le "type nomenclatural" ou "type porte-nom" qui apparaît comme l'outil méthodologique par excellence par lequel la biologie assure la fonction référentielle des noms des espèces. Nous confrontons enfin le type nomenclatural au "stéréotype" de Putnam et cherchons à déterminer dans quelle mesure la théorie de la référence causale est utile pour clarifier la référence dans les sciences de la nature. / We try to answer the question: How do sciences refer to entities that are deemed "real", extralinguistic? The problem is two-fold: (i) What linguistic tools do sciences use in order to establish and ensure the relation of reference? (ii) What kinds of entities (individuals, classes ans classes of classes) do sciences refer to? Our enquiry takes the form of a linguistic analysis of the language of the natural sciences.The first step consists of a study of the structure of classifications. Actually, the scientific lexicons of entities have a distinctive feature: they are involved in formal systems, that is say, in nomenclatures. We purport to establish that Russell's theory of types provides a sound account of such systems. The 2nd and 3rd parts examine those standarized and codified vocabularies found in sciences. We first relate the origin of biological and chemical nomenclatures from Linnaeus to Lavoisier. We then present the nomenclatural and taxonomic debates conducted in the 2nd half of 20th century in systematic biology. This presentation focuses on the "nomenclatural type" or "name-bearer" as the major methodological tool by which biology fixes the reference of species's names. We conclude by comparing the nomenclatural type with the "stereotype" elaboratd by Putnam in the context of the causal theory of reference, and we try to determinate if and to what extend this theory can be useful in order to throw light on reference in the language of the natural sciences.
|
29 |
Réalisabilité et paramétricité dans les systèmes de types purs / Realizability and parametricity in Pure Type SystemsLasson, Marc 20 November 2012 (has links)
Cette thèse porte sur l’adaptation de la réalisabilité et la paramétricité au cas des types dépendants dans le cadre des Systèmes de Types Purs. Nous décrivons une méthode systématique pour construire une logique à partir d’un langage de programmation, tous deux décrits comme des systèmes de types purs. Cette logique fournit des formules pour exprimer des propriétés des programmes et elle offre un cadre formel adéquat pour développer une théorie de la réalisabilité au sein de laquelle les réalisateurs des formules sont exactement les programmes du langage de départ. Notre cadre permet alors de considérer les théorèmes de représentation pour le système T de Gödel et le système F de Girard comme deux instances d'un théorème plus général.Puis, nous expliquons comment les relations logiques de la théorie de la paramétricité peuvent s'exprimer en terme de réalisabilité, ce qui montre que la logique engendrée fournit un cadre adéquat pour développer une théorie de la paramétricité du langage de départ. Pour finir, nous montrons comment cette théorie de la paramétricité peut-être adaptée au système sous-jacent à l'assistant de preuve Coq et nous donnons un exemple d'application original de la paramétricité à la formalisation des mathématiques. / This thesis focuses on the adaptation of realizability and parametricity to dependent types in the framework of Pure Type Systems. We describe a systematic method to build a logic from a programming language, both described as pure type systems. This logic provides formulas to express properties of programs and offers a formal framework that allows us to develop a theory of realizability in which realizers of formulas are exactly programs of the starting programming language. In our framework, the standard representation theorems of Gödel's system T and Girard's system F may be seen as two instances of a more general theorem. Then, we explain how the so-called « logical relations » of parametricity theory may be expressed in terms of realizability, which shows that the generated logic provides an adequate framework for developping a general theory of parametricity. Finally, we show how this parametricity theory can be adapted to the underlying type system of the proof assistant Coq and we give an original example of application of parametricity theory to the formalization of mathematics.
|
Page generated in 0.0462 seconds