|
|
It is widely acknowledged that logic programming is very well suited for con- currency and a lot of research exists on this topic. However, despite the many contributions laying under the umbrella of concurrent logic programming, only a small amount of technologies survived the passage of time. Survivors, in turn, are tailored on an ancient way of designing (and implementing) concurrent systems.
Accordingly, in this thesis we address the problem of designing and implement- ing a concurrent LP solution taking advantage of modern concurrent programming facilities such as co-routines and non-blocking I/O. In doing so, we leverage upon the 2P-Kt ecosystem for symbolic AI, following the purpose of enriching it towards concurrency.
Along this line, the contribution of this thesis is three-folded. First, we review the state of the art of concurrent logic programming, providing an overview of its most important aspects and problems. We then formally model the behaviour of an OR-concurrent Prolog solver as a state machine which we adopt to extend the 2P-Kt ecosystem with concurrent Prolog support. Finally, we design, implement and validate an OR-concurrent Prolog solution reifying the aforementioned model into some actually usable technology.
We put a lot of effort in the validation of our solver and then we assess the speedup of our concurrent Prolog solver via comparative benchmark with respect to sequential Prolog. Notably, our solution achieves some good results in terms of speedup and memory usage with respect to the sequential case.
keywords
2P-Kt, Prolog, concurrent logic programming, or-parallelism, logic-based technologies, or-parallelism