Recursive types and bounded quantification are prominent features in many modern programming languages, such as Java, C#, Scala, or TypeScript. Unfortunately, the interaction between recursive types, bounded quantification, and subtyping has shown to be problematic in the past. Consequently, defining a simple foundational calculus that combines those features and has desirable properties, such as decidability, transitivity of subtyping, conservativity, and a sound and complete algorithmic formulation, has been a long-time challenge.
This paper shows how to extend
$F_{\le}$ with iso-recursive types in a new calculus called
$F_{\le}^{\mu}$.
$F_{\le}$ is a well-known polymorphic calculus with bounded quantification. In
$F_{\le}^{\mu}$, we add iso-recursive types and correspondingly extend the subtyping relation with iso-recursive subtyping using the recently proposed nominal unfolding rules. In addition, we use so-called structural folding/unfolding rules for typing iso-recursive expressions, inspired by the structural unfolding rule proposed by Abadi et al. (1996). The structural rules add expressive power to the more conventional folding/unfolding rules in the literature, and they enable additional applications. We present several results, including: type soundness; transitivity; the conservativity of
$F_{\le}^{\mu}$ over
$F_{\le}$; and a sound and complete algorithmic formulation of
$F_{\le}^{\mu}$. We study two variants of
$F_{\le}^{\mu}$. The first one uses an extension of the
$\textrm{kernel}~F_{\le}$ (a well-known decidable variant of
$F_{\le}$). This extension accepts equivalent rather than equal bounds and is shown to preserve decidable subtyping. The second variant employs the
$\textrm{full}~F_{\le}$ rule for bounded quantification and has undecidable subtyping. Moreover, we also study an extension of the kernel version of
$F_{\le}^{\mu}$, called
$F_{\le\ge}^{\mu\wedge}$, with a form of intersection types and lower bounded quantification. All the properties from the kernel version of
$F_{\le}^{\mu}$ are preserved in
$F_{\le\ge}^{\mu\wedge}$. All the results in this paper have been formalized in the Coq theorem prover.