51 research outputs found

    Customisable Handling of Java References in Prolog Programs

    Full text link
    Integration techniques for combining programs written in distinct language paradigms facilitate the implementation of specialised modules in the best language for their task. In the case of Java-Prolog integration, a known problem is the proper representation of references to Java objects on the Prolog side. To solve it adequately, multiple dimensions should be considered, including reference representation, opacity of the representation, identity preservation, reference life span, and scope of the inter-language conversion policies. This paper presents an approach that addresses all these dimensions, generalising and building on existing representation patterns of foreign references in Prolog, and taking inspiration from similar inter-language representation techniques found in other domains. Our approach maximises portability by making few assumptions about the Prolog engine interacting with Java (e.g., embedded or executed as an external process). We validate our work by extending JPC, an open-source integration library, with features supporting our approach. Our JPC library is currently compatible with three different open source Prolog engines (SWI, YAP} and XSB) by means of drivers. To appear in Theory and Practice of Logic Programming (TPLP).Comment: 10 pages, 2 figure

    Coordination and Concurrency in Multi-Engine Prolog

    Get PDF
    Abstract. We discuss the impact of the separation of logic engines (independent logic processing units) and multi-threading on the design of coordination mechanisms for a Prolog based agent infrastructure. We advocate a combination of coroutining constructs with focus on expressiveness and a simplified, multi-threading API that ensures optimal use available parallelism. In this context, native multi-threading is made available to the application programmer as a set of high-level primitives with a declarative flavor while cooperative constructs provide efficient and predictable coordination mechanisms. As illustrations of our techniques, a parallel fold operation as well as cooperative implementations of Linda blackboards and publish/subscribe are described

    Logic-based Technologies for Multi-agent Systems: A Systematic Literature Review

    Get PDF
    Precisely when the success of artificial intelligence (AI) sub-symbolic techniques makes them be identified with the whole AI by many non-computerscientists and non-technical media, symbolic approaches are getting more and more attention as those that could make AI amenable to human understanding. Given the recurring cycles in the AI history, we expect that a revamp of technologies often tagged as “classical AI” – in particular, logic-based ones will take place in the next few years. On the other hand, agents and multi-agent systems (MAS) have been at the core of the design of intelligent systems since their very beginning, and their long-term connection with logic-based technologies, which characterised their early days, might open new ways to engineer explainable intelligent systems. This is why understanding the current status of logic-based technologies for MAS is nowadays of paramount importance. Accordingly, this paper aims at providing a comprehensive view of those technologies by making them the subject of a systematic literature review (SLR). The resulting technologies are discussed and evaluated from two different perspectives: the MAS and the logic-based ones

    Language Interoperability and Logic Programming Languages

    Get PDF
    We discuss P#, our implementation of a tool which allows interoperation between a concurrent superset of the Prolog programming language and C#. This enables Prolog to be used as a native implementation language for Microsoft's .NET platform. P# compiles a linear logic extension of Prolog to C# source code. We can thus create C# objects from Prolog and use C#'s graphical, networking and other libraries. P# was developed from a modified port of the Prolog to Java translator, Prolog Cafe. We add language constructs on the Prolog side which allow concurrent Prolog code to be written. We add a primitive predicate which evaluates a Prolog structure on a newly forked thread. Communication between threads is based on the unification of variables contained in such a structure. It is also possible for threads to communicate through a globally accessible table. All of the new features are available to the programmer through new built-in Prolog predicates. We present three case studies. The first is an application which allows several users to modify a database. The users are able to disconnect from the database and to modify their own copies of the data before reconnecting. On reconnecting, conflicts must be resolved. The second is an object-oriented assistant, which allows the user to query the contents of a C# namespace or Java package. The third is a tool which allows a user to interact with a graphical display of the inheritance tree. Finally, we optimize P#'s runtime speed by translating some Prolog predicates into more idiomatic C# code than is produced by a naive port of Prolog Cafe. This is achieved by observing that semi-deterministic predicates (being those which always either fail or succeed with exactly one solution) that only call other semi-deterministic predicates enjoy relatively simple control flow. We make use of the fact that Prolog programs often contain predicates which operate as functions, and that such predicates are usually semi-deterministic

    Revisão Bibliográfica e Modelo Conceitual de Execução de Agentes BDI para Análise de Complexidade Computacional no Paradigma de Agentes

    Get PDF
    Analisar um algoritmo envolve pensar quais e quanto dos recursos computacionais serão necessários para a sua execução (ex: a quantidade de tempo (CPU) e espaço (memória)), os quais variam de acordo com o tamanho e dados da entrada. Com a introdução de arquiteturas de hardware, como arquiteturas multi-core, e o advento de redes e sistemas distribuídos, avaliar a eficiência de aplicações baseadas no paradigma de agentes torna-se ainda mais importante. Estabelecer métricas de eficiência em agentes é um tema de crescente preocupação uma vez que o uso de agentes vem tornando-se cada vez mais comum, porém, frequentemente, as métricas que são utilizadas para avaliar um agente são baseadas em características temporais (ex: tempo de execução) ou em relação à troca de mensagens. Além de não serem suficientes para avaliar a complexidade computacional de um programa de agente, elas dependem da plataforma de execução e da infraestrutura de hardware onde o agente é executado e avaliado. Também não é possível estimar o tempo de execução sem que o sistema seja efetivamente executado, o que pode ser problemático quando pensa-se na realização de experimentos. O objetivo desta pesquisa é realizar um estudo e propor um modelo e técnica para cálculo da complexidade computacional de um programa de agente, considerando sempre as características e conceitos inerentes ao paradigma de agentes

    Extensión del modelo Linda para representar la dinámica de conocimiento en sistemas multi-agente

    Get PDF
    Este trabajo es un primer acercamiento al estudio de las relaciones existentes entre el modelo Linda y la Teoría de Cambio de Creencias. Se mostrarán las similitudes existentes entre ambos formalismos y cómo extender el modelo Linda utilizando resultados y técnicas del área de Teoría de Cambio de Creencias. En tal sentido, se establecen convenciones para representar conocimiento en el espacio de tuplas de Linda, y se formulan extensiones a las primitivas provistas por el lenguaje para modelar la dinámica de conocimiento de los agentes en un sistema multi-agente.VI Workshop de Agentes y Sistemas Inteligentes (WASI)Red de Universidades con Carreras en Informática (RedUNCI

    Extensión del modelo Linda para representar la dinámica de conocimiento en sistemas multi-agente

    Get PDF
    Este trabajo es un primer acercamiento al estudio de las relaciones existentes entre el modelo Linda y la Teoría de Cambio de Creencias. Se mostrarán las similitudes existentes entre ambos formalismos y cómo extender el modelo Linda utilizando resultados y técnicas del área de Teoría de Cambio de Creencias. En tal sentido, se establecen convenciones para representar conocimiento en el espacio de tuplas de Linda, y se formulan extensiones a las primitivas provistas por el lenguaje para modelar la dinámica de conocimiento de los agentes en un sistema multi-agente.VI Workshop de Agentes y Sistemas Inteligentes (WASI)Red de Universidades con Carreras en Informática (RedUNCI

    Semantic document engineering with WordNet and PageRank

    Full text link
    corecore