I know I do not need these constraints, it was just the simplest way I found to explain the problem.

I have fought about that: I was not expecting F d c ~  F a (c,a) not mean that F d ~F a /\ c ~(c,a), I thought the whole family was "parameterized".
If I encoded the family

type family F a x :: *

F d c ~  F a (c,a) would be semantically different, meaning that this "decomposition rule" does not apply?

Thanks,
hugo