We present the CIFF proof procedure for abductive logic programming with constraints, and we prove its correctness. CIFF is an extension of the IFF proof procedure for abductive logic programming, relaxing the original restrictions over variable quantification (allowedness conditions) and incorporating a constraint solver to deal with numerical constraints as in constraint logic programming. Finally, we describe the CIFF system, comparing it with state of the art abductive systems and answer set solvers and showing how to use it to program some applications. (To appear in Theory and Practice of Logic Programming - TPLP).
@cite_26: Recent work has suggested abductive logic programming as a suitable formalism to represent active databases and intelligent agents. In particular, abducibles in abductive logic programs can be used to represent actions, and integrity constaints in abductive logic programs can be used to represent active rules of the kind encountered in active databases and reactive rules incorporating reactive behaviour in agents. One would expect that, in this approach, abductive proof procedures could provide the engine underlying active database management systems and the behaviour of agents. We analyse existing abductive proof procedures and argue that they are inadequate in handling these applications. The inadequacy is due to the inappropriate treatment of negative literals in integrity constraints. We propose a new abductive proof procedure and give examples of how this proof procedure can be used to achieve active behaviour in (deductive) databases and reactivity in agents. Finally, we prove some soundness and completeness results for the new proof procedure.
- The framework requires that integrity constraints are in denial form. Logically, implicative integrity constraints can be written in denial form, since [ (B H) ((B H) ). ] However, the operational treatement of the two representations of integrity constraints is rather different in CIFF and in the . For example, given a CIFF integrity constraint [ a b ] (where @math and @math are abducibles) and an empty query, CIFF computes the empty set of abducibles, whereas, given the equivalent denial [ a b ] and the same query, the computes two alternative answers: the empty set of abducibles and @math . Indeed, assuming @math renders the original implication true. However, in some applications this treatment leads to unintuitive behaviours. For example, if @math is alarm and @math is evacuate , then, with the , evacuate is a possible answer independently of whether alarm has been observed or not. This and other examples are discussed in @cite_26 .