Zulip Chat Archive

Stream: new members

Topic: dsimp


Auguste Poiroux (Aug 18 2020 at 13:46):

Hello!

I took a lemma in mathlib with the attribute simp and the proof rfl. I modified the proof to begin exact(rfl), end and it "broke" the proof of a following theorem which uses dsimp. I've observed this on several files.
For example in this modified file linear_pmap.lean, if you change the proof of mk_apply to rfl, the proof of mk_span_singleton_apply works again.
Why does changing the proof of mk_apply change the way dsimp works?
Why begin exact(rfl), end is not equivalent to rfl?

Thanks in advance!

Reid Barton (Aug 18 2020 at 13:52):

You have just described exactly how it works. Lemmas whose proofs are exactly rfl get a special "refl lemma" attribute, and dsimp will only apply such lemmas.

Reid Barton (Aug 18 2020 at 13:52):

dsimp only wants to apply definitional equalities, and this is how that is ensured.

Auguste Poiroux (Aug 18 2020 at 13:54):

Ok, thanks!

Reid Barton (Aug 18 2020 at 13:54):

My guess as for the reason that the check is so specific:
Lemmas are checked in parallel and a later lemma might want to use this one as a dsimp lemma.
So the test for "is this a refl lemma" needs to be something cheap that can be done in serial and not, say, running a tactic block and seeing what happens.


Last updated: Dec 20 2023 at 11:08 UTC