3,908 research outputs found
Choice Disjunctive Queries in Logic Programming
One of the long-standing research problems on logic programming is to treat
the cut predicate in a logical, high-level way. We argue that this problem can
be solved by adopting linear logic and choice-disjunctive goal formulas of the
form G_0 \add G_1 where are goals. These goals have the following
intended semantics: the true disjunct and execute where , while the unchosen disjunct. Note that only
one goal can remain alive during execution. These goals thus allow us to
specify mutually exclusive tasks in a high-level way.Comment: 8 pages. Implementation scheme from the previous version contains an
error. A new, correct implementation scheme is describe
Towards Interactive Logic Programming
Linear logic programming uses provability as the basis for computation. In
the operational semantics based on provability, executing the
additive-conjunctive goal from a program simply terminates
with a success if both and are solvable from . This is an
unsatisfactory situation, as a central action of \& -- the action of choosing
either or by the user -- is missing in this semantics.
We propose to modify the operational semantics above to allow for more active
participation from the user. We illustrate our idea via muProlog, an extension
of Prolog with additive goals.Comment: 8 pages. It describes two execution models for interactive logic
programmin
Experiences with Some Benchmarks for Deductive Databases and Implementations of Bottom-Up Evaluation
OpenRuleBench is a large benchmark suite for rule engines, which includes
deductive databases. We previously proposed a translation of Datalog to C++
based on a method that "pushes" derived tuples immediately to places where they
are used. In this paper, we report performance results of various
implementation variants of this method compared to XSB, YAP and DLV. We study
only a fraction of the OpenRuleBench problems, but we give a quite detailed
analysis of each such task and the factors which influence performance. The
results not only show the potential of our method and implementation approach,
but could be valuable for anybody implementing systems which should be able to
execute tasks of the discussed types.Comment: In Proceedings WLP'15/'16/WFLP'16, arXiv:1701.0014
Datalog as a parallel general purpose programming language
The increasing available parallelism of computers demands new programming languages that make parallel programming dramatically easier and less error prone. It is proposed that datalog with negation and timestamps is a suitable basis for a general purpose programming language for sequential, parallel and distributed computers.
This paper develops a fully incremental bottom-up interpreter for datalog that supports a wide range of execution strategies, with trade-offs affecting efficiency, parallelism and control of resource usage. Examples show how the language can accept real-time external inputs and outputs, and mimic assignment, all without departing from its pure logical semantics
- ā¦