Skip to main content

Scalable Computing Through Reusability: Encapsulation, Specification, and Verification for a Navigable Tree Position

  • Conference paper
  • First Online:
Intelligent Computing (SAI 2022)

Part of the book series: Lecture Notes in Networks and Systems ((LNNS,volume 506))

Included in the following conference series:

  • 746 Accesses

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.

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

Access this chapter

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 189.00
Price excludes VAT (USA)
  • Available as EPUB and PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 249.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

Notes

  1. 1.

    Current RESOLVE compiler parses only ASCII characters, so all mathematical characters used are converted to ASCII equivalents.

References

  1. 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)

    Google Scholar 

  2. Naur, P.: Proof of algorithms by general snapshots. BIT 6, 310–316 (1966)

    Article  Google Scholar 

  3. London, R.: A view of program verification. In: ACM Proceedings of the International Conference on Reliable Software, pp. 534–545. ACM Digital Library (1975)

    Google Scholar 

  4. 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

    Article  MathSciNet  MATH  Google Scholar 

  5. 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

    Chapter  Google Scholar 

  6. 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)

    Google Scholar 

  7. Huet, G.: The zipper. J. Funct. Program. 5, 549–554 (1997)

    Article  MathSciNet  Google Scholar 

  8. 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

    Google Scholar 

  9. RSRG: Research Grammar. https://www.cs.clemson.edu/resolve /research/grammar/grammar.html. Accessed 13 Oct 2020

  10. Barnes, J.G.P.: An overview of Ada. Softw. Pract. Experience 10(11), 851–887 (1980)

    Article  Google Scholar 

  11. Sitaraman, M., et al.: Building a push-botton RESOLVE verifier: progress and challenges. Formal Aspects Comput. 23(5), 607–626 (2011)

    Article  Google Scholar 

  12. 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)

    Google Scholar 

  13. 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

    Chapter  Google Scholar 

  14. Weide, B., Heym, W.: Specification and verification with references. In: Proceedings OOPSLA Workshop on SAVCBS, October 2001

    Google Scholar 

  15. 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

    Chapter  Google Scholar 

  16. Mbwambo, N.: A Well-Designed, Tree-Based, Generic Map Component to Challenge the Progress towards Automated Verification. MS Thesis, Clemson University (2017)

    Google Scholar 

  17. Harms, D., Weide, B.: Copying and swapping on the design of reusable software components. IEEE Trans. Softw. Eng. 17(5), 424–435 (1991)

    Article  Google Scholar 

  18. 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

    Chapter  Google Scholar 

  19. Harton, H.: Mechanical and Modular Verification Condition Generation for Object-Based Software. PhD Thesis, Clemson University (2011)

    Google Scholar 

  20. Smith, H.: Engineering Specifications and Mathematics for Verified Software. PhD Thesis, Clemson University (2013)

    Google Scholar 

  21. Sun, Y.: Towards Automated Verification of Object-Based Software with Reference Behavior. Ph.D. Thesis, Clemson University (2018)

    Google Scholar 

Download references

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

Authors

Corresponding author

Correspondence to Nicodemus M. J. Mbwambo .

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2022 The Author(s), under exclusive license to Springer Nature Switzerland AG

About this paper

Check for updates. Verify currency and authenticity via CrossMark

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

Publish with us

Policies and ethics