To Goto Where No Statement Has Gone Before
This paper presents a method for deriving an expression from the low-level code compiled from an expression in a high-level language. The input is the low-level code represented as blocks of code connected by goto statements, i.e., a control flow graph (CFG). The derived expression is in a form that can be used as input to an automatic theorem prover. The method is useful for program verification systems that take as input both programs and specifications after they have been compiled from a high-level language. This is the case for systems that encode specifications in an existing programming language and do not have a special compiler. The method always produces an expression, unlike the heuristics for decompilation which may fail. It is efficient: the resulting expression is linear in the size of the CFG by maintaining all sharing of subgraphs.
KeywordsTheorem Prover Boolean Expression Code Expression Control Flow Graph Automatic Theorem Prover
Unable to display preview. Download preview PDF.
- 2.Barnett, M., Fähndrich, M., Logozzo, F.: Embedded contract languages. In: ACM SAC - OOPS, March 2010. ACM, New York (2010)Google Scholar
- 5.Charguéraud, A.: Program verification through characteristic formulae. In: ACM SIGPLAN International Conference on Functional Programming (to appear, 2010)Google Scholar
- 12.Flanagan, C., Saxe, J.B.: Avoiding exponential explosion: Generating compact verification conditions. In: Conference Record of the 28th Annual ACM Symposium on Principles of Programming Languages, January 2001, pp. 193–205. ACM, New York (2001)Google Scholar
- 13.Leavens, G.T., Baker, A.L., Ruby, C.: JML: A notation for detailed design. In: Kilov, H., Rumpe, B., Simmonds, I. (eds.) Behavioral Specifications of Businesses and Systems, pp. 175–188. Kluwer Academic Publishers, Dordrecht (1999)Google Scholar
- 14.Rustan, K., Leino, M.: This is Boogie 2. Manuscript KRML 178 (2008), http://research.microsoft.com/~leino/papers.html
- 15.Leino, K.R.M.: Specification and verification of object-oriented software. In: Broy, M., Sitou, W., Hoare, T. (eds.) Engineering Methods and Tools for Software Safety and Security. NATO Science for Peace and Security Series D: Information and Communication Security, vol. 22, pp. 231–266. IOS Press, Amsterdam (2009) (Summer School Marktoberdorf 2008 lecture notes)Google Scholar
- 17.Meyer, B.: Object-oriented Software Construction. Series in Computer Science. Prentice-Hall International, New York (1988)Google Scholar
- 18.Myreen, M.O., Gordon, M.J.C., Slind, K.: Machine-code verification for multiple architectures - an application of decompilation into logic. In: FMCAD, pp. 1–8 (2008)Google Scholar
- 20.Ranise, S., Tinelli, C.: The SMT-LIB Standard: Version 1.2. Technical report, Department of Computer Science, The University of Iowa (2006), http://www.SMT-LIB.org