Abstract
We introduce program checking with certificates by extending the traditional notion of black-box program checking. Moreover, we establish program checking with certificates as a safety-scalable and practical method to ensure the correctness of real-scale applications. We motivate our extension of program checking with concepts of computational complexity theory and show its practical implication on the implementation and verification of checkers. Furthermore, we present an iterative method to construct checkers which is able to deal with the practically relevant problem of incomplete or missing specifications of software. In our case study, we have considered compilers and their generators, in particular code generators based on rewrite systems.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
References
Aho, A.V., Johnson, S.C., Ullman, J.D.: Code Generation for Expressions with Common Subexpressions. Journal of the ACM 24(1), 146–160 (1977)
Blum, M., Kannan, S.: Designing Programs that Check Their Work. Journal of the ACM 42(1), 269–291 (1995); Preliminary version: Proceedings of the 21st ACM Symposium on Theory of Computing, pp. 86–97 (1989)
Blum, M., Luby, M., Rubinfeld, R.: Self-Testing/ Correcting with Applications to Numerical Problems. Journal of Computer and System Sciences 47(3), 549–595 (1993); Preliminary version: Proceedings 22nd ACM Symposium on Theory of Computing, pp. 73–83 (1990)
Boesler, B.: Codeerzeugung aus Abhängigkeitsgraphen. Diplomarbeit, Universität Karlsruhe (June 1998)
Cytron, R., Ferrante, J.: Efficiently Computing Φ-Nodes On-The-Fly. ACM Transactions on Programming Languages and Systems 17(3), 487–506 (1995)
Cytron, R., Ferrante, J., Rosen, B.K., Wegman, M.N., Zadeck, F.K.: Efficiently Computing Static Single Assignment Form and the Control Dependence Graph. ACM Transactions on Programming Languages and Systems 13(4), 451–490 (1991)
Colby, C., Lee, P., Necula, G.C., Blau, F., Plesko, M., Cline, K.: A Certifying Compiler for Java. In: Proceedings of the ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI 2000), Vancouver, British Columbia, Canada, May 2000, pp. 95–107 (2000)
Dechter, R., Pearl, J.: Generalized Best-First Search Strategies and the Optimality of A∗. Journal of the ACM 32(3), 505–536 (1985)
Gaul, T.: AJACS: Applying Java to Automotive Control Systems. In: Automotive Engineering Partners, August 4 (2002)
Goerigk, W., Dold, A., Gaul, T., Goos, G., Heberle, A., von Henke, F.W., Hoffmann, U., Langmaack, H., Pfeifer, H., Ruess, H., Zimmermann, W.: Compiler Correctness and Implementation Verification: The Verifix Approach. In: Fritzson, P. (ed). Poster Session of CC 1996. IDA Technical Report LiTH-IDA-R-96-12, Linkoeping, Sweden (1996)
Gaul, T., Heberle, A., Zimmermann, W., Goerigk, W.: Construction of Verified Software Systems with Program-Checking: An Application to Compiler Back-Ends. In: Proceedings of the Workshop on Runtime Result Verification, RTRV 1999 (1999)
Gaul, T., Kung, A., Charousset, J.: AJACS: Applying Java to Automotive Control Systems. In: Grote, C., Ester, R. (eds.) Conference Proceedings of Embedded Intelligence 2001, Nürnberg, February 2001. Design & Elektronik, pp. 425–434 (2001)
Gaul, T., Zimmermann, W., Goerigk, W.: Practical Construction of Correct Compiler Implementations by Runtime Result Verification. In: Proc. SCI 2000, International Conference on Information Systems Analysis and Synthesis, Orlando, Florida, USA (2000)
Heberle, A., Gaul, T., Goerigk, W., Goos, G., Zimmermann, W.: Construction of Verified Compiler Front-Ends with Program-Checking. In: Bjorner, D., Broy, M., Zamulin, A.V. (eds.) PSI 1999. LNCS, vol. 1755, pp. 493–502. Springer, Heidelberg (2000)
Meyer, B.: Object-Oriented Software Construction, 2nd edn. Prentice-Hall, Englewood Cliffs (1997)
Necula, G.C.: Translation Validation for an Optimizing Compiler. In: Proceedings of the ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI 2000), Vancouver, British Columbia, Canada, May 2000, pp. 83–94 (2000)
Nymeyer, A., Katoen, J.-P.: Code generation based on formal BURS theory and heuristic search. Acta Informatica 34, 597–635 (1997)
Necula, G.C., Lee, P.: Proof-Carrying Code. In: Proceedings of the 24th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL 1997), Paris, France, January 1997, pp. 106–119 (1997)
Necula, G.C., Lee, P.: The Design and Implementation of a Certifying Compiler. In: Proceedings of the ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI 1998), Montreal, Quebec, Canada, May 1998, pp. 333–344 (1998)
Necula, G.C., Rahul, S.P.: Oracle-Based Checking of Untrusted Software. In: Proceedings of the 28th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL 2001), London, UK, January 2001, pp. 142–154 (2001)
Papadimitriou, C.H.: Computational Complexity. Addison-Wesley Publishing Company, Reading (1994)
Pnueli, A., Shtrichman, O., Siegel, M.: The code validation tool (cvt.). International Journal on Software Tools for Technology Transfer 2(2), 192–201 (1998)
Pnueli, A., Siegel, M., Singermann, E.: Translation validation. In: Steffen, B. (ed.) TACAS 1998. LNCS, vol. 1384, pp. 151–166. Springer, Heidelberg (1998)
Zuck, L., Pnueli, A., Leviathan, R.: Validation of Optimizing Compilers. Technical Report MCS01-12, Faculty of Mathematics and Computer Science, The Weizmann Institute of Science (August 2001)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2003 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Glesner, S. (2003). Program Checking with Certificates: Separating Correctness-Critical Code. In: Araki, K., Gnesi, S., Mandrioli, D. (eds) FME 2003: Formal Methods. FME 2003. Lecture Notes in Computer Science, vol 2805. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-540-45236-2_41
Download citation
DOI: https://doi.org/10.1007/978-3-540-45236-2_41
Published:
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-40828-4
Online ISBN: 978-3-540-45236-2
eBook Packages: Springer Book Archive