Abstract
Design, development, and reuse of generic data abstractions are at the core of scalable computing. This paper presents a novel data abstraction that captures a navigable tree position. The mathematical modeling of the abstraction encapsulates the current tree position, which can be used to navigate and modify the tree. The encapsulation of the tree position in the data abstraction specification avoids explicit references and aliasing, thereby simplifying verification of (imperative) client code that uses the data abstraction. The generic data abstraction is reusable, and its design makes verification scalable. A general tree theory, rich with mathematical notations and results, has been developed to ease the specification and verification tasks. The paper contains an example to illustrate automated verification ramifications and issues in scalability. With sufficient tree theory development, automated proving seems plausible even in the absence of a special-purpose tree solver.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Notes
- 1.
Current RESOLVE compiler parses only ASCII characters, so all mathematical characters used are converted to ASCII equivalents.
References
Floyd, R.: Assigning meaning to programs. In: Schwartz, J.T. (eds.) Proceedings of a Symposium in Applied Mathematics, vol. 19, pp. 19–32. American Mathematical Society (1967)
Naur, P.: Proof of algorithms by general snapshots. BIT 6, 310–316 (1966)
London, R.: A view of program verification. In: ACM Proceedings of the International Conference on Reliable Software, pp. 534–545. ACM Digital Library (1975)
Peña, R.: An assertional proof of red–black trees using Dafny. J. Autom. Reason. 64(4), 767–791 (2019). https://doi.org/10.1007/s10817-019-09534-y
Dross, C., Moy, Y.: Auto-active proof of red-black trees in SPARK. In: Barrett, C., Davies, M., Kahsai, T. (eds.) NFM 2017. LNCS, vol. 10227, pp. 68–83. Springer, Cham (2017). https://doi.org/10.1007/978-3-319-57288-8_5
Leno, K.R.M.: Dafny: an automatic program verifier for functional correctness. In: Clarke, E.M., Voronkov, A. (eds.) LPAR-16th International Conference, LPAR-16, pp. 348–370, Senegal (2010)
Huet, G.: The zipper. J. Funct. Program. 5, 549–554 (1997)
Darragh, P., Adam D.M.: Parsing with zippers (functional pearl). In: Proceedings of the ACM on Programming Languages, vol. 4, p. 28, No. ICFP. ACM, August 2020
RSRG: Research Grammar. https://www.cs.clemson.edu/resolve /research/grammar/grammar.html. Accessed 13 Oct 2020
Barnes, J.G.P.: An overview of Ada. Softw. Pract. Experience 10(11), 851–887 (1980)
Sitaraman, M., et al.: Building a push-botton RESOLVE verifier: progress and challenges. Formal Aspects Comput. 23(5), 607–626 (2011)
Cook, C., Harton, H., Smith, H., Sitaraman, M.: Specification engineering and modular verification using a web-integrated verifying compiler. In: Glinz, M., Murphy, G.C., Pezz\(\tilde{e}\), M. (eds.) ICSE 2012, pp. 1379–1382. IEEE Computer Society (2012)
Ernst, G., Schellhorn, G., Reif, W.: Verification of B+ trees: an experiment combining shape analysis and interactive theorem proving. In: Barthe, G., Pardo, A., Schneider, G. (eds.) SEFM 2011. LNCS, vol. 7041, pp. 188–203. Springer, Heidelberg (2011). https://doi.org/10.1007/978-3-642-24690-6_14
Weide, B., Heym, W.: Specification and verification with references. In: Proceedings OOPSLA Workshop on SAVCBS, October 2001
Kulczycki, G., Smith, H., Harton, H., Sitaraman, M., Ogden, W.F., Hollingsworth, J.E.: The location linking concept: a basis for verification of code using pointers. In: Joshi, R., Müller, P., Podelski, A. (eds.) VSTTE 2012. LNCS, vol. 7152, pp. 34–49. Springer, Heidelberg (2012). https://doi.org/10.1007/978-3-642-27705-4_4
Mbwambo, N.: A Well-Designed, Tree-Based, Generic Map Component to Challenge the Progress towards Automated Verification. MS Thesis, Clemson University (2017)
Harms, D., Weide, B.: Copying and swapping on the design of reusable software components. IEEE Trans. Softw. Eng. 17(5), 424–435 (1991)
Kirschenbaum, J., et al.: Verifying component-based software: deep mathematics or simple bookkeeping? In: Edwards, S.H., Kulczycki, G. (eds.) ICSR 2009. LNCS, vol. 5791, pp. 31–40. Springer, Heidelberg (2009). https://doi.org/10.1007/978-3-642-04211-9_4
Harton, H.: Mechanical and Modular Verification Condition Generation for Object-Based Software. PhD Thesis, Clemson University (2011)
Smith, H.: Engineering Specifications and Mathematics for Verified Software. PhD Thesis, Clemson University (2013)
Sun, Y.: Towards Automated Verification of Object-Based Software with Reference Behavior. Ph.D. Thesis, Clemson University (2018)
Acknowledgment
The authors would like to acknowledge the unique contribution of Dr. William F. Ogden to this work. More appreciation to other research group members at Clemson and Ohio State universities. This research is funded in part by grants from the U. S. National Science Foundation.
Author information
Authors and Affiliations
Corresponding author
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2022 The Author(s), under exclusive license to Springer Nature Switzerland AG
About this paper
Cite this paper
Mbwambo, N.M.J., Sun, YS., Krone, J., Sitaraman, M. (2022). Scalable Computing Through Reusability: Encapsulation, Specification, and Verification for a Navigable Tree Position. In: Arai, K. (eds) Intelligent Computing. SAI 2022. Lecture Notes in Networks and Systems, vol 506. Springer, Cham. https://doi.org/10.1007/978-3-031-10461-9_4
Download citation
DOI: https://doi.org/10.1007/978-3-031-10461-9_4
Published:
Publisher Name: Springer, Cham
Print ISBN: 978-3-031-10460-2
Online ISBN: 978-3-031-10461-9
eBook Packages: Intelligent Technologies and RoboticsIntelligent Technologies and Robotics (R0)