Best viewed in 24pt and full-screen
next up previous contents
Next: Prolog - clauses de Up: Prolog Previous: Prolog

Notations

Nous utilisons les notations du calcul des prédicats pour présenter les résultats logiques, et la notation concrète de tex2html_wrap_inline56836Prolog pour présenter des exemples de programmes (voir aussi la section «Notations»* -- du lexique des notions communes).

Pour le calcul des prédicats, nous utilisons les notations tex2html_wrap_inline51356, tex2html_wrap_inline54296, tex2html_wrap_inline55358, tex2html_wrap_inline51352, tex2html_wrap_inline55356 et tex2html_wrap_inline54298 pour les connecteurs et les quantificateurs du calcul des prédicats. Nous ne faisons pas d'hypothèse sur les priorités relatives des connecteurs, mais en contre-partie nous utilisons plus de parenthèses qu'il est habituel de le faire. Pour augmenter la lisibilité des parenthèses, nous utilisons les parenthèses rondes ('(' et ')', les vraies parenthèses) pour construire les termes et les formules propositionnelles, et les parenthèses carrées ('[' et ']', les crochets) pour les portées de quantificateurs. Il n'y a pas de convention lexicale pour distinguer les constantes des variables. Elles se reconnaissent à ce que les variables sont quantifiées alors que les constantes ne le sont pas. Les termes sont construits par tex2html_wrap_inline56836-abstraction* et application*.

Pour les exemples de programmes tex2html_wrap_inline56836Prolog nous utilisons la notation du système tex2html_wrap_inline52896*. Elle utilise les conventions lexicales de Standard Prolog (tex2html_wrap_inline51348/tex2html_wrap_inline51350 13211 [Deransart et al. 96]). À savoir, les identificateurs de variables liées par une quantification universelle implicite au niveau d'une clause commencent par une majuscule ou le signe «_», les identificateurs de constantes commencent par une minuscule ou sont placés entre guillemets simples «'...'», les connecteurs tex2html_wrap_inline51352, tex2html_wrap_inline55358, tex2html_wrap_inline51356 et tex2html_wrap_inline54296 sont notés «:-», «=>», «,» et «;».

De la même manière que pour Standard Prolog, des déclarations permettent de doter un symbole d'une syntaxe d'opérateur, préfixe, infixe ou postfixe. Ces déclarations indiquent aussi la portée des opérateurs à leur gauche et à leur droite. Enfin, d'un point de vue syntaxique, une clause n'est rien de plus qu'un terme, et il est du ressort d'une vérification «sémantique» de vérifier qu'il s'agit d'un terme construit avec un agencement légal de connecteurs.

Dans le but d'accroître la lisibilité des programmes, nous nous autorisons la licence d'utiliser des lettres accentuées dans les identificateurs, même si la syntaxe concrète des identificateurs ne le permet pas. En aucun cas, une différence d'accentuation ne sera la seule différence entre deux identificateurs du même exemple.

Les termes sont construits par tex2html_wrap_inline56836-abstraction et application, mais la tex2html_wrap_inline56836-abstraction est notée xtex2html_wrap_inline56812E au lieu de tex2html_wrap_inline51366. Les quantifications universelles au niveau des clauses restent implicites comme en Prolog, mais celles qui sont imbriquées plus profondément sont notées (pi xtex2html_wrap_inline56812tex2html_wrap_inline51376) pour tex2html_wrap_inline51372. De même, les quantifications existentielles explicites sont notées (sigma xtex2html_wrap_inline56812tex2html_wrap_inline51376) pour tex2html_wrap_inline51378. Les identificateurs de variables explicitement quantifiées (quantifications logiques ou tex2html_wrap_inline56836-abstractions) emploient indifféremment la notation des variables ou celle des constantes. Il est alors d'usage de choisir la notation selon la sémantique de ces variables : par exemple, majuscule initiale ou «_...» pour les variables essentiellement existentielles*, minuscule initiale ou «'...'» pour les variables essentiellement universelles*

Les exemples de programmes peuvent aussi contenir deux sortes de déclaration. Les déclarations

kind <symbole constructeur de type> <notation d'arité>

ou

kind (<symbole constructeur de type>, ...) <notation d'arité>

introduisent de nouveaux symboles constructeurs de type et leur associent une arité*. De même, les déclarations

type <symbole constructeur de terme> <notation de type>

ou

type (<symbole constructeur de terme>, ...) <notation de type>

introduisent de nouveaux symboles constructeurs de termes et leur associent un type*.

Notons enfin que l'écart entre la syntaxe de tex2html_wrap_inline52896 et les autres implémentations de tex2html_wrap_inline56836Prolog (voir la section «Autres systèmes tex2html_wrap_inline56836Prolog»*) n'est pas très grand. La plus grande différence vient de ce que, dans ces implémentations, certains traits comme la notation de liste et les déclarations d'opérateurs sont inspirées de la syntaxe de Standard tex2html_wrap_inline54612 plutôt que de celle de Standard Prolog.


next up previous contents
Next: Prolog - clauses de Up: Prolog Previous: Prolog

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