Calvin

Calvin is a tool for checking safety properties of multithreaded Java programs. To handle realistic programs, Calvin performs modular checking of each procedure called by a thread using specifications of other procedures and other threads. The checker leverages off existing sequential program verification techniques based on automatic theorem proving. The Java programs we have applied Calvin to include the Apprentice challenge problem, the Mercator web crawler, and some Java libraries.

Here's the most up-to-date journal paper describing Calvin.

Modular Verification of Multithreaded Programs.
Cormac Flanagan, Stephen N. Freund, Shaz Qadeer and Sanjit A. Seshia.
Theoretical Computer Science, Volume 338, Issues 1-3, 10 June 2005, pp. 153-183.

An earlier version was published at CAV'02. (This is superseded by the paper above.)

A Modular Checker for Multithreaded Programs.
Cormac Flanagan, Shaz Qadeer and Sanjit A. Seshia.
In Proc. Computer-Aided Verification (CAV), LNCS 2404, Copenhagen, Denmark, July 2002.

The Calvin project was started by Shaz Qadeer, Stephen Freund, and Cormac Flanagan while they were at Compaq Systems Research Center. Since then, they have pursued other very interesting research directions in the area of verifying multithreaded software.

Calvin's code, which is based on ESC/Java, used to be publicly available from Compaq/HP Research, but it looks like it's no longer online.