scispace - formally typeset
Book ChapterDOI

VCC: A Practical System for Verifying Concurrent C

Reads0
Chats0
TLDR
This paper motivates VCC, describes the verification methodology, the architecture of VCC is described, and the experience using VCC to verify the Microsoft Hyper-V hypervisor is reported on.
Abstract
VCC is an industrial-strength verification environment for low-level concurrent system code written in C. VCC takes a program (annotated with function contracts, state assertions, and type invariants) and attempts to prove the correctness of these annotations. It includes tools for monitoring proof attempts and constructing partial counterexample executions for failed proofs. This paper motivates VCC, describes our verification methodology, describes the architecture of VCC, and reports on our experience using VCC to verify the Microsoft Hyper-V hypervisor.

read more

Content maybe subject to copyright    Report

Citations
More filters

Putting the Consistency Back Into Eventual Consistency

TL;DR: Indigo as mentioned in this paper is a middleware that provides explicit consistency on top of a causally-consistent data store, which allows programmers to select either violation avoidance or invariant repair techniques.
Proceedings ArticleDOI

Natural proofs for structure, data, and separation

TL;DR: This work is the first that can handle such a wide range of full functional verification properties of heaps automatically, given pre/post and loop invariant annotations, and paves the way for deductive verification technology to be used by programmers who do not (and need not) understand the internals of the underlying logic solvers, significantly increasing their applicability in building reliable systems.
Proceedings ArticleDOI

Semantics-based program verifiers for all languages

TL;DR: A language-independent verification framework that can be instantiated with an operational semantics to automatically generate a program verifier that can check automatically the full functional correctness of challenging heap-manipulating programs implementing operations on list and tree data structures, like AVL trees is presented.
Proceedings ArticleDOI

Fides: selectively hardening software application components against kernel-level or process-level malware

TL;DR: This work proposes a combined approach of a run-time security architecture that can efficiently protect fine-grained software modules executing on a standard operating system, and a compiler that compiles standard C source code modules to such protected binary modules.
Book ChapterDOI

Automated verification of a small hypervisor

TL;DR: This paper presents the first functional verification of a small hypervisor using VCC, an automatic verifier for C developed at Microsoft, and introduces necessary system verification techniques, such as accurate modeling of software/hardware interaction and simulation proofs in a first-order logic setting.
References
More filters
Book ChapterDOI

Z3: an efficient SMT solver

TL;DR: Z3 is a new and efficient SMT Solver freely available from Microsoft Research that is used in various software verification and analysis applications.
Book ChapterDOI

A Temporal Logic of Nested Calls and Returns

TL;DR: This work introduces a temporal logic of calls and returns (CaRet) for specification and algorithmic verification of correctness requirements of structured programs and presents a tableau construction that reduces the model checking problem to the emptiness problem for a Buchi pushdown system.
Proceedings ArticleDOI

Separation logic: a logic for shared mutable data structures

TL;DR: An extension of Hoare logic that permits reasoning about low-level imperative programs that use shared mutable data structure is developed, including extensions that permit unrestricted address arithmetic, dynamically allocated arrays, and recursive procedures.
Book ChapterDOI

Amortised Memory Analysis Using the Depth of Data Structures

TL;DR: A related system for bounding the stack space requirements is described which uses the depth of data structures, by expressing potential in terms of maxima as well as sums, by adding extra structure to typing contexts to describe the form of the bounds.