Zulip Chat Archive
Stream: new members
Topic: Proving lemmas about structural equality
Amanda Hauer (Aug 15 2020 at 00:42):
I'm having trouble proving statements about structure equality. Here's an MWE of the type of problem I run into.
structure point :=
(a : ℕ)
(b : ℕ)
def pt_add : point → point → point := λ x y, ⟨x.1 + y.1, x.2 + y.2⟩
instance : has_add point := ⟨pt_add⟩
lemma pt_add_comm : ∀ a b : point, a + b = b + a :=
begin
intros a b,
cases a,
cases b,
{sorry}
end
The goal contains curly brackets. I have no idea how to go about reaching this goal.
{a := a_a, b := a_b} + {a := b_a, b := b_b} = {a := b_a, b := b_b} + {a := a_a, b := a_b}
Adam Topaz (Aug 15 2020 at 00:44):
I think congr
will help here. But I think the "correct" way to do this is to define and use an extensionality lemma
Mario Carneiro (Aug 15 2020 at 00:46):
You can put @[ext]
on the structure to do that automatically
Kyle Miller (Aug 15 2020 at 00:46):
I probably would try dsimp [has_add.add, pt_add]
as a start.
Mario Carneiro (Aug 15 2020 at 00:46):
but you also need a simp lemma for add
Mario Carneiro (Aug 15 2020 at 00:47):
this proof should be by ext; simp
Reid Barton (Aug 15 2020 at 00:51):
you can put @[simps]
on pt_add
:sunglasses:
Kyle Miller (Aug 15 2020 at 00:54):
Here's one way using only the @[ext]
annotation:
import tactic
@[ext]
structure point :=
(a : ℕ)
(b : ℕ)
def pt_add : point → point → point := λ x y, ⟨x.1 + y.1, x.2 + y.2⟩
instance : has_add point := ⟨pt_add⟩
lemma pt_add_comm (a b : point) : a + b = b + a :=
begin
cases a,
cases b,
ext; dsimp only [has_add.add, pt_add]; exact add_comm _ _,
end
Amanda Hauer (Aug 15 2020 at 00:58):
Thank you for now!
Adam Topaz (Aug 15 2020 at 01:04):
Do you need the first two cases
?
Kyle Miller (Aug 15 2020 at 01:07):
@Adam Topaz You're right, the vestigial cases can be removed :smile:
Adam Topaz (Aug 15 2020 at 01:09):
@Kyle Miller did you ever take a commutative algebra class at Berkeley?
Kyle Miller (Aug 15 2020 at 01:09):
I've been meaning to say "hi" for a while. I took 250B with you.
Adam Topaz (Aug 15 2020 at 01:10):
Ha! I knew I recognized your name!
Adam Topaz (Aug 15 2020 at 01:10):
Small world
Kyle Miller (Aug 15 2020 at 01:13):
It was a good diet of category theory and homological algebra you fed us back then!
Kevin Buzzard (Aug 15 2020 at 09:52):
@Amanda Hauer you could look at the complex number game https://github.com/ImperialCollegeLondon/complex-number-game . A complex number is two real numbers, and assuming everything about real numbers I prove that addition commutes in the complex numbers in a hopefully comprehensive way in the first level
Last updated: Dec 20 2023 at 11:08 UTC