• Aucun résultat trouvé

2.4 Les modalités

3.1.1 Langage : types et termes

Définition 25 (Types). Les types sont définis à partir de l’ensemble fini des types de base selon la grammaire suivante :

Si est un type qui ne fait pas intervenir le produit , on définit l’ordre de par : – si est atomique ;

! "#%$&')(+*-,.0/1! 2345$687 .

Définition 26 (Termes). Les termes sont construits de la manière suivante : pour chaque type9;: , soit<>= un ensemble dénombrable de variables de type9 et?@= un ensemble fini de constantes de type

9 (<ACB = < = et?DCB = ? = ). On a alors :

– les éléments de<>= et de?E= sont des termes de type9 ;

– siF etG sont des termes de types respectifsH etI , alors JF!KGEL est un terme de typeHMDI ; – siN est un terme de type HOI , alorsP N etP

$

N sont des termes de types respectifsH etI ; – siG est un terme de typeI et%Q est une variable de type H alors5QSRTG est un terme de type

HOUI ;

– siN etF sont deux termes de types respectifsHOUI etH , alorsVNW3KF est un terme de typeI . Un terme de la formeX@F est une application (de X à F ), et un terme de la forme YRZN est une abstraction fonctionnelle, ou -abstraction. Ainsi, simetpsont de type[ , etaimede type[[ X , aime m pest un terme de typeX : l’application deaimeàmetp.

Définition 27 (Occurrences libres de variable). Pour un termeN et une variable , les occurrences

libres de dansN se définissent par :

– siN est une variable , l’occurrence de dansN est libre ;

– siN\]F%^G , les occurrences libres de dansN sont celles de dansF etG ;

– siN_`YabRTF , les occurrences libres de dansN sont celles de dansF sauf si;Ca . Dans ce cas, n’a pas d’occurrences libres dansN .

Une variable libre deN est une variable ayant au moins une occurrence libre dans N . Un terme sans variable libre est appelé un terme clos.

Une variable liée deN est une variable apparaissant dansN derrière le symbole .

Définition 28 (Substitution simple). SoientNKX3 &cRcRcR>KXed des termes et ccRcRcRK-d des variables dis-tinctes. On définit le termeN0JX 2f cRcRcRKXed f bdgL comme le résultat de la substitution de X^h à chaque occurence libre de

h dansN , obtenu par induction : – siN\i h,NjJX3 f > &cRcRcR!KXkd f -dlLmnX h ;

– siN est une variable différente de chaque h,NjJX3 f > &cRcRcR!KXkd f -dlLmN ;

– si , !"#!$" ; – si%&('") alors *#*+%,'-). "'/ '/ -'10 ('10 ;

– si%&2) avec2435 alors 6#7%,2#)# $".

Définition 29 ( -equivalence). On définit la relation binaire89;:<8= par : – si8 est une variable,8> : 8= si et seulement si8>?8(= ;

– si8>@;A- ,8B;: 8 = si et seulement si8 = @ =A- = avecC;: = etDE:< = ; – si8>F, ,8>;: 8(= si et seulement si8(=&G=HI=1 avecJ;:<K= etL;:<G= ;

– si89%&) ,8>;: 8 = si et seulement si8 = M,2#) = avec.ONI.+;:< = ONI2& pour toute variable

N sauf un nombre fini.

Cette relation est une relation d’équivalence sur l’ensemble des termes.

Deux termes8PE:Q8= ont même structure et mêmes variables libres. Par la suite, on identifie les termes -équivalents (qui diffèrent juste à cause des occurences liées) en considérant l’ensemble des termes quotienté par la relation;: .

Définition 30 ([Kri90]). On définit pour un terme 8 le terme 8SR *#T le résultat de la substitution de -' aux occurences libres de(' dans8 commme étant8(=U *#* pour un terme8 = tel que :

89;: 8(= ;

– aucune variable liée de8(= ne soit libre dans l’un des '.

Il existe bien un tel terme 8 =, et la classe d’équivalence de 8 = $" ne dépend pas du choix de8(=.

Cette nouvelle substitution, différente de la substitution simple, permet d’éviter de transformer la structure des termes. Ainsi, pour89M,$)2 :

84.2&V%&) , c’est-à-dire l’identité ; – 84R.2IT.?8

=

W2, avec8

=

M&N,)2 par exemple, soit8SR.2IT.%(N,) , qui n’est pas l’identité. Ainsi, lors de la substitution, si l’on introduit une variable qui se trouve être liée dans le terme par un , on procède tout d’abord à un changement de nom de la variable liée, afin de ne pas modifier le comportement opérationnel du terme.

Définition 31. Un terme est normal si aucun de ses sous-termes n’est de la forme :

X

8, ouXWY

8$ ou @U,WZV),A-8

On définit la relation binaire\[^]<= ( se convertit en=) par : – si est une variable,[^]< = est faux pour tout = ;

– si X 8, alors\[_] = si et seulement si=(?8 ; – si X Y 8, alors\[_] = si et seulement si=(? ;

– si%&)8 alors[^] = si et seulement si = %&)8 = avec8>[^]F8 = ; – si@,A-8 alors alors[^]<= si et seulement si :

– ou bien = @A-8 = avec8>[^] 8 = ; – ou bien"=(@K=`A-8 avecC[^]FI= ; – ou bienC@U&);A et=&D R8.(T.

est appelé redex et = son contracté. On définit la relation binaire a[cb

]

= ( se réduit ou se d -réduit en un terme =) comme la fermeture reflexive et transitive de[_] .

Exemple 2. Voici quelques réductions : ! " ; – soit#$%&'(*)+(&, -) ./) . On a ensuite :

0 1/#2 )+(3)+ 1&'()+(&, -) ./) .)+(/) Puis 0 )+(*)+(,/) -) ./) )+(/) ./) )+(/) ./)

– soit alors/#4 ./#2 *)+(,/) . Ce terme se réduit en :

/#2 .*)+(,/) ./) 5 *)+(,)+(/) ./) -) ./) 6 087 Puis0!7 *)+(,,/) ./) ./) 9 *)+(,/) ./) ./) .

Remarquons que dans le dernier exemple, nous avons réduit en premier le terme

0

1/#4 *)+(/)

Or, pour réduire /#4

0

:&'(*)+(2&, -) ./)

0

, on aurait pu commencer par réduire le terme le plus extérieur, soit/#2

0 *)+(2 0 -) ./) puis seulement 0

-) . On s’aperçoit que dans tous les cas, la réduction finit et converge vers le même terme. Mais est-ce vrai pour tous les -termes ? La réponse est donnée par les théorèmes 39 et 40.

Théorème 39.

est confluente (si; se réduit en;< et;

7

, il existe un terme= tel que;< se réduit en= et;

7

se réduit en= ). Et donc un terme# a au plus une forme normale.

Définition 32. Un terme# est fortement normalisable s’il n’admet aucune suite infinie de réduction.

Théorème 40. Tous les termes du -calcul simplement typé sont fortement normalisables.

Pour les différentes preuves, nous renvoyons à [GLT88].

Ce théorème montre que les termes de l’exemple se réduisent bien car ils sont bien typés. Par contre, dans le -calcul non typé, on peut trouver des termes admettant des réductions infinies (tels

>

?,@A @B qui n’est pas normalisable, et donc @

>

qui n’est pas fortement normali-sable). La section 3.1.3 montre comment cette propriété permet d’assurer systématiquement le calcul du sens pour une phrase syntaxiquement correcte.

Enfin, notons l’importante propriété que les relations

et

préservent les types.

Définition 33. Une équation est une paire de termes# ,C . Un problème d’unification est un exemble fini d’équations. Une solution, ou un unificateur d’un tel problème est une substitution D telle que pour toute paire # , C du problème, les termes #EDF etCEDF ont la même forme normale. Si C est un terme sans variable libre, on parle d’un problème de filtrage (matching).

Une substitutionDG< est plus générale queD

7

s’il existe une substitutionH telle queD

7

IHKJEDG<. Une autre transformation comparable peut-être ajoutée, celle de =LM; en ; quand

n’apparaît pas dans; . On l’appelleH -conversion et permet d’identifier les termes= et; . Le passage de ; à = s’appelle H -expansion. Les théorèmes de confluence et normalisation sont encore vérifiés grâce au typage.

Maintenant que nous avons défini les termes, nous allons définir les modèles du -calcul et en particulier ceux dans lesquels exprimer la vérité de certaines phrases du langage. Pour le -calcul simplement typé, il existe bien d’autres modèles encore.