{-
Recursive instance heads as in ...
 instance C0 (x,Bool) = C0 x
... are Ok if we allow for typechecking scheme as described in SYB with class.
The main idea is to assume C0 x in proving the preconditions of the
body of the clause.
This is also works for mutual recursion among type classes
{-
Recursive instance heads as in ...
instance C0 (x,Bool) = C0 x
... are Ok if we allow for typechecking scheme as described in SYB with class.
The main idea is to assume C0 x in proving the preconditions of the
body of the clause.
This is also works for mutual recursion among type classes and