Proposition de stage de DEA dans le domaine des Isomorphismes de Types
Le ``Tarski's High School Algebra Problem'' et les types recursifs
Encadrants:
- Roberto Di Cosmo
- Université de Paris 7 et INRIA Roquencourt
http://www.dicosmo.org, E-mail: roberto@dicosmo.org
Tel: 01 44 27 86 55.
- Marcelo Fiore
- University of Cambridge
http://http://www.cl.cam.ac.uk/~mpf23.
Laboratoires d'accueil:
PPS (Université de Paris 7) et Computer Laboratory (University of Cambridge).Cadre de la recherche:
L'étude des ``isomorphismes de types'', c'est l'étude de ces types de données qui sont codifiables l'un dans l'autre sans perdre de l'information.
L'idée de base est très simple: une donnée a de type A peut être ``codéé' par un programme (ou fonction) f sous la forme d'une donnée f(a) de type B sans perte d'information si il est possible après de ``décoder'' ce f(a) à l'aide d'un programme (ou fonction) f-1 tel que f-1(f(a)) soit a lui-même. Or, on dit que A est isomorphe à B si toute donné de A peut être codée dans B sans perte d'information et viceversa. Autrement dit, on demande que le diagramme suivant commute:
Un exemple simple de ces isomorphismes qui est très connu dans la programmation fonctionnel prend son nom de Curry:
A->(B-> C) (A× B) -> C
Cela peut se lire comme ``une fonction qui attend deux arguments en série de type A et B et renvoie un résultat de type C peut etre transformée en une fonction qui prend le couple de type A× B de ces arguments et renvoie le même résultat C (et vice versa)''.
Si on se souvient de la formule qui donne le numéro de fonctions entre deux ensembles (ou types), il est facile de reconnaître là une identitée numerique bien connue: CAB = CA× B (ce qui ouvre aussi les portes à des interactions avec la théorie des nombres, que n'a pas été developpé en profondeur pour l'instant). Comme dans le cas des nombres, quand il se présente ce phénomène en programmation fonctionnelle, les deux ``types de donnée '' A et B ne sont que différentes représentations d'une même entité sousjacente, et il faudrait soit les identifier, soit savoir que si on cherche quelque chose du premier type, elle peut se manifester avec le deuxième type.
Ces deux alternatives correspondent effectivement aux applications les plus répandues des isomorphismes de type:
- la recherche de fonctions dans des librairies fonctionnelles, en utilisant le type comme clé de recherche,
- l'identification automatique, à la compilation, de tous les types isomorphes possibles pour chaque fonction
Sujet 1:
le ``Tarski's High School Algebra Problem'' pour <IN,·,flèche en haut,+,1,0>Tarski a posé en 1969 le problème de détérminer si les ``egalités du lycée'' que nous tous connaissons sont suffisantes pour prouver toutes les identités entre expressions entiéres que l'on peut écrire dans un langage fixé. Ce problème a occupé depuis un grand nombre d'illustres mathématiciens.
Si on considère les types construits à partir de la flèche, le produit, une constante ``unit'' et des variables seulement, il existe une remarquable coincidence entre les isomorphismes de types et les égalités entières dans <IN,·,flèche en haut,1> (voir http://www.dicosmo.org/Tarksi pour plus de détails). Si on ajoute au langage la somme, on ne sait plus si la coincidence reste valide, mais on a recemment pu montrer que une remarquable famille d'identités entières [5] est aussi une famille d'isomorphismes de types [3], et aussi que les isomorphismes avec somme ne sont pas finiment axiomatisables.
On vous propose d'analyser en détail la preuve de Gurevich de non finie axiomatisabilité des identités entières, pour pouvoir obtenir un des résultats suivants:
- l'automatisation de la génération des contre-modèles décrite par Gurevich
- l'extension du Théorème de Gurevich au cas du langage incluant la constante 0
- l'étude de la décidabilité et la complexité de différentes extensions propres des ``égalités du lycée''
Sujet 2:
isomorphismes de types récursifsLes types récursifs sont essentiels pour la définitions des types des données, et dans la théorie de la programmation orientée objets; ils ont fait l'objet d'études approfondies [2, 1] et il est très naturel de se poser la question des isomorphismes valides dans différentes systèmes de types une fois que l'on permet la formation de types récursifs.
On s'intéresse à caractériser, dans un prémier temps, tous les isomorphismes de types valides dans le système de types avec sommes, produits et types récursifs. Nous conjecturons que les isomorphismes naturels (associativite, commutativite et distributivité) sont complets dans ce cadre une fois que l'on s'autorise l'axiome µ alpha.F(alpha)=F(µalpha.F(alpha)) et la règle:
tau = F(tau) | |
tau = µ alpha.F(alpha) |
Dans un deuxième temps, il sera intéressant d'étudier les complexités qui sont introduite par le constructeur des types flèches.
On pourra ensuite proposer un algorithme de décision pour lisomorphismes, dont on étudiera la complexité et réalisera une implémentation.
Références
- [1]
-
M. Abadi and M. P. Fiore.
Syntactic considerations on recursive types.
In Proceedings of the Symposium on Logic in Computer Science
(LICS), number 11, pages 242--252, New Brunswick, New Jersey, 1996. IEEE
computer society Press.
- [2]
-
R. M. Amadio and L. Cardelli.
Subtyping recursive types.
ACM Transactions on Programming Languages and Systems,
15(4):575--631, September 1993.
- [3]
-
V. Balat, R. Di Cosmo, and M. Fiore.
Remarks on isomorphisms in typed lambda calculi with empty and sum
type.
In LICS. IEEE, July 2002.
- [4]
-
R. Di Cosmo.
Isomorphisms of types: from lambda-calculus to information
retrieval and language design.
Birkhauser, 1995.
- [5]
- R. Gurevic. Equational theory of positive numbers with exponentiation is not finitely axiomatizable. Annals of Pure and Applied Logic, 49:1--30, 1990.
Ce document a été traduit de LATEX par HEVEA.