• Aucun résultat trouvé

Se dit d’un litt´eral (10 constitu´e d’une formule atomique (90) ni´ee.

m b ) > dans la continuation de programme

2) Se dit d’un litt´eral (10 constitu´e d’une formule atomique (90) ni´ee.

Normalisation forte. n.f. Propri´et´e d’un syst`eme de r´e´ecriture selon laquelle toute d´erivation

converge vers une forme normale.

Le



-calcul(74)n’a pas cette propri´et´e. En effet, des



-termes n’ont pas de forme nor-

male : par exemple

(107), car

.

et c’est la seule r´eduction possible. D’autres en

ont une, mais sont aussi le point de d´epart de d´erivations qui ne convergent pas : par exemple (K (98) I (95) ), car(KI)

.

Ien

-r´eduisant (125)le r´edex (KI)en premier, mais (KI)

.

(KI)

. :::

en

-r´eduisant le r´edex de`a chaque fois.

En revanche, le



-calcul simplement typ´e(74)et tous ceux ducube de Barendregt(68)sont

type ouvrir l terme –

>

(list string) –

>

l terme –

>

o .

ouvrir (libre X Ferm´e) [X

|

Xs] Ouvert:– ! , ouvrir (Ferm´e (var X)) Xs Ouvert .

ouvrir Ouvert [] Ouvert .

O

Substitution dans un



-terme objet de constructeurs de variable libre, var, aux oc-

currences des variables libres d´esign´ees comme telles par un((quantificateur))de

variable libre, libre. C´est l´op´eration inverse dequant(123), mais elle peut ˆetre pro-

gramm´ee beaucoup plus simplement en utilisant la

-r´eduction du m´etalangage. Ce-

pendant, la programmation de ouvrir est mono-directionnelle (mode (ouvrir + ? ?)), alors que celle de quant est bi-directionnelle (modes (quant + + ?) et (quant ? ? +)). o. Type des valeurs de v´erit´e. Dans les ´ecrits logiques classiques (par exemple,

Church [Church 40]), le type o s’oppose au type i qui distingue les individus, les termes. En



Prolog, le type i est remplac´e par des types d´efinis dans des biblioth`eques ou par l’utilisateur. Ils fournissent une classification plus fine des individus.

.=(

x

(

x x

)

x

(

x x

)).

Ce



-terme(132)contient un seul

-r´edex(125)(lui-mˆeme) et se

-r´eduit(125)en lui mˆeme. Il

est l’arch´etype des



-termes sans forme normale.

Ordre sup´erieur. n.m. (ant.premier ordre(109)) D´esigne une structure hi´erarchique o`u on peut

avoir `a certains niveaux des quantifications qui ont pour domaine des objets de niveau sup´erieur ou ´egal. Par exemple, une logique d’ordre sup´erieur pourra soit avoir des quan- tifications dans les termes (



-abstraction(67)), soit avoir des formules quantifi´ees sur les

formules, soit avoir les deux. Un langage de programmation fonctionnel d’ordre sup´erieur pourra avoir des fonctions de fonctions.

On voit que l’extension `a l’ordre sup´erieur d’une logique de premier ordre peut prendre plusieurs voies.



Prolog met en œuvre la troisi`eme :



-abstraction dans les termes et quan- tification sur les formules (voir par exemple les butsfaux(141)etvrai(141)).

type plus ((A–

>

A)–

>

A–

>

A) –

>

((A–

>

A)–

>

A–

>

A) –

>

((A–

>

A)–

>

A–

>

A) –

>

o .

plus X Y snzn(X s (Y s z)) .

P

Addition des entiers de Church.

Partage de repr´esentation. n.m. D´esigne le fait de reconnaˆıtre que des objets d’origines dis-

tinctes sont ´equivalents, et de les faire partager une repr´esentation commune. C’est un compl´ement indispensable du ramasse-miette pour obtenir une gestion de m´emoire ef- ficace. En



Prolog, le partage est crucial pour la

-r´eduction(125) et pourl´unification(138)

[Brisset et Ridoux 92b, Brisset et Ridoux 92a]. La

-r´eduction doit conserver les partages des termes dupliqu´es et l’unification doit mettre en œuvre les partages qu’elle cause.

Lar´eduction de graphe(125)permet naturellement de partager les repr´esentation et on

peut encore am´eliorer cet aspect en prenant en consid´eration la nature des termes qui forment un

-r´edex :combinateurs(78)ou



-r´edex(125).

La logique de l’unification est de trouver une substitution qui rend deux termes ´egaux. Celle de la recherche de la preuve est d’appliquer ces substitutions au fur et `a mesure o`u elles sont calcul´ees. Cela a pour effet de rendre de plus en plus de termes ´egaux. Cela n’est pas un argument de terminaison car il se cr´ee aussi toujours de nouveaux termes. Si deux termes sont ´egaux, ils peuvent alors partager la mˆeme repr´esentation. Ce n’est pas fait

dans les mises en œuvre standard de Prolog car cela complique un peu la repr´esentation, mais cela est naturel en Prolog/MALI car la repr´esentation des



-termes(132)contient na-

turellement les m´ecanismes n´ecessaires. L’effet est de substituer, r´eversiblement car toute unification peut ˆetre annul´ee au retour-arri`ere, un des termes `a l’autre. Cela ´economise de futures unifications car l’identit´e est plus facile `a tester que l’unifiabilit´e. Cela ´economise aussi de la m´emoire, et donc le temps de la r´ecup´erer.

Les termes d’un probl`eme d’unification doivent ˆetre en forme de tˆete expans´ee pour pouvoir ˆetre compar´es. Apr`es l’application des substitutions produites par imitation(96)

ou projection(111), le terme qui ´etait flexible, et peut ne plus l’ˆetre, n’est plus en forme

de tˆete expans´ee. Cependant, sa nouvelle forme normale de tˆete



-longue peut ˆetre d´e- duite ais´ement du terme original et de la substitution sans avoir recours `a la proc´edure de

-r´eduction(125). Ce faisant, imitation et projections inventent une substitution, l’appliquent

au terme flexible, calculent sa nouvelle forme normale de tˆete



-longue et la substituent au terme original.

Par exemple, le probl`eme d’unification

< t

1

;t

2

>

, o`u

t

1=

x

(

t

3),

t

3=(

U

(

x S

1)),

et

t

2=

x

(

x S

2), produit trois substitutions apr`es une application de la proc´edure

MATCH(103):

1. [

U

y

(

y

)](projection),

2. [

t

3 (

x S

1)](forme normale de tˆete



-longue de

t

1),

3. [

t

1

t

2](partage de repr´esentation).

On voit donc qu’en plus plus des substitutions solutions, beaucoup d’autres sont effectu´ees pour ´economiser du temps d’unification et de

-r´eduction, et de la m´emoire.

Pertinent. adj. (rel.unificateur(139)etsubstitution(131)) (en anglais, relevant) Se dit d’un uni-

ficateur dont le domaine et le codomaine ne contiennent que des variables des termes unifi´es. Par exemple, ´etant donn´es deux termes (

f X

(

s Y

)) et (

f A B

), l’unificateur



=[

X

A;Y

(

s Z

)

;B

(

s

(

s Z

))]n’est pas pertinent (`a cause de la variable

Z

),

mais l’unificateur



0

=[

A

X;B

(

s Y

)]l’est.

Au premier ordre, et si un unificateur existe, on peut toujours le choisir pertinent, mais `a l’ordre sup´erieur ce n’est pas toujours possible (!imitation

(96)etprojection(111)).

pi. synt.progr. Notation concr`ete du quantificateur universel,8, en



Prolog. C’est une r´eminis-

cence de la notation introduite par Charles S. Peirce vers 1880 [Peirce 60]. Peirce voyait dans la quantification universelle une conjonction g´en´eralis´ee (´el´ement neutre : vrai ou 1) et donc un produit,.

Similairement, la notation concr`ete du quantificateur existentiel,9, est sigma puisqu’on

peut y voir une disjonction g´en´eralis´ee (´el´ement neutre : faux ou 0) et donc une somme,.

L’usage de  et  est aussi attest´e dans des ´ecrits plus modernes (par

exemple [Church 40, Horn 51]).

Pile de recherche. n.f. (syn.continuation d´´echec(81)) Structure de donn´ees associ´ee au parcours

d’un arbre de recherche en profondeur d’abord et avec retour arri`ere chronologique. On y range la description des choix faits lors du parcours : situation lors du choix et clause choisie. Plus pr´ecis´ement, on ne note pas explicitement la situation lors du choix, mais un moyen d’y revenir `a partir de la situation o`u on d´ecide un retour arri`ere.

DansProlog/MALI(123), la pile de recherche est compl`etement r´ealis´ee par MALI(103).

Il faut noter que dans cette r´ealisation, elle n’a de pile que la logique d’empilement et d´epilement.

Polarit´e. n.f. Le connecteur d’implication introduit une notion de polarit´e. Si on donne un

signe, + ou -, `a une formule dont le connecteur principal est l’implication, la sous-formule de droite (la conclusion) aura le mˆeme signe, alors que la sous-formule de gauche (l’hypo- th`ese) aura le signe oppos´e. La n´egation inverse aussi la polarit´e, mais elle est absente des travaux pr´esent´es ici. Les autres connecteurs et quantificateurs conservent la polarit´e.

On peut coder en



-calcul simplement typ´e(74)les polarit´es et l’op´erateur d’inversion de

polarit´e.

PLUS = vnfnv

MOINS = vnfnf

INV = pnvnfn(p f v)

La fl`eche des types introduit la mˆeme notion de polarit´e. Cela constitue un des aspects de lacorrespondance de Curry-Howard(83). La polarit´e dans les types est `a la base de la

notion detype inductif(136).

Port´ees de symboles et d´objets. n.f. Le mot ((port´ee))r´esume les nouvelles capacit´es de



Prolog. L’abstraction d´elimite la port´ee des variables dans les termes. Les quantifications d´elimitent la port´ee des variables dans les formules. Enfin, les r`egles de d´eduction pour la quantification universelle et l’implication dans les buts d´elimitent respectivement la port´ee des constantes et des clauses dans les preuves.

Positif. adj. (ant.n´egatif(106))

1) (!polarit´e

(109))