-
Notifications
You must be signed in to change notification settings - Fork 688
[subsumed] Ssreflect.v: drop a cast notation useless since 8.5 #6133
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[subsumed] Ssreflect.v: drop a cast notation useless since 8.5 #6133
Conversation
I have to catch up with the discussion, so I'm not sure if this is expected to break mathcomp, but it seems it is the case. |
The incriminating line is: |
Indeed, I suspect that changing it to
would make it work. What do you think? (edited for typo) |
I've no clue, I think you should try with an overlay |
The effect of the notation on the grammar and printing was not different from what was done in Coq (since 8.5). However, it had the effect of blocking the level for ":" what created incompatibilities with other user choices (even though these other uses are themselves fragile since they modify a level hard-wired in the grammar of terms).
688a138
to
0609051
Compare
Hi, modifying The reason is that there is still a difference between the native parsing rule and the user-level defined one in
#6134 is precisely changing this, using the cast to set the local scope and unsetting the local scope if the type is not associated to a scope. However, this is a change of semantics. So, what to do? Maybe the simplest would be for 8.7.1 and #6078 to move the ssreflect cast notations in the copy of Added: In the precise case under consideration in |
In my opinion, this "bug" could be viewed as an enhancement request and is not essential to have in 8.7.1. |
Cross posting: With #6134, the overlay would still be needed in |
Is "local scope" the innermost bound scope, separate from the scope stack that is modified by |
The reference manual says: "When interpreting a term, if some of the arguments of qualid are built from a notation, then this notation is interpreted in the scope stack extended by the scope bound (if any) to this argument. The effect of the scope is limited to the argument itself. It does not propagate to subterms but the subterms that, after interpretation of the notation, turn to be themselves arguments of a reference are interpreted accordingly to the arguments scopes bound to this reference.". Maybe would you like that it is more strongly said as different? This temporary scope is not formally called "local". In the implementation, it is called the temporary scope. Why are there different? Both are useful I think. There was an issue which I don't find again about making temporary scopes extend to the whole subterm. I made the experience once but it is highly incompatible. |
I'm assuming no objections and closing. |
This is a concrete proposal to fix issue #6078 (see discussion there).