Network


Latest external collaboration on country level. Dive into details by clicking on the dots.

Hotspot


Dive into the research topics where Byron Cook is active.

Publication


Featured researches published by Byron Cook.


programming language design and implementation | 2006

Termination proofs for systems code

Byron Cook; Andreas Podelski; Andrey Rybalchenko

Program termination is central to the process of ensuring that systems code can always react. We describe a new program termination prover that performs a path-sensitive and context-sensitive program analysis and provides capacity for large program fragments (i.e. more than 20,000 lines of code) together with support for programming language features such as arbitrarily nested loops, pointers, function-pointers, side-effects, etc.We also present experimental results on device driver dispatch routines from theWindows operating system. The most distinguishing aspect of our tool is how it shifts the balance between the two tasks of constructing and respectively checking the termination argument. Checking becomes the hard step. In this paper we show how we solve the corresponding challenge of checking with binary reachability analysis.


integrated formal methods | 2004

SLAM and Static Driver Verifier: Technology Transfer of Formal Methods inside Microsoft

Thomas Ball; Byron Cook; Vladimir Levin; Sriram K. Rajamani

The SLAM project originated in Microsoft Research in early 2000. Its goal was to automatically check that a C program correctly uses the interface to an external library. The project used and extended ideas from symbolic model checking, program analysis and theorem proving in novel ways to address this problem. The SLAM analysis engine forms the core of a new tool called Static Driver Verifier (SDV) that systematically analyzes the source code of Windows device drivers against a set of rules that define what it means for a device driver to properly interact with the Windows operating system kernel.


computer aided verification | 2008

Scalable Shape Analysis for Systems Code

Hongseok Yang; Oukseh Lee; Josh Berdine; Cristiano Calcagno; Byron Cook; Dino Distefano; Peter W. O'Hearn

Pointer safety faults in device drivers are one of the leading causes of crashes in operating systems code. In principle, shape analysis tools can be used to prove the absence of this type of error. In practice, however, shape analysis is not used due to the unacceptable mixture of scalability and precision provided by existing tools. In this paper we report on a new join operation


static analysis symposium | 2005

Abstraction refinement for termination

Byron Cook; Andreas Podelski; Andrey Rybalchenko

{\sqcup\dagger}


static analysis symposium | 2006

Interprocedural shape analysis with separated heap abstractions

Alexey Gotsman; Josh Berdine; Byron Cook

for the separation domain which aggressively abstracts information for scalability yet does not lead to false error reports.


asian symposium on programming languages and systems | 2007

Local reasoning for storable locks and threads

Alexey Gotsman; Josh Berdine; Byron Cook; Noam Rinetzky; Mooly Sagiv

{\sqcup\dagger}


computer aided verification | 2003

A Symbolic Approach to Predicate Abstraction

Shuvendu K. Lahiri; Randal E. Bryant; Byron Cook

is a critical piece of a new shape analysis tool that provides an acceptable mixture of scalability and precision for industrial application. Experiments on whole Windows and Linux device drivers (firewire, pci-driver, cdrom, md, etc.) represent the first working application of shape analysis to verification of whole industrial programs.


computer aided verification | 2006

Automatic termination proofs for programs with shape-shifting heaps

Josh Berdine; Byron Cook; Dino Distefano; Peter W. O'Hearn

Abstraction can often lead to spurious counterexamples. Counterexample-guided abstraction refinement is a method of strengthening abstractions based on the analysis of these spurious counterexamples. For invariance properties, a counterexample is a finite trace that violates the invariant; it is spurious if it is possible in the abstraction but not in the original system. When proving termination or other liveness properties of infinite-state systems, a useful notion of spurious counterexamples has remained an open problem. For this reason, no counterexample-guided abstraction refinement algorithm was known for termination. In this paper, we address this problem and present the first known automatic counterexample-guided abstraction refinement algorithm for termination proofs. We exploit recent results on transition invariants and transition predicate abstraction. We identify two reasons for spuriousness: abstractions that are too coarse, and candidate transition invariants that are too strong. Our counterexample-guided abstraction refinement algorithm successively weakens candidate transition invariants and refines the abstraction.


computer aided verification | 2006

TERMINATOR: beyond safety

Byron Cook; Andreas Podelski; Andrey Rybalchenko

We describe an interprocedural shape analysis that makes use of spatial locality (i.e. the fact that most procedures modify only a small subset of the heap) in its representation of abstract states. Instead of tracking reachability information directly and aliasing information indirectly, our representation tracks reachability indirectly and aliasing directly. Computing the effect of procedure calls and returns on an abstract state is easy because the representation exhibits spatial locality mirroring the locality that is present in the concrete semantics. The benefits of this approach include improved speed, support for programs that deallocate memory, the handling of bounded numbers of heap cutpoints, and support for cyclic and shared data structures.


international conference on computational logistics | 1998

Microprocessor specification in Hawk

John Matthews; Byron Cook; John Launchbury

We present a resource oriented program logic that is able to reason about concurrent heap-manipulating programs with unbounded numbers of dynamically-allocated locks and threads. The logic is inspired by concurrent separation logic, but handles these more realistic concurrency primitives. We demonstrate that the proposed logic allows local reasoning about programs for which there exists a notion of dynamic ownership of heap parts by locks and threads.

Collaboration


Dive into the Byron Cook's collaboration.

Top Co-Authors

Avatar

Nir Piterman

University of Leicester

View shared research outputs
Top Co-Authors

Avatar
Top Co-Authors

Avatar
Top Co-Authors

Avatar
Top Co-Authors

Avatar
Top Co-Authors

Avatar
Top Co-Authors

Avatar
Top Co-Authors

Avatar
Researchain Logo
Decentralizing Knowledge