For those navigating the branches:
- the master branch does not contain much.
- dev contains some useful testcases and all of Zoe's previous working code.
- new-alg contains Zoe's start to a WIP algorithm that seems to deal with equation solving and consistency checks.
- top-sort contains new code dealing with substituting unification results into each other with type dependencies accounted for.