{-# htermination (error :: (List Char) -> a) #-} import qualified Prelude data MyInt = Pos Nat | Neg Nat ; data Nat = Succ Nat | Zero ; data MyBool = MyTrue | MyFalse data List a = Cons a (List a) | Nil data Char = Char MyInt ; stop :: MyBool -> a; stop MyFalse = stop MyFalse; error :: a; error = stop MyTrue;