Checker Inference README
========================

This is a first snapshot release of the project.
There are still some rough edges in the code; it is currently being
refactored, trimmed, and extended at the same time to work with
multiple type systems. This might have created some inconsistencies
and more debugging output than desired.
The documentation of the source code is currently minimal and there is
no developer manual yet.

All suggestions for improvements are very welcome!

If you want to extend the framework for your own type system or add
additional constraint solvers, please send me a mail!


Installation
------------

You will need a JDK and Scala environment.
I usually use OpenJDK 7 and Scala 2.9.

Install the source-versions of these three tools:

http://types.cs.washington.edu/jsr308/
http://types.cs.washington.edu/annotation-file-utilities/
http://types.cs.washington.edu/checker-framework/

Put all of them into a common directory.
Make sure that all tools are compiled correctly and that all Checker
Framework test cases work.

Put the Checker Inference project into the same common directory.
Edit file scripts/setup.sh and edit the paths for the ROOT and
JAVA_HOME variables. All other variables should be set correctly
depending only on those two.

Script compileInference.sh will then compile all the Checker Inference
source code.
The other shell scripts execute different parts of the inference.

You will now need to install a type system to infer. Try the Generic
Universe Type system first and then adapt it to your own type system.

All the projects are easy to use from Eclipse. Create one workspace
for all projects and import the existing project configurations.
Contributions of make, Ant, and Maven scripts would be greatly
appreciated.


Copyright
---------

The current copyright is CRAPL, an "An academic-strength open source
license":

http://matt.might.net/articles/crapl/