In [14], we proposed a framework for the automatic verification of reactive<br />systems. Our main tool is a decision procedure, Mona, for Monadic<br />Second-order Logic (M2L) on finite strings. Mona translates a formula in<br />M2L into a finite-state automaton. We show in [14] how traces, i.e. finite<br />executions, and their abstractions can be described behaviorally. These<br />state-less descriptions can be formulated in terms of customized temporal<br />logic operators or idioms.<br />In the present paper, we give a self-contained, introductory account of<br />our method applied to the RPC-memory specification problem of the 1994<br />Dagstuhl Seminar on Specification and Refinement of Reactive Systems.<br />The purely behavioral descriptions that we formulate from the informal<br />specifications are formulas that may span 10 pages or more.<br />Such descriptions are a couple of magnitudes larger than usual temporal<br />logic formulas found in the literature on verification. To securely<br />write these formulas, we introduce Fido [16] as a reactive system description<br />language. Fido is designed as a high-level symbolic language for<br />expressing regular properties about recursive data structures.<br />All of our descriptions have been verified automatically by Mona from<br />M2L formulas generated by Fido.<br />Our work shows that complex behaviors of reactive systems can be<br />formulated and reasoned about without explicit state-based programming.<br />With Fido, we can state temporal properties succinctly while enjoying<br />automated analysis and verification.
Read full abstract