SYMDIFF: A Language-Agnostic Semantic Diff Tool for Imperative Programs

  • Shuvendu K. Lahiri
  • Chris Hawblitzel
  • Ming Kawaguchi
  • Henrique Rebêlo
Part of the Lecture Notes in Computer Science book series (LNCS, volume 7358)


In this paper, we describe SymDiff, a language-agnostic tool for equivalence checking and displaying semantic (behavioral) differences over imperative programs. The tool operates on an intermediate verification language Boogie, for which translations exist from various source languages such as C, C# and x86. We discuss the tool and the front-end interface to target various source languages. Finally, we provide a brief description of the front-end for C programs.


Equivalence Check Source Language Symbolic Execution Imperative Program Imperative Language 
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.


  1. 1.
    Barnett, M., Chang, B.-Y.E., DeLine, R., Jacobs, B., M. Leino, K.R.: Boogie: A Modular Reusable Verifier for Object-Oriented Programs. In: de Boer, F.S., Bonsangue, M.M., Graf, S., de Roever, W.-P. (eds.) FMCO 2005. LNCS, vol. 4111, pp. 364–387. Springer, Heidelberg (2006)CrossRefGoogle Scholar
  2. 2.
    Barnett, M., M. Leino, K.R., Schulte, W.: The Spec# Programming System: An Overview. In: Barthe, G., Burdy, L., Huisman, M., Lanet, J.-L., Muntean, T. (eds.) CASSIS 2004. LNCS, vol. 3362, pp. 49–69. Springer, Heidelberg (2005)CrossRefGoogle Scholar
  3. 3.
    Condit, J., Hackett, B., Lahiri, S.K., Qadeer, S.: Unifying type checking and property checking for low-level code. In: POPL, pp. 302–314 (2009)Google Scholar
  4. 4.
    de Moura, L., Bjørner, N.S.: Z3: An Efficient SMT Solver. In: Ramakrishnan, C.R., Rehof, J. (eds.) TACAS 2008. LNCS, vol. 4963, pp. 337–340. Springer, Heidelberg (2008)CrossRefGoogle Scholar
  5. 5.
    Godefroid, P., Lahiri, S.K., Rubio-González, C.: Statically Validating Must Summaries for Incremental Compositional Dynamic Test Generation. In: Yahav, E. (ed.) SAS 2011. LNCS, vol. 6887, pp. 112–128. Springer, Heidelberg (2011)CrossRefGoogle Scholar
  6. 6.
    Godlin, B., Strichman, O.: Regression verification. In: DAC, pp. 466–471 (2009)Google Scholar
  7. 7.
    Jackson, D., Ladd, D.A.: Semantic diff: A tool for summarizing the effects of modifications. In: ICSM, pp. 243–252 (1994)Google Scholar
  8. 8.
    Kawaguchi, M., Lahiri, S.K., Rebêlo, H.: Conditional equivalence. Technical Report MSR-TR-2010-119, Microsoft Research (2010)Google Scholar
  9. 9.
    Person, S., Dwyer, M.B., Elbaum, S.G., Pasareanu, C.S.: Differential symbolic execution. In: SIGSOFT FSE, pp. 226–237 (2008)Google Scholar
  10. 10.
    Software-artifact Infrastructure Repository,

Copyright information

© Springer-Verlag Berlin Heidelberg 2012

Authors and Affiliations

  • Shuvendu K. Lahiri
    • 1
  • Chris Hawblitzel
    • 1
  • Ming Kawaguchi
    • 2
  • Henrique Rebêlo
    • 3
  1. 1.Microsoft ResearchRedmondUSA
  2. 2.University of CaliforniaSan DiegoUSA
  3. 3.Federal University of PernambucoBrazil

Personalised recommendations