Skip to main content
Log in

A Mechanization of Unity in PC-NQTHM-92

  • Published:
Journal of Automated Reasoning Aims and scope Submit manuscript

Abstract

This paper presents in detail how the Unity logic for reasoning about concurrent programs was formalized within the mechanized theorem prover PC-NQTHM-92. Most of Unity′s proof rules were formalized in the unquantified logic of NQTHM, and the proof system has been used to mechanically verify several concurrent programs. The mechanized proof system is sound by construction, since Unity′s proof rules were proved about an operational semantics of concurrency, also presented here. Skolem functions are used instead of quantifiers, and the paper describes how proof rules containing Skolem function are used instead of Unity′s quantified proof rules when verifying concurrent programs. This formalization includes several natural extensions to Unity, including nondeterministic statements. The paper concludes with a discussion of the cost and value of mechanization.

This is a preview of subscription content, log in via an institution to check access.

Access this article

Price excludes VAT (USA)
Tax calculation will be finalised during checkout.

Instant access to the full article PDF.

References

  1. Alpern, B., Demers, A. J. and Schneider, F. B.: Safety without stuttering, Inform. Process. Lett. 23 (1986), 177-180.

    Google Scholar 

  2. Alpern, B. and Schneider, F. B.: Defining liveness, Inform. Process. Lett. 21 (1985), 181-185.

    Google Scholar 

  3. Anderson, F.: A Verified Theorem Prover for UNITY in Higher Order Logic, Ph.D. Thesis, Technical University of Denmark, 1992.

  4. Apt, K. R., Francez, N. and Katz, S.: Appraising fairness in distributed languages, Distrib. Comput. 2 August (1988), 226-241.

    Google Scholar 

  5. Ben-Ari, M.: Algorithms for on-the-fly garbage collection, ACM Trans. Programm. Languages and Systems 6 (1984), 281-296.

    Google Scholar 

  6. Bevier,W. R.: A library for hardware verification, Technical report, Computational Logic, Inc., Austin, Texas 78703, 1988. CLI Internal Note 57.

    Google Scholar 

  7. Bevier, W. R., Hunt, W. A., Jr. and Young, W. D.: Toward verified execution environments, Technical Report 5, Computational Logic, Inc., 1987. Also in Proceedings of the 1987 IEEE Symposium on Security and Privacy.

  8. Boyer, R. S. and Moore, J S.: A Computational Logic, Academic Press, New York, 1979.

    Google Scholar 

  9. Boyer, R. S. and Moore, J S.: Metafunctions: Proving them correct and using them efficiently as new proof procedures, in The Correctness Problem in Computer Science, Academic Press, London, 1981.

    Google Scholar 

  10. Boyer, R. S. and Moore, J S.: The addition of bounded quantification and partial functions to a computational logic and its theorem prover, J. Automated Reasoning 4 (1988), 117-172.

    Google Scholar 

  11. Boyer, R. S. and Moore, J S.: A Computational Logic Handbook, Academic Press, Boston, 1988.

    Google Scholar 

  12. Boyer, R. S., Goldschlag, D., Kaufmann, M. and Moore, J S.: Functional instantiation in first order logic, in Artificial Intelligence and Mathematical Theory of Computation: Papers in Honor of John McCarthy, Academic Press, 1991, pp. 7-26.

  13. Browne, M. C., Clarke, E.M. and Dill, D. L.: Automatic ciruit verification using temporal logic: Two new examples, in Formal Aspects of VLSI Design, Proceedings of the 1985 Edinburgh Workshop on VLSI, Camilleri, North-Holland, 1986, pp. 113-124.

  14. Camilleri, A.: Reasoning in CSP via the HOL theorem prover, IEEE Transactions on Software Engineering, SE-16, September 1990.

  15. Chandy, K. M. and Misra, J.: Parallel Program Design: A Foundation, Addison Wesley, Reading, Massachusetts, 1988.

    Google Scholar 

  16. Clarke, E.M., Emerson, E. A. and Sistla, A. P.: Automatic verification of finite-state concurrent systems using temporal logic, ACM Trans. Programm. Languages and Systems 8(2) (April 1986), 244-263.

    Google Scholar 

  17. Clarke, E. M. and Grumberg, O.: Research on automatic verification of finite state systems, Technical Report CS-87-105, CMU, January 1987.

  18. Cohn, A.: The notion of proof in hardware verification, J. Automated Reasoning 5(2) (June 1989), 127-139.

    Google Scholar 

  19. Crawford, J. and Goldschlag, D.: The mechanical verification of distributed systems, Technical Report 7, Computational Logic, Inc., Austin, Texas, July 1987.

    Google Scholar 

  20. Dijkstra, E. W.: Two starvation free solutions to a general exclusion problem, EWD 625, Plataanstraat 5, 5671 Al Nuenen, The Netherlands, 1978.

  21. Dill, D. L.: Trace Theory for Automatic Hierarchical Verification of Speed-Independent Circuits, The MIT Press, Cambridge, Massachusetts, 1988.

    Google Scholar 

  22. Francez, N.: Fairness, Springer-Verlag, New York, 1986.

    Google Scholar 

  23. Gerth, R. and Pnueli, A.: Rooting unity, in Fifth International Workshop on Software Specification and Design, ACM Sigsoft Engineering Notes 14(3) (1989), 11-19.

    Google Scholar 

  24. Goldschlag, D.: A mechanically verified proof system for concurrent programs, Technical Report 32, Computational Logic, Inc., Austin, Texas, January 1989.

    Google Scholar 

  25. Goldschlag, D.: A mechanical formalization of several fairness notions, in '91: Formal Software Development Methods, Springer Lecture Notes in Comput. Sci. 551, 1991.

  26. Goldschlag, D.M.: Mechanically verifying concurrent programs with the Boyer-Moore prover, IEEE Trans. on Software Engineering, SE-16(9), September 1990.

  27. Goldschlag, D. M.: Mechanizing unity, in Programming Concepts and Methods, North-Holland, Amsterdam, 1990.

    Google Scholar 

  28. Goldschlag, D. M.: Proving proof rules: A proof system for concurrent programs, '90, June 1990.

  29. Goldschlag, D. M.: Mechanically Verifying Concurrent Programs, Ph.D. Thesis, The University of Texas at Austin, 1992. Also available as Technical Report #71 from Computational Logic, Inc.

  30. Goldschlag, D. M.: Mechanically verifying safety and liveness properties of delay insensitive circuits, Formal Methods in System Design 5 (1994), 207-225.

    Google Scholar 

  31. Good, D. I., Cohen, R. M. and Keeton-Williams, J.: Principles of proving concurrent programs in GYPSY, in Proceedings of 6th Symposium of Principles of Programming Languages, ACM, January 1979.

  32. Good, D. I.: The proof of a distributed system in GYPSY, in M. J. Elphick (ed.), Formal Specification - Proceedings of the Joint IBM/University of Newcastle upon Tyne Seminar, September 1982. Also Technical Report #30, @value(ICSCACMP).

  33. Gordon, M.: Hol: A proof generating system for higher-order logic, Technical Report 103, University of Cambridge, Computer Laboratory, 1987.

  34. Hoare, C. A. R.: An axiomatic basis for computer programming, CACM 12 (1969), 271-281.

    Google Scholar 

  35. Hoare, C. A. R.: Communicating Sequential Processes, Prentice-Hall, Englewood Cliffs, NJ, 1985.

    Google Scholar 

  36. Hunt, W. A., Jr.: Microprocessor design verification, J. Automated Reasoning 5(4) (December 1989), 429-460.

    Google Scholar 

  37. Jutla, C. S., Knapp, E. and Rao, J. R.: Extensional semantics of parallel programs, Technical Report, Department of Computer Sciences, The University of Texas at Austin, November 1988.

  38. Kaufmann, M.: A formal semantics and proof of soundness for the logic of the NQTHM version of the Boyer-Moore theorem prover, Technical Report, Institute for Computing Science, University of Texas at Austin, 1986. ICSCA Internal Note 229.

  39. Kaufmann, M.: A user' manual for an interactive enhancement to the Boyer-Moore theorem prover, Technical Report ICSCA-CMP-60, Institute for Computing Science, University of Texas at Austin, 1987. Also available through Computational Logic, Inc., Suite 290, 1717 West Sixth Street, Austin, TX.

  40. Kaufmann, M.: Defn-sk: An extension of the Boyer-Moore theorem prover to support firstorder quantification, J. Automated Reasoning 9(3) (December 1992), 355-372.

    Google Scholar 

  41. Knapp, E.: Soundness and relative completeness of unity logic, Technical Report, Department of Computer Science, The University of Texas at Austin, October 1990.

  42. Lamport, L.: The temporal logic of actions, Technical Report 79, DEC Systems Research Center, 130 Lytton Avenue, Palo Alto, CA 94301, 1991.

    Google Scholar 

  43. Manna, Z. and Pnueli, A.: Verification of concurrent programs: The temporal framework, in The Correctness Problem in Computer Science, Academic Press, London, 1981.

    Google Scholar 

  44. Manna, Z. and Pnueli, A.: Adequate proof principles for invariance and liveness properties of concurrent programs, Sci. Comput. Programming 4 (1984), 257-289.

    Google Scholar 

  45. Manna, Z. and Pnueli, A.: An exercise in the verification of multi-process programs, in Beauty Is Our Business, Springer-Verlag, 1990, pp. 289-301.

  46. Misra, J.: Auxiliary variables, Technical Report, Notes on UNITY: 15-90, Department of Computer Sciences, The University of Texas at Austin, July 1990.

  47. Misra, J.: Preserving progress under program composition, Technical Report, Notes on UNITY: 17-90, Department of Computer Sciences, The University of Texas at Austin, July 1990.

  48. Misra, J.: Soundness of the substitution axiom, Technical Report, Notes on UNITY: 14-90, Department of Computer Sciences, The University of Texas at Austin, March 1990.

  49. Moore, J S.: A mechanically verified language implemenation, J. Automated Reasoning 5(4) (December 1989), 493-518.

    Google Scholar 

  50. Moore, J S.: System verification, J. Automated Reasoning 5(4) (December 1989), 409-410.

    Google Scholar 

  51. Nagayama, M. and Talcott, C.: An Nqthm mechanization of an exercise in the verification of multi-process programs, Technical Report STAN-CS-91-1370, Stanford University, 1991.

  52. Owicki, S. and Gries, D.: Verifying parallel programs: An axiomatic approach, CACM 19(5) (1976), 279-285.

    Google Scholar 

  53. Pachl, J.: A simple proof of a completeness result for leads-to in the Unity logic, Technical Report RZ 2060 (#72085), IBM Research Division, November 1990.

  54. Russinoff, D. M.: Verifying concurrent programs with the Boyer-Moore prover, Technical Report STP/ACT-218-90, MCC, Austin, Texas, 1990.

  55. Russinoff, D. M.: A mechanically verified incremental garbage collector, Technical Report STP/ACT-91, MCC, Austin, Texas, 1991.

  56. Sanders, B. A.: Stepwise refinement of mixed specifications of concurrent programs, in Programming Concepts and Methods, North-Holland, Amsterdam, 1990.

    Google Scholar 

  57. Shankar, N.: Proof checking metamathematics: Volumes I and II, Technical Report 9, Computational Logic, Inc., April 1987.

  58. Shankar, N.: A mechanical proof of the Church-Rosser theorem, J. ACM 35 (1988), 475-522.

    Google Scholar 

  59. Singh, A.: Leads-to and program union, Technical Report, Notes on UNITY: 06-89, Department of Computer Sciences, The University of Texas at Austin, June 1989.

  60. Steele, G. L., Jr.: Common Lisp The Language, Digital Press, 1984.

  61. Young, W. D.: A mechanically verified code generator, J. Automated Reasoning 5(4) (December 1989), 493-518.

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Rights and permissions

Reprints and permissions

About this article

Cite this article

Goldschlag, D.M. A Mechanization of Unity in PC-NQTHM-92. Journal of Automated Reasoning 23, 445–498 (1999). https://doi.org/10.1023/A:1006262609127

Download citation

  • Issue Date:

  • DOI: https://doi.org/10.1023/A:1006262609127

Navigation