Nothing Special   »   [go: up one dir, main page]

Academia.eduAcademia.edu

Towards Practical Tabled Abduction Usable in Decision Making

2013

Abduction as reasoning paradigm has been much explored in Artificial Intelligence, but not yet taken up by decision making as much as its potential warrants. Indeed, abduction permits the generation of hypothetical knowledge based scenarios, about which one can then equate decisions. One reason for this state of affairs is that abduction is difficult to implement efficaciously, even by experts, which entails that abductive systems are not readily available for decision making. Our concept of tabled abduction mitigates this, in the abductive logic programming system TABDUAL. The contribution of this paper is three-fold: (1) We discuss some TABDUAL improvements towards its more practical use, particularly in decision making, (2) We show that declarative debugging can be viewed as abduction in logic programming, thus showing another potential of abduction for decision making, and (3) We describe how TABDUAL can be applied in decision making and examine its benefit.

Towards Practical Tabled Abduction Usable in Decision Making Ari SAPTAWIJAYA 1 and Luı́s Moniz PEREIRA Centro de Inteligência Artificial (CENTRIA) Departamento de Informática, Faculdade de Ciências e Tecnologia Universidade Nova de Lisboa, 2829-516 Caparica, Portugal Email: ar.saptawijaya@campus.fct.unl.pt, lmp@fct.unl.pt Abstract. Abduction as reasoning paradigm has been much explored in Artificial Intelligence, but not yet taken up by decision making as much as its potential warrants. Indeed, abduction permits the generation of hypothetical knowledge based scenarios, about which one can then equate decisions. One reason for this state of affairs is that abduction is difficult to implement efficaciously, even by experts, which entails that abductive systems are not readily available for decision making. Our concept of tabled abduction mitigates this, in the abductive logic programming system TABDUAL. The contribution of this paper is three-fold: (1) We discuss some TABDUAL improvements towards its more practical use, particularly in decision making, (2) We show that declarative debugging can be viewed as abduction in logic programming, thus showing another potential of abduction for decision making, and (3) We describe how TABDUAL can be applied in decision making and examine its benefit. Keywords. tabled abduction, abductive logic programming, declarative debugging, decision making. 1. Introduction Reasoning by abduction is a well-known method in AI, studied at length in computational logic, and logic programming in particular, for quite a while [1–4]. In logic programming, it offers a formalism that, combined with other reasoning methods, affords us a declarative way to express and solve a variety of problems in a diversity of areas, e.g. in decision-making, diagnosis, planning, belief revision, and hypothetical reasoning (cf. [5–9]). Though many Prolog systems have matured enough to become of much practical use, abduction is not yet offered in them as a staple reasoning method, on account of the special and additional complexities involved. We have strived to change this state of affairs. Finding hypothetical assumptions (i.e. abductive solutions) that lend support to a desired goal, or finding best (even satisficing) possible abductive explanations for observed evidence, can be very costly. Now, it can be the case that abductive solutions found in one context can then be appropriated in a different context and reused at little extra cost. 1 Affiliated with Fakultas Ilmu Komputer at Universitas Indonesia, Depok, Indonesia. In the absence of abduction, goal solution reuse in logic programming systems is by now a rather staple feature, which resorts to a tabling mechanism for effectiveness. However, abductive solution reuse in not readily amenable to tabling, exactly because solutions go together with an abduction context. It raises new problems on how to reuse them in distinct but compatible contexts, while catering to all varieties of loops in logic programs, complicated now by abduction. The concept and realization of tabled abduction implementation for abductive normal logic programs was introduced recently to address this problem [10], which will be reviewed in Section 2. It is realized via a program transformation and implemented in a prototype, TABDUAL, using XSB-Prolog. The transformation makes use of the theory of the dual transformation [1], which allows to efficiently handle the problem of abduction under negative goals, by introducing the dual positive counterparts for them. Abduction is then performed on the transformed program without the need of a meta-interpreter. We explore here TABDUAL’s potential in decision making. First, we introduce a new TABDUAL construct for the purpose, adding to its features. It helps decision making on the basis of available hypothetical scenarios and permits modular mixes of abductive and non-abductive program parts. These and other improvements towards its more practical use are discussed in Section 3. Second, we revisit declarative debugging, a tool of interest to decision making, in Section 4, previously characterized as belief revision [11, 12], and show that it can be viewed as (tabled) abduction. Third, we describe how TABDUAL can be applied in decision making and examine its benefit, illustrating it with an example from medical diagnosis, in Section 5. 2. Tabled Abduction First we recap some background definitions in logic programs. We then discuss how abduction can be accomplished in logic programs and recapitulate tabled abduction. A logic rule has the form H ← B1 , . . . , Bm , not Bm+1 , . . . , not Bn , where n ≥ m ≥ 0 and H, Bi with 1 ≤ i ≤ n are atoms. In a rule, H is called the head of the rule and B1 , . . . , Bm , not Bm+1 , . . . , not Bn its body. We employ ‘not’ to denote default negation. The atom Bi and its default negation not Bi are named positive and negative literals, respectively. When n = 0, we say the rule is a fact and render it simply as H. The atoms true and false are, by definition, respectively true and false in every interpretation. A rule in the form of a denial, i.e. with empty head, or equivalently with false as head, is an integrity constraint (IC). A logic program (LP) is a set of logic rules, where non-ground rules (i.e. rules containing variables) stand for all their ground instances. In this work we focus on normal logic programs, i.e. those whose heads of rules are positive literals or empty. As usual, we write p/n to denote predicate p with arity n. 2.1. Abduction in Logic Programs In summary, abduction, or inference to the best explanation (a common designation of one of its uses in the philosophy of science [13, 14]), is a reasoning method, of interest to scenario building in decision making [15, 16], whereby one chooses those hypotheses that would, if true, best explain the observed evidence – while meeting any attending ICs – or that would satisfy some query. In LPs, abductive hypotheses (or abducibles) are named literals of the program which have no rules, and whose truth value is not initially assumed. Abducibles may have arguments, but they must be ground on the occasion of their abduction. An abductive normal logic program is a normal logic program that allows for abducibles, or their negations, to appear in the body of rules. Note that the negation ‘not a’ of an abducible a does not refer to its default negation, as abducibles have no rules, but instead to the explicitly assumed hypothetical negation of a. The truth value of abucibles may be independently assumed true or false, via either their positive or negated form, as the case may be, in order to produce an abductive solution to a query, that is a consistent set of assumed hypotheses that support it. An abductive solution to a query is a consistent set of abducible instances or their negations that, when substituted by their assigned truth value everywhere in the program P, affords us with a model of P (for the specific semantics used on P), which satisfies both the query and the ICs – a so-called abductive model. Abduction in LPs can naturally be accomplished by a top-down query-oriented procedure to find an (abductive) solution to a query (by need, i.e. as abducibles are encountered), where the abducibles in the solution are leaves in its procedural query-rooted callgraph, i.e. the graph recursively engendered by the procedure calls from literals in bodies of rules to heads of rules, and thence to the literals in the rule’s body. 2.2. Tabled Abduction in TABDUAL The concept of tabled abduction is illustrated and summarized in the following examples. Consider an abductive logic program, taken from [10]: Example 1. Program P1 : q ← a. s ← b, q. t ← s, q. where a and b are abducibles. Suppose three queries: q, s, and t, are individually launched, in that order. The first query, q, is satisfied simply by taking [a] as the abductive solution for q, and tabling it. Executing the second query, s, amounts to satisfying the two subgoals in its body, i.e. abducing b followed by invoking q. Since q has previously been invoked, we can benefit from reusing its solution, instead of recomputing, given that the solution was tabled. That is, query s can be solved by extending the current ongoing abductive context [b] of subgoal q with the already tabled abductive solution [a] of q, yielding [a, b]. The final query t can be solved similarly. Invoking the first subgoal s results in the priorly registered abductive solution [a, b], which becomes the current abductive context of the second subgoal q. Since [a, b] subsumes the previously obtained abductive solution [a] of q, we can then safely take [a, b] as the abductive solution to query t. This example shows how [a], as the abductive solution of the first query q, can be reused from an abductive context of q (i.e. [b] in the second query, s) to another context (i.e. [a, b] in the third query, t). In practice the body of rule q may contain a huge number of subgoals, causing potentially expensive recomputation of its abductive solutions and thus such unnecessary recomputation should be avoided. Tabled abduction is realized in a prototype, TABDUAL, which involves a program transformation of abductive logic programs. Abduction can then be enacted on the transformed program directly, without the need of a meta-interpreter. Example 1 already indicates two key ingredients of the transformation: 1. Abductive context, which relays the ongoing abductive solution from one subgoal to subsequent subgoals, as well as from the head to the body of a rule, via input and output contexts, where abducibles can be envisaged as the terminals of parsing. 2. Tabled predicates, which table the abductive solutions for predicates defined in the input program. Example 2. The rule t ← s, q from Example 1 is transformed into two rules: tab (E) ← s([ ], T ), q(T, E). t(I, O) ← tab (E), produce(O, I, E). Predicate tab (E) is the tabled predicate which tables the abductive solution of t in its argument E. Its definition, in the left rule, follows from the original definition of t. Two extra arguments, that serve as input and output contexts, are added to the subgoals s and t in the rule’s body. The left rule expresses that the tabled abductive solution E of tab is obtained by relaying the ongoing abductive solution in context T from subgoal s to subgoal q in the body, given the empty input abductive context of s (because there is no abducible in the body of the original rule of t). The rule on the right expresses that the output abductive solution O of t is obtained from the the solution entry E of tab and the given input context I of t, via TABDUAL system predicate produce(O, I, E), that checks consistency. The other rules in Example 1 are transformed following the same idea. An abducible is transformed into a rule that inserts it into the abductive context. For instance, the abducible a from Example 1 is transformed into: a(I, O) ← insert(a, I, O), where insert(a, I, O) is a TABDUAL system predicate which inserts a into the input context I, resulting in the output context O, while also checking consistency. The negation not a of the abducible a is transformed similarly, except that it is renamed into not a in the head (as we consider normal logic programs): not a(I, O) ← insert(not a, I, O). The TABDUAL program transformation employs the dual transformation [1], which makes negative goals ‘positive’, thus permitting to avoid the computation of all abductive solutions, and then negating them, under the otherwise regular negative goals. Instead, we are able to obtain one abductive solution at a time, as when we treat abduction under positive goals. The dual transformation defines for each atom A and its set of rules R in a program P, a set of dual rules whose head not A is true if and only if A is false by R in the employed semantics of P. Note that, instead of having a negative goal not A as the rules’ head, we use its corresponding ‘positive’ one, not A. Example 3 illustrates only the main idea of how the dual transformation is employed in TABDUAL and omits many details, e.g. checking loops in the input program, all of which are referred in [10]. Example 3. Suppose program P2 contains two rules of p/1 (along with q/1 and r/2): p(1) ← a(1). p(X) ← q(Y ), r(X,Y ). where a/1 is abducible. The TABDUAL transformation will create a set of dual rules for p/1 which falsify p/1 with respect to its two above rules, i.e. by falsifying both the first rule and the second rule, expressed by predicate p∗1 /3 and p∗2 /3, respectively: not p(X, I, O) ← p∗1 (X, I, T ), p∗2 (X, T, O). In TABDUAL, the above rule is known as the first layer of the dual transformation. The second layer contains the definitions of p∗1 /3 and p∗2 /3. For p∗1 /3, the first rule of p is falsified when either its argument is not equal to 1 or, if equal to 1, its body is falsified (i.e. the negation of a(1) is abduced), so we have: p∗1 (X, I, I) ← X 6= 1. p∗1 (1, I, O) ← not a(1). In the first rule of p∗1 /3, the content of the context I is simply relayed from the input to the output context. The abduction of not a(1), i.e. by invoking the subgoal not a(1) in the body of the second rule, is achieved via the rule of not a/1. For p∗2 /3, the second rule of p is falsified when either its argument does not unify with X, or its body is falsified (by negating one subgoal at a time). Since variable X must be unified by any term, the first alternative can be dropped. Thus, we have: p∗2 (X, I, O) ← not q(Y, I, O). p∗2 (X, I, O) ← q(Y, I, T ), not r(X,Y, T, O). In the second rule of p∗2 /3, besides negating the second subgoal r, the preceeding positive subgoal q is kept, since it may help instantiate variable Y when the second subgoal not r is subsequently invoked. The abductive context in the body is relayed as usual. Finally, TABDUAL transforms integrity constraints like any other rules, and topgoal queries are always launched by also satisfying integrity constraints. This transformation is illustrated, in Section 5, using an example from medical diagnosis. 3. Improvements on TABDUAL TABDUAL has still much room for improvement. We extend here its features, by introducing a new system predicate that is relevant for decision making. We also mention other general improvements, which advance TABDUAL towards its more practical use. 3.1. Picking up Abducible-based Actions In decision making under hypothetical reasoning, given an observation, one is typically confronted with several possible scenarios. These scenarios are characterized by the explanatory abducibles, and decisions are made on their basis. We illustrate it with a simple example. Example 4. Suppose that an agent observes some smoke and its action decision with regard to this situation depends on the cause of the smoke. In case it is triggered by fire, the agent reacts by calling firefighters. But if it is explained by the presence of tear gas, then the agent better seeks police protection. Top-goal queries for decision making can be enacted by means of a new TABDUAL system predicate do(Act, Abds, Obs). It explains the given observation Obs by the abductive solution Abds, and subsequently picks the action Act based on the given definition of decide/2 in the agent’s belief. The situation can be modeled in TABDUAL as follows: smoke ← f ire. smoke ← tear gas. beginProlog. decide(call f ire f ighters, Abds) ← member( f ire, Abds). decide(police protection, Abds) ← member(tear gas, Abds). endProlog. where f ire and tear gas are abducibles. Note that beginProlog and endProlog are TABDUAL’s identifiers to distinguish non-abducitve program part from the abductive one. All rules between these two identifiers are considered usual Prolog programs and are not subject to the TABDUAL transformation. For Example 4, we have the top-goal query do(Act, Abds, smoke), which gives us two scenarios and guides us with actions to take: Act = call f ire f ighters for Abds = [ f ire] and Act = police protection for Abds = [tear gas]. 3.2. Recalling Other Improvements Besides predicate do/3, TABDUAL is also equipped with some other improvements mentioned below. These improvements, which support TABDUAL better for its practical use, are detailed elsewhere [17]: • TABDUAL provides a system predicate to access the ongoing abductive solutions. This feature is useful and important for manipulating abductive solutions dynamically, e.g. to prefer some explanations, or eliminate so-called nogood combinations (those known to violate constraints). Like predicate do/3, it also permits modular mixes of abductive and non-abductive program parts. • Predicates comprised of facts are transformed much simpler, i.e. they do not follow the general TABDUAL transformation applied for rules as explained in Section 2.2. The reason is that facts do not induce any abduction, and such simpler transformation helps deal with abductive logic programs having large factual data, which is often the case in many real world problems. • Dual rules are constructed by need, thus avoiding a complete dual transformation for every defined atom in the program in advance during the transformation phase. The latter approach, though conceptually correct, is unpractical, as real-world problems typically consist of a huge number of rules, and the transformation may take ages and hinder abduction to take place. The transformed program still contains the same first layer of the dual transformation, but its second layer is defined by a rule, which will be interpreted by the TABDUAL system on-the-fly, during abduction, to produce the concrete definitions of the second layer. Extra computation load that may occur during the abduction phase, due to the by-need construction of dual rules, can be reduced by tabling the already constructed generic dual rules. Therefore, when such dual rules are later needed, they are available for reuse and thus their recomputation can be avoided. 4. Declarative Debugging as Abduction: a Preparatory Tool for Decision Making When decision making rests upon knowledge that is expressed declaratively (e.g. in logic programs), declarative debugging becomes an important tool to ease the debugging of errors that may infiltrate the knowledge representation, in preparation for and maintenance of correct decision making. Declarative debugging of normal logic programs has been characterized before as belief revision [11, 12]. We revisit in this section two cases of declarative debugging, those of incorrect solutions and of missing solutions, and show that they can be viewed and implemented as abduction. We start by considering the debugging of definite logic programs. Example 5. Take a buggy program P4 [11]: a(1). a(X) ← b(X), c(Y,Y ). b(2). b(3). c(1, X). c(2, 2). Incorrect Solutions Suppose that a(3) is an incorrect solution. To debug its cause, the program is first changed using the simple transformation introduced in [12], i.e. by adding default literal not incorrect(i, [X1 , . . . , Xn ]) to the body of each i-th rule of P4 , to defeasibly assume their correctness by default, where n is the rule’s arity and Xi s, for 1 ≤ i ≤ n, its head arguments. This yields program P4′ : a(1) ← not incorrect(1, [1]). a(X) ← b(X), c(Y,Y ), not incorrect(2, [X]). b(2) ← not incorrect(3, [2]). b(3) ← not incorrect(4, [3]). c(1, X) ← not incorrect(5, [1, X]). c(2, 2) ← not incorrect(6, [2, 2]). In terms of abduction, one can envisage incorrect/2 as an abducible. To express, while debugging, that a(3) is an incorrect solution, we add to P4′ an IC: ← a(3). We run TABDUAL on P4′ , which returns three solutions as the possible sufficient causes of the incorrect solution: [incorrect(2, [3])], [incorrect(4, [3])], [incorrect(5, [1, 1]), incorrect(6, [2, 2])]. Missing Solutions Suppose a(5) should be a solution of P4 , which is missing. To find this bug, P4 is transformed [11], by adding for each predicate p/n the rule: p(X1 , . . . , Xn ) ← missing(p(X1 , . . . , Xn )). For P4 , it is transformed into P4′′ that contains all rules from P4 plus three new rules: a(X) ← missing(a(X)). b(X) ← missing(b(X)). c(X,Y ) ← missing(c(X,Y )). Similarly as before, missing/1 can be viewed as an abducible. But now, to express that we miss a(5) as a solution, we add to P4′′ an IC: ← not a(5). TABDUAL returns the three abductive solutions on P4′′ as the causes of missing solution a(5) in P4 : [missing(a(5))], [missing(b(5))], [missing(b(5)), missing(c(X, X))]. Differently from [11, 12] where minimal solutions are targeted, TABDUAL also returns non-minimal solution [missing(b(5)), missing(c(X, X))]. In this case, TABDUAL allows one to choose those solutions that are sufficient so far, or interesting enough, and to continue searching for more solutions if needed, just like Prolog does. Finding minimal abductive solutions is not always desired – here bugs may well not be minimal. And in general, minimality can be deferred to a later step and paid for only if needed. Examination of side-effects is often more important than minimality [15]. Finally, in case of debugging normal logic programs, the two above debugging transformations are adroitly summed into one, as illustrated in Example 6. TABDUAL takes care of further transforming the default not’s into positive atoms by dualizing them, to make the program a definite one. Example 6. Consider program P5 : a ← not b. a ← c. b. We obtain P5∗ by applying the two transformations: a ← not b, not incorrect(1). a ← c, not incorrect(2). b ← not incorrect(3). a ← missing(a). b ← missing(b). c ← missing(c). Suppose we want to explain the causes of missing solution a, then we add to P5∗ an IC: ← not a. Running TABDUAL on P5∗ , we obtain three abductive solutions: [incorrect(3)], [missing(a)], [missing(c)] which correctly enunciate the three possible causes of the problem. 5. Evaluating TABDUAL in Decision Making: a Medical Case Next, we show how TABDUAL is applied to medical diagnosis, adapted from [18]. Example 7. A patient shows up at the dentist with signs of pain upon teeth percussion but without tooth mobility. The expected causes for the observed signs are periapical lesion, horizontal fracture, and vertical fracture of the root and/or crown. An abductive logic program representing a partial medical knowledge base of the practitioner is as follows: percussion pain ← periapical lesion percussion pain ← f racture radiolucency ← periapical lesion f racture ← horizontal f racture elliptic f racture trace ← horizontal f racture tooth mobility ← horizontal f racture f racture ← vertical f racture decompression pain ← vertical f racture ← not percussion pain ← tooth mobility where periapical lesion, horizontal f racture, and vertical f racture are abducibles. The integrity constraints indicate that the practitioner must conclude percussion pain but not tooth mobility since these are the symptoms of the patient that requires explanation. Suppose that during examination, the practitioner suspects that there is a fracture. This corresponds to query f racture with its corresponding transformed top-goal: f racture(I, T ), not f alse(T, O). Notice that abductive context T , which is the ongoing abductive solution to f racture is relayed to not f alse in order to satisfy integrity constraints. Recall that integrity constraints are transformed like any other rules (cf. Section 2.2). In particular, predicate not f alse/2 is defined, by the dual transformation, as follows: not f alse(I, O) ← f alse∗1 (I, T ), f alse∗2 (T, O). f alse∗1 (I, O) ← percussion pain(I, O). f alse∗2 (I, O) ← not tooth mobility(I, O). The first subgoal f racture gives two abductive solutions: T = [horizontal f racture] and T = [vertical f racture]. The second subgoal not f alse, constrains these two solutions further: • It eliminates [horizontal f racture], due to rule f alse∗2 /2. The latter rule, which eventually abduces not horizontal f racture, makes the first abductive solution inconsistent. • With respect to [vertical f racture], the integrity constraint results in two final abductive solutions: O = [periapical lesion, vertical f racture] and O = [vertical f racture]. Notice that, in the derivation of f alse∗1 to eventually obtain O = [vertical f racture], TABDUAL allows reusing the tabled abductive solution from the subgoal f racture, thus showing the benefit of tabled abduction in this problem. We have also evaluated TABDUAL in terms of performance and scalability, where we consider four distinct TABDUAL variants (of the same underlying implementation), obtained by separately factoring out its important features. We particularly examined two benchmarks: the well-known N-queens problem, where abduction is used to find safe board configurations of N queens, and an example of declarative debugging. The evaluation of the first benchmark aims at evaluating the scalability of TABDUAL, concentrating on tabling of nogoods of subproblems, i.e. tabling conflictual configurations of queens (essentially, tabling the ongoing abductive solutions). The result is promising, that TABDUAL indeed benefits from tabling ongoing abductive solutions: as constraints become more complex, its performance consistently surpasses that of its non-tabling counterpart. The second benchmark focuses on the relative worth of the dual transformation by need in TABDUAL, with respect to both the transformation and the abduction time. Though the dual transformation by need requires more time during abduction, which is to be expected due to the on-the-fly dual rules construction, it saves the transformation time significantly and thus the total time as a whole. The evaluation details can be found in [19]. 6. Conclusion and Future Work We have improved TABDUAL, adding a novel feature by introducing a new system predicate to facilitate decision making, apart from other improvements. We believe that these improvements will gear up TABDUAL better for practical applications, namely in decision making. We also illustrated that declarative debugging, a tool of interest to perfecting knowledge-based decision making, can be viewed as abduction, and hence readily implemented in an abduction system like TABDUAL. Finally, we applied TABDUAL to medical diagnosis and showed how it can benefit from tabled abduction. An issue that we have touched upon in the TABDUAL’s evaluation, reported elsewhere [19], is tabling nogoods of subproblems, and how it may improve performance, with good scalability with problem complexity. As for the future, we look forward to applying TABDUAL, integrating it with other logic programming features (such as updating and uncertainty), to moral decision making, where we have already made a start [20, 21]. Acknowledgements Ari Saptawijaya acknowledges the support of FCT-Portugal, grant SFRH/BD/72795/2010. References [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] [18] [19] [20] [21] J. J. Alferes, L. M. Pereira, and T. Swift, “Abduction in well-founded semantics and generalized stable models via tabled dual programs,” Theory and Practice of Logic Programming, vol. 4, no. 4, pp. 383– 428, 2004. T. Eiter, G. Gottlob, and N. Leone, “Abduction from logic programs: semantics and complexity,” Theoretical Computer Science, vol. 189, no. 1-2, pp. 129–177, 1997. A. Kakas, R. Kowalski, and F. Toni, “The role of abduction in logic programming,” in Handbook of Logic in Artificial Intelligence and Logic Programming (D. Gabbay, C. Hogger, and J. Robinson, eds.), vol. 5, Oxford U. P., 1998. M. Denecker and A. C. Kakas, “Abduction in logic programming,” in Computational Logic: Logic Programming and Beyond, Springer Verlag, 2002. A. C. Kakas and A. Michael, “An abductive-based scheduler for air-crew assignment,” J. of Applied Artificial Intelligence, vol. 15, no. 1-3, pp. 333–360, 2001. J. F. Castro and L. M. Pereira, “Abductive validation of a power-grid expert system diagnoser,” in Procs. 17th Intl. Conf. on Industrial & Engineering Applications of Artificial Intelligence & Expert Systems (IEA-AIE’04), vol. 3029 of LNAI, pp. 838–847, Springer, 2004. J. Gartner, T. Swift, A. Tien, C. V. Damásio, and L. M. Pereira, “Psychiatric diagnosis from the viewpoint of computational logic,” in Procs. 1st Intl. Conf. on Computational Logic (CL 2000), vol. 1861 of LNAI, pp. 1362–1376, Springer, 2000. R. Kowalski and F. Sadri, “Abductive logic programming agents with destructive databases,” Annals of Mathematics and Artificial Intelligence, vol. 62, no. 1, pp. 129–158, 2011. R. Kowalski, Computational Logic and Human Thinking: How to be Artificially Intelligent. Cambridge U. P., 2011. L. M. Pereira and A. Saptawijaya, “Abductive logic programming with tabled abduction,” in Procs. 7th Intl. Conf. on Software Engineering Advances (ICSEA), pp. 548–556, ThinkMind, 2012. L. M. Pereira, C. V. Damásio, and J. J. Alferes, “Debugging by diagnosing assumptions,” in Automatic Algorithmic Debugging, vol. 749 of LNCS, pp. 58–74, Springer, 1993. L. M. Pereira, C. V. Damásio, and J. J. Alferes, “Diagnosis and debugging as contradiction removal in logic programs,” in Progress in Artificial Intelligence, vol. 727 of LNAI, Springer, 1993. J. R. Josephson and S. G. Josephson, Abductive Inference: Computation, Philosophy, Technology. Cambridge U. P., 1995. P. Lipton, Inference to the Best Explanation. Routledge, 2001. L. M. Pereira and A. M. Pinto, “Side-effect inspection for decision making,” in Procs. 1st KES Intl. Symposium on Intelligent Decision Technologies (KES-IDT’09), vol. 199 of Springer Studies in Computational Intelligence, pp. 139–150, 2009. B. Brogaard, “A Peircean Theory of Decision,” Synthese, vol. 118, no. 3, pp. 383–401, 1999. A. Saptawijaya and L. M. Pereira, “Implementing tabled abduction in logic programs.” Submitted to Doctoral Symposium on Artificial Intelligence (SDIA), Available at http://centria.di.fct.unl. pt/~lmp/publications/online-papers/implementing_tabdual.pdf, 2013. L. M. Pereira, P. Dell’Acqua, A. M. Pinto, and G. Lopes, “Inspecting and preferring abductive models,” in The Handbook on Reasoning-Based Intelligent Systems (K. Nakamatsu and L. C. Jain, eds.), pp. 243– 274, World Scientific Publishers, 2013. A. Saptawijaya and L. M. Pereira, “Towards practical tabled abduction in logic programs.” Submitted to 16th Portuguese Conference on Artificial Intelligence (EPIA), Available at http://centria.di. fct.unl.pt/~lmp/publications/online-papers/abduction_tabling.pdf, 2013. L. M. Pereira and A. Saptawijaya, “Modelling Morality with Prospective Logic,” in Machine Ethics (M. Anderson and S. L. Anderson, eds.), pp. 398–421, Cambridge U. P., 2011. T. A. Han, A. Saptawijaya, and L. M. Pereira, “Moral reasoning under uncertainty,” in Procs. of The 18th Intl. Conf. on Logic for Programming, Artificial Intelligence and Reasoning (LPAR-18), vol. 7180 of LNCS, pp. 212–227, Springer, 2012.