Open mtzguido opened 2 months ago
Yes, I believe that's because we only run the elimination logic at the beginning of a statement, not after it. https://github.com/FStarLang/pulse/blob/0b457c21b9bfe383275ac3f33a87b1eefd75231a/src/checker/Pulse.Checker.fst#L149-L154
It's the same reason why you have to write (); show_proof_state
instead of show_proof_state
.
This function fails to check:
But uncommenting the extra
()
, or doing anything, will make it work. I think without it, the lemma is not eliminated into the context and so is not in scope for the queryfoo p == foo q
.