import data.nat open nat tactic definition fib : nat → nat | 0 := 1 | 1 := 1 | (n+2) := fib n + fib (n+1) example (a : nat) : fib a > 0 := by do get_local "a" >>= λ H, induction_core semireducible H ("nat" <.> "rec_on") ["n", "iH1"], trace_state, trace "-------", unfold ["fib"], trace_state, trace "-------", mk_const "zero_lt_one" >>= apply, trace_state, trace "-------", get_local "n" >>= cases, unfold ["fib"], mk_const "zero_lt_one" >>= apply, unfold ["fib"], trace_state, mk_const "add_pos_of_nonneg_of_pos" >>= apply, mk_const ("nat" <.> "zero_le") >>= apply, assumption