{"id":2322,"date":"2012-09-30T00:00:43","date_gmt":"2012-09-30T06:00:43","guid":{"rendered":"http:\/\/www.cs.nmsu.edu\/ALP\/?p=2322"},"modified":"2012-10-02T14:22:08","modified_gmt":"2012-10-02T20:22:08","slug":"constraint-answer-set-programming","status":"publish","type":"post","link":"https:\/\/logicprogramming.org\/2012\/09\/constraint-answer-set-programming\/","title":{"rendered":"Constraint Answer Set Programming"},"content":{"rendered":"<p>By<br \/>\n<strong>Yuliya Lierler<\/strong><br \/>\nUniversity of Nebraska at Omaha<\/p>\n<p>We are greatful to Marcello Balduccini, Broes de Cat, Vladimir Lifschitz, and Peter Sch\u00fcller for valuable comments.<\/p>\n<p><a href=\"https:\/\/logicprogramming.org\/wp-content\/uploads\/2012\/09\/casp-alp.pdf\">PDF Version<\/a><\/p>\n<h3 class=\"likesectionHead\"><a id=\"x1-1000\"><\/a>Introduction<\/h3>\n<p><!--l. 20--><\/p>\n<p class=\"noindent\">Constraint answer set programming (CASP) is a novel, promising direction of research whose roots go back to propositional satisfiability (SAT). SAT solvers are efficient tools for solving boolean constraint satisfaction problems that arise in different areas of computer science, including software and hardware verification. Some constraints are more naturally expressed by non-boolean constructs. Satisfiability modulo theories (SMT) extends boolean satisfiability by the integration of non-boolean symbols defined by a background theory in another formalism, such as a constraint processing language. Answer set programming (ASP) extends computational methods of SAT in yet another way, inspired by ideas from knowledge representation, logic programming, and nonmonotonic reasoning. As a declarative programming paradigm, it provides a rich, simple modeling language that, among other features, incorporates recursive definitions. Answer set programming languages also use variables; software tools called grounders are used as front ends of answer set solvers to eliminate variables, whereas SAT-like procedures form their back-ends.<br \/>\n<!--l. 43--><\/p>\n<p class=\"indent\">Constraint answer set programming draws on both of these extensions of SAT technology: it integrates answer set programming with constraint processing.<\/p>\n<p>This new area has already demonstrated promising results, including the development of the CASP solvers <span class=\"cmcsc-10\"><span class=\"small-caps\">a<\/span><span class=\"small-caps\">c<\/span><span class=\"small-caps\">s<\/span><span class=\"small-caps\">o<\/span><span class=\"small-caps\">l<\/span><span class=\"small-caps\">v<\/span><span class=\"small-caps\">e<\/span><span class=\"small-caps\">r<\/span><\/span> <span class=\"cite\">[<a href=\"#Xmel08\">11<\/a>]<\/span> (Texas Tech University),<span class=\"cmcsc-10\"><span class=\"small-caps\"> c<\/span><span class=\"small-caps\">l<\/span><span class=\"small-caps\">i<\/span><span class=\"small-caps\">n<\/span><span class=\"small-caps\">g<\/span><span class=\"small-caps\">c<\/span><span class=\"small-caps\">o<\/span><span class=\"small-caps\">n<\/span><\/span><span class=\"footnote-mark\"><a href=\"casp-alp2.html#fn1x0\"><sup> <\/sup><\/a><\/span><span class=\"cite\">[<a href=\"#Xgeb09\">7<\/a>]<\/span> (Potsdam University, Germany), <span class=\"cmcsc-10\"><span class=\"small-caps\">e<\/span><span class=\"small-caps\">z<\/span><span class=\"small-caps\">c<\/span><span class=\"small-caps\">s<\/span><span class=\"small-caps\">p<\/span><\/span><span class=\"footnote-mark\"><a href=\"casp-alp3.html#fn2x0\"><sup> <\/sup><\/a><\/span><span class=\"cite\">[<a href=\"#Xbal09a\">1<\/a>]<\/span> (KODAK), <span class=\"cmcsc-10\"><span class=\"small-caps\">i<\/span><span class=\"small-caps\">d<\/span><span class=\"small-caps\">p <\/span><\/span><span class=\"cite\">[<a href=\"#Xidp\">15<\/a>]<\/span> (KU Leuven), <span class=\"cmcsc-10\"><span class=\"small-caps\">m<\/span><span class=\"small-caps\">i<\/span><span class=\"small-caps\">n<\/span><span class=\"small-caps\">g<\/span><span class=\"small-caps\">o <\/span><\/span><span class=\"cite\">[<a href=\"#Xliu12\">10<\/a>]<\/span> (Aalto University, Finland). CASP is a new, powerful paradigm for declarative programming that provides new modeling features for answer set programming and also improves grounding and solving performance by delegating processing of constraints over large and possibly infinite domains to specialized systems. As a result CASP opens new horizons for declarative programming applications. The origins of this work go back to\u00a0<span class=\"cite\">[<a href=\"#XDBLP:conf\/iclp\/BaseliceBG05\">2<\/a>]<\/span>.<br \/>\n<!--l. 66--><\/p>\n<p class=\"noindent\"><span class=\"cmbx-10\">Related Work: <\/span>HEX-Programs\u00a0<span class=\"cite\">[<a href=\"#Xebdfik2009-frocos\">3<\/a>]<\/span> integrate logic programs under answer set semantics with external computation sources via <span class=\"cmti-10\">external atoms<\/span>. They were motivated by the need to interface ASP with external computation sources, for example, to allow the synergy of ASP and description logic computations within the context of the semantic web. CASP shares a lot in common with HEX-programs. System<span class=\"cmcsc-10\"><span class=\"small-caps\"> d<\/span><span class=\"small-caps\">l<\/span><span class=\"small-caps\">v<\/span><span class=\"small-caps\">h<\/span><span class=\"small-caps\">e<\/span><span class=\"small-caps\">x<\/span><\/span><span class=\"footnote-mark\"><a href=\"casp-alp6.html#fn5x0\"><sup>5<\/sup><\/a><\/span> <span class=\"cite\">[<a href=\"#Xeit05a\">4<\/a>]<\/span> computes models of such programs. It allows defining plug-ins for inference on external atoms and as such can be used as a general framework for developing CASP solvers (but it does not provide any specific computational mechanism by default).<\/p>\n<h3 class=\"sectionHead\"><span class=\"titlemark\">1 <\/span> <a id=\"x1-20001\"><\/a>Logic Programs with Constraint Atoms<\/h3>\n<p><!--l. 84--><\/p>\n<p class=\"noindent\">A <span class=\"cmsl-10\">regular program <\/span>is a finite set of rules of the form<\/p>\n<table class=\"equation\">\n<tbody>\n<tr>\n<td><img decoding=\"async\" class=\"math-display\" src=\"casp-alp0x.png\" alt=\"a0 \u2190 a1,...,al,not al+1,...,not am, not not am+1,...,not not an, \" \/><a id=\"x1-2001r1\"><\/a><\/td>\n<td class=\"equation-label\">(1)<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><!--l. 90--><\/p>\n<p class=\"nopar\">where <span class=\"cmmi-10\">a<\/span><sub><span class=\"cmr-7\">0<\/span><\/sub> is <span class=\"cmsy-10\">\u22a5 <\/span>or an atom, and each <span class=\"cmmi-10\">a<\/span><sub><span class=\"cmmi-7\">i<\/span><\/sub> (1 <span class=\"cmsy-10\">\u2264 <\/span><span class=\"cmmi-10\">i <\/span><span class=\"cmsy-10\">\u2264 <\/span><span class=\"cmmi-10\">n<\/span>) is an atom. This is a special case of programs with nested expressions <span class=\"cite\">[<a href=\"#Xlif99d\">9<\/a>]<\/span>. We refer the reader to the paper by Lifschitz et al.<span class=\"cite\">[<a href=\"#Xlif99d\">9<\/a>]<\/span> for details on the definition of an answer set of a logic program. A<em> <span class=\"cmti-10\">choice rule<\/span> <\/em>construct <span class=\"cmsy-10\">{<\/span><span class=\"cmmi-10\">a<\/span><span class=\"cmsy-10\">}<\/span> <span class=\"cite\">[<a href=\"#Xnie00\">12<\/a>]<\/span> of the <span class=\"cmcsc-10\"><span class=\"small-caps\">l<\/span><span class=\"small-caps\">p<\/span><span class=\"small-caps\">a<\/span><span class=\"small-caps\">r<\/span><span class=\"small-caps\">s<\/span><span class=\"small-caps\">e<\/span> <\/span>language can be seen as an abbreviation for a rule <span class=\"cmmi-10\">a <\/span><span class=\"cmsy-10\">\u2190<\/span> <span class=\"cmmi-10\"> not<\/span><span class=\"cmmi-10\"> not<\/span><span class=\"cmmi-10\"> a<\/span> <span class=\"cite\">[<a href=\"#Xfer05b\">5<\/a>]<\/span>. We adopt this abbreviation in the rest of the paper.<br \/>\n<!--l. 105--><\/p>\n<p class=\"indent\">A <em>constraint satisfaction problem<\/em> (CSP) is defined as a triple <span class=\"cmsy-10\">\u27e8<\/span><span class=\"cmmi-10\">X,D,C<\/span><span class=\"cmsy-10\">\u27e9<\/span>, where <span class=\"cmmi-10\">X<\/span> is a set of variables, <span class=\"cmmi-10\">D <\/span>is a domain of values, and <span class=\"cmmi-10\">C <\/span>is a set of constraints. Every constraint is a pair <span class=\"cmsy-10\">\u27e8<\/span><span class=\"cmmi-10\">t,R<\/span><span class=\"cmsy-10\">\u27e9<\/span>, where <span class=\"cmmi-10\">t <\/span>is an <em><span class=\"cmmi-10\">n<\/span><\/em>-tuple of variables and <span class=\"cmmi-10\">R <\/span>is an <span class=\"cmmi-10\">n<\/span>-ary relation on <span class=\"cmmi-10\">D<\/span>. An <span class=\"cmti-10\">evaluation <\/span>of the variables is a function from the set of variables to the domain of values, <span class=\"cmmi-10\">\u03bd <\/span>: <span class=\"cmmi-10\">X <\/span><span class=\"cmsy-10\">\u2192 <\/span><span class=\"cmmi-10\">D<\/span>. An evaluation\u00a0<span class=\"cmmi-10\">\u03bd<em> <\/em><\/span><span class=\"cmti-10\"><em>satisfies<\/em> <\/span>a constraint<span class=\"cmsy-10\"> \u27e8<\/span>(<span class=\"cmmi-10\">x<\/span><sub><span class=\"cmr-7\">1<\/span><\/sub><span class=\"cmmi-10\">,<\/span><span class=\"cmmi-10\">\u2026<\/span><span class=\"cmmi-10\">,x<\/span><sub><span class=\"cmmi-7\">n<\/span><\/sub>)<span class=\"cmmi-10\">,R<\/span><span class=\"cmsy-10\">\u27e9 <\/span>if (<span class=\"cmmi-10\">v<\/span>(<span class=\"cmmi-10\">x<\/span><sub><span class=\"cmr-7\">1<\/span><\/sub>)<span class=\"cmmi-10\">,<\/span><span class=\"cmmi-10\">\u2026<\/span><span class=\"cmmi-10\">,v<\/span>(<span class=\"cmmi-10\">x<\/span><sub><span class=\"cmmi-7\">n<\/span><\/sub>)) <span class=\"cmsy-10\">\u2208 <\/span><span class=\"cmmi-10\">R<\/span>. A <span class=\"cmti-10\"><em>solution<\/em> <\/span>is an evaluation that satisfies all constraints.<br \/>\n<!--l. 117--><\/p>\n<p class=\"indent\">Consider an alphabet consisting of regular and constraint atoms, denoted by <strong><em>A<\/em><\/strong> and <strong><em>C<\/em><\/strong><span class=\"cmsy-10\"> <\/span>respectively. By <strong>C~<\/strong> we denote the set of all literals over<strong> C<\/strong>. The constraint literals are identified with constraints via a function <span class=\"cmmi-10\">\u03b3 <\/span>: <strong>C~<\/strong><span class=\"cmsy-10\">\u2192 <\/span><strong>C<\/strong><span class=\"cmmi-10\"> <\/span>so that for any literal<span class=\"cmmi-10\"> l<\/span>, <span class=\"cmmi-10\"> <\/span>\u03b3(<span class=\"cmmi-10\">l<\/span>) has a solution if and only if \u03b3(<span class=\"overline\"><span class=\"cmmi-10\">-l<\/span><\/span>) does not have one (where <span class=\"overline\"><span class=\"cmmi-10\">-l<\/span><\/span> denotes a complement of <span class=\"cmmi-10\">l<\/span>). For a set <span class=\"cmmi-10\">Y <\/span>of constraint literals over <strong>C,<\/strong> by <span class=\"cmmi-10\">\u03b3<\/span>(<span class=\"cmmi-10\">Y <\/span>) we denote a set of corresponding constraints, i.e., <span class=\"cmsy-10\">{<\/span><span class=\"cmmi-10\">\u03b3<\/span>(<span class=\"cmmi-10\">c<\/span>)<span class=\"cmsy-10\">|<\/span><span class=\"cmmi-10\">c <\/span><span class=\"cmsy-10\">\u2208 <\/span><span class=\"cmmi-10\">Y <\/span><span class=\"cmsy-10\">}<\/span>. Furthermore, each variable in <span class=\"cmmi-10\">\u03b3<\/span>(<strong>C~<\/strong>) is associated with a domain. For a set <span class=\"cmmi-10\">M <\/span>of literals, by\u00a0<span class=\"cmmi-10\">M<\/span><sup><span class=\"cmr-7\">+<\/span><\/sup> and<span class=\"cmmi-10\"> M<\/span><sup>C<\/sup><span class=\"cmmi-10\"> we denote the set of positive literals in <\/span>M<span class=\"cmmi-10\"> and the set of constraint literals over <\/span><strong>C <\/strong><span class=\"cmmi-10\">in <\/span>M<span class=\"cmmi-10\">, respectively.<\/span><br \/>\n<!--l. 133--><\/p>\n<p class=\"indent\">A <span class=\"cmti-10\">logic program with constraint atoms <\/span>is a regular logic program over an extended alphabet <strong>A<\/strong><span class=\"cmsy-10\"> \u222a <\/span><strong>C <\/strong><span class=\"cmsy-10\"> <\/span>such that <span class=\"cmmi-10\">a<\/span><sub><span class=\"cmr-7\">0<\/span><\/sub> is <span class=\"cmsy-10\">\u22a5 <\/span>or <span class=\"cmmi-10\">a<\/span><sub><span class=\"cmr-7\">0<\/span><\/sub> <span class=\"cmsy-10\">\u2208<strong> A<\/strong><\/span>. Given a logic program with constraint atoms \u03a0, by \u03a0<sup>C<\/sup><span class=\"cmmi-10\"> we denote <\/span>\u03a0 extended with choice rules <span class=\"cmsy-10\">{<\/span><span class=\"cmmi-10\">c<\/span><span class=\"cmsy-10\">} <\/span>for each constraint atom <span class=\"cmmi-10\">c <\/span>occurring in \u03a0. We say that a consistent and complete set <span class=\"cmmi-10\">M <\/span>of literals over atoms of \u03a0 is an answer set of \u03a0 if (i) <span class=\"cmmi-10\">M<\/span><sup><span class=\"cmr-7\">+<\/span><\/sup> is an answer set of \u03a0<sup>C <\/sup><span class=\"cmmi-10\">and<\/span> (<span class=\"cmmi-10\">ii<\/span>) <span class=\"cmmi-10\">\u03b3<\/span>(\u03a0<sup>C<\/sup><sup><!--l. 143--><\/sup>) <span class=\"cmmi-10\">has a solution.<\/span><br \/>\n<!--l. 146--><\/p>\n<p class=\"indent\">For example, let \u03a0 be the program (2)<\/p>\n<pre class=\"indent\">am &lt;- X &lt; 12<\/pre>\n<pre class=\"indent\">lightOn &lt;- switch, not am<\/pre>\n<pre class=\"indent\">{switch}<\/pre>\n<pre class=\"indent\">\u22a5 &lt;- not lightOn<\/pre>\n<p>Intuitively, this program states that (a) <span class=\"cmti-10\">light <\/span>is <span class=\"cmti-10\">on <\/span>only if an action of <span class=\"cmti-10\">switch <\/span>occurs during the <span class=\"cmti-10\">pm <\/span>hours and (b) <span class=\"cmti-10\">light <\/span>is <span class=\"cmti-10\">on <\/span>(according to the last rule in the program). Consider a domain of <span class=\"cmmi-10\">X <\/span>to be integers from 0 till 24. It is easy to see that a set\u00a0\u00a0 <img decoding=\"async\" class=\"math-display\" src=\"casp-alp5x.png\" alt=\"{switch,lightOn,\u00ac am, \u00acX &lt; 12} \" \/> forms the only answer set of program\u00a0(<a href=\"#x1-2002r2\">2<!--tex4ht:ref: ex:acp --><\/a>).<\/p>\n<p><!--l. 166--><\/p>\n<p class=\"noindent\">\n<h3 class=\"sectionHead\"><span class=\"titlemark\">2 <\/span> <a id=\"x1-30002\"><\/a>On the relation of constraint answer set languages and solvers<\/h3>\n<p><!--l. 167--><\/p>\n<p>In the introduction, we listed a number of CASP systems <span class=\"cmcsc-10\"><span class=\"small-caps\">a<\/span><span class=\"small-caps\">c<\/span><span class=\"small-caps\">s<\/span><span class=\"small-caps\">o<\/span><span class=\"small-caps\">l<\/span><span class=\"small-caps\">v<\/span><span class=\"small-caps\">e<\/span><span class=\"small-caps\">r<\/span><\/span>, <span class=\"cmcsc-10\"><span class=\"small-caps\">c<\/span><span class=\"small-caps\">l<\/span><span class=\"small-caps\">i<\/span><span class=\"small-caps\">n<\/span><span class=\"small-caps\">g<\/span><span class=\"small-caps\">c<\/span><span class=\"small-caps\">o<\/span><span class=\"small-caps\">n<\/span><\/span>,<span class=\"cmcsc-10\"><span class=\"small-caps\"> e<\/span><span class=\"small-caps\">z<\/span><span class=\"small-caps\">c<\/span><span class=\"small-caps\">s<\/span><span class=\"small-caps\">p<\/span><\/span>, <span class=\"cmcsc-10\"><span class=\"small-caps\">i<\/span><span class=\"small-caps\">d<\/span><span class=\"small-caps\">p<\/span><\/span>, <span class=\"cmcsc-10\"><span class=\"small-caps\">m<\/span><span class=\"small-caps\">i<\/span><span class=\"small-caps\">n<\/span><span class=\"small-caps\">g<\/span><span class=\"small-caps\">o<\/span> <\/span>that were developed in recent years. The core of the languages of these systems is captured by the definition of a logic program with constraint atoms presented here. Yet, relating these languages is not an easy task. One difficulty lies in the fact that these languages are introduced together with specific system archetecture in mind that rely on various ASP\/CSP\/CLP\/SMT technology. The syntactic differences that stam from technological differences stand on the way of clear understanding of key features of the languages. Relating CASP systems formally is even more complex task. The variations in underlying technologies complicate clear articulation of their similarities and differences. For example, the CASP solver <span class=\"cmcsc-10\"><span class=\"small-caps\">c<\/span><span class=\"small-caps\">l<\/span><span class=\"small-caps\">i<\/span><span class=\"small-caps\">n<\/span><span class=\"small-caps\">g<\/span><span class=\"small-caps\">c<\/span><span class=\"small-caps\">o<\/span><span class=\"small-caps\">n<\/span><\/span> <span class=\"cite\">[<a href=\"#Xgeb09\">7<\/a>]<\/span> is developed using an ASP solver<span class=\"cmcsc-10\"><span class=\"small-caps\"> c<\/span><span class=\"small-caps\">l<\/span><span class=\"small-caps\">a<\/span><span class=\"small-caps\">s<\/span><span class=\"small-caps\">p<\/span><\/span> <span class=\"cite\">[<a href=\"#Xgeb07\">6<\/a>]<\/span> and a constraint solver <span class=\"cmcsc-10\"><span class=\"small-caps\">g<\/span><span class=\"small-caps\">e<\/span><span class=\"small-caps\">c<\/span><span class=\"small-caps\">o<\/span><span class=\"small-caps\">d<\/span><span class=\"small-caps\">e<\/span> <\/span><span class=\"cite\">[<a href=\"#Xgecode\">14<\/a>]<\/span>. The main building blocks of the CASP solver <span class=\"cmcsc-10\"><span class=\"small-caps\">a<\/span><span class=\"small-caps\">c<\/span><span class=\"small-caps\">s<\/span><span class=\"small-caps\">o<\/span><span class=\"small-caps\">l<\/span><span class=\"small-caps\">v<\/span><span class=\"small-caps\">e<\/span><span class=\"small-caps\">r<\/span><\/span> <span class=\"cite\">[<a href=\"#Xmel08\">11<\/a>]<\/span> are the ASP system <span class=\"cmcsc-10\"><span class=\"small-caps\">s<\/span><span class=\"small-caps\">m<\/span><span class=\"small-caps\">o<\/span><span class=\"small-caps\">d<\/span><span class=\"small-caps\">e<\/span><span class=\"small-caps\">l<\/span><span class=\"small-caps\">s<\/span> <\/span><span class=\"cite\">[<a href=\"#Xnie00\">12<\/a>]<\/span> and <span class=\"cmcsc-10\"><span class=\"small-caps\">s<\/span><span class=\"small-caps\">i<\/span><span class=\"small-caps\">c<\/span><span class=\"small-caps\">s<\/span><span class=\"small-caps\">t<\/span><span class=\"small-caps\">u<\/span><span class=\"small-caps\">s<\/span><\/span><span class=\"cmcsc-10\"><span class=\"small-caps\"> p<\/span><span class=\"small-caps\">r<\/span><span class=\"small-caps\">o<\/span><span class=\"small-caps\">l<\/span><span class=\"small-caps\">o<\/span><span class=\"small-caps\">g<\/span><\/span><span class=\"footnote-mark\"><a href=\"casp-alp7.html#fn6x0\"><sup>6<\/sup><\/a><\/span> . In addition, the CASP solvers adopt different communication schemes among their heterogeneous solving components. For instance, the system <span class=\"cmcsc-10\"><span class=\"small-caps\">e<\/span><span class=\"small-caps\">z<\/span><span class=\"small-caps\">c<\/span><span class=\"small-caps\">s<\/span><span class=\"small-caps\">p<\/span> <\/span>relies on<span class=\"cmti-10\"> blackbox <\/span>integration of ASP and CSP tools in order to compute the answer sets of an <span class=\"cmcsc-10\"><span class=\"small-caps\">e<\/span><span class=\"small-caps\">z<\/span><span class=\"small-caps\">c<\/span><span class=\"small-caps\">s<\/span><span class=\"small-caps\">p<\/span> <\/span>program\u00a0<span class=\"cite\">[<a href=\"#Xbal09a\">1<\/a>]<\/span>. Systems <span class=\"cmcsc-10\"><span class=\"small-caps\">a<\/span><span class=\"small-caps\">c<\/span><span class=\"small-caps\">s<\/span><span class=\"small-caps\">o<\/span><span class=\"small-caps\">l<\/span><span class=\"small-caps\">v<\/span><span class=\"small-caps\">e<\/span><span class=\"small-caps\">r<\/span><\/span>, <span class=\"cmcsc-10\"><span class=\"small-caps\">c<\/span><span class=\"small-caps\">l<\/span><span class=\"small-caps\">i<\/span><span class=\"small-caps\">n<\/span><span class=\"small-caps\">g<\/span><span class=\"small-caps\">c<\/span><span class=\"small-caps\">o<\/span><span class=\"small-caps\">n<\/span><\/span>, <span class=\"cmcsc-10\"><span class=\"small-caps\">i<\/span><span class=\"small-caps\">d<\/span><span class=\"small-caps\">p<\/span> <\/span>promote tighter integration of multiple automated reasoning methods. The broad attention to CASP paradigms suggests a need for a principled and general study of methods to develop unifying terminology and formalisms suitable to capture variants of the languages and solvers. The work by Lierler\u00a0<span class=\"cite\">[<a href=\"#Xlier12\">8<\/a>]<\/span> can be seen as a step in this direction. It presents a formal account that illustrates a precise relationship between the languages of <span class=\"cmcsc-10\"><span class=\"small-caps\">a<\/span><span class=\"small-caps\">c<\/span><span class=\"small-caps\">s<\/span><span class=\"small-caps\">o<\/span><span class=\"small-caps\">l<\/span><span class=\"small-caps\">v<\/span><span class=\"small-caps\">e<\/span><span class=\"small-caps\">r<\/span> <\/span>and<span class=\"cmcsc-10\"><span class=\"small-caps\"> c<\/span><span class=\"small-caps\">l<\/span><span class=\"small-caps\">i<\/span><span class=\"small-caps\">n<\/span><span class=\"small-caps\">g<\/span><span class=\"small-caps\">c<\/span><span class=\"small-caps\">o<\/span><span class=\"small-caps\">n<\/span> <\/span>as well as between the respective systems. Usually backtrack search procedures (Davis-Putnam-Logemann-Loveland (DPLL)-like procedures) that form a backbone of CASP computational methods are described in terms of pseudocode. In\u00a0<span class=\"cite\">[<a href=\"#Xnie06\">13<\/a>]<\/span>, the authors proposed an alternative approach to describing DPLL-like algorithms. They introduced an abstract framework that captures what states of computation are, and what transitions between states are allowed. In this way, it defines a directed graph such that every execution of DPLL corresponds to a path in this graph. Some edges may correspond to a propagation steps, some to branching, some to backtracking. This approach allows us to model a DPLL-like algorithm by a mathematically simple and elegant object, graph, rather than a collection of pseudocode statements. An abstract framework of the sort served as the main tool for performing precise formal analyses relating such constraint answer set solvers as <span class=\"cmcsc-10\"><span class=\"small-caps\">a<\/span><span class=\"small-caps\">c<\/span><span class=\"small-caps\">s<\/span><span class=\"small-caps\">o<\/span><span class=\"small-caps\">l<\/span><span class=\"small-caps\">v<\/span><span class=\"small-caps\">e<\/span><span class=\"small-caps\">r<\/span> <\/span>and<span class=\"cmcsc-10\"><span class=\"small-caps\"> c<\/span><span class=\"small-caps\">l<\/span><span class=\"small-caps\">i<\/span><span class=\"small-caps\">n<\/span><span class=\"small-caps\">g<\/span><span class=\"small-caps\">c<\/span><span class=\"small-caps\">o<\/span><span class=\"small-caps\">n<\/span><\/span> <span class=\"cite\">[<a href=\"#Xlier12\">8<\/a>]<\/span>.<\/p>\n<h3 class=\"likesectionHead\"><a id=\"x1-40002\"><\/a>References<\/h3>\n<p><!--l. 1--><\/p>\n<p class=\"noindent\">\n<div class=\"thebibliography\">\n<p class=\"bibitem\"><span class=\"biblabel\"><br \/>\n[1]<span class=\"bibsp\"> <\/span><\/span>Marcello Balduccini.  Representing constraint satisfaction problems in answer set programming. In <span class=\"cmti-10\">Proceedings of ICLP\u201909 Workshop on Answer<\/span><span class=\"cmti-10\"> Set Programming and Other Computing Paradigms (ASPOCP\u201909)<\/span>, 2009.<\/p>\n<p class=\"bibitem\"><span class=\"biblabel\"><br \/>\n[2]<span class=\"bibsp\"> <\/span><\/span>Sabrina Baselice, Piero\u00a0A. Bonatti, and Michael Gelfond. Towards an integration of answer set and constraint solving. In Maurizio Gabbrielli and Gopal Gupta, editors, <span class=\"cmti-10\">ICLP<\/span>, volume 3668 of <span class=\"cmti-10\">Lecture Notes in Computer<\/span><span class=\"cmti-10\"> Science<\/span>, pages 52\u201366. Springer, 2005.<\/p>\n<p><span class=\"biblabel\"><br \/>\n[3]<span class=\"bibsp\"> <\/span><\/span>Thomas                                                                           Eiter, Gerhard  Brewka,  Minh  Dao-Tran,  Michael  Fink,  Giovambattista  Ianni, and Thomas Krennwallner.  Combining Nonmonotonic Knowledge Bases with External Sources. In Silvio Ghilardi and Roberto Sebastiani, editors,<span class=\"cmti-10\"> 7th International Symposium on Frontiers of Combining Systems (FroCos<\/span><span class=\"cmti-10\"> 2009)<\/span>, volume 5749 of <span class=\"cmti-10\">LNAI<\/span>, pages 18\u201342. Springer, September 2009.<\/p>\n<p class=\"bibitem\"><span class=\"biblabel\"><br \/>\n[4]<span class=\"bibsp\"> <\/span><\/span>Thomas Eiter, Giovambattista Ianni, Roman Schindlauer, and Hans Tompits.   A uniform integration of higher-order reasoning and external evaluations in answer set programming.  In <span class=\"cmti-10\">Proceedings of International<\/span><span class=\"cmti-10\"> Joint Conference on Artificial Intelligence (IJCAI)<\/span>, pages 90\u201396, 2005.<\/p>\n<p class=\"bibitem\"><span class=\"biblabel\"><br \/>\n[5]<span class=\"bibsp\"> <\/span><\/span>Paolo Ferraris and Vladimir Lifschitz.   Weight constraints as nested expressions. <span class=\"cmti-10\">Theory and Practice of Logic Programming<\/span>, 5:45\u201374, 2005.<\/p>\n<p class=\"bibitem\"><span class=\"biblabel\"><br \/>\n[6]<span class=\"bibsp\"> <\/span><\/span>Martin Gebser, Benjamin Kaufmann, Andre Neumann, and Torsten Schaub.    Conflict-driven  answer  set  solving.    In  <span class=\"cmti-10\">Proceedings  of  20th<\/span><span class=\"cmti-10\"> International Joint Conference on Artificial Intelligence (IJCAI\u201907)<\/span>, pages 386\u2013392. MIT Press, 2007.<\/p>\n<p class=\"bibitem\"><span class=\"biblabel\"><br \/>\n[7]<span class=\"bibsp\"> <\/span><\/span>Martin Gebser, Max Ostrowski, and Torsten Schaub. Constraint answer set  solving.   In  <span class=\"cmti-10\">Proceedings  of  25th  International  Conference  on  Logic<\/span><span class=\"cmti-10\"> Programming (ICLP)<\/span>, pages 235\u2013249. Springer, 2009.<\/p>\n<p class=\"bibitem\"><span class=\"biblabel\"><br \/>\n[8]<span class=\"bibsp\"> <\/span><\/span>Yuliya Lierler.  On the relation of constraint answer set programming languages  and  algorithms.   In  <span class=\"cmti-10\">Proceedings of the AAAI Conference on<\/span><span class=\"cmti-10\"> Artificial Intelligence<\/span>. MIT Press, 2012.<\/p>\n<p class=\"bibitem\"><span class=\"biblabel\"><br \/>\n[9]<span class=\"bibsp\"> <\/span><\/span>Vladimir  Lifschitz,  Lappoon\u00a0R.  Tang,  and  Hudson  Turner.   Nested expressions  in  logic  programs.    <span class=\"cmti-10\">Annals  of  Mathematics  and  Artificial<\/span><span class=\"cmti-10\"> Intelligence<\/span>, 25:369\u2013389, 1999.<\/p>\n<p class=\"bibitem\"><span class=\"biblabel\"><br \/>\n[10]<span class=\"bibsp\"> <\/span><\/span>Guohua  Liu,  Tomi  Janhunen,  and  Ilkka  Niemelae.     Answer  set programming via mixed integer programming. In <span class=\"cmti-10\">Principles of Knowledge<\/span><span class=\"cmti-10\"> Representation  and  Reasoning:  Proceedings  of  the  13th  International<\/span><span class=\"cmti-10\"> Conference<\/span>, page 3242, 2012.<\/p>\n<p class=\"bibitem\"><span class=\"biblabel\"><br \/>\n[11]<span class=\"bibsp\"> <\/span><\/span>Veena\u00a0S. Mellarkod, Michael Gelfond, and Yuanlin Zhang. Integrating answer  set  programming  and  constraint  logic  programming.   <span class=\"cmti-10\">Annals of<\/span><span class=\"cmti-10\"> Mathematics and Artificial Intelligence<\/span>, 2008.<\/p>\n<p class=\"bibitem\"><span class=\"biblabel\"><br \/>\n[12]<span class=\"bibsp\"> <\/span><\/span>Ilkka Niemel\u00e4 and Patrik Simons. Extending the Smodels system with cardinality and weight constraints.  In Jack Minker, editor, <span class=\"cmti-10\">Logic-Based<\/span><span class=\"cmti-10\"> Artificial Intelligence<\/span>, pages 491\u2013521. Kluwer, 2000.<\/p>\n<p class=\"bibitem\"><span class=\"biblabel\"><br \/>\n[13]<span class=\"bibsp\"> <\/span><\/span>Robert          Nieuwenhuis,          Albert          Oliveras,          and Cesare Tinelli.  Solving SAT and SAT modulo theories: From an abstract<br \/>\nDavis-Putnam-Logemann-Loveland procedure to DPLL(T). <span class=\"cmti-10\">Journal of the<\/span><span class=\"cmti-10\"> ACM<\/span>, 53(6):937\u2013977, 2006.<\/p>\n<p class=\"bibitem\"><span class=\"biblabel\"><br \/>\n[14]<span class=\"bibsp\"> <\/span><\/span>Christian Schulte and Peter\u00a0J. Stuckey. Efficient constraint propagation engines. <span class=\"cmti-10\">Transactions on Programming Languages and Systems<\/span>, 2008.<\/p>\n<p class=\"bibitem\"><span class=\"biblabel\"><br \/>\n[15]<span class=\"bibsp\"> <\/span><\/span>Johan Wittocx, Maarten Mari\u00ebn, and Marc Denecker. The <span class=\"cmcsc-10\"><span class=\"small-caps\">i<\/span><span class=\"small-caps\">d<\/span><span class=\"small-caps\">p<\/span> <\/span>system: a model expansion system for an extension of classical logic.   In Marc Denecker, editor, <span class=\"cmti-10\">LaSh<\/span>, pages 153\u2013165, 2008.<\/p>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>By Yuliya Lierler,<br \/>\nUniversity of Nebraska at Omaha<\/p>\n<p class=\"more-link-p\"><a class=\"more-link\" href=\"https:\/\/logicprogramming.org\/2012\/09\/constraint-answer-set-programming\/\">Read more &rarr;<\/a><\/p>\n","protected":false},"author":5,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3,5],"tags":[],"class_list":["post-2322","post","type-post","status-publish","format-standard","hentry","category-issue","category-articles"],"_links":{"self":[{"href":"https:\/\/logicprogramming.org\/wp-json\/wp\/v2\/posts\/2322","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/logicprogramming.org\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/logicprogramming.org\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/logicprogramming.org\/wp-json\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/logicprogramming.org\/wp-json\/wp\/v2\/comments?post=2322"}],"version-history":[{"count":14,"href":"https:\/\/logicprogramming.org\/wp-json\/wp\/v2\/posts\/2322\/revisions"}],"predecessor-version":[{"id":2370,"href":"https:\/\/logicprogramming.org\/wp-json\/wp\/v2\/posts\/2322\/revisions\/2370"}],"wp:attachment":[{"href":"https:\/\/logicprogramming.org\/wp-json\/wp\/v2\/media?parent=2322"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/logicprogramming.org\/wp-json\/wp\/v2\/categories?post=2322"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/logicprogramming.org\/wp-json\/wp\/v2\/tags?post=2322"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}