Nous utilisons les notations du calcul des prédicats pour présenter
les résultats logiques,
et la notation concrète de Prolog 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
,
,
,
,
et
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
-abstraction*
et application*.
Pour les exemples de programmes Prolog nous utilisons la notation du système
*.
Elle utilise les conventions lexicales de Standard Prolog
(
/
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
,
,
et
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 -abstraction et application,
mais la
-abstraction est notée x
E au lieu de
.
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 x
)
pour
.
De même,
les quantifications existentielles explicites sont notées
(sigma x
)
pour
.
Les identificateurs de variables explicitement quantifiées
(quantifications logiques ou
-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
et les autres implémentations de
Prolog
(voir la section «Autres systèmes
Prolog»*)
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
plutôt que de celle de Standard Prolog.