polymorphic recursion (unsound)
genericInstanceOf
stashing work: kill Kleene-Mycroft iteration when the number of
constraints > 1000
make generalization sound
refactor FTV and Fresh