import NNG.Metadata import NNG.MyNat.Addition Game "NNG" World "Addition" Level 1 Title "the induction tactic." open MyNat set_option tactic.hygienic false Introduction " OK so let's see induction in action. We're going to prove ``` zero_add (n : ℕ) : 0 + n = n ``` Wait… what is going on here? Didn't we already prove that adding zero to $n$ gave us $n$? No we didn't! We proved $n + 0 = n$, and that proof was called `add_zero`. We're now trying to establish `zero_add`, the proof that $0 + n = n$. But aren't these two theorems the same? No they're not! It is *true* that `x + y = y + x`, but we haven't *proved* it yet, and in fact we will need both `add_zero` and `zero_add` in order to prove this. In fact `x + y = y + x` is the boss level for addition world, and `induction` is the only other tactic you'll need to beat it. Now `add_zero` is one of Peano's axioms, so we don't need to prove it, we already have it. To prove `0 + n = n` we need to use induction on $n$. While we're here, note that `zero_add` is about zero add something, and `add_zero` is about something add zero. The names of the proofs tell you what the theorems are. Anyway, let's prove `0 + n = n`. " Statement zero_add "For all natural numbers $n$, we have $0 + n = n$." (n : ℕ) : 0 + n = n := by Hint "You can start a proof by induction over `n` by typing: `induction n with d hd`. If you use the `with` part, you can name your variable and induction hypothesis, otherwise they get default names." induction n with n hn · Hint "Now you have two goals. Once you proved the first, you will jump to the second one. This first goal is the base case $n = 0$. Recall that you can use all lemmas that are visible in your inventory." Hint (hidden := true) "try using `add_zero`." rw [add_zero] rfl · Hint "Now you jumped to the second goal. Here you have the induction hypothesis `{hn} : 0 + {n} = {n}` and you need to prove the statement for `succ {n}`." Hint (hidden := true) "look at `add_succ`." rw [add_succ] Hint (hidden := true) "At this point you see the term `0 + {n}`, so you can use the induction hypothesis with `rw [{hn}]`." rw [hn] rfl NewTactic induction Conclusion " ## Now venture off on your own. Those three tactics: * `induction n with d hd` * `rw [h]` * `rfl` will get you quite a long way through this game. Using only these tactics you can beat Addition World level 4 (the boss level of Addition World), all of Multiplication World including the boss level `a * b = b * a`, and even all of Power World including the fiendish final boss. This route will give you a good grounding in these three basic tactics; after that, if you are still interested, there are other worlds to master, where you can learn more tactics. But we're getting ahead of ourselves, you still have to beat the rest of Addition World. We're going to stop explaining stuff carefully now. If you get stuck or want to know more about Lean (e.g. how to do much harder maths in Lean), ask in `#new members` at [the Lean chat](https://leanprover.zulipchat.com) (login required, real name preferred). Kevin or Mohammad or one of the other people there might be able to help. Good luck! Click on \"Next\" to solve some levels on your own. "