Search code examples
algorithmconcurrencyparallel-processingproofproof-of-correctness

What programming language has the specific purpose of testing concurrent algorithms?


A colleague of mine has written a program that proves that some conditions will not be met after testing an algorithm running multiple concurrent threads trying to find a sequence that might trigger the unwanted condition. He used a computer language that was designed for this purpose, but I can't remember its name. What are the languages that serve this specific purpose?


Solution

  • Spin is a popular open-source software verification tool, used by thousands of people worldwide. The tool can be used for the formal verification of multi-threaded software applications. The tool was developed at Bell Labs in the Unix group of the Computing Sciences Research Center, starting in 1980. The software has been available freely since 1991, and continues to evolve to keep pace with new developments. In April 2002 the tool was awarded the ACM System Software Award.

    http://spinroot.com/spin/whatispin.html