variable a : nat

definition f : nat → nat
| (nat.succ a) := a
| nat.zero     := nat.zero

example : f 3 = 2 :=
rfl

definition g : nat → nat
| a := a

example (a : nat) : g a = a :=
rfl

definition h (a : nat) : nat → nat
| a := a

example (a b : nat) : h a b = b :=
rfl

definition o : nat := zero

definition f2 : nat → nat
| o  := 0

example (a : nat) : f2 a = 0 := rfl

definition f3 : nat → nat
| (add a 1) := a
| nat.zero  := nat.zero

example : f3 10 = 9 := rfl
