Skip to main content


Bridging the gap: Automatic verified abstraction of C


David Greenaway, June Andronick and Gerwin Klein



Before low-level imperative code can be reasoned about in an interactive theorem prover, it must first be converted into a logical representation in that theorem prover. Accurate translations of such code should be conservative, choosing safe representations over representations convenient to reason about. This paper bridges the gap between conservative representation and convenient reasoning. We present a tool that automatically abstracts low-level C semantics into higher level specifications, while generating proofs of refinement in Isabelle/HOL for each translation step. The aim is to generate a verified, human-readable specification, convenient for further reasoning.

Copyright © 2012, Springer-Verlag. This is the author's version of the work. The definitive version was published in the proceedings of the Third International Conference on Interactive Theorem Proving, August 13-15, 2012, Princeton, New Jersey. The original publication is available at

BibTeX Entry

    publisher        = {Springer},
    doi              = {10.1007/978-3-642-32347-8_8},
    author           = {Greenaway, David and Andronick, June and Klein, Gerwin},
    month            = aug,
    editor           = {{Lennart Beringer and Amy Felty}},
    year             = {2012},
    keywords         = {c verification, abstraction, refinement},
    title            = {Bridging the Gap: Automatic Verified Abstraction of {C}},
    booktitle        = {International Conference on Interactive Theorem Proving},
    pages            = {99-115},
    address          = {Princeton, New Jersey, USA}