Algorithms for checking subtyping between recursive types lie at the core of many programming language implementations. But the fundamental theory of these algorithms and how they relate to simpler declarative speci cations is not widely understood, due in part to
Vladimir Gapeyev, Michael Y. Levin, Benjamin C. Pi