Zvonimir Rakamaric | University of Utah (original) (raw)

Uploads

Papers by Zvonimir Rakamaric

Research paper thumbnail of A logic and decision procedure for verification of heap-manipulating programs

Abstract Heap-manipulating programs (HMPs), which manipulate unbounded linked data structures via... more Abstract Heap-manipulating programs (HMPs), which manipulate unbounded linked data structures via pointers, are a major frontier for formal verification of software. Formal verification is the process of proving (or disproving) the correctness of a system with respect to some kind of formal specification or property. The primary contributions of this thesis are the definition of a simple transitive closure logic tailored for formal verification of HMPs, and an efficient decision procedure for this logic.

Research paper thumbnail of Symbolic Learning of Component Interfaces

Given a white-box component with specified unsafe states, we address the problem of automatically... more Given a white-box component with specified unsafe states, we address the problem of automatically generating an interface that captures safe orderings of invocations of's public methods. Method calls in the generated interface are guarded by constraints on their parameters. Unlike previous work, these constraints are generated automatically through an iterative refinement process.

Research paper thumbnail of STORM: Static unit checking of concurrent programs

Abstract Concurrency is inherent in today's software. Unexpected interactions between concurrentl... more Abstract Concurrency is inherent in today's software. Unexpected interactions between concurrently executing threads often cause subtle bugs in concurrent programs. Such bugs are hard to discover using traditional testing techniques since they require executing a program on a particular unit test (ie input) through a particular thread interleaving.

Research paper thumbnail of Automatic inference of frame axioms using static analysis

Abstract Many approaches to software verification are currently semi-automatic: a human must prov... more Abstract Many approaches to software verification are currently semi-automatic: a human must provide key logical insights-eg, loop invariants, class invariants, and frame axioms that limit the scope of changes that must be analyzed. This paper describes a technique for automatically inferring frame axioms of procedures and loops using static analysis. The technique builds on a pointer analysis that generates limited information about all data structures in the heap.

Research paper thumbnail of Asynchronously Communicating Visibly Pushdown Systems

Abstract We introduce an automata-based formal model suitable for specifying, modeling, analyzing... more Abstract We introduce an automata-based formal model suitable for specifying, modeling, analyzing, and verifying asynchronous taskbased and message-passing programs. Our model consists of visibly pushdown automata communicating over unbounded reliable point-to-point first-in-first-out queues. Such a combination unifies two branches of research, one focused on task-based models, and the other on models of message-passing programs.

Research paper thumbnail of Modular verification of shared-memory concurrent system software

Abstract Software is large, complex, and error-prone. According to the US National Institute of S... more Abstract Software is large, complex, and error-prone. According to the US National Institute of Standards and Technology, software bugs cost the US economy an estimated $60 billion each year. The trend in hardware design of switching to multi-core architectures makes software development even more complex. Cutting software development costs and ensuring higher reliability of software is of global interest and a grand challenge.

Research paper thumbnail of Proving Termination of Nonlinear Command Sequences

Abstract We describe a simple and efficient algorithm for proving the termination of a class of l... more Abstract 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.

Research paper thumbnail of A low-level memory model and an accompanying reachability predicate

International Journal on …, Jan 1, 2009

Research paper thumbnail of Delay-bounded scheduling

ACM SIGPLAN Notices, Jan 1, 2011

Research paper thumbnail of Verifying heap-manipulating programs in an SMT framework

Proceedings of the 5th …, Jan 1, 2007

Research paper thumbnail of Context-bounded translations for concurrent software: An empirical evaluation

Model Checking Software, Jan 1, 2010

Research paper thumbnail of Proving termination by divergence

Software Engineering and …, Jan 1, 2007

Research paper thumbnail of A scalable memory model for low-level code

Verification, Model Checking, and Abstract …, Jan 1, 2009

Research paper thumbnail of An inference-rule-based decision procedure for verification of heap-manipulating programs with mutable data and cyclic data structures

Verification, Model Checking, and …, Jan 1, 2007

Research paper thumbnail of Static and precise detection of concurrency errors in systems code using SMT solvers

Computer Aided Verification, Jan 1, 2009

Research paper thumbnail of A logic and decision procedure for predicate abstraction of heap-manipulating programs

Verification, Model Checking, and Abstract …, Jan 1, 2006

Research paper thumbnail of A reachability predicate for analyzing low-level software

Tools and Algorithms for …, Jan 1, 2007

Research paper thumbnail of 21 amh

Research paper thumbnail of A logic and decision procedure for verification of heap-manipulating programs

Abstract Heap-manipulating programs (HMPs), which manipulate unbounded linked data structures via... more Abstract Heap-manipulating programs (HMPs), which manipulate unbounded linked data structures via pointers, are a major frontier for formal verification of software. Formal verification is the process of proving (or disproving) the correctness of a system with respect to some kind of formal specification or property. The primary contributions of this thesis are the definition of a simple transitive closure logic tailored for formal verification of HMPs, and an efficient decision procedure for this logic.

Research paper thumbnail of Symbolic Learning of Component Interfaces

Given a white-box component with specified unsafe states, we address the problem of automatically... more Given a white-box component with specified unsafe states, we address the problem of automatically generating an interface that captures safe orderings of invocations of's public methods. Method calls in the generated interface are guarded by constraints on their parameters. Unlike previous work, these constraints are generated automatically through an iterative refinement process.

Research paper thumbnail of STORM: Static unit checking of concurrent programs

Abstract Concurrency is inherent in today's software. Unexpected interactions between concurrentl... more Abstract Concurrency is inherent in today's software. Unexpected interactions between concurrently executing threads often cause subtle bugs in concurrent programs. Such bugs are hard to discover using traditional testing techniques since they require executing a program on a particular unit test (ie input) through a particular thread interleaving.

Research paper thumbnail of Automatic inference of frame axioms using static analysis

Abstract Many approaches to software verification are currently semi-automatic: a human must prov... more Abstract Many approaches to software verification are currently semi-automatic: a human must provide key logical insights-eg, loop invariants, class invariants, and frame axioms that limit the scope of changes that must be analyzed. This paper describes a technique for automatically inferring frame axioms of procedures and loops using static analysis. The technique builds on a pointer analysis that generates limited information about all data structures in the heap.

Research paper thumbnail of Asynchronously Communicating Visibly Pushdown Systems

Abstract We introduce an automata-based formal model suitable for specifying, modeling, analyzing... more Abstract We introduce an automata-based formal model suitable for specifying, modeling, analyzing, and verifying asynchronous taskbased and message-passing programs. Our model consists of visibly pushdown automata communicating over unbounded reliable point-to-point first-in-first-out queues. Such a combination unifies two branches of research, one focused on task-based models, and the other on models of message-passing programs.

Research paper thumbnail of Modular verification of shared-memory concurrent system software

Abstract Software is large, complex, and error-prone. According to the US National Institute of S... more Abstract Software is large, complex, and error-prone. According to the US National Institute of Standards and Technology, software bugs cost the US economy an estimated $60 billion each year. The trend in hardware design of switching to multi-core architectures makes software development even more complex. Cutting software development costs and ensuring higher reliability of software is of global interest and a grand challenge.

Research paper thumbnail of Proving Termination of Nonlinear Command Sequences

Abstract We describe a simple and efficient algorithm for proving the termination of a class of l... more Abstract 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.

Research paper thumbnail of A low-level memory model and an accompanying reachability predicate

International Journal on …, Jan 1, 2009

Research paper thumbnail of Delay-bounded scheduling

ACM SIGPLAN Notices, Jan 1, 2011

Research paper thumbnail of Verifying heap-manipulating programs in an SMT framework

Proceedings of the 5th …, Jan 1, 2007

Research paper thumbnail of Context-bounded translations for concurrent software: An empirical evaluation

Model Checking Software, Jan 1, 2010

Research paper thumbnail of Proving termination by divergence

Software Engineering and …, Jan 1, 2007

Research paper thumbnail of A scalable memory model for low-level code

Verification, Model Checking, and Abstract …, Jan 1, 2009

Research paper thumbnail of An inference-rule-based decision procedure for verification of heap-manipulating programs with mutable data and cyclic data structures

Verification, Model Checking, and …, Jan 1, 2007

Research paper thumbnail of Static and precise detection of concurrency errors in systems code using SMT solvers

Computer Aided Verification, Jan 1, 2009

Research paper thumbnail of A logic and decision procedure for predicate abstraction of heap-manipulating programs

Verification, Model Checking, and Abstract …, Jan 1, 2006

Research paper thumbnail of A reachability predicate for analyzing low-level software

Tools and Algorithms for …, Jan 1, 2007

Research paper thumbnail of 21 amh