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

5 Assumption handling

5.3 Resolving assumptions


Eventually it is necessary to resolve the assumptions, in order to determine which of them are true and therefore which clauses need to be retracted. This can be done when all the rules in a rulebase have finished firing, since the semantics of SDML do not allow antecedents to be affected by rules firing later on (in a different rulebase at the same time period or any rulebase at a later period). When rule firing has finished, the databases contain clauses representing every deduction that could have been made according to the rulebase. Resolving assumptions consists of three steps:

  1. Finding conflicts. For every assumption, a conflict tag representing all the conditions under which that assumption is false must be determined. All the conflicting assumptions can be found by evaluating the assumptions' subclauses (and they can therefore be accumulated during the process of firing rules).*1


  2. Finding a resolution, in which each assumption is true or false. For any valid resolution, every assumption is true if and only if its conflict tag is false. A resolution can often be found very quickly, by deducing that assumptions which have the conflict tag true are false and vice versa, substituting in other conflict tags, and repeating. However, finding a resolution sometimes involves a search process*2, and there may be more than one valid resolution. For example, the assumptions in the rules of figure 7 contradict each other, and if no other rules affect whether the weather is hot or cold then either assumption could be correct. Since SDML is used for simulation, it is most useful to choose one resolution, but all valid resolutions could be found if required. On the other hand, sometimes there is no valid resolution, often due to self-conflicting rules such as the one shown in figure 8. If there is no other rule to deduce that the weather is hot, this conflict cannot be resolved and SDML reports an error.


  3. Retracting clauses relying on false assumptions. This entails searching databases for clauses with tags other than true*3, and retracting them or replacing the tags by true depending on the resolution of the assumptions.

After these three steps have taken place, SDML discards the assumptions and moves on to the next rulebase.


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

Generated with CERN WebMaker