Zulip Chat Archive

Stream: new members

Topic: Newbie question


Jakob Scholbach (Jan 26 2021 at 20:12):

I am really new to lean, and working through §2 here https://leanprover-community.github.io/mathematics_in_lean/basics.html
I am stuck with this one:

theorem neg_eq_of_add_eq_zero {a b : R} (h : a + b = 0) : -a = b :=
sorry

Of course I would like to say: starting from hypothesis h, add -a on the left and use this lemma sub_self mentioned above in the chapter. What is the syntax to achieve this? Thanks!

Johan Commelin (Jan 26 2021 at 20:13):

Hey @Jakob Scholbach nice to see you here!

Johan Commelin (Jan 26 2021 at 20:13):

Small tip: you can use #backticks to format your code on Zulip

Johan Commelin (Jan 26 2021 at 20:16):

You can go two ways. You can work on the hypothesis h. Or you can work "backward" on the goal.
There is a lemma add_left_cancel that could help with backwards reasoning.

Johan Commelin (Jan 26 2021 at 20:18):

For a forward step, you could do something like

example {R : Type} [comm_ring R] {a b : R} (h : a + b = 0) : -a = b :=
begin
  have h2 : -a + (a + b) = -a + 0,
  { rw h },
end

Johan Commelin (Jan 26 2021 at 20:18):

There are ways of doing this in 1 step. But that's maybe not very enlightening right now.

Jakob Scholbach (Jan 26 2021 at 20:21):

Ok, thanks!

Alex J. Best (Jan 26 2021 at 20:21):

For working backwards from the goal, you can do something like,

import algebra.ring

namespace my_ring

variables {R : Type*} [ring R]

-- BEGIN
theorem neg_eq_of_add_eq_zero {a b : R} (h : a + b = 0) : -a = b :=
begin
rw  add_zero (-a),
rw  h,
rw neg_add_cancel_left,
end
end my_ring

Patrick Massot (Jan 26 2021 at 20:26):

Beware the exercise asks to do it only with the lemmas discussed before. So we need to know the list of allowed lemmas (that I don't remember).

Alex J. Best (Jan 26 2021 at 20:39):

good point, I updated what I wrote to only use lemmas in the tutorial, it got way shorter too :grinning:


Last updated: Dec 20 2023 at 11:08 UTC