Abstract
To extend the application domain of the symbolic verification method, definite iterations over altered data structures, which are found to reduce to standard finite iterations, are introduced. The suggested reduction is applicable to definite iterations over altered data structures that contain an exit statement by a condition depending on the variables modified by the loop body. The suggested generalization of the symbolic method makes it applicable to verifying programs over pointers. To illustrate the discussion, the verification of two programs designed for processing linear lists-searching for an element with reordering and elimination of zero elements—is described.
Similar content being viewed by others
REFERENCES
C.A.R. Hoare (1969) ArticleTitleAn Axiomatic Basis for Computer Programming Commun. ACM 12 IssueID1 576–580
V.A. Nepomniaschy O.M. Ryakin (1988) Prikladnye metody verifikatsii programm Radio i Svyaz’ Moscow
J. Stark A. Ireland (1999) Invariant Discovery via Failed Proof Attempts Lecture Notes in Computer Science (Proc. LOPSTR’98) Springer Berlin 271–288
H.D. Mills (1986) ArticleTitleStructured Programming: Retrospect and Prospect IEEE Software 3 IssueID6 58–67
R. Linger H. Mills B. Witt (1979) Structured Programming Addison-Wesley Reading
M.D. Ernst J. Cockrell W.G. Griswold D. Notkin (2001) ArticleTitleDynamically Discovering Likely Program Invariants to Support Program Evolution IEEE Trans. Software Eng. 27 IssueID2 99–123
M. Whalen J. Schumann B. Fischer (2002) Synthesizing Certified Code Lecture Notes in Computer Science (Proc. FME 2002) Springer Berlin 431–450
Necula, G.C., Proof-Carrying Code, Proc. 24th Annu. ACM Symp. on Principles of Programming Languages, ACM, 1997, pp. 106–119.
S.K. Abd-El-Hafiz V.R. Basili (1996) ArticleTitleA Knowledgebased Approach to the Analysis of Loops IEEE Trans. Software Eng. 22 IssueID5 339–360
A.M. Stavely (1995) ArticleTitleVerifying Definite Iteration over Data Structures IEEE Trans. Software Eng. 21 IssueID6 506–514
Nepomniaschy, V.A., Elimination of Loop Invariants in Program Verification, Programmirovanie, 1985, no. 3, pp. 3–13.
Nepomniaschy, V.A., On Problem-Oriented Verification of Programs, Programmirovanie, 1986, no. 1, pp. 3–12.
V.A. Nepomniaschy (1993) Verification of Programs over Arrays Sistemnaya informatika Nauka Novosibirsk 68–98
Nepomniaschy, V.A., Verification of Definite Iterations over Data Structures, Kibernetika i Sistemnyi Analiz, 1999, no. 3, pp. 25–37.
V.A. Nepomniaschy (1999) Verification of Definite Iteration over Hierarchical Data Structures Lecture Notes in Comput. Science (Proc. FASE/ETAPS’99) Springer Berlin 176–187
Nepomniaschy, V.A., Verification of Finite Iterations over Tuples of Data Structures, Programmirovanie, 2002, no. 1, pp. 1–10.
D.C. Luckham N. Suzuki (1979) ArticleTitleVerification of Array, Record, and Pointer Operations in Pascal ACM Trans. Programming Languages Systems 1 IssueID2 226–244
Reynolds, J.C., Reasoning about Shared Mutable Data Structure, Proc. of the Symp. in Celebration of the Work of C.A.R. Hoare, Oxford, 1999, pp. 1–22.
Bornat R. Proving Pointer Programs in Hoare Logic. Lecture Notes in Computer Science (Proc. MPC 2000), Berlin: Springer, vol. 1837, pp. 102–126.
O’Hearn, P., Reynolds, J., and Yang, H., Local Reasoning about Programs that Alter Data Structures, Lecture Notes in Computer Science (Proc. CSL 2001), Berlin: Springer, vol. 2142, pp.1–19.
Author information
Authors and Affiliations
Additional information
Translated from Programmirovanie, Vol. 31, No. 1, 2005.
Original Russian Text Copyright © 2005 by Nepomniaschy.
Rights and permissions
About this article
Cite this article
Nepomniaschy, V.A. Symbolic method of verification of definite iterations over altered data structures. Program Comput Soft 31, 1–9 (2005). https://doi.org/10.1007/s11086-005-0007-7
Received:
Issue Date:
DOI: https://doi.org/10.1007/s11086-005-0007-7