-
Notifications
You must be signed in to change notification settings - Fork 700
Tify + lra solves programs mixing Z and R #20288
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
Conversation
|
Définitely not 9.0.0 material (now that we have the rc, only bugfixes and doc improvements should go there) |
I agree! I never know where we are in the release cycle. |
|
No worries (and if you want to remember: basically this kind of nice/feature change should always get the next available "X.Y+rc1" milestone) |
|
@coqbot: run CI |
|
@fajb if you want to run the full CI nowadays you need to ask |
|
@coqbot: run full CI |
I have just seen that! Thanks. |
|
🔴 CI failures at commit 10d6df4 without any failure in the test-suite ✔️ Corresponding jobs for the base commit ff34785 succeeded ❔ Ask me to try to extract minimal test cases that can be added to the test-suite 🏃
|
|
@coqbot run full ci I just chatted with an user eagerly awaiting this feature at HACS. |
|
Hi @andres-erbsen, good to know this is an interesting feature. Actually, I need help to run the CI. Also, the change is substantial; cleanup and testing is needed... |
|
CI is getting the overlay commit AFAICT https://gitlab.inria.fr/coq/coq/-/jobs/5517508#L1430 |
|
🔴 CI failures at commit ac7d358 without any failure in the test-suite ✔️ Corresponding jobs for the base commit 582c03b succeeded ❔ Ask me to try to extract minimal test cases that can be added to the test-suite 🏃
|
Good. And for some reason, the CI goes further than my previous attempt. |
|
🔴 CI failures at commit b1aa3a2 without any failure in the test-suite ✔️ Corresponding jobs for the base commit 7f8da07 succeeded ❔ Ask me to try to extract minimal test cases that can be added to the test-suite 🏃
|
|
@coqbot run full ci |
|
🔴 CI failures at commit de5a6d9 without any failure in the test-suite ✔️ Corresponding jobs for the base commit 7f8da07 succeeded ❔ Ask me to try to extract minimal test cases that can be added to the test-suite 🏃
|
|
I am confused. It seems the CI turns deprecation messages into errors... |
- [lra] deals with an additional predicate [isZ : R -> Prop] which holds if the argument ranges over Z. [lra] is now using the [lia] solver with the caveat that integer reasoning is only triggered for integer variables. - [tify T] generalises [zify] for a target type T. As a result, [zify] calls [tify Z]. - [rify] i.e [tify R] maps goals towards [R] and introduce [isZ] predicate.
[lia] restrict non-linear reasoning We only substitute constants (after performing non-linear interval analysis). Doing it before would be robust (it is always better but maybe less predictable). Performing substitution of equalities x=y is not robust because subst x;lia and subst y;lia are not equi-provable. This is transparent for SMTCoq.
I guess you mean in Stdlib? Indeed, that's bad as it forces Coq developers to handle new warnings immediatly in the library, whereas this should be done by library developers at their own pace. You can probably fix it by replacing this line rocq/dev/ci/scripts/ci-stdlib.sh Line 13 in a09cdd9
with And we should add a CI job in Stdlib repo checking for absence of warnings when compiling on last stable Rocq. |
|
Do not use -p, it interacts badly with caching in my experience. |
|
Maybe |
It's a bad practice to use it when developing a library, but why would it be a problem when testing the Stdlib in our CI? That being said, what I would recommend is just for the |
|
-p means --release not -profile release |
|
So
Of course, but that's Stdlib developers' job, not core developers' one. And they probably want to do that regularly on a stable release, not continuously on master. |
To turn deprecation errors into warnings
|
Does this need another full CI run before being considered for getting merged? The test suite seems to have run successfully. |
|
According to the top message, it's still requires quite a bit of work. |
|
The "needs: rebase" label was set more than 30 days ago. If the PR is not rebased in 30 days, it will be automatically closed. |
|
This PR was not rebased after 30 days despite the warning, it is now closed. |
|
Is there an easy way to test this by setting up an opam switch that uses this PR for Rocq? |
This PR makes substantial changes to
lraso that is can handle Mixed Integer Linear Programs (MILP) i.e. goals where variables range over either R or Z.This requires several changes (see also PR rocq-prover/stdlib#110).
tify Tgeneraliseszifyand takes as argument the typeTthe goal is translated to.As a result,
zifyis now simplytify Z(The user facing interface is unchanged except that
Zifycommands are deprecated and renamed intoTify)tify Rmaps a goal towards Z and addsisZpredicates that needs to be exploited bylra.liacode and perform integer reasoning only when the relevant variables range over the integers.>. To do so, the simplex code is adapted to manipulate symbolic infinitesimals. The rough idea is that a strict constraint c > 0 can be intepreted as (c -Much testing is needed to ensure the absence of regressions.
Added / updated test-suite.
Added changelog.
Added / updated documentation.
make doc_gram_rsts.