The OCaml manual says “No attempt has been made at mathematical rigor: words are employed with their intuitive meaning, without further definition. As a consequence, the typing rules have been left out, by lack of the mathematical framework required to express them, while they are definitely part of a full formal definition of the language.”. I suspect that OCaml types can be described in plain English and I propose to attempt at least in part. I think also that plain English can be rigorous. That is not easy however. I skip records (6.2.3) because there are details that I have not guessed. Concerning “Polymorphic Variants” (6.2.6), show me one. I think that the eight categories of values (I hesitate to use the term ‘type’ here) are disjoint. Regarding tuples: For each integer n > 1, for each sequence of n types where αj is a type-expression denoting the jth of these types, there is a type-expression ⸢(α1 * ... * αn)⸣ which denotes the type of tuples whose jth element is of type αj.

For each n≥0 and for each type denoted by type-expression α there is a type denoted by type-expression