T5498.hs:30:39: error: Couldn't match representation of type ‘c a’ with that of ‘c (Down a)’ arising from the coercion of the method ‘intIso’ from type ‘forall (c :: * -> *). c a -> c Int’ to type ‘forall (c :: * -> *). c (Down a) -> c Int’ NB: We cannot know what roles the parameters to ‘c’ have; we must assume that the role is nominal When deriving the instance for (IntIso (Down a))