Graphical types and constraints - second-order polymorphism and inference

Résumé : MLF est un système de types combinant le polymorphisme implicite de seconde classe de ML avec le polymorphisme de première classe mais explicite du Système F. Nous proposons une représentation des types de MLF qui superpose un graphe acyclique orienté du premier ordre (encodant la structure du type avec partage) et un arbre inversé (encodant la structure de lieurs du type). Cela permet une définition simple et directe de l'instance sur les types, qui se décompose en une instance sur la structure du type, des opérations simples sur l'arbre de lieurs, et un contrôle acceptant ou rejetant ces opérations. En utilisant cette représentation, nous présentons un algorithme d'unification sur les types de MLF ayant une complexité linéaire.

Nous étendons ensuite les types graphiques en un système de contraintes graphiques permettant l'inférence de types à la fois pour ML et MLF. Nous proposons quelques transformations préservant la sémantique de ces contraintes, et donnons une stratégie pour utiliser ces transformations afin de résoudre les contraintes de typage. Nous montrons que l'algorithme résultant a une complexité optimale pour l'inférence de types dans MLF, et que, comme pour ML, cette complexité est linéaire sous des hypothèses raisonnables.

Enfin, nous présentons une version à la Church de MLF, appelée xMLF, dans laquelle tous les paramètres de fonctions, toutes les abstractions de type et toutes les instantiations de types sont explicites. Nous donnons des règles de réduction pour réduire les instantiations de types. Le système obtenu est confluent lorsque la réduction forte est autorisée, et vérifie la propriété de réduction du sujet. Nous montrons aussi le lemme de progression pour des stratégies faibles de réduction, dont l'appel par nom et l'appel par valeur en restreignant ou non le polymorphisme aux valeurs. Nous proposons un encodage de MLF dans xMLF qui préserve les types, ce qui assure la sureté de MLF.
Type de document :
Thèse
Software Engineering [cs.SE]. Université Paris-Diderot - Paris VII, 2008. English
Liste complète des métadonnées

https://tel.archives-ouvertes.fr/tel-00357708
Contributeur : Boris Yakobowski <>
Soumis le : dimanche 1 février 2009 - 01:56:14
Dernière modification le : jeudi 8 octobre 2015 - 01:03:58
Document(s) archivé(s) le : mardi 8 juin 2010 - 19:53:38

Identifiants

  • HAL Id : tel-00357708, version 1

Collections

Citation

Boris Yakobowski. Graphical types and constraints - second-order polymorphism and inference. Software Engineering [cs.SE]. Université Paris-Diderot - Paris VII, 2008. English. <tel-00357708>

Partager

Métriques

Consultations de
la notice

681

Téléchargements du document

483