Zulip Chat Archive

Stream: general

Topic: strange bug, maybe a diamond?


Heather Macbeth (Aug 12 2021 at 19:20):

In the following example, abel fails, and I'm guessing it's a symptom that two things which look equal in the goal state are different at some lower level. I'm having trouble minimizing it, though. Can anyone diagnose it?

import analysis.normed_space.inner_product

variables {V : Type*} [inner_product_space  V] (s : submodule  V) [complete_space s]

include s

-- fails
example (x : V) : true :=
begin
  let w := _root_.orthogonal_projection s x,
  let v := x - (w:V),
  have : bit0 (s.subtype (_root_.orthogonal_projection s x)) - x = (w:V) - v,
  { simp [bit0],
    dsimp [w, v],
    abel, -- left with a goal which looks like it should be in the scope of `abel`

    },
end

-- works
example (x : V) : true :=
begin
  let w : s := _root_.orthogonal_projection s x,
  let v := x - (w:V),
  have : bit0 (s.subtype (_root_.orthogonal_projection s x)) - x = (w:V) - v,
  { simp [bit0],
    dsimp [w, v],
    abel },
end

Heather Macbeth (Aug 12 2021 at 19:21):

The difference between the working and non-working examples is that in the working one, the type of w is specified:

  let w : s := _root_.orthogonal_projection s x,

Rob Lewis (Aug 12 2021 at 19:31):

This is fixed by @Anne Baanen 's #8628 so I think your guess is correct

Anne Baanen (Aug 12 2021 at 20:22):

Heh, perfect timing! :grinning_face_with_smiling_eyes:


Last updated: Dec 20 2023 at 11:08 UTC