with recursive types F[%a] = { i:int, id:%a -> bool } G[%a] = { i:int, id:%a -> bool, b : bool } Valid, because G[%a] <= F[%a] However \Y(C[%s]) \not<=_{subtype} \Y(P[%t]) slide: Inheritance and constraints