The first rule corresponds to a simple change of value for a controlled parameter (representing to whom to send reminders); the second rule captures an alternative design for getting participant constraints. The software will accordingly shift to these alternative solutions for the participant observed to be unreliable in that sense (Step 4).
Step 2 in this dynamic evolution scheme can be fully automated when the assertions to monitor are specified formally in temporal logic. As we saw in Section 4.4.2, such assertions are interpreted over system histories; that is, temporal sequences of events. The negation of a temporal logic assertion gives us the corresponding violation condition; a monitor for it will be watching for corresponding event traces. Such monitor can be automatically generated through two kinds of approaches: