Show equivalence of re-defined List.In and List.NoDup with Coq stdlib versions
-
I searched for lemmas relating
Forall
to something about list membership, foundList.Forall_forall
, and then spent 15min trying to do anything with theIn
I got out of that. Having this lemma would have meant I would have completed my proof at least 10min quicker.Of course, I should have used the
Forall_forall
from std++, but there's no way I could have known. I'd rather have a not-perfectly-clean, but working proof after 5min than spend 20min to find the "right" proof. -
Hu? I used
List.Forall_forall
, and it usesIn
. (Notice this is the one from the Coq standard library.)Edited by Ralf Jung -
I did first
SearchAbout Forall
or so, stumbled upon Coq'sForall_forall
, and then I spent 15min doingSearchAbout In <something>
in dozens of variations (and other, related avenues) and found nothing. My mistake was using Coq'sForall_forall
instead of the one from std++. I don't say the one from std++ cannot be found, but for me, it showed the one for Coq first, and I had no way to know that I was not supposed to use it. -
Also, generally, people having some experience with Coq will know
In
and may even doSearchAbout Forall In
, which will not even bring up anything from std++. It's not nice to lead them into a dead end like that. I honestly don't think it is a good idea to even redefine these notions from the standard library, that's just asking for exactly the kind of trouble I am having. But if we do redefine it, then at the very least we should provide some way to convert between the two worlds in that split ecosystem we are creating. There will always be the case of some lemma usingIn
not having been proven with∈
.