Abstract
Abstract interpretation-based proof carrying code uses post-fixpoints of abstract interpretations to witness that a program respects a safety policy. Some witnesses carry more information than needed and are therefore unnecessarily large. We introduce a notion of size of a witness and propose techniques for reducing the size of such certificates. For distributive analyses, we show that a smallest witness exist and we give an iterative algorithm for computing it. For non-distributive analyes we propose a technique for pruning a witness and illustrate this pruning on a relational, polyhedra-based analysis. Finally, only the existence of a witness is needed to assure the code consumer of the safety of a given program. This makes possible a compression technique of witnesses where only part of a witness is sent together with an encoding of the iterative steps necessary to prove that it is part of a post-fixpoint.
Chapter PDF
Similar content being viewed by others
Keywords
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.
References
Albert, E., et al.: Reduced certificates for abstraction-carrying code. In: Etalle, S., Truszczyński, M. (eds.) ICLP 2006. LNCS, vol. 4079, pp. 163–178. Springer, Heidelberg (2006)
Besson, F., Jensen, T., Pichardie, D.: Proof-Carrying Code from Certified Abstract Interpretation and Fixpoint Compression. Theoretical Computer Science 364, 273–291 (2006)
Cousot, P., Cousot, R.: Abstract interpretation: A unified lattice model for static analysis of programs by construction of approximations of fixpoints. In: Proc. of the 4th ACM Symp. on Principles of Programming Languages, pp. 238–252. ACM Press, New York (1977)
Cousot, P., Halbwachs, N.: Automatic discovery of linear restraints among variables of a program. In: Proc. of the 5th ACM Symp. on Principles of programming languages, pp. 84–96. ACM Press, New York (1978)
Davey, B.A., Priestley, H.A.: Introduction to Lattices and Order. Cambridge University Press, Cambridge (1990)
Halbwachs, N.: Delay analysis in synchronous programs. In: Courcoubetis, C. (ed.) CAV 1993. LNCS, vol. 697, pp. 333–346. Springer, Heidelberg (1993)
Halbwachs, N.: About synchronous programming and abstract interpretation. Science of Computer Programming 31(1), 75–89 (1998)
Koehler, H.: A contraction algorithm for finding minimal feedback sets. In: Proc. of the 28th Australasian Conf. on Computer Science, Newcastle, Australia, pp. 165–173. Australian Computer Society, Inc. (2005)
Levy, H., Low, D.W.: A contraction algorithm for finding small cycle cutsets. J. Algorithms 9(4), 470–493 (1988)
Muchnick, S.S., Jones, N.D.: Program Flow Analysis: Theory and Application. Prentice-Hall, Englewood Cliffs (1981)
Marlowe, T., Ryder, B.: Properties of data flow frameworks. Acta Informatica 28, 121–163 (1990)
Necula, G.: Proof-carrying code. In: Proc. of the 24th ACM Symp. on Principles of programming languages, pp. 106–119. ACM Press, New York (1997)
Necula, G., Lee, P.: Efficient representation and validation of proofs. In: Proc. of the 13th IEEE Symp. on Logic in Computer Science, pp. 93–104. IEEE Computer Society Press, Los Alamitos (1998)
Necula, G.C., Rahul, S.P.: Oracle-based checking of untrusted software. In: Proc. of the 28th ACM Symp. on Principles of programming languages, pp. 142–154. ACM Press, New York (2001)
Rose, E.: Lightweight bytecode verification. J. Automated Reasoning 31(3-4), 303–334 (2003)
Sankaranarayanan, S., Sipma, H., Manna, Z.: Constraint-based linear-relations analysis. In: Giacobazzi, R. (ed.) SAS 2004. LNCS, vol. 3148, pp. 53–68. Springer, Heidelberg (2004)
Wu, D., Appel, A.W., Stump, A.: Foundational proof checkers with small witnesses. In: Proc. of the 5th ACM Int. Conf. on Principles and Practice of Declarative Programming, pp. 264–274. ACM Press, New York (2003)
Author information
Authors and Affiliations
Editor information
Rights and permissions
Copyright information
© 2007 Springer Berlin Heidelberg
About this paper
Cite this paper
Besson, F., Jensen, T., Turpin, T. (2007). Small Witnesses for Abstract Interpretation-Based Proofs. In: De Nicola, R. (eds) Programming Languages and Systems. ESOP 2007. Lecture Notes in Computer Science, vol 4421. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-540-71316-6_19
Download citation
DOI: https://doi.org/10.1007/978-3-540-71316-6_19
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-71314-2
Online ISBN: 978-3-540-71316-6
eBook Packages: Computer ScienceComputer Science (R0)