Scope each metavar to the definition where it was generated #500
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.
Currently, metavars are treated as global to the whole module. This PR changes
elab_module
so that each toplevel definition has its own set of metavars, and metavar solutions do not take into account how the definition is used in other definitions. This should make it possible to elaborate definitions that do not refer to each other in parallel (but I will leave that for a later PR).This is similar to, but not quite as strict as, local type inference, which requires each toplevel definition to be fully annotated with its type. This would allow even more parallelism, since we could elaborate all definitions in parallel, even if they form a long chain of dependencies