data D a = DC a; class C a where { type T a; } instance C Int where { type T Int = Int; } instance C a, T a = T Int => C (D a) where { type T (D a) = Bool; }