banner

Menu:

What's new:

Aug, 2011:
Meeting (the movie) is released

Feb, 2011:
Doors (the movie) got a new website!

Nov, 2010:
BerezinFilm blog updates
New thread: reviews of movies I've watched

Jul 31, 2010:
Music Pills #1 & #2
From TV Studio workshop in Russia

May 15, 2010:
Jake's Game (movie)
24 hour film race project

Formal Verification: Ideas and Challenges

I believe that the greatest challenge in formal verification is not to be able to verify a design of a certain size or complexity, but rather to be able to catch up, get ahead, and continue to stay ahead of the state-of-the-art in the designs. The grand challenge is not a specific milestone to achieve, but rather a direction to follow for an extended period of time.

Ideally, formal verification should be a part of the design process. Of course, the only way we can stay in the design loop is to adjust the verification methodology at least as fast as the designers change the design.

In my opinion, the major problem in formal verification today are inadequate tools. Most tools support only a small range of hard-wired methodologies, are hard and inconvenient to use, and virtually impossible to modify or extend. Hence, everyone who wants to try a new methodogy is forced to write a new tool, often from scratch, spending months if not years just to try out a handful of ideas. As a result, we often get yet another tool with a hard-wired methodology, idiosyncratic input language or API, and no life after graduation of the author.

Compare this with a flexibility of any real-world programming language, where one can come up with an idea, code it up, test quickly, find out why it fails, and go on to the next idea. Would it be great if formal verification methodologies can be prototyped and tested this fast?

Challenge: Fast Prototyping Tools

My observation is that most advances in formal verification happen in the following pattern:

Hence, an important challenge is to speed up the process of prototyping and testing new methodologies.

Where we are now

What we need

How to get there

Prior Art

The idea of a fast prototyping environment is not a new one, and researchers have been trying various ideas: SAL project at SRI, Bogor model checking environment at Kansas State University, and various other projects. PVS can be considered one of such prototyping tools, to a certain degree.

In general, most of the tools that are widely used are either very efficient domain-specific black-box engines, or highly flexible, and better yet scriptable, prototyping environments.

Challenges in Combination of Decision Procedures

Validity checkers, or automated theorem provers based on combination of decision procedures, are becoming the efficient black-box engines used in many formal verification methodologies. By their very nature, these engines must have easy-to-use, convenient interfaces to be added to larger tools. The design and possibly setting standards for such interfaces is one of the main challenges in this area. The next set of equally important problems is the efficiency and expressive power of these engines.

State of the art

What we need

Individual Decision Procedures

The main challenges in writing a decision procedure for a combination framework is that the decision procedure must be:

In addition, the decision procedures must be reasonably efficient, and in some cases (when the underlying algorithm is provably inefficient) be able to give up early, if the user asks so.

State-of-the-art

To date, we have efficient algorithms for the following decision procedures and/or functional modules:

Implementations exists, but not as efficient as could be:

Experimental versions: