Prolog põhineb esimest järku predikaatarvutusel, s.t. loogikal, kus kasutatakse konstante (siin: uranos, rhea jne), muutujaid, mille väärtuseks võivad olla need konstandid (Isa, Pojapoeg, Vanaisa) ja predikaate, mis seovad muutujaid ja konstante ja millel on tõeväärtus: poeg_on(uranos, okeanos) on tõene, kuid pojapoeg(uranos, iapetos) pole (see pole seni esitatud lausetest tuletatav); muutujateks võivad olla vaid predikaatide argumendid, s.t. muutujate väärtuseks võivad olla vaid faktides esinevad konstandid, mitte predikaadid (see ongi esimest ja teist järku predikaatarvutuse erinevus). Prologi faktid, näiteks:
Reeglid, näiteks
pojapoeg(_123,_436) :-
poeg_on(_123,_254),
poeg_on(_254,_436).
Kahjuks selline on enamuses Prolog-idest kasutatav programmi teksti "sisemine" kuju (kasutaja poolt sisestatud muutujad asendatakse ja ka debuggerid näitavad tavaliselt programmi just sellisel kujul. Programmi loetavuse ja arusaadavuse jaoks on siiski väga oluline püüda muutujatele anda vähemalt esialgses tekstis arusaadavad, sisulised (semantilised) nimed, s.t. kasutada Vanaisa, Pojapoeg, Isa, mitte X, Y, Z või _123, _436, _254.
Kindlasti peab vahet tegema muutujate (Pojapoeg) ja predikaatide ( pojapoeg(..., ...) ) vahel - muutujate (näit Pojapoeg) väärtuseks on konstandid, tegelikkuse objektid (zeus, atlas,...), kuid predikaadid näitavad vaid suhteid muutujate ja konstantide vahel - kes on kelle poeg, tütar, pojapoeg jne. Loomulikus (näit eesti) keeles me kasutame näiteks sõna "poeg" samuti kahes (vähemalt) erinevas tähenduses - "poeg" võib tähistada isikut ( "poeg Indrek") kui ka suhet ("Andrese poeg on Indrek"); kumb aspekt olulisem on, selgub tavaliselt kontekstist. Arutluste formaliseerimisel (Prolog-is) on nende kahe aspekti vahel oluline vahe, näiteks senivaadeldud programmilõikudes Poeg on muutuja, mille väärtuseks võivad olla programmis esinenud isikud (okeanos, iapetos - konstandid!), kuid poeg_on on suhe, predikaat ja see ei saa Prologis olla muutuja väärtuseks. Sellepärast ongi siin kasutatud vormi poeg_on, mitte poeg - muutujate ja predikaatide erinev nimekuju aitab vähendada vigu, mis tekivad loomuliku keele ebatäpse keelekasutuse tõttu. Loomulikus keeles on sõnumi (lause) vastuvõtjaks inimene, kes automaatselt täiendab ja parandab kahemõttelisi väljendeid; arvuti ei ole selleks (veel) suuteline.