¿Cómo puedo usar evidencia contradictoria?

Mientras escribosobre cómo hacer subtipos en Haskell, se me ocurrió que sería muy conveniente poder "usar" evidencia contradictoria comoTrue ~ False informar al compilador sobre ramas muertas. Con otro tipo vacío estándar,Void, elEmptyCase La extensión le permite marcar una rama muerta (es decir, una que contiene un valor de tipoVoid) de esta manera:

use :: Void -> a
use x = case x of

Me gustaría hacer algo similar por insatisfactorioConstraints.

¿Hay un término al que se le puede dar el tipoTrue ~ False => a pero no se le puede dar el tipoa?

Respuestas a la pregunta(2)

Su respuesta a la pregunta