A framework for compiling preferences in logic programs

  • Authors:
  • James P. Delgrande;Torsten Schaub;Hans Tompits

  • Affiliations:
  • School of Computing Science, Simon Fraser University, Burnaby, B.C., Canada V5A 1S6 (e-mail: jim@cs.sfu.ca);Institut für Informatik, Universität Potsdam, Postfach 90 03 27, D–14439 Potsdam, Germany (e-mail: torsten@cs.uni-potsdam.de);Institut für Informationssysteme 184/3, Technische Universität Wien, Favoritenstraße 9–11, A–1040 Vienna, Austria (e-mail: tompits@kr.tuwien.ac.at)

  • Venue:
  • Theory and Practice of Logic Programming
  • Year:
  • 2003

Quantified Score

Hi-index 0.00

Visualization

Abstract

We introduce a methodology and framework for expressing general preference information in logic programming under the answer set semantics. An ordered logic program is an extended logic program in which rules are named by unique terms, and in which preferences among rules are given by a set of atoms of form s ≺ t where s and t are names. An ordered logic program is transformed into a second, regular, extended logic program wherein the preferences are respected, in that the answer sets obtained in the transformed program correspond with the preferred answer sets of the original program. Our approach allows the specification of dynamic orderings, in which preferences can appear arbitrarily within a program. Static orderings (in which preferences are external to a logic program) are a trivial restriction of the general dynamic case. First, we develop a specific approach to reasoning with preferences, wherein the preference ordering specifies the order in which rules are to be applied. We then demonstrate the wide range of applicability of our framework by showing how other approaches, among them that of Brewka and Eiter, can be captured within our framework. Since the result of each of these transformations is an extended logic program, we can make use of existing implementations, such as dlv and smodels. To this end, we have developed a publicly available compiler as a front-end for these programming systems.