module Fib; type Nat := zero : Nat | suc : Nat → Nat; infixl 6 +; + : Nat → Nat → Nat; + zero b := b; + (suc a) b := suc (a + b); fib : Nat -> Nat; fib zero := zero; fib (suc (zero)) := suc zero; fib (suc (suc n)) := fib (suc n) + fib n; end;