# Zulip Chat Archive

## Stream: new members

### Topic: How to rewrite when names do not match

#### Timo Schneider (Jul 05 2020 at 14:48):

I am new to lean and I have a very basic question:

```
theorem plus_0_n (n:nat): 0+n = n :=
begin
induction n, refl, generalize : n_n.succ = n_n, exact n_ih,
end
```

I get stuck in this proof, because the names of the variables do not match up, i.e. my induction hypothesis is 0 + n_n = n_n , and n_n : nat. But somehow lean does not want to apply this to the goal, rewriting n_n.succ to n_n - (which I find strange, since both are of type nat). When I try to use the generalize tactic lean changes the name to n_n1, again not allowing me to use rewrite.

Can someone point me to the right tactic to use here?

#### Johan Commelin (Jul 05 2020 at 14:49):

You need to do something before you can apply the induction hypothesis

#### Johan Commelin (Jul 05 2020 at 14:49):

`n_ih`

is only about `n_n`

, not about `n_n + 1`

.

#### Timo Schneider (Jul 05 2020 at 14:55):

Johan Commelin said:

You need to do something before you can apply the induction hypothesis

Yes, I think I want to get this into a form like succ(0+n) = succ(n), in coq I can do so using simplification:

```
Theorem plus_O_n : forall n : nat, n + 0 = n.
Proof.
intros n. induction n. reflexivity.
simpl. rewrite IHn. reflexivity. Qed.
```

I guess i need a small theorem to rewrite the goal first in lean.

#### Johan Commelin (Jul 05 2020 at 15:07):

@Timo Schneider Right. So just tell lean. (In this case it will work.)

```
show succ (0 + n_n) = succ n_n,
```

#### Timo Schneider (Jul 05 2020 at 15:32):

Johan Commelin [said](https://leanprover.zulipchat.com/#narrow/stream/113489-new-members/topic

Thanks, I got it to work now, but I need to read a bit more about the show tactic to understand what it does.

```
theorem plus_0_n (n:nat): 0+n = n :=
begin
induction n, refl, show nat.succ (0 + n_n) = nat.succ n_n, simp, assumption,
end
```

Last updated: Dec 20 2023 at 11:08 UTC