An Incremental Approach to Abstraction-Carrying Code

  • Elvira Albert
  • Puri Arenas
  • Germán Puebla
Part of the Lecture Notes in Computer Science book series (LNCS, volume 4246)


Abstraction-Carrying Code (ACC) has recently been proposed as a framework for Proof-Carrying Code (PCC) in which the code supplier provides a program together with an abstraction (or abstract model of the program) whose validity entails compliance with a predefined safety policy. Existing approaches for PCC are developed under the assumption that the consumer reads and validates the entire program w.r.t. the full certificate at once, in a non incremental way. In the context of ACC, we propose an incremental approach to PCC for the generation of certificates and the checking of untrusted updates of a (trusted) program, i.e., when a producer provides a modified version of a previously validated program. Our proposal is that, if the consumer keeps the original (fixed-point) abstraction, it is possible to provide only the program updates and the incremental certificate (i.e., the difference of abstractions). Furthermore, it is now possible to define an incremental checking algorithm which, given the new updates and its incremental certificate, only re-checks the fixpoint for each procedure affected by the updates and the propagation of the effect of these fixpoint changes. As a consequence, both certificate transmission time and checking time can be reduced significantly.


Logic Program Analysis Graph Abstract Interpretation Process Node Check Algorithm 
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.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    Albert, E., Arenas, P., Puebla, G.: An Incremental Approach to Abstraction-Carrying Code. Technical Report CLIP3/2006, Technical University of Madrid (UPM), School of Computer Science, UPM (March 2006)Google Scholar
  2. 2.
    Albert, E., Arenas, P., Puebla, G.: Incremental Certificates and Checkers for Abstraction-Carrying Code. In: Proc. of WITS 2006 (March 2006)Google Scholar
  3. 3.
    Albert, E., Arenas, P., Puebla, G., Hermenegildo, M.V.: Reduced Certificates for Abstraction-Carrying Code. In: Etalle, S., Truszczyński, M. (eds.) ICLP 2006. LNCS, vol. 4079, pp. 163–178. Springer, Heidelberg (2006)CrossRefGoogle Scholar
  4. 4.
    Albert, E., Puebla, G., Hermenegildo, M.: Abstraction-Carrying Code. In: Baader, F., Voronkov, A. (eds.) LPAR 2004. LNCS (LNAI), vol. 3452, pp. 380–397. Springer, Heidelberg (2005)CrossRefGoogle Scholar
  5. 5.
    Bruynooghe, M.: A Practical Framework for the Abstract Interpretation of Logic Programs. Journal of Logic Programming 10, 91–124 (1991)MATHCrossRefMathSciNetGoogle Scholar
  6. 6.
    Cousot, P., Cousot, R.: Abstract Interpretation: a Unified Lattice Model for Static Analysis of Programs by Construction or Approximation of Fixpoints. In: Proc. POPL 1977, pp. 238–252. ACM, New York (1977)Google Scholar
  7. 7.
    Hermenegildo, M., Puebla, G., Marriott, K., Stuckey, P.: Incremental Analysis of Constraint Logic Programs. ACM Transactions on Programming Languages and Systems 22(2), 187–223 (2000)CrossRefGoogle Scholar
  8. 8.
    Jones, N.D., Gomard, C.K., Sestoft, P.: Partial Evaluation and Automatic Program Generation. Prentice Hall, New York (1993)MATHGoogle Scholar
  9. 9.
    Lakhnech, Y., Bensalem, S., Berezin, S., Owre, S.: Incremental verification by abstraction. In: Margaria, T., Yi, W. (eds.) TACAS 2001. LNCS, vol. 2031, pp. 98–112. Springer, Heidelberg (2001)CrossRefGoogle Scholar
  10. 10.
    Lloyd, J.W.: Foundations of Logic Programming, 2nd extended edn. Springer, Heidelberg (1987)MATHGoogle Scholar
  11. 11.
    Marriot, K., Stuckey, P.: Programming with Constraints: An Introduction. The MIT Press, Cambridge (1998)Google Scholar
  12. 12.
    Marriott, K., Søndergaard, H.: Precise and efficient groundness analysis for logic programs. ACM Letters on Programming Languages and Systems 2(4), 181–196 (1993)CrossRefGoogle Scholar
  13. 13.
    Necula, G.: Proof-Carrying Code. In: Proc. of POPL 1997, pp. 106–119. ACM Press, New York (1997)CrossRefGoogle Scholar
  14. 14.
    Puebla, G., Hermenegildo, M.: Optimized Algorithms for the Incremental Analysis of Logic Programs. In: Cousot, R., Schmidt, D.A. (eds.) SAS 1996. LNCS, vol. 1145, pp. 270–284. Springer, Heidelberg (1996)Google Scholar
  15. 15.
    Ryder, B.: Incremental data-flow analysis algorithms. ACM Transactions on Programming Languages and Systems 10(1), 1–50 (1988)CrossRefMathSciNetGoogle Scholar
  16. 16.
    Sokolsky, O.V., Smolka, S.A.: Incremental model checking in the modal μ-calculus. In: Dill, D.L. (ed.) CAV 1994. LNCS, vol. 818, pp. 351–363. Springer, Heidelberg (1994)Google Scholar
  17. 17.
    Wagner, T.A., Graham, S.L.: Incremental analysis of real programming languages. In: Proc. PLDI 1997, pp. 31–43 (1997)Google Scholar
  18. 18.
    Wildmoser, M., Chaieb, A., Nipkow, T.: Bytecode Analysis for Proof Carrying Code. In: Proc. Bytecode 2005. ENTCS, vol. 141, pp. 19–34. Elsevier, Amsterdam (2005)Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2006

Authors and Affiliations

  • Elvira Albert
    • 1
  • Puri Arenas
    • 1
  • Germán Puebla
    • 2
  1. 1.Complutense University of Madrid 
  2. 2.Technical University of Madrid 

Personalised recommendations