From Network Interface to Multithreaded Web Applications

Abstract

Many verifications of realistic software systems are monolithic, in the sense that they define single global invariants over complete system state. More modular proof techniques promise to support reuse of component proofs and even reduce the effort required to verify one concrete system, just as modularity simplifies standard software development. This paper reports on one case study applying modular proof techniques in the Coq proof assistant. To our knowledge, it is the first modular verification certifying a system that combines infrastructure with an application of interest to end users. We assume a nonblocking API for managing TCP networking streams, and on top of that we work our way up to certifying multithreaded, database-backed Web applications. Key verified components include a cooperative threading library and an implementation of a domain-specific language for XML processing. We have deployed our case-study system on mobile robots, where it interfaces with off-the-shelf components for sensing, actuation, and control.

Document Details

Document Type
Pub Defense Publication
Publication Date
Jan 14, 2015
Source ID
10.1145/2775051.2677003

Entities

People

  • Adam Chlipala

Organizations

  • Defense Advanced Research Projects Agency
  • Division of Computing and Communication Foundations
  • Massachusetts Institute of Technology

Tags

Fields of Study

  • Computer science
  • Engineering

Readers

  • Database Systems and Applications
  • Mathematical Modeling and Probability Theory.
  • Software Engineering

Technology Areas

  • AI & ML
  • Autonomy
  • Autonomy - Autonomous System Control