-- set_option trace.compiler true def fib_aux : ℕ → ℕ × ℕ | 0 := (0, 1) | (n+1) := let p := fib_aux n in (p.2, p.1 + p.2) def fib n := (fib_aux n).2 vm_eval fib 10000 def fib_aux2 : ℕ → ℕ × ℕ | 0 := (0, 1) | (n+1) := let (a, b) := fib_aux2 n in (b, a + b) def fib2 n := (fib_aux2 n).2 vm_eval fib2 10000