summaryrefslogtreecommitdiff
path: root/gf-book/examples/chapter6/Nat.gf
blob: ba0dfe4a1eff93236f68bc50c40190a183a3eafa (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
abstract Nat = {
  cat
    Prop ;                        -- proposition
    Nat ;                         -- natural number
  data
    Zero : Nat ;                  -- 0
    Succ : Nat -> Nat ;           -- the successor of x
  fun
    Even : Nat -> Prop ;          -- x is even
    And  : Prop -> Prop -> Prop ; -- A and B

  fun one : Nat ;
  def one = Succ Zero ;

  fun twice : Nat -> Nat ;
  def twice x = plus x x ;

  fun plus : Nat -> Nat -> Nat ;
  def 
    plus x Zero = x ;
    plus x (Succ y) = Succ (plus x y) ;
}