Vous êtes sur la page 1sur 30

La naissance de Prolog

juillet 1992
Alain Colmerauer

Philippe Roussel

Facult des Sciences de Luminy,


70 route Lon Lachamp
13288 Marseille, cedex 9, France
e-mail: colmer@gia.univ-mrs.fr
fax: (33) 91 26 92 75
tel: (33) 91 40 11 37

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.

Anne 1971, les premiers travaux


Tout le monde se retrouve Marseille au dbut de l'anne 1971. Alain a obtenu un poste de
matre de confrence en informatique et Jean Trudel a pu le suivre grce une bourse
d'Hydro-Qubec de deux ans. Le projet est donc de faire des dductions sur des textes crits
en franais. Le travail se rpartit comme suit : Jean Trudel et Philippe s'occupent de la partie
dduction, Robert Pasero et Alain de la partie langue naturelle.
Nous avons accs la machine du centre de calcul de l'universit de Marseille, un IBM 36044 localis dans nos locaux, dot de 900Ko environ de mmoire centrale et muni d'un systme
d'exploitation sans mmoire virtuelle. Grce un moniteur interactif que Jean Trudel ralise, et
en utilisant la machine de nuit pour bnficier de toute la mmoire disponible, lquipe peut
travailler dans des conditions exceptionnelles pour l'poque en France : quasiment 1 Mo de
mmoire pour excuter les programmes et une conception interactive des communications
entre utilisateurs et programmes travers la console de l'oprateur.
Jean Trudel amliore son dmonstrateur puis, partir du mois de mai, Phillippe en produit
toute une srie crits en Algol-W. Un systme trs naf de communications en langue naturelle
est alors ralis par toute l'quipe [Colmereauer, 1971]. Les interfaces entre les formules
logiques et le franais consistent en 50 rgles de systmes-Q en entre et 17 rgles de systmeQ en sortie. La partie raisonnement est ralise par l'un des dmonstrateurs de Philippe. Il est
alors possible d'avoir la conversation suivante avec l'ordinateur :

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 ensembles,


LesChats, LesSouris, LesSourisQuiMangentDuFromage,
LesChatsQuiNaimentPasLesSourisQuiMangentDuFromage,

des constantes qui reprsentent des relations binaires portant sur des ensembles,
Tuent, NaimePas, Mange,

un symbole fonctionnel darit 1 et deux symboles relationnels darit 2 et 3,


Le, Dans, Vrai.

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.

Anne 1972, l'application qui cre Prolog


L'anne 72 est la plus fertile. Tout d'abord en fvrier lquipe obtient une subvention de 122
000FF, ( l'poque environ 20 000$), de l'Institut de Recherche d'Informatique et
d'Automatique, une institution dpendant du ministre franais de l'industrie et cela pour une
dure de 18 mois. Ce contrat permet d'acqurir un terminal teletype (30 caractres par
seconde) et de le connecter sur l'IBM 360-67 (dot du merveilleux systme d'exploitation CPCMS qui grait des machines virtuelles) de l'Universit de Grenoble au moyen d'une ligne
spcialise de 300 bauds. Ce fut de loin le moyen de calcul le plus agrable dont l'quipe
disposa durant les trois annes qui suivirent et tout le monde l'utilisa, y compris les nombreux
chercheurs qui nous rendirent visite. Nous avons mis plusieurs annes ponger la dette en
heures-machines que nous avons ainsi accumule Grenoble. Le contrat permet enfin
d'engager une secrtaire et un chercheur, Henry Kanoui, tudiant de DEA qui s'occupera de la
morphologie du Franais. De son cot Robert Kowalski obtient un financement de lOTAN
qui financera de nombreux changes entre Edinburgh et Marseille.
De tous les systmes de rsolution qui furent implants par Philippe, SL-rsolution de
R. Kowalski et D. Kuehner semble le plus intressant. Son fonctionnement en pile similaire la
gestion des appels de procdures dans un langage de programmation classique est
particulirement adapt un traitement du non dterminisme par backtracking la Robert

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.

Le texte original suivi des trois rponses tait en fait


TOUT PSYCHIATRE EST UNE PERSONNE.
CHAQUE PERSONNE QU'IL ANALYSE, EST MALADE.
*JACQUES EST UN PSYCHIATRE A *MARSEILLE.
EST-CE QUE *JACQUES EST UNE PERSONNE?
OU EST *JACQUES?
EST-CE QUE *JACQUES EST MALADE?
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.

Anne 1973, le Prolog dfinitif

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.

Anne 1974 et 1975, la diffusion de Prolog


La version interactive de Prolog qui fonctionne sur Grenoble l'aide d'une console teletype est
trs sollicite. David Warren qui est chez nous pendant le mois de janvier et de fvrier 1974
l'utilise pour crire son systme de gnrateur de plans Warplan [Warren 1974]. A cette
occasion il fait le commentaire suivant sur le systme Prolog:

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.

Partie II. Un anctre de Prolog, les systmes-Q


L'histoire de la naissance de Prolog s'arrte donc la fin de l'anne 1975. Passons maintenant
des aspects plus techniques et tout d'abord dcrivons les systmes-Q, le rsultat dun premier
pari : dvelopper un langage de programmation de trs haut niveau, mme si les temps
d'excution qu'il implique puissent sembler effarants [Colmerauer, 1970b]. Ce pari et
l'exprience acquise dans l'implantation des systmes-Q furent dterminants dans le deuxime
pari : Prolog.

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*)

(les variables sont suivies d'une astrisque) applique sur la suite


P + Q(R,S,T) + P

produit trois suites possibles


R + Q(S,T) + P,
S + Q(R,T) + P,
T + Q(R,S) + P.

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

Stratgie d'application des rgles


Ceci est pour la partie unification. En ce qui concerne la stratgie d'application des rgles Alain
[1970b] crit :
Utiliser un ordinateur pour analyser une phrase est une entreprise difficile. Le
problme principal est de nature combinatoire: pris isolment chaque groupe
d'lments de la phrase peut se combiner de diffrentes faons avec d'autres
groupes et en former de nouveaux qui leur tour peuvent se recombiner, et ainsi
de suite. En gnral il n'existe qu'une seule faon de regrouper la totalit des
lments, mais pour la dcouvrir, il faut essayer tous les groupements possibles.
Pour reprsenter d'une faon conomique cette multitude de regroupements,
j'utilise un graphe orient o chaque flche est surmonte d'une expression
parenthse reprsentant un arbre. Un systme-Q n'est rien d'autre qu'un ensemble
de rgles permettant de transformer un tel graphe en un autre graphe. Cette
transformation peut correspondre une analyse, une synthse de phrase, ou une
manipulation formelle de ce genre.
Par exemple la suite
A + A + B + B + C + C

est reprsente par le graphe


A

et l'application des 4 rgles


A
A
X
B

+
+
+
+

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

c'est--dire la suite rduite au seul symbole S.


Cette faon de procder est relativement efficace car elle prserve le maximum de parties
communes entre toutes les suites. Un autre aspect des systmes-Q est la possibilit de les
enchaner les uns la suite des autres. Chacun prend comme donne le graphe rsultant du
prcdent. Cette technique tait largement utilise dans le projet de traduction automatique,
puisqu'une phrase anglaise ne subissait pas moins de 15 systmes-Q avant d'tre traduite en
franais. Deux systmes-Q s'occupaient de la morphologie, un autre de l'analyse de l'anglais,
deux du passage d'une structure anglaise un structure franaise, un de la synthse du franais
et 9 de la morphologie franaise [TAUM 71].
Signalons le cot rversible des systme-Q. Le signe de rcriture que nous avons not
tait en fait not == et, suivant l'option choisie et spcifie en tte de programme, tait
interprt comme une rcriture de gauche droite ou une rcriture de droite gauche. Ceci
veut dire que le mme programme pouvait tre utilis pour dcrire une transformation et la
transformation inverse, comme l'analyse et la synthse d'une phrase.
Il est intressant de noter que contrairement aux analyseurs crits en Prolog qui utilisent une
stratgie descendante (top-down), les analyseurs crits en systmes-Q utilisent une stratgie
remontante (bottom-up). En fait Alain avait une longue exprience de ce type de stratgie. Sa
thse passe Grenoble (en France) portait dj sur des analyseurs remontants mais
fonctionnant par backtracking [Colmerauer, 1970a]. Le non-dterminisme tait alors limit par
des relations de prcdences trs proches de celles de Robert Floyd [1963]. De plus, juste
avant de concevoir les systmes-Q et toujours dans le cadre du projet de traduction
automatique, Alain avait crit un analyseur et un synthtiseur gnral pour W-grammaire, le
formalisme introduit par A. van Wijngardeen pour dcrire Algol 68 [Wijngardeen, 1968]. L
aussi un analyseur remontant tait utilis pour retrouver la structure des symboles complexes
(dfinis par une mta-grammaire) ainsi qu'un deuxime analyseur remontant pour l'analyse du
texte proprement dite [Chastellier, 1969].

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.

Partie III. Le Prolog prliminaire


Passons maintenant la version prliminaire de Prolog qui fut cre au cours de l'criture du
systme de communication homme machine en automne 1972 [Colmerauer, 1972].
Rappelons que l'objectif fix tait extrmement ambitieux : disposer d'un outil nous
permettant de traiter les problmes syntaxiques et smantiques de la langue naturelle, en
considrant la logique du premier ordre non seulement comme un langage de programmation,
mais aussi comme un langage de reprsentation des connaissances. Autrement dit, la
formulation logique devait servir non seulement pour les diffrents modules du systme de
communication mais aussi pour les informations changes y compris avec lutilisateur.
Le choix s'tant port sur la logique du premier ordre (sous forme clausale) et non pas sur
une logique d'ordre suprieure, il y avait l une apparente impossibilit vouloir que des
programmes puissent manipuler d'autres programmes. C'est bien sr par le biais de mcanismes
extra-logiques que nous avons rsolu ce problme. En fait, cette version initiale de Prolog fut
conue plutt comme l'outil d'une l'application que comme un langage de programmation
universel. Les prmisses d'un tel langage taient cependant l.

Choix de la mthode de rsolution, raisons


La dcision concernant le choix du systme logique et le mcanisme d'infrence de base que
nous allions adopter tait crucial pour le succs du projet. Si le principe de rsolution de
A. Robinson s'imposait naturellement par la simplicit de la forme clausale, l'unicit de la rgle
d'infrence et certaines similitude avec l'appel de procdures des langages classiques, il fut
difficile de dcider quel type d'adaptation tait ncessaire pour rpondre nos objectifs. Il
fallait prendre en compte la validit et la compltude logique du systme, les problmes
d'implantation en machine et surtout les risques d'explosion combinatoire que nous
connaissions parfaitement aprs nos exprimentations.
Parmi les systmes de questions-rponses et les techniques de rsolution de problmes que
nous avions tudis, figuraient entre autres celui de D. Luckham [1971] et N.J. Nilson, celui

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

o, bien entendu, L0 et L'0 sont des littraux complmentaires unifiables et la substitution la


plus gnrale qui les unifie. (Un exemple est donn plus tard).
La raison premire du choix de cette technique de rsolution linaire avec ordre de
slection prdfini des littraux, tait sa simplicit et le fait que nous pouvions produire des
clauses logiquement dductibles du programme, ce qui garantissait donc d'une certaine faon
la validit des rsultats produits. Nous nous tions largement inspir pour cela de la SLrsolution de Robert Kowalski que Philippe avait implant pour sa thse sur l'galit formelle.
Cependant, malgr son fonctionnement en pile analogue l'appel de procdures des langages
classiques, nous avions constat que cette mthode introduisait des calculs, certes ncessaires
dans le cas gnral, mais inutiles pour la plupart de nos exemples. C'est donc cette version
extrmement simplifie de SL-Resolution (que nous venons de dcrire formellement) qui fut
adopte et qui continue d'tre la base de tous les Prologs.
Le choix concernant le traitement du non-dterminisme fut li des problmes d'efficacit.
La programmation par Philippe d'un certain nombre de mthodes avaient montr qu'un des
problmes cruciaux tait celui de l'explosion combinatoire et donc du manque de mmoire. Le
backtracking pour la gestion du non-dterminisme fut rapidement adopt plutt qu'un
systme de gestion de plusieurs branches de calcul rsidant simultanment en mmoire,
systme qui aurait eu pour effet d'augmenter considrablement la taille de la mmoire
ncessaire l'excution des dductions. Alain avait une prdilection pour cette mthode
introduite par Robert Floyd [1967] pour traiter les langages non-dterministes et l'enseignait
tous ses lves. L'utilisation du backtracking amenait certes la perte de la compltude
dans le cas de dductions comportant des branches infinies, mais nous jugions que compte
tenu de la simplicit de la stratgie de dduction traitement des littraux de gauches droite,
et choix des clauses dans l'ordre o elles taient crites c'tait au programmeur veiller ce
que l'excution de son programme se termine.

Caractristiques du Prolog prliminaire


Outre le mcanisme de dduction dont nous avons parl, un certain nombre de prdicats
prdfinis taient rajouts au systme au fur et mesure des besoins d'Alain et de Robert
Pasero : des prdicats pour tracer une excution, COPY (pour copier un terme), BOUM (pour
dcomposer un identificateur en une liste de caractres ou pour le composer), DIF (pour traiter
l'galit formelle de la thse de Philippe). Il est noter que nous nous refusions inclure des
prdicats d'entre-sortie dans cette liste, car considrs comme trop loigns de la logique. Ces
entres-sorties, la spcification des rsolvantes initiales, ainsi que l'enchanement entre
programmes, taient spcifis dans un langage de commandes agissant sur des ensembles de
clauses (lecture, copie, criture, fusion, dmonstration, etc). Ce langage sans instruction de
contrle ne permettait de dfinir que des enchanements dfinis statiquement mais il avait
comme vertu de traiter uniformment les communications travers la notion d'ensemble de
clauses.
Soulignons que dj, dans cette premire version, figurait l'valuation par ncessit (ou coroutine si l'on prfre) de certains prdicats, en l'occurrence DIF et BOUM. Le prdicat DIF fut

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
..
.;
;.
;;

effectuait une coupure aprs la tte de la clause,


effectuait une coupure aprs l'excution de toute la rgle,
effectuait une coupure aprs production d'au moins une rponse,
tait sans effet.

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.

Ralisation du Prolog prliminaire


Le centre de calcul localis Luminy ayant t dplac, l'interprte fut ralis par Philippe en
Algol-W, sur la machine IBM 360-67 du Centre de calcul de l'Universit de Grenoble, machine
munie du systme d'exploitation CP-CMS bas sur le concept de machines virtuelles. Cette
machine, laquelle nous tions connects par ligne tlphonique spcialise, possdait deux
qualits pour ainsi dire uniques cette poque, et essentielles nos travaux : celle de
permettre un programmeur de disposer d'une mmoire virtuelle de 1Mo s'il le dsirait (nous
n'avions droit qu' 750 Ko), et celle de permettre l'criture de programmes interactifs. Ce fut
donc sur une seule console, fonctionnant 300 bauds, que fut ralis non seulement
l'interprte, mais galement le systme de questions-rponses lui-mme. Le choix d'Algol-W
s'tait impos par le fait qu'il tait le seul langage de haut niveau dont nous disposions qui
permettait la cration dynamique d'objets structurs, tout en tant muni d'une rcupration de
mmoire.

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!

Partie IV. Le Prolog dfinitif


Ayant longuement dcrit jusqu maintenant les deux anctres il est temps de donner la fiche
signaltique du Prolog dfinitif de 1973.
Notre souci majeur aprs la version prliminaire, est de renforcer l'aspect langage de
programmation de Prolog en minimisant les concepts et en amliorant ses fonctionnalits
interactives dans la gestion des programmes. Prolog devient un langage bas sur le seul
principe de rsolution et sur la mise disposition d'un ensemble de de prdicats (procdures)
prdfinis permettant de tout faire dans le langage lui-mme. Cet ensemble est conu comme
un ensemble minimal permettant de :
- crer et modifier des programmes en mmoire,
- lire des programmes source, les analyser et les charger en mmoire,
- interprter dynamiquement des requtes ayant une structure analogue aux autres
lments du langage,
- accder dynamiquement la structure et aux lments d'une dduction,
- contrler l'excution d'un programme le plus simplement possible.

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

- un seul oprateur pour le contrle du backtracking , l'opration de coupure de l'espace


de recherche ! note alors / ,
- le concept d'appel calcul (meta-call) permettant d'utiliser une variable la place d'un
littral,
- l'accs aux littraux anctres et la rsolvante en cours (considre comme un terme),
pour les programmeurs dsireux de dfinir leurs propres mcanismes de rsolution,
l'aide des prdicats valuables ANCETRE et ETAT qui ont disparu des Prologs actuels.
Le backtracking et le fait d'ordonner chaque ensemble de clauses dfinissant un prdicat,
sont les lments de base conservs comme technique de gestion du non-dterminisme. La
version prliminaire de Prolog nous avait donn grande satisfaction sur ce point. La rduction
par Alain une seule primitive (le cut /) de la gestion du contrle du backtracking, au lieu des
trop nombreux concepts de la premire version simplifie extraordinairement le langage. Il
devient possible au programmeur non seulement de rduire la taille de son espace de recherche
par des critres purement pragmatiques, mais aussi de raliser un traitement de la ngation,
certes simplifi et rducteur dans sa smantique, mais extrmement utile pour la
programmation la plus courante.
D'autre part, Philippe, aprs le sjour Edinburgh a en tte les bases d'une architecture
extrmement simple raliser du point de vue de la gestion de la mmoire, et beaucoup plus
efficace en temps et en espace, surtout si lon conserve la gestion du non-dterminisme par
backtracking . Enfin, toutes les premires expriences de programmation ont montr que
cette technique a permis nos usagers d'intgrer assez facilement le non-dterminisme comme
une dimension additionnelle au contrle de l'excution de prdicats.
En ce qui concerne le traitement du ou implicite entre littraux l'intrieur d'une clause,
la squentialit s'impose l encore comme l'interprtation la plus naturelle de cet oprateur
puisque formellement l'ordre d'excution des littraux n'affectait en rien l'ensemble des
rsultats obtenus (modulo l'viction de branches infinies), comme l'avait prouv Robert
Kowalski propos de SL-resolution.
En rsum, ces deux choix concernant le traitement du et et du ou se justifient
pleinement par les objectifs assigns:
- utiliser une stratgie simple, prvisible et contrlable par le programmeur, permettant de
donner tout prdicat extra-logique (comme les entres-sorties) une dfinition
oprationnelle.
- disposer d'un interprte capable de faire des dductions dont les profondeurs pouvaient
tre de mille ou mme de dizaines de mille (chose totalement impensable dans les
systmes dductifs existant l'poque).

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

* LISTE DES VOLS


----------------.
+VOL(PARIS,
+VOL(PARIS,
+VOL(PARIS,
+VOL(PARIS,

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).

+VOL(MARSEILLE, LONDRES, 08:15, 09:45, BA560).


+VOL(MARSEILLE, LYON, 07:45, 08:15, IT115).
+VOL(LYON, LONDRES, 08:30, 09:25, TAT263).
* SAUVEGARDE DU PROGRAMME
-------------------------.
-SAUVE!
* INTERROGATION
---------------.
-ITINERAIRE(MARSEILLE, LONDRES, *HD, *HA, 00:00, 09:30)!

Voici les rponses fournies par lordinateur


--------------------------------------------PLAN DE VOL ENTRE:
MARSEILLE ET: L ONDRES
--------------------------------------------HORAIRE DEPART:
06:15
HORAIRE ARRIVEE:
08:20
VOLS: IT100-AF210
--------------------------------------------PLAN DE VOL ENTRE:
MARSEILLE ET: LONDRES
----------------------------- ---------------HORAIRE DEPART:
07:45
HORAIRE ARRIVEE:
09:25
VOLS: IT115-TAT263

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

Total precedence relations, J. ACM 17, 1, pages 14 30, janvier 1970.


[Colmerauer, 1970b]
Les systmes-q ou un formalisme pour analyser et synthtiser des phrases sur
ordinateur, publication interne 43, Dpartement d'informatique de l'Universit de
Montral, septembre 1970.
[Colmerauer, 1971]
Colmerauer Alain, Fernand Didier, Robert Pasero, Philippe Roussel, Jean Trudel,
Rpondre , publication interne, Groupe Intelligence Artificielle, Facult des Sciences de
Luminy, Universit Aix-Marseille II, France, mai 1971. Cette publication consiste en un
listing avec des commentaires la main.
[Colmerauer, 1972]
Colmerauer Alain, Henry Kanoui, Robert Pasero et Philippe Roussel, Un systme de
communication en franais, rapport prliminaire de fin de contrat IRIA, Groupe
Intelligence Artificielle, Facult des Sciences de Luminy, Universit Aix-Marseille II,
France, octobre 1972.
[Colmerauer, 1975]
Colmerauer Alain, Les grammaires de mtamorphose GIA, publication interne, Groupe
Intelligence Artificielle, Facult des Sciences de Luminy, Universit Aix-Marseille II,
France, novembre 1975. Version anglaise, Metamorphosis grammars, Natural Language
Communication with Computers, Lectures Notes in Computer Science 63, dit par L.
Bolc, Springer Verlag, Berlin Heidelberg, New York, pages 133 189, 1978, ISBN 3540-08911-X.
[Darlington, 1969]
Darlington J.L. Theorem-proving and information retrieval. Machine Intelligence 4,
Edinburgh University Press, pages 173 707, 1969.
[Elcock, 1988]
Elcock E. W. Absys: the first logic programming language A restrospective and a
commentary. The Journal of Logic Programming. ????
[Floyd, 1963]
Floyd Robert W. Syntactic analysis and operator precedence. J.ACM 10, pages 316
333, 1963.
[Floyd, 1967]
Floyd Robert W. Nondeterministic algorithms. J. ACM 14, 4, pages 636 644, octobre
1967.
[Green, 1969]

Colmerauer et Roussel

La naissance de Prolog

Page 28

Green Cordell C., Application of theorem-proving to problem-solving, Prooceedings of


First International Joint Conference on Artificial Intelligence, Washington D.C., pages
219 239, 1969.
[Hewitt 69]
Hewitt Carl, PLANNER: A language for proving theorems in robots, Prooceedings of
First International Joint Conference on Artificaila Intelligence, Washington D.C.,
pages 295 301, 1969.
[Joubert, 1974]
Joubert Michel, Un systme de rsolution de problmes tendance naturelle, thse de
3me cycle, Groupe Intelligence Artificielle, Facult des Sciences de Luminy, Universit
Aix-Marseille II, France, fvrier 1974.
[Kanoui, 1973]
Kanoui Henry, Application de la dmonstration automatique aux manipulations
algbriques et l'intgration formelle sur ordinateur, thse de 3me cycle, Groupe
Intelligence Artificielle, Facult des Sciences de Luminy, Universit Aix-Marseille II,
France, octobre 1973.
[Kanoui, 1976]
Kanoui Henry, Some aspects Of Symbolic Integration via Predicat Logic Programming.
ACM SIGSAM Bulletin, 1976.
[Kowalski, 1971]
Kowalski Robert A. et D. Kuehner, Linear resolution with selection function, memo 78,
University of Edinburgh, School of Artificial Intelligence, 1971. Aussi dans Artificial
Intelligence 2, 3, pages 227 260, ???
[Kowalski, 1973]
Kowalski Robert A., Predicate Logic as Programming Language, memo 70, University
of Edimburgh, School of Artificial Intelligence, novembre 1973. Aussi dans Proceedings
of IFIP 1974, North Holland Publishing Company, Amsterdam, pages 569 574, 1974.
[Kowalski, 1974]
Kowalski Robert A. and Maarten van Emden, The semantic of predicate logic as
programming language, memo 78, University of Edinburgh, School of Artificial
Intelligence, 1974. Aussi dans JACM 22, 1976, pages 733 742.
[Kowalski, 1988]
Kowalski Robert A., The early history of logic programming, CACM vol. 31, no. 1, pp
38-43, 1988.
[Loveland, 1984]
Loveland, D.W. Automated theorem proving: A quarter-century review. Am. Math. Soc.
29 , pages 1 42, 1984.

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.