Timm:: software
Lurch: fast
random search

new | hot | fun | blog
New: Presentations: When can we ignore stuff?: presentation to NASA AMES, July 2003.

(For the latest of LURCH, see Owen03a)

Hard problems (worst-case intractable) like program verification exhibit a phase transition shown here:

Note the standard features of the phase transisition:
  • An easy range of problem instances ;
  • A range for which it is practically impossible to find a solution;
  • and a narrow band, the phase transition, separating the two regions [Owen00a].
We are working on LURCH, an alternative to model checking. LURCH is a tool that exploits the hypothetical easy range , so that models can be verified quickly without using so much memory, and as a side benefit makes possible features that greatly simplify the modeling task.

How is it possible to exploit the easy range? We do this by using a partial, random search:

  • Partial, because unlike other model checking tools, the whole space of possible behaviors is not explored;
  • Random, because the choice of which behavior to explore is nondeterministic.
For input models in the easy range, a random sample of possible behaviors will tell us nearly everything we could learn from an exhaustive search (for these models exhaustive search is simply overkill).

And for models in the too hard range, where the partial, random search is not effective, exhaustive search is intractable.

Or, as stated by Knuth in more general terms:

    No matter what complicated thing you have, . . . there's a fairly good chance that random sampling will give insight. Of course if you start with purely random data [e.g., the worst-case end of the the too hard range], then random sampling is going to tell you that it is purely random data [Knuth01a]

Elsewhere similar ideas about how program structure determines whether a verification problem falls into the easy range are expressed in terms of funnels or small backbones [Menzies01a]. A funnel is a small set of key variables that largely determine the behavior of the entire system; if an execution path stumbles into the funnel, it will nearly always be directed to the same behavior. Easy range models are easier to verify (and arguably more testable [Owen00a,Owen00b]) because they contain funnels. In these models a comparatively small amount of exploration is likely to quickly find the key variables and therefore everything its possible to find.

  See who's visiting this page. bite::src ©2003::legal 
 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


keyword: [TImM'sPaGES]