TY - GEN
T1 - Verifying low-level implementations of high-level datatypes
AU - Conway, Christopher L.
AU - Barrett, Clark
PY - 2010
Y1 - 2010
N2 - 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.
AB - 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.
UR - http://www.scopus.com/inward/record.url?scp=77955004853&partnerID=8YFLogxK
UR - http://www.scopus.com/inward/citedby.url?scp=77955004853&partnerID=8YFLogxK
U2 - 10.1007/978-3-642-14295-6_28
DO - 10.1007/978-3-642-14295-6_28
M3 - Conference contribution
AN - SCOPUS:77955004853
SN - 364214294X
SN - 9783642142949
T3 - Lecture Notes in Computer Science (including subseries Lecture Notes in Artificial Intelligence and Lecture Notes in Bioinformatics)
SP - 306
EP - 320
BT - Computer Aided Verification - 22nd International Conference, CAV 2010, Proceedings
T2 - 22nd International Conference on Computer-Aided Verification, CAV 2010
Y2 - 15 July 2010 through 19 July 2010
ER -