Automatic derivation of empty instances of types