This is a possible classification of rules.
Proposed by PaulaLaviniaPatranjan on behalf of REWERSE.
Kinds of rules
Rule-based systems refer to three different kinds of rules: normative rules (or structural rules, or integrity constraints), deductive rules (or deduction rules or database views or constructive rules), and active or reactive rules.
Note that approaches followed in classifying rules are application dependent. The choice of whether the same formula should be made e.g. an integrity constraint or a deductive rule depends on the use one intends to make of that formula (or on the reasoning task one needs). The classification given here can be questioned.
Differences between three kinds of rules
How the types of rules differ from each other can be explained on an example:
The rule R1 "every student with major in Computer Science must have a minor in Mathematics or in Physics" is normative because it says what must be fulfilled, but not how to fulfill it. Rules with indefinite conclusions, i.e rules with either disjunctive conclusions as R1 or existential conclusions as for example R2: "every student with major in Computer Science must have some minor" must in general be normative (exceptions are the rare applications where non-deterministic choices by the system are acceptable). Rules with definite conclusions such as R3 "every student with major in Computer Science must have a minor in Mathematics" can, but must not, be normative (they can also be deductive, cf. below). The rule R3 can be deductive, because its conclusion is definite: It says both what must be fulfilled and how to fulfill it. Note that rules with indefinite conclusions in general cannot be deductive (for otherwise the system would have to choose in a disjunct making disjunction true or a value making an existential statement true, what is rarely acceptable). The rule R4 "cancel the enrollment in the lecture CS123 of every student enrolling in the lecture CS456" is reactive because it specifies a deletion as a reaction to an event. Special kinds of reactive rules are called active rules, ie specifying an action without reacting to an event, e.g. "remove my name from the list".
The rules of the three kinds relate to each other
The three kinds of rules not only differ, they also relate to each other in subtile manners.
First, a normative rule stating A can be expressed as a special deduction rule, called denial, of the form "if not A then false".
Second, deductive rules can, and often are, processed as normative rules if systems without deductive capabilities are used. This way, rule R3 could be used for rejecting student registrations with major in Computer Science, but no minor in Mathematics.
Third, in some (simple) cases of reactive systems where no actions might trigger another reactive rule, reactive behavior can be expressed and computed relying on deduction rules. This is for example the case of a reactive system sending a vacation message in French as an answer to every email with a sending address in the fr national domain, in German if the sending address is in the de national domain, and else in English.
Forth, generating data using deduction rules or checking whether normative rules are enforced can be implemented using active or reactive rules.
The classification of rules given above is used within the use cases proposed by REWERSE. They bear evidence of the necessity of having different types of rules within a rule language.