3 research outputs found
Algorithms and Implementation
In the past few years Tabling has emerged as a powerful logic programming model.
The integration of concurrent features into the implementation of Tabling systems is
demanded by need to use recently developed tabling applications within distributed
systems, where a process has to respond concurrently to several requests. The support
for sharing of tables among the concurrent threads of a Tabling process is a desirable
feature, to allow one of Tabling’s virtues, the re-use of computations by other threads
and to allow efficient usage of available memory. However, the incremental completion
of tables which are evaluated concurrently is not a trivial problem.
In this dissertation we describe the integration of concurrency mechanisms, by the
way of multi-threading, in a state of the art Tabling and Prolog system, XSB. We begin
by reviewing the main concepts for a formal description of tabled computations,
called SLG resolution and for the implementation of Tabling under the SLG-WAM, the
abstract machine supported by XSB. We describe the different scheduling strategies
provided by XSB and introduce some new properties of local scheduling, a scheduling
strategy for SLG resolution.
We proceed to describe our implementation work by describing the process of integrating
multi-threading in a Prolog system supporting Tabling, without addressing
the problem of shared tables. We describe the trade-offs and implementation decisions
involved.
We then describe an optimistic algorithm for the concurrent sharing of completed
tables, Shared Completed Tables, which allows the sharing of tables without incurring
in deadlocks, under local scheduling. This method relies on the execution properties
of local scheduling and includes full support for negation. We provide a theoretical
framework and discuss the implementation’s correctness and complexity.
After that, we describe amethod for the sharing of tables among threads that allows
parallelism in the computation of inter-dependent subgoals, which we name Concurrent
Completion. We informally argue for the correctness of Concurrent Completion.
We give detailed performance measurements of the multi-threaded XSB systems
over a variety of machines and operating systems, for both the Shared Completed Tables
and the Concurrent Completion implementations. We focus our measurements inthe overhead over the sequential engine and the scalability of the system.
We finish with a comparison of XSB with other multi-threaded Prolog systems and we compare our approach to concurrent tabling with parallel and distributed methods for the evaluation of tabling. Finally, we identify future research directions
Distributed Abductive Reasoning: Theory, Implementation and Application
Abductive reasoning is a powerful logic inference mechanism that allows assumptions to be
made during answer computation for a query, and thus is suitable for reasoning over incomplete
knowledge. Multi-agent hypothetical reasoning is the application of abduction in a distributed
setting, where each computational agent has its local knowledge representing partial world and
the union of all agents' knowledge is still incomplete. It is different from simple distributed
query processing because the assumptions made by the agents must also be consistent with
global constraints.
Multi-agent hypothetical reasoning has many potential applications, such as collaborative planning
and scheduling, distributed diagnosis and cognitive perception. Many of these applications
require the representation of arithmetic constraints in their problem specifications as well as
constraint satisfaction support during the computation. In addition, some applications may
have confidentiality concerns as restrictions on the information that can be exchanged between
the agents during their collaboration. Although a limited number of distributed abductive systems
have been developed, none of them is generic enough to support the above requirements.
In this thesis we develop, in the spirit of Logic Programming, a generic and extensible distributed
abductive system that has the potential to target a wide range of distributed problem
solving applications. The underlying distributed inference algorithm incorporates constraint
satisfaction and allows non-ground conditional answers to be computed. Its soundness and
completeness have been proved. The algorithm is customisable in that different inference and
coordination strategies (such as goal selection and agent selection strategies) can be adopted
while maintaining correctness. A customisation that supports confidentiality during problem
solving has been developed, and is used in application domains such as distributed security
policy analysis. Finally, for evaluation purposes, a
flexible experimental environment has been
built for automatically generating different classes of distributed abductive constraint logic programs.
This environment has been used to conduct empirical investigation of the performance
of the customised system
Multi-threaded communicating agents in qu-prolog (tutorial paper
Abstract. In this tutorial paper we summarise the key features of the multi-threaded Qu-Prolog language for implementing multi-threaded communicating agent applications. Internal threads of an agent communicate using the shared dynamic database used as a generalisation of Linda tuple store. Threads in different agents, perhaps on different hosts, communicate using either a thread-to-thread store and forward communication system, or by a publish and subscribe mechanism in which messages are routed to their destinations based on content test subscriptions. We illustrate the features using an auction house application. This is fully distributed with multiple auctioneers and bidders which participate in simultaneous auctions. The application makes essential use of the three forms of inter-thread communication of Qu-Prolog. The agent bidding behaviour is specified graphically as a finite state automaton and its implementation is essentially the execution of its state transition function. The paper assumes familiarity with Prolog and the basic concepts of multi-agent systems.