assertion checks are similar to the functional and control tests in self-checking software, but in this case the operation is administered by operation of the coprocessor. Since the watchdog coprocessor requires access to the input variables or database, the output results of specific processes, and potentially the state of program execution in the on-line system, the shared memory and/or redundant memory and message passing provisions between the on-line system and the coprocessor must be architected carefully. 6.5.1.2 Constraint Predicates The ability to apply the techniques identified above relies on specific properties of the problems being addressed by processor operations and are embodied in the constraint predicate. There are three defined predicate subclasses which formulate the constraint predicate: progress, feasibility, and consistency. The progress predicate utilizes the notion that there exist steps in the sequence of process operations and that the decomposition of the process into a finite number of operations blocks provides opportunity for testability at these intermediate points in the process. The progress predicate surfaces the notion that in some processes the number of steps in a process is known a priori. In others, such as problems of an iterative convergent nature, the number of steps necessary to achieve convergence is not known a priori. Clearly for the class of problems with a known number of process steps, the point at which checking of the results may be performed is known and early or late completion of the process may be utilized to detect errors in the control flow of the process. In the case of problems in which the number of process steps required to reach convergence is not known a priori, the ability to establish an upper bound to utilize if the problem were to become non-convergent, and the ability to establish a convergence envelope which may be utilized to monitor the process may be used as fault detection provisions. The characteristics of certain problems, such as monoton