
- •CONTENTS
- •PREFACE
- •LIST OF FIGURES
- •INTRODUCTION
- •1.1 WHAT IS TIME?
- •1.2 SIMULATION
- •1.3 TESTING
- •1.4 VERIFICATION
- •1.6 USEFUL RESOURCES
- •2.1 SYMBOLIC LOGIC
- •2.1.1 Propositional Logic
- •2.1.2 Predicate Logic
- •2.2 AUTOMATA AND LANGUAGES
- •2.2.1 Languages and Their Representations
- •2.2.2 Finite Automata
- •2.3 HISTORICAL PERSPECTIVE AND RELATED WORK
- •2.4 SUMMARY
- •EXERCISES
- •3.1 DETERMINING COMPUTATION TIME
- •3.2 UNIPROCESSOR SCHEDULING
- •3.2.1 Scheduling Preemptable and Independent Tasks
- •3.2.2 Scheduling Nonpreemptable Tasks
- •3.2.3 Nonpreemptable Tasks with Precedence Constraints
- •3.2.5 Periodic Tasks with Critical Sections: Kernelized Monitor Model
- •3.3 MULTIPROCESSOR SCHEDULING
- •3.3.1 Schedule Representations
- •3.3.3 Scheduling Periodic Tasks
- •3.4 AVAILABLE SCHEDULING TOOLS
- •3.4.2 PerfoRMAx
- •3.4.3 TimeWiz
- •3.6 HISTORICAL PERSPECTIVE AND RELATED WORK
- •3.7 SUMMARY
- •EXERCISES
- •4.1 SYSTEM SPECIFICATION
- •4.2.1 Analysis Complexity
- •4.3 EXTENSIONS TO CTL
- •4.4 APPLICATIONS
- •4.4.1 Analysis Example
- •4.5 COMPLETE CTL MODEL CHECKER IN C
- •4.6 SYMBOLIC MODEL CHECKING
- •4.6.1 Binary Decision Diagrams
- •4.6.2 Symbolic Model Checker
- •4.7.1 Minimum and Maximum Delays
- •4.7.2 Minimum and Maximum Number of Condition Occurrences
- •4.8 AVAILABLE TOOLS
- •4.9 HISTORICAL PERSPECTIVE AND RELATED WORK
- •4.10 SUMMARY
- •EXERCISES
- •VISUAL FORMALISM, STATECHARTS, AND STATEMATE
- •5.1 STATECHARTS
- •5.1.1 Basic Statecharts Features
- •5.1.2 Semantics
- •5.4 STATEMATE
- •5.4.1 Forms Language
- •5.4.2 Information Retrieval and Documentation
- •5.4.3 Code Executions and Analysis
- •5.5 AVAILABLE TOOLS
- •5.6 HISTORICAL PERSPECTIVE AND RELATED WORK
- •5.7 SUMMARY
- •EXERCISES
- •6.1 SPECIFICATION AND SAFETY ASSERTIONS
- •6.4 RESTRICTED RTL FORMULAS
- •6.4.1 Graph Construction
- •6.5 CHECKING FOR UNSATISFIABILITY
- •6.6 EFFICIENT UNSATISFIABILITY CHECK
- •6.6.1 Analysis Complexity and Optimization
- •6.7.2 Timing Properties
- •6.7.3 Timing and Safety Analysis Using RTL
- •6.7.5 RTL Representation Converted to Presburger Arithmetic
- •6.7.6 Constraint Graph Analysis
- •6.8 MODECHART SPECIFICATION LANGUAGE
- •6.8.1 Modes
- •6.8.2 Transitions
- •6.9.1 System Computations
- •6.9.2 Computation Graph
- •6.9.3 Timing Properties
- •6.9.4 Minimum and Maximum Distance Between Endpoints
- •6.9.5 Exclusion and Inclusion of Endpoint and Interval
- •6.10 AVAILABLE TOOLS
- •6.11 HISTORICAL PERSPECTIVE AND RELATED WORK
- •6.12 SUMMARY
- •EXERCISES
- •7.1.1 Timed Executions
- •7.1.2 Timed Traces
- •7.1.3 Composition of Timed Automata
- •7.1.4 MMT Automata
- •7.1.6 Proving Time Bounds with Simulations
- •7.2.1 Untimed Traces
- •7.2.2 Timed Traces
- •7.3.1 Clock Regions
- •7.3.2 Region Automaton
- •7.4 AVAILABLE TOOLS
- •7.5 HISTORICAL PERSPECTIVE AND RELATED WORK
- •7.6 SUMMARY
- •EXERCISES
- •TIMED PETRI NETS
- •8.1 UNTIMED PETRI NETS
- •8.2 PETRI NETS WITH TIME EXTENSIONS
- •8.2.1 Timed Petri Nets
- •8.2.2 Time Petri Nets
- •8.3 TIME ER NETS
- •8.3.1 Strong and Weak Time Models
- •8.5.1 Determining Fireability of Transitions from Classes
- •8.5.2 Deriving Reachable Classes
- •8.6 MILANO GROUP’S APPROACH TO HLTPN ANALYSIS
- •8.6.1 Facilitating Analysis with TRIO
- •8.7 PRACTICALITY: AVAILABLE TOOLS
- •8.8 HISTORICAL PERSPECTIVE AND RELATED WORK
- •8.9 SUMMARY
- •EXERCISES
- •PROCESS ALGEBRA
- •9.1 UNTIMED PROCESS ALGEBRAS
- •9.2 MILNER’S CALCULUS OF COMMUNICATING SYSTEMS
- •9.2.1 Direct Equivalence of Behavior Programs
- •9.2.2 Congruence of Behavior Programs
- •9.2.3 Equivalence Relations: Bisimulation
- •9.3 TIMED PROCESS ALGEBRAS
- •9.4 ALGEBRA OF COMMUNICATING SHARED RESOURCES
- •9.4.1 Syntax of ACSR
- •9.4.2 Semantics of ACSR: Operational Rules
- •9.4.3 Example Airport Radar System
- •9.5 ANALYSIS AND VERIFICATION
- •9.5.1 Analysis Example
- •9.5.2 Using VERSA
- •9.5.3 Practicality
- •9.6 RELATIONSHIPS TO OTHER APPROACHES
- •9.7 AVAILABLE TOOLS
- •9.8 HISTORICAL PERSPECTIVE AND RELATED WORK
- •9.9 SUMMARY
- •EXERCISES
- •10.3.1 The Declaration Section
- •10.3.2 The CONST Declaration
- •10.3.3 The VAR Declaration
- •10.3.4 The INPUTVAR Declaration
- •10.3.5 The Initialization Section INIT and INPUT
- •10.3.6 The RULES Section
- •10.3.7 The Output Section
- •10.5.1 Analysis Example
- •10.6 THE ANALYSIS PROBLEM
- •10.6.1 Finite Domains
- •10.6.2 Special Form: Compatible Assignment to Constants,
- •10.6.3 The General Analysis Strategy
- •10.8 THE SYNTHESIS PROBLEM
- •10.8.1 Time Complexity of Scheduling Equational
- •10.8.2 The Method of Lagrange Multipliers for Solving the
- •10.9 SPECIFYING TERMINATION CONDITIONS IN ESTELLA
- •10.9.1 Overview of the Analysis Methodology
- •10.9.2 Facility for Specifying Behavioral Constraint Assertions
- •10.10 TWO INDUSTRIAL EXAMPLES
- •10.10.2 Specifying Assertions for Analyzing the FCE Expert System
- •Meta Rules of the Fuel Cell Expert System
- •10.11.1 General Analysis Algorithm
- •10.11.2 Selecting Independent Rule Sets
- •10.11.3 Checking Compatibility Conditions
- •10.12 QUANTITATIVE TIMING ANALYSIS ALGORITHMS
- •10.12.1 Overview
- •10.12.2 The Equational Logic Language
- •10.12.3 Mutual Exclusiveness and Compatibility
- •10.12.5 Program Execution and Response Time
- •10.12.8 Special Form A and Algorithm A
- •10.12.9 Special Form A
- •10.12.10 Special Form D and Algorithm D
- •10.12.11 The General Analysis Algorithm
- •10.12.12 Proofs
- •10.13 HISTORICAL PERSPECTIVE AND RELATED WORK
- •10.14 SUMMARY
- •EXERCISES
- •11.1 THE OPS5 LANGUAGE
- •11.1.1 Overview
- •11.1.2 The Rete Network
- •11.2.1 Static Analysis of Control Paths in OPS5
- •11.2.2 Termination Analysis
- •11.2.3 Timing Analysis
- •11.2.4 Static Analysis
- •11.2.5 WM Generation
- •11.2.6 Implementation and Experiment
- •11.3.1 Introduction
- •11.3.3 Response Time of OPS5 Systems
- •11.3.4 List of Symbols
- •11.3.5 Experimental Results
- •11.3.6 Removing Cycles with the Help of the Programmer
- •11.4 HISTORICAL PERSPECTIVE AND RELATED WORK
- •11.5 SUMMARY
- •EXERCISES
- •12.1 INTRODUCTION
- •12.2 BACKGROUND
- •12.3 BASIC DEFINITIONS
- •12.3.1 EQL Program
- •12.3.4 Derivation of Fixed Points
- •12.4 OPTIMIZATION ALGORITHM
- •12.5 EXPERIMENTAL EVALUATION
- •12.6 COMMENTS ON OPTIMIZATION METHODS
- •12.6.1 Qualitative Comparison of Optimization Methods
- •12.7 HISTORICAL PERSPECTIVE AND RELATED WORK
- •12.8 SUMMARY
- •EXERCISES
- •BIBLIOGRAPHY
- •INDEX

|
|
|
EXPERIMENTAL EVALUATION |
455 |
|
|
|||
PROGRAM an_optimized_eql_b_program_1; |
|
|||
VAR |
|
|
|
|
a, b, c, d : BOOLEAN; |
|
|
||
RULES |
|
|
|
|
(* 1 *) |
c:=1 IF a=0 |
AND b=0 AND c=0 AND d=0 |
|
|
(* 2 *) [] |
b:=1 IF b=0 |
AND c=1 AND d=0 |
|
|
(* 3 |
*) [] |
a:=1 ! c:=1 |
IF a=0 AND b=1 AND d=0 |
|
(* 5 |
*) [] |
d:=0 ! a:=1 |
IF a=1 AND c=1 AND d=1 |
|
END. |
|
|
|
|
Figure 12.15 An optimized EQL(B) program derived from the program in Figure 12.1, using either the BU or ES algorithm.
PROGRAM an_optimized_eql_b_program_2;
VAR
a, b, c, d : BOOLEAN; |
|
|
||
RULES |
|
|
|
|
(* 1 *) |
c:=1 IF a=0 |
AND b=0 AND c=0 AND d=0 |
||
(* 2 |
*) [] |
b:=1 IF b=0 |
AND c=1 AND d=0 |
|
(* 3 |
*) [] |
a:=1 ! c:=1 |
IF a=0 AND |
b=1 AND d=0 OR |
|
|
|
a=0 AND |
c=1 AND d=0 |
(* 5 |
*) [] |
d:=0 ! a:=1 |
IF a=1 AND |
c=1 AND d=1 |
END. |
|
|
|
|
Figure 12.16 An optimized EQL(B) program derived from the program in Figure 12.1, using the ESM algorithm.
sult (Figure 12.16). Note that rule r4 was found to be redundant and does not appear in any of the resulting programs.
12.5 EXPERIMENTAL EVALUATION
We have implemented three of the four optimization algorithms presented here, and intentionally bypass the implementation of the BU algorithm due to the possible combinatorial complexity of state-space graph generation. This section attempts to experimentally evaluate the performance of these optimization algorithms on two sets of computer-generated EQL programs and on a commercial rule-based expert system.
Because of the general unavailability of analysis tools for real-time rule-based systems, it is hard to assess the performance of optimization methods proposed here. Such analysis tools should derive the number of rules to be fired to reach a fixed point for both original and optimized rule-based programs and should analyze the stability of the programs. For EQL rule-based programs, the Estella analysis tool (described in chapter 10) has the potential to estimate both. Estella can discover potential cycles, and, when no cycles exist, Estella can estimate an upper bound of the number of
456 OPTIMIZATION OF RULE-BASED SYSTEMS
rules to fire to reach a fixed point. Unfortunately, Estella imposes several constraints to rules in EQL programs it can analyze, and even if these constraints are met, it might discover a potential cycle even if one does not exist. Estella’s assessment of stability is sufficient, but not necessary. That is, if no potential cycles are found, the program is guaranteed to be stable, but the discovery of a potential cycle might not ensure that one really exists.
To clearly state the difference between the original and optimized programs, a precise upper bound of the number of rules to fire to reach a fixed point is required. For this purpose, we have built a system like the one described in [Browne, Cheng, and Mok, 1988] that takes an EQL program, converts it to a C-language routine, and then uses it to build an exact state-space graph. Next, the system performs an exhaustive search to find if the EQL program is stable and to derive a precise upper bound of the number of rules to fire to reach a fixed point. In case of cycles, such a bound is given as a maximum number of rules to fire to reach a fixed point from some state without going into a firing cycle. On one side, such estimation of the bound is pessimistic, because it assumes a rule-firing scheduler to select the rules to fire so that it does not find an optimal and shortest path to a fixed point. On the other side, such estimation may be very optimistic, since it assumes the scheduler would avoid any cycle.
Although the analysis method described above is general and could be used with any EQL(B) program, due to substantial computer resources required and high time complexity, it works only with EQL(B) programs that use only a few variables. For this reason, two sets of relatively simple EQL(B) programs that allow for such analysis but that are still complex enough to show the advantages and disadvantages of the proposed optimization methods were computer-generated.
12.5.1 EQL(B) Programs without Cycles
A set of five cycle-free EQL(B) programs were computer-generated. The generator is given the number of rules and variables in the program, and the desired average complexity of the action and condition parts. The action part complexity is proportional to the number of assignments and the enabling condition complexity is proportional to the number of Boolean operations in the rules’ enabling conditions. All test programs were generated to consist of only one independent rule-set. Additional constraints were imposed for the programs to meet one of the special form requirements and therefore to be acceptable for analysis with the Estella tool. Both Estella and the exact state-space graph–based analysis described above were then used to, respectively, estimate and derive the precise upper bound of the number of rules to fire.
Table 12.1 presents the results of the analysis of generated EQL(B) programs and their corresponding optimized versions. Algorithms ES and ESM were used for the optimization. We observed the following:
•Optimization always resulted in a program with the same (P2 and P4) or lower number (P1, P3, and P5) of rule firings to reach a fixed point.

|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
EXPERIMENTAL EVALUATION |
457 |
||||||
TABLE 12.1 Analysis results for unoptimized (U) programs P1 . . . P5 and their |
|
|||||||||||||||||||||
corresponding optimized programs using ES and ESM optimization algorithms |
|
|||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
#R |
|
|
#V |
|
#rules to fire |
|
|
#oper/rule |
|
|
#vars/rule |
|
#vertices |
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
U |
ES |
ESM |
|
|
U |
ES |
ESM |
|
U |
ES |
ESM |
|
U |
ES |
ESM |
ES |
ESM |
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
P1 |
5 |
4 |
3 |
|
5 |
3(5) |
2(4) |
2(5) |
|
1.8 |
10.0 |
13.0 |
1.8 |
4.7 |
4.3 |
6 |
4 |
|||||
P2 |
5 |
5 |
4 |
|
5 |
3(4) |
3(3) |
3(4) |
|
7.2 |
7.8 |
10.0 |
3.8 |
3.8 |
4.0 |
12 |
4 |
|||||
P3 |
5 |
5 |
4 |
|
5 |
4(5) |
3(3) |
3(4) |
|
1.5 |
11.8 |
8.6 |
1.6 |
4.7 |
4.8 |
9 |
3 |
|||||
P4 |
10 |
9 |
7 |
|
5 |
4(5) |
4(5) |
4(5) |
|
2.3 |
11.7 |
8.0 |
2.1 |
5.0 |
4.0 |
18 |
2 |
|||||
P5 |
10 |
9 |
8 |
|
10 |
6(7) |
5(7) |
4(7) |
|
7.2 |
114.4 |
143.7 |
4.5 |
9.6 |
9.9 |
37 |
6 |
#R = number of rules in a program. #V = number of variables used in a program. #rules to fire = maximum number of rules to fire to reach a fixed point (a precise number of rules to fire is given, a number estimated by Estella is given in parentheses). #oper/rule = average number of logical AND, OR, and NOT operations required to evaluate an enabling condition of a rule. #vars/rule = average number of variables used in enabling condition of a rule. #vertices = number of vertices in the state-space graph derived by optimization algorithm.
•For every example program, the optimization found some rules to be redundant.
•The complexity metrics for enabling conditions of the rules (#oper/rule and #vars/rule) indicate that the optimized programs have more complex enabling conditions. The reason for this is that the optimization is actually a process of removing the unstable states with transitions that lead into cycles. After optimization, the enabling conditions are satisfied for equal or usually fewer states than in the original program. Even though we have applied Boolean minimization to the resulting enabling conditions, the increased specialization usually leads to increased complexity of enabling conditions.
•As expected, compared to algorithm ES, algorithm ESM always found a more compact state-space graph with fewer vertices.
•All optimized programs satisfy Estella constraints and enable Estella to be used for analysis. This is a rather special case, and although cycle-free, the optimized programs do not always satisfy Estella constraints. Furthermore, because of the approximate nature of Estella analysis, this may not be sufficient to judge the optimization of an upper bound of the number of rules to fire to reach a fixed state. For example, based on the sole analysis of Estella, one could conclude that algorithm ES optimized program P2 but did not optimize P5, which is in contradiction with a finding based on derivation of the precise upper bound of the number of rules to fire. In all cases, however, Estella found the optimized programs to be stable—the result expected due to the nature of our optimization method.
12.5.2 EQL(B) Programs with Cycles
Similar to programs from Table 12.1, a set of six unstable EQL(B) programs were generated (Table 12.2). These programs have state-space graphs that include unstable and potentially unstable states. An upper bound of the number of rules to fire to reach

458 |
|
OPTIMIZATION OF RULE-BASED SYSTEMS |
|
|
|
|
|
|
|
|
|
|||||||||
TABLE 12.2 Analysis results for unoptimized (U) programs S1 . . . S6 and their |
|
|||||||||||||||||||
corresponding optimized programs using ES and ESM optimization algorithms |
|
|||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
|
|
#R |
|
|
#V |
#rules to fire |
|
|
#oper/rule |
|
#vars/rule |
#vertices |
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
U |
ES |
ESM |
|
U |
ES |
ESM |
|
U |
ES |
ESM |
|
U |
ES |
ESM |
ES |
ESM |
%pus |
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
S1 |
5 |
3 |
2 |
|
4 |
2 |
1(1) |
1(1) |
6.2 |
5.7 |
6.5 |
2.8 |
4.0 |
4.0 |
|
3 |
2 |
50 |
||
S2 |
9 |
9 |
5 |
|
5 |
7 |
4 |
3(4) |
5.7 |
5.7 |
8.2 |
3.9 |
3.9 |
4.2 |
|
8 |
2 |
87.5 |
||
S3 |
5 |
5 |
4 |
|
5 |
5 |
3 |
3 |
1.8 |
11.2 |
10.5 |
1.8 |
4.6 |
4.7 |
|
7 |
5 |
28.1 |
||
S4 |
5 |
3 |
3 |
|
5 |
4 |
2 |
2 |
1.8 |
10.7 |
10.7 |
1.8 |
5.0 |
5.0 |
|
5 |
4 |
52.5 |
||
S5 |
10 |
9 |
8 |
|
10 |
10 |
4 |
4 |
7.2 |
97.6 |
58.7 |
4.5 |
9.6 |
9.6 |
|
24 |
4 |
69.9 |
||
S6 |
10 |
6 |
8 |
|
5 |
8 |
4 |
4(5) |
2.3 |
11.0 |
9.2 |
2.1 |
5.0 |
4.5 |
|
15 |
2 |
50.0 |
%pus = number of potentially unstable states as a percent of all states in unoptimized program. For an explanation of other abbreviations used, see Table 12.1.
a fixed point was derived for original and optimized programs as described in the previous section.
From experimental results shown in Table 12.2, similar conclusions to those in the previous section can be drawn. Most important, optimization always reduced the number of rules to fire to reach a fixed point. Again, compared to ES, algorithm ESM derived the state-space graphs with considerably fewer numbers of vertices. Also, due to the specialization of rules, optimized rules have more complex enabling conditions than unoptimized rules.
A number of the optimized programs (S1, S2, and S6) satisfied Estella’s constraints and enabled Estella to estimate the upper bound of the number of rules to be fired. The effect of optimization to enable this particular use of the Estella tool is not general, but one might find it useful when it takes place.
The programs in both Tables 12.1 and 12.2 were also optimized using algorithm ESMD. This gave similar results as when algorithm ES was used, resulting in statespace graphs with much higher numbers of vertices than in those generated by algorithm ESM. This is due to the high specificity of constraints that algorithm ESMD imposes over the rules to fire in parallel in order to derive a deterministic state-space graph.
12.5.3Industrial Example: Optimization of the Integrated Status Assessment Expert System
To demonstrate the applicability of the proposed optimization techniques, we used it to optimize the Integrated Status Assessment Expert System (ISA) [Marsh, 1988]. This real-time expert system, originally written by Mitre in OPS5, identifies the faulty components in the planned NASA Space Station. Its EQL equivalent is described in [Cheng et al., 1993], and for the purpose here we have converted it to an EQL(B) program that consists of 35 rules and 46 variables.
In the first optimization step, ISA is decomposed into 17 independent rule-sets. The analysis with the Estella tool shows that for only four rule-sets, either the potential number of firings to reach the fixed point is greater than one, the rule-set has a

EXPERIMENTAL EVALUATION |
459 |
TABLE 12.3 Independent rule-sets of ISA with cycle (ISA1), with more than one rule to fire to reach a fixed point (ISA2 and ISA3), or not conforming to constraints to be analyzable by Estella (ISA4)
|
IDs of rules in a subset |
#vars |
|
|
|
ISA1 |
#3, #6, #18, #34, #35 |
40 |
ISA2 |
#11, #19 |
9 |
ISA3 |
#9, #17 |
6 |
ISA4 |
#8, #16, #32, #33 |
16 |
#vars = number of variables used in a rule set.
cycle, or the rules in the set are not analyzable with Estella. Table 12.3 lists the IDs of rules in these sets and gives the number of variables used within each set.
For rule set ISA1, the Estella analysis tool identifies a possible cycle involving rules #34, #10, and #18 (see [Cheng et al., 1993] for the similar analysis that discovered a potential cycle in ISA). For ISA2 and ISA3, Estella estimated the upper bound of rule firings to reach a fixed point to be 2. Rules in ISA4 do not meet Estella’s constraints and could not be further analyzed with Estella.
As for EQL(B) computer-generated programs that were presented in this section, the derivation of the precise upper bound of the number of rules to fire to reach a fixed point is needed to clearly evaluate the effects of the optimization. Due to the relatively low number of variables used, the analysis for ISA2, ISA3, and ISA4 that uses the exact derivation of the complete state-space graph as described in the beginning of this section is possible. To make such exact analysis possible for ISA1, we have changed its rules to obtain an equivalent but analyzable system. Namely, we have observed that several variables appear in ISA1 only in the enabling conditions, and we have found that some pairs of such variables could be replaced by a single variable. For example, if the expressions a=TRUE AND b=TRUE and a=FALSE AND b=FALSE are the only ones that involve a and b and are found among rules in a specific subset, a new variable c may be introduced and used instead of a and b, so that c=FALSE indicates that both a and b are FALSE and c=TRUE indicates that both a and b are TRUE. Two expressions involving a and b, respectively, are then changed to c=TRUE and c=FALSE. Such manual alteration of rules reduced the number of variables used in ISA1 to 14.
The optimization algorithms ES and ESM were then used on the four ISA rulesets mentioned. The exact analysis with the use of the complete state-space graph shows that:
•For ISA1, as Estella analysis suggested, the unoptimized set of rules really is unstable. The longest path from some state to a fixed point that does not involve a cycle requires firing four rules. A corresponding optimized rule set is cyclefree and takes a maximum of three rules to be fired to reach a fixed point. The average number of logical AND, OR, and NOT operations to evaluate an