27
_+_ : Pos -> Pos -> Pos
28
m + n = suc (Nat._+_ m n)
30
-- Returns Nothing if input is 1.
31
pred : Pos -> Maybe Pos
32
pred Nat.zero = Nothing
33
pred (Nat.suc n) = Just n
35
toNat : Pos -> Nat.Nat
38
decidableEquiv : DecidableEquiv Pos
39
decidableEquiv = Nat.decidableEquiv
42
posDatoid = datoid Pos decidableEquiv
44
sucPred : Maybe Pos -> Pos
46
sucPred (Just p) = suc p
48
data Pred (p : Pos) (mP : Maybe Pos) : Set where
49
ok : datoidRel posDatoid (sucPred mP) p -> Pred p mP
53
-- Returns Nothing if input is 1.
54
predOK : (p : Pos) -> Pred p (pred p)
55
predOK Nat.zero = ok (dRefl posDatoid {one})
56
predOK (Nat.suc n) = ok (dRefl posDatoid {n})