DeepAI AI Chat
Log In Sign Up

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

11/29/2018
by   Nicolas Koh, et al.
0

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.

READ FULL TEXT

page 1

page 2

page 3

page 4

01/31/2021

Model-Based Testing of Networked Applications

We present a rigorous framework for automatically testing application-la...
05/11/2021

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

Simulation and formal verification are important complementary technique...
12/01/2018

A Scheme to Verify Services with Unboundedly many Clients using NuSMV

We study model checking of client - server systems, where the servers of...
07/23/2021

Testing Pushdown Systems

Testing on reactive systems is a well-known laborious activity on softwa...
10/09/2017

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

Integrated Model of Distributed Systems is used for specification and ve...
01/20/2020

Counter-example Guided Learning of Bounds on Environment Behavior

There is a growing interest in building autonomous systems that interact...
03/16/2023

Formally Verified Animation for RoboChart using Interaction Trees

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