Zulip Chat Archive

Stream: general

Topic: confused about topological_space_eq


Bernd Losert (Dec 11 2021 at 14:43):

Here's the code:

lemma topological_space_eq :  {f g : topological_space α}, f.is_open = g.is_open  f = g
| a, _, _, _ b, _, _, _ rfl := rfl

I don't understand how this proof works.First, why do you need to pattern match the topological_spaces? Also, since a and b aren't used, why can't they be _ ? I'm trying to rewrite this proof in a longer style, like so:

lemma topological_space_eq' :  {f g : topological_space α}, f.is_open = g.is_open  f = g :=
begin
  assume f g : topological_spaces,
  assume open_eq : f.is_open = g.is_open,
  cases f with a _ _ _,
  cases g with b _ _ _,
  rfl,
end

but that doesn't work. Any tips?

Yury G. Kudryashov (Dec 11 2021 at 14:45):

You should do subst a before the last line.

Yury G. Kudryashov (Dec 11 2021 at 14:45):

(I guess, open_eq becomes a = b after both cases, otherwise you need change or dsimp before subst)

Andrew Yang (Dec 11 2021 at 14:46):

Note that the original proof also matches f.is_open = g.is_open with rfl, which does the subst open_eq for you.

Bernd Losert (Dec 11 2021 at 14:49):

I have this:

lemma topological_space_eq' :  {f g : topological_space α}, f.is_open = g.is_open  f = g :=
begin
  assume f g : topological_spaces,
  assume open_eq : f.is_open = g.is_open,
  cases f with a _ _ _,
  cases g with b _ _ _,
  subst open_eq,
  rfl,
end

but that still doesn't work. How does equality of structures work? Shouldn't there be a goal where I have to prove that every field in one of the structure instances is equal to the corresponding field in the other structure instance?

Andrew Yang (Dec 11 2021 at 14:51):

lemma topological_space_eq' {α : Type*} :  {f g : topological_space α}, f.is_open = g.is_open  f = g :=
begin
  assume f g : topological_space α,
  assume open_eq : f.is_open = g.is_open,
  cases f with a _ _ _,
  cases g with b _ _ _,
  dsimp at open_eq,
  subst open_eq,
end

This works

Reid Barton (Dec 11 2021 at 14:54):

Bernd Losert said:

How does equality of structures work? Shouldn't there be a goal where I have to prove that every field in one of the structure instances is equal to the corresponding field in the other structure instance?

Equality is a built-in notion. This very lemma is how you prove that it can be characterized in the way you suggest.
However, since the other three fields are proofs about is_open, they will be equal to the corresponding fields automatically.


Last updated: Dec 20 2023 at 11:08 UTC