type t = [ `A | `B ] type 'a u = t val a : [< t > `A ] = `A type 'a s = 'a val b : [< t > `B ] = `B