English

From C to Interaction Trees: Specifying, Verifying, and Testing a Networked Server

Programming Languages 2021-02-02 v1

Abstract

We present the first formal verification of a networked server implemented in C. Interaction trees, a general structure for representing reactive computations, are used to tie together disparate verification and testing tools (Coq, VST, and QuickChick) and to axiomatize the behavior of the operating system on which the server runs (CertiKOS). The main theorem connects a specification of acceptable server behaviors, written in a straightforward "one client at a time" style, with the CompCert semantics of the C program. The variability introduced by low-level buffering of messages and interleaving of multiple TCP connections is captured using network refinement, a variant of observational refinement.

Keywords

Cite

@article{arxiv.1811.11911,
  title  = {From C to Interaction Trees: Specifying, Verifying, and Testing a Networked Server},
  author = {Nicolas Koh and Yao Li and Yishuai Li and Li-yao Xia and Lennart Beringer and Wolf Honoré and William Mansky and Benjamin C. Pierce and Steve Zdancewic},
  journal= {arXiv preprint arXiv:1811.11911},
  year   = {2021}
}

Comments

13 pages + references

R2 v1 2026-06-23T06:24:30.290Z