Best viewed in 24pt and full-screen
next up previous contents
Next: V-W Up: A-Z Previous: T

U

kind ulist type -> type -> type .
type ucons A -> (ulist B R) -> (ulist A->B R) .
type unil (ulist R R) .
type univ A -> (ulist B->B A) -> o .
Par exemple : univ (1 + 2) (ucons (+) (ucons 1 (ucons 2 unil)))


Typage du prédicat prédéfini univ (aussi noté =..). L´homogénéité du type des constructeurs de liste habituels (tex2html_wrap_inline55796 déclaration list*) ne permet pas de construire une liste d´une fonction et de ses arguments. Le premier type passé en paramètre de ulist est celui d´une fonction qui peut prendre en paramètre les termes rangés dans la liste. Le deuxième type est celui du résultat, en fait le type du terme passé en premier paramètre de univ. Ce typage ne convient que pour une réalisation intentionnelle (par le système) de univ. Une réalisation extensionnelle (par une relation explicite) violerait la condition de tête.

Unification. n.f. (rel. Herbrand* et substitution*) Problème de vérifier si il existe une substitution de leurs variables qui peut rendre deux termes égaux, ou équivalents modulo une relation donnée (par exemple, par une théorie équationnelle), et de produire une telle substitution quand elle existe (un unificateur). Par exemple, le résultat de l'unification de tex2html_wrap_inline56682 et de tex2html_wrap_inline56684 est qu'il existe une substitution qui les rend égaux et qu'elle peut être tex2html_wrap_inline56686, ou tex2html_wrap_inline56688, ou bien tex2html_wrap_inline56690 tex2html_wrap_inline56692, ou encore tex2html_wrap_inline56694 tex2html_wrap_inline56696, etc. Inversement, le résultat de l'unification de tex2html_wrap_inline56698 et de tex2html_wrap_inline56700 est qu'il n'existe pas de substitution qui les rend égaux.

Quand une telle substitution existe, il peut en exister plusieurs et même une infinité. On ignore donc les variantes dues aux noms des variables, comme tex2html_wrap_inline56718 et tex2html_wrap_inline56720, et on se restreint aux unificateurs les plus généraux (tex2html_wrap_inline56072). Ce sont des unificateurs tels que tout autre unificateur résulte de la composition d'un unificateur plus général et d'une substitution. Les substitutions tex2html_wrap_inline56708 et tex2html_wrap_inline56710 ne sont pas plus générales : elles résultent de la composition de tex2html_wrap_inline56718 et de tex2html_wrap_inline56714 ou tex2html_wrap_inline56716. En définitive, tex2html_wrap_inline56718 et tex2html_wrap_inline56720 sont plus générales, mais équivalentes aux noms des variables près.

Selon le domaine de terme et sa théorie de l'égalité, le nombre d'unificateurs plus généraux varie ; il peut y en avoir au maximum un, le problème est alors qualifié d'unitaire, plusieurs mais en nombre fini, le problème est alors qualifié de finitaire, ou même une infinité, le problème est alors qualifié d'infinitaire. Par exemple, le problème d'unification des termes de premier ordre est unitaire, alors que le problème d´unification des termes d´ordre supérieur* est infinitaire. On peut s'en convaincre en résolvant l'équation suivante en tex2html_wrap_inline56722 :

displaymath56680

Les solutions sont tex2html_wrap_inline52402, tex2html_wrap_inline56726, tex2html_wrap_inline56728, ..., tex2html_wrap_inline56730. Ces termes sont les entiers de Church*. Il y en a naturellement une infinité, et aucun n'est une instance d'un autre.

La résolution effective de ces problèmes n'est pas toujours possible. Les problèmes qui nous intéressent sont soit décidables* comme le problème d'unification des termes du premier ordre avec égalité syntaxique, soit semi-décidables* comme le problème d'unification des termes d'ordre supérieur.

Unification d´ordre supérieur. n.f. Problème de vérifier si il existe une substitution qui peut rendre deux tex2html_wrap_inline56836-termes* égaux modulo la tex2html_wrap_inline56836-équivalence*, et de produire une telle substitution quand elle existe (un unificateur). Pour le tex2html_wrap_inline56836-calcul simplement typé*, le problème est infinitaire* et semi-décidable*. La première procédure a été proposée par Huet [Huet 75] : semi-algorithme de Huet*. D'autres présentations en ont été faites par Snyder et Gallier [Snyder et Gallier 89] et par Paulson et Nipkow [Paulson 86, Nipkow 90]. Miller a étudié la correspondance entre quantifications logiques (tex2html_wrap_inline55356 and tex2html_wrap_inline54298) et la quantification du tex2html_wrap_inline56836-calcul* (tex2html_wrap_inline56836-abstraction*) [Miller 92]. Elliot, Pym et Pfenning ont exploré l'unification d'ordre supérieur dans le cube de Barendregt* [Elliott 89, Pfenning 91, Pym 92].

Unificateur. n.m. Solution d'un problème d´unification*. C'est une substitution*.

Unitaire. adj.

1) (tex2html_wrap_inline55796 unification*)

2) (tex2html_wrap_inline55796 clause unitaire*).


next up previous contents
Next: V-W Up: A-Z Previous: T

Olivier Ridoux
Mon Apr 27 11:10:23 MET DST 1998