nominal lt nominal eq nominal gt type ord = lt | eq | gt type comparable[t] = { member cmp : t -> ord } type integer = { member cmp : integer -> ord } assert integer <: comparable[integer]