a generalized assertion language
The motivation behind the work in debugging languages is to provide the programmer with primitives so that he may search for events during execution, which are suspected to be anomalous. Events that may be specified by most existing debugging languages are very elementary. Also, there are no facilities to combine them into more complex events. Even though he can selectively monitor the history of execution, the programmer usually has to explore a vast mass of information in order to check the absence or presence of anomalous conditions. The philosophy of the assertion approach is to provide facilities with which the programmer may specify conditions, which the system can check at execution time. Only violations are reported. By suppressing irrelevant information, it makes it a lot easier to detect anomalies. The assertion language described in this paper is generalized in the sense that it permits the programmer to refer to not only current events, but also past events. Without such generalization, it is not possible to specify many interesting properties of programs. In addition, the language is open-ended by allowing a user to define checking routines of his own. Relevant aspects of the language and examples are given.
assertion current and past state vectors operation sequence and frequency count static verification vs dynamic checking