Professional Documents
Culture Documents
juillet 1992
Alain Colmerauer
Philippe Roussel
Elsa Software,
Technople de Chateau Gombert
13013 Marseille, France
e-mail: proussel@elsa.fr
fax: (33) 91 05 50 09
tel: (33) 91 05 50 08
Rsum
Le langage de programmation Prolog est n d'un projet, dont le but n'tait pas de faire un
langage de programmation mais de traiter les langages naturels, en l'occurrence le
Franais. Ce projet a donn naissance un Prolog prliminaire la fin 1971 et un Prolog
plus dfinitif la fin de l'anne 1972. Cet article relate l'histoire de ce projet, dcrit en
dtail la version prliminaire de Prolog puis sa version dfinitive. Les auteurs ont aussi
jug bon de dcrire les systmes-Q un langage qui a jou un rle important dans la gense
de Prolog.
Table des matires
Introduction...................................................................................................................... 2
Partie I. L'histoire............................................................................................................. 2
Anne 1971, les premiers travaux .......................................................................... 3
Anne 1972, l'application qui cre Prolog .............................................................. 5
Anne 1973, le vrai premier Prolog........................................................................ 8
Anne 1974 et 1975, la diffusion de Prolog............................................................ 9
Partie II. Un anctre de Prolog, les systmes-Q ............................................................... 10
Unification unidirectionnelle................................................................................ 10
Stratgie d'application des rgles.......................................................................... 11
Ralisation........................................................................................................... 13
Partie III. Le Prolog prliminaire.................................................................................... 14
Choix de la mthode de rsolution, raisons .......................................................... 14
Caractristiques du Prolog prliminaire ............................................................... 17
Ralisation du Prolog prliminaire....................................................................... 19
Partie IV. Le Prolog dfinitif .......................................................................................... 20
Stratgie de rsolution.......................................................................................... 20
Syntaxe et Primitives ........................................................................................... 21
Un exemple de programme .................................................................................. 22
Ralisation de l'interprte..................................................................................... 26
Conclusion ..................................................................................................................... 27
Bibliographie.................................................................................................................. 28
Colmerauer et Roussel
La naissance de Prolog
Page 2
Introduction
Il est de notorit publique que le nom de Prolog a t cr Marseille en 1972. C'est Philippe
Roussel qui la choisi, comme abrviation de PROgrammation en LOGique , pour dsigner
l'outil informatique conu pour implanter un systme de communication homme machine en
langage naturel. On peut dire que Prolog a t le fruit d'un mariage russi entre le traitement
du langage naturel et la dmonstration automatique. L'utilisation directe du franais pour
raisonner et dialoguer avec un ordinateur, tait un rve un peu fou : c'tait le projet labor ds
l't 70, par Alain Colmerauer qui avait une certaine exprience dans le traitement
informatique des langages naturels, et qui souhaitait largir sa recherche.
Les deux auteurs de cet article, Alain Colmerauer et Philippe Roussel, sont donc prsents,
mais il est vident que bien d'autres personnes ont particip un tel projet. Pour rester
objectifs en racontant l'histoire de la naissance de Prolog, qui a dj vingt ans maintenant, nous
avons repris tous les documents qui nous restaient et nous avons jou les historiens. Nous
avons d'abord suivi la chronologie de trs prs, pour exposer les faits et dcrire les acteurs de
l't 70 la fin 76. Ceci constitue la premire partie de larticle. Les autres parties sont plus
techniques. Elles sont consacres aux trois langages de programmations qui se sont
succds rapidement : les systmes-Q conus pour la traduction automatique, le Prolog
prliminaire cr en mme temps que son application et le Prolog dfinitif cr
indpendamment de toute application.
Ce papier n'est pas le premier sur l'histoire de Prolog. Signalons celui de Jacques Cohen
[1988], directement sur Prolog, et celui de Robert Kowalski [1988], sur la naissance de la
discipline Logic Programming . Il est aussi intressant de prendre connaissance de l'histoire
de la dmonstration automatique vue par Donald Loveland [1984] et de l'existence antrieure
d'un possible concurrent Prolog, le langage Absys vu par Elcock [1988].
Partie I. L'histoire
Au dbut de juillet 1970, Robert Pasero et Philippe arrivent Montral. Ils sont invits par
Alain, alors professeur assistant d'informatique l'Universit de Montral et responsable du
projet de traduction automatique TAUM. Tous sont un tournant de leurs carrires. Robert et
Philippe ont 25 ans et viennent juste d'tre nomms assistants (en informatique) la nouvelle
Facult des sciences de Luminy. Alain a 29 ans et s'apprte rentrer en France aprs un sjour
de 3 ans au Canada.
Durant leurs deux mois de sjour Montral, Robert et Philippe se familiarisent avec le
traitement informatique des langues naturelles, ils programment des analyseur context-free
non-dterministes en Algol 60 et un gnrateur de paraphrases franaises avec les systmes-Q,
le langage de programmation qu'Alain avait dvelopp pour le projet de traduction (voir
deuxime partie).
Colmerauer et Roussel
La naissance de Prolog
Page 3
Paralllement Jean Trudel, chercheur canadien, inscrit en thse de doctorat avec Alain,
poursuit ses travaux sur la dmonstration automatique. Son article de rfrence est celui de
Alan Robinson [1965] sur le principe de rsolution. C'est un article difficile comprendre,
mais Jean a l'avantage d'avoir suivi un cours de logique avec Martin Davis New York. Il a
maintenant dj crit un dmonstrateur complet dans lequel l'unification est programme dans
un style moderne : tous les calculs consistent modifier des pointeurs.
Colmerauer et Roussel
La naissance de Prolog
Page 4
Utilisateur
Les chats tuent les souris.
Minou est un chat qui n'aime pas les souris qui mangent du fromage.
Miquette est une souris qui mangent du fromage.
Max n'est pas une souris.
Que fait Minou?
Machine
Le Minou ne aime pas les souris qui mangent le fromage.
Le Minou tue les souris.
Utilisateur
Qui est un chat?
Machine
Le Minou.
Utilisateur
Qu'est-ce que mange Miquette?
Machine
Le fromage.
Utilisateur
Qui n'aime pas les souris qui mangent du fromage?
Machine
Le Minou.
Utilisateur
Qu'est-ce que mange Minou.
Machine
Ce que mange les chats qui ne aiment pas les souris qui mangent le
fromage.
Les formules logiques cres font intervenir : des constantes qui reprsentent des lments,
Minou, Miquette, Max, LeFromage,
des constantes qui reprsentent des relations binaires portant sur des ensembles,
Tuent, NaimePas, Mange,
Un terme de la forme Le(a) reprsente lensemble constitu du seul lment a. Une formule
de la forme Dans(x,y) exprime que l'ensemble x est inclus dans l'ensemble y et une formule
de la forme Vrai(r,x,y) exprime que les ensembles x et y sont dans la relation r. Aux clauses
qui codent les phrases, Jean Trudel ajoute quatre clauses liant les trois symboles Le, Dans,
Vrai :
Colmerauer et Roussel
La naissance de Prolog
Page 5
( x) [Dans(x,x)],
( x)( y)( z) [Dans(x,y) Dans(y,z) Dans(x,z],
( a)( b) [Dans(Le(a),Le(b)) Dans(Le(b),Le(a))],
( x)( y)( r)( x')( y')
[Vrai(r,x,y) Dans(x,x') Dans(y,y') Vrai(r,x',y')].
Le problme majeur est d'viter une production intempestive d'infrences due aux axiomes de
transitivit et de rflexivit de la relation d'inclusion Dans.
En continuant ses recherches sur la dmonstration automatique Jean Trudel tombe sur une
mthode trs intressante, la SL-rsolution [Kowalski 1971]. Il nous convainc d'inviter lun de
ses crateurs, Robert Kowalski. Celui-ci nous rend visite en juin 1971 et reste une semaine. La
rencontre reste inoubliable. Pour la premire fois nous discutons avec un spcialiste de
dmonstration automatique qui nous fait saisir ce qu'est vraiment le principe de rsolution, ses
variantes et ses raffinements. Quant Robert Kowalski il rencontre des gens passionns par
ses recherches et dcids les mettre en application dans le traitement des langues naturelles.
Avec Jean Trudel nous revoyons Bob Kowalski l'occasion d'un congrs IJCAI en
septembre 71 Londres, o nous assistons un expos de Terry Winograd [1973] sur un
interface en langue naturelle qui nous rend perplexe. C'est cette occasion que nous prenons
connaissance de l'existence du langage de programmation Planner de Carl Hewitt [1969]. Le
manque de formalisation de ce langage, notre mconnaissance de Lisp et surtout le fait que
nous tenons tout prix la logique, tout cela fait que ces travaux eurent peu d'influence sur la
suite de nos recherches.
Colmerauer et Roussel
La naissance de Prolog
Page 6
Floyd [1967] plutt que par recopie et sauvegarde des rsolvantes. SL-rsolution servira donc
de support la thse de Philippe qui porte sur le traitement de l'galit formelle en
dmonstration automatique [Roussel, 1972]. L'galit formelle est moins expressive que
l'galit classique mais par contre peut tre traite efficacement. La thse de Philippe
dbouchera sur l'introduction du prdicat dif (pour ?) dans la toute premire version de
Prolog.
Nous invitons nouveau Robert Kowalski, mais cette fois ci pour une priode plus longue,
avril et mai. Ensemble nous avons tous maintenant une connaissance plus calculatoire de la
dmonstration automatique. Nous savons axiomatiser de petits problmes (addition de
nombres entiers, concatnation de listes, retournement de listes etc.) de faon ce qu'un
dmonstrateur de type SL-rsolution calcule rapidement le rsultat. Mais le paradigme clause
de Horn nous est inconnu et Alain ne voit toujours pas comment se passer des systmes-Q
pour tout ce qui concerne l'analyse des langues naturelles.
Aprs le dpart de Robert Kowalski, Alain trouve enfin une faon de raliser des analyseurs
puissants. A chaque symbole non-terminal N de la grammaire il associe un prdicat binaire
N(x,y) signifiant que x et y sont des mots terminaux pour lesquels le mot u dfini par x = uy
existe et est drivable de N. En reprsentant x et y par des listes, chaque rgle de la grammaire
peut alors tre code par une clause ayant exactement le mme nombre de littraux que
d'occurrences de symboles non-terminaux. Il n'est jamais ncessaire de faire appel la
concatnation de liste. (Cette technique est connue maintenant sous le nom de technique de
diffrence de listes.) De plus, dans chaque non-terminal Alain introduit des paramtres
supplmentaires pour propager et calculer des informations. Comme dans les systmes-Q,
l'analyseur non seulement vrifie que la phrase est correcte mais extrait une formule
reprsentant l'information contenue dans celle-ci. Plus rien ne s'oppose alors faire un systme
de communication homme machine entirement en logique .
Une dcision draconienne est prise : quitte tre incomplets nous choisissons une
rsolution linaire avec unification uniquement entre les ttes de clauses. Sans le savoir nous
avons dcouvert une stratgie qui est complte lorsque l'on se limite aux clauses de Horn.
Robert Kowalski [1973] montrera ce point et, avec Maarten van Emden, donnera la
smantique moderne par point fixe de la programmation avec clauses de Horn [Kowalski,
1974].
Pendant l'automne 1972 le premier systme Prolog est implant par Philippe en Algol-W, le
langage de Niklaus Wirth. Paralllement Alain et Robert Pasero ralisent le systme de
communication homme-machine en franais tant dsir [Colmerauer, 1972b]. Une interaction
constante a lieu entre Philippe qui implante Prolog et Alain et Robert Pasero qui programment
dans un langage qui se cre au fur et mesure. Cette version prliminaire de Prolog est dcrite
en dtails dans la troisime partie de ce papier. C'est cette poque qu'est choisi galement le
nom dfinitif du langage, nom suggr par l'pouse de Philippe partir de mots cls qui lui
avaient t fournis.
Le systme de communication homme-machine est le premier programme Prolog
consquent qui fut jamais crit [Colmerauer, 1972]. Il comporte 610 clauses. Alain en a crit
Colmerauer et Roussel
La naissance de Prolog
Page 7
334, essentiellement la partie analyse, Robert Pasero 162, la partie purement dductive, et
Henry Kanoui a crit en 104 clauses une morphologie du franais qui permet de faire le lien
entre le singulier et le pluriel de tous les noms communs et de tous les verbes, mme
irrguliers, la troisime personne du prsent. Voici un exemple de texte soumis au systme
de communication homme machine en 1972,
Tout psychiatre est une personne.
Chaque personne qu'il analyse est malade.
Jacques est un psychiatre Marseille.
Est-ce que Jacques est une personne?
O est Jacques?
Est-ce Jacques est malade?
et voici les rponses obtenues pour les trois questions de la fin du texte.
Oui.
A Marseille.
Je ne sais pas.
Toutes les infrences sont faites partir des pronoms (il, ils , elle, ...), des articles (le, les, un,
tout, ...) et des fonctions sujet et complment avec ou sans prpositions (de, , ...). En fait le
systme ne connaissait que les pronoms, les articles et les prpositions (le vocabulaire tait
cod en 164 clauses), il reconnaissait les noms propres par l'astrisque obligatoire qui devaient
les prcder et les verbes et les noms communs par les 104 clauses de morphologie gnrale
du Franais.
Pendant le mois de novembre nous entreprenons, avec Robert Pasero, une vaste tourne
des laboratoires de recherche amricains aprs une visite dEdinburgh. Nous emportons un
rapport prliminaire sur notre systme de communication en langue naturelle et sur notre tout
premier Prolog. Nous laisserons des copies de ce rapport un peu partout. Jacques Cohen nous
accueille Boston et nous introduit au MIT. Nous y sommes trs bien accueillis et nous
discutons avec Minsky, Charniak, Hewitt et Winograd. Nous rendons aussi visite Woods
BBN. Nous allons ensuite Stanford, visitons le SRI, le laboratoire d'IA de John McCarthy,
rencontrons Cordell Green, exposons nos travaux devant J. Feldman trs critique et passons
Thanks Giving chez Robert Floyd.
Colmerauer et Roussel
La naissance de Prolog
Page 8
Au dbut de l'anne 73, plus exactement en avril, notre groupe acquiert une existence officielle.
Le CNRS le reconnat comme quipe de recherche associe avec l'intitul Dialogue
homme-machine en langue naturelle et le dote dun budget de 39 000F (environ 6500$) pour
la premire anne. Cette somme doit tre compare avec les 31 6880F (environ 50 000$) que
nous obtenons en octobre de l'IRIA pour renouveler le contrat Communication hommemachine en langue naturelle avec dductions automatiques pour une dure de 2 ans et demi.
Les utilisateurs de la version prliminaire de Prolog au sein du laboratoire ont maintenant
suffisamment programm pour que leur exprience serve de base une deuxime version de
Prolog, version rsolument oriente vers un langage de programmation et non pas simplement
vers un systme dductif plus ou moins automatis. Outre le systme de communication en
Franais de 1972, deux autres applications sont ralises l'aide de cette version initiale de
Prolog: un systme de calcul formel [Bergman, 1973a, 1973b; Kanoui 1973] et un systme
gnral de rsolution de problmes appel Sugiton [Joubert, 1974]. D'autre part Robert Pasero
continue l'utiliser dans le cadre de son travail sur la smantique du Franais qu'il conclut en
soutenant une thse au mois de mai [Pasero, 1973].
De fvrier avril 73, Philippe fait un sjour la School of Artificial Intelligence de
l'Universit d'Edimbourg au sein du Dpartement de Logique Computationnelle dirige par
Bernard Meltzer, et o Robert Kowalski l'avait invit. Outre les discussions nombreuses qu'il a
avec lui et David Warren, il rencontre galement Robert Boyer et Jay Moore qui avaient bti
une implantation de la rsolution selon un procd extrmement ingnieux bas sur une
technique de partage de structures pour reprsenter les formules logiques engendres au cours
d'une dduction. Le rsultat de ce sjour et la ncessit pour le laboratoire de disposer d'un
vritable langage de programmation nous dcident jeter les bases d'un deuxime Prolog.
De mai juin 1973, nous fixons les grandes lignes du langage, en particulier les choix de la
syntaxe, des primitives de base et des principes de calcul de l'interprte, le tout allant dans le
sens d'une simplification par rapport la version initiale. De juin la fin de l'anne,
Grard Battani, Henry Mloni et Ren Bazzoli, alors tudiants de DEA, ralisent l'interprte
en Fortran et son superviseur en Prolog.
Ainsi que le lecteur pourra en juger dans la quatrime partie de ce papier, ce nouveau
Prolog, qui y est dcrit en dtails, introduit toutes les fonctionnalits essentielles des Prolog
actuels. Signalons au passage que cest cette occasion que disparat loccur check jug
trop coteux.
Colmerauer et Roussel
La naissance de Prolog
Page 9
The present system is implemented partly in Fortran, partly in Prolog itself, and
running on an IBM 360-67 achieves roughly 200 unifications per second.
Henry Kanoui et Marc Bergman l'utilisent pour raliser un systme de manipulation formelle
d'une certaine envergure appel Sycophante [Bergman, 1975; Kanoui 1976]. Grard Battani et
Henry Meloni l'utilisent pour raliser un systme de reconnaissance de la parole permettant de
poser des questions sur le mode d'emploi du systme d'exploitation CP-CMS de l'IBM de
Grenoble [Battani, 1975b; Meloni, 1975]. L'interface entre le signal acoustique et la suite de
phonmes qu'il reprsente est emprunte au CNET Lannion et bien entendu n'est pas crite
en Prolog.
Au dbut de l'anne 1975 Alain a compltement rcrit le superviseur en gardant les
dclarations d'oprateurs infixs en Prolog mais en lui adjoignant un compilateur de
grammaires dites de mtamorphoses . Cette fois-ci, contrairement Ren Bazzoli, il utilise
un analyseur top-down pour lire les rgles Prolog. Il s'agit d'un bon exercise de mtaprogrammation. Plus tard David Warren inclura de telles rgles de grammaires dans sa version
compile de Prolog [Warren, 1977] et, avec Fernando Pereira, rebaptisera definite clauses
grammars une variante simplifie des grammaires de mtamorphoses [Pereira, 1980]. Les
grammaires de mtamorphoses permettent d'crire directement des rgles de grammaire
paramtres comme on avait coutume de les crire en systme-Q. Le superviseur compile ces
rgles en des clauses Prolog efficaces en ajoutant deux paramtres supplmentaires. Pour
montrer l'efficacit et l'expressivit des grammaires de mtamorphoses Alain crit un petit
compilateur modle d'un langage style Algol vers un langage machine imaginaire et un systme
complet de dialogue homme-machine en franais avec dductions automatiques. Tout ce
travail avec une justification thorique des grammaires de mtamorphose est publi dans
[Colmerauer, 1975].
Grard Battani et Henry Meloni sont trs sollicits pour diffuser Prolog. Il l'envoient
Budapest, Varsovie, Toronto, Waterloo (Canada) et se dplacent Edinburgh pour aider
David Warren mieux l'installer sur un PDP 10. Hlne Le Gloan une ex-tudiante l'installe
l'Universit de Montral. Michel Van Caneghem l'installe l'IRIA Paris avant de venir
travailler chez nous. Enfin Maurice Bruynooghe aprs un sjour de trois mois Marseille
(octobre dcembre 75) l'emporte Leuven (Belgique).
En fait, comme nous la fait remarqu David Warren, Prolog sest peut tre surtout diffus
par lintermdiaire de personnes qui sy sont intresses et qui en ont pris une copie soit
directement de Marseille, soit dun site intermdiaire comme Edinburgh. Ainsi Prolog na pas
tellement t distribu, il sest chapp et sest multipli .
Pendant l'anne 1975, toute l'quipe ralise un portage de l'interprte sur un mini-ordinateur
de 16 bits: le T1600 de la compagnie franaise Tlmcanique. La machine ne dispose que de
64K octets et il faut crire une gestion de mmoire virtuelle de toute pice. Pierre Basso s'en
occupe et gagne aussi le concours de la squence d'instructions la plus courte qui effectue un
adressage sur 32 bits tout en testant le dfaut de page. Chaque membre du laboratoire reoit
alors deux pages de Fortran traduire en langage machine. On rassemble tous les bouts de
Colmerauer et Roussel
La naissance de Prolog
Page 10
programme traduits et cela marche ! Aprs 5 ans nous disposons enfin d'une machine bien
nous sur laquelle notre cher Prolog fonctionne lentement, mais fonctionne.
Unification unidirectionnelle
Un systme-Q consiste en un ensemble de rgles de rcriture portant sur des suites de
symboles complexes spars les uns des autres par le signe +. Chaque rgle est de la forme
e1 + e2 + .... + em f1 + f2 + .... + fn
et signifie : dans la suite de symboles que l'on est en train de manipuler on peut remplacer
toute sous-suite de la forme e1 + e2 + .... + em par la sous-suite de la forme f1 + f2 + .... + fn.
Les ei et les fi sont des expressions parenthses reprsentant des symboles complexes, en fait
des arbres. Ces expressions ressemblent trangement des termes Prolog, mais font intervenir
trois types de variables. Suivant que la variable commence par une lettre de l'ensemble
{A,B,C,D,E,F}, {I,J,K,L,M,N}, ou {U,V,W,X,Y,Z} elle dsigne une tiquette, un arbre, ou une suite
(ventuellement vide) d'arbres spars par des virgules. Par exemple la rgle
P + A*(X*,I*,Y*) I* + A*(X*,Y*)
La notion d'unification est donc dj prsente, mais elle est unidirectionnelle : les variables
apparaissent dans les rgles mais jamais dans la suite d'arbres que l'on est en train de
transformer. Par contre l'unification prend en compte l'associativit de la concatnation et,
comme dans l'exemple prcdent, peut produire plusieurs rsultats.
Colmerauer et Roussel
La naissance de Prolog
Page 11
+
+
+
+
B
S
C
B
+
+
C S
X + C S
C + X
B + X
produit le graphe
S
S
C
C
Colmerauer et Roussel
La naissance de Prolog
Page 12
On conserve tous les chemins qui vont du point dentre au point de sortie et qui ne
comportent pas de flches ayant t utilises pour produire d'autres flches. On conserve donc
l'unique flche
S
Ralisation
Les systmes-Q furent crits en Algol par Alain et furent oprationnels ds octobre 1969.
Michel van Caneghem et Franois Stellin, terminant alors une matrise d'informatique, en
Colmerauer et Roussel
La naissance de Prolog
Page 13
produirent une version Fortran et Gilles Steward une version ultra rapide en langage machine
pour l'ordinateur CDC 6400 de l'Universit de Monral.
Ces systmes-Q furent utiliss pour construire une chane complte de traduction
automatique anglais-franais par toute l'quipe du projet TAUM: Brian Harris crivit la
morphologie de l'anglais, Richard Kittredge crivit une importante grammaire pour l'analyse de
l'anglais, Gilles Stewart crivit la phase de transfert, Jules Danserau crivit la grammaire pour
la synthse du franais et Michel van Caneghem produisit une morpholgie complte du franais
[Taum 71]. Les systmes-Q furent aussi utiliss quelques annes plus tard pour crire le
systme METEO dont une version industrielle actuelle traduit tous les jours les bulletins
mtrologiques canadiens d'anglais en franais.
Colmerauer et Roussel
La naissance de Prolog
Page 14
de J.L. Darlington [1969] et celui de Cordell Green [1969]. Cette tude, les essais de Jean
Trudel et Robert Pasero qui utilisaient les versions exprimentales des dmonstrateurs de
Philippe, les recherches d'Alain sur la formulation logique des grammaires ainsi que les
nombreuses discussions avec Robert Kowalski, tout cela nous amena considrer le principe
de rsolution de A. Robinson selon un point de vue diffrent de celui qui prvalait alors. Plutt
que de vouloir dmontrer un thorme par labsurde, nous voulions calculer un ensemble
intressant de clauses dductibles dun ensemble donn de clauses. De tels ensembles
constituant dans notre esprit des programmes, nous avions ainsi des programmes engendrant
dautres programmes. C'est cette ide qui fut constamment sous-jacente dans la conception de
cette version prliminaire du langage comme dans la ralisation de l'application.
Le choix final porta sur une adaptation de la mthode de rsolution proche de la
philosophie gnrale du Prolog que lon connat maintenant, mais comportant cependant des
lments originaux. Chaque excution s'effectuait avec un ensemble de clauses constituant le
programme et un ensemble de clauses constituant les questions , le tout produisant un
ensemble de clauses constituant les rponses . Les littraux des clauses taient ordonns de
gauche droite, lunification s'effectuait entre le littral de tte de la rsolvante et celui d'une
des clauses du programme. L'originalit rsidait dans le fait que dans chaque clause une partie
des littraux, spare par le signe /, n'taient pas traits au cours de lexcution, mais taient
accumuls pour produire une des clauses rponse en fin de dduction. En outre, certains
prdicats (tel DIF) taient traits par une valuation retarde et pouvaient galement tre
transmis en rponse. Enfin, il fut dcid que le non-dterminisme serait trait par backtracking,
ce qui voulait dire qu'une seule branche de l'arbre de recherche rsidait un instant donn en
mmoire.
Formellement, la mthode de dduction choisie peut se dcrire selon les trois rgles cidessous, o question , clause choisie et rponse sont trois clauses prises
respectivement dans les ensembles questions , programme et rponses tandis que
rsolvante est une clause intermdiaire.
Rgle d'initialisation de la dduction
question : L1 ... Lm / R1 ... Rn
rsolvante : L1 ... Lm / R1 ... Rn
Rgle de dduction de base
rsolvante : L0 L1 ... Lm / R1 ... Rn, clause choisie : L'0 L'1 ... L'm '/ R'1 ... R'n'
rsolvante : (L'1) ... (L'm') (L1) ... (Lm) / (R'1) ... (R'n') (R1) ... (Rn)
Rgle de fin de dduction
rsolvante : / R1 ... Rn
rponse : R1 ... Rn
Colmerauer et Roussel
La naissance de Prolog
Page 15
Colmerauer et Roussel
La naissance de Prolog
Page 16
abandonn dans la version suivante mais est rapparu dans des Prologs modernes. Les seuls
oprateurs de contrle taient placs en fin de clauses comme signes de ponctuation et avaient
pour effet de procder des coupures dans l'espace de recherche. Le signe
..
.;
;.
;;
Ces oprateurs extra-logiques taient suffisamment exotiques pour poser problme leurs
usagers. Ils furent donc abandonns par la suite. Curieusement cette ponctuation avait t
introduite par Alain en souvenir des rgles de transformations optionnelles et obligatoires du
linguiste Noam Chomsky [1965].
Sur le plan de la syntaxe, l'criture des termes se faisait sous forme fonctionnelle, avec
cependant la possibilit d'introduire des oprateurs unaires ou binaires dfinis par prcdences,
ainsi qu'un oprateur binaire infix pouvant tre reprsent par absence de signe (comme un
produit en mathmatique et fort utile dans les entres sorties de chanes). Voici un exemple
denchanement de programmes qui produisait et crivait un ensemble de clauses dfinissant
les petits-neveux d'une personne dnomme MARIE :
LIRE
REGLES
+DESC(*X,*Y) -ENFANT(*X,*Y);;
+DESC(*X,*Z) -ENFANT(*X,*Y) -DESC(*Y,*Z);;
+FRERESOEUR(*X,*Y) -ENFANT(*Z,*X) -ENFANT(* Z,*y) -DIF(*X,*Y);;
AMEN
LIRE
FAITS
+ENFANT(PAUL,MARIE);;
+ENFANT(PAUL,PIERRE);;
+ENFANT(PAUL,JEAN);;
+ENFANT(PIERRE,ALAIN);;
+ENFANT(PIERRE,PHILIPPE);;
+ENFANT(ALAIN,SOPHIE);;
AMEN
LIRE
QUESTION
-FRERESOEUR(MARIE,*X) -DESC(*X,*Y) / +PETITNEVEUX(*Y) -MASC(*Y)..
AMEN
CONCATENER(LIENSDEPARENTE,REGLES,FAITS)
DEMONTRER(LIENSDEPARENTE,QUESTION,REPONSE)
ECRIRE(REPONSE)
AMEN
La sortie de ce programme nest donc pas un terme mais lensemble de clauses binaires :
Colmerauer et Roussel
La naissance de Prolog
Page 17
+PETITNEVEUX(ALAIN) -MASC(ALAIN);.
+PETITNEVEUX(SOPHIE) -MASC(S OPHIE);.
+PETITNEVEUX(PHILIPPE) -MASC(PHILIPPE);.
La commande LIRE lit un l'ensemble de clause prcd d'un nom x et se terminant par AMEN et
lui attribue le nom x. La commande CONCATENER (y,x1,...,xn) unit les ensembles de
clauses x1,...,xn pour obtenir l'ensemble de clauses y. La commande
DEMONTRER (x,y,z), la plus importante, lance une excution, le programme tant x,
l'ensemble des rsolvantes de dpart tant y et l'ensemble des rponses tant z. Enfin la
commande ECRIRE(x) imprime l'ensemble x de clauses.
Le systme de communication homme-machine fonctionnait en quatre phases et faisait
intervenir 4 programmes, c'est--dire 4 ensembles de clauses,
- C1 pour analyser un texte T0 et produire une structure profonde T1,
- C2 pour retrouver dans T1 les antcdents des pronoms et produire une forme logique
T2,
- C3 pour dcomposer la formule logique T2 en un ensemble T3 d'informations
lmentaires,
- C4 pour faire des dductions partir de T3 et produire les rponses en Franais T4.
La suite des commandes tait donc
DEMONTRER(C1,T0,T1)
DEMONTRER(C2,T1,T2)
DEMONTRER(C3,T2,T3)
DEMONTRER(C4,T3,T4),
o T0 le texte franais traiter et T4 les rponses produites taient reprsentes par des faits
lmentaires portant sur des listes de caractres.
Colmerauer et Roussel
La naissance de Prolog
Page 18
L'implantation de la rsolution tait base sur un codage des clauses sous forme de
structures entre-pointes avec recopie anticipe de chaque rgle utilise dans une dduction, le
non-dterminisme tant gr par une pile de backtracking et les substitutions effectus
uniquement par cration de chanes de pointeurs. Cette approche permettait d'viter les copies
de termes lors des unifications, et donc amliorait grandement les temps de calculs et la place
mmoire utilise. L'analyseur des clauses tait crit lui aussi en Algol-W, les atomes tant
grs par une technique classique de hash-code . Cet analyseur constituait une partie non
ngligeable du systme, ce qui conforta Alain dans son dsir de rsoudre ces problmes de
syntaxe en Prolog mme; mais l'exprience manquait encore sur ce sujet, l'objet de la premire
application tant de dgager les principes mme de l'analyse syntaxique en programmation
logique!
Stratgie de rsolution
L'exprience de la premire version nous amne considrer une version simplifie de la
stratgie de rsolution. Ce choix nous est dict par les expriences des premiers
programmeurs, mais aussi par des considrations d'efficacit et par le choix de Fortran comme
langage de programmation de l'interprte qui nous oblige grer nous mme l'espace mmoire.
Les diffrences essentielles avec l'ancienne version sont les suivantes :
- plus d'valuation retarde (DIF, BOUM),
- remplacement du prdicat BOUM par le prdicat plus gnral UNIV,
- plus de mcanisme de gnration de clauses comme rsultat d'une dduction mais les
fonctions assert et retract alors notes AJOUT et SUPP,
Colmerauer et Roussel
La naissance de Prolog
Page 19
Syntaxe et Primitives
Dans l'ensemble, la syntaxe retenue est la mme que celle de la version prliminaire. Sur le plan
lexical, la syntaxe des identificateurs est proche de celle de la plupart des langages, qui
Colmerauer et Roussel
La naissance de Prolog
Page 20
lpoque n'utilisaient pas les lettres minuscules (les claviers et systmes d'exploitation ne le
permettant pas systmatiquement). Il faut noter que parmi les primitives de bases traitant des
problmes de morphologie, une seule d'entre elles UNIV sert tout la fois crer
dynamiquement un atome partir d'une suite de caractres, construire un objet structur
partir de ses lments, ou au contraire effectuer les oprations inverses de dcomposition.
Cette primitive devient un des outils de base servant la cration dynamique de programmes
ainsi qu' la manipulation d'objets dont les structures ne sont pas connue avant l'xcution du
programme.
La possibilit laisse l'usager de dfinir ses propres oprateurs unaires et binaires par
l'emploi de prcdences numriques s'est avre par la suite trs utile et trs souple d'emploi
quoique compliquant les analyseurs de clauses. Elle subsiste toujours telle quelle dans les
divers Prolog actuels.
Dans la version prliminaire de Prolog, il existait un moyen de crer des clauses
logiquement dductibles partir d'autre clauses. L'exprience nous a montr cependant qu'il
est souvent ncessaire de manipuler des clauses dans des perspectives quelquefois trs
loignes de la logique du premier ordre. Ce type de traitement intervient par exemple dans la
programmation de raisonnements de type temporel, dans la gestion d'informations persistantes
d'une dure de vie alatoire, ou encore dans la simulation de logiques exotiques. Nous sentons
que sur le plan de la smantique il faudra encore de nombreuses recherches pour modliser ces
problmes de mise jour d'ensembles de clauses. D'o le choix extrmement pragmatique de
primitives extra-logiques agissant par effet de bord pour crer ou modifier un programme
(AJOUT, SUPP). Ce choix semble avoir t le bon, puisque ces fonctions ont t conserves par
la suite.
Un des manques ressentis avec la version prliminaire de Prolog est celui d'un mcanisme
permettant de calculer un termes qui puisse tre ensuite considr comme un littral
rsoudre. Cette fonction essentielle pour raliser des mta-programmes, comme par exemple
un interprte de commandes, est introduite trs simplement du point de vue syntaxique. Dans
toute clause, une variable dsignant un terme peut figurer comme littral.
Dans le mme esprit, et ceci originellement l'intention des spcialistes de la logique
computationelle, sont introduites des primitives permettant d'accder la dduction en cours
en la considrant comme un objet de type Prolog (ETAT, ANCETRE). De mme le prdicat /
(prononc cut par les dimbourgeois) devient paramtrable d'une faon trs puissante par
accs aux anctres.
Un exemple de programme
Pour que le lecteur ait une ide de ce quoi ressemble un programme Prolog de lpoque nous
reprenons un vieil exemple. Il s'agit de dterminer des itinraires davions respectant certaines
contraintes d'horaires, partir de la connaissance des vols directs.
Colmerauer et Roussel
La naissance de Prolog
Page 21
Les donnes de base (vols directs entre deux villes) sont reprsentes par des clauses
unaires de la forme :
+VOL(<ville dpart>,<ville arrive>,
<heure dpart>,<heure arrive>,<nom de vol>)
o les heures sont reprsentes par des couples d'entiers de la forme <heure>:<minute> .
Nous supposons que tous les vols s'effectuent entirement dans une mme joune.
Le prdicat suivant est utilis par l'usager pour tablir un itinraire.
ITINERAIRE(<ville dpart>,<ville arrive>,
<heure dpart>,<heure arrive>,
<heure mini dpart>,<heure maxi arrive>)
Il numre (et crit en sortie) tous les couples de villes (<ville dpart>,<ville
arrive>) relies par un vol avec ou sans escales (la mme ville ne figurant qu'une seule fois,
sauf pour les circuits qui partent et arrivent au mme endroit). Les paramtres <heure
dpart> et <heure arrive> dsignent respectivement l'heure de dpart et l'heure d'arrive
calcules. Enfin, <heure mini dpart> et <heure maxi arrive> sont des contraintes
d'horaires (et les seuls paramtres que doit fournir l'usager du prdicat). Tout plan de vol
calcul par le prdicat fournira un premier vol dont l'heure de dpart suit <heure mini
dpart> et un dernier vol dont l'heure d'arrive prcde <heure maxi arrive> .
Pour dfinir ce prdicat ITINERAIRE , plusieurs prdicats intermdiaires sont dfinis. Le
prdicat :
ROUTE(<ville dpart>,<ville arrive>,
<heure dpart>,<heure arrive>,
<itinraire>,<escales>,
<heure mini dpart>,<heure maxi arrive>)
est analogue ITINERAIRE. Il comporte deux paramtre supplmentaires, <visites> qui est
fourni en entre et qui dsigne la liste (Vk.Vk-1...V1.NIL) des villes dj visites (dans
l'ordre inverse du parcours) o une prochaine escale ne pourra tre effectue, et <plan> qui
est calcul par le prdicat et qui dsigne la liste (Vol1....Volk.NIL) des noms des vols
constituant
le
voyage.
Les
prdicats
PRECEDEHORAIRES(<h1>,<h2>)
et
PLUSHORAIRES(<h1>,<h2>,<h3>) concernent le traitement arithmtique des horaires. Le
prdicat ECRIREPLAN permet d'crire un plan comme une suite de noms de vols. Enfin,
NON(<littral>) dfinit une ngation par chec, et ELEMENT(<lment>,<lments)
s'value vrai si <lment> figure dans la liste <lments> .
Voici donc le programme final avec ses donnes et le lancement dune excution.
* OPERATEURS INFIXES
--------------------.
-AJOP( ".", 1, "(X|X)|X")
* PREDICAT USAGER
-AJOP(":",
2, "(X|X)|X") !
Colmerauer et Roussel
La naissance de Prolog
Page 22
-----------------.
+ITINERAIRE(*DEP, *ARR, *HDEP, *HARR, *HMINDEP, *HMAXARR)
-ROUTE(*DEP, *ARR, *HDEP, *HAR R, *PLAN, *VDEP.NIL, *HMINDEP,
*HMAXARR)
-SORM("---------------------------------------------")
-LIGNE
-SORM("PLAN DE VOL ENTRE: ")
-SORT(*DEP)
-SORM(" ET: ")
-SORT(*ARR)
-LIGNE
-SORM("---------------------------------------------")
-LIGNE
-SORM("HORAIRE DEPART:
")
-SORT(*HDEP)
-LIGNE
-SORM("HORAIRE ARRIVEE:
")
-SORT(*HARR) -LIGNE
-SORM(" VOLS:
")
-ECRIREPLAN(*PLAN) -LIGNE -LIGNE.
* PREDICATS DE CALCUL
----------------------.
+ROUTE(*DEP, *ARR, *HDEP, *HARR, *NOMVOL.NIL, *VISITES, *HMINDEP,
*HMAXARR)
-VOL(*DEP, *ARR, *HDEP, *HARR, *NOMVOL)
-PRECEDEHORAIRES(*HMINDEP, *HDEP)
-PRECEDEHORAIRES(*HARR, *HMAXARR).
+ROUTE(*DEP,*ARR, *HDEP,*HARR, *PLAN, *VISITES, *HMINDEP, *HMAXARR)
-VOL(*DEP, *ESCALE, *HDEP, *HARRESCALE, *NOMVOL)
-PRECEDEHORAIRES(*HMINDEP, *HDEP)
-PLUSHORAIRES(*HARRESCALE, 00:15, *HMINDEPESCALE)
-PRECEDEHORAIRES(*HMINDEPESCALE, *HMAXARR)
-NON( ELEMENT(*ESCALE, *VISITES)
-ROUTE(*ESC, *ARR, *HDEPESCALE, *HARR, *NOMVOL.*PLAN,
*ESCALE.*VISITES, *HMINDEPESCALE, *HMAXARR).
+PRECEDEHORAIRES(*H1:*M1, *H2:*M2) -INF (H1, H2).
+PRECEDEHORAIRES(*H1:*M1, *H1:*M2) -INF(M1, M2).
+PLUSHORAIRES(*H1:*M1, *H2:*M2, *H3:*M3)
-PLUS(*M1, *M2, *M)
-RESTE(*M, 60, *M3)
-DIV(*M, 60,*H)
-PLUS(*H, *H1, *HH)
-PLUS(*HH,*H2,*H3).
+ECRIREPLAN( *X. NIL) -/ -SORT(*X ).
+ECRIREPLAN( *X.*Y) -SORT(*X) -ECRIT(-) -ECRIREPLAN(*Y).
+ELEMENT(*X, *X.*Y).
+ELEMENT(*X, *Y.*Z) -ELEMENT(*X, *Z).
+NON(*X) -*X -/ -ECHEC.
+NON(*X).
Colmerauer et Roussel
La naissance de Prolog
Page 23
LONDRES,
LONDRES,
LONDRES,
LONDRES,
+VOL(MARSEILLE,
+VOL(MARSEILLE,
+VOL(MARSEILLE,
+VOL(MARSEILLE,
06:50,
07:35,
09:10,
11:40,
PARIS,
PARIS,
PARIS,
PARIS,
07:30,
08:20,
09:55,
12:20,
06:15,
06:45,
08:10,
10:00,
AF201).
AF210).
BA304).
AF410).
07:00,
07:30,
08:55,
10:45,
IT100).
IT110).
IT308).
IT500).
Ralisation de l'interprte
Le systme de rsolution, dans lequel le non-dterminisme est gr par backtracking, est
ralis l'aide d'une reprsentation des clauses tout fait originale se situant mi-chemin entre
la technique base sur le partage de structures qu'utilisaient Robert Boyer et Jay Moore dans
leurs travaux sur la preuve de programmes [Boyer, 1972; Moore, 1974] et la technique par
backtracking utilise dans la version prliminaire de Prolog. C'est au cours de son sjour
Edimbourg que Philippe, aprs de nombreuses discussions avec Robert Boyer, imagine cette
solution. Dans cette nouvelle approche, les clauses d'un programme sont codes en mmoire
Colmerauer et Roussel
La naissance de Prolog
Page 24
comme un ensemble de squelettes (templates) pouvant tre instancis sans recopie plusieurs
fois dans une mme dduction grce des contextes contenant les substitutions effectuer sur
les variables. Cette technique a de nombreux avantages par rapport celles utilises alors en
dmonstration automatique :
- l'unification s'effectuait, dans tous les systmes connus, en des temps au mieux linaires
par rapport la taille des termes unifis; dans notre systme, la plupart des unifications
s'effectuent dans des temps constants, fonction non pas de la taille des donnes, mais de
celle des squelettes mis en jeu par les clauses du programme appel; ainsi la
concatnation de deux listes s'effectue en un temps linaire par rapport la taille de la
premire, et non pas comme dans tous les systmes bass sur des techniques de recopie,
en des temps quadratiques;
- selon le mme schma, la place mmoire ncessaire une tape de dduction est
fonction, non pas des donnes, mais de la clause du programme utilise; ainsi
globalement la concatnation de deux listes ne mettra en uvre qu'une quantit de
mmoire proportionnelle la premire des deux listes;
- la gestion du non dterminisme ne ncessite pas, en premire approche, de rcupration
de mmoire sophistique, mais simplement l'emploi de plusieurs piles synchronises sur
le backtracking , facilitant ainsi une ralisation rapide et nanmoins conome de
l'interprte.
En ce qui concerne la reprsentation en mmoire des squelettes, il est dcid d'utiliser une
reprsentation prfixe (exactement linverse de la notation polonaise). Le systme est
compos de l'interprte proprement dit (c'est--dire la machine infrentielle munie de la
bibliothque des prdicats prdfinis), d'un chargeur destin lire des clauses dans une syntaxe
restreinte et enfin d'un superviseur crit en Prolog. Ce superviseur contient entre autres un
valuateur de requtes, un analyseur acceptant la syntaxe avec oprateurs, un chargeur de
clauses en mmoire et la dfinition d'une bibliothque de prdicats d'entre-sorties de haut
niveau.
Alain, qui comme nous tous n'aime gure Fortran, finit cependant par convaincre l'quipe de
l'adopter pour programmer l'interprte. Ce choix essentiel repose sur la large diffusion de
Fortran sur l'ensemble des machines de l'poque, et sur le fait que la machine notre
disposition naccepte pas d'autres langages adapts cette tche. Nous esprons ainsi disposer
d'un systme portable, prvision qui se rvlera exacte.
Grard Battani [1973] et Henri Meloni, sous la supervision de Philippe, ralisent l'interprte
proprement dit entre juin 1973 et octobre 1973 sur un CII 10070 (variante du SIGMA 7) tandis
que Ren Bazzoli est charg d'crire le superviseur dans le langage Prolog lui-mme sous la
direction d'Alain. L'ensemble est constitu d'environ 2000 instructions, sensiblement de la
mme taille que le programme Algol-W de la version initiale.
La machine est dote d'un systme d'exploitation par lots (batch) sans possibilit
d'interactions travers un terminal. Donnes et programmes sont donc introduits sur cartes
perfores. On mesure la performance de ces jeunes chercheurs pour raliser un systme aussi
complexe que celui-l dans un tel contexte et dans un dlai aussi court, en sachant qu'aucun
Colmerauer et Roussel
La naissance de Prolog
Page 25
d'entre eux ne connaissait Fortran. Cet interprte est mis au point de faon dfinitive en
dcembre 1973 par Grard Battani et Henry Meloni aprs un portage sur la machine IBM 36067 de Grenoble, et donc dans des conditions d'exploitation plus raisonnables. Philippe crit le
manuel de rfrence et d'utilisation de ce nouveau Prolog seulement deux ans plus tard
[Roussel 1975].
Conclusion
Aprs toutes ces pripties et tous ces dtails techniques il serait intressant de prendre du
recul et de situer la naissance de Prolog dans une perspective plus vaste.
Larticle de Alan Robinson publi en janvier 1965 A machine-oriented logic based on the
resolution principle contenait en germe le langage Prolog. Cet article a t la base dun
courant important de travaux sur la dmonstration automatique et nul doute que Prolog est
essentiellement un dmonstrateur de thormes la Robinson .
Notre contribution t de transformer ce dmonstrateur en un langage de programmation.
Pour cela nous navons pas eu peur dintroduire des mcanismes et des restrictions purement
informatiques qui taient des hrsies pour le modle thorique existant. Ce sont ces
modifications, si souvent critiques, qui ont assur la viabilit et donc le succs de Prolog. Le
mrite de Robert Kowalski a t de dgager la notion de clause de Horn qui a lgitim
notre principale hrsie : une stratgie de dmonstration linaire avec backtracking et des
unifications uniquement sur les ttes de clauses.
Le langage Prolog est si simple que lon a limpression que tt ou tard quelquun devait le
dcouvrir. Pourquoi nous plutt que dautres ? Tout dabord Alain tait bien arm pour crer
un langage de programmation. Il appartenait la premire gnration de docteurs
dinformatique en France et sa spcialit tait la thorie des langages. Il avait accumul une
prcieuse exprience en concevant un premier langage de programmation, les systmes-Q,
dans le cadre du projet de Traduction Automatique de lUniversit de Montral. Ensuite notre
rencontre, la crativit de Philippe et les conditions de travail particulires Marseille firent le
reste ! Nous avons bnfici dune grande libert daction dans un centre scientifique
nouvellement cr et sans pression extrieure nous avons pu nous consacrer entirement
notre projet.
Cest sans doute pourquoi cette priode de notre vie reste une des plus heureuses dans
notre souvenir. Nous avons pris plaisir lvoquer pour crire ce papier tout en gotant les
amandes fraches autour d'un Martini dry.
Colmerauer et Roussel
La naissance de Prolog
Page 26
Bibliographie
[Battani, 1973]
Battani Grard et Henry Meloni, Interprteur du langage PROLOG, rapport de DEA,
Groupe Intelligence Artificielle, Facult des Sciences de Luminy, Universit AixMarseille II, France, 1973.
[Battani, 1975]
Battani Grard, Mise en uvre des contraintes phonologiques, syntaxiques et
smantiques dans un systme de comprhension automatique de la parole, thse de
3me cycle, Groupe Intelligence Artificielle, Facult des Sciences de Luminy, Universit
Aix-Marseille II, France, juin 1975.
[Bergman, 1973a]
Bergman Marc et Henry Kanoui, Application of mechanical theorem proving to symbolic
calculus, Third International Colloquium on advanced Computing Methods in
Theoretical Physics, Marseille, France, juin 1973.
[Bergman, 1973b]
Rsolution par la dmonstration automatique de quelques problmes en intgration
symbolique sur calculateur, thse de 3me cyle, Groupe Intelligence Artificielle, Facult
des Sciences de Luminy, Universit Aix-Marseille II, France, octobre 1973.
[Bergman, 1975]
Bergman Marc et Henry Kanoui, SYCOPHANTE, systme de calcul formel sur
ordinateur, rapport de fin de contrat DRET (Direction des Recherches et Etudes
Techniques), Groupe Intelligence Artificielle, Facult des Sciences de Luminy,
Universit Aix-Marseille II, France, 1975.
[Boyer, 1972]
Boyer Robert S. et J S. Moore, The sharing of Structure in in Theorem Proving
Programs, Machine Intelligence 7, edit par B. Melzer et D. Michie, Edinburgh
University Press, New-York, pages 101 116, 1972.
[Chastellier, 1969]
Chastellier (de) Guy et Alain Colmerauer, W-Grammar. Proccedings of the ACM
Congress , San Francisco, Aout, ACM, New York, pages 511 518, 1969.
[Chomsky, 1965]
Chomsky Noam, Aspects of the Theory of Syntax, MIT Press, Cambridge, 1965
[Cohen, 1988]
Cohen Jacques, A view of the origins and development of Prolog, Commun. ACM 31, 1,
pages 26 36, janvier 1888.
[Colmerauer, 1970a]
Colmerauer et Roussel
La naissance de Prolog
Page 27
Colmerauer et Roussel
La naissance de Prolog
Page 28
Colmerauer et Roussel
La naissance de Prolog
Page 29
[Luckam, 1971]
Luckam D. and N.J. Nilson, Extracting information from resolution proof trees,
Artificial Intelligence 12, 1, pages 27 54, 1971
[Meloni, 1975]
Meloni Henry, Mise en oeuvre des contraintes phonologiques, syntaxiques et
smantiques dans un systme de comprhension automatique de la parole, thse de
3me cycle, Groupe Intelligence Artificielle, Facult des Sciences de Luminy, Universit
Aix-Marseille II, France, juin 1975.
[Moore, 1974]
Moore, J, Computational Logic : Structure sharing and proof of program properties,
part I and II, memo 67, University of Edinburgh, School of Artificial Intelligence, 1974.
[Pasero, 1973]
Pasero Robert, Reprsentation du franais en logique du premier ordre en vue de
dialoguer avec un ordinateur, thse de 3me cycle, Groupe Intelligence Artificielle,
Facult des Sciences de Luminy, Universit Aix-Marseille II, France, mai 1973.
[Pereira, 1980]
Pereira Fernando C. and David H.D. Warren, Definite clause grammars for language
analysis, Artificial Intelligencec. 13, pages 231 278, 1980.
[Roussel, 1972]
Roussel Philippe, Dfinition et traitement de l'galit formelle en dmonstration
automatique, thse de 3ime cycle, Groupe Intelligence Artificielle, Facult des Sciences
de Luminy, Universit Aix-Marseille II, France, mai 1972.
[Roussel, 1975]
Prolog, manuel de rfrence et d'utilisation, Groupe Intelligence Artificielle, Facult des
Sciences de Luminy, Universit Aix-Marseille II, France, septembre 1975.
[Robinson, 1965]
Robinson J.A., A machine-oriented logic based on the resolution principle, J. ACM 12,
1, pages 23 41, janvier 1965.
[Taum, 1971]
TAUM 71, rapport annuel du projet de Traduction Automatique de l'Universit de
Monral, Universit de Monral, Janvier 1971.
[Warren, 1974]
Warren David H. D.,Warplan, A System for Generating Plans, research report,
University of Edimburgh, Department of Computational Logic, memo 76, juin 1974.
[Warren 1977]
Colmerauer et Roussel
La naissance de Prolog
Page 30
Warren David H. D., Luis M. Pereira et Fernando Pereira, Prolog the language and its
implementation, Proceedings of the ACM, Symposium on Artificial Intelligence and
Programming Languages, Rochester, N.Y., aout 1977.
[Wijngardeen, 1968]
Wijngardeen(van) A., B. J. Mailloux, J. E. L Peck et G.H.A. Koster, Final Draft Report
on the Algorithmic Language Algol 68, Mathematish Centrum, Amsterdam, dcembre
1968.
[Winograd, 1973]
Winograd Terry, Understanding Natural Language. Academic Press, 1973.