Alchemy is written completely in C++ and the source code can be found in the ALCHDIR/src directory. In general, there is one-to-one correspondence between header files and classes. Most of the code is found in .h files for convenient inlining. We avoided the use of polymorphism as much as possible, since virtual functions are not inlined and we would like to have as much inlining as possible for the code to run quickly.
In general, inference is used as a subroutine for weight learning, which is, in turn, used as a subroutine for structure learning. The architecture of Alchemy is designed in a modular manner in order to accomodate this hierarchy. In the file structure, inference, weight learning and structure learning classes are found in the infer/, learnwts/ and learnstruct/ directories, respectively. The remaining directories hold classes representing the parser (parser/), first-order logic (logic/) and various utilities (util/). In addition, the online/ directory contains classes for performing online inference (see Section 4).