Skip to main content

Part of the book series: Lecture Notes in Computer Science ((LNPSE,volume 5295))

Abstract

The need to integrate the processes of programming and program verification requires notations for formal proofs that are easily readable. We discuss this problem in the context of Hoare logic and separation logic.

It has long been the custom to describe formal proofs in these logics informally by means of “annotated specifications” or “proof outlines”. For simple programs, these annotated specifications are essentially similar to the annotated flow charts introduced by Floyd and Naur. For more elaborate programs, a richer notation has evolved for dealing with procedure calls and various structural rules, such as the frame axiom, as well as various rules for concurrency.

Our goal is to devise a formalism for insuring that annotated specifications actually determine valid formal proofs (modulo the correctness of verification conditions), while providing as much flexibility as possible. For this purpose, we give inference rules for “annotation definitions” that assert that an annotated specification determines a particular Hoare triple. We consider verification algorithms in a wide sense. The outcome of a verification algorithm can be a definite (yes or no) answer, a “don’t know” answer, or a conditional answer or no answer at all (divergence). We obtain these kinds of verification algorithms if we apply the existing technology of abstraction to least-fixpoint checking, i.e., checking whether the least fixpoint of a given operator in a given lattice is smaller than a given bound. The formulation of the verification algorithm as least-fixpoint checking is classical for the class of correctness properties that are reducible to non-reachability (validity of assertions, partial correctness, safety properties). We need to investigate the approach also for the class of correctness properties that are reducible to termination (validity of intermittent assertions, total correctness, liveness properties), for all classes of programs including procedural (recursive) programs and concurrent programs.

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

Author information

Authors and Affiliations

Authors

Editor information

Natarajan Shankar Jim Woodcock

Rights and permissions

Reprints and permissions

Copyright information

© 2008 Springer-Verlag Berlin Heidelberg

About this paper

Cite this paper

Reynolds, J.C. (2008). Readable Formal Proofs. In: Shankar, N., Woodcock, J. (eds) Verified Software: Theories, Tools, Experiments. VSTTE 2008. Lecture Notes in Computer Science, vol 5295. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-540-87873-5_1

Download citation

  • DOI: https://doi.org/10.1007/978-3-540-87873-5_1

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-540-87872-8

  • Online ISBN: 978-3-540-87873-5

  • eBook Packages: Computer ScienceComputer Science (R0)

Publish with us

Policies and ethics