Files
gf-core/transfer/examples/nat.tr
2005-11-25 16:36:19 +00:00

24 lines
464 B
Plaintext

data Nat : Type where {
Zero : Nat ;
Succ : (n:Nat) -> Nat ;
} ;
plus : Nat -> Nat -> Nat ;
plus Zero y = y ;
plus (Succ x) y = Succ (plus x y) ;
pred : Nat -> Nat ;
pred Zero = Zero ;
pred (Succ n) = n ;
natToInt : Nat -> Int ;
natToInt Zero = 0 ;
natToInt (Succ n) = 1 + natToInt n ;
plus : Nat -> Nat -> Nat ;
plus Zero y = y ;
plus (Succ x) y = Succ (plus x y) ;
intToNat : Int -> Nat ;
intToNat n = if n == 0 then Zero else Succ (intToNat (n-1)) ;