2,053 research outputs found

    Logic Programming Applications: What Are the Abstractions and Implementations?

    Full text link
    This article presents an overview of applications of logic programming, classifying them based on the abstractions and implementations of logic languages that support the applications. The three key abstractions are join, recursion, and constraint. Their essential implementations are for-loops, fixed points, and backtracking, respectively. The corresponding kinds of applications are database queries, inductive analysis, and combinatorial search, respectively. We also discuss language extensions and programming paradigms, summarize example application problems by application areas, and touch on example systems that support variants of the abstractions with different implementations

    Edsger Wybe Dijkstra (1930 -- 2002): A Portrait of a Genius

    Get PDF
    We discuss the scientific contributions of Edsger Wybe Dijkstra, his opinions and his legacy.Comment: 10 pages. To appear in Formal Aspects of Computin

    An Implementation of Splitting for Dung Style Argumentation Frameworks

    Get PDF
    Argumentation and reasoning have been an area of research in such disciplines as philosophy, logic and artificial intelligence for quite some time now. In the area of AI, knowledge needed for reasoning can be represented using various kinds of representation systems. The natural problem posed by this fact is that of possible incompatibility between heterogeneous systems as far as communication between them is concerned. This imposes a limitation on the possibility of extending smaller knowledge bases to larger ones. In order to facilitate a common platform for exchange across the systems unified formalisms for the different approaches to knowledge representation are required. This was the motivation for Dung [11] to propose in his 1995 paper an approach that later came to be known as an abstract argumentation framework. Roughly speaking, Dung's arguments are abstract entities which are related to each other by the means of conflicts between them. An intuitive graphical representation of Dung style framework is a graph whose nodes stand for arguments and whose edges stand for conflicts. A framework postulated this way is on one hand too general to be used on its own, but on the other hand it is general enough as to allow for varied extensions increasing its expressiveness, which indeed have been proposed. They include value-based argumentation frameworks by Bench-Capon et al. [6], preference-based argumentation frameworks by Amgoud and Cayrol [1] and bipolar argumentation frameworks by Brewka and Woltran [7], to name a few. The present thesis is concerned with yet another variation of Dung's framework: the concept of splitting. It was developed by Baumann [4] with one of the underlying purposes being that the computation time in frameworks which have been split into two parts and then computed separately may show some improvement in comparison to their variant without splitting. It was one of the main tasks of my work to develop an efficient algorithm for the splitting operation based on the theoretical framework given in [4]. On the other hand I hoped to confirm the expectation that splitting can indeed make a computation perform better
    corecore