DeepAI AI Chat
Log In Sign Up

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

by   Nicolas Koh, et al.

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.


page 1

page 2

page 3

page 4


Model-Based Testing of Networked Applications

We present a rigorous framework for automatically testing application-la...

Formally Verified Simulations of State-Rich Processes using Interaction Trees in Isabelle/HOL

Simulation and formal verification are important complementary technique...

A Scheme to Verify Services with Unboundedly many Clients using NuSMV

We study model checking of client - server systems, where the servers of...

Testing Pushdown Systems

Testing on reactive systems is a well-known laborious activity on softwa...

Threefold Analysis of Distributed Systems: IMDS, Petri Net and Distributed Automata DA3

Integrated Model of Distributed Systems is used for specification and ve...

Counter-example Guided Learning of Bounds on Environment Behavior

There is a growing interest in building autonomous systems that interact...

Formally Verified Animation for RoboChart using Interaction Trees

RoboChart is a core notation in the RoboStar framework. It is a timed an...