Skip to content

[CI] Remove paramcoq#20114

Closed
proux01 wants to merge 1 commit intorocq-prover:masterfrom
proux01:ci-rm-paramcoq
Closed

[CI] Remove paramcoq#20114
proux01 wants to merge 1 commit intorocq-prover:masterfrom
proux01:ci-rm-paramcoq

Conversation

@proux01
Copy link
Copy Markdown
Contributor

@proux01 proux01 commented Jan 23, 2025

The paramcoq plugin suffers universe issues on master that I'm not able to solve. This finally motivated me to port most of its few known users (that is, mostly CoqEAL) to elpi's derive.param2, which I hope will be easier to maintain. I'll do a last (buggy) release of the plugin for Rocq 9.0 before archiving it, so we no longer need to maintain it in the CI of the master branch here.

@proux01 proux01 added the kind: infrastructure CI, build tools, development tools. label Jan 23, 2025
@proux01 proux01 added this to the 9.1+rc1 milestone Jan 23, 2025
@proux01 proux01 requested review from a team as code owners January 23, 2025 10:15
@coqbot-app coqbot-app bot added the needs: full CI The latest GitLab pipeline that ran was a light CI. Say "@coqbot run full ci" to get a full CI. label Jan 23, 2025
@proux01 proux01 added the request: full CI Use this label when you want your next push to trigger a full CI. label Jan 23, 2025
@coqbot-app coqbot-app bot removed request: full CI Use this label when you want your next push to trigger a full CI. needs: full CI The latest GitLab pipeline that ran was a light CI. Say "@coqbot run full ci" to get a full CI. labels Jan 23, 2025
@SkySkimmer
Copy link
Copy Markdown
Contributor

The paramcoq plugin suffers universe issues on master that I'm not able to solve.

Why are these issues not breaking master's CI?

@proux01
Copy link
Copy Markdown
Contributor Author

proux01 commented Jan 23, 2025

The paramcoq plugin suffers universe issues on master that I'm not able to solve.

Why are these issues not breaking master's CI?

Because the test-suite of paramcoq was too weak and the issue only appeared in CoqEAL (which isn't in Coq's CI) (c.f. #19228 )

@proux01
Copy link
Copy Markdown
Contributor Author

proux01 commented Jan 23, 2025

The mtac2 failure is unrelated, so CI green here.

@ppedrot
Copy link
Copy Markdown
Member

ppedrot commented Jan 24, 2025

I'm not actually convinced it's a good idea to let paramcoq rot. Even though there are corner cases, it's still useful to check that the code compiles, especially because the template mess is a transitory state. Hopefully with the algebraic universes around the corner it'll make things much smoother.

@proux01
Copy link
Copy Markdown
Contributor Author

proux01 commented Jan 24, 2025

Well, it's now redundant with elpi derive, so we'd better maintain a single plugin rather than two.

@proux01
Copy link
Copy Markdown
Contributor Author

proux01 commented Jan 24, 2025

But we could consider adding CoqEAL to the CI if we want to exercise those things more.

@palmskog
Copy link
Copy Markdown
Contributor

Please consider keeping paramcoq in CI until its use cases can be accommodated by Trocq (and CoqEAL ported to Trocq), see for example rocq-community/trocq#40

@proux01
Copy link
Copy Markdown
Contributor Author

proux01 commented Jan 26, 2025

Which use cases are you thinking about precisely?
Note that CoqEAL is already ported to Elpi derive.

@palmskog
Copy link
Copy Markdown
Contributor

The obvious use case is: (1) generating parametricity theorems and (2) using those parametricity theorems in refinement proofs (and also type equality/isomorphism transfers). Does Elpi derive really provide this? I wouldn't consider it a "port" unless the proofs are done the same way.

@proux01
Copy link
Copy Markdown
Contributor Author

proux01 commented Jan 26, 2025

It provides essentially the same thing as paramcoq.

@palmskog
Copy link
Copy Markdown
Contributor

palmskog commented Jan 26, 2025

I think the following is completely incomprehensible to anyone who doesn't know Elpi:

Elpi derive.param2 expQnat'.
Definition expQnat_R := expQnat'_R.
Elpi Accumulate derive Db derive.param2.db.
Elpi Accumulate derive.param2.db "
:before ""param:fail""
param {{ @leq }} {{ @leq }} {{ @leq_R }}.
".
Elpi derive.param2 cast_ZQ.
Elpi derive.param2 cast_PQ.

And the port has lots of these. I still think the best is to keep Paramcoq's interface, rather than forcing Elpi on its users, with an eye towards a transition to Trocq.

@proux01
Copy link
Copy Markdown
Contributor Author

proux01 commented Jan 26, 2025

That's just a syntactic detail that needs to be improved, I agree. But that should be trivial to do.

@proux01
Copy link
Copy Markdown
Contributor Author

proux01 commented Jan 29, 2025

Closing this according to last Coq call discussion: https://github.com/coq/coq/wiki/Coq-Call-2025-01-28 (@ppedrot will keep maintaining paramcoq as a Coq API testcase, there will no longer be any release following 9.0 and we will warn potential users not to use it).

@proux01 proux01 closed this Jan 29, 2025
@coqbot-app coqbot-app bot removed this from the 9.1+rc1 milestone Jan 29, 2025
@proux01 proux01 deleted the ci-rm-paramcoq branch January 29, 2025 10:13
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

kind: infrastructure CI, build tools, development tools.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants