cideLess :: Nat x -> Nat y -> Dec (NatIneq LT x y)
decideLess = \case
  Z_ -> \case
    Z_   -> Refuted "!(Z < Z)" $ \case
    S_ y -> Proven  $ LTZero $ S_ y
  S_ x -> \case
    Z_   -> Refuted "!(S x < Z)" $ \case
    S_ y -> case decideLess x y of
      Proven  l -> Proven  $ LTSucc l
      Refuted e k -> Refuted e $ \(LTSucc l) -> k l


decideLess :: Nat x -> Nat y -> Dec (NatIneq LT x y)
decideLess = \case
  Z_ -> \case
    Z_   -> Refuted "!(Z < Z)" $ \case
    S_ y -> Proven  $ LTZero $ S_ y
  S_ x -> \case
    Z_   -> Refuted "!(S x < Z)" $ \case
    S_ y -> case decideLess x y of
      Proven  l -> Proven  $ LTSucc l
      Refuted e k -> Refuted e $ \(LTSucc l) -> k l
decideLess = \case
  Z_ -> \case
    Z_   -> Refuted "!(Z < Z)" $ \case
    S_ y -> Proven  $ LTZero $ S_ y
  S_ x -> \case
    Z_   -> Refuted "!(S x < Z)" $ \case
    S_ y -> case decideLess x y of
      Proven  l -> Proven  $ LTSucc l
      Refuted e k -> Refuted e $ \(LTSucc l) -> k l