Päättely

Tähän astiset esimerkit ovat olleet sellaisia, että vastaavat ohjelmat olisi aivan yhtä helposti tai helpomminkin voinut tehdä jollakin muulla ohjelmointikielellä. Prolog kuitenkin puolustaa paikkaansa, kun on tarvetta tehdä päättelyä, erityisesti kun on tarvetta etsiä kaikki ratkaisut, joihin tietyt predikaattilogiikan avulla esitettävissä olevat rajoitukset pätevät. Silloin monien monimutkaistenkin ongelmien ratkaiseminen onnistuu prologilla hämmästyttävän näppärästi lyhyellä ohjelman pätkällä.

Esimerkkiohjelma 3: Viisi taloa

Otetaan esimerkiksi tällaisesta ongelmasta eräs logiikkatehtävä:

There are 5 houses, each of a different colour and inhabited by a man of a different nationality, with a different pet, drink and brand of cigarettes.

  1. The Englishman lives in the red house
  2. The Spaniard owns the dog
  3. Coffee is drunk in the green house
  4. The Ukrainian drinks tea
  5. The green house is immediately to the right (your right) of the ivory house
  6. The Winston smoker owns snails
  7. Kools are smoked in the yellow house
  8. Milk is drunk in the middle house
  9. The Norwegian lives in the first house on the left
  10. The man who smokes Chesterfields lives in the house next to the man with the fox
  11. Kools are smoked in the house next to the house where the horse is kept
  12. The Lucky Strike smoker drinks orange juice
  13. The Japanese smokes Parliaments
  14. the Norwegian lives next to the blue house

Who owns the zeebra? Who drinks water?

Ongelma on ratkaistavissa yksinkertaisesti generoimalla yleinen ratkaisu, joka ei sisällä vielä mitään muuta informaatiota kuin ongelman muodon, ja predikaatti rajoitteet, joka onnistuu vain siinä tapauksessa, että ratkaisu toteuttaa kaikki annetut rajoitukset.

Ongelman ratkaiseva ohjelma.