module Type:sig..end
Type introspection.
type (_, _) eq = | | | Equal :  | 
The purpose of eq is to represent type equalities that may not otherwise
    be known by the type checker (e.g. because they may depend on dynamic data).
A value of type (a, b) eq represents the fact that types a and b are
    equal.
If one has a value eq : (a, b) eq that proves types a and b are equal,
    one can use it to convert a value of type a to a value of type b by
    pattern matching on Equal:
      let cast (type a) (type b) (Equal : (a, b) Type.eq) (a : a) : b = a
    At runtime, this function simply returns its second argument unchanged.
module Id:sig..end
Type identifiers.