Type Synonyms with Type Variables

I'd like to be able to define type synonyms containing variables, for instance:

:: S a :=== t a b | C t

The function type

f :: (S x) -> S x | C2 x

Should then be equivalent with:

f :: (t a b) -> t2 a c | C t & C2 a & C t2