How do I derive the free theorem for the type:
data F a = C1 Nat | C2 Bool Nat a
where Nat
is simply data Nat = Z | S Nat
?
In principle, this can be answered by the Haskell 'free-theorems' package, but it's too elderly to compile under any GHC version I can reasonably install.