25 lines
511 B
Text
25 lines
511 B
Text
/- Recursive functions -/
|
|
|
|
#print Nat -- Nat is an inductive datatype
|
|
|
|
def fib (n : Nat) : Nat :=
|
|
match n with
|
|
| 0 => 1
|
|
| 1 => 1
|
|
| n+2 => fib (n+1) + fib n
|
|
|
|
example : fib 5 = 8 := rfl
|
|
|
|
example : fib (n+2) = fib (n+1) + fib n := rfl
|
|
|
|
#print fib
|
|
/-
|
|
def fib : Nat → Nat :=
|
|
fun n =>
|
|
Nat.brecOn n fun n f =>
|
|
(match (motive := (n : Nat) → Nat.below n → Nat) n with
|
|
| 0 => fun x => 1
|
|
| 1 => fun x => 1
|
|
| Nat.succ (Nat.succ n) => fun x => x.fst.fst + x.fst.snd.fst.fst)
|
|
f
|
|
-/
|