Verifying low-level implementations of high-level datatypes

  • Authors:
  • Christopher L. Conway;Clark Barrett

  • Affiliations:
  • Dept of Computer Science, New York University;Dept of Computer Science, New York University

  • Venue:
  • CAV'10 Proceedings of the 22nd international conference on Computer Aided Verification
  • Year:
  • 2010

Quantified Score

Hi-index 0.00

Visualization

Abstract

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.