Match display forms in the right context #7480
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Surprisingly, in
the normal form of
g 10
prints asFoo.f (f 10)
rather thang 10
. Display form matching is trying to compare (I've lined up the pattern and the actual eliminations)which fails, since 0 ≠ 1. The display form has correctly been generalised over
n
, as per #958. However, the pattern and the RHS exist in different contexts --- the RHS exists in a context with one variable less than the display form (which binds the pattern variable@0
). So we really should be lifting the term to the context of the patterns before trying to do matching, and making sure that the matching doesn't depend on the pattern variables later.