-
Notifications
You must be signed in to change notification settings - Fork 67
[TC] CS projections replaced with uvar #648
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
base: master
Are you sure you want to change the base?
Conversation
|
Note that the compilation with uvar for projections in this PR only addresses instances compilation |
|
I'm a bit lost, the test passes but I don't see how the new term constructor is compiled... miracle? 😀 |
|
The precompilator transforms a term like Here I decompile tc.canonical-projection (during the elpi's rule creation): I replace the sub-term with a fresh elpi-var Am I clarifying your remark ? |
3eceb49 to
78c7545
Compare
b1c455e to
ad0b8dc
Compare
dc047a6 to
f348d07
Compare
a015aeb to
7a07b58
Compare
e140d15 to
25de1d1
Compare
…ity constants" This reverts commit 6c63978.
This aims to solve the compilation error produced by the compilation of
```
Module foo.
Class B (i : nat).
Section s.
(* Class with coercion depending on section parameters *)
Context (A : Type).
Class C (i : A) : Set := {
x (x : A) :: B 3
}.
End s.
End foo.
```
a9d89b5 to
7986110
Compare
|
@CohenCyril this job https://github.com/LPCIC/coq-elpi/actions/runs/11143050022/job/30967371306?pr=648 |
If a subterm is a (primitive) projection, it is replaced with fresh elpi variable
This variable and the original subterm are related by the coq.unify-eq predicate, to ensure
that each subterm of a class call correctly unifies with the corresponding subterm in the instance.
Here the test for this PR