Prologo (programlingvo)

Prologo (angle Prolog, etimologie "PROgramado en LOGiko") estas programlingvo bazita sur la predikatkalkulo. En la 1970-aj jaroj, ĝi estis uzata precipe en projektoj de artefarita intelekto en Japanio. (Ial, en Usono kaj Eŭropo oni preferis Lispon por la sama fako.)

Programo en Prologo estas kolekto de asertoj kaj reguloj. La asertoj konsistas el predikatoj, logikaj operacisimboloj kaj konstantoj, kiuj kune formas datumbazon. La reguloj havas la formon de Horna esprimo.

Malgraŭ ĝia simpla kaj pure logika bazo, Prologo uzindas por diversaj specoj de programaro. Iam estis malvaste konata programo por instrui Esperanton al hispanparolantoj farita en Prologo.

Prologo estas utila por limiglogika programado (Constraint Logic Programming).

Jen simpla montra programo kun klarigoj:

 %%%%% Asertoj
 
 ino(katrino).                          % Katrino estas ino.
 ino(elizabeto).                        % Elizabeto estas ino.
 ino(anabelo).                          % Anabelo estas ino.
 
 viro(georgo).                          % Georgo estas viro.
 viro(johano).                          % Johano estas viro.
 viro(benjameno).                       % Benjameno estas viro.
 
 ido(benjameno, georgo).                % Benjameno estas ido de Georgo.
 ido(katrino, georgo).                  % Katrino estas ido de Georgo.
 ido(elizabeto, anabelo).               % Elizabeto estas ido de Anabelo.
 
 gefratoj(georgo, anabelo).             % Georgo kaj Anabelo estas gefratoj.
 
 %%%%% Reguloj
 
 gefratoj(X,Y) :- ido(X,Z), ido(Y,Z),   % Se X kaj Y havas saman patr(in)on 
                  X \= Y.               % kaj ne estas sama persono,
                                        % estas gefratoj.
 
 patro(X,Y) :-  ido(Y,X), viro(X).      % Se Y estas ido de X, kaj se X estas
                                        % viro, X estas la patro de Y.
 
 patrino(X,Y) :- ido(Y,X), ino(X).      % Se Y estas ido de X, kaj se X estas
                                        % ino, X estas la patrino de Y.
 
 fratino(X,Y) :- ino(X), gefratoj(X,Y). % Se X estas ino, kaj se X kaj Y estas
                                        % gefratoj, X estas la fratino de Y.
 
 onklo(X,Y) :- gefratoj(X,Z), ido(Y,Z), % Se X kaj Z estas gefratoj, kaj se Y estas
               viro(X).                 % ido de Z, kaj se X estas viro, X estas
                                        % la onklo de Y.
 
 nevino(X,Y) :- ino(X), onklo(Y,X).     % Se X estas ino, kaj se Y estas la onklo
                                        % de X, X estas la nevino de Y.
 
 gekuzoj(X,Y) :- ido(X,A), ido(Y,B),    % Se X estas la ido de A, kaj se Y estas
                 gefratoj(A,B).         % ido de B, kaj se A kaj B estas gefratoj,
                                        % X kaj Y estas gekuzoj.

Do, se oni tajpus patrino(anabelo, elizabeto)., la programo respondus Jes. Se oni tajpus fratino(benjameno, elizabeto)., la programo respondus Ne.

Eksteraj ligiloj 
 Enkonduko al Prologo ĉe voko-korvo
 Ludoj kun programlingvo “prolog” de Artur Trzewik
 Esperantaj nombroj
 Romiaj nombroj per Prologo
 Magia Kvadrato el Faŭsto
 Melankolio laŭ Albrecht Dürer
 Esperanta vortanalizilo realigita per Prologo

Programlingvoj
Logiko