I just want to point out that many of the “Direct sources” here were never actually used in the implementation directly. The main example is “Complete and Easy Bidirectional Typechecking for Higher-Rank Polymorphism”, where many of the ideas in the paper (using a separate instantiation judgment, for example) inspired the implementation, but the key idea (the idea of using an ordered context) wasn’t used at all. The same goes for “Extensible records with scoped labels”, where the key idea was not used, but many of the ideas improved my understanding of the problem domain at the time.

I would say that all of these are great resources for someone trying to understand the type checker code, but it’s wrong to say that the type checker is based on any one in particular.

That’s all