type A = { x : { y : A } } type B = { y : { x : B } } assert { x : B } <: A assert A <: { x : B }