Separation Logic for Small-Step cminor
cminor is a mid-level imperative programming language; there are proved-correct optimizing compilers from C to cminor and from cminor to machine language. We have redesigned cminor so that it is suitable for Hoare Logic reasoning and we have designed a Separation Logic for cminor. In this paper, we give a small-step semantics (instead of the big-step of the proved-correct compiler) that is motivated by the need to support future concurrent extensions. We detail a machine-checked proof of soundness of our Separation Logic. This is the first large-scale machine-checked proof of a Separation Logic w.r.t. a small-step semantics. The work presented in this paper has been carried out in the Coq proof assistant. It is a first step towards an environment in which concurrent cminor programs can be verified using Separation Logic and also compiled by a proved-correct compiler with formal end-to-end correctness guarantees.
KeywordsOperational Semantic Correctness Proof Separation Logic Intermediate Language Hoare Logic
Unable to display preview. Download preview PDF.
- 1.The Coq proof assistant, http://coq.inria.fr
- 2.American National Standard for Information Systems – Programming Language – C: American National Standards Institute (1990)Google Scholar
- 3.Appel, A.W.: Tactics for separation logic (January 2006), http://www.cs.princeton.edu/~appel/papers/septacs.pdf
- 4.Appel, A.W., Blazy, S.: Separation logic for small-step Cminor (extended version). Technical Report RR 6138, INRIA (March 2007), https://hal.inria.fr/inria-00134699
- 8.Dargaye, Z.: Décurryfication certifiée. JFLA (Journées Françaises des Langages Applicatifs), 119–133 (2007)Google Scholar
- 10.Klein, G., Tuch, H., Norrish, M.: Types, bytes, and separation logic. In: POPL 2007, January 2007, pp. 97–108. ACM Press, New York (2007)Google Scholar
- 11.Leinenbach, D., Paul, W., Petrova, E.: Towards the formal verification of a C0 compiler: Code generation and implementation correctness. In: SEFM 2005. IEEE Conference on Software Engineering and Formal Methods, IEEE Computer Society Press, Los Alamitos (2005)Google Scholar
- 13.Moore, J.S.: A mechanically verified language implementation. Journal of Automated Reasoning 5(4), 461–492 (1989)Google Scholar
- 16.Parkinson, M.J.: Local Reasoning for Java. PhD thesis, University of Cambridge (2005)Google Scholar
- 17.Schirmer, N.: Verification of Sequential Imperative Programs in Isabelle/HOL. PhD thesis, Technische Universität München (2006)Google Scholar