A programok párhuzamossága két féle lehet:
Pargol | (Clark, Gregory, Imperial College, Angli) |
Concurrent Prolog | (Shapiro, Weizmann Inst, Izrael) |
FGHC | (Ueda, ICOT, Japán) |
CS-Prolog | (Futó Iván, ML, Magyarország) |
Aurora | (Warren-Lusk-Haridi, Gigalips projekt) |
Muse | (Ali, SICS, Svédország) |
Andorra-I | (Warrren, Bristol, Anglia) |
&-Prolog | (Hermenegildo, UPM, Madrid) |
A párhuzamosság fajtái:
A különböző Szin-behelyettesítésekhez tartozó kereséseket külön processzorok végez(het)ik.
Ez lehet független (independent and-parallelism):
?-furdoszoba(feher, Mosdo, Kad).Az ebből keletkező: mosdo(feher, Mosdo) és kad(feher, Kad) hívások egymástól függetlenül párhuzamosan futhatnak, az egyik minden megoldását a másik mindegyikével párosítani kell.
Függő párhuzamosság (dependent and-parallelism):
?-furdoszoban(Szin, Mosdo, Kad).Az alapvető nehézséget a párhuzamos és-futások közben létrejött választási pontok jelentik. A 80-as évek elején/közepén született committed choice nyelvek ezt a problémát a don't care nemdeterminizmus segítségével oldották meg, lényegében a visszalépés kiküszöbölésével, pl. a
mosdo(Szin, M), kad(Szin, K)hívásban, mind a mosdo, mind a kad eljárás csak úgy helyettesítheti be a Szin-t, ha "elkötelezi" magát a behelyettesítés mellett. Újabb megvalósításokban nem zárják ki a nemdeterminizmust, lsd pl. Andorra-I.
Az Andorra-I rendszer
Vagy- és (függő)és-párhuzamos rendszer a teljes Prolog támogatásával, részben az Aurorá-ra épül. Egy bonyolult, fordításidejű programanalizátort tartalmaz, annak felderítésére, hogy mely eljárások milyen paraméterezés mellett lesznek determinisztikusak.
A Prologtól némileg eltérő végrehajtási mechanizmusa van, ún. Basic Andorra Model:
Adott egy g1, ... gn célsorozat: