-
Notifications
You must be signed in to change notification settings - Fork 708
feat: Add elaboration of elimination constraints #21417
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
Changes from all commits
9718052
ac57a1f
fecb6ab
1bc67c5
fa7a374
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| overlay elpi https://github.com/mattam82/coq-elpi elab-elim-constraints 21417 |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,4 @@ | ||
| - **Added:** | ||
| implicit elaboration of :ref:`elimination constraints <elim-constraints>` | ||
| (`#21417 <https://github.com/rocq-prover/rocq/pull/21417>`_, | ||
| by Tomas Diaz). |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -23,6 +23,7 @@ open UVars | |
| type t = | ||
| | QEq of Sorts.Quality.t * Sorts.Quality.t | ||
| | QLeq of Sorts.Quality.t * Sorts.Quality.t | ||
| | QElimTo of Sorts.Quality.t * Sorts.Quality.t | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. this doesn't seem like it should be in univproblem, it is never generated by conversion or unification AFAICT
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. It's still a constraint that needs to stay in sync with the
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
what does that mean?
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. We need to track this additional state in the "universe" unification state, and it is definitely part of unification in the sense that some constraints may be refined when instantiating non-rigid sorts. And we already have a universal type for universe-related constraints and that's UnivProblem. What's your problem exactly with this design choice? What would you propose instead?
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Unification does not generate elim constraints.
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I agree with @ppedrot here, why do we need these 7 functions? I would be happier having
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I think I mainly have 2 concerns:
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. FTR the
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Very good point about
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Call me the lead overengineer, but we could have a single API with some GADT indicating whether ULUb constraints are allowed, and a parameterized algebraic return type for the UnivDiffer case. |
||
| | ULe of Sorts.t * Sorts.t | ||
| | UEq of Sorts.t * Sorts.t | ||
| | ULub of Level.t * Level.t | ||
|
|
||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
makes this a target for the
:ref:I suggest in the changelog