3 research outputs found

    Algorithms and Implementation

    Get PDF
    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

    Get PDF
    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

    No full text
    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.
    corecore