7,587 research outputs found
Modular Logic Programming: Full Compositionality and Conflict Handling for Practical Reasoning
With the recent development of a new ubiquitous nature of data and the profusity
of available knowledge, there is nowadays the need to reason from multiple sources
of often incomplete and uncertain knowledge. Our goal was to provide a way to
combine declarative knowledge bases – represented as logic programming modules
under the answer set semantics – as well as the individual results one already inferred
from them, without having to recalculate the results for their composition and without
having to explicitly know the original logic programming encodings that produced
such results. This posed us many challenges such as how to deal with fundamental
problems of modular frameworks for logic programming, namely how to define a
general compositional semantics that allows us to compose unrestricted modules.
Building upon existing logic programming approaches, we devised a framework
capable of composing generic logic programming modules while preserving the
crucial property of compositionality, which informally means that the combination of
models of individual modules are the models of the union of modules. We are also
still able to reason in the presence of knowledge containing incoherencies, which is
informally characterised by a logic program that does not have an answer set due
to cyclic dependencies of an atom from its default negation. In this thesis we also
discuss how the same approach can be extended to deal with probabilistic knowledge
in a modular and compositional way.
We depart from the Modular Logic Programming approach in Oikarinen &
Janhunen (2008); Janhunen et al. (2009) which achieved a restricted form of compositionality
of answer set programming modules. We aim at generalising this
framework of modular logic programming and start by lifting restrictive conditions
that were originally imposed, and use alternative ways of combining these (so called
by us) Generalised Modular Logic Programs. We then deal with conflicts arising
in generalised modular logic programming and provide modular justifications and
debugging for the generalised modular logic programming setting, where justification
models answer the question: Why is a given interpretation indeed an Answer Set?
and Debugging models answer the question: Why is a given interpretation not an
Answer Set?
In summary, our research deals with the problematic of formally devising a
generic modular logic programming framework, providing: operators for combining
arbitrary modular logic programs together with a compositional semantics; We
characterise conflicts that occur when composing access control policies, which are
generalisable to our context of generalised modular logic programming, and ways of
dealing with them syntactically: provided a unification for justification and debugging
of logic programs; and semantically: provide a new semantics capable of dealing
with incoherences. We also provide an extension of modular logic programming
to a probabilistic setting. These goals are already covered with published work. A prototypical tool implementing the unification of justifications and debugging is
available for download from http://cptkirk.sourceforge.net
Justifications and Blocking Sets in a Rule-Based Answer Set Computation
Notions of justifications for logic programs under answer set semantics have been recently studied for atom-based approaches or argumentation approaches. The paper addresses the question in a rule-based answer set computation: the search algorithm does not guess on the truth or falsity of an atom but on the application or non application of a non monotonic rule. In this view, justifications are sets of ground rules with particular properties. Properties of these justifications are established; in particular the notion of blocking set (a reason incompatible with an answer set) is defined, that permits to explain computation failures. Backjumping, learning, debugging and explanations are possible applications
Transforming floundering into success
We show how logic programs with "delays" can be transformed to programs
without delays in a way which preserves information concerning floundering
(also known as deadlock). This allows a declarative (model-theoretic),
bottom-up or goal independent approach to be used for analysis and debugging of
properties related to floundering. We rely on some previously introduced
restrictions on delay primitives and a key observation which allows properties
such as groundness to be analysed by approximating the (ground) success set.
This paper is to appear in Theory and Practice of Logic Programming (TPLP).
Keywords: Floundering, delays, coroutining, program analysis, abstract
interpretation, program transformation, declarative debuggingComment: Number of pages: 24 Number of figures: 9 Number of tables: non
Data Provenance Inference in Logic Programming: Reducing Effort of Instance-driven Debugging
Data provenance allows scientists in different domains validating their models and algorithms to find out anomalies and unexpected behaviors. In previous works, we described on-the-fly interpretation of (Python) scripts to build workflow provenance graph automatically and then infer fine-grained provenance information based on the workflow provenance graph and the availability of data. To broaden the scope of our approach and demonstrate its viability, in this paper we extend it beyond procedural languages, to be used for purely declarative languages such as logic programming under the stable model semantics. For experiments and validation, we use the Answer Set Programming solver oClingo, which makes it possible to formulate and solve stream reasoning problems in a purely declarative fashion. We demonstrate how the benefits of the provenance inference over the explicit provenance still holds in a declarative setting, and we briefly discuss the potential impact for declarative programming, in particular for instance-driven debugging of the model in declarative problem solving
Correctness and completeness of logic programs
We discuss proving correctness and completeness of definite clause logic
programs. We propose a method for proving completeness, while for proving
correctness we employ a method which should be well known but is often
neglected. Also, we show how to prove completeness and correctness in the
presence of SLD-tree pruning, and point out that approximate specifications
simplify specifications and proofs.
We compare the proof methods to declarative diagnosis (algorithmic
debugging), showing that approximate specifications eliminate a major drawback
of the latter. We argue that our proof methods reflect natural declarative
thinking about programs, and that they can be used, formally or informally, in
every-day programming.Comment: 29 pages, 2 figures; with editorial modifications, small corrections
and extensions. arXiv admin note: text overlap with arXiv:1411.3015. Overlaps
explained in "Related Work" (p. 21
- …