Les Bases de Prolog IV - Colmerauer, Alain
Les Bases de Prolog IV - Colmerauer, Alain
Les Bases de Prolog IV - Colmerauer, Alain
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
ge(Y,2.+.(3.*.X)),<br />
X = bgt(74,floor(100.*.V:1)).<br />
Y = 5.<br />
Rapi<strong>de</strong>ment quelques mots sur la syntaxe utilisée. <strong>Prolog</strong> <strong>IV</strong> se voulant conforme syntaxiquement<br />
à la norme <strong>Prolog</strong> iso 1 , toute expression se doit d’être un « terme » au sens <strong>de</strong><br />
cette norme 2 .<strong>Les</strong> termes au sens <strong>de</strong> la norme n’étant pas les termes comme on les connaît<br />
en logique, nous appellerons les premiers, termes-iso. Ces termes-isosont essentiellement<br />
<strong>de</strong> l’une <strong>de</strong>s <strong>de</strong>ux formes<br />
1 variable,<br />
2 nombre ou i<strong>de</strong>ntificateur,<br />
3 i<strong>de</strong>ntificateur(terme-iso,. . .,terme-iso),<br />
avec <strong>de</strong>s variations infixées, <strong>de</strong>s notations spécifiques aux listes et la convention que les<br />
noms <strong>de</strong> variables commencent par <strong>de</strong>s majuscules. Ces variations permettent d’écrire ici<br />
X:I pour in<strong>de</strong>x(X,I),<br />
X o Y pour conc(X,Y),<br />
X.+.Y pour plus(X,Y),<br />
X.*.Y pour times(X,Y),<br />
les relations in<strong>de</strong>x/3, conc/3, plus/3, times/3 étant utilisées avec <strong>de</strong>s notations fonctionnelles.<br />
Passons à la sémantique <strong>de</strong> la contrainte. Le connecteur logique ∧, noté ici par un<br />
virgule et la quantification existentielle ∃xp notée ici x ex p ont leur sens habituels,<br />
nous y reviendrons plus tard. <strong>Les</strong> variables représentent <strong>de</strong>s élément inconnus pris dans un<br />
certain domaine et les autres symboles <strong>de</strong>s relations et <strong>de</strong>s opérations bien précises dans<br />
ce même domaine.<br />
Ces opérations et relations dans un domaine précis font partie d’une structure plus<br />
complète, choisie une bonne fois pour toute, la structure <strong>de</strong> base π 4 . Ainsi que le laisse<br />
pressentir notre exemple <strong>de</strong> contrainte, il s’agit d’une structure particulièrement riche. Nous<br />
avons voulu à la fois pouvoir manipuler (1) <strong>de</strong>s symboles, (2) <strong>de</strong>s nombres et (3) <strong>de</strong>s objets<br />
complexes construits à partir <strong>de</strong> ceux-ci. En ce qui concerne la partie numérique, nous<br />
nous sommes montré particulièrement ambitieux en introduisant une centaine <strong>de</strong> relations<br />
portant sur l’ensemble R <strong>de</strong>s nombres réels (au sens mathématique), sur l’ensemble Q<br />
<strong>de</strong>s nombres rationnels (les fractions), sur l’ensemble Z <strong>de</strong>s nombres entiers relatifs et<br />
sur l’ensemble B <strong>de</strong>s valeurs booléennes 0 et 1, et ceci, tout en respectant les inclusions<br />
B ⊂ Z ⊂ Q ⊂ R.<br />
Deuxième principe : Une structure enrichissable<br />
En écrivant un programme <strong>Prolog</strong> <strong>IV</strong> on définit <strong>de</strong> nouvelle relations qui complètent la<br />
structure <strong>de</strong> base π 4 . Cet enrichissement est plus, d’ordre quantitatif, que d’ordre qualitatif :<br />
essentiellement les nouvelles relations permettent d’exprimer en une seule contrainte la<br />
1 ISO/IEC 13211-1, Information Technology, Programming Languages, <strong>Prolog</strong>, Part 1 : General Core,<br />
1995.<br />
2 A la page 5 du livre <strong>de</strong> Pierre Deransart, Ab<strong>de</strong>lAli Ed-Dbali et Laurent Cervoni, <strong>Prolog</strong> : The Standard,<br />
Springer-Verlag, 1996, on peut lire : « In Standart <strong>Prolog</strong> a unique data structure is used : terms »<br />
4