Rupak Majumdar

Learn More
One approach to model checking software is based on the <i>abstract-check-refine</i> paradigm: build an abstract model, then check the desired property, and if the check fails, refine the model and start over. We introduce the concept of <i>lazy abstraction</i> to integrate and optimize the three phases of the abstract-check-refine loop. Lazy abstraction(More)
Model checking has been widely successful in validating and debugging designs in the hardware and protocol domains. However, state-space explosion limits the applicability of model checking tools, so model checkers typically operate on abstractions of systems. Recently, there has been significant interest in applying model checking to software. For(More)
ion of C programs. In PLDI 01: Programming Language Design and Implementation, pages 203–213. ACM, 2001. 2. S. Das, D. L. Dill, and S. Park. Experience with predicate abstraction. In CAV 99: Computer-Aided Verification, LNCS 1633, pages 160–171. Springer-Verlag, 1999. 3. D. Detlefs, G. Nelson, and J. Saxe. Simplify theorem prover. 4. T.A. Henzinger, R.(More)
Blast is an automatic verification tool for checking temporal safety properties of C programs. Given a C program and a temporal safety property, Blast either statically proves that the program satisfies the safety property, or provides an execution path that exhibits a violation of the property (or, since the problem is undecidable, does not terminate).(More)
BLAST is an automatic verification tool for checking temporal safety properties of C programs. Given a C program and a temporal safety property, BLAST either statically proves that the program satisfies the safety property, or provides an execution path that exhibits a violation of the property (or, since the problem is undecidable, does not terminate).(More)
Much effort is spent by programmers everyday in trying to reduce long, failing execution traces to the <i>cause</i> of the error. We present an algorithm for error cause localization based on a reduction to the maximal satisfiability problem (MAX-SAT), which asks what is the maximum number of clauses of a Boolean formula that can be simultaneously satisfied(More)
We present a methodology and tool for verifying and certifying systems code. The verification is based on the lazy-abstraction paradigm for intertwining the following three logical steps: construct a predicate abstraction from the code, model check the abstraction, and automatically refine the abstraction based on counterexample analysis. The certification(More)
We consider concurrent two-person games played in real time, in which the players decide both which action to play, and when to play it. Such timed games differ from untimed games in two essential ways. First, players can take each other by surprise, because actions are played with delays that cannot be anticipated by the opponent. Second, a player should(More)