エラー
(\f -> (f 1, f "1")) id

積集合
(\(f,f') -> (f 1, f' "1")) (id,id)

和集合
id' (Left x) = Left (id x)
id' (Right x) = Right (id x)
(\f -> (f (Left 1), f (Right "1"))) id'

集合が有限なら、forallとexistsは不要です。