Abstract
The symbolic method for verifying definite iterations over hierarchical data structures without loop invariants is extended to allow tuples of altered data structures and the termination statement which contains a condition depending on variables modified by the iteration body. Transformations of these generalized iterations to the standard ones are proposed and justified. A technique for generating verification conditions is described. The generalization of the symbolic verification method allows us to apply it to pointer programs. As a case study, programs over doubly-linked lists are considered. A program that merges in-place ordered doubly-linked lists is verified by the symbolic method without loop invariants.
This work was partly supported by Russian Foundation for Basic Research under grant 04-01-00114.
Preview
Unable to display preview. Download preview PDF.
Similar content being viewed by others
References
Abd-El-Hafiz, S.K., Basili, V.R.: A knowledge - based approach to the analysis of loops. IEEE Trans. of Software Eng. 22(5), 339–360 (1996)
Bornat, R.: Proving pointer programs in Hoare logic. In: Backhouse, R., Oliveira, J.N. (eds.) MPC 2000. LNCS, vol. 1837, pp. 102–126. Springer, Heidelberg (2000)
Ernst, M.D., et al.: Dynamically discovering likely program invariants to support program evolution. IEEE Trans. of Software Eng. 27(2), 99–123 (2001)
Gries, D., Gehani, N.: Some ideas on data types in high-level languages. Comm. ACM 20(6), 414–420 (1977)
Hehner, E.C.R., Gravell, A.M.: Refinement semantics and loop rules. In: Woodcock, J.C.P., Davies, J., Wing, J.M. (eds.) FM 1999. LNCS, vol. 1709, pp. 1497–1510. Springer, Heidelberg (1999)
Hoare, C.A.R.: An axiomatic basis of computer programming. Comm. ACM 12(10), 576–580 (1969)
Hoare, C.A.R.: A note on the for statement. BIT 12(3), 334–341 (1972)
Hoare, C.A.R.: The verifying compiler: a grand challenge for computing research. In: Broy, M., Zamulin, A.V. (eds.) PSI 2003. LNCS, vol. 2890, pp. 1–12. Springer, Heidelberg (2004)
Immerman, N., et al.: Verification via structure si+mulation. In: Alur, R., Peled, D.A. (eds.) CAV 2004. LNCS, vol. 3114, pp. 281–294. Springer, Heidelberg (2004)
Linger, R.C., Mills, H.D., Witt, B.I.: Structured programming: theory and practice. Addison Wesley, Reading (1979)
Luckham, D.C., Suzuki, N.: Verification of array, record and pointer operations in Pascal. ACM Trans. on Programming Languages and Systems 1(2), 226–244 (1979)
Mehta, F., Nipkow, T.: Proving pointer programs in higher-order logic. In: Baader, F. (ed.) CADE 2003. LNCS (LNAI), vol. 2741, pp. 121–135. Springer, Heidelberg (2003)
Meyer, B.: Towards practical proofs of class correctness. In: Bert, D., P. Bowen, J., King, S. (eds.) ZB 2003. LNCS, vol. 2651, pp. 359–387. Springer, Heidelberg (2003)
Mills, H.D.: Structured programming: retrospect and prospect. IEEE Software 3(6), 58–67 (1986)
Morris, J.M.: A general axiom of assignment, Assignment and linked data structures. Lecture Notes of Intern. Summer School on Theoretical foundations of programming methodology, D. Reidel, pp. 25–41 (1982)
Necula, G.C.: Proof-carrying code. In: Proc. 24th Annual ACM Symposium on Principles of Programming Languages, pp. 106–119. ACM Press, New York (1997)
Nepomniaschy, V.A.: Loop invariant elimination in program verification. Programming and Computer Software 3, 129–137 (1985) (English translation of Russian Journal ”Programmirovanie”)
Nepomniaschy, V.A.: On problem–oriented program verification. Programming and Computer Software 1, 1–9 (1986)
Nepomniaschy, V.A., Sulimov, A.A.: Problem-oriented means of program specification and verification in project SPECTRUM. In: Miola, A. (ed.) DISCO 1993. LNCS, vol. 722, pp. 374–378. Springer, Heidelberg (1993)
Nepomniaschy, V.A., Sulimov, A.A.: Problem-oriented verification system and its application to linear algebra programs. Theoretical Computer Science 119, 173–185 (1993)
Nepomniaschy, V.A.: Symbolic verification method for definite iteration over data structures. Information Processing Letters 69, 207–213 (1999)
Nepomniaschy, V.A.: Verification of definite iteration over hierarchical data structures. In: Finance, J.-P. (ed.) ETAPS 1999 and FASE 1999. LNCS, vol. 1577, pp. 176–187. Springer, Heidelberg (1999)
Nepomniaschy, V.A.: Verification of definite iteration over tuples of data structures. Programming and Computer Software 1, 1–10 (2002)
Nepomniaschy, V.A.: Symbolic verification method for definite iteration over altered data structures. Programming and Computer Software 1, 1–12 (2005)
O’Hearn, P., Reynolds, J., Yang, H.: Local reasoning about programs that alter data structures. In: Fribourg, L. (ed.) CSL 2001 and EACSL 2001. LNCS, vol. 2142, pp. 1–19. Springer, Heidelberg (2001)
Reynolds, J.C.: Reasoning about shared mutable data structure. In: Proc. Symp. in celebration of the work of C.A.R. Hoare, Oxford, pp. 1–22 (1999)
Stark, J., Ireland, A.: Invariant discovery via failed proof attempts. In: Flener, P. (ed.) LOPSTR 1998. LNCS, vol. 1559, pp. 271–288. Springer, Heidelberg (1999)
Stavely, A.M.: Verifying definite iteration over data structures. IEEE Trans. of Software Eng. 21(6), 506–514 (1995)
Whalen, M., Schumann, J., Fischer, B.: Synthesizing certified code. In: Eriksson, L.-H., Lindsay, P.A. (eds.) FME 2002. LNCS, vol. 2391, pp. 431–450. Springer, Heidelberg (2002)
Author information
Authors and Affiliations
Editor information
Rights and permissions
Copyright information
© 2008 Springer-Verlag Berlin Heidelberg
About this chapter
Cite this chapter
Nepomniaschy, V. (2008). Symbolic Verification Method for Definite Iterations over Tuples of Altered Data Structures and Its Application to Pointer Programs. In: Avron, A., Dershowitz, N., Rabinovich, A. (eds) Pillars of Computer Science. Lecture Notes in Computer Science, vol 4800. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-540-78127-1_29
Download citation
DOI: https://doi.org/10.1007/978-3-540-78127-1_29
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-78126-4
Online ISBN: 978-3-540-78127-1
eBook Packages: Computer ScienceComputer Science (R0)