Sur les types de données dans les langages logico-fonctionnels : Réécriture et surréduction des graphes admissibles - TEL - Thèses en ligne Accéder directement au contenu
Thèse Année : 2000

On Data Types in Functional Logic Programming Languages: Admissible Graph Rewriting and Narrowing

Sur les types de données dans les langages logico-fonctionnels : Réécriture et surréduction des graphes admissibles

Résumé

Functional logic languages are very high level programming languages which allow to define in a uniform way data types, functions and predicates (relations). Several propositions of functional logic languages have been done but they are based on first-order terms computations. This restriction allows to program with algebraic abstract data types but is not appropriate to manipulate real-world data types, as they are modeled with cyclic graphs. The aim of this thesis is thus to introduce cyclic graphs as basic data structure in functional logic languages: we consider the programs as cyclic graph rewriting systems and we study the rewriting and narrowing relations that they induce (operational semantics). An important property of rewriting concerns confluence: it expresses the determinism of the computations. Many results of confluence exist for term rewriting but they do not hold for cyclic graph rewriting in general. We characterize a class of particular cyclic graphs, the admissible graphs, and prove that the admissible graph rewriting relation is confluent. Concerning the narrowing relation, we propose a definition and prove that this calculus is sound and complete wrt the admissible graph rewriting relation. Then we study several admissible graph rewriting and narrowing strategies, ie, algorithms allowing to eliminate useless or redundant calculus. We show that our strategies are optimal wrt many criteria depending on the graph rewriting system which is considered.
Les langages logico-fonctionnels sont des langages de programmation de très haut niveau permettant de définir dans un formalisme unifié des types de données, des fonctions et des prédicats (relations). Plusieurs propositions de langages logico-fonctionnels ont été faites mais toutes se restreignent à des calculs basés sur les termes du premier ordre. Cette restriction permet de programmer avec des types abstraits algébriques mais elle rend difficile la manipulation des structures de données du monde réel, modélisées sous la forme de graphes cycliques. L'objectif de cette thèse est donc d'introduire les graphes cycliques comme structure de données de base des langages logico-fonctionnels. Pour cela, nous voyons les programmes comme des systèmes de réécriture de graphes cycliques et nous étudions les relations de réécriture et de surréduction qu'ils induisent (sémantique opérationnelle). Une propriété importante de la réécriture concerne la confluence : elle exprime le déterminisme des calculs effectués. De nombreux résultats de confluence existent pour la réécriture de termes mais ils ne s'étendent généralement pas aux graphes cycliques. Nous mettons en évidence une classe de graphes cycliques particuliers, les graphes admissibles, pour laquelle nous donnons une preuve de confluence de la réécriture. Concernant la relation de surréduction, nous en proposons une définition puis nous montrons que ce calcul est cohérent et complet par rapport à celui de la réécriture dans le cadre des graphes admissibles. Nous étudions ensuite plusieurs stratégies de réécriture et de surréduction de graphes admissibles, c'est-à-dire des algorithmes permettant d'éliminer des calculs inutiles ou redondants. Nous montrons que nos stratégies sont optimales selon de nombreux critères dépendants des systèmes de réécriture considérés.
Fichier principal
Vignette du fichier
tel-00006746.pdf (2.52 Mo) Télécharger le fichier

Dates et versions

tel-00006746 , version 1 (24-08-2004)

Identifiants

  • HAL Id : tel-00006746 , version 1

Citer

Jean-Christophe Janodet. Sur les types de données dans les langages logico-fonctionnels : Réécriture et surréduction des graphes admissibles. Génie logiciel [cs.SE]. Institut National Polytechnique de Grenoble - INPG, 2000. Français. ⟨NNT : ⟩. ⟨tel-00006746⟩

Collections

UGA IMAG CNRS
70 Consultations
87 Téléchargements

Partager

Gmail Facebook X LinkedIn More