SCS Muralidhar Talupur
Research Interests
CMU



During the course of my graduate studies I have worked or am working on the following topics:

1. Hardware Verification

Hardware verification is one of the main success stories of  model checking.  My  work on hardware verification focused on making predicate abstraction more efficient. In one of the papers my collaborators and I  introduced three new notions of redundancy in a set of predicates. Redundancy of predicates is relative to the properties we are interested in preserving. By removing redundant predicates the process of abstraction is sped up. See publications [7],[8],[9] for more details.


2. Parameterized Verification of concurrent, distributed systems

Parameterized systems are computer systems whose description involves natural parameters. For example, the number of caches is a parameter in a cache coherence algorithm. That is, the algorithm is designed to work correctly no matter what the number of caches in the system is. Other examples include mutual exclusion protocols, web service systems etc. Verification of parameterized systems is hard because it entails verification of an infinite number of systems. Various approaches, ranging from semi- to fully-automatic, have been proposed to verify such systems. These approaches usually work under significant simplifying assumptions. I have developed an automatic abstraction technique, called environment abstraction, for verifying, without any simplifying  assumptions, parameterized systems containing replicated processes such as mutual exclusion protocols and cache coherence protocols.  I have applied this to verify Szymanski's protocol, Bakery algorithm without the usual simplifying atomicity assumptions. In addition I have also verified safety properties of German's cache coherence protocol and a simplified version of Flash protocol. These systems are probably some of the most intricate concurrent distributed systems. See publications [2],[4] for more details.

The abstraction technique is quite general and can be applied to other systems containing concurrently executing replicated components. I am currently applying our technique to verify distributed systems with real time constraints like Fischer's protocol. Further, the replicated component in a system does not have to be a process, it can be some other element as well. For example, the replicated component can be a memory cell and thus the memory array can be seen as a collection of replicated components. This view lets us apply environment abstraction to data structures as well. I am currently working on this topic

3. Difference Logic

Difference logic (also known Separation logic) is a sub-class of first order logic that arise quite frequently during verification. Difference logic formulas consist of boolean combinations of predicates of the form x < y + c where x, y are integer variables and c is a integer constant.  Having fast procedures for deciding whether a given difference logic formula is satisfiable or not is essential in many verification tasks.  In my work on Difference logic, my collaborators and I have proposed a novel method for tackling these formulas: we first find  "satisfiability-preserving adequate  ranges" for each integer variable that appears in the formula (this is the hard part!).  Once we have small ranges, we can convert the formula into boolean SAT formula and give it to SAT solver. Alternately, we can also combine the small ranges with the usual lazy approach to speed up learning. Such a method is described in [4] and is currently one of the fastest for deciding difference logic formulas. See papers [3], [5] for more details.

4. Real time Systems

Recently, I have gotten interested in verification of real time systems.  I have come up with a new discretization scheme which leads to a natural class of abstractions for timed systems. In addition, I also have a technique for mitigating the effect of large constants appearing in timed systems. Large constants are usually problematic for discretization based methods. I have implemented a preliminary version of these ideas along with a fellow graduate student and we have obtained very good experimental results. The advantage of these techniques is that they make it possible to use any of the three different types of model checkers to verify real time systems. We are planning to build a tool for real time systems that can take fairly highly level specifications and use BDD, explicit or bounded model checkers as the back-end.