EDBT 2026 Demo / reviewers in the wild / expert
Byron Cook
dblp:36/113
· DBLP profile ↗
83ranked-venue papers
41as first author
5since 2021 · last 2026
—ORCID · none
Domains — the database's venue-derived domains; a paper can count in several
Software engineering, systems software and programming languages · 69 · 33 first-author · 4 since 2021Theory of computation · 45 · 24 first-author · 4 since 2021Systems, architecture and hardware · 3Artificial intelligence and machine learning · 1 · 1 first-authorHuman-computer interaction and ubiquitous computing · 1Applied, interdisciplinary, general and emerging computing · 1 · 1 first-author
| Year | Publication | Venue | Position |
|---|---|---|---|
| 2026 | A Neurosymbolic Approach to Natural Language Formalization and VerificationabstractAbstract Large Language Models perform well at natural language interpretation and reasoning, but their lack of formal correctness guarantees limits their adoption in regulated industries like finance and healthcare that operate under strict policies. To address this limitation, we launched Automated Reasoning checks (ARc) : a public service that (1) uses LLMs with optional human guidance to formalize natural language policies, allowing fine-grained control of the formalization process, and (2) uses inference-time autoformalization to validate logical correctness of natural language statements against those policies. ARc performs multiple redundant formalization steps at inference time, checking the formalizations for semantic equivalence. Our benchmarks show that ARc exceeds 99% soundness and achieves a near-zero false positive rate in identifying logical validity. Our approach produces auditable artifacts that substantiate the verification outcomes and can be used to improve the original text. ARc is the first commercial offering from a major cloud provider to integrate automated reasoning into a generative AI guardrail. Chenyang An, Sam Bayless, Stefano Buliani, Darion Cassel, Byron Cook, Duncan Clough, Rémi Delmas, Nafi Diallo, Ferhat Erata, Nick Feng, Dimitra Giannakopoulou, Aman Goel, Aditya Gokhale, Joe Hendrix, Victor Heorhiadi, Marc Hudak, Dejan Jovanovic, Andrew M. Kent, Benjamin Kiesl-Reiter, Jeffrey J. Kuna, Nadia Labai, Joe Lilien, Divya Raghunathan, Zvonimir Rakamaric, Niloofar Razavi, Michael Tautschnig, Ali Torkamani, Nathaniel Weir, Michael W. Whalen, Jianan Yao |
CAV (2) | 5 |
| 2024 | SMT-D: New Strategies for Portfolio-Based SMT Solving
Clark W. Barrett, Pei-Wei Chen, Byron Cook, Bruno Dutertre, Robert B. Jones, Nham Le, Andrew Reynolds 0001, Kunal Sheth, Christopher Stephens, Michael W. Whalen |
FMCAD | 3 |
| 2023 | Partitioning Strategies for Distributed SMT Solving
Amalee Wilson, Andres Nötzli, Andrew Reynolds 0001, Byron Cook, Cesare Tinelli, Clark W. Barrett |
FMCAD | 4 |
| 2021 | Model checking boot code from AWS data centersabstractAbstract This paper describes our experience with symbolic model checking in an industrial setting. We have proved that the initial boot code running in data centers at Amazon Web Services is memory safe, an essential step in establishing the security of any data center. Standard static analysis tools cannot be easily used on boot code without modification owing to issues not commonly found in higher-level code, including memory-mapped device interfaces, byte-level memory access, and linker scripts. This paper describes automated solutions to these issues and their implementation in the C Bounded Model Checker (CBMC). CBMC is now the first source-level static analysis tool to extract the memory layout described in a linker script for use in its analysis. Byron Cook, Kareem Khazem, Daniel Kroening, Serdar Tasiran, Michael Tautschnig, Mark R. Tuttle |
Formal Methods Syst. Des. | 1 |
| 2021 | Code-level model checking in the software development workflow at Amazon Web ServicesabstractAbstract This article describes a style of applying symbolic model checking developed over the course of four years at Amazon Web Services (AWS). Lessons learned are drawn from proving properties of numerous C‐based systems, for example, custom hypervisors, encryption code, boot loaders, and an IoT operating system. Using our methodology, we find that we can prove the correctness of industrial low‐level C‐based systems with reasonable effort and predictability. Furthermore, AWS developers are increasingly writing their own formal specifications. As part of this effort, we have developed a CI system that allows integration of the proofs into standard development workflows and extended the proof tools to provide better feedback to users. All proofs discussed in this article are publicly available on GitHub. Nathan Chong, Byron Cook, Jonathan Eidelman, Konstantinos Kallas, Kareem Khazem, Felipe R. Monteiro, Daniel Schwartz-Narbonne, Serdar Tasiran, Michael Tautschnig, Mark R. Tuttle |
Softw. Pract. Exp. | 2 |
| 2020 | Stratified Abstraction of Access Control PoliciesabstractThe shift to cloud-based APIs has made application security critically depend on understanding and reasoning about policies that regulate access to cloud resources.We present stratified predicate abstraction, a new approach that summarizes complex security policies into a compact set of positive and declarative statements that precisely state who has access to a resource.We have implemented stratified abstraction and deployed it as the engine powering AWS's IAM Access Analyzer service, and hence, demonstrate how formal methods and SMT can be used for security policy explanation. John D. Backes, Ulises Berrueco, Tyler Bray, Daniel Brim, Byron Cook, Andrew Gacek, Ranjit Jhala, Kasper Søe Luckow, Sean McLaughlin, Madhav Menon, Daniel Peebles, Ujjwal Pugalia, Neha Rungta, Cole Schlesinger, Adam Schodde, Anvesh Tanuku, Carsten Varming, Deepa Viswanathan |
CAV (1) | 5 |
| 2020 | Using model checking tools to triage the severity of security bugs in the Xen hypervisorabstractIn practice, few security bugs found in source code are urgent, but quickly identifying which ones are is hard.We describe the application of bounded model checking to triaging reported issues quickly at the cloud service provider Amazon Web Services (AWS).We focus on the job of reactive security experts who need to determine the severity of bugs found in the Xen hypervisor.We show that, using our publicly available extensions to the model checker CBMC, a security expert can obtain traces to construct security tests and estimate the severity of the reported finding within 15 minutes.We believe that the changes made to the model checker, as well as the methodology for using tools in this scenario, will generalise to other organisations and environments. Byron Cook, Björn Döbel, Daniel Kroening, Norbert Manthey, Martin Pohlack, Elizabeth Polgreen, Michael Tautschnig, Pawel Wieczorkiewicz |
FMCAD | 1 |
| 2020 | Block public access: trust safety verification of access control policiesabstractData stored in cloud services is highly sensitive and so access to it is controlled via policies written in domain-specific languages (DSLs). The expressiveness of these DSLs provides users flexibility to cover a wide variety of uses cases, however, unintended misconfigurations can lead to potential security issues. We introduce Block Public Access, a tool that formally verifies policies to ensure that they only allow access to trusted principals, i.e. that they prohibit access to the general public. To this end, we formalize the notion of Trust Safety that formally characterizes whether or not a policy allows unconstrained (public) access. Next, we present a method to compile the policy down to a logical formula whose unsatisfiability can be (1) checked by SMT and (2) ensures Trust Safety. The constructs of the policy DSLs render unsatisfiability checking PSPACE-complete, which precludes verifying the millions of requests per second seen at cloud scale. Hence, we present an approach that leverages the structure of the policy DSL to compute a much smaller residual policy that corresponds only to untrusted accesses. Our approach allows Block Public Access to, in the common case, syntactically verify Trust Safety without having to query the SMT solver. We have implemented Block Public Access and present an evaluation showing how the above optimization yields a low-latency policy verifier that the S3 team at AWS has integrated into their authorization system, where it is currently in production, analyzing millions of policies everyday to ensure that client buckets do not grant unintended public access. Malik Bouchet, Byron Cook, Bryant Cutler, Anna Druzkina, Andrew Gacek, Liana Hadarean, Ranjit Jhala, Brad Marshall, Daniel Peebles, Neha Rungta, Cole Schlesinger, Chriss Stephens, Carsten Varming, Andy Warfield |
ESEC/SIGSOFT FSE | 2 |
| 2019 | Reachability Analysis for AWS-Based NetworksabstractCloud services provide the ability to provision virtual networked infrastructure on demand over the Internet. The rapid growth of these virtually provisioned cloud networks has increased the demand for automated reasoning tools capable of identifying misconfigurations or security vulnerabilities. This type of automation gives customers the assurance they need to deploy sensitive workloads. It can also reduce the cost and time-to-market for regulated customers looking to establish compliance certification for cloud-based applications. In this industrial case-study, we describe a new network reachability reasoning tool, called Tiros, that uses off-the-shelf automated theorem proving tools to fill this need. Tiros is the foundation of a recently introduced network security analysis feature in the Amazon Inspector service now available to millions of customers building applications in the cloud. Tiros is also used within Amazon Web Services (AWS) to automate the checking of compliance certification and adherence to security invariants for many AWS services that build on existing AWS networking features. John D. Backes, Sam Bayless, Byron Cook, Catherine Dodge, Andrew Gacek, Alan J. Hu, Temesghen Kahsai, Bill Kocik, Evgenii Kotelnikov, Jure Kukovec, Sean McLaughlin, Jason Reed 0004, Neha Rungta, John Sizemore, Mark A. Stalzer, Preethi Srinivasan, Pavle Subotic, Carsten Varming, Blake Whaley |
CAV (2) | 3 |
| 2018 | Continuous Formal Verification of Amazon s2n
Andrey Chudnov, Nathan Collins, Byron Cook, Joey Dodds, Brian Huffman, Colm MacCárthaigh, Stephen Magill, Eric Mertens, Eric Mullen, Serdar Tasiran, Aaron Tomb, Eddy Westbrook |
CAV (2) | 3 |
| 2018 | Formal Reasoning About the Security of Amazon Web ServicesabstractWe report on the development and use of formal verification tools within Amazon Web Services (AWS) to increase the security assurance of its cloud infrastructure and to help customers secure themselves. We also discuss some remaining challenges that could inspire future research in the community. These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves. Byron Cook |
CAV (1) | 1 |
| 2018 | Model Checking Boot Code from AWS Data CentersabstractThis paper describes our experience with symbolic model checking in an industrial setting. We have proved that the initial boot code running in data centers at Amazon Web Services is memory safe, an essential step in establishing the security of any data center. Standard static analysis tools cannot be easily used on boot code without modification owing to issues not commonly found in higher-level code, including memory-mapped device interfaces, byte-level memory access, and linker scripts. This paper describes automated solutions to these issues and their implementation in the C Bounded Model Checker (CBMC). CBMC is now the first source-level static analysis tool to extract the memory layout described in a linker script for use in its analysis. These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves. Byron Cook, Kareem Khazem, Daniel Kroening, Serdar Tasiran, Michael Tautschnig, Mark R. Tuttle |
CAV (2) | 1 |
| 2018 | Semantic-based Automated Reasoning for AWS Access Policies using SMTabstractCloud computing provides on-demand access to IT resources via the Internet. Permissions for these resources are defined by expressive access control policies. This paper presents a formalization of the Amazon Web Services (AWS) policy language and a corresponding analysis tool, called ZELKOVA, for verifying policy properties. ZELKOVA encodes the semantics of policies into SMT, compares behaviors, and verifies properties. It provides users a sound mechanism to detect misconfigurations of their policies. ZELKOVA solves a PSPACE-complete problem and is invoked many millions of times daily. John D. Backes, Pauline Bolignano, Byron Cook, Catherine Dodge, Andrew Gacek, Kasper Søe Luckow, Neha Rungta, Oksana Tkachuk, Carsten Varming |
FMCAD | 3 |
| 2017 | Automated formal reasoning about AWS systemsabstractAutomatic and semiautomatic formal verification tools are now being developed and used within Amazon Web Services (AWS) to find proofs that prove or disprove desired properties of key AWS components. In this session, we outline these efforts and discuss how tools are used to play and then replay found proofs of desired properties when software artifacts or networks are modified, thus helping provide security throughout the lifetime of the AWS system. Byron Cook |
FMCAD | 1 |
| 2017 | Automated formal reasoning about amazon web services (keynote)abstractAutomatic and semiautomatic formal verification and model checking tools are now being used within AWS to find proofs that prove or disprove desired properties of key AWS components. In this session, we outline these efforts and discuss how tools are used to play and then replay found proofs of desired properties when software artifacts or networks are modified, thus helping provide security throughout the lifetime of the AWS system. Byron Cook |
SPIN | 1 |
| 2017 | Verifying Increasingly Expressive Temporal Logics for Infinite-State SystemsabstractTemporal logic is a formal system for specifying and reasoning about propositions qualified in terms of time. It offers a unified approach to program verification as it applies to both sequential and parallel programs and provides a uniform framework for describing a system at any level of abstraction. Thus, a number of automated systems have been proposed to exclusively reason about either Computation-Tree Logic (CTL) or Linear Temporal Logic (LTL) in the infinite-state setting. Unfortunately, these logics have significantly reduced expressiveness as they restrict the interplay between temporal operators and path quantifiers, thus disallowing the expression of many practical properties, for example, “along some future an event occurs infinitely often.” Contrarily, CTL * , a superset of both CTL and LTL, can facilitate the interplay between path-based and state-based reasoning. CTL * thus exclusively allows for the expressiveness of properties involving existential system stabilization and “possibility” properties. Until now, there have not existed automated systems that allow for the verification of such expressive CTL * properties over infinite-state systems. This article proposes a method capable of such a task, thus introducing the first known fully automated tool for symbolically proving CTL * properties of (infinite-state) integer programs. The method uses an internal encoding that admits reasoning about the subtle interplay between the nesting of temporal operators and path quantifiers that occurs within CTL * proofs. A program transformation is first employed that trades nondeterminism in the transition relation for nondeterminism explicit in variables predicting future outcomes when necessary. We then synthesize and quantify preconditions over the transformed program that represent program states that satisfy a CTL * formula. This article demonstrates the viability of our approach in practice, thus leading to a new class of fully-automated tools capable of proving crucial properties that no tool could previously prove. Additionally, we consider the linear-past extension to CTL * for infinite-state systems in which the past is linear and each moment in time has a unique past. We discuss the practice of this extension and how it is further supported through the use of history variables. We have implemented our approach and report our benchmarks carried out on case studies ranging from smaller programs to demonstrate the expressiveness of CTL * specifications, to larger code bases drawn from device drivers and various industrial examples. Byron Cook, Heidy Khlaaf, Nir Piterman |
J. ACM | 1 |
| 2016 | T2: Temporal Property Verification
Marc Brockschmidt, Byron Cook, Samin Ishtiaq, Heidy Khlaaf, Nir Piterman |
TACAS | 2 |
| 2015 | On Automation of CTL* Verification for Infinite-State Systems
Byron Cook, Heidy Khlaaf, Nir Piterman |
CAV (1) | 1 |
| 2015 | Spatial Interpolants
Aws Albarghouthi, Josh Berdine, Byron Cook, Zachary Kincaid |
ESOP | 3 |
| 2015 | Fairness for Infinite-State Systems
Byron Cook, Heidy Khlaaf, Nir Piterman |
TACAS | 1 |
| 2014 | Finding Instability in Biological Models
Byron Cook, Jasmin Fisher, Benjamin A. Hall, Samin Ishtiaq, Garvit Juniwal, Nir Piterman |
CAV | 1 |
| 2014 | Disproving termination with overapproximationabstractWhen disproving termination using known techniques (e.g. recurrence sets), abstractions that overapproximate the program's transition relation are unsound. In this paper we introduce live abstractions, a natural class of abstractions that can be combined with the recent concept of closed recurrence sets to soundly disprove termination. To demonstrate the practical usefulness of this new approach we show how programs with nonlinear, nondeterministic, and heap-based commands can be shown nonterminating using linear overapproximations. Byron Cook, Carsten Fuhs, Kaustubh Nimkar, Peter W. O'Hearn |
FMCAD | 1 |
| 2014 | Faster temporal reasoning for infinite-state programsabstractIn this paper, we describe a new symbolic model checking procedure for CTL verification of infinite-state programs. Our procedure exploits the natural decomposition of the state space given by the control-flow graph in combination with the nesting of temporal operators to optimize reasoning performed during symbolic model checking. An experimental evaluation against competing tools demonstrates that our approach not only gains orders-of-magnitude performance improvement, but also allows for scalability of temporal reasoning for larger programs. Byron Cook, Heidy Khlaaf, Nir Piterman |
FMCAD | 1 |
| 2014 | Proving Nontermination via Safety
Hong Yi Chen, Byron Cook, Carsten Fuhs, Kaustubh Nimkar, Peter W. O'Hearn |
TACAS | 2 |
| 2013 | Better Termination Proving through Cooperation
Marc Brockschmidt, Byron Cook, Carsten Fuhs |
CAV | 2 |
| 2013 | At the interface of biology and computationabstractRepresenting a new class of tool for biological modeling, Bio Model Analyzer (BMA) uses sophisticated computational techniques to determine stabilization in cellular networks. This paper presents designs aimed at easing the problems that can arise when such techniques - \'14using distinct approaches to conceptualizing networks\'14 - are applied in biology. The work also engages with more fundamental issues being discussed in the philosophy of science and science studies. It shows how scientific ways of knowing are constituted in routine interactions with tools like BMA, where the emphasis is on the practical business at hand, even when seemingly deep conceptual problems exist. For design, this perspective refigures the frictions raised when computation is used to model biology. Rather than obstacles, they can be seen as opportunities for opening up different ways of knowing. Alex S. Taylor, Nir Piterman, Samin Ishtiaq, Jasmin Fisher, Byron Cook, Caitlin Cockerton, Sam Bourton, David Benqué |
CHI | 5 |
| 2013 | Reasoning about nondeterminism in programsabstractBranching-time temporal logics (e.g. CTL, CTL*, modal mu-calculus) allow us to ask sophisticated questions about the nondeterminism that appears in systems. Applications of this type of reasoning include planning, games, security analysis, disproving, precondition synthesis, environment synthesis, etc. Unfortunately, existing automatic branching-time verification tools have limitations that have traditionally restricted their applicability (e.g. push-down systems only, universal path quantifiers only, etc). Byron Cook, Eric Koskinen |
PLDI | 1 |
| 2013 | Ramsey vs. Lexicographic Termination Proving
Byron Cook, Abigail See, Florian Zuleger |
TACAS | 1 |
| 2013 | Proving termination of nonlinear command sequencesabstractAbstract We describe a simple and efficient algorithm for proving the termination of a class of loops with nonlinear assignments to variables. The method is based on divergence testing for each variable in the cone-of-influence of the loop’s condition. The analysis allows us to automatically prove the termination of loops that cannot be handled using previous techniques. We also describe a method for integrating our nonlinear termination proving technique into a larger termination proving framework that depends on linear reasoning. Domagoj Babic, Byron Cook, Alan J. Hu, Zvonimir Rakamaric |
Formal Aspects Comput. | 2 |
| 2013 | Ranking function synthesis for bit-vector relations
Byron Cook, Daniel Kroening, Philipp Rümmer, Christoph M. Wintersteiger |
Formal Methods Syst. Des. | 1 |
| 2012 | Bma: Visual Tool for Modeling and Analyzing Biological Networks
David Benqué, Sam Bourton, Caitlin Cockerton, Byron Cook, Jasmin Fisher, Samin Ishtiaq, Nir Piterman, Alex S. Taylor, Moshe Y. Vardi |
CAV | 4 |
| 2012 | Temporal property verification as a program analysis task - Extended Version
Byron Cook, Eric Koskinen, Moshe Y. Vardi |
Formal Methods Syst. Des. | 1 |
| 2011 | Advances in Proving Program Termination and Liveness
Byron Cook |
CADE | 1 |
| 2011 | SLAyer: Memory Safety for Systems-Level Code
Josh Berdine, Byron Cook, Samin Ishtiaq |
CAV | 2 |
| 2011 | Temporal Property Verification as a Program Analysis Task
Byron Cook, Eric Koskinen, Moshe Y. Vardi |
CAV | 1 |
| 2011 | Tractable Reasoning in a Fragment of Separation Logic
Byron Cook, Christoph Haase, Joël Ouaknine, Matthew J. Parkinson, James Worrell 0001 |
CONCUR | 1 |
| 2011 | Making prophecies with decision predicatesabstractWe describe a new algorithm for proving temporal properties expressed in LTL of infinite-state programs. Our approach takes advantage of the fact that LTL properties can often be proved more efficiently using techniques usually associated with the branching-time logic CTL than they can with native LTL algorithms. The caveat is that, in certain instances, nondeterminism in the system's transition relation can cause CTL methods to report counter examples that are spurious with respect to the original LTL formula. To address this problem we describe an algorithm that, as it attempts to apply CTL proof methods, finds and then removes problematic nondeterminism via an analysis on the potentially spurious counterexamples. Problematic nondeterminism is characterized using decision predicates, and removed using a partial, symbolic determinization procedure which introduces new prophecy variables to predict the future outcome of these choices. We demonstrate---using examples taken from the PostgreSQL database server, Apache web server, and Windows OS kernel---that our method can yield enormous performance improvements in comparison to known tools, allowing us to automatically prove properties of programs where we could not prove them before. Byron Cook, Eric Koskinen |
POPL | 1 |
| 2011 | Proving Stabilization of Biological Systems
Byron Cook, Jasmin Fisher, Elzbieta Krepska, Nir Piterman |
VMCAI | 1 |
| 2010 | Ranking Function Synthesis for Bit-Vector Relations
Byron Cook, Daniel Kroening, Philipp Rümmer, Christoph M. Wintersteiger |
TACAS | 1 |
| 2009 | Finding heap-bounds for hardware synthesisabstractDynamically allocated and manipulated data structures cannot be translated into hardware unless there is an upper bound on the amount of memory the program uses during all executions. This bound can depend on the generic parameters to the program, i.e., program inputs that are instantiated at synthesis time. We propose a constraint based method for the discovery of memory usage bounds, which leads to the first-known C-to-gates hardware synthesis supporting programs with non-trivial use of dynamically allocated memory, e.g., linked lists maintained with malloc and free. We illustrate the practicality of our tool on a range of examples. Byron Cook, Ashutosh Gupta 0001, Stephen Magill, Andrey Rybalchenko, Jiri Simsa, Satnam Singh, Viktor Vafeiadis |
FMCAD | 1 |
| 2009 | Taming the Unbounded for Hardware Synthesis
Byron Cook |
IFM | 1 |
| 2009 | Proving that non-blocking algorithms don't blockabstractA concurrent data-structure implementation is considered nonblocking if it meets one of three following liveness criteria: waitfreedom, lock-freedom,orobstruction-freedom. Developers of nonblocking algorithms aim to meet these criteria. However, to date their proofs for non-trivial algorithms have been only manual pencil-and-paper semi-formal proofs. This paper proposes the first fully automatic tool that allows developers to ensure that their algorithms are indeed non-blocking. Our tool uses rely-guarantee reasoning while overcoming the technical challenge of sound reasoning in the presence of interdependent liveness properties. Alexey Gotsman, Byron Cook, Matthew J. Parkinson, Viktor Vafeiadis |
POPL | 2 |
| 2009 | Advances in Program Termination and Liveness
Byron Cook |
VMCAI | 1 |
| 2009 | Summarization for termination: no return!
Byron Cook, Andreas Podelski, Andrey Rybalchenko |
Formal Methods Syst. Des. | 1 |
| 2008 | Proving Conditional Termination
Byron Cook, Sumit Gulwani, Tal Lev-Ami, Andrey Rybalchenko, Shmuel Sagiv |
CAV | 1 |
| 2008 | Scalable Shape Analysis for Systems Code
Hongseok Yang, Oukseh Lee, Josh Berdine, Cristiano Calcagno, Byron Cook, Dino Distefano, Peter W. O'Hearn |
CAV | 5 |
| 2008 | Ranking Abstractions
Aziem Chawdhary, Byron Cook, Sumit Gulwani, Shmuel Sagiv, Hongseok Yang |
ESOP | 2 |
| 2007 | Local Reasoning for Storable Locks and Threads
Alexey Gotsman, Josh Berdine, Byron Cook, Noam Rinetzky, Shmuel Sagiv |
APLAS | 3 |
| 2007 | Shape Analysis for Composite Data Structures
Josh Berdine, Cristiano Calcagno, Byron Cook, Dino Distefano, Peter W. O'Hearn, Thomas Wies, Hongseok Yang |
CAV | 3 |
| 2007 | Automatically Proving Program Termination
Byron Cook |
CAV | 1 |
| 2007 | Bringing Hardware and Software Closer Together with Termination AnalysisabstractWhen computers hang the root cause is usually due to termination bugs in the software that interfaces with hardware. In this talk the author discuss efforts to build program termination proof tools designed to find these types of bugs in systems software. Byron Cook |
MEMOCODE | 1 |
| 2007 | Proving thread terminationabstractConcurrent programs are often designed such that certain functions executing within critical threads must terminate. Examples of such cases can be found in operating systems, web servers, e-mail clients, etc. Unfortunately, no known automatic program termination prover supports a practical method of proving the termination of threads. In this paper we describe such a procedure. The procedure's scalability is achieved through the use of environment models that abstract away the surrounding threads. The procedure's accuracy is due to a novel method of incrementally constructing environment abstractions. Our method finds the conditions that a thread requires of its environment in order to establish termination by looking at the conditions necessary to prove that certain paths through the thread represent well-founded relations if executed in isolation of the other threads. The paper gives a description of experimental results using an implementation of our procedureon Windows device drivers and adescription of a previously unknown bug found withthe tool. Byron Cook, Andreas Podelski, Andrey Rybalchenko |
PLDI | 1 |
| 2007 | Thread-modular shape analysisabstractWe present the first shape analysis for multithreaded programs that avoids the explicit enumeration of execution-interleavings. Our approach is to automatically infer a resource invariant associated with each lock that describes the part of the heap protected by the lock. This allows us to use a sequential shape analysis on each thread. We show that resource invariants of a certain class can be characterized as least fixed points and computed via repeated applications of shape analysis only on each individual thread. Based on this approach, we have implemented a thread-modular shape analysis tool and applied it to concurrent heap-manipulating code from Windows device drivers. Alexey Gotsman, Josh Berdine, Byron Cook, Shmuel Sagiv |
PLDI | 3 |
| 2007 | Variance analyses from invariance analyses
Josh Berdine, Aziem Chawdhary, Byron Cook, Dino Distefano, Peter W. O'Hearn |
POPL | 3 |
| 2007 | Proving that programs eventually do something goodabstractIn recent years we have seen great progress made in the area of automatic source-level static analysis tools. However, most of today's program verification tools are limited to properties that guarantee the absence of bad events (safety properties). Until now no formal software analysis tool has provided fully automatic support for proving properties that ensure that good events eventually happen (liveness properties). In this paper we present such a tool, which handles liveness properties of large systems written in C. Liveness properties are described in an extension of the specification language used in the SDV system. We have used the tool to automatically prove critical liveness properties of Windows device drivers and found several previously unknown liveness bugs. Byron Cook, Alexey Gotsman, Andreas Podelski, Andrey Rybalchenko, Moshe Y. Vardi |
POPL | 1 |
| 2007 | Arithmetic Strengthening for Shape Analysis
Stephen Magill, Josh Berdine, Edmund M. Clarke, Byron Cook |
SAS | 4 |
| 2007 | Proving Termination by DivergenceabstractWe describe a simple and efficient algorithm for proving the termination of a class of loops with nonlinear assignments to variables. The method is based on divergence testing for each variable in the cone-of-influence of the loop's termination condition. The analysis allows us to automatically prove the termination of loops that cannot be handled using previous techniques. The paper closes with experimental results using short examples drawn from industrial code. Domagoj Babic, Alan J. Hu, Zvonimir Rakamaric, Byron Cook |
SEFM | 4 |
| 2007 | Automatically Proving Concurrent Programs CorrectabstractSummary form only given. This talk describes new advances that allow us to automatically prove both liveness properties and heap-shape properties of concurrent programs. The talk focuses on recent thread-modular extensions to the program termination prover TERMINATOR and shape analysis tool SLAyer and their application to Windows device drivers. Byron Cook |
SEFM | 1 |
| 2007 | Shape Analysis by Graph Decomposition
Roman Manevich, Josh Berdine, Byron Cook, G. Ramalingam, Shmuel Sagiv |
TACAS | 3 |
| 2007 | Predicate Abstraction via Symbolic Decision ProceduresabstractWe present a new approach for performing predicate abstraction based on symbolic decision procedures. Intuitively, a symbolic decision procedure for a theory takes a set of predicates in the theory and symbolically executes a decision procedure on all the subsets over the set of predicates. The result of the symbolic decision procedure is a shared expression (represented by a directed acyclic graph) that implicitly represents the answer to a predicate abstraction query. We present symbolic decision procedures for the logic of Equality and Uninterpreted Functions (EUF) and Difference logic (DIFF) and show that these procedures run in pseudo-polynomial (rather than exponential) time. We then provide a method to construct symbolic decision procedures for simple mixed theories (including the two theories mentioned above) using an extension of the Nelson-Oppen combination method. We present preliminary evaluation of our Procedure on predicate abstraction benchmarks from device driver verification in SLAM. Shuvendu K. Lahiri, Thomas Ball 0001, Byron Cook |
Log. Methods Comput. Sci. | 3 |
| 2007 | Verification of Boolean programs with unbounded thread creation
Byron Cook, Daniel Kroening, Natasha Sharygina |
Theor. Comput. Sci. | 1 |
| 2006 | Automatic Termination Proofs for Programs with Shape-Shifting Heaps
Josh Berdine, Byron Cook, Dino Distefano, Peter W. O'Hearn |
CAV | 2 |
| 2006 | Terminator: Beyond Safety
Byron Cook, Andreas Podelski, Andrey Rybalchenko |
CAV | 1 |
| 2006 | Repair of Boolean Programs with an Application to C
Andreas Griesmayer, Roderick Bloem, Byron Cook |
CAV | 3 |
| 2006 | Thorough static analysis of device driversabstractBugs in kernel-level device drivers cause 85% of the system crashes in the Windows XP operating system [44]. One of the sources of these errors is the complexity of the Windows driver API itself: programmers must master a complex set of rules about how to use the driver API in order to create drivers that are good clients of the kernel. We have built a static analysis engine that finds API usage errors in C programs. The Static Driver Verifier tool (SDV) uses this engine to find kernel API usage errors in a driver. SDV includes models of the OS and the environment of the device driver, and over sixty API usage rules. SDV is intended to be used by driver developers "out of the box." Thus, it has stringent requirements: (1) complete automation with no input from the user; (2) a low rate of false errors. We discuss the techniques used in SDV to meet these requirements, and empirical results from running SDV on over one hundred Windows device drivers. Thomas Ball 0001, Ella Bounimova, Byron Cook, Vladimir Levin, Jakob Lichtenberg, Con McGarvey, Bohus Ondrusek, Sriram K. Rajamani, Abdullah Ustuner |
EuroSys | 3 |
| 2006 | Over-Approximating Boolean Programs with Unbounded Thread CreationabstractThis paper describes a symbolic algorithm for over-approximating reachability in Boolean programs with unbounded thread creation. The fix-point is detected by projecting the state of the threads to the globally visible parts, which are finite. Our algorithm models recursion by over-approximating the call stack that contains the return locations of recursive function calls, as reachability is undecidable in this case. The algorithm may obtain spurious counterexamples, which are removed iteratively by means of an abstraction refinement loop. Experiments show that the symbolic algorithm for unbounded thread creation scales to large abstract models Byron Cook, Daniel Kroening, Natasha Sharygina |
FMCAD | 1 |
| 2006 | Termination proofs for systems codeabstractProgram 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. Byron Cook, Andreas Podelski, Andrey Rybalchenko |
PLDI | 1 |
| 2006 | Interprocedural Shape Analysis with Separated Heap Abstractions
Alexey Gotsman, Josh Berdine, Byron Cook |
SAS | 3 |
| 2005 | Cogent: Accurate Theorem Proving for Program Verification
Byron Cook, Daniel Kroening, Natasha Sharygina |
CAV | 1 |
| 2005 | Predicate Abstraction via Symbolic Decision Procedures
Shuvendu K. Lahiri, Thomas Ball 0001, Byron Cook |
CAV | 3 |
| 2005 | Using Stålmarck's Algorithm to Prove Inequalities
Byron Cook, Georges Gonthier |
ICFEM | 1 |
| 2005 | Abstraction Refinement for Termination
Byron Cook, Andreas Podelski, Andrey Rybalchenko |
SAS | 1 |
| 2004 | Zapato: Automatic Theorem Proving for Predicate Abstraction Refinement
Thomas Ball 0001, Byron Cook, Shuvendu K. Lahiri |
CAV | 2 |
| 2004 | SLAM and Static Driver Verifier: Technology Transfer of Formal Methods inside Microsoft
Thomas Ball 0001, Byron Cook, Vladimir Levin, Sriram K. Rajamani |
IFM | 2 |
| 2004 | Accurate Theorem Proving for Program Verification
Byron Cook, Daniel Kroening, Natasha Sharygina |
ISoLA | 1 |
| 2004 | Refining Approximations in Software Predicate Abstraction
Thomas Ball 0001, Byron Cook, Satyaki Das, Sriram K. Rajamani |
TACAS | 2 |
| 2003 | A Symbolic Approach to Predicate Abstraction
Shuvendu K. Lahiri, Randal E. Bryant, Byron Cook |
CAV | 3 |
| 2003 | A framework for superscalar microprocessor correctness statements
Mark D. Aagaard, Byron Cook, Nancy A. Day, Robert B. Jones |
Int. J. Softw. Tools Technol. Transf. | 2 |
| 2003 | Design automation with mixtures of proof strategies for propositional logicabstractDesign automation problems can often be encoded in propositional logic, and solved by applying propositional logic proof methods. Unfortunately, there exists no single proof method with adequate performance for all problems of interest. It is, therefore, critical to be able to combine different approaches, and to quickly be able to test how different compositions affect overall performance. In this paper, we present a proof engine framework where individual methods are viewed as strategies-functions between different proof states. By defining our proof engine in such a way that we can compose strategies to form new, more powerful, strategies we achieve synergistic effects between the individual methods. Unlike previous approaches, our framework is flexible enough to allow users to quickly come up with specially tailored composite analyses for problems from any of the different subdomains of design automation. We show how several known analyses for solving design automation problems encoded in propositional logic can be integrated as base strategies in our framework. As a proof-of-concept, and to demonstrate the power inherent in the framework, we also present experimental results that show the performance of two default composite strategies that we have developed using the framework over a period of several years. These strategies are often one to two magnitudes faster when compared with binary decision diagram-based techniques and search-based satisfiability solvers such as ZCHAFF. The introduction of the framework was the key facilitator in the development of these default strategies. Gunnar Andersson, Per Bjesse, Byron Cook, Ziyad Hanna |
IEEE Trans. Comput. Aided Des. Integr. Circuits Syst. | 3 |
| 2002 | A proof engine approach to solving combinational design automation problemsabstractThere are many approaches available for solving combinational design automation problems encoded as tautology or satisfiability checks. Unfortunately there exists no single analysis that gives adequate performance for all problems of interest, and it is therefore critical to be able to combine approaches.In this paper, we present a proof engine framework where individual analyses are viewed as strategies---functions between different proof states. By defining our proof engine in such a way that we can compose strategies to form new, more powerful, strategies we achieve synergistic effects between the individual methods. The resulting framework has enabled us to develop a small set of powerful composite default strategies.We describe several strategies and their interplay; one of the strategies, variable instantiation, is new. The strength of our approach is demonstrated with experimental results showing that our default strategies can achieve up to several magnitudes of speed-up compared to BDD-based techniques and search-based satisfiability solvers such as ZChaff. Gunnar Andersson, Per Bjesse, Byron Cook, Ziyad Hanna |
DAC | 3 |
| 2000 | Combining Stream-Based and State-Based Verification Techniques
Nancy A. Day, Mark D. Aagaard, Byron Cook |
FMCAD | 3 |
| 1999 | On Embedding a Microarchitectural Design Language within HaskellabstractBased on our experience with modelling and verifying microarchitectural designs within Haskell, this paper examines our use of Haskell as host for an embedded language. In particular, we highlight our use of Haskell's lazy lists, type classes, lazy state monad, and unsafe Perform I0, and point to several areas where Haskell could be improved in the future. We end with an example of a benefit gained by bringing the functional perspective to microarchitectural modelling. John Launchbury, Jeffrey R. Lewis, Byron Cook |
ICFP | 3 |
| 1997 | Disposable Memo Functions (Extended Abstract)abstractNo abstract available. Byron Cook, John Launchbury |
ICFP | 1 |