Verifying Low-Level Implementations of High-Level Datatypes

Verifying Low-Level Implementations of High-Level Datatypes” by Christopher L. Conway and Clark Barrett. In Proceedings of the 22^nd International Conference on Computer Aided Verification (CAV '10), (Tayssir Touili, Byron Cook, and Paul Jackson, eds.), July 2010, pp. 306-320. Edinburgh, Scotland.


For efficiency and portability, network packet processing code is typically written in low-level languages and makes use of bit-level operations to compactly represent data. Although packet data is highly structured, low-level implementation details make it difficult to verify that the behavior of the code is consistent with high-level data invariants. We introduce a new approach to the verification problem, using a high-level definition of packet types as part of a specification rather than an implementation. The types are not used to check the code directly; rather, the types introduce functions and predicates that can be used to assert the consistency of code with programmer-defined data assertions. We describe an encoding of these types and functions using the theories of inductive datatypes, bit vectors, and arrays in the Cvc SMT solver. We present a case study in which the method is applied to open-source networking code and verified within the Cascade verification platform.

BibTeX entry:

   author = {Christopher L. Conway and Clark Barrett},
   editor = {Tayssir Touili and Byron Cook and Paul Jackson},
   title = {Verifying Low-Level Implementations of High-Level Datatypes},
   booktitle = {Proceedings of the {\it 22^{nd}} International Conference
	on Computer Aided Verification (CAV '10)},
   series = {Lecture Notes in Computer Science},
   volume = {6174},
   pages = {306--320},
   publisher = {Springer},
   month = jul,
   year = {2010},
   note = {Edinburgh, Scotland},
   url = {}

(This webpage was created with bibtex2web.)