|
||
Circular reasoning analysis | Search for circular references in rules, e.g., find a case in two or more rules where an identifier[1] is both assigned and referenced. Circularity may lead to a deadlock in the reasoning process. | |
Contradictory chain analysis | Search for contradictions between rules, e.g., find a case where an identifier is assigned a different value in two different rules. Contradictions may lead to unexpected results when priorities or rules change, or when new rules are added. | |
Contradictory condition analysis | Search for rules with conditions that can never be true because the conditions are contradictory. | |
Self-contradiction analysis | Search for rules that are internally inconsistent. | |
Range completeness analysis | Search for incomplete usage of 'ranged' identifiers. | |
Value completeness analysis | Search for incomplete usage of 'enumerated' identifiers. | |
Constraint violation analysis | Search for incorrect usage of 'constrained' identifiers. | |
Unused conclusion analysis | Search for rules whose actions are never utilized. This check can only be performed if the required input and output of the ruleset (system) are known. | |
Unreachable goal analysis | Search for rules whose conditions can never be evaluated. This check can only be performed if the required input and output of the ruleset (system) are known. | |
Obsolescence analysis | Search for constructs in the rulebase that either are never used or have no impact. | |
Redundancy analysis | Search for duplications and subsumptions in condition and action parts between rules. |
[1] An 'identifier' is "something that identifies a thing." There are many other words in use for 'identifier' -- such as 'attribute,' 'variable,' or 'term.' We have used the word 'identifier' because it is independent of a particular paradigm. The word 'attribute,' for example, is typically used in the context of programming.