Automated deduction tools: haRVey
haRVey (http://www.loria.fr/equipes/cassis/softwares/haRVey/ )is a theorem prover for first-order logic with equality  . It works by refutation and checks whether a first-order formula is a logical consequence of a first-order theory T , axiomatized by a finite set of formulae. Recently, the capability of reasoning in the combination of T and the theory of linear arithmetic over integers has been added. The main feature of haRVey is its capability of behaving as a decision procedure for the problem of checking the validity of certain classes of quantifier-free formulae modulo some theories of relevance in verification such as lists, arrays, and their combinations. The system features a combination of Boolean reasoning (supplied by a BDD or a SAT solver) to efficiently handle the boolean structure of formulae and a (generalization of the) Nelson-Oppen combination method between superposition theorem proving to flexibly reason in T and an implementation of Fourier-Motzkin method for linear arithmetic. The version of haRVey integrating a SAT solver has been designed and implemented by P. Fontaine ( MOSEL project). haRVey has been especially designed to be integrated in larger verification systems. It is integrated in Barvey (http://lifc.univ-fcomte.fr/~couchot/soft/barvey/ ), a tool to check the consistency of B specifications. It takes a B abstract machine as input, generates proof obligations encoding the fact that the invariant is inductive, and translates them into a validity problem that haRVey can discharge. The tool Why developed by J.-C. Filliâtre (LRI, Université Paris Sud, Orsay) can generate proof obligations for haRVey to check the correctness of ML or C programs.
We are developing a JML (Java Modeling Language)annotation generator, called JAG (http://jag.univ-fcomte.fr ), for verifying temporal properties on Java classes. JAG consists of many translators that transform dynamic properties into standard JML annotations that ensure the satisfaction of these properties. Historically, the first input language of JAG was JTPL (Java Temporal Pattern Language), an adaptation to Java of a fragment of LTL (Linear Temporal Logic), that can deal with exceptional termination of methods and can express both safety and liveness properties.