From Network Interface to Multithreaded Web Applications: A Case Study in Modular Program Verification

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 mo...

Full description

Bibliographic Details
Main Author: Chlipala, Adam (Contributor)
Other Authors: Massachusetts Institute of Technology. Computer Science and Artificial Intelligence Laboratory (Contributor), Massachusetts Institute of Technology. Department of Electrical Engineering and Computer Science (Contributor)
Format: Article
Language:English
Published: Association for Computing Machinery (ACM), 2015-11-13T17:00:52Z.
Subjects:
Online Access:Get fulltext
LEADER 02070 am a22002053u 4500
001 99930
042 |a dc 
100 1 0 |a Chlipala, Adam  |e author 
100 1 0 |a Massachusetts Institute of Technology. Computer Science and Artificial Intelligence Laboratory  |e contributor 
100 1 0 |a Massachusetts Institute of Technology. Department of Electrical Engineering and Computer Science  |e contributor 
100 1 0 |a Chlipala, Adam  |e contributor 
245 0 0 |a From Network Interface to Multithreaded Web Applications: A Case Study in Modular Program Verification 
260 |b Association for Computing Machinery (ACM),   |c 2015-11-13T17:00:52Z. 
856 |z Get fulltext  |u http://hdl.handle.net/1721.1/99930 
520 |a 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. 
520 |a National Science Foundation (U.S.) (Grant CCF-1253229) 
520 |a United States. Defense Advanced Research Projects Agency (Agreement FA8750-12-2-0293) 
546 |a en_US 
655 7 |a Article 
773 |t Proceedings of the 42nd Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL '15)