03.04.2014 Views

Les Bases de Prolog IV - Colmerauer, Alain

Les Bases de Prolog IV - Colmerauer, Alain

Les Bases de Prolog IV - Colmerauer, Alain

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!