@@ -38,6 +38,19 @@ total isSucc : Nat -> Bool
3838isSucc Z = False
3939isSucc (S n) = True
4040
41+
42+||| Proof that `n` is not equal to Z
43+data IsSucc : (n : Nat) -> Type where
44+ ItIsSucc : IsSucc (S n)
45+
46+Uninhabited (IsSucc Z) where
47+ uninhabited ItIsSucc impossible
48+
49+||| A decision procedure for `IsSucc`
50+isItSucc : (n : Nat) -> Dec (IsSucc n)
51+isItSucc Z = No absurd
52+isItSucc (S n) = Yes ItIsSucc
53+
4154--------------------------------------------------------------------------------
4255-- Basic arithmetic functions
4356--------------------------------------------------------------------------------