Abstract
This paper examines the problem of structuring proofs in functional software verification from a novel perspective. By aligning the proofs with the operational behaviour of the program, we allow the formalization of the underlying concepts and their properties to reflect informal correctness arguments. By splitting the proof along the different aspects of the code, we achieve re-use of both theories and proof strategies across algorithms, thus enabling reasoning by analogy as employed in software construction. We demonstrate the viability and usefulness of the approach using a low-level C implementation of Cheney’s algorithm.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
References
Banerjee, A., Barnett, M., Naumann, D.A.: Boogie meets regions: A verification experience report. In: Shankar, N., Woodcock, J. (eds.) VSTTE 2008. LNCS, vol. 5295, pp. 177–191. Springer, Heidelberg (2008)
Hawblitzel, C., Petrank, E.: Automated verification of practical garbage collectors. SIGPLAN Not. 44(1), 441–453 (2009)
Zee, K., Kuncak, V., Rinard, M.: Full functional verification of linked data structures. SIGPLAN Not. 43(6), 349–361 (2008)
Moskal, M.: Programming with triggers. In: Dutertre, B., Strichman, O. (eds.) SMT 2009: Proceedings of the 7th International Workshop on Satisfiability Modulo Theories. ACM, New York (2009)
Böhme, S., Moskal, M., Schulte, W., Wolff, B.: HOL-Boogie–An interactive prover-backend for the Verifying C Compiler. J. Autom. Reason. 44, 111–144 (2010)
Mehta, F., Nipkow, T.: Proving pointer programs in higher-order logic. Inf. Comput. 199(1-2), 200–227 (2005)
Myreen, M.O.: Reusable verification of a copying collector. In: Leavens, G.T., O’Hearn, P., Rajamani, S.K. (eds.) VSTTE 2010. LNCS, vol. 6217, pp. 142–156. Springer, Heidelberg (2010)
Marti, N., Affeldt, R.: Formal verification of the heap manager of an operating system using separation logic. In: Liu, Z., Kleinberg, R.D. (eds.) ICFEM 2006. LNCS, vol. 4260, pp. 400–419. Springer, Heidelberg (2006)
McCreight, A.: The Mechanized Verification of Garbage Collector Implementations. PhD thesis, Department of Computer Science, Yale University (2008)
Hubert, T., Marché, C.: A case study of C source code verification: the Schorr-Waite algorithm. In: Aichernig, B.K., Beckert, B. (eds.) SEFM. IEEE, Los Alamitos (2005)
Cheney, C.J.: A nonrecursive list compacting algorithm. Commun. ACM 13, 677–678 (1970)
Gast, H.: Reasoning about memory layouts. Formal Methods in System Design 37(2-3), 141–170 (2010)
Gast, H., Trieflinger, J.: High-level Reasoning about Low-level Programs. In: Roggenbach, M. (ed.) Automated Verification of Critical Systems 2009. Electronic Communications of the EASST, vol. 23 (2009)
Gast, H.: Verifying the L4 kernel allocator in lightweight separation (2010), http://www-pu.informatik.uni-tuebingen.de/users/gast/proofs/kalloc.pdf
Berdine, J., Calcagno, C., O’Hearn, P.W.: Smallfoot: Modular automatic assertion checking with separation logic. In: de Boer, F.S., Bonsangue, M.M., Graf, S., de Roever, W.-P. (eds.) FMCO 2005. LNCS, vol. 4111, pp. 115–137. Springer, Heidelberg (2006)
Gast, H.: Lightweight separation. In: Mohamed, O.A., Muñoz, C., Tahar, S. (eds.) TPHOLs 2008. LNCS, vol. 5170, pp. 199–214. Springer, Heidelberg (2008)
Gast, H.: A developer-oriented proof of Cheney’s algorithm (2011), http://www-pu.informatik.uni-tuebingen.de/users/gast/proofs/cheney.pdf
Torp-Smith, N., Birkedal, L., Reynolds, J.C.: Local reasoning about a copying garbage collector. ACM Trans. Program. Lang. Syst. 30(4), 1–58 (2008)
Dawson, J.E.: Isabelle theories for machine words. In: 7th International Workshop on Automated Verification of Critical Systems (AVOCS 2007). ENTCS, vol. 250 (2009)
Kammüller, F., Wenzel, M., Paulson, L.C.: Locales - A sectioning concept for isabelle. In: Bertot, Y., Dowek, G., Hirschowitz, A., Paulin, C., Théry, L. (eds.) TPHOLs 1999. LNCS, vol. 1690, pp. 149–166. Springer, Heidelberg (1999)
Burstall, R.: Some techniques for proving correctness of programs which alter data stuctures. In: Meltzer, B., Michie, D. (eds.) Machine Intelligence, vol. 7. Edinburgh University Press, Edinburgh (1972)
McCreight, A., Shao, Z., Lin, C., Li, L.: A general framework for certifying garbage collectors and their mutators. SIGPLAN Not. 42(6), 468–479 (2007)
Varming, C., Birkedal, L.: Higher-order separation logic in Isabelle/HOLCF. Electron. Notes Theor. Comput. Sci. 218, 371–389 (2008)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2011 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Gast, H. (2011). Developer-Oriented Correctness Proofs. In: Qin, S., Qiu, Z. (eds) Formal Methods and Software Engineering. ICFEM 2011. Lecture Notes in Computer Science, vol 6991. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-642-24559-6_33
Download citation
DOI: https://doi.org/10.1007/978-3-642-24559-6_33
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-642-24558-9
Online ISBN: 978-3-642-24559-6
eBook Packages: Computer ScienceComputer Science (R0)