Program Compatibility Approaches

  • Edmund Clarke
  • Natasha Sharygina
  • Nishant Sinha
Part of the Lecture Notes in Computer Science book series (LNCS, volume 4111)


This paper is a survey of several techniques that have proven useful in establishing compatibility among behaviorally similar programs (e.g., system upgrades, object sub- and supertypes, system components produced by different vendors, etc.). We give a comparative analysis of the techniques by evaluating their applicability to various aspects of the compatibility problem.


Concrete State Component Assembly Predicate Abstraction Weak Precondition Abstraction Function 
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.
    Angluin, D.: Learning regular sets from queries and counterexamples. Information and Computation 75(2), 87–106 (1987)MATHCrossRefMathSciNetGoogle Scholar
  2. 2.
    Ball, T., Rajamani, S.: Boolean programs: A model and process for software analysis. TR-2000-14 (2000)Google Scholar
  3. 3.
    Black, A., Hutchinson, A., Jul, N., Levy, E., Carter, L.: Distribution and abstract types in emerald. IEEE TSE 13(1), 65–76 (1987)Google Scholar
  4. 4.
    Cardelli, L.: A semantics of multiple inheritance. Information and Computation 76, 138–164 (1988)MATHCrossRefMathSciNetGoogle Scholar
  5. 5.
    Chaki, S., Sharygina, E.C.N., Sinha, N.: Dynamic component substitutability analysis. In: Fitzgerald, J.S., Hayes, I.J., Tarlecki, A. (eds.) FM 2005. LNCS, vol. 3582, pp. 512–528. Springer, Heidelberg (2005)CrossRefGoogle Scholar
  6. 6.
    Chakrabarti, A., de Alfaro, L., Henzinger, T.A., Mang, F.Y.C.: Synchronous and bidirectional component interfaces. In: Brinksma, E., Larsen, K.G. (eds.) CAV 2002. LNCS, vol. 2404, pp. 414–427. Springer, Heidelberg (2002)CrossRefGoogle Scholar
  7. 7.
    Clarke, E., Grumberg, O., Peled, D.: Model Checking. MIT Press, Cambridge (1999)Google Scholar
  8. 8.
    Clarke, E.M., Grumberg, O., Jha, S., Lu, Y., Veith, H.: Counterexample-guided abstraction refinement. In: Emerson, E.A., Sistla, A.P. (eds.) CAV 2000. LNCS, vol. 1855, pp. 154–169. Springer, Heidelberg (2000)CrossRefGoogle Scholar
  9. 9.
    Cobleigh, J.M., Giannakopoulou, D., Păsăreanu, C.S.: Learning assumptions for compositional verification. In: Garavel, H., Hatcliff, J. (eds.) ETAPS 2003 and TACAS 2003. LNCS, vol. 2619, pp. 331–346. Springer, Heidelberg (2003)CrossRefGoogle Scholar
  10. 10.
    de Alfaro, L., Henzinger, T.A.: Interface automata. In: FSE (2001)Google Scholar
  11. 11.
    de Alfaro, L., Henzinger, T.A.: Interface theories for component-based design. In: Henzinger, T.A., Kirsch, C.M. (eds.) EMSOFT 2001. LNCS, vol. 2211, pp. 148–165. Springer, Heidelberg (2001)CrossRefGoogle Scholar
  12. 12.
    Detlefs, D., Nelson, G., Saxe, J.B.: Simplify: a theorem prover for program checking. J. ACM 52(3), 365–473 (2005)CrossRefMathSciNetGoogle Scholar
  13. 13.
    Dijkstra, E.: A Discipline of Programming. Prentice-Hall, Englewood Cliffs (1976)MATHGoogle Scholar
  14. 14.
    Ernst, M.D., Cockrell, J., Griswold, W.G., Notkin, D.: Dynamically discovering likely program invariants to support program evolution. In: International Conference on Software Engineering (ICSE 1999), pp. 213–224 (1999)Google Scholar
  15. 15.
    Graf, S., Saïdi, H.: Construction of abstract state graphs with PVS. In: Grumberg, O. (ed.) CAV 1997. LNCS, vol. 1254, pp. 72–83. Springer, Heidelberg (1997)Google Scholar
  16. 16.
    Ivers, J., Sharygina, N.: Overview of ComFoRT: A model checking reasoning framework. CMU/SEI-2004-TN-018 (2004)Google Scholar
  17. 17.
    Kurshan, R.: Computer-Aided Verification of Coordinating Processes: The Automata-Theoretic Approach. Princeton University Press, Princeton (1994)Google Scholar
  18. 18.
    Rustan, K., Leino, M.: Efficient weakest preconditions. Inf. Process. Lett. 93(6), 281–288 (2005)MATHCrossRefGoogle Scholar
  19. 19.
    Liskov, B., Wing, J.: Behavioral subtyping using invariants and constraints. Formal Methods for Distributed Processing, an Object Oriented Approach, pp. 254–280 (2001)Google Scholar
  20. 20.
    Lynch, N., Tuttle, M.: Hierarchical correctness proofs for distributed algorithms (1987)Google Scholar
  21. 21.
    McCamant, S., Ernst, M.D.: Early identification of incompatibilities in multi-component upgrades. In: Odersky, M. (ed.) ECOOP 2004. LNCS, vol. 3086, pp. 440–464. Springer, Heidelberg (2004)CrossRefGoogle Scholar
  22. 22.
    Pnueli, A.: In transition from global to modular temporal reasoning about programs. In: Logics and models of concurrent systems. Springer, New York (1985)Google Scholar
  23. 23.
    Rivest, R.L., Schapire, R.E.: Inference of finite automata using homing sequences. Information and Computation 103(2), 299–347 (1993)MATHCrossRefMathSciNetGoogle Scholar
  24. 24.
    Shoham, S., Grumberg, O.: Monotonic abstraction-refinement for CTL. In: Jensen, K., Podelski, A. (eds.) TACAS 2004. LNCS, vol. 2988, pp. 546–560. Springer, Heidelberg (2004)CrossRefGoogle Scholar
  25. 25.
    Szyperski, C., Gruntz, D., Murer, S.: Component Software - Beyond Object-Oriented Programming. Addison-Wesley, ACM Press (2002)Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2006

Authors and Affiliations

  • Edmund Clarke
    • 1
  • Natasha Sharygina
    • 1
    • 2
  • Nishant Sinha
    • 1
  1. 1.Carnegie Mellon University 
  2. 2.Universita della Svizzera Italiana 

Personalised recommendations