compiler can't solve overloading
The compiler can't solve the overloading of g in the definition of f. With Int instead of String is works, so it's probably another problem with type synonyms.
class C a b :: a -> b
f :: a -> () | C a String
f a = g a ""
g :: a b -> () | C a b
g _ _ = undef