```haskell class F t u | t ~> u class G t u instance F t u => G t u ``` We need to make sure G inherits the fundep constraint. Same for superclasses ```haskell class G t u | t ~> u class G t u => F t u ```