Skip to main content

Verification of the Schorr-Waite Algorithm – From Trees to Graphs

  • Conference paper
Logic-Based Program Synthesis and Transformation (LOPSTR 2010)

Part of the book series: Lecture Notes in Computer Science ((LNTCS,volume 6564))

Abstract

This article proposes a method for proving the correctness of graph algorithms by manipulating their spanning trees enriched with additional references. We illustrate this concept with a proof of the correctness of a (pseudo-)imperative version of the Schorr-Waite algorithm by refinement of a functional one working on trees. It is composed of two orthogonal steps of refinement – functional to imperative and tree to graph – finally merged to obtain the result. Our imperative specifications use monadic constructs and syntax sugar, making them close to common imperative languages. This work has been realized within the Isabelle/HOL proof assistant.

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 39.99
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 54.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

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. Abrial, J.-R.: Event based sequential program development: Application to constructing a pointer program. In: Araki, K., Gnesi, S., Mandrioli, D. (eds.) FME 2003. LNCS, vol. 2805, pp. 51–74. Springer, Heidelberg (2003)

    Chapter  Google Scholar 

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

    Chapter  Google Scholar 

  3. Bubel, R.: The schorr-waite-algorithm. In: Beckert, B., Hähnle, R., Schmitt, P.H. (eds.) Verification of Object-Oriented Software. LNCS (LNAI), vol. 4334, pp. 569–587. Springer, Heidelberg (2007)

    Chapter  Google Scholar 

  4. Bulwahn, L., Krauss, A., Haftmann, F., Erkök, L., Matthews, J.: Imperative functional programming with isabelle/HOL. In: Mohamed, O.A., Muñoz, C., Tahar, S. (eds.) TPHOLs 2008. LNCS, vol. 5170, pp. 134–149. Springer, Heidelberg (2008)

    Chapter  Google Scholar 

  5. Filliâtre, J.-C., Marché, C.: The why/Krakatoa/Caduceus platform for deductive program verification. In: Damm, W., Hermanns, H. (eds.) CAV 2007. LNCS, vol. 4590, pp. 173–177. Springer, Heidelberg (2007)

    Chapter  Google Scholar 

  6. Giorgino, M., Strecker, M.: Verification of BDD algorithms by refinement of trees. Technical report, IRIT (2010), http://www.irit.fr/~Mathieu.Giorgino/Publications/GiSt2010BDD.html

  7. Giorgino, M., Strecker, M., Matthes, R., Pantel, M.: Verification of the Schorr-Waite algorithm - From trees to graphs (January 2010), http://www.irit.fr/~Mathieu.Giorgino/Publications/SchorrWaite_TreesGraphs.html

  8. Hubert, T., Marché, C.: A case study of C source code verification: the Schorr-Waite algorithm. In: Software Engineering and Formal Methods (SEFM). IEEE Computer Society, Los Alamitos (2005)

    Google Scholar 

  9. Huet, G.: Functional pearl: The zipper. Journal of Functional Programming 7(5), 549–554 (1997)

    Article  MathSciNet  MATH  Google Scholar 

  10. Klein, G., Derrin, P., Elphinstone, K.: Experience report: sel4 — formally verifying a high-performance microkernel. In: International Conference on Functional Programming (ICFP). ACM, New York (2009)

    Google Scholar 

  11. Mehta, F., Nipkow, T.: Proving pointer programs in higher-order logic. Information and Computation 199, 200–227 (2005)

    Article  MathSciNet  MATH  Google Scholar 

  12. Nipkow, T., Paulson, L., Wenzel, M.: Isabelle/HOL. A Proof Assistant for Higher-Order Logic. LNCS, vol. 2283. Springer, Heidelberg (2002)

    MATH  Google Scholar 

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

    Chapter  Google Scholar 

  14. Rittweiler, T., Haftmann, F.: Haskabelle – converting Haskell source files to Isabelle/HOL theories (2009), http://www.cl.cam.ac.uk/research/hvg/Isabelle/haskabelle.html

  15. Schirmer, N., Wenzel, M.: State spaces — the locale way. ENTCS 254, 161–179 (2009)

    Google Scholar 

  16. Schorr, H., Waite, W.: An efficient machine independent procedure for garbage collection in various list structures. Communications of the ACM 10, 501–506 (1967)

    Article  MATH  Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2011 Springer-Verlag Berlin Heidelberg

About this paper

Cite this paper

Giorgino, M., Strecker, M., Matthes, R., Pantel, M. (2011). Verification of the Schorr-Waite Algorithm – From Trees to Graphs. In: Alpuente, M. (eds) Logic-Based Program Synthesis and Transformation. LOPSTR 2010. Lecture Notes in Computer Science, vol 6564. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-642-20551-4_5

Download citation

  • DOI: https://doi.org/10.1007/978-3-642-20551-4_5

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-642-20550-7

  • Online ISBN: 978-3-642-20551-4

  • eBook Packages: Computer ScienceComputer Science (R0)

Publish with us

Policies and ethics