\section{Pychinko}
When Cwm first came out, the reasoner was particulary inefficient at handling rules which could cause themselves to fire. In essence, what it would do is to run the rule until nothing new was generated. On a ruleset like in Appendix \ref{loopy-n3}, this would cause it to do a tremendous amount of extra work. Also, the main indexes are generated when parsing. Only generating indexes for which there are patterns in rules could save significant amounts of time and memory. Pychinko is a Cwm clone, whose main purpose is to have better performance by using the RETE algorithm, as well as not pre-building alpha nodes. Pychinko optimizes the joining operations to a degree that none of the code I've written or maintained does. Pychinko supports a few of the simplest Cwm builtins. Testing pychinko, most of its performance advantage over Cwm on simple rulesets and small datasets is that it has faster startup time. The lazy building of indexes also contributes a great deal. It would seem to be rare for problems like Appendix \ref{loopy-n3} to be run, where the possible algorithmic advantage shows up. Also, Pychinko never supported many builtins, seemingly for reasons that have been given in section \ref{static-ordering}.
