Abstract
Fault-tolerance is a crucial property in many systems. Thus, mechanical verification of algorithms associated with synthesis of faulttolerant programs is desirable to ensure their correctness. In this paper, we present the mechanized verification of algorithms that automate the addition of fault-tolerance to a given fault-intolerant program using the PVS theorem prover. By this verification, not only we prove the correctness of the synthesis algorithms, but also we guarantee that any program synthesized by these algorithms is correct by construction. Towards this end, we formally define a uniform framework for formal specification and verification of fault-tolerance that consists of abstract definitions for programs, specifications, faults, and levels of fault-tolerance, so that they are independent of platform and architecture. The essence of synthesis algorithms involves fixpoint calculations. Hence, we also develop a reusable library for fixpoint calculations on finite sets in PVS.
This work was partially sponsored by NSF CAREER CCR-0092724, DARPA Grant OSURS01-C-1901, ONR Grant N00014-01-1-0744, NSF grant EIA-0130724, and a grant from Michigan State University.
This is a preview of subscription content, log in via an institution.
Buying options
Tax calculation will be finalised at checkout
Purchases are for personal use only
Learn about institutional subscriptionsPreview
Unable to display preview. Download preview PDF.
References
Owre, S., Rushby, J., Shankar, N., von Henke, F.: Formal verification for fault-tolerant architectures: Prolegomena to the design of PVS. IEEE Transactions on Software Engineering 21(2), 107–125 (1995)
Mantel, H., Gärtner, F.C.: A case study in the mechanical verification of fault-tolerance. Technical Report TUD-BS-1999-08, Department of Computer Science, Darmstadt University of Technology (1999)
Qadeer, S., Shankar, N.: Verifying a self-stabilizing mutual exclusion algorithm. In: Gries, D., de Roever, W.-P. (eds.) IFIP International Conference on Programming Concepts and Methods (PROCOMET 1998), pp. 424–443. Chapman and Hall, Shelter Island (1998)
Dijkstra, E.W.: Self-stabilizing systems in spite of distributed control. Communications of the ACM 17(11) (1974)
Kulkarni, S.S., Rushby, J., Shankar, N.: A case-study in component-based mechanical verification of fault-tolerant programs. In: Proceedings of the 19th IEEE International Conference on Distributed Computing Systems Workshop on Self-Stabilization (WSS1999), Austin, Texas, USA, June 1999, pp. 33–40 (1999)
Kulkarni, S.S.: Component-based design of fault-tolerance. PhD thesis, Ohio State University (1999)
Kulkarni, S.S., Arora, A.: Automating the addition of fault-tolerance. Formal Techniques in Real-Time and Fault-Tolerant Systems (2000)
Kulkarni, S.S., Arora, A.: Automating the addition of fault-tolerance. Technical Report MSU-CSE-00-13, Department of Computer Science and Engineering, Michigan State University, East Lansing, Michigan (2001)
Kulkarni, S.S., Ebnenasir, A.: Automated synthesis of multitolerance. IEEE Conference on Dependable and Network Systems(DSN2004) (2004)
Kulkarni, S.S., Ebnenasir, A.: Enhancing the fault-tolerance of nonmasking programs. In: International Conference on Distributed Computing Systems (2003)
Ebnenasir, A., Kulkarni, S.S.: A framework for automatic synthesis of fault-tolerance, http://www.cse.msu.edu/sandeep/software/Code/synthesis-framework/
Alpern, B., Schneider, F.B.: Defining liveness. Information Processing Letters 21, 181–185 (1985)
Arora, A., Gouda, M.G.: Closure and convergence: A foundation of fault-tolerant computing. IEEE Transactions on Software Engineering 19(11), 1015–1027 (1993)
Owre, S., Shankar, N., Rushby, J.M., Stringer-Calvert, D.W.J.: PVS Language Reference, Version 2.4. Computer Science Laboratory, SRI International, Menlo Park, CA (December 2001), http://pvs.csl.sri.com/manuals.html
Bonakdarpour, B.: Mechanical verification of automatic synthesis of fault-tolerant programs. Master’s thesis, Michigan State University (2004)
Emerson, E.A., Clarke, E.M.: Using branching time temporal logic to synthesis synchronization skeletons. Science of Computer Programming 2(3), 241–266 (1982)
Manna, Z., Wolper, P.: Synthesis of communicating processes from temporal logic specifications. ACM Transactions on Programming Languages and Systems 6(1), 68–93 (1984)
Kupferman, O., Vardi, M.Y.: Synthesizing distributed systems. In: Proc. 16th IEEE Symp. on Logic in Computer Science (July 2001)
Attie, P., Emerson, E.: Synthesis of concurrent systems with many similar processes. ACM Transactions on Programming Languages and Systems 20(1), 51–115 (1998)
Kulkarni, S.S., Arora, A., Chippada, A.: Polynomial Time Synthesis of Byzantine Agreement. In: Symposium on Reliable Distributed Systems (2001)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2005 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Kulkarni, S.S., Bonakdarpour, B., Ebnenasir, A. (2005). Mechanical Verification of Automatic Synthesis of Fault-Tolerant Programs. In: Etalle, S. (eds) Logic Based Program Synthesis and Transformation. LOPSTR 2004. Lecture Notes in Computer Science, vol 3573. Springer, Berlin, Heidelberg. https://doi.org/10.1007/11506676_3
Download citation
DOI: https://doi.org/10.1007/11506676_3
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-26655-6
Online ISBN: 978-3-540-31683-1
eBook Packages: Computer ScienceComputer Science (R0)