[Next] [Previous] [Up] [Top] [Contents]

7 Comparisons with other approaches

7.3 Other declarative rule-based systems


Most mainly declarative rule-based systems also provide some imperative facilities. In Prolog, rules are fired in the order they are stored, and the "cut" facility can be used to prevent later rules or instances of the same rule from being fired. LDL [11] overcomes these imperative features of Prolog by automatically ordering rules, and using a declarative form of cut called "choice" which is similar to SDML's arbitraryChoice primitive. However, even LDL resorts to imperative techniques for asserting information to and retracting it from databases. The semantics of the Prolog "not" are often criticised; clauses with this keyword are interpreted as true if their subclauses fail to find a solution according to the current database state. Both Prolog and LDL use backward chaining. Forward chaining can be performed in these languages, but only by using imperative database operations.

Mobal [10] is a declarative rule-based system, designed for knowledge acquisition and machine learning, which provides both forward and backward chaining. Mobal has similar facilities to SDML's assumable clauses, known as "autoepistemic operators". For example, SDML's notKnown is equivalent to the disjunction of "unknown" and "not" in Mobal. Unfortunately, Mobal is inefficient on large databases; the benchmarks cycle1000 and nocycle1000 both take over 2 minutes. Consequently, the user can limit the amount of forward and backward chaining that is carried out, affecting the results of autoepistemic operators. These operators themselves are less efficient than in SDML; Mobal sometimes unnecessarily propagates the results of these operators, only to retract them again when their results change due to another fact being deduced.


Efficient Forward Chaining for Declarative Rules in a Multi-Agent Modelling Language - 16 FEB 95
[Next] [Previous] [Up] [Top] [Contents]

Generated with CERN WebMaker