I can write something impossible with an empty case, and use it with Decision, for example.
{-# LANGUAGE DataKinds, EmptyCase, LambdaCase, TypeOperators #-}
import Data.Type.Equality
import Data.Void
data X = X1 | X2
f :: X1 :~: X2 -> Void
f = \case {}
-- or
-- f x = case x of {}
Is there a way to write the equivalent without using case by directly pattern-matching the parameter?
f :: X1 :~: X2 -> Void
f ???