a891dd5 changed its status to pending.
60ec5b9 changed its status to success.
60ec5b9 changed its status to success.
60ec5b9 changed its status to success.
a891dd5 changed its status to success.
a891dd5 changed its status to success.
a891dd5 changed its status to success.
ejgallego labeled Issue #7390 [doc] Moving away from LaTeX (assigned to ejgallego):
After the completion of the Sphinx migration [#6818], there are only residual TeX files in the tree; we all tend to agree that they would rather be moved to other formats. In today's
master
we can see the remaining files:egallego@rochefort$ find . -name *.tex ./vernac/doc.tex ./interp/doc.tex ./lib/doc.tex ./pretyping/doc.tex ./proofs/doc.tex ./library/doc.tex ./tactics/doc.tex ./kernel/doc.tex
I will take care of removing these once #7155 lands, I will move the corresponding text there to the proper files. We are waiting on a new
odoc
upstream release for that tho + Dune../dev/v8-syntax/syntax-v8.tex ./dev/v8-syntax/memo-v8.tex ./dev/ocamldoc/header.tex ./dev/doc/naming-conventions.tex ./dev/doc/versions-history.tex ./dev/doc/newsyntax.tex ./dev/doc/minicoq.tex
No idea on what to do with these files? Should be converted to MarkDown / RST ?
./doc/tools/Translator.tex ./doc/common/title.tex ./doc/common/version.tex ./doc/common/macros.tex ./doc/stdlib/Library.coqdoc.tex ./doc/stdlib/Library.tex ./doc/tutorial/Tutorial.tex ./doc/tutorial/Tutorial.v.tex ./doc/whodidwhat/whodidwhat-8.5update.tex ./doc/whodidwhat/whodidwhat-8.2update.tex ./doc/whodidwhat/whodidwhat-8.4update.tex ./doc/whodidwhat/whodidwhat-8.3update.tex ./doc/RecTutorial/recmacros.tex ./doc/RecTutorial/RecTutorial.tex ./doc/RecTutorial/coqartmacros.tex
I guess a few of these files should be ported to Sphinx; dunno for the rest.
4d82233 changed its status to failure.
b456cf6 changed its status to failure.
ejgallego merged PR #11980 Improve spacing in Print Assumptions.
a891dd5 changed its status to failure.
ejgallego updated PR #12346 Update to 8.13. (assigned to ejgallego) from bump-8.13
to master
:
Part of this PR was automatically generated by running
dev/doc/update-compat.py --master
.Kind: infrastructure.
f123874 changed its status to failure.
ejgallego merged PR #12346 Update to 8.13.
ea6cb6b changed its status to failure.
@gares This is the commit to tag (with
git tag -s V8.13+alpha && git push upstream V8.13+alpha
).
Zimmi48 demilestoned Issue #12246 Adding support for applying in several hypotheses at the same time (granting #9816)
Kind: enhancement
This is a first attempt at granting wish #9816: applying
apply in
to several hypotheses at the same time, either under the formapply c in H1, H2
orapply c in *
. See request for comments at #9816.Closes #9816.
- [X] Added / updated test-suite (probably to be extended)
- [x] Corresponding documentation was added / updated (
in *
still to document)- [x] Entry added in the changelog
Zimmi48 milestoned Issue #12246 Adding support for applying in several hypotheses at the same time (granting #9816)
Kind: enhancement
This is a first attempt at granting wish #9816: applying
apply in
to several hypotheses at the same time, either under the formapply c in H1, H2
orapply c in *
. See request for comments at #9816.Closes #9816.
- [X] Added / updated test-suite (probably to be extended)
- [x] Corresponding documentation was added / updated (
in *
still to document)- [x] Entry added in the changelog
Zimmi48 demilestoned Issue #12316 Use pagination in fetching the number of reviews:
Fixes #12300
Note that I currently only paginate the API call for the number of
reviews, not the main API call, because (a) the main API call doesn't
seem subject to pagination (it returns a dict, not an array), and (b)
because fetching the total number of pages incurs an extra API call for
each one that we want to paginate, even if there is only one page. We
could work around (b) with a significantly more complicated
curl_paginate
function which heuristically recognizes the end of the
header/beginning of the body, such ascurl_paginate() { # as per https://developer.github.com/v3/guides/traversing-with-pagination/#changing-the-number-of-items-received, GitHub will never give us more than 100 url="$1?per_page=100" # We need to process the header to get the pagination. We have two # options: # # 1. We can make an extra API call at the beginning to get the total # number of pages, search for a rel="last" link, and then loop # over all the pages. # # 2. We can ask for the header info with every single curl request, # search for a rel="next" link to follow to the next page, and # then parse out the body from the header. # # Although (1) is simpler, we choose to do (2) to save an extra API # call per invocation of curl. while [ ! -z "${url}" ]; do response="$(curl -si "${url}")" # we search for something like 'link: <https://api.github.com/repositories/1377159/pulls/12129/reviews?page=2>; rel="next", <https://api.github.com/repositories/1377159/pulls/12129/reviews?page=2>; rel="last"' and take the first 'next' url url="$(echo "${response}" | grep -m 1 -io '^link: .*>; rel="next"' | grep -o '<[^>]*>; rel="next"' | grep -o '<[^>]*>' | sed s'/[<>]//g')" echo "Response: ${response}" >&2 echo "${response}" | { is_header="yes" while read line; do if [ "${is_header}" == "yes" ]; then if echo "${line}" | grep -q '^\s*[\[{]'; then # we treat lines beginning with [ or { as the beginning of the response body is_header="no" echo "${line}" fi else echo "${line}" fi done } done }
Kind: bug fix / infrastructure.
- [ ] Entry added in the changelog (see https://github.com/coq/coq/tree/master/doc/changelog#unreleased-changelog for details). (does this need a changelog entry?)
Zimmi48 milestoned Issue #12316 Use pagination in fetching the number of reviews:
Fixes #12300
Note that I currently only paginate the API call for the number of
reviews, not the main API call, because (a) the main API call doesn't
seem subject to pagination (it returns a dict, not an array), and (b)
because fetching the total number of pages incurs an extra API call for
each one that we want to paginate, even if there is only one page. We
could work around (b) with a significantly more complicated
curl_paginate
function which heuristically recognizes the end of the
header/beginning of the body, such ascurl_paginate() { # as per https://developer.github.com/v3/guides/traversing-with-pagination/#changing-the-number-of-items-received, GitHub will never give us more than 100 url="$1?per_page=100" # We need to process the header to get the pagination. We have two # options: # # 1. We can make an extra API call at the beginning to get the total # number of pages, search for a rel="last" link, and then loop # over all the pages. # # 2. We can ask for the header info with every single curl request, # search for a rel="next" link to follow to the next page, and # then parse out the body from the header. # # Although (1) is simpler, we choose to do (2) to save an extra API # call per invocation of curl. while [ ! -z "${url}" ]; do response="$(curl -si "${url}")" # we search for something like 'link: <https://api.github.com/repositories/1377159/pulls/12129/reviews?page=2>; rel="next", <https://api.github.com/repositories/1377159/pulls/12129/reviews?page=2>; rel="last"' and take the first 'next' url url="$(echo "${response}" | grep -m 1 -io '^link: .*>; rel="next"' | grep -o '<[^>]*>; rel="next"' | grep -o '<[^>]*>' | sed s'/[<>]//g')" echo "Response: ${response}" >&2 echo "${response}" | { is_header="yes" while read line; do if [ "${is_header}" == "yes" ]; then if echo "${line}" | grep -q '^\s*[\[{]'; then # we treat lines beginning with [ or { as the beginning of the response body is_header="no" echo "${line}" fi else echo "${line}" fi done } done }
Kind: bug fix / infrastructure.
- [ ] Entry added in the changelog (see https://github.com/coq/coq/tree/master/doc/changelog#unreleased-changelog for details). (does this need a changelog entry?)
Zimmi48 created branch v8.12.
b456cf6 changed its status to failure.
b456cf6 changed its status to pending.
ea6cb6b changed its status to pending.
b456cf6 changed its status to pending.
JasonGross edited PR #12316 Use pagination in fetching the number of reviews from fix-12300
to master
:
Fixes #12300
Note that I currently only paginate the API call for the number of
reviews, not the main API call, because (a) the main API call doesn't
seem subject to pagination (it returns a dict, not an array), and (b)
because fetching the total number of pages incurs an extra API call for
each one that we want to paginate, even if there is only one page. We
could work around (b) with a significantly more complicated
curl_paginate
function which heuristically recognizes the end of the
header/beginning of the body, such ascurl_paginate() { # as per https://developer.github.com/v3/guides/traversing-with-pagination/#changing-the-number-of-items-received, GitHub will never give us more than 100 url="$1?per_page=100" # We need to process the header to get the pagination. We have two # options: # # 1. We can make an extra API call at the beginning to get the total # number of pages, search for a rel="last" link, and then loop # over all the pages. # # 2. We can ask for the header info with every single curl request, # search for a rel="next" link to follow to the next page, and # then parse out the body from the header. # # Although (1) is simpler, we choose to do (2) to save an extra API # call per invocation of curl. while [ ! -z "${url}" ]; do response="$(curl -si "${url}")" # we search for something like 'link: <https://api.github.com/repositories/1377159/pulls/12129/reviews?page=2>; rel="next", <https://api.github.com/repositories/1377159/pulls/12129/reviews?page=2>; rel="last"' and take the first 'next' url url="$(echo "${response}" | grep -m 1 -io '^link: .*>; rel="next"' | grep -o '<[^>]*>; rel="next"' | grep -o '<[^>]*>' | sed s'/[<>]//g')" echo "${response}" | { is_header="yes" while read line; do if [ "${is_header}" == "yes" ]; then if echo "${line}" | grep -q '^\s*[\[{]'; then # we treat lines beginning with [ or { as the beginning of the response body is_header="no" echo "${line}" fi else echo "${line}" fi done } done }
Kind: bug fix / infrastructure.
- [ ] Entry added in the changelog (see https://github.com/coq/coq/tree/master/doc/changelog#unreleased-changelog for details). (does this need a changelog entry?)
ejgallego commented on f123874:
We should also propose a standard tag message for the
git tag
command.
Zimmi48 edited Issue #11157 Release 8.12 (assigned to Zimmi48):
Release process
As soon as 8.11 has branched off master and 8.12 RM have been nominated do:
- [x] Create the
X.X+beta1
milestone if it did not already exist.[x] Put the corresponding alpha tag using
git tag -s
.
TheVX.X+alpha
tag marks the first commit to be inmaster
and not in the
branch of the previous version.[x] Create a new issue to track the release process [copy-paste the present checklist]
- [x] Version updating PR (#11158):
- Change the version name to the next major version and the magic numbers (see #7008).
- Update the compatibility infrastructure see below for details
- [x] Update the release plan wiki page
- [x] Decide the release calendar with the team (freeze date, beta date, final
release date) and put this information in the milestone (using the
description and due date fields), and in the release wiki pageAbout one month before the beta
- [x] Create the
X.X.0
milestone and set its due date.[x] Send an announcement of the upcoming freeze on Coqdev / Discourse and ask people to
remove from the beta milestone what they already know won't be ready on time
(possibly postponing to theX.X.0
milestone for minor bug fixes,
infrastructure and documentation updates).[x] Determine which issues should / must be fixed before the beta, add them
to the beta milestone, possibly with a
"priority: blocker"
label. Make sure that all these issues are assigned (and that the assignee
provides an ETA).[ ] Ping the development coordinator (@mattam82) to get him started on
the update to the Credits chapter of the reference manual.
See also #7058.The command that was used in the previous versions to get the list
of contributors for this version isgit shortlog -s -n VX.X+alpha..master | cut -f2 | sort -k 2
. Note that the ordering is
approximative as it will misplace people with middle names. It is
also probably not correctly handlingCo-authored-by
info that we
have been using more lately, so should probably be updated to
account for this.On the date of the feature freeze
[x] Create the new version branch
vX.X
(using this name will ensure that
the branch will be automatically protected).[ ] Pin the versions of libraries and plugins in
dev/ci/ci-basic-overlays.sh
to use commit hashes or tag (or, if it
exists, a branch dedicated to compatibility with the corresponding
Coq branch).[ ] Remove all remaining unmerged feature PRs from the beta milestone.
[ ] Start a new project to track PR backporting. The project should
have a "Request X.X+beta1 inclusion" column for the PRs that were
merged inmaster
that are to be considered for backporting, and a
"Shipped in X.X+beta1" columns to put what was backported. A message
to @coqbot in the milestone description tells it to
automatically add merged PRs to the "Request ... inclusion" column
and backported PRs to the "Shipped in ..." column. See previous
milestones for examples. When moving to the next milestone
(e.g. X.X.0), you can clear and remove the "Request X.X+beta1
inclusion" column and create new "Request X.X.0 inclusion" and
"Shipped in X.X.0" columns.The release manager is the person responsible for merging PRs that
target the version branch and backporting appropriate PRs that are
merged intomaster
.[ ] Delay non-blocking issues to the appropriate milestone and ensure
blocking issues are solved. If required to solve some blocking issues,
it is possible to revert some feature PRs in the version branch only.Before the beta release date
- [ ] Ensure the Credits chapter has been updated.
[ ] Ensure that an appropriate version of the plugins we will distribute with
Coq has been tagged.[ ] Have some people test the recently auto-generated Windows and MacOS
packages.[ ] In a PR:
Change the version name from alpha to beta1 (see
#7009).We generally do not update the magic numbers at this point.
- Set
is_a_released_version
totrue
inconfigure.ml
.- [ ] Put the
VX.X+beta1
tag usinggit tag -s
.- [ ] Check using
git push --tags --dry-run
that you are not
pushing anything else than the new tag. If needed, remove spurious
tags withgit tag -d
. When this is OK, proceed withgit push --tags
.[ ] Set
is_a_released_version
tofalse
inconfigure.ml
(if you forget about it, you'll be reminded whenever you try to
backport a PR with a changelog entry).These steps are the same for all releases (beta, final, patch-level)
[ ] Send an e-mail on Coqdev announcing that the tag has been put so that
package managers can start preparing package updates (including a
coq-bignums
compatible version).[ ] Ping @erikmd to update the Docker images in
coqorg/coq
(requirescoq-bignums
inextra-dev
for a beta / inreleased
for a final release).[ ] Draft a release on GitHub.
[ ] Get @maximedenes to sign the Windows and MacOS packages and
upload them on GitHub.[ ] Prepare a page of news on the website with the link to the GitHub release
(see coq/www#63).[ ] Upload the new version of the reference manual to the website.
TODO: setup some continuous deployment for this.[ ] Merge the website update, publish the release
and send announcement e-mails.[ ] Ping @Zimmi48 to publish a new version on Zenodo.
TODO: automate this.[ ] Close the milestone
At the final release time
[ ] In a PR:
Change the version name from X.X.0 and the magic numbers (see
#7271).Set
is_a_released_version
totrue
inconfigure.ml
.- [ ] Put the
VX.X.0
tag.- [ ] Check using
git push --tags --dry-run
that you are not
pushing anything else than the new tag. If needed, remove spurious
tags withgit tag -d
. When this is OK, proceed withgit push --tags
.[ ] Set
is_a_released_version
tofalse
inconfigure.ml
(if you forget about it, you'll be reminded whenever you try to
backport a PR with a changelog entry).Repeat the generic process documented above for all releases.
- [ ] Switch the default version of the reference manual on the website.
At the patch-level release time
We generally do not update the magic numbers at this point (see
2881a18
).Compatibility Infrastructure Update
Additionally, in the same commit, update the compatibility
infrastructure, which consists of invoking
dev/tools/update-compat.py
with the
--master
flag.Note that the
update-compat.py
script must be run twice: once
immediately after branching with the--master
flag (which sets
up Coq to support four-compat
flag arguments), *in the same
commit* as the one that updatescoq_version
in
configure.ml
, and once again later on before
the next branch point with the--release
flag (see next section).
Zimmi48 edited Issue #11157 Release 8.12 (assigned to Zimmi48):
Release process
As soon as 8.11 has branched off master and 8.12 RM have been nominated do:
- [x] Create the
X.X+beta1
milestone if it did not already exist.[x] Put the corresponding alpha tag using
git tag -s
.
TheVX.X+alpha
tag marks the first commit to be inmaster
and not in the
branch of the previous version.[x] Create a new issue to track the release process [copy-paste the present checklist]
- [x] Version updating PR (#11158):
- Change the version name to the next major version and the magic numbers (see #7008).
- Update the compatibility infrastructure see below for details
- [x] Update the release plan wiki page
- [x] Decide the release calendar with the team (freeze date, beta date, final
release date) and put this information in the milestone (using the
description and due date fields), and in the release wiki pageAbout one month before the beta
- [x] Create the
X.X.0
milestone and set its due date.[x] Send an announcement of the upcoming freeze on Coqdev / Discourse and ask people to
remove from the beta milestone what they already know won't be ready on time
(possibly postponing to theX.X.0
milestone for minor bug fixes,
infrastructure and documentation updates).[x] Determine which issues should / must be fixed before the beta, add them
to the beta milestone, possibly with a
"priority: blocker"
label. Make sure that all these issues are assigned (and that the assignee
provides an ETA).[ ] Ping the development coordinator (@mattam82) to get him started on
the update to the Credits chapter of the reference manual.
See also #7058.The command that was used in the previous versions to get the list
of contributors for this version isgit shortlog -s -n VX.X+alpha..master | cut -f2 | sort -k 2
. Note that the ordering is
approximative as it will misplace people with middle names. It is
also probably not correctly handlingCo-authored-by
info that we
have been using more lately, so should probably be updated to
account for this.On the date of the feature freeze
[x] Create the new version branch
vX.X
(using this name will ensure that
the branch will be automatically protected).[ ] Pin the versions of libraries and plugins in
dev/ci/ci-basic-overlays.sh
to use commit hashes or tag (or, if it
exists, a branch dedicated to compatibility with the corresponding
Coq branch).[x] Remove all remaining unmerged feature PRs from the beta milestone.
[ ] Start a new project to track PR backporting. The project should
have a "Request X.X+beta1 inclusion" column for the PRs that were
merged inmaster
that are to be considered for backporting, and a
"Shipped in X.X+beta1" columns to put what was backported. A message
to @coqbot in the milestone description tells it to
automatically add merged PRs to the "Request ... inclusion" column
and backported PRs to the "Shipped in ..." column. See previous
milestones for examples. When moving to the next milestone
(e.g. X.X.0), you can clear and remove the "Request X.X+beta1
inclusion" column and create new "Request X.X.0 inclusion" and
"Shipped in X.X.0" columns.The release manager is the person responsible for merging PRs that
target the version branch and backporting appropriate PRs that are
merged intomaster
.[ ] Delay non-blocking issues to the appropriate milestone and ensure
blocking issues are solved. If required to solve some blocking issues,
it is possible to revert some feature PRs in the version branch only.Before the beta release date
- [ ] Ensure the Credits chapter has been updated.
[ ] Ensure that an appropriate version of the plugins we will distribute with
Coq has been tagged.[ ] Have some people test the recently auto-generated Windows and MacOS
packages.[ ] In a PR:
Change the version name from alpha to beta1 (see
#7009).We generally do not update the magic numbers at this point.
- Set
is_a_released_version
totrue
inconfigure.ml
.- [ ] Put the
VX.X+beta1
tag usinggit tag -s
.- [ ] Check using
git push --tags --dry-run
that you are not
pushing anything else than the new tag. If needed, remove spurious
tags withgit tag -d
. When this is OK, proceed withgit push --tags
.[ ] Set
is_a_released_version
tofalse
inconfigure.ml
(if you forget about it, you'll be reminded whenever you try to
backport a PR with a changelog entry).These steps are the same for all releases (beta, final, patch-level)
[ ] Send an e-mail on Coqdev announcing that the tag has been put so that
package managers can start preparing package updates (including a
coq-bignums
compatible version).[ ] Ping @erikmd to update the Docker images in
coqorg/coq
(requirescoq-bignums
inextra-dev
for a beta / inreleased
for a final release).[ ] Draft a release on GitHub.
[ ] Get @maximedenes to sign the Windows and MacOS packages and
upload them on GitHub.[ ] Prepare a page of news on the website with the link to the GitHub release
(see coq/www#63).[ ] Upload the new version of the reference manual to the website.
TODO: setup some continuous deployment for this.[ ] Merge the website update, publish the release
and send announcement e-mails.[ ] Ping @Zimmi48 to publish a new version on Zenodo.
TODO: automate this.[ ] Close the milestone
At the final release time
[ ] In a PR:
Change the version name from X.X.0 and the magic numbers (see
#7271).Set
is_a_released_version
totrue
inconfigure.ml
.- [ ] Put the
VX.X.0
tag.- [ ] Check using
git push --tags --dry-run
that you are not
pushing anything else than the new tag. If needed, remove spurious
tags withgit tag -d
. When this is OK, proceed withgit push --tags
.[ ] Set
is_a_released_version
tofalse
inconfigure.ml
(if you forget about it, you'll be reminded whenever you try to
backport a PR with a changelog entry).Repeat the generic process documented above for all releases.
- [ ] Switch the default version of the reference manual on the website.
At the patch-level release time
We generally do not update the magic numbers at this point (see
2881a18
).Compatibility Infrastructure Update
Additionally, in the same commit, update the compatibility
infrastructure, which consists of invoking
dev/tools/update-compat.py
with the
--master
flag.Note that the
update-compat.py
script must be run twice: once
immediately after branching with the--master
flag (which sets
up Coq to support four-compat
flag arguments), *in the same
commit* as the one that updatescoq_version
in
configure.ml
, and once again later on before
the next branch point with the--release
flag (see next section).
Zimmi48 edited Issue #11157 Release 8.12 (assigned to Zimmi48):
Release process
As soon as 8.11 has branched off master and 8.12 RM have been nominated do:
- [x] Create the
X.X+beta1
milestone if it did not already exist.[x] Put the corresponding alpha tag using
git tag -s
.
TheVX.X+alpha
tag marks the first commit to be inmaster
and not in the
branch of the previous version.[x] Create a new issue to track the release process [copy-paste the present checklist]
- [x] Version updating PR (#11158):
- Change the version name to the next major version and the magic numbers (see #7008).
- Update the compatibility infrastructure see below for details
- [x] Update the release plan wiki page
- [x] Decide the release calendar with the team (freeze date, beta date, final
release date) and put this information in the milestone (using the
description and due date fields), and in the release wiki pageAbout one month before the beta
- [x] Create the
X.X.0
milestone and set its due date.[x] Send an announcement of the upcoming freeze on Coqdev / Discourse and ask people to
remove from the beta milestone what they already know won't be ready on time
(possibly postponing to theX.X.0
milestone for minor bug fixes,
infrastructure and documentation updates).[x] Determine which issues should / must be fixed before the beta, add them
to the beta milestone, possibly with a
"priority: blocker"
label. Make sure that all these issues are assigned (and that the assignee
provides an ETA).[ ] Ping the development coordinator (@mattam82) to get him started on
the update to the Credits chapter of the reference manual.
See also #7058.The command that was used in the previous versions to get the list
of contributors for this version isgit shortlog -s -n VX.X+alpha..master | cut -f2 | sort -k 2
. Note that the ordering is
approximative as it will misplace people with middle names. It is
also probably not correctly handlingCo-authored-by
info that we
have been using more lately, so should probably be updated to
account for this.On the date of the feature freeze
[x] Create the new version branch
vX.X
(using this name will ensure that
the branch will be automatically protected).[ ] Pin the versions of libraries and plugins in
dev/ci/ci-basic-overlays.sh
to use commit hashes or tag (or, if it
exists, a branch dedicated to compatibility with the corresponding
Coq branch).[x] Remove all remaining unmerged feature PRs from the beta milestone.
[x] Start a new project to track PR backporting. The project should
have a "Request X.X+beta1 inclusion" column for the PRs that were
merged inmaster
that are to be considered for backporting, and a
"Shipped in X.X+beta1" columns to put what was backported. A message
to @coqbot in the milestone description tells it to
automatically add merged PRs to the "Request ... inclusion" column
and backported PRs to the "Shipped in ..." column. See previous
milestones for examples. When moving to the next milestone
(e.g. X.X.0), you can clear and remove the "Request X.X+beta1
inclusion" column and create new "Request X.X.0 inclusion" and
"Shipped in X.X.0" columns.The release manager is the person responsible for merging PRs that
target the version branch and backporting appropriate PRs that are
merged intomaster
.[ ] Delay non-blocking issues to the appropriate milestone and ensure
blocking issues are solved. If required to solve some blocking issues,
it is possible to revert some feature PRs in the version branch only.Before the beta release date
- [ ] Ensure the Credits chapter has been updated.
[ ] Ensure that an appropriate version of the plugins we will distribute with
Coq has been tagged.[ ] Have some people test the recently auto-generated Windows and MacOS
packages.[ ] In a PR:
Change the version name from alpha to beta1 (see
#7009).We generally do not update the magic numbers at this point.
- Set
is_a_released_version
totrue
inconfigure.ml
.- [ ] Put the
VX.X+beta1
tag usinggit tag -s
.- [ ] Check using
git push --tags --dry-run
that you are not
pushing anything else than the new tag. If needed, remove spurious
tags withgit tag -d
. When this is OK, proceed withgit push --tags
.[ ] Set
is_a_released_version
tofalse
inconfigure.ml
(if you forget about it, you'll be reminded whenever you try to
backport a PR with a changelog entry).These steps are the same for all releases (beta, final, patch-level)
[ ] Send an e-mail on Coqdev announcing that the tag has been put so that
package managers can start preparing package updates (including a
coq-bignums
compatible version).[ ] Ping @erikmd to update the Docker images in
coqorg/coq
(requirescoq-bignums
inextra-dev
for a beta / inreleased
for a final release).[ ] Draft a release on GitHub.
[ ] Get @maximedenes to sign the Windows and MacOS packages and
upload them on GitHub.[ ] Prepare a page of news on the website with the link to the GitHub release
(see coq/www#63).[ ] Upload the new version of the reference manual to the website.
TODO: setup some continuous deployment for this.[ ] Merge the website update, publish the release
and send announcement e-mails.[ ] Ping @Zimmi48 to publish a new version on Zenodo.
TODO: automate this.[ ] Close the milestone
At the final release time
[ ] In a PR:
Change the version name from X.X.0 and the magic numbers (see
#7271).Set
is_a_released_version
totrue
inconfigure.ml
.- [ ] Put the
VX.X.0
tag.- [ ] Check using
git push --tags --dry-run
that you are not
pushing anything else than the new tag. If needed, remove spurious
tags withgit tag -d
. When this is OK, proceed withgit push --tags
.[ ] Set
is_a_released_version
tofalse
inconfigure.ml
(if you forget about it, you'll be reminded whenever you try to
backport a PR with a changelog entry).Repeat the generic process documented above for all releases.
- [ ] Switch the default version of the reference manual on the website.
At the patch-level release time
We generally do not update the magic numbers at this point (see
2881a18
).Compatibility Infrastructure Update
Additionally, in the same commit, update the compatibility
infrastructure, which consists of invoking
dev/tools/update-compat.py
with the
--master
flag.Note that the
update-compat.py
script must be run twice: once
immediately after branching with the--master
flag (which sets
up Coq to support four-compat
flag arguments), *in the same
commit* as the one that updatescoq_version
in
configure.ml
, and once again later on before
the next branch point with the--release
flag (see next section).
ejgallego assigned Issue #12264 Errors when running test suite with recent Dune. (assigned to ejgallego):
Description of the problem
When
dune runtest
, [build errors appear][log]. Some of them can be solved by [a fewchmod
invocations][patch]. [Other errors are then reached][log2] for which I have not found a solution. Test suite therefore fails.[log]: https://gist.github.com/kindaro/d284b4e8bcc76aaefaba192ad2f3f371#file-dune-log
[patch]: https://gist.github.com/kindaro/d284b4e8bcc76aaefaba192ad2f3f371#file-fix-diff
[log2]: https://gist.github.com/kindaro/d284b4e8bcc76aaefaba192ad2f3f371#file-dune-2-logMy suspicion is that [the upgrade of _dune_][dune] has something to do with this.
[dune]: https://github.com/coq/coq/commit/bc411fa4d8c04424c579d506dd0507cb83db7bc7
Software versions
Coq Version
The Coq Proof Assistant, version 8.12+alpha (May 2020) compiled on May 6 2020 4:32:32 with OCaml 4.09.0
Dune Version
2.5.0 2.5.1
Make Version
GNU Make 4.3 Built for x86_64-pc-linux-gnu
CSDP Version
Name : coin-or-csdp Version : 6.2.0-3 Description : A C library for Semidefinite Programming Architecture : x86_64
_(On Arch Linux.)_
ejgallego milestoned Issue #12264 Errors when running test suite with recent Dune. (assigned to ejgallego):
Description of the problem
When
dune runtest
, [build errors appear][log]. Some of them can be solved by [a fewchmod
invocations][patch]. [Other errors are then reached][log2] for which I have not found a solution. Test suite therefore fails.[log]: https://gist.github.com/kindaro/d284b4e8bcc76aaefaba192ad2f3f371#file-dune-log
[patch]: https://gist.github.com/kindaro/d284b4e8bcc76aaefaba192ad2f3f371#file-fix-diff
[log2]: https://gist.github.com/kindaro/d284b4e8bcc76aaefaba192ad2f3f371#file-dune-2-logMy suspicion is that [the upgrade of _dune_][dune] has something to do with this.
[dune]: https://github.com/coq/coq/commit/bc411fa4d8c04424c579d506dd0507cb83db7bc7
Software versions
Coq Version
The Coq Proof Assistant, version 8.12+alpha (May 2020) compiled on May 6 2020 4:32:32 with OCaml 4.09.0
Dune Version
2.5.0 2.5.1
Make Version
GNU Make 4.3 Built for x86_64-pc-linux-gnu
CSDP Version
Name : coin-or-csdp Version : 6.2.0-3 Description : A C library for Semidefinite Programming Architecture : x86_64
_(On Arch Linux.)_
3decaca changed its status to success.
b456cf6 changed its status to success.
ea6cb6b changed its status to success.
ea6cb6b changed its status to failure.
b456cf6 changed its status to success.
b456cf6 changed its status to success.
b456cf6 changed its status to success.
ea6cb6b changed its status to success.
ea6cb6b changed its status to success.
ea6cb6b changed its status to failure.
gares edited Issue #12334 Release 8.13 (assigned to maximedenes):
Release process
As soon as the previous version branched off master
In principle, these steps should be undertaken by the RM of the next
release. Unfortunately, we have not yet been able to nominate RMs
early enough in the process for this person to be known at that point
in time.
[x] Create a new issue to track the release process where you can copy-paste
the present checklist (from dev/doc/release-process.md)[x] Change the version name to the next major version and the magic
numbers (see #7008).Additionally, in the same commit, update the compatibility
infrastructure, which consists of invoking
dev/tools/update-compat.py
with the
--master
flag.Note that the
update-compat.py
script must be run twice: once
immediately after branching with the--master
flag (which sets
up Coq to support four-compat
flag arguments), *in the same
commit* as the one that updatescoq_version
in
configure.ml
, and once again later on before
the next branch point with the--release
flag (see next section).[ ] Put the corresponding alpha tag using
git tag -s
.
TheVX.X+alpha
tag marks the first commit to be inmaster
and not in the
branch of the previous version.[x] Create the
X.X+beta1
milestone if it did not already exist.- [ ] Decide the release calendar with the team (freeze date, beta date, final
release date) and put this information in the milestone (using the
description and due date fields).Anytime after the previous version is branched off master
- [ ] Update the compatibility infrastructure to the next release,
which consists of invoking
dev/tools/update-compat.py
with the
--release
flag; this sets up Coq to support three-compat
flag
arguments. To ensure that CI passes, you will have to decide what
to do about all test-suite files which mention-compat U.U
or
Coq.Comapt.CoqUU
(which is no longer valid, since we only keep
compatibility against the two previous versions on releases), and
you may have to prepare overlays for projects using the
compatibility flags.About one month before the beta
- [ ] Create the
X.X.0
milestone and set its due date.[ ] Send an announcement of the upcoming freeze on Coqdev and ask people to
remove from the beta milestone what they already know won't be ready on time
(possibly postponing to theX.X.0
milestone for minor bug fixes,
infrastructure and documentation updates).[ ] Determine which issues should / must be fixed before the beta, add them
to the beta milestone, possibly with a
"priority: blocker"
label. Make sure that all these issues are assigned (and that the assignee
provides an ETA).[ ] Ping the development coordinator (@mattam82) to get him started on
the update to the Credits chapter of the reference manual.
See also #7058.The command that was used in the previous versions to get the list
of contributors for this version isgit shortlog -s -n VX.X+alpha..master | cut -f2 | sort -k 2
. Note that the ordering is
approximative as it will misplace people with middle names. It is
also probably not correctly handlingCo-authored-by
info that we
have been using more lately, so should probably be updated to
account for this.On the date of the feature freeze
[ ] Create the new version branch
vX.X
(using this name will ensure that
the branch will be automatically protected).[ ] Pin the versions of libraries and plugins in
dev/ci/ci-basic-overlays.sh
to use commit hashes or tag (or, if it
exists, a branch dedicated to compatibility with the corresponding
Coq branch). You can use thedev/tools/pin-ci.sh
script to do this
semi-automatically.[ ] Remove all remaining unmerged feature PRs from the beta milestone.
[ ] Start a new project to track PR backporting. The project should
have a "Request X.X+beta1 inclusion" column for the PRs that were
merged inmaster
that are to be considered for backporting, and a
"Shipped in X.X+beta1" columns to put what was backported. A message
to @coqbot in the milestone description tells it to
automatically add merged PRs to the "Request ... inclusion" column
and backported PRs to the "Shipped in ..." column. See previous
milestones for examples. When moving to the next milestone
(e.g. X.X.0), you can clear and remove the "Request X.X+beta1
inclusion" column and create new "Request X.X.0 inclusion" and
"Shipped in X.X.0" columns.The release manager is the person responsible for merging PRs that
target the version branch and backporting appropriate PRs that are
merged intomaster
.[ ] Delay non-blocking issues to the appropriate milestone and ensure
blocking issues are solved. If required to solve some blocking issues,
it is possible to revert some feature PRs in the version branch only.[ ] Add a new link to the
'versions'
list of the refman (in
html_context
indoc/sphinx/conf.py
).Before the beta release date
- [ ] Ensure the Credits chapter has been updated.
[ ] Prepare the release notes (see e.g.,
#10833): in a PR against themaster
branch, move the contents from all files ofdoc/changelog/
that appear in
the release branch into the manualdoc/sphinx/changes.rst
. Merge that PR
into themaster
branch and backport it to the version branch.[ ] Ensure that an appropriate version of the plugins we will distribute with
Coq has been tagged.[ ] Have some people test the recently auto-generated Windows and MacOS
packages.[ ] In a PR:
Change the version name from alpha to beta1 (see
#7009).We generally do not update the magic numbers at this point.
- Set
is_a_released_version
totrue
inconfigure.ml
.- [ ] Put the
VX.X+beta1
tag usinggit tag -s
.- [ ] Check using
git push --tags --dry-run
that you are not
pushing anything else than the new tag. If needed, remove spurious
tags withgit tag -d
. When this is OK, proceed withgit push --tags
.[ ] Set
is_a_released_version
tofalse
inconfigure.ml
(if you forget about it, you'll be reminded whenever you try to
backport a PR with a changelog entry).These steps are the same for all releases (beta, final, patch-level)
[ ] Send an e-mail on Coqdev announcing that the tag has been put so that
package managers can start preparing package updates (including a
coq-bignums
compatible version).[ ] When opening the corresponding PR for
coq
in the opam repository (coq/opam-coq-archive
orocaml/opam-repository
),
the package managers can Cc@erikmd
to request that he prepare the necessary configuration for the Docker release incoqorg/coq
(namely, he'll need to make sure acoq-bignums
opam package is available inextra-dev
, respectivelyreleased
, so the Docker image gatheringcoq
andcoq-bignums
can be built).[ ] Draft a release on GitHub.
[ ] Sign the Windows and MacOS packages and upload them on GitHub.
The Windows packages must be signed by the Inria IT security service. They
should be sent as a link to the binary together with its SHA256 hash in a
signed e-mail, via our local contact (currently@maximedenes
).The MacOS packages should be signed by our own certificate, by sending them
to@maximedenes
. A detailed step-by-step guide can be found on the wiki.[ ] Prepare a page of news on the website with the link to the GitHub release
(see coq/www#63).[ ] Upload the new version of the reference manual to the website.
TODO: setup some continuous deployment for this.[ ] Merge the website update, publish the release
and send announcement e-mails.[ ] Close the milestone
At the final release time
- [ ] Prepare the release notes (see above)
[ ] In a PR:
Change the version name from X.X.0 and the magic numbers (see
#7271).Set
is_a_released_version
totrue
inconfigure.ml
.- [ ] Put the
VX.X.0
tag.- [ ] Check using
git push --tags --dry-run
that you are not
pushing anything else than the new tag. If needed, remove spurious
tags withgit tag -d
. When this is OK, proceed withgit push --tags
.[ ] Set
is_a_released_version
tofalse
inconfigure.ml
(if you forget about it, you'll be reminded whenever you try to
backport a PR with a changelog entry).Repeat the generic process documented above for all releases.
Ping
@Zimmi48
to:
- [ ] Switch the default version of the reference manual on the website.
- [ ] Publish a new version on Zenodo.
At the patch-level release time
We generally do not update the magic numbers at this point (see
2881a18
).
b456cf6 changed its status to success.
b456cf6 changed its status to success.
gares edited Issue #12334 Release 8.13 (assigned to maximedenes):
Release process
As soon as the previous version branched off master
In principle, these steps should be undertaken by the RM of the next
release. Unfortunately, we have not yet been able to nominate RMs
early enough in the process for this person to be known at that point
in time.
[x] Create a new issue to track the release process where you can copy-paste
the present checklist (from dev/doc/release-process.md)[x] Change the version name to the next major version and the magic
numbers (see #7008).Done in #12346
Additionally, in the same commit, update the compatibility
infrastructure, which consists of invoking
dev/tools/update-compat.py
with the
--master
flag.Note that the
update-compat.py
script must be run twice: once
immediately after branching with the--master
flag (which sets
up Coq to support four-compat
flag arguments), *in the same
commit* as the one that updatescoq_version
in
configure.ml
, and once again later on before
the next branch point with the--release
flag (see next section).[ ] Put the corresponding alpha tag using
git tag -s
.
TheVX.X+alpha
tag marks the first commit to be inmaster
and not in the
branch of the previous version.[x] Create the
X.X+beta1
milestone if it did not already exist.- [ ] Decide the release calendar with the team (freeze date, beta date, final
release date) and put this information in the milestone (using the
description and due date fields).Anytime after the previous version is branched off master
- [ ] Update the compatibility infrastructure to the next release,
which consists of invoking
dev/tools/update-compat.py
with the
--release
flag; this sets up Coq to support three-compat
flag
arguments. To ensure that CI passes, you will have to decide what
to do about all test-suite files which mention-compat U.U
or
Coq.Comapt.CoqUU
(which is no longer valid, since we only keep
compatibility against the two previous versions on releases), and
you may have to prepare overlays for projects using the
compatibility flags.About one month before the beta
- [ ] Create the
X.X.0
milestone and set its due date.[ ] Send an announcement of the upcoming freeze on Coqdev and ask people to
remove from the beta milestone what they already know won't be ready on time
(possibly postponing to theX.X.0
milestone for minor bug fixes,
infrastructure and documentation updates).[ ] Determine which issues should / must be fixed before the beta, add them
to the beta milestone, possibly with a
"priority: blocker"
label. Make sure that all these issues are assigned (and that the assignee
provides an ETA).[ ] Ping the development coordinator (@mattam82) to get him started on
the update to the Credits chapter of the reference manual.
See also #7058.The command that was used in the previous versions to get the list
of contributors for this version isgit shortlog -s -n VX.X+alpha..master | cut -f2 | sort -k 2
. Note that the ordering is
approximative as it will misplace people with middle names. It is
also probably not correctly handlingCo-authored-by
info that we
have been using more lately, so should probably be updated to
account for this.On the date of the feature freeze
[ ] Create the new version branch
vX.X
(using this name will ensure that
the branch will be automatically protected).[ ] Pin the versions of libraries and plugins in
dev/ci/ci-basic-overlays.sh
to use commit hashes or tag (or, if it
exists, a branch dedicated to compatibility with the corresponding
Coq branch). You can use thedev/tools/pin-ci.sh
script to do this
semi-automatically.[ ] Remove all remaining unmerged feature PRs from the beta milestone.
[ ] Start a new project to track PR backporting. The project should
have a "Request X.X+beta1 inclusion" column for the PRs that were
merged inmaster
that are to be considered for backporting, and a
"Shipped in X.X+beta1" columns to put what was backported. A message
to @coqbot in the milestone description tells it to
automatically add merged PRs to the "Request ... inclusion" column
and backported PRs to the "Shipped in ..." column. See previous
milestones for examples. When moving to the next milestone
(e.g. X.X.0), you can clear and remove the "Request X.X+beta1
inclusion" column and create new "Request X.X.0 inclusion" and
"Shipped in X.X.0" columns.The release manager is the person responsible for merging PRs that
target the version branch and backporting appropriate PRs that are
merged intomaster
.[ ] Delay non-blocking issues to the appropriate milestone and ensure
blocking issues are solved. If required to solve some blocking issues,
it is possible to revert some feature PRs in the version branch only.[ ] Add a new link to the
'versions'
list of the refman (in
html_context
indoc/sphinx/conf.py
).Before the beta release date
- [ ] Ensure the Credits chapter has been updated.
[ ] Prepare the release notes (see e.g.,
#10833): in a PR against themaster
branch, move the contents from all files ofdoc/changelog/
that appear in
the release branch into the manualdoc/sphinx/changes.rst
. Merge that PR
into themaster
branch and backport it to the version branch.[ ] Ensure that an appropriate version of the plugins we will distribute with
Coq has been tagged.[ ] Have some people test the recently auto-generated Windows and MacOS
packages.[ ] In a PR:
Change the version name from alpha to beta1 (see
#7009).We generally do not update the magic numbers at this point.
- Set
is_a_released_version
totrue
inconfigure.ml
.- [ ] Put the
VX.X+beta1
tag usinggit tag -s
.- [ ] Check using
git push --tags --dry-run
that you are not
pushing anything else than the new tag. If needed, remove spurious
tags withgit tag -d
. When this is OK, proceed withgit push --tags
.[ ] Set
is_a_released_version
tofalse
inconfigure.ml
(if you forget about it, you'll be reminded whenever you try to
backport a PR with a changelog entry).These steps are the same for all releases (beta, final, patch-level)
[ ] Send an e-mail on Coqdev announcing that the tag has been put so that
package managers can start preparing package updates (including a
coq-bignums
compatible version).[ ] When opening the corresponding PR for
coq
in the opam repository (coq/opam-coq-archive
orocaml/opam-repository
),
the package managers can Cc@erikmd
to request that he prepare the necessary configuration for the Docker release incoqorg/coq
(namely, he'll need to make sure acoq-bignums
opam package is available inextra-dev
, respectivelyreleased
, so the Docker image gatheringcoq
andcoq-bignums
can be built).[ ] Draft a release on GitHub.
[ ] Sign the Windows and MacOS packages and upload them on GitHub.
The Windows packages must be signed by the Inria IT security service. They
should be sent as a link to the binary together with its SHA256 hash in a
signed e-mail, via our local contact (currently@maximedenes
).The MacOS packages should be signed by our own certificate, by sending them
to@maximedenes
. A detailed step-by-step guide can be found on the wiki.[ ] Prepare a page of news on the website with the link to the GitHub release
(see coq/www#63).[ ] Upload the new version of the reference manual to the website.
TODO: setup some continuous deployment for this.[ ] Merge the website update, publish the release
and send announcement e-mails.[ ] Close the milestone
At the final release time
- [ ] Prepare the release notes (see above)
[ ] In a PR:
Change the version name from X.X.0 and the magic numbers (see
#7271).Set
is_a_released_version
totrue
inconfigure.ml
.- [ ] Put the
VX.X.0
tag.- [ ] Check using
git push --tags --dry-run
that you are not
pushing anything else than the new tag. If needed, remove spurious
tags withgit tag -d
. When this is OK, proceed withgit push --tags
.[ ] Set
is_a_released_version
tofalse
inconfigure.ml
(if you forget about it, you'll be reminded whenever you try to
backport a PR with a changelog entry).Repeat the generic process documented above for all releases.
Ping
@Zimmi48
to:
- [ ] Switch the default version of the reference manual on the website.
- [ ] Publish a new version on Zenodo.
At the patch-level release time
We generally do not update the magic numbers at this point (see
2881a18
).
ejgallego milestoned Issue #12350 [test-suite] Ensure copies of files are writable:
This is needed for the case the sources are set to read-only mode, for
example when using Dune >= 2.5 [needed for the global cache support]Fixes #12264
Co-authored-by: Ignat Insarov <kindaro@gmail.com>
ejgallego opened PR #12350 [test-suite] Ensure copies of files are writable from test-suite+fix_dune_read_only
to master
:
This is needed for the case the sources are set to read-only mode, for
example when using Dune >= 2.5 [needed for the global cache support]Fixes #12264
Co-authored-by: Ignat Insarov <kindaro@gmail.com>
ejgallego requested test-suite-maintainers and coq-makefile-maintainers for a review on PR #12350 [test-suite] Ensure copies of files are writable.
ejgallego requested test-suite-maintainers and coq-makefile-maintainers for a review on PR #12350 [test-suite] Ensure copies of files are writable.
17de81c changed its status to failure.
gares created tag V8.13+alpha.
gares edited Issue #12334 Release 8.13 (assigned to maximedenes):
Release process
As soon as the previous version branched off master
In principle, these steps should be undertaken by the RM of the next
release. Unfortunately, we have not yet been able to nominate RMs
early enough in the process for this person to be known at that point
in time.
[x] Create a new issue to track the release process where you can copy-paste
the present checklist (from dev/doc/release-process.md)[x] Change the version name to the next major version and the magic
numbers (see #7008).Done in #12346
Additionally, in the same commit, update the compatibility
infrastructure, which consists of invoking
dev/tools/update-compat.py
with the
--master
flag.Note that the
update-compat.py
script must be run twice: once
immediately after branching with the--master
flag (which sets
up Coq to support four-compat
flag arguments), *in the same
commit* as the one that updatescoq_version
in
configure.ml
, and once again later on before
the next branch point with the--release
flag (see next section).[x] Put the corresponding alpha tag using
git tag -s
.
TheVX.X+alpha
tag marks the first commit to be inmaster
and not in the
branch of the previous version.[x] Create the
X.X+beta1
milestone if it did not already exist.- [ ] Decide the release calendar with the team (freeze date, beta date, final
release date) and put this information in the milestone (using the
description and due date fields).Anytime after the previous version is branched off master
- [ ] Update the compatibility infrastructure to the next release,
which consists of invoking
dev/tools/update-compat.py
with the
--release
flag; this sets up Coq to support three-compat
flag
arguments. To ensure that CI passes, you will have to decide what
to do about all test-suite files which mention-compat U.U
or
Coq.Comapt.CoqUU
(which is no longer valid, since we only keep
compatibility against the two previous versions on releases), and
you may have to prepare overlays for projects using the
compatibility flags.About one month before the beta
- [ ] Create the
X.X.0
milestone and set its due date.[ ] Send an announcement of the upcoming freeze on Coqdev and ask people to
remove from the beta milestone what they already know won't be ready on time
(possibly postponing to theX.X.0
milestone for minor bug fixes,
infrastructure and documentation updates).[ ] Determine which issues should / must be fixed before the beta, add them
to the beta milestone, possibly with a
"priority: blocker"
label. Make sure that all these issues are assigned (and that the assignee
provides an ETA).[ ] Ping the development coordinator (@mattam82) to get him started on
the update to the Credits chapter of the reference manual.
See also #7058.The command that was used in the previous versions to get the list
of contributors for this version isgit shortlog -s -n VX.X+alpha..master | cut -f2 | sort -k 2
. Note that the ordering is
approximative as it will misplace people with middle names. It is
also probably not correctly handlingCo-authored-by
info that we
have been using more lately, so should probably be updated to
account for this.On the date of the feature freeze
[ ] Create the new version branch
vX.X
(using this name will ensure that
the branch will be automatically protected).[ ] Pin the versions of libraries and plugins in
dev/ci/ci-basic-overlays.sh
to use commit hashes or tag (or, if it
exists, a branch dedicated to compatibility with the corresponding
Coq branch). You can use thedev/tools/pin-ci.sh
script to do this
semi-automatically.[ ] Remove all remaining unmerged feature PRs from the beta milestone.
[ ] Start a new project to track PR backporting. The project should
have a "Request X.X+beta1 inclusion" column for the PRs that were
merged inmaster
that are to be considered for backporting, and a
"Shipped in X.X+beta1" columns to put what was backported. A message
to @coqbot in the milestone description tells it to
automatically add merged PRs to the "Request ... inclusion" column
and backported PRs to the "Shipped in ..." column. See previous
milestones for examples. When moving to the next milestone
(e.g. X.X.0), you can clear and remove the "Request X.X+beta1
inclusion" column and create new "Request X.X.0 inclusion" and
"Shipped in X.X.0" columns.The release manager is the person responsible for merging PRs that
target the version branch and backporting appropriate PRs that are
merged intomaster
.[ ] Delay non-blocking issues to the appropriate milestone and ensure
blocking issues are solved. If required to solve some blocking issues,
it is possible to revert some feature PRs in the version branch only.[ ] Add a new link to the
'versions'
list of the refman (in
html_context
indoc/sphinx/conf.py
).Before the beta release date
- [ ] Ensure the Credits chapter has been updated.
[ ] Prepare the release notes (see e.g.,
#10833): in a PR against themaster
branch, move the contents from all files ofdoc/changelog/
that appear in
the release branch into the manualdoc/sphinx/changes.rst
. Merge that PR
into themaster
branch and backport it to the version branch.[ ] Ensure that an appropriate version of the plugins we will distribute with
Coq has been tagged.[ ] Have some people test the recently auto-generated Windows and MacOS
packages.[ ] In a PR:
Change the version name from alpha to beta1 (see
#7009).We generally do not update the magic numbers at this point.
- Set
is_a_released_version
totrue
inconfigure.ml
.- [ ] Put the
VX.X+beta1
tag usinggit tag -s
.- [ ] Check using
git push --tags --dry-run
that you are not
pushing anything else than the new tag. If needed, remove spurious
tags withgit tag -d
. When this is OK, proceed withgit push --tags
.[ ] Set
is_a_released_version
tofalse
inconfigure.ml
(if you forget about it, you'll be reminded whenever you try to
backport a PR with a changelog entry).These steps are the same for all releases (beta, final, patch-level)
[ ] Send an e-mail on Coqdev announcing that the tag has been put so that
package managers can start preparing package updates (including a
coq-bignums
compatible version).[ ] When opening the corresponding PR for
coq
in the opam repository (coq/opam-coq-archive
orocaml/opam-repository
),
the package managers can Cc@erikmd
to request that he prepare the necessary configuration for the Docker release incoqorg/coq
(namely, he'll need to make sure acoq-bignums
opam package is available inextra-dev
, respectivelyreleased
, so the Docker image gatheringcoq
andcoq-bignums
can be built).[ ] Draft a release on GitHub.
[ ] Sign the Windows and MacOS packages and upload them on GitHub.
The Windows packages must be signed by the Inria IT security service. They
should be sent as a link to the binary together with its SHA256 hash in a
signed e-mail, via our local contact (currently@maximedenes
).The MacOS packages should be signed by our own certificate, by sending them
to@maximedenes
. A detailed step-by-step guide can be found on the wiki.[ ] Prepare a page of news on the website with the link to the GitHub release
(see coq/www#63).[ ] Upload the new version of the reference manual to the website.
TODO: setup some continuous deployment for this.[ ] Merge the website update, publish the release
and send announcement e-mails.[ ] Close the milestone
At the final release time
- [ ] Prepare the release notes (see above)
[ ] In a PR:
Change the version name from X.X.0 and the magic numbers (see
#7271).Set
is_a_released_version
totrue
inconfigure.ml
.- [ ] Put the
VX.X.0
tag.- [ ] Check using
git push --tags --dry-run
that you are not
pushing anything else than the new tag. If needed, remove spurious
tags withgit tag -d
. When this is OK, proceed withgit push --tags
.[ ] Set
is_a_released_version
tofalse
inconfigure.ml
(if you forget about it, you'll be reminded whenever you try to
backport a PR with a changelog entry).Repeat the generic process documented above for all releases.
Ping
@Zimmi48
to:
- [ ] Switch the default version of the reference manual on the website.
- [ ] Publish a new version on Zenodo.
At the patch-level release time
We generally do not update the magic numbers at this point (see
2881a18
).
ea6cb6b changed its status to failure.
17de81c changed its status to pending.
92e21cb changed its status to failure.
f123874 changed its status to failure.
JasonGross updated PR #12316 Use pagination in fetching the number of reviews from fix-12300
to master
:
Fixes #12300
Note that I currently only paginate the API call for the number of
reviews, not the main API call, because (a) the main API call doesn't
seem subject to pagination (it returns a dict, not an array), and (b)
because fetching the total number of pages incurs an extra API call for
each one that we want to paginate, even if there is only one page. We
could work around (b) with a significantly more complicated
curl_paginate
function which heuristically recognizes the end of the
header/beginning of the body, such ascurl_paginate() { # as per https://developer.github.com/v3/guides/traversing-with-pagination/#changing-the-number-of-items-received, GitHub will never give us more than 100 url="$1?per_page=100" # We need to process the header to get the pagination. We have two # options: # # 1. We can make an extra API call at the beginning to get the total # number of pages, search for a rel="last" link, and then loop # over all the pages. # # 2. We can ask for the header info with every single curl request, # search for a rel="next" link to follow to the next page, and # then parse out the body from the header. # # Although (1) is simpler, we choose to do (2) to save an extra API # call per invocation of curl. while [ ! -z "${url}" ]; do response="$(curl -si "${url}")" # we search for something like 'link: <https://api.github.com/repositories/1377159/pulls/12129/reviews?page=2>; rel="next", <https://api.github.com/repositories/1377159/pulls/12129/reviews?page=2>; rel="last"' and take the first 'next' url url="$(echo "${response}" | grep -m 1 -io '^link: .*>; rel="next"' | grep -o '<[^>]*>; rel="next"' | grep -o '<[^>]*>' | sed s'/[<>]//g')" echo "${response}" | { is_header="yes" while read line; do if [ "${is_header}" == "yes" ]; then if echo "${line}" | grep -q '^\s*[\[{]'; then # we treat lines beginning with [ or { as the beginning of the response body is_header="no" echo "${line}" fi else echo "${line}" fi done } done }
Kind: bug fix / infrastructure.
- [ ] Entry added in the changelog (see https://github.com/coq/coq/tree/master/doc/changelog#unreleased-changelog for details). (does this need a changelog entry?)
674df18 changed its status to failure.
JasonGross opened Issue #12351 Redirect ignores Set Printing Width:
<!-- Thank you for reporting a bug to Coq! -->
Description of the problem
Axiom foo : forall a b c d e f g h i j k l m n o p q r s t u v w x y z : Set, a->b->c->d->e->f->g->h->i->j->k->l->m->n->o->p->q->r->s->t->u->v->w->x->y->z. Set Printing Width 10000. Print Assumptions foo. (* Axioms: foo : forall a b c d e f g h i j k l m n o p q r s t u v w x y z : Set, a -> b -> c -> d -> e -> f -> g -> h -> i -> j -> k -> l -> m -> n -> o -> p -> q -> r -> s -> \ t -> u -> v -> w -> x -> y -> z *) Redirect "foo" Print Assumptions foo. (* Axioms: foo : forall a b c d e f g h i j k l m n o p q r s t u v w x y z : Set, a -> b -> c -> d -> e -> f -> g -> h -> i -> j -> k -> l -> m -> n -> o -> p -> q -> r -> s -> t -> u -> v -> w -> x -> y -> z *)
This makes it much more annoying to make fiat-crypto compatible with #11980 in a backwards-compatible way.
Coq Version
8.11.1
JasonGross opened Issue #12352 #11980 had no changelog entry (assigned to SkySkimmer).
JasonGross assigned Issue #12352 #11980 had no changelog entry (assigned to SkySkimmer).
JasonGross milestoned Issue #12352 #11980 had no changelog entry (assigned to SkySkimmer).
SkySkimmer unassigned Issue #12352 #11980 had no changelog entry (assigned to SkySkimmer).
herbelin merged PR #12289 test-suite: fix bug causing unit tests to be skipped.
2222e45 changed its status to failure.
gares requested contributing-process-maintainers for a review on PR #12353 Update release-process.md.
gares opened PR #12353 Update release-process.md from gares-patch-1
to master
:
About the commit that should be tagged VXX+alpha
e1e4073 changed its status to failure.
Zimmi48 milestoned Issue #12353 Update release-process.md:
About the commit that should be tagged VXX+alpha
17de81c changed its status to failure.
17de81c changed its status to success.
ejgallego assigned PR #12353 Update release-process.md to ejgallego.
2222e45 changed its status to pending.
17de81c changed its status to success.
17de81c changed its status to success.
gares updated PR #12353 Update release-process.md (assigned to ejgallego) from gares-patch-1
to master
:
About the commit that should be tagged VXX+alpha
ffe1de0 changed its status to failure.
Zimmi48 demilestoned Issue #12352 #11980 had no changelog entry.
Zimmi48 closed Issue #12352 #11980 had no changelog entry.
Zimmi48 labeled Issue #12352 #11980 had no changelog entry.
ejgallego opened PR #12354 [universes] [api] Provide UState.from_env from proofs+better_uctx_constructor
to master
:
This seems like a recurring pattern, and IMO makes a bit better API.
We also remove
merge_universe_subst
as it is not needed so far, as
we were creating staleevar_map
s just for this purpose.
e3dc950 changed its status to failure.
e3dc950 changed its status to pending.
2222e45 changed its status to success.
2222e45 changed its status to failure.
b7c14a8 changed its status to success.
SkySkimmer assigned PR #12354 [universes] [api] Provide UState.from_env to SkySkimmer.
Zimmi48 updated PR #12224 Support :gdef:text<term>
syntax (adding "<term>") (assigned to cpitclaudel) from gdef_alias
to master
:
Permits displaying the plural or capitalized form of the term while indexing the unmodified term.
2222e45 changed its status to success.
2222e45 changed its status to success.
c92de18 changed its status to failure.
c92de18 changed its status to failure.
c92de18 changed its status to failure.
c92de18 changed its status to error.
c92de18 changed its status to pending.
c92de18 changed its status to failure.
c92de18 changed its status to failure.
Zimmi48 assigned PR #12316 Use pagination in fetching the number of reviews.
e3dc950 changed its status to failure.
e3dc950 changed its status to failure.
Zimmi48 updated PR #12224 Support :gdef:text<term>
syntax (adding "<term>") (assigned to cpitclaudel) from gdef_alias
to master
:
Permits displaying the plural or capitalized form of the term while indexing the unmodified term.
Zimmi48 opened PR #12355 Use pinned commits in dev/ci/ci-user-overlays.sh. (assigned to ejgallego) from pin-overlays
to v8.12
:
Kind: infrastructure.
While preparing this PR (by running
dev/tools/pin-overlays
), I have discovered that our referenced URL to coq-menhirlib (only used in the Windows build AFAIR) does not exist anymore. This likely means that the full Windows is currently failing. It looks like coq-menhirlib is now developed at https://gitlab.inria.fr/fpottier/menhir/-/tree/master/coq-menhirlib.cc @MSoegtropIMC
Zimmi48 milestoned Issue #12355 Use pinned commits in dev/ci/ci-user-overlays.sh. (assigned to ejgallego):
Kind: infrastructure.
While preparing this PR (by running
dev/tools/pin-overlays
), I have discovered that our referenced URL to coq-menhirlib (only used in the Windows build AFAIR) does not exist anymore. This likely means that the full Windows is currently failing. It looks like coq-menhirlib is now developed at https://gitlab.inria.fr/fpottier/menhir/-/tree/master/coq-menhirlib.cc @MSoegtropIMC
Zimmi48 assigned [PR #12355 Use pinned commits in dev/ci/ci-user-overlays.sh.](https://github.com/coq/coq/pull/12355 to ejgallego.
Zimmi48 requested ci-maintainers for a review on PR #12355 Use pinned commits in dev/ci/ci-user-overlays.sh..
SkySkimmer edited PR #12355 [8.12] Use pinned commits in dev/ci/ci-user-overlays.sh. (assigned to ejgallego) from pin-overlays
to v8.12
:
Kind: infrastructure.
While preparing this PR (by running
dev/tools/pin-overlays
), I have discovered that our referenced URL to coq-menhirlib (only used in the Windows build AFAIR) does not exist anymore. This likely means that the full Windows is currently failing. It looks like coq-menhirlib is now developed at https://gitlab.inria.fr/fpottier/menhir/-/tree/master/coq-menhirlib.cc @MSoegtropIMC
ejgallego opened PR #12356 [declare] Remove unused parameters in prepare_obligation from declare+nit
to master
:
Cleanup PR.
Zimmi48 updated PR #12224 Support :gdef:text<term>
syntax (adding "<term>") (assigned to cpitclaudel) from gdef_alias
to master
:
Permits displaying the plural or capitalized form of the term while indexing the unmodified term.
ejgallego updated PR #12301 [declare] Grand unification of the proof save path. (assigned to SkySkimmer) from proof+fuse_3
to master
:
We complete some arduous refactoring in order to bring all the
internals and code of constant / proof saving into the same module.In particular, this PR moves the remaining parts of proof saving from
Lemmas
toDeclare
.The reduction in exposed internals is considerable; in particular, we
remove the export of the internals ofproof_entry
andproof_object
[used in delayed proofs], which will allow us to start to address many
issues with the current setup, such as #10363 .There are still some TODOs, that will be addressed in subsequent PRs:
- Remove
declare_constant
in favor of higher-level APIs- Then, remove access to
proof_entry
entirely- Refactor current very verbose handling of proof info.
- Remove compat modules / API.
- Rework handling of delayed proofs [this may be hard due to state and the STM]
- Reify Hook API for the case where it acts as a continuation [that is to say, declaring constants from the Hook]
List of remaining offenders for
proof_entry
/declare_constant
in
the codebase:
- File "vernac/comHints.ml"
- File "vernac/indscheme.ml"
- File "vernac/comProgramFixpoint.ml"
- File "vernac/comAssumption.ml"
- File "vernac/record.ml"
- File "plugins/ltac/leminv.ml"
- File "plugins/setoid_ring/newring.ml"
- File "plugins/funind/recdef.ml"
- File "plugins/funind/gen_principle.ml"
@ppedrot @SkySkimmer I know it is quite late but IMO it'd be great to try to get this merged in 8.12. The PR itself is straightforward, and there are no overlays.
Janno updated PR #12349 Allow dependent products in canonical instances. from janno/cs_dep_prod
to master
:
This removes the restriction to non-dependent products. Dependent and non-dependent products are handled the same way.
The code is arguably simpler than before and also more powerful. I have some use cases in mind but they would probably only work with Unicoq so I can't provide a very compelling example here. In any case, @gares and @mattam82 seemed to agree that this could be a worthwhile change, and, based on what @ggonthier's wrote in https://github.com/coq/coq/issues/11189#issuecomment-558673619, it seems that removing the dependency check could be the right thing to do even without any use cases where the function type actually is dependent (as opposed to just appearing dependent during unification).
This needs benchmarking since it might well be slower for non-dependent functions than the original code.
I'll add documentation after #12329 is merged since that PR contains new documentation for canonical structures.
<!-- Thank you for your contribution.
Make sure you read the contributing guide and fill this template. --><!-- Keep what applies -->
Kind: feature.<!-- If there is a user-visible change in coqc/coqtop/coqchk/coq_makefile behavior and testing is not prohibitively expensive: -->
<!-- (Otherwise, remove this line.) -->
[X] Added / updated test-suite
<!-- If this is a feature pull request / breaks compatibility: -->
<!-- (Otherwise, remove these lines.) -->[ ] Corresponding documentation was added / updated (including any warning and error messages added / removed / modified).
- [ ] Entry added in the changelog (see https://github.com/coq/coq/tree/master/doc/changelog#unreleased-changelog for details).
Zimmi48 updated PR #12224 Support :gdef:text<term>
syntax (adding "<term>") (assigned to cpitclaudel) from gdef_alias
to master
:
Permits displaying the plural or capitalized form of the term while indexing the unmodified term.
ejgallego opened PR #12357 [declare] Remove some unused fix_exn
from proof+no_fix_exn
to master
:
In the current proof save path, the kernel can raise an exception when
checking a proof wrapped into a future.However, in this case, the future itself will "fix" the produced
exception, with the mandatory handler set at the future's creation
time.Thus, there is no need for the declare layer to mess with exceptions
anymore, if my logic is correct. Note that thefix_exn
parameter to
theDeclare
API was not used anymore.This undoes 77cf18eb844b45776b2ec67be9f71e8dd4ca002c which comes from
pre-github times, so unfortunately I didn't have access to the
discussion.This needs some manual testing.
Zimmi48 updated PR #12224 Support :gdef:text<term>
syntax (adding "<term>") (assigned to cpitclaudel) from gdef_alias
to master
:
Permits displaying the plural or capitalized form of the term while indexing the unmodified term.
ejgallego opened PR #12358 [topfmt] Set formatter + flush fix from redirect_printing_params
to master
:
Closes #12351.
We set the parameters of the redirect formatter to be same than the
ones in stdout.I guess the original semantics was to ignore the parameters, so I'm
unsure we want to do this.While we are a it, we include a fix on the formatter, which _must_ be
flushed before closing its associated channel.
ejgallego requested vernac-maintainers for a review on PR #12358 [topfmt] Set formatter + flush fix.
ejgallego updated PR #12358 [topfmt] Set formatter + flush fix from redirect_printing_params
to master
:
Closes #12351.
We set the parameters of the redirect formatter to be same than the
ones in stdout.I guess the original semantics was to ignore the parameters, so I'm
unsure we want to do this.While we are a it, we include a fix on the formatter, which _must_ be
flushed before closing its associated channel.
ejgallego milestoned Issue #12358 [topfmt] Set formatter + flush fix:
Closes #12351.
We set the parameters of the redirect formatter to be same than the
ones in stdout.I guess the original semantics was to ignore the parameters, so I'm
unsure we want to do this.While we are a it, we include a fix on the formatter, which _must_ be
flushed before closing its associated channel.
ejgallego requested JasonGross and vernac-maintainers for a review on PR #12358 [topfmt] Set formatter + flush fix.
ppedrot assigned PR #11986 [primitive floats] Add low level printing to ppedrot.
jfehrle updated PR #12224 Support :gdef:text<term>
syntax (adding "<term>") (assigned to cpitclaudel) from gdef_alias
to master
:
Permits displaying the plural or capitalized form of the term while indexing the unmodified term.
JasonGross opened PR #12359 [ci] Add mit-plv/engine-bench from add-engine-bench
to master
:
This is a new development where I'm aggregating a specific set of
benchmarks. It's intended to be relatively lightweight, taking only a
handful of minutes (I can make the CI target much, much lighter if
desired). It's probably one of the few developments currently testing
Ltac2.Kind: infrastructure
JasonGross requested ci-maintainers for a review on PR #12359 [ci] Add mit-plv/engine-bench.
JasonGross updated PR #12359 [ci] Add mit-plv/engine-bench from add-engine-bench
to master
:
This is a new development where I'm aggregating a specific set of
benchmarks. It's intended to be relatively lightweight, taking only a
handful of minutes (I can make the CI target much, much lighter if
desired). It's probably one of the few developments currently testing
Ltac2.Kind: infrastructure
jfehrle updated PR #12224 Support :gdef:text<term>
syntax (adding "<term>") (assigned to cpitclaudel) from gdef_alias
to master
:
Permits displaying the plural or capitalized form of the term while indexing the unmodified term.
jfehrle updated PR #12224 Support :gdef:text<term>
syntax (adding "<term>") (assigned to cpitclaudel) from gdef_alias
to master
:
Permits displaying the plural or capitalized form of the term while indexing the unmodified term.
MSoegtropIMC updated PR #12186 CReal: changed epsilon for modulus of convergence from 1/n to 1/2^n from creal-new-modulus
to master
:
This PR changes the epsilon in the definition of the modulus of convergence for CReal from 1/n to 1/2^n. This avoids the issue that in practical high precision computations, even as binary integer n would be quite large (say 2^1000000), although quadratically convergent algorithms might need only a few 10 iterations to reach such a precision.
This is work in progress (right now I just did the main file ConstructiveCauchyReals.v).
@VincentSe : some things I think I should change:
as far as I can tell the major issue for the many lengthy manual arithmetic proofs is the use of variables in Qmake (a#b). As far as I can tell ring, field and lra don't understand that # and / is more or less the same thing. They can compute with literal numbers like 1#2 * 2#3 = 1#3, but they don't work for say 1#n. One should write 1/n instead and use # only for literal rational numbers (ground terms). This would be a major change, though, but I think expressions like 1#n are not intended and we should not do this in the standard library.
In general I am not happy with the proof style, since proofs generally look more complicated than they actually are, but this might improve a lot with the point above and maybe a few little preprocessing tactics and reordering.
When switching to an abstracted computational structure this might get much more messy so some upfront cleanup would help.
The addition function should be fully split into computational part and proof
[ ] Added / updated test-suite
- [ ] Corresponding documentation was added / updated (including any warning and error messages added / removed / modified).
- [ ] Entry added in the changelog (see https://github.com/coq/coq/tree/master/doc/changelog#unreleased-changelog for details).
proux01 updated PR #11986 [primitive floats] Add low level printing (assigned to ppedrot) from float-low-level-printing
to master
:
Add flag
Printing Float
to print primitive floats as hexadecimal
instead of decimal values. This is included inSet Printing All
.This follows prior discussions in #11859 and #11611
~Depends on : #11948~
- [x] Added / updated test-suite
- [x] Corresponding documentation was added / updated (including any warning and error messages added / removed / modified).
- [x] Entry added in the changelog
fajb updated PR #11906 [micromega] native support for boolean operators from bmicromega
to master
:
<!-- Thank you for your contribution.
Make sure you read the contributing guide and fill this template. -->
lia
supports boolean comparisons and operators
+ Z.{eqb, leb, ltb, geb, gtb}
+ andb, orb, implb, eqb, negb, ||zify
has been modified to work in harmony
+ZifyBool.v
injects comparison overnat
to comparisons overZ
Kind: feature
(this is a clean revival of #11047 )
- [ ] Added / updated test-suite
- [x] Corresponding documentation was added /
- [x] Entry added in the changelog
ppedrot milestoned Issue #11986 [primitive floats] Add low level printing (assigned to ppedrot):
Add flag
Printing Float
to print primitive floats as hexadecimal
instead of decimal values. This is included inSet Printing All
.This follows prior discussions in #11859 and #11611
~Depends on : #11948~
- [x] Added / updated test-suite
- [x] Corresponding documentation was added / updated (including any warning and error messages added / removed / modified).
- [x] Entry added in the changelog
fajb updated PR #11906 [micromega] native support for boolean operators from bmicromega
to master
:
<!-- Thank you for your contribution.
Make sure you read the contributing guide and fill this template. -->
lia
supports boolean comparisons and operators
+ Z.{eqb, leb, ltb, geb, gtb}
+ andb, orb, implb, eqb, negb, ||zify
has been modified to work in harmony
+ZifyBool.v
injects comparison overnat
to comparisons overZ
Kind: feature
(this is a clean revival of #11047 )
- [ ] Added / updated test-suite
- [x] Corresponding documentation was added /
- [x] Entry added in the changelog
SkySkimmer updated PR #11604 Primitive persistent arrays from persistent-arrays
to master
:
TODO:
- [x] Review what happens on
Karg
arguments when primitive reduces- [x] Add tests and fix test suite
- [x] Replace type with default value in
constr
- [x] Safer
Parray
API- [x] Make
array
universe polymorphic- [x] Clean up extraction directives
- [ ] Address todos and fixmes in the code
- [x] Guard condition and positivity for nested arrays
- [x]
max_array_length
should be a primitive- [x] try to improve syntax of literals
- [x] add tests for
PArray.make
- [x] fix syntax clash with ssr's
p.[e]
notation<!-- If there is a user-visible change in coqc/coqtop/coqchk/coq_makefile behavior and testing is not prohibitively expensive: -->
<!-- (Otherwise, remove this line.) -->
[x] Added / updated test-suite
<!-- If this is a feature pull request / breaks compatibility: -->
<!-- (Otherwise, remove these lines.) -->[x] Corresponding documentation was added / updated (including any warning and error messages added / removed / modified).
- [x] Entry added in the changelog (see https://github.com/coq/coq/tree/master/doc/changelog#unreleased-changelog for details).
proux01 updated PR #11986 [primitive floats] Add low level printing (assigned to ppedrot) from float-low-level-printing
to master
:
Add flag
Printing Float
to print primitive floats as hexadecimal
instead of decimal values. This is included inSet Printing All
.This follows prior discussions in #11859 and #11611
~Depends on : #11948~
- [x] Added / updated test-suite
- [x] Corresponding documentation was added / updated (including any warning and error messages added / removed / modified).
- [x] Entry added in the changelog
SkySkimmer merged PR #12301 [declare] Grand unification of the proof save path.
SkySkimmer assigned PR #12350 [test-suite] Ensure copies of files are writable to SkySkimmer.
ejgallego merged PR #12353 Update release-process.md.
ejgallego updated PR #12354 [universes] [api] Provide UState.from_env (assigned to SkySkimmer) from proofs+better_uctx_constructor
to master
:
This seems like a recurring pattern, and IMO makes a bit better API.
We also remove
merge_universe_subst
as it is not needed so far, as
we were creating staleevar_map
s just for this purpose.
ejgallego updated PR #12357 [declare] Remove some unused fix_exn
from proof+no_fix_exn
to master
:
In the current proof save path, the kernel can raise an exception when
checking a proof wrapped into a future.However, in this case, the future itself will "fix" the produced
exception, with the mandatory handler set at the future's creation
time.Thus, there is no need for the declare layer to mess with exceptions
anymore, if my logic is correct. Note that thefix_exn
parameter to
theDeclare
API was not used anymore.This undoes 77cf18eb844b45776b2ec67be9f71e8dd4ca002c which comes from
pre-github times, so unfortunately I didn't have access to the
discussion.This needs some manual testing.
ejgallego requested lib-maintainers, stm-maintainers and vernac-maintainers for a review on PR #12357 [declare] Remove some unused fix_exn
.
ejgallego requested lib-maintainers, stm-maintainers and vernac-maintainers for a review on PR #12357 [declare] Remove some unused fix_exn
.
ejgallego requested lib-maintainers, stm-maintainers and vernac-maintainers for a review on PR #12357 [declare] Remove some unused fix_exn
.
ejgallego updated PR #12356 [declare] Remove unused parameters in prepare_obligation from declare+nit
to master
:
Cleanup PR.
ejgallego requested vernac-maintainers for a review on PR #12356 [declare] Remove unused parameters in prepare_obligation.
ejgallego requested engine-maintainers, universes-maintainers and vernac-maintainers for a review on PR #12354 [universes] [api] Provide UState.from_env.
ejgallego requested engine-maintainers, universes-maintainers and vernac-maintainers for a review on PR #12354 [universes] [api] Provide UState.from_env.
ejgallego requested engine-maintainers, universes-maintainers and vernac-maintainers for a review on PR #12354 [universes] [api] Provide UState.from_env.
ejgallego updated PR #11836 [obligations] Functionalize Program state from obligations+functional
to master
:
In our quest to unify all the declaration paths, an important step
is to account for the state pertaining toProgram
declarations.Whereas regular proofs keep are kept in a stack-like structure;
obligations for constants defined byProgram
are stored in a global
map which is manipulated by almost regular open/close proof primitives.We make this manipulation explicit by handling the program state
functionally, in a similar way than we already do for lemmas.This requires to extend the proof DSL a bit; but IMO changes are
acceptable given the gain.Most of the PR is routine; only remarkable change is that the hook is
called explicitly infinish_admitted
as it had to learn about the
different types of proof_endings.Note that we could have gone deeper and use the type system to refine
the core proof type; IMO it is still too preliminary so it is better
to do this step as an intermediate one towards a deeper unification.Depends on the rest of proof state work, c.f. #11818
After this PR we are ready to reduce
DeclareObl
to a minimal file; likely unifying the two declaration paths.Overlays:
SkySkimmer submitted PR Review for #12354 [universes] [api] Provide UState.from_env.
SkySkimmer submitted PR Review for #12356 [declare] Remove unused parameters in prepare_obligation.
SkySkimmer assigned PR #12356 [declare] Remove unused parameters in prepare_obligation to SkySkimmer.
fajb updated PR #11906 [micromega] native support for boolean operators from bmicromega
to master
:
<!-- Thank you for your contribution.
Make sure you read the contributing guide and fill this template. -->
lia
supports boolean comparisons and operators
+ Z.{eqb, leb, ltb, geb, gtb}
+ andb, orb, implb, eqb, negb, ||zify
has been modified to work in harmony
+ZifyBool.v
injects comparison overnat
to comparisons overZ
Kind: feature
(this is a clean revival of #11047 )
- [ ] Added / updated test-suite
- [x] Corresponding documentation was added /
- [x] Entry added in the changelog
Zimmi48 opened Issue #12360 Carefully select the version to include in the Windows installer. (assigned to Zimmi48):
Before tagging and releasing 8.12+beta1 we need to select more carefully (than #12355) the version of the add-ons that will be in the installer. As often as possible, we should aim for tagged versions (releases), possibly slightly patched for compatibility.
Zimmi48 assigned Issue #12360 Carefully select the version to include in the Windows installer. (assigned to Zimmi48):
Before tagging and releasing 8.12+beta1 we need to select more carefully (than #12355) the version of the add-ons that will be in the installer. As often as possible, we should aim for tagged versions (releases), possibly slightly patched for compatibility.
Zimmi48 assigned Issue #12360 Carefully select the version to include in the Windows installer. (assigned to Zimmi48):
Before tagging and releasing 8.12+beta1 we need to select more carefully (than #12355) the version of the add-ons that will be in the installer. As often as possible, we should aim for tagged versions (releases), possibly slightly patched for compatibility.
Zimmi48 labeled Issue #12360 Carefully select the version to include in the Windows installer. (assigned to Zimmi48):
Before tagging and releasing 8.12+beta1 we need to select more carefully (than #12355) the version of the add-ons that will be in the installer. As often as possible, we should aim for tagged versions (releases), possibly slightly patched for compatibility.
Zimmi48 labeled Issue #12360 Carefully select the version to include in the Windows installer. (assigned to Zimmi48):
Before tagging and releasing 8.12+beta1 we need to select more carefully (than #12355) the version of the add-ons that will be in the installer. As often as possible, we should aim for tagged versions (releases), possibly slightly patched for compatibility.
Zimmi48 milestoned Issue #12360 Carefully select the version to include in the Windows installer. (assigned to Zimmi48):
Before tagging and releasing 8.12+beta1 we need to select more carefully (than #12355) the version of the add-ons that will be in the installer. As often as possible, we should aim for tagged versions (releases), possibly slightly patched for compatibility.
Zimmi48 submitted PR Review for #12355 [8.12] Use pinned commits in dev/ci/ci-user-overlays.sh.
Zimmi48 edited PR #12355 [8.12] Use pinned commits in dev/ci/ci-user-overlays.sh. (assigned to ejgallego) from pin-overlays
to v8.12
:
Kind: infrastructure.
While preparing this PR (by running
dev/tools/pin-ci.sh
), I have discovered that our referenced URL to coq-menhirlib (only used in the Windows build AFAIR) does not exist anymore. This likely means that the full Windows is currently failing. It looks like coq-menhirlib is now developed at https://gitlab.inria.fr/fpottier/menhir/-/tree/master/coq-menhirlib.cc @MSoegtropIMC
Zimmi48 opened Issue #12361 Multiple index keys for the same command does not work in the PDF output.
Description of the problem
In the 8.12 version of the reference manual, it is possible to have a single command that is referred to by multiple index keys (this is the case of
Definition
/Example
,Theorem
and variants,Parameter
and variants,Require
/Require Import
/Require Export
,Implicit Type
and plural form,Record
/Structure
). This works fine in the HTML output, but it doesn't in the PDF output: only the last key works, and the others are displayed with some??
showing a reference not found.See example here: https://coq.gitlab.io/-/coq/-/jobs/543104421/artifacts/_install_ci/share/doc/coq/sphinx/latex/CoqRefMan.pdf
Coq Version
v8.12 and master
cc @jfehrle who implemented this feature
Zimmi48 labeled Issue #12361 Multiple index keys for the same command does not work in the PDF output.
Description of the problem
In the 8.12 version of the reference manual, it is possible to have a single command that is referred to by multiple index keys (this is the case of
Definition
/Example
,Theorem
and variants,Parameter
and variants,Require
/Require Import
/Require Export
,Implicit Type
and plural form,Record
/Structure
). This works fine in the HTML output, but it doesn't in the PDF output: only the last key works, and the others are displayed with some??
showing a reference not found.See example here: https://coq.gitlab.io/-/coq/-/jobs/543104421/artifacts/_install_ci/share/doc/coq/sphinx/latex/CoqRefMan.pdf
Coq Version
v8.12 and master
cc @jfehrle who implemented this feature
Zimmi48 labeled Issue #12361 Multiple index keys for the same command does not work in the PDF output.
Description of the problem
In the 8.12 version of the reference manual, it is possible to have a single command that is referred to by multiple index keys (this is the case of
Definition
/Example
,Theorem
and variants,Parameter
and variants,Require
/Require Import
/Require Export
,Implicit Type
and plural form,Record
/Structure
). This works fine in the HTML output, but it doesn't in the PDF output: only the last key works, and the others are displayed with some??
showing a reference not found.See example here: https://coq.gitlab.io/-/coq/-/jobs/543104421/artifacts/_install_ci/share/doc/coq/sphinx/latex/CoqRefMan.pdf
Coq Version
v8.12 and master
cc @jfehrle who implemented this feature
Zimmi48 milestoned Issue #12361 Multiple index keys for the same command does not work in the PDF output.
Description of the problem
In the 8.12 version of the reference manual, it is possible to have a single command that is referred to by multiple index keys (this is the case of
Definition
/Example
,Theorem
and variants,Parameter
and variants,Require
/Require Import
/Require Export
,Implicit Type
and plural form,Record
/Structure
). This works fine in the HTML output, but it doesn't in the PDF output: only the last key works, and the others are displayed with some??
showing a reference not found.See example here: https://coq.gitlab.io/-/coq/-/jobs/543104421/artifacts/_install_ci/share/doc/coq/sphinx/latex/CoqRefMan.pdf
Coq Version
v8.12 and master
cc @jfehrle who implemented this feature
MSoegtropIMC submitted PR Review for #12355 [8.12] Use pinned commits in dev/ci/ci-user-overlays.sh.
Zimmi48:
Zimmi48:
Zimmi48 edited PR #12295 Fixes #12233: printing environment corrupted with eta-expansion of "match" branches (assigned to ppedrot) from master+fix12234-show-proof
to master
:
Kind: bug fix
The main fix is in
Detyping.decomp_branch
which needs a declaration to push to the environment even in the eta-expansion cases.In the process, we preserve binder annotations in detyping (maybe not so useful, but morally better, for instance for funind).
Note: we left an horrible hack in the case of LetIn expansion. This is supposed to disappear with #9710.
Fixes / closes #12233
- [X] Added / updated test-suite
- [x] Entry added in the changelog
Zimmi48 edited PR Review Comment on #12358 [topfmt] Set formatter + flush fix.
Zimmi48 submitted PR Review for #12358 [topfmt] Set formatter + flush fix.
Zimmi48 created PR Review Comment on #12358 [topfmt] Set formatter + flush fix:
@JasonGross I've slightly amended your suggestion because the way to refer to commands is through
:cmd:
, not:cmdv:
(the latter does not exist).
Zimmi48 updated PR #12342 Direct URL for triggering a pipeline with SKIP_DOCKER=false. (assigned to SkySkimmer) from doc-trigger-pipeline
to master
:
<!-- Thank you for your contribution.
Make sure you read the contributing guide and fill this template. --><!-- Keep what applies -->
Kind: documentation
Zimmi48 updated PR #12342 Direct URL for triggering a pipeline with SKIP_DOCKER=false. (assigned to SkySkimmer) from doc-trigger-pipeline
to master
:
<!-- Thank you for your contribution.
Make sure you read the contributing guide and fill this template. --><!-- Keep what applies -->
Kind: documentation
Zimmi48 updated PR #12342 Direct URL for triggering a pipeline with SKIP_DOCKER=false. (assigned to SkySkimmer) from doc-trigger-pipeline
to master
:
<!-- Thank you for your contribution.
Make sure you read the contributing guide and fill this template. --><!-- Keep what applies -->
Kind: documentation
cpitclaudel submitted PR Review for #12224 Support :gdef:text<term>
syntax (adding "<term>")
cpitclaudel pushed 4 commits to branch master. Commits by Zimmi48 (2), cpitclaudel (1) and jfehrle (1).
text <term>
syntax (adding "<term>") (ae208f0)text<term>
syntax (adding "<term>") (ed0f2f0)cpitclaudel closed Issue #11936 Coq refman search does not work (assigned to Zimmi48):
<!-- Thank you for reporting a bug to Coq! -->
Description of the problem
If you go to https://coq.github.io/doc/master/refman/, search doesn't work. The javascript console says
Stemmer
is not defined, which lead me to https://github.com/sphinx-doc/sphinx/issues/5460. It's possible the refman needs to be regenerated with a fixed version of Sphinx.Coq Version
8.12+alpha
cpitclaudel merged PR #12224 Support :gdef:text<term>
syntax (adding "<term>")
gares milestoned Issue #12349 Allow dependent products in canonical instances.
This removes the restriction to non-dependent products. Dependent and non-dependent products are handled the same way.
The code is arguably simpler than before and also more powerful. I have some use cases in mind but they would probably only work with Unicoq so I can't provide a very compelling example here. In any case, @gares and @mattam82 seemed to agree that this could be a worthwhile change, and, based on what @ggonthier's wrote in https://github.com/coq/coq/issues/11189#issuecomment-558673619, it seems that removing the dependency check could be the right thing to do even without any use cases where the function type actually is dependent (as opposed to just appearing dependent during unification).
This needs benchmarking since it might well be slower for non-dependent functions than the original code.
I'll add documentation after #12329 is merged since that PR contains new documentation for canonical structures.
<!-- Thank you for your contribution.
Make sure you read the contributing guide and fill this template. --><!-- Keep what applies -->
Kind: feature.<!-- If there is a user-visible change in coqc/coqtop/coqchk/coq_makefile behavior and testing is not prohibitively expensive: -->
<!-- (Otherwise, remove this line.) -->
[X] Added / updated test-suite
<!-- If this is a feature pull request / breaks compatibility: -->
<!-- (Otherwise, remove these lines.) -->[ ] Corresponding documentation was added / updated (including any warning and error messages added / removed / modified).
- [ ] Entry added in the changelog (see https://github.com/coq/coq/tree/master/doc/changelog#unreleased-changelog for details).
ejgallego updated PR #12357 [declare] Remove some unused fix_exn
from proof+no_fix_exn
to master
:
In the current proof save path, the kernel can raise an exception when
checking a proof wrapped into a future.However, in this case, the future itself will "fix" the produced
exception, with the mandatory handler set at the future's creation
time.Thus, there is no need for the declare layer to mess with exceptions
anymore, if my logic is correct. Note that thefix_exn
parameter to
theDeclare
API was not used anymore.This undoes 77cf18eb844b45776b2ec67be9f71e8dd4ca002c which comes from
pre-github times, so unfortunately I didn't have access to the
discussion.This needs some manual testing.
ejgallego submitted PR Review for #12358 [topfmt] Set formatter + flush fix.
ejgallego created PR Review Comment on #12358 [topfmt] Set formatter + flush fix:
Done thanks.
Zimmi48 milestoned Issue #12362 Use dev version for opam git pinning in .gitlab-ci.yml.
The main reason for this change is to reduce the number of places where the Coq version is hardcoded.
But moreover, I don't see why that wouldn't work since
dev
is precisely the version that is defined in the opam files.
Zimmi48 opened PR #12362 Use dev version for opam git pinning in .gitlab-ci.yml. from gitlab-opam-dev
to master
:
The main reason for this change is to reduce the number of places where the Coq version is hardcoded.
But moreover, I don't see why that wouldn't work since
dev
is precisely the version that is defined in the opam files.
Zimmi48 requested ci-maintainers for a review on PR #12362 Use dev version for opam git pinning in .gitlab-ci.yml..
Zimmi48 milestoned Issue #12363 Tweak the OCaml version used to generate the MacOS package.
(cherry picked from commit 45432df10d92b090fe3aaa3cc2f99c006fe621a6)
cf. #12310
Zimmi48 opened PR #12363 Tweak the OCaml version used to generate the MacOS package. from macos-binary-8.12
to v8.12
:
(cherry picked from commit 45432df10d92b090fe3aaa3cc2f99c006fe621a6)
cf. #12310
Zimmi48 requested ci-maintainers for a review on PR #12363 Tweak the OCaml version used to generate the MacOS package..
ejgallego updated PR #12358 [topfmt] Set formatter + flush fix from redirect_printing_params
to master
:
Closes #12351.
We set the parameters of the redirect formatter to be same than the
ones in stdout.I guess the original semantics was to ignore the parameters, so I'm
unsure we want to do this.While we are a it, we include a fix on the formatter, which _must_ be
flushed before closing its associated channel.
ejgallego requested erikmd and ci-maintainers for a review on PR #12362 Use dev version for opam git pinning in .gitlab-ci.yml..
ejgallego opened PR #12364 [ci] [docker] Bump ocamlformat and dune from ci+bump_deps
to master
:
cc: #12350
ejgallego requested ci-maintainers for a review on PR #12364 [ci] [docker] Bump ocamlformat and dune.
ejgallego updated PR #12364 [ci] [docker] Bump ocamlformat and dune from ci+bump_deps
to master
:
cc: #12350
gasparattila opened Issue #12365 "exists a, b" can fail even if "exists a; exists b" succeeds:
<!-- Thank you for reporting a bug to Coq! -->
Description of the problem
<!-- If you can, it's helpful to provide self-contained example of some code
that reproduces the bug. If not, a link to a larger example is also helpful. -->Parameter a b : nat. Parameter p : a = b. Goal exists (_ : True) (_ : exists x, x = b), True. Proof. Fail exists I, (ex_intro _ a p). exists I; exists (ex_intro _ a p).
The failure is caused by the evar constraints from
ex_intro _ a p
being present whenI
is used. These constraints cannot be solved by unification without additional information from the goal.Coq Version
8.11.0
<!-- You can get this information by runningcoqtop -v
. If relevant, please
also include your operating system. -->
SkySkimmer labeled Issue #12365 "exists a, b" can fail even if "exists a; exists b" succeeds:
<!-- Thank you for reporting a bug to Coq! -->
Description of the problem
<!-- If you can, it's helpful to provide self-contained example of some code
that reproduces the bug. If not, a link to a larger example is also helpful. -->Parameter a b : nat. Parameter p : a = b. Goal exists (_ : True) (_ : exists x, x = b), True. Proof. Fail exists I, (ex_intro _ a p). exists I; exists (ex_intro _ a p).
The failure is caused by the evar constraints from
ex_intro _ a p
being present whenI
is used. These constraints cannot be solved by unification without additional information from the goal.Coq Version
8.11.0
<!-- You can get this information by runningcoqtop -v
. If relevant, please
also include your operating system. -->
ejgallego updated PR #12358 [topfmt] Set formatter + flush fix from redirect_printing_params
to master
:
Closes #12351.
We set the parameters of the redirect formatter to be same than the
ones in stdout.I guess the original semantics was to ignore the parameters, so I'm
unsure we want to do this.While we are a it, we include a fix on the formatter, which _must_ be
flushed before closing its associated channel.
ejgallego:
JasonGross submitted PR Review for #12358 [topfmt] Set formatter + flush fix.
ejgallego updated PR #12358 [topfmt] Set formatter + flush fix from redirect_printing_params
to master
:
Closes #12351.
We set the parameters of the redirect formatter to be same than the
ones in stdout.I guess the original semantics was to ignore the parameters, so I'm
unsure we want to do this.While we are a it, we include a fix on the formatter, which _must_ be
flushed before closing its associated channel.
gasparattila opened PR #12366 Delay evaluating arguments of the "exists" tactic from fix-exists
to master
:
<!-- Thank you for your contribution.
Make sure you read the contributing guide and fill this template. --><!-- Keep what applies -->
Kind: bug fix<!-- If this is a bug fix, make sure the bug was reported beforehand. -->
Fixes / closes #12365<!-- If there is a user-visible change in coqc/coqtop/coqchk/coq_makefile behavior and testing is not prohibitively expensive: -->
<!-- (Otherwise, remove this line.) -->
[x] Added / updated test-suite
<!-- If this is a feature pull request / breaks compatibility: -->
<!-- (Otherwise, remove these lines.) -->[ ] Entry added in the changelog (see https://github.com/coq/coq/tree/master/doc/changelog#unreleased-changelog for details).
gasparattila requested ltac-maintainers for a review on PR #12366 Delay evaluating arguments of the "exists" tactic.
ejgallego assigned [PR #12363 Tweak the OCaml version used to generate the MacOS package.](https://github.com/coq/coq/pull/12363 to ejgallego.
cpitclaudel labeled Issue #12367 Could we make coq-ltac2 a dummy package in 8.11 instead of requiring Coq < 8.11?
Description of the problem
I'm trying to support 8.9 through 8.11 in the same project. I use Ltac2, so I have a dependency on the coq-ltac2 package. But currently that package requires Coq < 8.11.
Could the coq-ltac2 be marked as compatible with 8.11 and made to install a dummy package there? Or is there a simpler solution that I overlooked?
cc @ppedrot
cpitclaudel opened Issue #12367 Could we make coq-ltac2 a dummy package in 8.11 instead of requiring Coq < 8.11?
Description of the problem
I'm trying to support 8.9 through 8.11 in the same project. I use Ltac2, so I have a dependency on the coq-ltac2 package. But currently that package requires Coq < 8.11.
Could the coq-ltac2 be marked as compatible with 8.11 and made to install a dummy package there? Or is there a simpler solution that I overlooked?
cc @ppedrot
JasonGross updated PR #12359 [ci] Add mit-plv/engine-bench from add-engine-bench
to master
:
This is a new development where I'm aggregating a specific set of
benchmarks. It's intended to be relatively lightweight, taking only a
handful of minutes (I can make the CI target much, much lighter if
desired). It's probably one of the few developments currently testing
Ltac2.Kind: infrastructure
fajb requested pi8027, maximedenes, doc-maintainers and stdlib-maintainers for a review on PR #11906 [micromega] native support for boolean operators.
gasparattila updated PR #12366 Delay evaluating arguments of the "exists" tactic from fix-exists
to master
:
<!-- Thank you for your contribution.
Make sure you read the contributing guide and fill this template. --><!-- Keep what applies -->
Kind: bug fix<!-- If this is a bug fix, make sure the bug was reported beforehand. -->
Fixes / closes #12365<!-- If there is a user-visible change in coqc/coqtop/coqchk/coq_makefile behavior and testing is not prohibitively expensive: -->
<!-- (Otherwise, remove this line.) -->
[x] Added / updated test-suite
<!-- If this is a feature pull request / breaks compatibility: -->
<!-- (Otherwise, remove these lines.) -->[ ] Entry added in the changelog (see https://github.com/coq/coq/tree/master/doc/changelog#unreleased-changelog for details).
JasonGross updated PR #12316 Use pagination in fetching the number of reviews (assigned to Zimmi48) from fix-12300
to master
:
Fixes #12300
Note that I currently only paginate the API call for the number of
reviews, not the main API call, because (a) the main API call doesn't
seem subject to pagination (it returns a dict, not an array), and (b)
because fetching the total number of pages incurs an extra API call for
each one that we want to paginate, even if there is only one page. We
could work around (b) with a significantly more complicated
curl_paginate
function which heuristically recognizes the end of the
header/beginning of the body, such ascurl_paginate() { # as per https://developer.github.com/v3/guides/traversing-with-pagination/#changing-the-number-of-items-received, GitHub will never give us more than 100 url="$1?per_page=100" # We need to process the header to get the pagination. We have two # options: # # 1. We can make an extra API call at the beginning to get the total # number of pages, search for a rel="last" link, and then loop # over all the pages. # # 2. We can ask for the header info with every single curl request, # search for a rel="next" link to follow to the next page, and # then parse out the body from the header. # # Although (1) is simpler, we choose to do (2) to save an extra API # call per invocation of curl. while [ ! -z "${url}" ]; do response="$(curl -si "${url}")" # we search for something like 'link: <https://api.github.com/repositories/1377159/pulls/12129/reviews?page=2>; rel="next", <https://api.github.com/repositories/1377159/pulls/12129/reviews?page=2>; rel="last"' and take the first 'next' url url="$(echo "${response}" | grep -m 1 -io '^link: .*>; rel="next"' | grep -o '<[^>]*>; rel="next"' | grep -o '<[^>]*>' | sed s'/[<>]//g')" echo "${response}" | { is_header="yes" while read line; do if [ "${is_header}" == "yes" ]; then if echo "${line}" | grep -q '^\s*[\[{]'; then # we treat lines beginning with [ or { as the beginning of the response body is_header="no" echo "${line}" fi else echo "${line}" fi done } done }
Kind: bug fix / infrastructure.
- [ ] Entry added in the changelog (see https://github.com/coq/coq/tree/master/doc/changelog#unreleased-changelog for details). (does this need a changelog entry?)
erikmd submitted PR Review for #12362 Use dev version for opam git pinning in .gitlab-ci.yml.
erikmd submitted PR Review for #12362 Use dev version for opam git pinning in .gitlab-ci.yml.
SkySkimmer submitted PR Review for #12316 Use pagination in fetching the number of reviews.
SkySkimmer created PR Review Comment on #12316 Use pagination in fetching the number of reviews:
if [ "$(jq 'length' <<< "$response")" -lt 100 ]; then # done
skips a fetch most of the time
and no need for {} here while we're at it
SkySkimmer submitted PR Review for #12316 Use pagination in fetching the number of reviews.
SkySkimmer created PR Review Comment on #12316 Use pagination in fetching the number of reviews:
page=$(($page + 1))
some spacing shouldn't hurt
SkySkimmer created PR Review Comment on #12316 Use pagination in fetching the number of reviews:
# we keep fetching pages until the response is below the per-page limit (possibly 0 elements)
We don't care about alternatives we don't use here.
SkySkimmer created PR Review Comment on #12316 Use pagination in fetching the number of reviews:
Not needed AFAICT
Zimmi48 assigned PR #12316 Use pagination in fetching the number of reviews to SkySkimmer.
Zimmi48 unassigned PR #12316 Use pagination in fetching the number of reviews to SkySkimmer.
ejgallego updated PR #12357 [declare] Remove some unused fix_exn
from proof+no_fix_exn
to master
:
In the current proof save path, the kernel can raise an exception when
checking a proof wrapped into a future.However, in this case, the future itself will "fix" the produced
exception, with the mandatory handler set at the future's creation
time.Thus, there is no need for the declare layer to mess with exceptions
anymore, if my logic is correct. Note that thefix_exn
parameter to
theDeclare
API was not used anymore.This undoes 77cf18eb844b45776b2ec67be9f71e8dd4ca002c which comes from
pre-github times, so unfortunately I didn't have access to the
discussion.This needs some manual testing.
ejgallego edited PR #12357 [declare] Remove some unused fix_exn
from proof+no_fix_exn
to master
:
In the current proof save path, the kernel can raise an exception when
checking a proof wrapped into a future.However, in this case, the future itself will "fix" the produced
exception, with the mandatory handler set at the future's creation
time.Thus, there is no need for the declare layer to mess with exceptions
anymore, if my logic is correct. Note that thefix_exn
parameter to
theDeclare
API was not used anymore.This undoes 77cf18eb844b45776b2ec67be9f71e8dd4ca002c which comes from
pre-github times, so unfortunately I didn't have access to the
discussion.We need to be careful in
perform_buildp
as to catch theQed
error
and properly notify the STM about it withState.exn_on
; this was
previously done by the declare layer using a hack [grabbing internal
state of the future, that the future itself was not using as it was
already forced], but we now do it in the caller in a more principled
way.This has been tested in the case that tactics succeed but Qed fails
asynchronously.
JasonGross submitted PR Review for #12316 Use pagination in fetching the number of reviews.
JasonGross created PR Review Comment on #12316 Use pagination in fetching the number of reviews:
This is actually already required in master without being checked for https://github.com/coq/coq/blob/ed0f2f08e31ee4e645aa6e52970ddefc60f1f4f9/dev/tools/merge-pr.sh#L107
JasonGross updated PR #12316 Use pagination in fetching the number of reviews (assigned to SkySkimmer) from fix-12300
to master
:
Fixes #12300
Note that I currently only paginate the API call for the number of
reviews, not the main API call, because (a) the main API call doesn't
seem subject to pagination (it returns a dict, not an array), and (b)
because fetching the total number of pages incurs an extra API call for
each one that we want to paginate, even if there is only one page. We
could work around (b) with a significantly more complicated
curl_paginate
function which heuristically recognizes the end of the
header/beginning of the body, such ascurl_paginate() { # as per https://developer.github.com/v3/guides/traversing-with-pagination/#changing-the-number-of-items-received, GitHub will never give us more than 100 url="$1?per_page=100" # We need to process the header to get the pagination. We have two # options: # # 1. We can make an extra API call at the beginning to get the total # number of pages, search for a rel="last" link, and then loop # over all the pages. # # 2. We can ask for the header info with every single curl request, # search for a rel="next" link to follow to the next page, and # then parse out the body from the header. # # Although (1) is simpler, we choose to do (2) to save an extra API # call per invocation of curl. while [ ! -z "${url}" ]; do response="$(curl -si "${url}")" # we search for something like 'link: <https://api.github.com/repositories/1377159/pulls/12129/reviews?page=2>; rel="next", <https://api.github.com/repositories/1377159/pulls/12129/reviews?page=2>; rel="last"' and take the first 'next' url url="$(echo "${response}" | grep -m 1 -io '^link: .*>; rel="next"' | grep -o '<[^>]*>; rel="next"' | grep -o '<[^>]*>' | sed s'/[<>]//g')" echo "${response}" | { is_header="yes" while read line; do if [ "${is_header}" == "yes" ]; then if echo "${line}" | grep -q '^\s*[\[{]'; then # we treat lines beginning with [ or { as the beginning of the response body is_header="no" echo "${line}" fi else echo "${line}" fi done } done }
Kind: bug fix / infrastructure.
- [ ] Entry added in the changelog (see https://github.com/coq/coq/tree/master/doc/changelog#unreleased-changelog for details). (does this need a changelog entry?)
gasparattila edited PR #12366 Delay evaluating arguments of the "exists" tactic from fix-exists
to master
:
<!-- Thank you for your contribution.
Make sure you read the contributing guide and fill this template. --><!-- Keep what applies -->
Kind: bug fix<!-- If this is a bug fix, make sure the bug was reported beforehand. -->
Fixes / closes #12365<!-- If there is a user-visible change in coqc/coqtop/coqchk/coq_makefile behavior and testing is not prohibitively expensive: -->
<!-- (Otherwise, remove this line.) -->
[x] Added / updated test-suite
<!-- If this is a feature pull request / breaks compatibility: -->
<!-- (Otherwise, remove these lines.) -->[x] Entry added in the changelog (see https://github.com/coq/coq/tree/master/doc/changelog#unreleased-changelog for details).
ejgallego assigned [PR #12362 Use dev version for opam git pinning in .gitlab-ci.yml.](https://github.com/coq/coq/pull/12362 to ejgallego.
ppedrot submitted PR Review for #12354 [universes] [api] Provide UState.from_env.
ppedrot submitted PR Review for #12366 Delay evaluating arguments of the "exists" tactic.
ppedrot created PR Review Comment on #12366 Delay evaluating arguments of the "exists" tactic:
You should probably move this definition to
tactics.ml
. It is not recommended to have code in mlg, despite the current situation.
JasonGross opened PR #12368 Print a newline at the end of timing tables from fix-missing-newline-time-file-maker
to master
:
This, for example, improves the CI display, so that
$ echo 'end:coq.test'
does not appear on the same line as the end of the
timing table.Kind: bug fix
- [x] Added / updated test-suite
- [ ] Entry added in the changelog (see https://github.com/coq/coq/tree/master/doc/changelog#unreleased-changelog for details).
JasonGross milestoned Issue #12368 Print a newline at the end of timing tables:
This, for example, improves the CI display, so that
$ echo 'end:coq.test'
does not appear on the same line as the end of the
timing table.Kind: bug fix
- [x] Added / updated test-suite
- [ ] Entry added in the changelog (see https://github.com/coq/coq/tree/master/doc/changelog#unreleased-changelog for details).
JasonGross requested coq-makefile-maintainers for a review on PR #12368 Print a newline at the end of timing tables.
JasonGross edited PR #12368 Print a newline at the end of timing tables from fix-missing-newline-time-file-maker
to master
:
This, for example, improves the CI display, so that
$ echo 'end:coq.test'
does not appear on the same line as the end of the
timing table.Kind: bug fix
- [x] Added / updated test-suite
- [x] Entry added in the changelog (see https://github.com/coq/coq/tree/master/doc/changelog#unreleased-changelog for details).
JasonGross updated PR #12368 Print a newline at the end of timing tables from fix-missing-newline-time-file-maker
to master
:
This, for example, improves the CI display, so that
$ echo 'end:coq.test'
does not appear on the same line as the end of the
timing table.Kind: bug fix
- [x] Added / updated test-suite
- [x] Entry added in the changelog (see https://github.com/coq/coq/tree/master/doc/changelog#unreleased-changelog for details).
ejgallego updated PR #12357 [declare] Remove some unused fix_exn
from proof+no_fix_exn
to master
:
In the current proof save path, the kernel can raise an exception when
checking a proof wrapped into a future.However, in this case, the future itself will "fix" the produced
exception, with the mandatory handler set at the future's creation
time.Thus, there is no need for the declare layer to mess with exceptions
anymore, if my logic is correct. Note that thefix_exn
parameter to
theDeclare
API was not used anymore.This undoes 77cf18eb844b45776b2ec67be9f71e8dd4ca002c which comes from
pre-github times, so unfortunately I didn't have access to the
discussion.We need to be careful in
perform_buildp
as to catch theQed
error
and properly notify the STM about it withState.exn_on
; this was
previously done by the declare layer using a hack [grabbing internal
state of the future, that the future itself was not using as it was
already forced], but we now do it in the caller in a more principled
way.This has been tested in the case that tactics succeed but Qed fails
asynchronously.
jfehrle opened PR #12369 Handle conversion inconsistency between html and pdf for ids= and names= from fix_pdf_names
to master
:
Fixes #12361
jfehrle milestoned Issue #12369 Handle conversion inconsistency between html and pdf for ids= and names=
Fixes #12361
gasparattila requested tactics-maintainers for a review on PR #12366 Delay evaluating arguments of the "exists" tactic.
gasparattila updated PR #12366 Delay evaluating arguments of the "exists" tactic from fix-exists
to master
:
<!-- Thank you for your contribution.
Make sure you read the contributing guide and fill this template. --><!-- Keep what applies -->
Kind: bug fix<!-- If this is a bug fix, make sure the bug was reported beforehand. -->
Fixes / closes #12365<!-- If there is a user-visible change in coqc/coqtop/coqchk/coq_makefile behavior and testing is not prohibitively expensive: -->
<!-- (Otherwise, remove this line.) -->
[x] Added / updated test-suite
<!-- If this is a feature pull request / breaks compatibility: -->
<!-- (Otherwise, remove these lines.) -->[x] Entry added in the changelog (see https://github.com/coq/coq/tree/master/doc/changelog#unreleased-changelog for details).
gasparattila submitted PR Review for #12366 Delay evaluating arguments of the "exists" tactic.
gasparattila created PR Review Comment on #12366 Delay evaluating arguments of the "exists" tactic:
Done.
cpitclaudel opened Issue #12370 Level is already declared right associative when importing a module:
Description of the problem
Notation level errors are sometimes delayed until a module is imported. For example, save this as
Vect.v
:Require Import Coq.omega.Omega. Notation "'Ob'" := 0 (at level 7). Notation "bs '~' b" := (b + bs) (at level 7, left associativity, format "bs '~' b"). Notation "bs '~' 0" := (0 + bs) (at level 7, left associativity, format "bs '~' 0"). Notation "bs '~' 1" := (1 + bs) (at level 7, left associativity, format "bs '~' 1").
Then run
coqc Vect.v
(no problem) and try to importVect
:Fail Require Import Vect. (* The command has indeed failed with message: *) (* Level 7 is already declared right associative while it is now expected to be left associative. *)
For some reason, importing
NArith
fixes the issue:Require Import Coq.omega.Omega. Require Export Coq.NArith.NArith. Notation "'Ob'" := 0 (at level 7). Notation "bs '~' b" := (b + bs) (at level 7, left associativity, format "bs '~' b"). Notation "bs '~' 0" := (0 + bs) (at level 7, left associativity, format "bs '~' 0"). Notation "bs '~' 1" := (1 + bs) (at level 7, left associativity, format "bs '~' 1").
… but not fully:
Require Import Vect
works, butRequire Import Vect Vect
still fails:Fail Require Import Vect Vect. (* The command has indeed failed with message: *) (* Level 7 is already declared right associative while it is now expected to be left associative. *) Require Import Vect.
Vect
doesn't need to be imported twice explicitly: it's enough to import it twice indirectly, by importing two files that import it.Coq Version
The Coq Proof Assistant, version 8.11.1 (May 2020)
compiled on May 19 2020 16:50:51 with OCaml 4.09.0Linux Mint 19.3 Tricia
cpitclaudel edited Issue #12370 "Level is already declared right associative" when importing a module:
Description of the problem
Notation level errors are sometimes delayed until a module is imported. For example, save this as
Vect.v
:Require Import Coq.omega.Omega. Notation "'Ob'" := 0 (at level 7). Notation "bs '~' b" := (b + bs) (at level 7, left associativity, format "bs '~' b"). Notation "bs '~' 0" := (0 + bs) (at level 7, left associativity, format "bs '~' 0"). Notation "bs '~' 1" := (1 + bs) (at level 7, left associativity, format "bs '~' 1").
Then run
coqc Vect.v
(no problem) and try to importVect
:Fail Require Import Vect. (* The command has indeed failed with message: *) (* Level 7 is already declared right associative while it is now expected to be left associative. *)
For some reason, importing
NArith
fixes the issue:Require Import Coq.omega.Omega. Require Export Coq.NArith.NArith. Notation "'Ob'" := 0 (at level 7). Notation "bs '~' b" := (b + bs) (at level 7, left associativity, format "bs '~' b"). Notation "bs '~' 0" := (0 + bs) (at level 7, left associativity, format "bs '~' 0"). Notation "bs '~' 1" := (1 + bs) (at level 7, left associativity, format "bs '~' 1").
… but not fully:
Require Import Vect
works, butRequire Import Vect Vect
still fails:Fail Require Import Vect Vect. (* The command has indeed failed with message: *) (* Level 7 is already declared right associative while it is now expected to be left associative. *) Require Import Vect.
Vect
doesn't need to be imported twice explicitly: it's enough to import it twice indirectly, by importing two files that import it.Coq Version
The Coq Proof Assistant, version 8.11.1 (May 2020)
compiled on May 19 2020 16:50:51 with OCaml 4.09.0Linux Mint 19.3 Tricia
cpitclaudel labeled Issue #12370 "Level is already declared right associative" when importing a module:
Description of the problem
Notation level errors are sometimes delayed until a module is imported. For example, save this as
Vect.v
:Require Import Coq.omega.Omega. Notation "'Ob'" := 0 (at level 7). Notation "bs '~' b" := (b + bs) (at level 7, left associativity, format "bs '~' b"). Notation "bs '~' 0" := (0 + bs) (at level 7, left associativity, format "bs '~' 0"). Notation "bs '~' 1" := (1 + bs) (at level 7, left associativity, format "bs '~' 1").
Then run
coqc Vect.v
(no problem) and try to importVect
:Fail Require Import Vect. (* The command has indeed failed with message: *) (* Level 7 is already declared right associative while it is now expected to be left associative. *)
For some reason, importing
NArith
fixes the issue:Require Import Coq.omega.Omega. Require Export Coq.NArith.NArith. Notation "'Ob'" := 0 (at level 7). Notation "bs '~' b" := (b + bs) (at level 7, left associativity, format "bs '~' b"). Notation "bs '~' 0" := (0 + bs) (at level 7, left associativity, format "bs '~' 0"). Notation "bs '~' 1" := (1 + bs) (at level 7, left associativity, format "bs '~' 1").
… but not fully:
Require Import Vect
works, butRequire Import Vect Vect
still fails:Fail Require Import Vect Vect. (* The command has indeed failed with message: *) (* Level 7 is already declared right associative while it is now expected to be left associative. *) Require Import Vect.
Vect
doesn't need to be imported twice explicitly: it's enough to import it twice indirectly, by importing two files that import it.Coq Version
The Coq Proof Assistant, version 8.11.1 (May 2020)
compiled on May 19 2020 16:50:51 with OCaml 4.09.0Linux Mint 19.3 Tricia
cpitclaudel labeled Issue #12370 "Level is already declared right associative" when importing a module:
Description of the problem
Notation level errors are sometimes delayed until a module is imported. For example, save this as
Vect.v
:Require Import Coq.omega.Omega. Notation "'Ob'" := 0 (at level 7). Notation "bs '~' b" := (b + bs) (at level 7, left associativity, format "bs '~' b"). Notation "bs '~' 0" := (0 + bs) (at level 7, left associativity, format "bs '~' 0"). Notation "bs '~' 1" := (1 + bs) (at level 7, left associativity, format "bs '~' 1").
Then run
coqc Vect.v
(no problem) and try to importVect
:Fail Require Import Vect. (* The command has indeed failed with message: *) (* Level 7 is already declared right associative while it is now expected to be left associative. *)
For some reason, importing
NArith
fixes the issue:Require Import Coq.omega.Omega. Require Export Coq.NArith.NArith. Notation "'Ob'" := 0 (at level 7). Notation "bs '~' b" := (b + bs) (at level 7, left associativity, format "bs '~' b"). Notation "bs '~' 0" := (0 + bs) (at level 7, left associativity, format "bs '~' 0"). Notation "bs '~' 1" := (1 + bs) (at level 7, left associativity, format "bs '~' 1").
… but not fully:
Require Import Vect
works, butRequire Import Vect Vect
still fails:Fail Require Import Vect Vect. (* The command has indeed failed with message: *) (* Level 7 is already declared right associative while it is now expected to be left associative. *) Require Import Vect.
Vect
doesn't need to be imported twice explicitly: it's enough to import it twice indirectly, by importing two files that import it.Coq Version
The Coq Proof Assistant, version 8.11.1 (May 2020)
compiled on May 19 2020 16:50:51 with OCaml 4.09.0Linux Mint 19.3 Tricia
Zimmi48 updated PR #12355 [8.12] Use pinned commits in dev/ci/ci-user-overlays.sh. (assigned to ejgallego) from pin-overlays
to v8.12
:
Kind: infrastructure.
While preparing this PR (by running
dev/tools/pin-ci.sh
), I have discovered that our referenced URL to coq-menhirlib (only used in the Windows build AFAIR) does not exist anymore. This likely means that the full Windows is currently failing. It looks like coq-menhirlib is now developed at https://gitlab.inria.fr/fpottier/menhir/-/tree/master/coq-menhirlib.cc @MSoegtropIMC
erikmd submitted PR Review for #12362 Use dev version for opam git pinning in .gitlab-ci.yml.
ejgallego submitted PR Review for #12362 Use dev version for opam git pinning in .gitlab-ci.yml.
ejgallego opened PR #12371 [obligations] Minor refactoring from obligations+more_ref
to master
:
Minors bits here and there, mostly self-explanatory.
ejgallego requested vernac-maintainers for a review on PR #12371 [obligations] Minor refactoring.
ejgallego milestoned Issue #12371 [obligations] Minor refactoring:
Minors bits here and there, mostly self-explanatory.
ejgallego pushed 2 commits to branch master. Commits by Zimmi48 (1) and ejgallego (1).
ejgallego merged PR #12362 Use dev version for opam git pinning in .gitlab-ci.yml.
ejgallego opened PR #12372 [declare] Refactor constant information into a record. from proof+info
to master
:
This improves the interface, and allows even more sealing of the API.
This is yet work in progress.
ejgallego updated PR #12372 [declare] Refactor constant information into a record. from proof+info
to master
:
This improves the interface, and allows even more sealing of the API.
This is yet work in progress.
ejgallego updated PR #12372 [declare] Refactor constant information into a record. from proof+info
to master
:
This improves the interface, and allows even more sealing of the API.
This is yet work in progress.
ejgallego updated PR #12372 [declare] Refactor constant information into a record. from proof+info
to master
:
This improves the interface, and allows even more sealing of the API.
This is yet work in progress.
pi8027 submitted PR Review for #11906 [micromega] native support for boolean operators.
pi8027 submitted PR Review for #11906 [micromega] native support for boolean operators.
pi8027 created PR Review Comment on #11906 [micromega] native support for boolean operators:
Shouldn't this deprecation of
Add Spec
be documented in CHANGELOG?
pi8027 created PR Review Comment on #11906 [micromega] native support for boolean operators:
Does
TBOpInj := fun _ _ => eq_refl
make this more robust?
pi8027 created PR Review Comment on #11906 [micromega] native support for boolean operators:
I think this change should be reverted.
pi8027 created PR Review Comment on #11906 [micromega] native support for boolean operators:
Same as above.
cpitclaudel opened Issue #12373 Documentation request for printing levels and associativity:
Description of the problem
The following code (example by @kyoDralliam) creates two notations at the same level, with left associativity. The second one fails, complaining that level 8 is right associative. I couldn't find documentation about this in the manual:
Notation "'A' x 'A'" := (x + x) (at level 8, left associativity). Fail Notation "'B' x" := (x + x) (at level 8, left associativity).
After processing the first notation,
Print Grammar Constr
shows this:| "8" RIGHTA [ "A"; constr:operconstr LEVEL "200"; "A" ]
So presumably the first notation should have failed? Relatedly,
Print Grammar Constr
show this for level 9:| "9" LEFTA [ ".."; constr:operconstr LEVEL "0"; ".." ]
Yet
Notation "'A' x" := (x + x) (at level 9, left associativity).
fails, complaining that level 9 is right-associative. What do LEFTA and RIGHTA mean, and why does the previous example fail?Thanks!
Coq Version
The Coq Proof Assistant, version 8.11.1 (May 2020)
compiled on May 19 2020 16:50:51 with OCaml 4.09.0
cpitclaudel labeled Issue #12373 Documentation request for printing levels and associativity:
Description of the problem
The following code (example by @kyoDralliam) creates two notations at the same level, with left associativity. The second one fails, complaining that level 8 is right associative. I couldn't find documentation about this in the manual:
Notation "'A' x 'A'" := (x + x) (at level 8, left associativity). Fail Notation "'B' x" := (x + x) (at level 8, left associativity).
After processing the first notation,
Print Grammar Constr
shows this:| "8" RIGHTA [ "A"; constr:operconstr LEVEL "200"; "A" ]
So presumably the first notation should have failed? Relatedly,
Print Grammar Constr
show this for level 9:| "9" LEFTA [ ".."; constr:operconstr LEVEL "0"; ".." ]
Yet
Notation "'A' x" := (x + x) (at level 9, left associativity).
fails, complaining that level 9 is right-associative. What do LEFTA and RIGHTA mean, and why does the previous example fail?Thanks!
Coq Version
The Coq Proof Assistant, version 8.11.1 (May 2020)
compiled on May 19 2020 16:50:51 with OCaml 4.09.0
cpitclaudel labeled Issue #12373 Documentation request for printing levels and associativity:
Description of the problem
The following code (example by @kyoDralliam) creates two notations at the same level, with left associativity. The second one fails, complaining that level 8 is right associative. I couldn't find documentation about this in the manual:
Notation "'A' x 'A'" := (x + x) (at level 8, left associativity). Fail Notation "'B' x" := (x + x) (at level 8, left associativity).
After processing the first notation,
Print Grammar Constr
shows this:| "8" RIGHTA [ "A"; constr:operconstr LEVEL "200"; "A" ]
So presumably the first notation should have failed? Relatedly,
Print Grammar Constr
show this for level 9:| "9" LEFTA [ ".."; constr:operconstr LEVEL "0"; ".." ]
Yet
Notation "'A' x" := (x + x) (at level 9, left associativity).
fails, complaining that level 9 is right-associative. What do LEFTA and RIGHTA mean, and why does the previous example fail?Thanks!
Coq Version
The Coq Proof Assistant, version 8.11.1 (May 2020)
compiled on May 19 2020 16:50:51 with OCaml 4.09.0
cpitclaudel labeled Issue #12373 Documentation request for printing levels and associativity:
Description of the problem
The following code (example by @kyoDralliam) creates two notations at the same level, with left associativity. The second one fails, complaining that level 8 is right associative. I couldn't find documentation about this in the manual:
Notation "'A' x 'A'" := (x + x) (at level 8, left associativity). Fail Notation "'B' x" := (x + x) (at level 8, left associativity).
After processing the first notation,
Print Grammar Constr
shows this:| "8" RIGHTA [ "A"; constr:operconstr LEVEL "200"; "A" ]
So presumably the first notation should have failed? Relatedly,
Print Grammar Constr
show this for level 9:| "9" LEFTA [ ".."; constr:operconstr LEVEL "0"; ".." ]
Yet
Notation "'A' x" := (x + x) (at level 9, left associativity).
fails, complaining that level 9 is right-associative. What do LEFTA and RIGHTA mean, and why does the previous example fail?Thanks!
Coq Version
The Coq Proof Assistant, version 8.11.1 (May 2020)
compiled on May 19 2020 16:50:51 with OCaml 4.09.0
pi8027 submitted PR Review for #11906 [micromega] native support for boolean operators.
pi8027 created PR Review Comment on #11906 [micromega] native support for boolean operators:
Actually
micromega.rst
has not been updated accordingly.
jfehrle updated PR #12369 Handle conversion inconsistency between html and pdf for ids= and names= from fix_pdf_names
to master
:
Fixes #12361
lthms opened Issue #12374 [extraction] Allow to customize primitive integers init function:
<!-- Thank you for reporting a bug to Coq! -->
Description of the problem
Currently, when one uses primitive integers and extraction, they has to provide a
Uint63
module with at least aof_int
function. Neither this function name nor the module name is customizable.Coq Version
Relevant for any version of Coq with native integers support.
lthms edited Issue #12374 [extraction] Allow to customize primitive integers init function:
<!-- Thank you for reporting a bug to Coq! -->
Description of the problem
Currently, when one uses primitive integers and extraction, they has to provide a
Uint63
module with at least aof_int
function. Neither this function name nor the module name is customizable.The string in currently hard-coded in
Uint63.compile
; I believe it would be a good idea to provide two options (one for the module name, one for the function name).Coq Version
Relevant for any version of Coq with native integers support.
Zimmi48 edited PR #12363 [8.12] Tweak the OCaml version used to generate the MacOS package. (assigned to ejgallego) from macos-binary-8.12
to v8.12
:
(cherry picked from commit 45432df10d92b090fe3aaa3cc2f99c006fe621a6)
cf. #12310
ejgallego:
Zimmi48 updated PR #12355 [8.12] Use pinned commits in dev/ci/ci-user-overlays.sh. (assigned to ejgallego) from pin-overlays
to v8.12
:
Kind: infrastructure.
While preparing this PR (by running
dev/tools/pin-ci.sh
), I have discovered that our referenced URL to coq-menhirlib (only used in the Windows build AFAIR) does not exist anymore. This likely means that the full Windows is currently failing. It looks like coq-menhirlib is now developed at https://gitlab.inria.fr/fpottier/menhir/-/tree/master/coq-menhirlib.cc @MSoegtropIMC
Zimmi48 opened Issue #12375 Not the right version of Elpi in nixpkgs:
I tried using
dev/ci/nix/shell Elpi
but I got Elpi 1.10 whereas 1.11 is required. Elpi has not been updated yet on nixpkgs. I tried a naive patch but it didn't work:diff --git a/pkgs/development/ocaml-modules/elpi/default.nix b/pkgs/development/ocaml-modules/elpi/default.nix index 1c71f7fceb7..3a87caa36f2 100644 --- a/pkgs/development/ocaml-modules/elpi/default.nix +++ b/pkgs/development/ocaml-modules/elpi/default.nix @@ -1,20 +1,20 @@ -{ lib, fetchFromGitHub, buildDunePackage, camlp5 +{ lib, fetchzip, buildDunePackage, camlp5 , ppx_tools_versioned, ppx_deriving, re }: buildDunePackage rec { pname = "elpi"; - version = "1.10.2"; + version = "1.11.2"; - src = fetchFromGitHub { - owner = "LPCIC"; - repo = "elpi"; - rev = "v${version}"; - sha256 = "0w5z0pxyshqawq7w5rw3nqii49y88rizvwqf202pl11xqi14icsn"; + src = fetchzip { + url = "https://github.com/LPCIC/elpi/releases/download/v${version}/elpi-v${version}.tbz"; + sha256 = "15hamy9ifr05kczadwh3yj2gmr12a9z1jwppmp5yrns0vykjbj76"; }; minimumOCamlVersion = "4.04"; + useDune2 = true; + buildInputs = [ ppx_tools_versioned ]; propagatedBuildInputs = [ camlp5 ppx_deriving re ];
The error is:
builder for '/nix/store/pn9lfynrhjy8zx417njmsp63gpichzzc-ocaml4.09.1-elpi-1.11.0.drv' failed with exit code 1; last 10 log lines: (cd _build/default && /nix/store/s37qwaqzi246z8fl3jpv016j8dzfwmig-ocaml-4.09.1/bin/ocamlc.opt -linkall -g -bin-annot -I src/.elpi.objs/byte -I src/.elpi.objs/public_cmi -I /nix/store/0x5vdncjs78xihrjq64s52nsq47m3m9y-ocaml4.09.1-seq-0.1/lib/ocaml/4.09.1/site-lib/seq -I /nix/store/3f6xxwh0gsmqnkfcakkb1qfavcagcbah-ocaml4.09.1-result-1.2/lib/ocaml/4.09.1/site-lib/result -I /nix/store/93jg6hkvpkmbc0mihi0wb9qjpwp62fkj-camlp5-7.11/lib/ocaml/4.09.1/site-lib/camlp5 -I /nix/store/d81rk58irb3q08q5hh02jl215p73vbbi-ocaml4.09.1-ppx_deriving-4.4.1/lib/ocaml/4.09.1/site-lib/ppx_deriving/runtime -I /nix/store/k318j0m9r84y31kkg5cckkk447qh2zij-ocaml4.09.1-re-1.9.0/lib/ocaml/4.09.1/site-lib/re -I /nix/store/k318j0m9r84y31kkg5cckkk447qh2zij-ocaml4.09.1-re-1.9.0/lib/ocaml/4.09.1/site-lib/re/str -I trace/runtime/.trace_ppx_runtime.objs/byte -I trace/runtime/.trace_ppx_runtime.objs/native -no-alias-deps -open Elpi__ -o src/.elpi.objs/byte/elpi__Runtime_trace_off.cmi -c -intf src/runtime_trace_off.pp.mli) File "src/runtime_trace_off.mli", line 6, characters 12-18: Error: Unbound type constructor pp_ctx ocamlc src/.elpi.objs/byte/elpi__Builtin.{cmi,cmti} (exit 2) (cd _build/default && /nix/store/s37qwaqzi246z8fl3jpv016j8dzfwmig-ocaml-4.09.1/bin/ocamlc.opt -linkall -g -bin-annot -I src/.elpi.objs/byte -I src/.elpi.objs/public_cmi -I /nix/store/0x5vdncjs78xihrjq64s52nsq47m3m9y-ocaml4.09.1-seq-0.1/lib/ocaml/4.09.1/site-lib/seq -I /nix/store/3f6xxwh0gsmqnkfcakkb1qfavcagcbah-ocaml4.09.1-result-1.2/lib/ocaml/4.09.1/site-lib/result -I /nix/store/93jg6hkvpkmbc0mihi0wb9qjpwp62fkj-camlp5-7.11/lib/ocaml/4.09.1/site-lib/camlp5 -I /nix/store/d81rk58irb3q08q5hh02jl215p73vbbi-ocaml4.09.1-ppx_deriving-4.4.1/lib/ocaml/4.09.1/site-lib/ppx_deriving/runtime -I /nix/store/k318j0m9r84y31kkg5cckkk447qh2zij-ocaml4.09.1-re-1.9.0/lib/ocaml/4.09.1/site-lib/re -I /nix/store/k318j0m9r84y31kkg5cckkk447qh2zij-ocaml4.09.1-re-1.9.0/lib/ocaml/4.09.1/site-lib/re/str -I trace/runtime/.trace_ppx_runtime.objs/byte -I trace/runtime/.trace_ppx_runtime.objs/native -no-alias-deps -open Elpi__ -o src/.elpi.objs/byte/elpi__Builtin.cmi -c -intf src/builtin.mli) File "src/builtin.mli", line 7, characters 5-16: 7 | open API.BuiltIn ^^^^^^^^^^^ Error: Unbound module API.BuiltIn
cc @vbgl and @gares
Zimmi48 labeled Issue #12375 Not the right version of Elpi in nixpkgs:
I tried using
dev/ci/nix/shell Elpi
but I got Elpi 1.10 whereas 1.11 is required. Elpi has not been updated yet on nixpkgs. I tried a naive patch but it didn't work:diff --git a/pkgs/development/ocaml-modules/elpi/default.nix b/pkgs/development/ocaml-modules/elpi/default.nix index 1c71f7fceb7..3a87caa36f2 100644 --- a/pkgs/development/ocaml-modules/elpi/default.nix +++ b/pkgs/development/ocaml-modules/elpi/default.nix @@ -1,20 +1,20 @@ -{ lib, fetchFromGitHub, buildDunePackage, camlp5 +{ lib, fetchzip, buildDunePackage, camlp5 , ppx_tools_versioned, ppx_deriving, re }: buildDunePackage rec { pname = "elpi"; - version = "1.10.2"; + version = "1.11.2"; - src = fetchFromGitHub { - owner = "LPCIC"; - repo = "elpi"; - rev = "v${version}"; - sha256 = "0w5z0pxyshqawq7w5rw3nqii49y88rizvwqf202pl11xqi14icsn"; + src = fetchzip { + url = "https://github.com/LPCIC/elpi/releases/download/v${version}/elpi-v${version}.tbz"; + sha256 = "15hamy9ifr05kczadwh3yj2gmr12a9z1jwppmp5yrns0vykjbj76"; }; minimumOCamlVersion = "4.04"; + useDune2 = true; + buildInputs = [ ppx_tools_versioned ]; propagatedBuildInputs = [ camlp5 ppx_deriving re ];
The error is:
builder for '/nix/store/pn9lfynrhjy8zx417njmsp63gpichzzc-ocaml4.09.1-elpi-1.11.0.drv' failed with exit code 1; last 10 log lines: (cd _build/default && /nix/store/s37qwaqzi246z8fl3jpv016j8dzfwmig-ocaml-4.09.1/bin/ocamlc.opt -linkall -g -bin-annot -I src/.elpi.objs/byte -I src/.elpi.objs/public_cmi -I /nix/store/0x5vdncjs78xihrjq64s52nsq47m3m9y-ocaml4.09.1-seq-0.1/lib/ocaml/4.09.1/site-lib/seq -I /nix/store/3f6xxwh0gsmqnkfcakkb1qfavcagcbah-ocaml4.09.1-result-1.2/lib/ocaml/4.09.1/site-lib/result -I /nix/store/93jg6hkvpkmbc0mihi0wb9qjpwp62fkj-camlp5-7.11/lib/ocaml/4.09.1/site-lib/camlp5 -I /nix/store/d81rk58irb3q08q5hh02jl215p73vbbi-ocaml4.09.1-ppx_deriving-4.4.1/lib/ocaml/4.09.1/site-lib/ppx_deriving/runtime -I /nix/store/k318j0m9r84y31kkg5cckkk447qh2zij-ocaml4.09.1-re-1.9.0/lib/ocaml/4.09.1/site-lib/re -I /nix/store/k318j0m9r84y31kkg5cckkk447qh2zij-ocaml4.09.1-re-1.9.0/lib/ocaml/4.09.1/site-lib/re/str -I trace/runtime/.trace_ppx_runtime.objs/byte -I trace/runtime/.trace_ppx_runtime.objs/native -no-alias-deps -open Elpi__ -o src/.elpi.objs/byte/elpi__Runtime_trace_off.cmi -c -intf src/runtime_trace_off.pp.mli) File "src/runtime_trace_off.mli", line 6, characters 12-18: Error: Unbound type constructor pp_ctx ocamlc src/.elpi.objs/byte/elpi__Builtin.{cmi,cmti} (exit 2) (cd _build/default && /nix/store/s37qwaqzi246z8fl3jpv016j8dzfwmig-ocaml-4.09.1/bin/ocamlc.opt -linkall -g -bin-annot -I src/.elpi.objs/byte -I src/.elpi.objs/public_cmi -I /nix/store/0x5vdncjs78xihrjq64s52nsq47m3m9y-ocaml4.09.1-seq-0.1/lib/ocaml/4.09.1/site-lib/seq -I /nix/store/3f6xxwh0gsmqnkfcakkb1qfavcagcbah-ocaml4.09.1-result-1.2/lib/ocaml/4.09.1/site-lib/result -I /nix/store/93jg6hkvpkmbc0mihi0wb9qjpwp62fkj-camlp5-7.11/lib/ocaml/4.09.1/site-lib/camlp5 -I /nix/store/d81rk58irb3q08q5hh02jl215p73vbbi-ocaml4.09.1-ppx_deriving-4.4.1/lib/ocaml/4.09.1/site-lib/ppx_deriving/runtime -I /nix/store/k318j0m9r84y31kkg5cckkk447qh2zij-ocaml4.09.1-re-1.9.0/lib/ocaml/4.09.1/site-lib/re -I /nix/store/k318j0m9r84y31kkg5cckkk447qh2zij-ocaml4.09.1-re-1.9.0/lib/ocaml/4.09.1/site-lib/re/str -I trace/runtime/.trace_ppx_runtime.objs/byte -I trace/runtime/.trace_ppx_runtime.objs/native -no-alias-deps -open Elpi__ -o src/.elpi.objs/byte/elpi__Builtin.cmi -c -intf src/builtin.mli) File "src/builtin.mli", line 7, characters 5-16: 7 | open API.BuiltIn ^^^^^^^^^^^ Error: Unbound module API.BuiltIn
cc @vbgl and @gares
ejgallego requested ci-maintainers and nix-maintainers for a review on PR #12364 [ci] [docker] Bump ocamlformat and dune.
Zimmi48 updated PR #12364 [ci] [docker] Bump ocamlformat and dune from ci+bump_deps
to master
:
cc: #12350
Zimmi48 milestoned Issue #12364 [ci] [docker] Bump ocamlformat and dune:
cc: #12350
Zimmi48 updated PR #12355 [8.12] Use pinned commits in dev/ci/ci-user-overlays.sh. (assigned to ejgallego) from pin-overlays
to v8.12
:
Kind: infrastructure.
While preparing this PR (by running
dev/tools/pin-ci.sh
), I have discovered that our referenced URL to coq-menhirlib (only used in the Windows build AFAIR) does not exist anymore. This likely means that the full Windows is currently failing. It looks like coq-menhirlib is now developed at https://gitlab.inria.fr/fpottier/menhir/-/tree/master/coq-menhirlib.cc @MSoegtropIMC
SkySkimmer milestoned Issue #12342 Direct URL for triggering a pipeline with SKIP_DOCKER=false. (assigned to SkySkimmer):
<!-- Thank you for your contribution.
Make sure you read the contributing guide and fill this template. --><!-- Keep what applies -->
Kind: documentation
SkySkimmer pushed 2 commits to branch master. Commits by SkySkimmer (1) and Zimmi48 (1).
SkySkimmer merged PR #12342 Direct URL for triggering a pipeline with SKIP_DOCKER=false.
SkySkimmer milestoned Issue #12354 [universes] [api] Provide UState.from_env (assigned to SkySkimmer):
This seems like a recurring pattern, and IMO makes a bit better API.
We also remove
merge_universe_subst
as it is not needed so far, as
we were creating staleevar_map
s just for this purpose.
SkySkimmer pushed 2 commits to branch master. Commits by SkySkimmer (1) and ejgallego (1).
SkySkimmer merged PR #12354 [universes] [api] Provide UState.from_env.
SkySkimmer milestoned Issue #12356 [declare] Remove unused parameters in prepare_obligation (assigned to SkySkimmer):
Cleanup PR.
SkySkimmer pushed 4 commits to branch master. Commits by ejgallego (3) and SkySkimmer (1).
SkySkimmer merged PR #12356 [declare] Remove unused parameters in prepare_obligation.
SkySkimmer assigned PR #12364 [ci] [docker] Bump ocamlformat and dune to SkySkimmer.
SkySkimmer submitted PR Review for #12364 [ci] [docker] Bump ocamlformat and dune.
SkySkimmer pushed 2 commits to branch master. Commits by SkySkimmer (1) and ejgallego (1).
SkySkimmer closed Issue #12264 Errors when running test suite with recent Dune. (assigned to ejgallego):
Description of the problem
When
dune runtest
, [build errors appear][log]. Some of them can be solved by [a fewchmod
invocations][patch]. [Other errors are then reached][log2] for which I have not found a solution. Test suite therefore fails.[log]: https://gist.github.com/kindaro/d284b4e8bcc76aaefaba192ad2f3f371#file-dune-log
[patch]: https://gist.github.com/kindaro/d284b4e8bcc76aaefaba192ad2f3f371#file-fix-diff
[log2]: https://gist.github.com/kindaro/d284b4e8bcc76aaefaba192ad2f3f371#file-dune-2-logMy suspicion is that [the upgrade of _dune_][dune] has something to do with this.
[dune]: https://github.com/coq/coq/commit/bc411fa4d8c04424c579d506dd0507cb83db7bc7
Software versions
Coq Version
The Coq Proof Assistant, version 8.12+alpha (May 2020) compiled on May 6 2020 4:32:32 with OCaml 4.09.0
Dune Version
2.5.0 2.5.1
Make Version
GNU Make 4.3 Built for x86_64-pc-linux-gnu
CSDP Version
Name : coin-or-csdp Version : 6.2.0-3 Description : A C library for Semidefinite Programming Architecture : x86_64
_(On Arch Linux.)_
SkySkimmer merged PR #12350 [test-suite] Ensure copies of files are writable.
gares opened Issue #12376 [dune] which version?
gares@ollypat:~/COQ/master$ git grep '\(lang\|dune\).*2\.[0-9]' coq.opam: "dune" { >= "2.5.0" } coqide-server.opam: "dune" { >= "2.0.0" } coqide.opam: "dune" { >= "2.0.0" } dev/build/windows/makecoq_mingw.sh: if build_prep https://github.com/ocaml/dune/archive/ 2.0.0 tar.gz 1 dune-2.0.0 ; then dev/ci/docker/bionic_coq/Dockerfile: BASE_OPAM_EDGE="dune.2.5.0 dune-release.1.3.3 ocamlformat.0.14.0" dev/dune-workspace.all:(lang dune 2.0) dune-project:(lang dune 2.5)
I guess we should centralize this piece of info, one way or another, in order to avoid duplication.
SkySkimmer submitted PR Review for #12368 Print a newline at the end of timing tables.
SkySkimmer submitted PR Review for #12368 Print a newline at the end of timing tables.
SkySkimmer created PR Review Comment on #12368 Print a newline at the end of timing tables:
Github says this one still misses an end of file newline, is that normal?
SkySkimmer assigned PR #12368 Print a newline at the end of timing tables to SkySkimmer.
SkySkimmer submitted PR Review for #12371 [obligations] Minor refactoring.
SkySkimmer created PR Review Comment on #12371 [obligations] Minor refactoring:
TBH I prefer
typ
totypes
as there's only 1
Also why don't we shadow here?
SkySkimmer submitted PR Review for #12371 [obligations] Minor refactoring.
SkySkimmer created PR Review Comment on #12371 [obligations] Minor refactoring:
if !showed > 0 then begin decr showed; show_single_obligation i n obls x end
slightly prettier imo
SkySkimmer submitted PR Review for #12371 [obligations] Minor refactoring.
SkySkimmer assigned PR #12371 [obligations] Minor refactoring to SkySkimmer.
ejgallego updated PR #12371 [obligations] Minor refactoring (assigned to SkySkimmer) from obligations+more_ref
to master
:
Minors bits here and there, mostly self-explanatory.
ejgallego submitted PR Review for #12371 [obligations] Minor refactoring.
ejgallego created PR Review Comment on #12371 [obligations] Minor refactoring:
Shadowing done, I used
types
as this is what has been used on the rest ofDeclare
; maybe #12372 would be a good opportunity to discuss a better naming overall.
ejgallego submitted PR Review for #12371 [obligations] Minor refactoring.
ejgallego created PR Review Comment on #12371 [obligations] Minor refactoring:
Done, thanks.
SkySkimmer submitted PR Review for #12359 [ci] Add mit-plv/engine-bench.
SkySkimmer assigned PR #12359 [ci] Add mit-plv/engine-bench to SkySkimmer.
SkySkimmer milestoned Issue #12359 [ci] Add mit-plv/engine-bench (assigned to SkySkimmer):
This is a new development where I'm aggregating a specific set of
benchmarks. It's intended to be relatively lightweight, taking only a
handful of minutes (I can make the CI target much, much lighter if
desired). It's probably one of the few developments currently testing
Ltac2.Kind: infrastructure
SkySkimmer pushed 2 commits to branch master. Commits by JasonGross (1) and SkySkimmer (1).
SkySkimmer merged PR #12359 [ci] Add mit-plv/engine-bench.
SkySkimmer assigned PR #12358 [topfmt] Set formatter + flush fix to SkySkimmer.
SkySkimmer submitted PR Review for #12358 [topfmt] Set formatter + flush fix.
gares edited Issue #12334 Release 8.13 (assigned to maximedenes):
Release process
As soon as the previous version branched off master
In principle, these steps should be undertaken by the RM of the next
release. Unfortunately, we have not yet been able to nominate RMs
early enough in the process for this person to be known at that point
in time.
[x] Create a new issue to track the release process where you can copy-paste
the present checklist (from dev/doc/release-process.md)[x] Change the version name to the next major version and the magic
numbers (see #7008).Done in #12346
Additionally, in the same commit, update the compatibility
infrastructure, which consists of invoking
dev/tools/update-compat.py
with the
--master
flag.Note that the
update-compat.py
script must be run twice: once
immediately after branching with the--master
flag (which sets
up Coq to support four-compat
flag arguments), *in the same
commit* as the one that updatescoq_version
in
configure.ml
, and once again later on before
the next branch point with the--release
flag (see next section).[x] Put the corresponding alpha tag using
git tag -s
.
TheVX.X+alpha
tag marks the first commit to be inmaster
and not in the
branch of the previous version.[x] Create the
X.X+beta1
milestone if it did not already exist.[x] Decide the release calendar with the team (freeze date, beta date, final
release date) and put this information in the milestone (using the
description and due date fields).
- freeze 15 November
- beta or rc, to be determined
- final January
Anytime after the previous version is branched off master
- [ ] Update the compatibility infrastructure to the next release,
which consists of invoking
dev/tools/update-compat.py
with the
--release
flag; this sets up Coq to support three-compat
flag
arguments. To ensure that CI passes, you will have to decide what
to do about all test-suite files which mention-compat U.U
or
Coq.Comapt.CoqUU
(which is no longer valid, since we only keep
compatibility against the two previous versions on releases), and
you may have to prepare overlays for projects using the
compatibility flags.About one month before the beta
- [ ] Create the
X.X.0
milestone and set its due date.[ ] Send an announcement of the upcoming freeze on Coqdev and ask people to
remove from the beta milestone what they already know won't be ready on time
(possibly postponing to theX.X.0
milestone for minor bug fixes,
infrastructure and documentation updates).[ ] Determine which issues should / must be fixed before the beta, add them
to the beta milestone, possibly with a
"priority: blocker"
label. Make sure that all these issues are assigned (and that the assignee
provides an ETA).[ ] Ping the development coordinator (@mattam82) to get him started on
the update to the Credits chapter of the reference manual.
See also #7058.The command that was used in the previous versions to get the list
of contributors for this version isgit shortlog -s -n VX.X+alpha..master | cut -f2 | sort -k 2
. Note that the ordering is
approximative as it will misplace people with middle names. It is
also probably not correctly handlingCo-authored-by
info that we
have been using more lately, so should probably be updated to
account for this.On the date of the feature freeze
[ ] Create the new version branch
vX.X
(using this name will ensure that
the branch will be automatically protected).[ ] Pin the versions of libraries and plugins in
dev/ci/ci-basic-overlays.sh
to use commit hashes or tag (or, if it
exists, a branch dedicated to compatibility with the corresponding
Coq branch). You can use thedev/tools/pin-ci.sh
script to do this
semi-automatically.[ ] Remove all remaining unmerged feature PRs from the beta milestone.
[ ] Start a new project to track PR backporting. The project should
have a "Request X.X+beta1 inclusion" column for the PRs that were
merged inmaster
that are to be considered for backporting, and a
"Shipped in X.X+beta1" columns to put what was backported. A message
to @coqbot in the milestone description tells it to
automatically add merged PRs to the "Request ... inclusion" column
and backported PRs to the "Shipped in ..." column. See previous
milestones for examples. When moving to the next milestone
(e.g. X.X.0), you can clear and remove the "Request X.X+beta1
inclusion" column and create new "Request X.X.0 inclusion" and
"Shipped in X.X.0" columns.The release manager is the person responsible for merging PRs that
target the version branch and backporting appropriate PRs that are
merged intomaster
.[ ] Delay non-blocking issues to the appropriate milestone and ensure
blocking issues are solved. If required to solve some blocking issues,
it is possible to revert some feature PRs in the version branch only.[ ] Add a new link to the
'versions'
list of the refman (in
html_context
indoc/sphinx/conf.py
).Before the beta release date
- [ ] Ensure the Credits chapter has been updated.
[ ] Prepare the release notes (see e.g.,
#10833): in a PR against themaster
branch, move the contents from all files ofdoc/changelog/
that appear in
the release branch into the manualdoc/sphinx/changes.rst
. Merge that PR
into themaster
branch and backport it to the version branch.[ ] Ensure that an appropriate version of the plugins we will distribute with
Coq has been tagged.[ ] Have some people test the recently auto-generated Windows and MacOS
packages.[ ] In a PR:
Change the version name from alpha to beta1 (see
#7009).We generally do not update the magic numbers at this point.
- Set
is_a_released_version
totrue
inconfigure.ml
.- [ ] Put the
VX.X+beta1
tag usinggit tag -s
.- [ ] Check using
git push --tags --dry-run
that you are not
pushing anything else than the new tag. If needed, remove spurious
tags withgit tag -d
. When this is OK, proceed withgit push --tags
.[ ] Set
is_a_released_version
tofalse
inconfigure.ml
(if you forget about it, you'll be reminded whenever you try to
backport a PR with a changelog entry).These steps are the same for all releases (beta, final, patch-level)
[ ] Send an e-mail on Coqdev announcing that the tag has been put so that
package managers can start preparing package updates (including a
coq-bignums
compatible version).[ ] When opening the corresponding PR for
coq
in the opam repository (coq/opam-coq-archive
orocaml/opam-repository
),
the package managers can Cc@erikmd
to request that he prepare the necessary configuration for the Docker release incoqorg/coq
(namely, he'll need to make sure acoq-bignums
opam package is available inextra-dev
, respectivelyreleased
, so the Docker image gatheringcoq
andcoq-bignums
can be built).[ ] Draft a release on GitHub.
[ ] Sign the Windows and MacOS packages and upload them on GitHub.
The Windows packages must be signed by the Inria IT security service. They
should be sent as a link to the binary together with its SHA256 hash in a
signed e-mail, via our local contact (currently@maximedenes
).The MacOS packages should be signed by our own certificate, by sending them
to@maximedenes
. A detailed step-by-step guide can be found on the wiki.[ ] Prepare a page of news on the website with the link to the GitHub release
(see coq/www#63).[ ] Upload the new version of the reference manual to the website.
TODO: setup some continuous deployment for this.[ ] Merge the website update, publish the release
and send announcement e-mails.[ ] Close the milestone
At the final release time
- [ ] Prepare the release notes (see above)
[ ] In a PR:
Change the version name from X.X.0 and the magic numbers (see
#7271).Set
is_a_released_version
totrue
inconfigure.ml
.- [ ] Put the
VX.X.0
tag.- [ ] Check using
git push --tags --dry-run
that you are not
pushing anything else than the new tag. If needed, remove spurious
tags withgit tag -d
. When this is OK, proceed withgit push --tags
.[ ] Set
is_a_released_version
tofalse
inconfigure.ml
(if you forget about it, you'll be reminded whenever you try to
backport a PR with a changelog entry).Repeat the generic process documented above for all releases.
Ping
@Zimmi48
to:
- [ ] Switch the default version of the reference manual on the website.
- [ ] Publish a new version on Zenodo.
At the patch-level release time
We generally do not update the magic numbers at this point (see
2881a18
).
fajb edited PR #11906 [micromega] native support for boolean operators from bmicromega
to master
:
<!-- Thank you for your contribution.
Make sure you read the contributing guide and fill this template. -->
lia
supports boolean comparisons and operators
+ Z.{eqb, leb, ltb, geb, gtb}
+ andb, orb, implb, eqb, negb, ||zify
has been modified to work in harmony
+ZifyBool.v
injects comparison overnat
to comparisons overZ
Kind: feature
(this is a clean revival of #11047 )
- [x] Added / updated test-suite
- [x] Corresponding documentation was added /
- [x] Entry added in the changelog
SkySkimmer edited PR #11906 [micromega] native support for boolean operators from bmicromega
to master
:
lia
supports boolean comparisons and operators
+ Z.{eqb, leb, ltb, geb, gtb}
+ andb, orb, implb, eqb, negb, ||zify
has been modified to work in harmony
+ZifyBool.v
injects comparison overnat
to comparisons overZ
Kind: feature
(this is a clean revival of #11047 )
- [x] Added / updated test-suite
- [x] Corresponding documentation was added /
- [x] Entry added in the changelog
fajb updated PR #11906 [micromega] native support for boolean operators from bmicromega
to master
:
lia
supports boolean comparisons and operators
+ Z.{eqb, leb, ltb, geb, gtb}
+ andb, orb, implb, eqb, negb, ||zify
has been modified to work in harmony
+ZifyBool.v
injects comparison overnat
to comparisons overZ
Kind: feature
(this is a clean revival of #11047 )
- [x] Added / updated test-suite
- [x] Corresponding documentation was added /
- [x] Entry added in the changelog
fajb submitted PR Review for #11906 [micromega] native support for boolean operators.
fajb created PR Review Comment on #11906 [micromega] native support for boolean operators:
The
Add xxx
are currently undocumented...
fajb created PR Review Comment on #11906 [micromega] native support for boolean operators:
done.
fajb submitted PR Review for #11906 [micromega] native support for boolean operators.
fajb submitted PR Review for #11906 [micromega] native support for boolean operators.
fajb created PR Review Comment on #11906 [micromega] native support for boolean operators:
done.
fajb submitted PR Review for #11906 [micromega] native support for boolean operators.
fajb created PR Review Comment on #11906 [micromega] native support for boolean operators:
done.
vbgl submitted PR Review for #12364 [ci] [docker] Bump ocamlformat and dune.
mattam82:
JasonGross submitted PR Review for #12368 Print a newline at the end of timing tables.
JasonGross created PR Review Comment on #12368 Print a newline at the end of timing tables:
Very strange, let me look into this
ejgallego updated PR #12142 [proof] Split vio and regular proof close paths. from proof+split_vio_save2
to master
:
The paths don't have the same type, in particular the opaque argument
cannot be set toTransparent
forclose_vio_proof
.We could add an assert, but it seems easier just to do change the type.
This depends on #12130 and it is a continuation of #11915 and #11916 ; the code here originally was part of #11916 and included much more refactoring of common parts which fully mitigated the duplication introduced here. I will push these changes once the depending PR has been merged as the removal of
Proof_global
made the rebase impossible.
proux01 updated PR #12218 Numeral notations for non inductive types from numeral-notations-non-inductive
to master
:
This is a tentative implementation of the idea discussed in #12035
This is a draft PR due to the fact that it is still lacking some proofs and proper documentation.
Numeral Notation non_inductive via inductive using ...
The main idea is to use actual inductive types that map what you want to parse/print and just translate to (resp. from) the actual type from (resp. to) this inductive type after calling the parser (resp before the printer). One then just has to provide a mapping from globrefs of the actual type to constructors of the inductive type.
For instance, for reals, that looks something like
Inductive IZ := | IZpow_pos : Z -> positive -> IZ | IZ0 : IZ | IZpos : positive -> IZ | IZneg : positive -> IZ. Inductive IR := | IRZ : IZ -> IR | IRQ : Q -> IR | IRmult : IR -> IR -> IR | IRdiv : IR -> IR -> IR. [..] (* define parser numeral_to_IR and printer IR_to_numeral *) Numeral Notation R via IR using (IZR IRZ, Q2R IRQ, Rmult IRmult, Rdiv IRdiv, Z.pow_pos IZpow_pos, Z0 IZ0, Zpos IZpos, Zneg IZneg) numeral_to_IR IR_to_numeral : R_scope.
Two notations are provided as examples for
Q
andR
.Q
Previously rationals were all parsed as a pair numerator, denominator. This means
1.02
and102e-2
were both parsed as102 # 100
and could not be tell apart when printing. So the printer had to choose between two representations : without exponent or without decimal dot. The choice was made heuristically toward a most compact representation.Now, decimal dot is still parsed as a power of ten denominator but exponents are parsed as a product or division by
Z.pow_pos
. For instance,1.02
is parsed as102 # 100
whereas102e-2
is parsed as(102 # 1) / (Z.pow_pos 10 2 # 1)
.
1.02
and102e-2
remain equal (proved by reflexivity) but1.02e1 = (102 # 100) * (10 # 1) = 1020 # 100
and10.2 = 102 # 10
no longer are.A nice side effect is that exponents can no longer blow up during parsing. Previously
1e1_000_000
literally produced a numerator with a million digits, now it just yields(1 # 1) * (Z.pow_pos 10 1_000_000 # 1)
.R
Previously real constants were parsed by an unproved OCaml code. The parser and printer are now implemented in Coq, which will enable a proof and hopefully make it easier to maintain / make evolve.
Previously reals were all parsed as an integer, an integer multiplied by a power of ten or an integer divided by a power of ten. This means
1.02
and102e-2
were both parsed as102 / 100
and could not be tell apart when printing. So the printer had to choose between two representations : without exponent or without decimal dot. The choice was made heuristically toward a most compact representation.Now, decimal dot is parsed as a rational and exponents are parsed as a product or division by a power of ten. For instance,
1.02
is parsed asQ2R (102 # 100)
whereas102e-2
is parsed asIZR 102 / IZR (Z.pow_pos 10 2)
.
1.02
and102e-2
remain equal (proved by reflexivity) but1.02e1 = Q2R (102 # 100) * 10
and10.2 = Q2R (102 # 10)
no longer are.TODO
~Depends from: #11948~
- [ ] prove numeral notation for
Q
- [ ] prove numeral notation for
R
- [x] Added / updated test-suite
- [ ] Corresponding documentation was added / updated (including any warning and error messages added / removed / modified).
- [ ] Entry added in the changelog (see https://github.com/coq/coq/tree/master/doc/changelog#unreleased-changelog for details).
Zimmi48 milestoned Issue #12377 Adapt the documentation to the move from Gitter to Zulip.
Kind: documentation
Zimmi48 opened PR #12377 Adapt the documentation to the move from Gitter to Zulip. from doc-zulip
to master
:
Kind: documentation
Zimmi48 requested doc-maintainers, contributing-process-maintainers and code-of-conduct-team for a review on PR #12377 Adapt the documentation to the move from Gitter to Zulip..
Zimmi48 requested doc-maintainers, contributing-process-maintainers and code-of-conduct-team for a review on PR #12377 Adapt the documentation to the move from Gitter to Zulip..
Zimmi48 requested doc-maintainers, contributing-process-maintainers and code-of-conduct-team for a review on PR #12377 Adapt the documentation to the move from Gitter to Zulip..
cpitclaudel submitted PR Review for #12377 Adapt the documentation to the move from Gitter to Zulip.
cpitclaudel created PR Review Comment on #12377 Adapt the documentation to the move from Gitter to Zulip.
Poor coq-club, it's "historical" now
cpitclaudel submitted PR Review for #12377 Adapt the documentation to the move from Gitter to Zulip.
jfehrle updated PR #12369 Handle conversion inconsistency between html and pdf for ids= and names= from fix_pdf_names
to master
:
Fixes #12361
andrew-appel opened Issue #12378 benign-looking 'replace' causes Qed to blow up:
Description of the problem
In Coq 8.11.1, a 'replace' command causes the Qed to blow up (I killed it after 1 hour), but without the 'replace', the Qed takes about 0.2 seconds.
That is: In my theorem, after 100 lines of nontrivial proof script (but the kind that is normally well within Coq's capacity), I come to this proof goal:
j, c : forall _ : environ, mpred H7 : derives c j ______________________________________(1/1) True
If I finish the proof with
auto. Qed.
then the Qed takes 0.22 seconds.
If I finish the proof withreplace c with j in H7 by apply admit. auto. Qed.
then the Qed takes more than an hour, if indeed it ever finishes.The fact that I'm using a very generous Admitted lemma called
admit
is irrelevant, I believe. The original version from which I distilled this did not play any such trick.You can reproduce this as follows:
- Download commit f2549d0 of the VST repository,
- Do "make -j7" (or whatever -j argument you like)
In the last-built file, progs/verif_binary_heap.v, find the line near the end labeled
(* UNCOMMENT THIS LINE TO HAVE Qed BLOW UP IN Coq 8.11.1 ... *)
and uncomment thereplace
command.Notice that Qed now blows up. Memory usage doesn't blow up, just run time.
Coq Version 8.11.1
Zimmi48 submitted PR Review for #12377 Adapt the documentation to the move from Gitter to Zulip.
Zimmi48 created PR Review Comment on #12377 Adapt the documentation to the move from Gitter to Zulip.
Yep, we cannot decently bury it given the number of users, but we must have a consistent communication regarding our privileged platforms IMHO.
ejgallego labeled Issue #12378 benign-looking 'replace' causes Qed to blow up:
Description of the problem
In Coq 8.11.1, a 'replace' command causes the Qed to blow up (I killed it after 1 hour), but without the 'replace', the Qed takes about 0.2 seconds.
That is: In my theorem, after 100 lines of nontrivial proof script (but the kind that is normally well within Coq's capacity), I come to this proof goal:
j, c : forall _ : environ, mpred H7 : derives c j ______________________________________(1/1) True
If I finish the proof with
auto. Qed.
then the Qed takes 0.22 seconds.
If I finish the proof withreplace c with j in H7 by apply admit. auto. Qed.
then the Qed takes more than an hour, if indeed it ever finishes.The fact that I'm using a very generous Admitted lemma called
admit
is irrelevant, I believe. The original version from which I distilled this did not play any such trick.You can reproduce this as follows:
- Download commit f2549d0 of the VST repository,
- Do "make -j7" (or whatever -j argument you like)
In the last-built file, progs/verif_binary_heap.v, find the line near the end labeled
(* UNCOMMENT THIS LINE TO HAVE Qed BLOW UP IN Coq 8.11.1 ... *)
and uncomment thereplace
command.Notice that Qed now blows up. Memory usage doesn't blow up, just run time.
Coq Version 8.11.1
jfehrle opened PR #12379 Omit voluminous Latex warnings from silence_latex
to master
:
Similar to https://github.com/coq/coq/pull/12195. The
-q
of that PR didn't make much difference and hid some messages useful for local work.
jfehrle requested doc-maintainers for a review on PR #12379 Omit voluminous Latex warnings.
cpitclaudel pushed 2 commits to branch master. Commits by Zimmi48 (1) and cpitclaudel (1).
cpitclaudel merged PR #12377 Adapt the documentation to the move from Gitter to Zulip.
jfehrle updated PR #12379 Omit voluminous Latex warnings from silence_latex
to master
:
Similar to https://github.com/coq/coq/pull/12195. The
-q
of that PR didn't make much difference and hid some messages useful for local work.
cpitclaudel submitted PR Review for #12377 Adapt the documentation to the move from Gitter to Zulip.
cpitclaudel created PR Review Comment on #12377 Adapt the documentation to the move from Gitter to Zulip.
I hadn't realized up to this point that discourse was now preferred.
proux01 updated PR #12218 Numeral notations for non inductive types from numeral-notations-non-inductive
to master
:
This is a tentative implementation of the idea discussed in #12035
This is a draft PR due to the fact that it is still lacking some proofs and proper documentation.
Numeral Notation non_inductive via inductive using ...
The main idea is to use actual inductive types that map what you want to parse/print and just translate to (resp. from) the actual type from (resp. to) this inductive type after calling the parser (resp before the printer). One then just has to provide a mapping from globrefs of the actual type to constructors of the inductive type.
For instance, for reals, that looks something like
Inductive IZ := | IZpow_pos : Z -> positive -> IZ | IZ0 : IZ | IZpos : positive -> IZ | IZneg : positive -> IZ. Inductive IR := | IRZ : IZ -> IR | IRQ : Q -> IR | IRmult : IR -> IR -> IR | IRdiv : IR -> IR -> IR. [..] (* define parser numeral_to_IR and printer IR_to_numeral *) Numeral Notation R via IR using (IZR IRZ, Q2R IRQ, Rmult IRmult, Rdiv IRdiv, Z.pow_pos IZpow_pos, Z0 IZ0, Zpos IZpos, Zneg IZneg) numeral_to_IR IR_to_numeral : R_scope.
Two notations are provided as examples for
Q
andR
.Q
Previously rationals were all parsed as a pair numerator, denominator. This means
1.02
and102e-2
were both parsed as102 # 100
and could not be tell apart when printing. So the printer had to choose between two representations : without exponent or without decimal dot. The choice was made heuristically toward a most compact representation.Now, decimal dot is still parsed as a power of ten denominator but exponents are parsed as a product or division by
Z.pow_pos
. For instance,1.02
is parsed as102 # 100
whereas102e-2
is parsed as(102 # 1) / (Z.pow_pos 10 2 # 1)
.
1.02
and102e-2
remain equal (proved by reflexivity) but1.02e1 = (102 # 100) * (10 # 1) = 1020 # 100
and10.2 = 102 # 10
no longer are.A nice side effect is that exponents can no longer blow up during parsing. Previously
1e1_000_000
literally produced a numerator with a million digits, now it just yields(1 # 1) * (Z.pow_pos 10 1_000_000 # 1)
.R
Previously real constants were parsed by an unproved OCaml code. The parser and printer are now implemented in Coq, which will enable a proof and hopefully make it easier to maintain / make evolve.
Previously reals were all parsed as an integer, an integer multiplied by a power of ten or an integer divided by a power of ten. This means
1.02
and102e-2
were both parsed as102 / 100
and could not be tell apart when printing. So the printer had to choose between two representations : without exponent or without decimal dot. The choice was made heuristically toward a most compact representation.Now, decimal dot is parsed as a rational and exponents are parsed as a product or division by a power of ten. For instance,
1.02
is parsed asQ2R (102 # 100)
whereas102e-2
is parsed asIZR 102 / IZR (Z.pow_pos 10 2)
.
1.02
and102e-2
remain equal (proved by reflexivity) but1.02e1 = Q2R (102 # 100) * 10
and10.2 = Q2R (102 # 10)
no longer are.TODO
~Depends from: #11948~
- [ ] prove numeral notation for
Q
- [ ] prove numeral notation for
R
- [x] Added / updated test-suite
- [ ] Corresponding documentation was added / updated (including any warning and error messages added / removed / modified).
- [ ] Entry added in the changelog (see https://github.com/coq/coq/tree/master/doc/changelog#unreleased-changelog for details).
jfehrle updated PR #12369 Handle conversion inconsistency between html and pdf for ids= and names= from fix_pdf_names
to master
:
Fixes #12361
JasonGross updated PR #12316 Use pagination in fetching the number of reviews (assigned to SkySkimmer) from fix-12300
to master
:
Fixes #12300
Note that I currently only paginate the API call for the number of
reviews, not the main API call, because (a) the main API call doesn't
seem subject to pagination (it returns a dict, not an array), and (b)
because fetching the total number of pages incurs an extra API call for
each one that we want to paginate, even if there is only one page. We
could work around (b) with a significantly more complicated
curl_paginate
function which heuristically recognizes the end of the
header/beginning of the body, such ascurl_paginate() { # as per https://developer.github.com/v3/guides/traversing-with-pagination/#changing-the-number-of-items-received, GitHub will never give us more than 100 url="$1?per_page=100" # We need to process the header to get the pagination. We have two # options: # # 1. We can make an extra API call at the beginning to get the total # number of pages, search for a rel="last" link, and then loop # over all the pages. # # 2. We can ask for the header info with every single curl request, # search for a rel="next" link to follow to the next page, and # then parse out the body from the header. # # Although (1) is simpler, we choose to do (2) to save an extra API # call per invocation of curl. while [ ! -z "${url}" ]; do response="$(curl -si "${url}")" # we search for something like 'link: <https://api.github.com/repositories/1377159/pulls/12129/reviews?page=2>; rel="next", <https://api.github.com/repositories/1377159/pulls/12129/reviews?page=2>; rel="last"' and take the first 'next' url url="$(echo "${response}" | grep -m 1 -io '^link: .*>; rel="next"' | grep -o '<[^>]*>; rel="next"' | grep -o '<[^>]*>' | sed s'/[<>]//g')" echo "${response}" | { is_header="yes" while read line; do if [ "${is_header}" == "yes" ]; then if echo "${line}" | grep -q '^\s*[\[{]'; then # we treat lines beginning with [ or { as the beginning of the response body is_header="no" echo "${line}" fi else echo "${line}" fi done } done }
Kind: bug fix / infrastructure.
- [ ] Entry added in the changelog (see https://github.com/coq/coq/tree/master/doc/changelog#unreleased-changelog for details). (does this need a changelog entry?)
JasonGross updated PR #12368 Print a newline at the end of timing tables (assigned to SkySkimmer) from fix-missing-newline-time-file-maker
to master
:
This, for example, improves the CI display, so that
$ echo 'end:coq.test'
does not appear on the same line as the end of the
timing table.Kind: bug fix
- [x] Added / updated test-suite
- [x] Entry added in the changelog (see https://github.com/coq/coq/tree/master/doc/changelog#unreleased-changelog for details).
JasonGross submitted PR Review for #12368 Print a newline at the end of timing tables.
JasonGross created PR Review Comment on #12368 Print a newline at the end of timing tables:
Should be fixed now
jfehrle edited PR #12369 Show correct index entries in pdf from fix_pdf_names
to master
:
Fixes #12361
jfehrle requested doc-maintainers for a review on PR #12369 Show correct index entries in pdf.
SkySkimmer submitted PR Review for #12368 Print a newline at the end of timing tables.
SkySkimmer created PR Review Comment on #12368 Print a newline at the end of timing tables:
So what was going on?
JasonGross submitted PR Review for #12368 Print a newline at the end of timing tables.
JasonGross created PR Review Comment on #12368 Print a newline at the end of timing tables:
I believe this test-suite-test was insensitive to lack of trailing newlines, and I was picking up the wrong version of the script when regenerating it, I believe
cpitclaudel opened PR #12380 Fix #12361 (indexing issues in the PDF) from fix-12361
to master
:
Kind: infrastructure.
Follow up to https://github.com/coq/coq/issues/12361.
cpitclaudel requested Zimmi48, jfehrle and doc-maintainers for a review on PR #12380 Fix #12361 (indexing issues in the PDF).
cpitclaudel requested Zimmi48, jfehrle and doc-maintainers for a review on PR #12380 Fix #12361 (indexing issues in the PDF).
cpitclaudel requested Zimmi48, jfehrle and doc-maintainers for a review on PR #12380 Fix #12361 (indexing issues in the PDF).
jfehrle submitted PR Review for #12380 Fix #12361 (indexing issues in the PDF)
jfehrle submitted PR Review for #12380 Fix #12361 (indexing issues in the PDF)
jfehrle created PR Review Comment on #12380 Fix #12361 (indexing issues in the PDF)
We didn't want to repeat the definition 10 times here--that would look mighty strange. I suggest removing the parenthesized comment. We're not bound by tradition, are we?
![image](https://user-images.githubusercontent.com/1253341/82524776-a6ce9980-9ae4-11ea-9fc6-6f1d697af1d4.png)
jfehrle created PR Review Comment on #12380 Fix #12361 (indexing issues in the PDF)
"""Attach a link target to `signode` and index entries for `names`.
jfehrle submitted PR Review for #12380 Fix #12361 (indexing issues in the PDF)
Mbodin opened Issue #12381 Coq allows one to try to prove forall (P : SProp) (x y : P), x = y
, despite being ill-typed.
Description of the problem
I found this line in a Coq project: https://gitlab.inria.fr/kmaillar/dijkstra-monads-for-all/-/blob/master/theories/sprop/SPropBase.v#L262
I don’t know much ofSProp
, but as I didn’t see this issue reported here, I wanted to make sure that this issue is referenced here too.Here is a minimal example:
(* -*- coq-prog-args: ("-allow-sprop"); -*- *) Goal forall (P : SProp) (x y : P), x = y. Proof. admit. Admitted. (* fails *)
Coq Version
Coq 8.10.1.
SkySkimmer closed Issue #12381 Coq allows one to try to prove forall (P : SProp) (x y : P), x = y
, despite being ill-typed.
Description of the problem
I found this line in a Coq project: https://gitlab.inria.fr/kmaillar/dijkstra-monads-for-all/-/blob/master/theories/sprop/SPropBase.v#L262
I don’t know much ofSProp
, but as I didn’t see this issue reported here, I wanted to make sure that this issue is referenced here too.Here is a minimal example:
(* -*- coq-prog-args: ("-allow-sprop"); -*- *) Goal forall (P : SProp) (x y : P), x = y. Proof. admit. Admitted. (* fails *)
Coq Version
Coq 8.10.1.
ejgallego labeled Issue #12382 [zulip] Please move notifications to their own stream.
The notifications topics currently live in the "Coq dev" stream; IMHO they would be better in their own stream "Github notifications", the current setup:
- pollutes the list of topics in the stream [the topics are consistently at the top]
- makes it harder so follow the dev stream. I know I could mute them but sometimes I'd like to have a look at them too.
ejgallego opened Issue #12382 [zulip] Please move notifications to their own stream.
The notifications topics currently live in the "Coq dev" stream; IMHO they would be better in their own stream "Github notifications", the current setup:
- pollutes the list of topics in the stream [the topics are consistently at the top]
- makes it harder so follow the dev stream. I know I could mute them but sometimes I'd like to have a look at them too.
SkySkimmer pushed 4 commits to branch master. Commits by JasonGross (3) and SkySkimmer (1).
SkySkimmer closed Issue #12300 merge-pr doesn't understand pagination:
For instance with #12129 it sees no APPROVED review because it's on page 2 (https://api.github.com/repos/coq/coq/pulls/12129/reviews?page=2)
Not sure if ignoring pagination can cause issues with the main api call.
SkySkimmer merged PR #12316 Use pagination in fetching the number of reviews.
coqbot milestoned Issue #12300 merge-pr doesn't understand pagination:
For instance with #12129 it sees no APPROVED review because it's on page 2 (https://api.github.com/repos/coq/coq/pulls/12129/reviews?page=2)
Not sure if ignoring pagination can cause issues with the main api call.
SkySkimmer pushed 2 commits to branch master. Commits by SkySkimmer (1) and ejgallego (1).
SkySkimmer closed Issue #12351 Redirect ignores Set Printing Width:
<!-- Thank you for reporting a bug to Coq! -->
Description of the problem
Axiom foo : forall a b c d e f g h i j k l m n o p q r s t u v w x y z : Set, a->b->c->d->e->f->g->h->i->j->k->l->m->n->o->p->q->r->s->t->u->v->w->x->y->z. Set Printing Width 10000. Print Assumptions foo. (* Axioms: foo : forall a b c d e f g h i j k l m n o p q r s t u v w x y z : Set, a -> b -> c -> d -> e -> f -> g -> h -> i -> j -> k -> l -> m -> n -> o -> p -> q -> r -> s -> \ t -> u -> v -> w -> x -> y -> z *) Redirect "foo" Print Assumptions foo. (* Axioms: foo : forall a b c d e f g h i j k l m n o p q r s t u v w x y z : Set, a -> b -> c -> d -> e -> f -> g -> h -> i -> j -> k -> l -> m -> n -> o -> p -> q -> r -> s -> t -> u -> v -> w -> x -> y -> z *)
This makes it much more annoying to make fiat-crypto compatible with #11980 in a backwards-compatible way.
Coq Version
8.11.1
SkySkimmer merged PR #12358 [topfmt] Set formatter + flush fix.
coqbot milestoned Issue #12351 Redirect ignores Set Printing Width:
<!-- Thank you for reporting a bug to Coq! -->
Description of the problem
Axiom foo : forall a b c d e f g h i j k l m n o p q r s t u v w x y z : Set, a->b->c->d->e->f->g->h->i->j->k->l->m->n->o->p->q->r->s->t->u->v->w->x->y->z. Set Printing Width 10000. Print Assumptions foo. (* Axioms: foo : forall a b c d e f g h i j k l m n o p q r s t u v w x y z : Set, a -> b -> c -> d -> e -> f -> g -> h -> i -> j -> k -> l -> m -> n -> o -> p -> q -> r -> s -> \ t -> u -> v -> w -> x -> y -> z *) Redirect "foo" Print Assumptions foo. (* Axioms: foo : forall a b c d e f g h i j k l m n o p q r s t u v w x y z : Set, a -> b -> c -> d -> e -> f -> g -> h -> i -> j -> k -> l -> m -> n -> o -> p -> q -> r -> s -> t -> u -> v -> w -> x -> y -> z *)
This makes it much more annoying to make fiat-crypto compatible with #11980 in a backwards-compatible way.
Coq Version
8.11.1
SkySkimmer pushed 3 commits to branch master. Commits by SkySkimmer (1), Zimmi48 (1) and ejgallego (1).
SkySkimmer merged PR #12364 [ci] [docker] Bump ocamlformat and dune.
SkySkimmer pushed 2 commits to branch master. Commits by JasonGross (1) and SkySkimmer (1).
SkySkimmer merged PR #12368 Print a newline at the end of timing tables.
SkySkimmer pushed 5 commits to branch master. Commits by ejgallego (4) and SkySkimmer (1).
Declare.Obls.err_not_transp
(70c4c51)declare_obligation
now takes an UState.t
(7db54ab)SkySkimmer merged PR #12371 [obligations] Minor refactoring.
Janno opened PR #12383 [Pretyping] Trigger CS search during pretyping of lambdas and applications from janno/cs_fun_nocast
to master
:
<!-- Thank you for your contribution.
Make sure you read the contributing guide and fill this template. -->This PR allows the pretyper to look for suitable canonical instances to make the following typing problems succeed (which I consider to be dual to each other):
f : key ?c ⊢ f x : _
and
(fun _ : _ => _) : key ?c
I am actually calling unification to trigger the search because I couldn't figure out how to use the result of
lookup_canonical_projection
. There will surely be a cost to this. However, I did put in a check to see if there is aProd_cs
instance forkey
. If there isn't, unification is never called. This should limit the impact.Unfortunately, there is also an unnecessary call to
whd_all
inpretype_lambda
. This could be removed with some refactoring ofsplit_tycon
, where the same reduction is already performed. (One could also imagine thatsplit_tycon
would actually be a better place to trigger the CS search but that seemed wrong to me.)I am marking this a draft because a) the code needs cleaning up, b) I am not convinced that unification is the best way to trigger CS here, and c) there might be metatheoretical implications to this change that I am not aware of.
Depends on: #12349 (because I didn't know how to create the evars for
_ -> _
, i.e. how to make sure the 2nd_
doesn't depend on the first.)<!-- Keep what applies -->
Kind: bug fix & feature.<!-- If this is a bug fix, make sure the bug was reported beforehand. -->
Fixes / closes #11189<!-- If there is a user-visible change in coqc/coqtop/coqchk/coq_makefile behavior and testing is not prohibitively expensive: -->
<!-- (Otherwise, remove this line.) -->
[X] Added / updated test-suite
<!-- If this is a feature pull request / breaks compatibility: -->
<!-- (Otherwise, remove these lines.) -->[ ] Corresponding documentation was added / updated (including any warning and error messages added / removed / modified).
- [ ] Entry added in the changelog (see https://github.com/coq/coq/tree/master/doc/changelog#unreleased-changelog for details).
SkySkimmer updated PR #12383 [Pretyping] Trigger CS search during pretyping of lambdas and applications from janno/cs_fun_nocast
to master
:
<!-- Thank you for your contribution.
Make sure you read the contributing guide and fill this template. -->This PR allows the pretyper to look for suitable canonical instances to make the following typing problems succeed (which I consider to be dual to each other):
f : key ?c ⊢ f x : _
and
(fun _ : _ => _) : key ?c
I am actually calling unification to trigger the search because I couldn't figure out how to use the result of
lookup_canonical_projection
. There will surely be a cost to this. However, I did put in a check to see if there is aProd_cs
instance forkey
. If there isn't, unification is never called. This should limit the impact.Unfortunately, there is also an unnecessary call to
whd_all
inpretype_lambda
. This could be removed with some refactoring ofsplit_tycon
, where the same reduction is already performed. (One could also imagine thatsplit_tycon
would actually be a better place to trigger the CS search but that seemed wrong to me.)I am marking this a draft because a) the code needs cleaning up, b) I am not convinced that unification is the best way to trigger CS here, and c) there might be metatheoretical implications to this change that I am not aware of.
Depends on: #12349 (because I didn't know how to create the evars for
_ -> _
, i.e. how to make sure the 2nd_
doesn't depend on the first.)<!-- Keep what applies -->
Kind: bug fix & feature.<!-- If this is a bug fix, make sure the bug was reported beforehand. -->
Fixes / closes #11189<!-- If there is a user-visible change in coqc/coqtop/coqchk/coq_makefile behavior and testing is not prohibitively expensive: -->
<!-- (Otherwise, remove this line.) -->
[X] Added / updated test-suite
<!-- If this is a feature pull request / breaks compatibility: -->
<!-- (Otherwise, remove these lines.) -->[ ] Corresponding documentation was added / updated (including any warning and error messages added / removed / modified).
- [ ] Entry added in the changelog (see https://github.com/coq/coq/tree/master/doc/changelog#unreleased-changelog for details).
SkySkimmer submitted PR Review for #12383 [Pretyping] Trigger CS search during pretyping of lambdas and applications.
SkySkimmer created PR Review Comment on #12383 [Pretyping] Trigger CS search during pretyping of lambdas and applications:
mkConst (non U) is certainly incorrect
You may be able to get universes out of decompose_reduced_canonical_projection, it should be the same instance as the instance for the inductive type.
Janno updated PR #12383 [Pretyping] Trigger CS search during pretyping of lambdas and applications from janno/cs_fun_nocast
to master
:
<!-- Thank you for your contribution.
Make sure you read the contributing guide and fill this template. -->This PR allows the pretyper to look for suitable canonical instances to make the following typing problems succeed (which I consider to be dual to each other):
f : key ?c ⊢ f x : _
and
(fun _ : _ => _) : key ?c
I am actually calling unification to trigger the search because I couldn't figure out how to use the result of
lookup_canonical_projection
. There will surely be a cost to this. However, I did put in a check to see if there is aProd_cs
instance forkey
. If there isn't, unification is never called. This should limit the impact.Unfortunately, there is also an unnecessary call to
whd_all
inpretype_lambda
. This could be removed with some refactoring ofsplit_tycon
, where the same reduction is already performed. (One could also imagine thatsplit_tycon
would actually be a better place to trigger the CS search but that seemed wrong to me.)I am marking this a draft because a) the code needs cleaning up, b) I am not convinced that unification is the best way to trigger CS here, and c) there might be metatheoretical implications to this change that I am not aware of.
Depends on: #12349 (because I didn't know how to create the evars for
_ -> _
, i.e. how to make sure the 2nd_
doesn't depend on the first.)<!-- Keep what applies -->
Kind: bug fix & feature.<!-- If this is a bug fix, make sure the bug was reported beforehand. -->
Fixes / closes #11189<!-- If there is a user-visible change in coqc/coqtop/coqchk/coq_makefile behavior and testing is not prohibitively expensive: -->
<!-- (Otherwise, remove this line.) -->
[X] Added / updated test-suite
<!-- If this is a feature pull request / breaks compatibility: -->
<!-- (Otherwise, remove these lines.) -->[ ] Corresponding documentation was added / updated (including any warning and error messages added / removed / modified).
- [ ] Entry added in the changelog (see https://github.com/coq/coq/tree/master/doc/changelog#unreleased-changelog for details).
Janno updated PR #12383 [Pretyping] Trigger CS search during pretyping of lambdas and applications from janno/cs_fun_nocast
to master
:
<!-- Thank you for your contribution.
Make sure you read the contributing guide and fill this template. -->This PR allows the pretyper to look for suitable canonical instances to make the following typing problems succeed (which I consider to be dual to each other):
f : key ?c ⊢ f x : _
and
(fun _ : _ => _) : key ?c
I am actually calling unification to trigger the search because I couldn't figure out how to use the result of
lookup_canonical_projection
. There will surely be a cost to this. However, I did put in a check to see if there is aProd_cs
instance forkey
. If there isn't, unification is never called. This should limit the impact.Unfortunately, there is also an unnecessary call to
whd_all
inpretype_lambda
. This could be removed with some refactoring ofsplit_tycon
, where the same reduction is already performed. (One could also imagine thatsplit_tycon
would actually be a better place to trigger the CS search but that seemed wrong to me.)I am marking this a draft because a) the code needs cleaning up, b) I am not convinced that unification is the best way to trigger CS here, and c) there might be metatheoretical implications to this change that I am not aware of.
Depends on: #12349 (because I didn't know how to create the evars for
_ -> _
, i.e. how to make sure the 2nd_
doesn't depend on the first.)<!-- Keep what applies -->
Kind: bug fix & feature.<!-- If this is a bug fix, make sure the bug was reported beforehand. -->
Fixes / closes #11189<!-- If there is a user-visible change in coqc/coqtop/coqchk/coq_makefile behavior and testing is not prohibitively expensive: -->
<!-- (Otherwise, remove this line.) -->
[X] Added / updated test-suite
<!-- If this is a feature pull request / breaks compatibility: -->
<!-- (Otherwise, remove these lines.) -->[ ] Corresponding documentation was added / updated (including any warning and error messages added / removed / modified).
- [ ] Entry added in the changelog (see https://github.com/coq/coq/tree/master/doc/changelog#unreleased-changelog for details).
Janno submitted PR Review for #12383 [Pretyping] Trigger CS search during pretyping of lambdas and applications.
Janno created PR Review Comment on #12383 [Pretyping] Trigger CS search during pretyping of lambdas and applications:
Should be fixed now.
ejgallego updated PR #12372 [declare] Refactor constant information into a record. from proof+info
to master
:
This improves the interface, and allows even more sealing of the API.
This is yet work in progress.
Zimmi48 assigned Issue #12382 [zulip] Please move notifications to their own stream. (assigned to Zimmi48):
The notifications topics currently live in the "Coq dev" stream; IMHO they would be better in their own stream "Github notifications", the current setup:
- pollutes the list of topics in the stream [the topics are consistently at the top]
- makes it harder so follow the dev stream. I know I could mute them but sometimes I'd like to have a look at them too.
MSoegtropIMC updated PR #12186 CReal: changed epsilon for modulus of convergence from 1/n to 1/2^n from creal-new-modulus
to master
:
This PR changes the epsilon in the definition of the modulus of convergence for CReal from 1/n to 1/2^n. This avoids the issue that in practical high precision computations, even as binary integer n would be quite large (say 2^1000000), although quadratically convergent algorithms might need only a few 10 iterations to reach such a precision.
This is work in progress (right now I just did the main file ConstructiveCauchyReals.v).
@VincentSe : some things I think I should change:
as far as I can tell the major issue for the many lengthy manual arithmetic proofs is the use of variables in Qmake (a#b). As far as I can tell ring, field and lra don't understand that # and / is more or less the same thing. They can compute with literal numbers like 1#2 * 2#3 = 1#3, but they don't work for say 1#n. One should write 1/n instead and use # only for literal rational numbers (ground terms). This would be a major change, though, but I think expressions like 1#n are not intended and we should not do this in the standard library.
In general I am not happy with the proof style, since proofs generally look more complicated than they actually are, but this might improve a lot with the point above and maybe a few little preprocessing tactics and reordering.
When switching to an abstracted computational structure this might get much more messy so some upfront cleanup would help.
The addition function should be fully split into computational part and proof
[ ] Added / updated test-suite
- [ ] Corresponding documentation was added / updated (including any warning and error messages added / removed / modified).
- [ ] Entry added in the changelog (see https://github.com/coq/coq/tree/master/doc/changelog#unreleased-changelog for details).
JasonGross edited Issue #12378 'simpl' can easily cause Qed to blow up:
Description of the problem
In Coq 8.11.1, a 'replace' command causes the Qed to blow up (I killed it after 1 hour), but without the 'replace', the Qed takes about 0.2 seconds.
That is: In my theorem, after 100 lines of nontrivial proof script (but the kind that is normally well within Coq's capacity), I come to this proof goal:
j, c : forall _ : environ, mpred H7 : derives c j ______________________________________(1/1) True
If I finish the proof with
auto. Qed.
then the Qed takes 0.22 seconds.
If I finish the proof withreplace c with j in H7 by apply admit. auto. Qed.
then the Qed takes more than an hour, if indeed it ever finishes.The fact that I'm using a very generous Admitted lemma called
admit
is irrelevant, I believe. The original version from which I distilled this did not play any such trick.You can reproduce this as follows:
- Download commit f2549d0 of the VST repository,
- Do "make -j7" (or whatever -j argument you like)
In the last-built file, progs/verif_binary_heap.v, find the line near the end labeled
(* UNCOMMENT THIS LINE TO HAVE Qed BLOW UP IN Coq 8.11.1 ... *)
and uncomment thereplace
command.Notice that Qed now blows up. Memory usage doesn't blow up, just run time.
Coq Version 8.11.1
JasonGross opened Issue #12384 Request: Configurable native_compute optimization flags:
<!-- Thank you for reporting a bug to Coq! -->
Description of the problem
I have a case (https://github.com/mit-plv/fiat-crypto/pull/803#issuecomment-632291776) where
vm_compute
takes about 240 seconds,native_compute
takes 31.29 secs (31.081u,0.114s) (of which 31.08720 are spent in evaluation and 0.02058 are spent in reification. This is less than half the size of the test-case I'd like to be running. I'd like to have the option to specify more aggressive optimization flags (such as flambda (is this-funbox-closures
?) and-O3
rather than-Oclassic
), forcing a recompilation of the dependencies of my term on the fly if need be. I'd be willing to wait an extra 10--15 seconds of compilation time if it sped up my computation by enough here. (This obviously isn't a good trade-off in general, but it might be here.)On the other hand, when I extract this code, I see basically no difference, neither in compile-time nor run-time, between
-Oclassic
vs-O3 -unbox-closures
.cc @maximedenes
Coq Version
8.11.1
JasonGross labeled Issue #12384 Request: Configurable native_compute optimization flags:
<!-- Thank you for reporting a bug to Coq! -->
Description of the problem
I have a case (https://github.com/mit-plv/fiat-crypto/pull/803#issuecomment-632291776) where
vm_compute
takes about 240 seconds,native_compute
takes 31.29 secs (31.081u,0.114s) (of which 31.08720 are spent in evaluation and 0.02058 are spent in reification. This is less than half the size of the test-case I'd like to be running. I'd like to have the option to specify more aggressive optimization flags (such as flambda (is this-funbox-closures
?) and-O3
rather than-Oclassic
), forcing a recompilation of the dependencies of my term on the fly if need be. I'd be willing to wait an extra 10--15 seconds of compilation time if it sped up my computation by enough here. (This obviously isn't a good trade-off in general, but it might be here.)On the other hand, when I extract this code, I see basically no difference, neither in compile-time nor run-time, between
-Oclassic
vs-O3 -unbox-closures
.cc @maximedenes
Coq Version
8.11.1
JasonGross labeled Issue #12385 Notation .. does not recognize printing boxes well enough:
<!-- Thank you for reporting a bug to Coq! -->
Description of the problem
Require Import Coq.Lists.List. Notation "[ x ; y ; .. ; z ]" := (cons x (cons y .. (cons z nil) ..)) (format "'[hv ' [ '[' x ']' ; '/' '[' y ']' ; '/' .. ; '/' '[' z ']' ] ']'") : list_scope. (* Error: The format is not the same on the right- and left-hand sides of the special token "..". *)
I think this is a bug, but maybe @herbelin will point out something I'm missing.
Coq Version
8.11.1
JasonGross opened Issue #12385 Notation .. does not recognize printing boxes well enough:
<!-- Thank you for reporting a bug to Coq! -->
Description of the problem
Require Import Coq.Lists.List. Notation "[ x ; y ; .. ; z ]" := (cons x (cons y .. (cons z nil) ..)) (format "'[hv ' [ '[' x ']' ; '/' '[' y ']' ; '/' .. ; '/' '[' z ']' ] ']'") : list_scope. (* Error: The format is not the same on the right- and left-hand sides of the special token "..". *)
I think this is a bug, but maybe @herbelin will point out something I'm missing.
Coq Version
8.11.1
This topic was moved here from #Coq devs & plugin devs > Github Noisy Notifications by Théo Zimmermann
Zimmi48 closed Issue #12382 [zulip] Please move notifications to their own stream. (assigned to Zimmi48):
The notifications topics currently live in the "Coq dev" stream; IMHO they would be better in their own stream "Github notifications", the current setup:
- pollutes the list of topics in the stream [the topics are consistently at the top]
- makes it harder so follow the dev stream. I know I could mute them but sometimes I'd like to have a look at them too.
herbelin closed Issue #12385 Notation .. does not recognize printing boxes well enough:
<!-- Thank you for reporting a bug to Coq! -->
Description of the problem
Require Import Coq.Lists.List. Notation "[ x ; y ; .. ; z ]" := (cons x (cons y .. (cons z nil) ..)) (format "'[hv ' [ '[' x ']' ; '/' '[' y ']' ; '/' .. ; '/' '[' z ']' ] ']'") : list_scope. (* Error: The format is not the same on the right- and left-hand sides of the special token "..". *)
I think this is a bug, but maybe @herbelin will point out something I'm missing.
Coq Version
8.11.1
JasonGross labeled Issue #12384 Request: Configurable native_compute optimization flags:
<!-- Thank you for reporting a bug to Coq! -->
Description of the problem
I have a case (https://github.com/mit-plv/fiat-crypto/pull/803#issuecomment-632291776) where
vm_compute
takes about 240 seconds,native_compute
takes 31.29 secs (31.081u,0.114s) (of which 31.08720 are spent in evaluation and 0.02058 are spent in reification. This is less than half the size of the test-case I'd like to be running. I'd like to have the option to specify more aggressive optimization flags (such as flambda (is this-funbox-closures
?) and-O3
rather than-Oclassic
), forcing a recompilation of the dependencies of my term on the fly if need be. I'd be willing to wait an extra 10--15 seconds of compilation time if it sped up my computation by enough here. (This obviously isn't a good trade-off in general, but it might be here.)On the other hand, when I extract this code, I see basically no difference, neither in compile-time nor run-time, between
-Oclassic
vs-O3 -unbox-closures
.cc @maximedenes
Coq Version
8.11.1
JasonGross labeled Issue #12384 Request: Configurable native_compute optimization flags:
<!-- Thank you for reporting a bug to Coq! -->
Description of the problem
I have a case (https://github.com/mit-plv/fiat-crypto/pull/803#issuecomment-632291776) where
vm_compute
takes about 240 seconds,native_compute
takes 31.29 secs (31.081u,0.114s) (of which 31.08720 are spent in evaluation and 0.02058 are spent in reification. This is less than half the size of the test-case I'd like to be running. I'd like to have the option to specify more aggressive optimization flags (such as flambda (is this-funbox-closures
?) and-O3
rather than-Oclassic
), forcing a recompilation of the dependencies of my term on the fly if need be. I'd be willing to wait an extra 10--15 seconds of compilation time if it sped up my computation by enough here. (This obviously isn't a good trade-off in general, but it might be here.)On the other hand, when I extract this code, I see basically no difference, neither in compile-time nor run-time, between
-Oclassic
vs-O3 -unbox-closures
.cc @maximedenes
Coq Version
8.11.1
JasonGross opened Issue #12386 dev/tools/make-changelog.sh should automatically handle bugs fixed by the PR:
I'd like
dev/tools/make-changelog.sh
to also ask me if the PR fixes any bugs (say, a space-separated list of numbers), and it should automatically generate the "Fixes" part of the changelog as well
JasonGross labeled Issue #12386 dev/tools/make-changelog.sh should automatically handle bugs fixed by the PR:
I'd like
dev/tools/make-changelog.sh
to also ask me if the PR fixes any bugs (say, a space-separated list of numbers), and it should automatically generate the "Fixes" part of the changelog as well
JasonGross labeled Issue #12386 dev/tools/make-changelog.sh should automatically handle bugs fixed by the PR:
I'd like
dev/tools/make-changelog.sh
to also ask me if the PR fixes any bugs (say, a space-separated list of numbers), and it should automatically generate the "Fixes" part of the changelog as well
JasonGross opened Issue #12387 make print-pretty-timed-diff will raise a python exception if either "before" or "after" has no files (assigned to JasonGross):
Traceback (most recent call last): File "/home/jgross/Documents/repos/coq/tools/make-both-time-files.py", line 16, in <module> table = make_diff_table_string(left_dict, right_dict, sort_by=args.sort_by, include_mem=args.include_mem, sort_by_mem=args.sort_by_mem) File "/home/jgross/Documents/repos/coq/tools/TimeFileMaker.py", line 391, in make_diff_table_string right_peak = max(v.get(MEM_KEY, 0) for v in right_dict.values()) ValueError: max() arg is an empty sequence
JasonGross labeled Issue #12387 make print-pretty-timed-diff will raise a python exception if either "before" or "after" has no files (assigned to JasonGross):
Traceback (most recent call last): File "/home/jgross/Documents/repos/coq/tools/make-both-time-files.py", line 16, in <module> table = make_diff_table_string(left_dict, right_dict, sort_by=args.sort_by, include_mem=args.include_mem, sort_by_mem=args.sort_by_mem) File "/home/jgross/Documents/repos/coq/tools/TimeFileMaker.py", line 391, in make_diff_table_string right_peak = max(v.get(MEM_KEY, 0) for v in right_dict.values()) ValueError: max() arg is an empty sequence
JasonGross assigned Issue #12387 make print-pretty-timed-diff will raise a python exception if either "before" or "after" has no files (assigned to JasonGross):
Traceback (most recent call last): File "/home/jgross/Documents/repos/coq/tools/make-both-time-files.py", line 16, in <module> table = make_diff_table_string(left_dict, right_dict, sort_by=args.sort_by, include_mem=args.include_mem, sort_by_mem=args.sort_by_mem) File "/home/jgross/Documents/repos/coq/tools/TimeFileMaker.py", line 391, in make_diff_table_string right_peak = max(v.get(MEM_KEY, 0) for v in right_dict.values()) ValueError: max() arg is an empty sequence
JasonGross labeled Issue #12387 make print-pretty-timed-diff will raise a python exception if either "before" or "after" has no files (assigned to JasonGross):
Traceback (most recent call last): File "/home/jgross/Documents/repos/coq/tools/make-both-time-files.py", line 16, in <module> table = make_diff_table_string(left_dict, right_dict, sort_by=args.sort_by, include_mem=args.include_mem, sort_by_mem=args.sort_by_mem) File "/home/jgross/Documents/repos/coq/tools/TimeFileMaker.py", line 391, in make_diff_table_string right_peak = max(v.get(MEM_KEY, 0) for v in right_dict.values()) ValueError: max() arg is an empty sequence
JasonGross opened PR #12388 Fix an uncaught python exception in timing from fix-timing-diff-0s
to master
:
Previously, when either the 'before' or 'after' had no files, we'd get
an uncaught exception:Traceback (most recent call last): File "/home/jgross/Documents/repos/coq/tools/make-both-time-files.py", line 16, in <module> table = make_diff_table_string(left_dict, right_dict, sort_by=args.sort_by, include_mem=args.include_mem, sort_by_mem=args.sort_by_mem) File "/home/jgross/Documents/repos/coq/tools/TimeFileMaker.py", line 391, in make_diff_table_string right_peak = max(v.get(MEM_KEY, 0) for v in right_dict.values()) ValueError: max() arg is an empty sequence
Fixes #12387
- [x] Added / updated test-suite
- [x] Entry added in the changelog (see https://github.com/coq/coq/tree/master/doc/changelog#unreleased-changelog for details).
JasonGross milestoned Issue #12388 Fix an uncaught python exception in timing:
Previously, when either the 'before' or 'after' had no files, we'd get
an uncaught exception:Traceback (most recent call last): File "/home/jgross/Documents/repos/coq/tools/make-both-time-files.py", line 16, in <module> table = make_diff_table_string(left_dict, right_dict, sort_by=args.sort_by, include_mem=args.include_mem, sort_by_mem=args.sort_by_mem) File "/home/jgross/Documents/repos/coq/tools/TimeFileMaker.py", line 391, in make_diff_table_string right_peak = max(v.get(MEM_KEY, 0) for v in right_dict.values()) ValueError: max() arg is an empty sequence
Fixes #12387
- [x] Added / updated test-suite
- [x] Entry added in the changelog (see https://github.com/coq/coq/tree/master/doc/changelog#unreleased-changelog for details).
JasonGross requested coq-makefile-maintainers for a review on PR #12388 Fix an uncaught python exception in timing.
ejgallego pushed 2 commits to branch v8.12. Commits by Zimmi48 (1) and ejgallego (1).
ejgallego merged PR #12355 [8.12] Use pinned commits in dev/ci/ci-user-overlays.sh.
ejgallego updated PR #12357 [declare] Remove some unused fix_exn
from proof+no_fix_exn
to master
:
In the current proof save path, the kernel can raise an exception when
checking a proof wrapped into a future.However, in this case, the future itself will "fix" the produced
exception, with the mandatory handler set at the future's creation
time.Thus, there is no need for the declare layer to mess with exceptions
anymore, if my logic is correct. Note that thefix_exn
parameter to
theDeclare
API was not used anymore.This undoes 77cf18eb844b45776b2ec67be9f71e8dd4ca002c which comes from
pre-github times, so unfortunately I didn't have access to the
discussion.We need to be careful in
perform_buildp
as to catch theQed
error
and properly notify the STM about it withState.exn_on
; this was
previously done by the declare layer using a hack [grabbing internal
state of the future, that the future itself was not using as it was
already forced], but we now do it in the caller in a more principled
way.This has been tested in the case that tactics succeed but Qed fails
asynchronously.
pi8027 created PR Review Comment on #11906 [micromega] native support for boolean operators:
Sure. Actually what I saw in the documentation was
Show Zify ...
commands.
pi8027 submitted PR Review for #11906 [micromega] native support for boolean operators.
pi8027 submitted PR Review for #11906 [micromega] native support for boolean operators.
ppedrot assigned PR #12344 Cleanup noisy prefixes to ppedrot.
ppedrot milestoned Issue #12344 Cleanup noisy prefixes (assigned to ppedrot):
These bug me every time I look at them, they're not accessible outside section.ml / ustate.ml so there's no ambiguity to resolve.
ppedrot pushed 2 commits to branch master. Commits by ppedrot (1) and proux01 (1).
ppedrot merged PR #11986 [primitive floats] Add low level printing.
ppedrot pushed 4 commits to branch master. Commits by herbelin (3) and ppedrot (1).
ppedrot closed Issue #12233 "Show Proof" raises "Not_found" anomaly:
Adding "Show Proof" after the line
+ intuition.
in theoremunrestricted_minimization_entails_excluded_middle
inClassicalFacts.v
generates aNot_found
anomaly.I discovered this using a modified coqc that automatically applies a
Show Proof
after every tactic, then verified the bug in the official release. You get the same error on the following lines up to the Qed, but only in this proof in this library file. Nowhere else.Coq Version 8.11.0
ppedrot merged PR #12295 Fixes #12233: printing environment corrupted with eta-expansion of "match" branches.
coqbot milestoned Issue #12233 "Show Proof" raises "Not_found" anomaly:
Adding "Show Proof" after the line
+ intuition.
in theoremunrestricted_minimization_entails_excluded_middle
inClassicalFacts.v
generates aNot_found
anomaly.I discovered this using a modified coqc that automatically applies a
Show Proof
after every tactic, then verified the bug in the official release. You get the same error on the following lines up to the Qed, but only in this proof in this library file. Nowhere else.Coq Version 8.11.0
ppedrot submitted PR Review for #12076 [coqchk] Fix #5030 (coqchk reports names from opaque modules as axioms)
Mbodin opened PR #12389 Small coq_makefile improvement. from coq_makefile
to master
:
Kind: feature.
Relates to #7740 and #7722.
- [ ] Updated test-suite
- [ ] Corresponding documentation was added.
- [ ] Entry added in the changelog (see https://github.com/coq/coq/tree/master/doc/changelog#unreleased-changelog for details).
The behaviour of coq_makefile regarding
DESTDIR
is somehow confusing (as seen in the related bug reports above). The “usual” set-up in Linux seems to be:
- set
DESTDIR
to the wanted place.- set
COQMF_WINDRIVE
toCOQLIB
to “cancel” the default place.- coq_makefile will add a
user-contrib
at the end.The
COQMF_WINDRIVE
parts feels like a hack and is currently undocumented. This PR provides an alternative way (without breaking the previous way):
- set
COQLIBINSTALL
,COQDOCINSTALL
, andCOQTOPINSTALL
to whatever the user needs.Being able to set up the installation directory is especially important when using programs like
esy
, in which different Coq installation can be shared among repositories:esy
installs Coq libraries into their own directory, relying on theCOQPATH
mechanism to link everything back together. By forcing the installation to${COQLIB}/user-contrib
, coq_makefile is installing files in a shared folder, which breaks its invariants required for replication.
Mbodin requested coq-makefile-maintainers for a review on PR #12389 Small coq_makefile improvement..
proux01 updated PR #12076 [coqchk] Fix #5030 (coqchk reports names from opaque modules as axioms) (assigned to ppedrot) from fix-5030
to master
:
This is certainly conservative but it is quite simple, fixes the example given in #5030 and is already useful for me (not reporting things like
mathcomp.ssreflect.bigop.BigOp.bigopE
as axioms).Fixes #5030
- [x] Added / updated test-suite
- [x] Entry added in the changelog (see https://github.com/coq/coq/tree/master/doc/changelog#unreleased-changelog for details).
Mbodin edited PR #12389 Small coq_makefile improvement. from coq_makefile
to master
:
Kind: feature.
Relates to #7740 and #7722.
- [ ] Updated test-suite
- [ ] Corresponding documentation was added.
- [ ] Entry added in the changelog (see https://github.com/coq/coq/tree/master/doc/changelog#unreleased-changelog for details).
The behaviour of coq_makefile regarding
DESTDIR
is somehow confusing (as seen in the related bug reports above). The “usual” set-up in Linux seems to be:
- set
DESTDIR
to the wanted place.- set
COQMF_WINDRIVE
toCOQLIB
to “cancel” the default place.- coq_makefile will add a
user-contrib
at the end.The
COQMF_WINDRIVE
parts feels like a hack and is currently undocumented. This PR provides an alternative way (without breaking the previous way):
- set
COQLIBINSTALL
,COQDOCINSTALL
, andCOQTOPINSTALL
to whatever the user needs.Being able to set up the installation directory is especially important when using programs like
esy
, in which different Coq installation can be shared among repositories:esy
installs Coq libraries into their own directory, relying on theCOQPATH
mechanism to link everything back together. By forcing the installation to${COQLIB}/user-contrib
, coq_makefile is installing files in a shared folder, which breaksesy
’s invariants required for replication.
ppedrot submitted PR Review for #12318 Add Ltac2.Constr.Case.{make,nparameters,inductive}
ppedrot created PR Review Comment on #12318 Add Ltac2.Constr.Case.{make,nparameters,inductive}
I don't think that these primitives should be exposed to the casual user.
case
is an internal cache, so this should probably go intoUnsafe
as "an API on which we don't guarantee any stability".
Zimmi48 submitted PR Review for #11986 [primitive floats] Add low level printing.
Zimmi48 created PR Review Comment on #11986 [primitive floats] Add low level printing:
Sorry for seeing this too late but you could have linked directly to the doc like this:
Add flag :flag:`Printing Float` to print primitive floats as hexadecimal
ppedrot opened Issue #12390 Anomaly with ill-typed arity in inductive types:
In Coq master (ea9463bc10e83759586a41d562e996e1d34e627f):
Inductive T : nat :=. (* Anomaly "Uncaught exception Reduction.NotArity." *)
This bug was not present in 8.11.
proux01 submitted PR Review for #11986 [primitive floats] Add low level printing.
proux01 created PR Review Comment on #11986 [primitive floats] Add low level printing:
Thanks for the information. Maybe not worth a new PR?
Zimmi48 submitted PR Review for #11986 [primitive floats] Add low level printing.
Zimmi48 created PR Review Comment on #11986 [primitive floats] Add low level printing:
Yeah, maybe not.
ppedrot pushed 5 commits to branch master. Commits by proux01 (4) and ppedrot (1).
ppedrot closed Issue #5030 coqchk reports names from opaque modules as axioms:
Note: the issue was created automatically with bugzilla2github tool
Original bug ID: BZ#5030
From: @RalfJung
Reported version: 8.5
ppedrot merged PR #12076 [coqchk] Fix #5030 (coqchk reports names from opaque modules as axioms)
coqbot milestoned Issue #5030 coqchk reports names from opaque modules as axioms:
Note: the issue was created automatically with bugzilla2github tool
Original bug ID: BZ#5030
From: @RalfJung
Reported version: 8.5
Zimmi48 opened PR #12391 Backport batch of PRs to v8.12. from backport-v8.12
to v8.12
:
<!-- Thank you for your contribution.
Make sure you read the contributing guide and fill this template. --><!-- Keep what applies -->
Kind: documentation / bug fix / feature / performance / infrastructure.<!-- If this is a bug fix, make sure the bug was reported beforehand. -->
Fixes / closes #????<!-- If there is a user-visible change in coqc/coqtop/coqchk/coq_makefile behavior and testing is not prohibitively expensive: -->
<!-- (Otherwise, remove this line.) -->
[ ] Added / updated test-suite
<!-- If this is a feature pull request / breaks compatibility: -->
<!-- (Otherwise, remove these lines.) -->[ ] Corresponding documentation was added / updated (including any warning and error messages added / removed / modified).
- [ ] Entry added in the changelog (see https://github.com/coq/coq/tree/master/doc/changelog#unreleased-changelog for details).
Zimmi48 edited PR #12391 Backport batch of PRs to v8.12. from backport-v8.12
to v8.12
.
Zimmi48 updated PR #12391 Backport batch of PRs to v8.12. from backport-v8.12
to v8.12
.
Zimmi48 opened PR #12392 [backport-pr] Select correct remote of the master branch. from improve-backport
to master
:
Kind: infrastructure.
Zimmi48 milestoned Issue #12392 [backport-pr] Select correct remote of the master branch.
Kind: infrastructure.
Zimmi48 requested dev-tools-maintainers for a review on PR #12392 [backport-pr] Select correct remote of the master branch..
JasonGross submitted PR Review for #12392 [backport-pr] Select correct remote of the master branch.
JasonGross created PR Review Comment on #12392 [backport-pr] Select correct remote of the master branch.
There's the same issue here as I reported in https://github.com/coq/coq/issues/12314. You'll never actually trigger the
if
branch without making this changeREMOTE=$(git config --get "branch.master.remote" || true)
JasonGross submitted PR Review for #12392 [backport-pr] Select correct remote of the master branch.
Zimmi48 submitted PR Review for #12392 [backport-pr] Select correct remote of the master branch.
Zimmi48 created PR Review Comment on #12392 [backport-pr] Select correct remote of the master branch.
Thanks!
Zimmi48 updated PR #12392 [backport-pr] Select correct remote of the master branch. from improve-backport
to master
:
Kind: infrastructure.
Zimmi48 submitted PR Review for #12392 [backport-pr] Select correct remote of the master branch.
Zimmi48 created PR Review Comment on #12392 [backport-pr] Select correct remote of the master branch.
@JasonGross Fixed in this tool and all the others.
Zimmi48 updated PR #12391 Backport batch of PRs to v8.12. from backport-v8.12
to v8.12
.
ejgallego pushed 2 commits to branch v8.12. Commits by ejgallego (1) and ppedrot (1).
ejgallego merged PR #12363 [8.12] Tweak the OCaml version used to generate the MacOS package.
Zimmi48 updated PR #12391 Backport batch of PRs to v8.12. from backport-v8.12
to v8.12
.
ejgallego opened PR #12393 [declare] Miscellaneous nits from my main dev tree from declare+misc9
to master
:
Some small commits from my dev tree, I think these are for the most part quite trivial, tho we reduce the internal API a bit.
Depends on #12357 [no point in having to do a rebase]
Zimmi48 edited Issue #11157 Release 8.12 (assigned to Zimmi48):
Release process
As soon as 8.11 has branched off master and 8.12 RM have been nominated do:
- [x] Create the
X.X+beta1
milestone if it did not already exist.[x] Put the corresponding alpha tag using
git tag -s
.
TheVX.X+alpha
tag marks the first commit to be inmaster
and not in the
branch of the previous version.[x] Create a new issue to track the release process [copy-paste the present checklist]
- [x] Version updating PR (#11158):
- Change the version name to the next major version and the magic numbers (see #7008).
- Update the compatibility infrastructure see below for details
- [x] Update the release plan wiki page
- [x] Decide the release calendar with the team (freeze date, beta date, final
release date) and put this information in the milestone (using the
description and due date fields), and in the release wiki pageAbout one month before the beta
- [x] Create the
X.X.0
milestone and set its due date.[x] Send an announcement of the upcoming freeze on Coqdev / Discourse and ask people to
remove from the beta milestone what they already know won't be ready on time
(possibly postponing to theX.X.0
milestone for minor bug fixes,
infrastructure and documentation updates).[x] Determine which issues should / must be fixed before the beta, add them
to the beta milestone, possibly with a
"priority: blocker"
label. Make sure that all these issues are assigned (and that the assignee
provides an ETA).[ ] Ping the development coordinator (@mattam82) to get him started on
the update to the Credits chapter of the reference manual.
See also #7058.The command that was used in the previous versions to get the list
of contributors for this version isgit shortlog -s -n VX.X+alpha..master | cut -f2 | sort -k 2
. Note that the ordering is
approximative as it will misplace people with middle names. It is
also probably not correctly handlingCo-authored-by
info that we
have been using more lately, so should probably be updated to
account for this.On the date of the feature freeze
[x] Create the new version branch
vX.X
(using this name will ensure that
the branch will be automatically protected).[x] Pin the versions of libraries and plugins in
dev/ci/ci-basic-overlays.sh
to use commit hashes or tag (or, if it
exists, a branch dedicated to compatibility with the corresponding
Coq branch).[x] Remove all remaining unmerged feature PRs from the beta milestone.
[x] Start a new project to track PR backporting. The project should
have a "Request X.X+beta1 inclusion" column for the PRs that were
merged inmaster
that are to be considered for backporting, and a
"Shipped in X.X+beta1" columns to put what was backported. A message
to @coqbot in the milestone description tells it to
automatically add merged PRs to the "Request ... inclusion" column
and backported PRs to the "Shipped in ..." column. See previous
milestones for examples. When moving to the next milestone
(e.g. X.X.0), you can clear and remove the "Request X.X+beta1
inclusion" column and create new "Request X.X.0 inclusion" and
"Shipped in X.X.0" columns.The release manager is the person responsible for merging PRs that
target the version branch and backporting appropriate PRs that are
merged intomaster
.[ ] Delay non-blocking issues to the appropriate milestone and ensure
blocking issues are solved. If required to solve some blocking issues,
it is possible to revert some feature PRs in the version branch only.Before the beta release date
- [ ] Ensure the Credits chapter has been updated.
[ ] Ensure that an appropriate version of the plugins we will distribute with
Coq has been tagged.[ ] Have some people test the recently auto-generated Windows and MacOS
packages.[ ] In a PR:
Change the version name from alpha to beta1 (see
#7009).We generally do not update the magic numbers at this point.
- Set
is_a_released_version
totrue
inconfigure.ml
.- [ ] Put the
VX.X+beta1
tag usinggit tag -s
.- [ ] Check using
git push --tags --dry-run
that you are not
pushing anything else than the new tag. If needed, remove spurious
tags withgit tag -d
. When this is OK, proceed withgit push --tags
.[ ] Set
is_a_released_version
tofalse
inconfigure.ml
(if you forget about it, you'll be reminded whenever you try to
backport a PR with a changelog entry).These steps are the same for all releases (beta, final, patch-level)
[ ] Send an e-mail on Coqdev announcing that the tag has been put so that
package managers can start preparing package updates (including a
coq-bignums
compatible version).[ ] Ping @erikmd to update the Docker images in
coqorg/coq
(requirescoq-bignums
inextra-dev
for a beta / inreleased
for a final release).[ ] Draft a release on GitHub.
[ ] Get @maximedenes to sign the Windows and MacOS packages and
upload them on GitHub.[ ] Prepare a page of news on the website with the link to the GitHub release
(see coq/www#63).[ ] Upload the new version of the reference manual to the website.
TODO: setup some continuous deployment for this.[ ] Merge the website update, publish the release
and send announcement e-mails.[ ] Ping @Zimmi48 to publish a new version on Zenodo.
TODO: automate this.[ ] Close the milestone
At the final release time
[ ] In a PR:
Change the version name from X.X.0 and the magic numbers (see
#7271).Set
is_a_released_version
totrue
inconfigure.ml
.- [ ] Put the
VX.X.0
tag.- [ ] Check using
git push --tags --dry-run
that you are not
pushing anything else than the new tag. If needed, remove spurious
tags withgit tag -d
. When this is OK, proceed withgit push --tags
.[ ] Set
is_a_released_version
tofalse
inconfigure.ml
(if you forget about it, you'll be reminded whenever you try to
backport a PR with a changelog entry).Repeat the generic process documented above for all releases.
- [ ] Switch the default version of the reference manual on the website.
At the patch-level release time
We generally do not update the magic numbers at this point (see
2881a18
).Compatibility Infrastructure Update
Additionally, in the same commit, update the compatibility
infrastructure, which consists of invoking
dev/tools/update-compat.py
with the
--master
flag.Note that the
update-compat.py
script must be run twice: once
immediately after branching with the--master
flag (which sets
up Coq to support four-compat
flag arguments), *in the same
commit* as the one that updatescoq_version
in
configure.ml
, and once again later on before
the next branch point with the--release
flag (see next section).
olaure01 opened Issue #12394 injection does not work with Scheme Equality for type constructors:
<!-- Thank you for reporting a bug to Coq! -->
Description of the problem
Coq 8.5
introduced automatic simplification of sigma-type equalities generated byinjection
in presence of decidable equality generated byScheme Equality
. It does not work with type constructors such aslist
:From Coq Require Import Eqdep_dec. Inductive Fnat (P : nat -> Type) : nat -> Type := | FnatC : forall l, P l -> Fnat P l. Scheme Equality for nat. Goal forall P l p p', FnatC P l p = FnatC P l p' -> True. Proof. intros P l p p' Heq. injection Heq as Heqs. exact I. Qed. Inductive Flnat (P : list nat -> Type) : list nat -> Type := | FlnatC : forall l, P l -> Flnat P l. Scheme Equality for list. Goal forall P l p p', FlnatC P l p = FlnatC P l p' -> True. Proof. intros P l p p' Heq. Fail injection Heq as Heqs. (* without "Scheme Equality for list." it generates Heqs : existT (fun l : list nat => P l) l p = existT (fun l : list nat => P l) l p' *) exact I. Qed.
Rather than failing, it should at least provide the sigma-type equality (the behavior in
Coq 8.4
or withoutScheme Equality
).Coq Version
<!-- You can get this information by running
coqtop -v
. If relevant, please
also include your operating system. -->
from Coq 8.5
olaure01 labeled Issue #12394 injection does not work with Scheme Equality for type constructors:
<!-- Thank you for reporting a bug to Coq! -->
Description of the problem
Coq 8.5
introduced automatic simplification of sigma-type equalities generated byinjection
in presence of decidable equality generated byScheme Equality
. It does not work with type constructors such aslist
:From Coq Require Import Eqdep_dec. Inductive Fnat (P : nat -> Type) : nat -> Type := | FnatC : forall l, P l -> Fnat P l. Scheme Equality for nat. Goal forall P l p p', FnatC P l p = FnatC P l p' -> True. Proof. intros P l p p' Heq. injection Heq as Heqs. exact I. Qed. Inductive Flnat (P : list nat -> Type) : list nat -> Type := | FlnatC : forall l, P l -> Flnat P l. Scheme Equality for list. Goal forall P l p p', FlnatC P l p = FlnatC P l p' -> True. Proof. intros P l p p' Heq. Fail injection Heq as Heqs. (* without "Scheme Equality for list." it generates Heqs : existT (fun l : list nat => P l) l p = existT (fun l : list nat => P l) l p' *) exact I. Qed.
Rather than failing, it should at least provide the sigma-type equality (the behavior in
Coq 8.4
or withoutScheme Equality
).Coq Version
<!-- You can get this information by running
coqtop -v
. If relevant, please
also include your operating system. -->
from Coq 8.5
olaure01 labeled Issue #12394 injection does not work with Scheme Equality for type constructors:
<!-- Thank you for reporting a bug to Coq! -->
Description of the problem
Coq 8.5
introduced automatic simplification of sigma-type equalities generated byinjection
in presence of decidable equality generated byScheme Equality
. It does not work with type constructors such aslist
:From Coq Require Import Eqdep_dec. Inductive Fnat (P : nat -> Type) : nat -> Type := | FnatC : forall l, P l -> Fnat P l. Scheme Equality for nat. Goal forall P l p p', FnatC P l p = FnatC P l p' -> True. Proof. intros P l p p' Heq. injection Heq as Heqs. exact I. Qed. Inductive Flnat (P : list nat -> Type) : list nat -> Type := | FlnatC : forall l, P l -> Flnat P l. Scheme Equality for list. Goal forall P l p p', FlnatC P l p = FlnatC P l p' -> True. Proof. intros P l p p' Heq. Fail injection Heq as Heqs. (* without "Scheme Equality for list." it generates Heqs : existT (fun l : list nat => P l) l p = existT (fun l : list nat => P l) l p' *) exact I. Qed.
Rather than failing, it should at least provide the sigma-type equality (the behavior in
Coq 8.4
or withoutScheme Equality
).Coq Version
<!-- You can get this information by running
coqtop -v
. If relevant, please
also include your operating system. -->
from Coq 8.5
JasonGross submitted PR Review for #12392 [backport-pr] Select correct remote of the master branch.
ejgallego submitted PR Review for #12393 [declare] Miscellaneous nits from my main dev tree.
ejgallego created PR Review Comment on #12393 [declare] Miscellaneous nits from my main dev tree:
Next PR will make this
unit proof_entry
Zimmi48 updated PR #12391 Backport batch of PRs to v8.12. from backport-v8.12
to v8.12
.
Zimmi48 pushed 26 commits to branch v8.12. Commits by Zimmi48 (11), proux01 (4), SkySkimmer (3) and others (8).
MSoegtropIMC updated PR #12186 CReal: changed epsilon for modulus of convergence from 1/n to 1/2^n from creal-new-modulus
to master
:
This PR changes the epsilon in the definition of the modulus of convergence for CReal from 1/n to 1/2^n. This avoids the issue that in practical high precision computations, even as binary integer n would be quite large (say 2^1000000), although quadratically convergent algorithms might need only a few 10 iterations to reach such a precision.
This is work in progress (right now I just did the main file ConstructiveCauchyReals.v).
@VincentSe : some things I think I should change:
as far as I can tell the major issue for the many lengthy manual arithmetic proofs is the use of variables in Qmake (a#b). As far as I can tell ring, field and lra don't understand that # and / is more or less the same thing. They can compute with literal numbers like 1#2 * 2#3 = 1#3, but they don't work for say 1#n. One should write 1/n instead and use # only for literal rational numbers (ground terms). This would be a major change, though, but I think expressions like 1#n are not intended and we should not do this in the standard library.
In general I am not happy with the proof style, since proofs generally look more complicated than they actually are, but this might improve a lot with the point above and maybe a few little preprocessing tactics and reordering.
When switching to an abstracted computational structure this might get much more messy so some upfront cleanup would help.
The addition function should be fully split into computational part and proof
[ ] Added / updated test-suite
- [ ] Corresponding documentation was added / updated (including any warning and error messages added / removed / modified).
- [ ] Entry added in the changelog (see https://github.com/coq/coq/tree/master/doc/changelog#unreleased-changelog for details).
JasonGross submitted PR Review for #12318 Add Ltac2.Constr.Case.{make,nparameters,inductive}
JasonGross created PR Review Comment on #12318 Add Ltac2.Constr.Case.{make,nparameters,inductive}
Hm, okay. I think getting the number of parameters from an inductive should be exposed to the user, even without
Unsafe
. Is there a better way to do this than going through the case info?
JasonGross edited Issue #11964 native_compute compilation is quadraticish in the number of nested binders in the input:
<!-- Thank you for reporting a bug to Coq! -->
Description of the problem
Consider:
Require Import Coq.Lists.List. Inductive type := NAT | LIST (t : type) | ARROW (A B : type). Fixpoint interpt (t : type) : Set := match t with | NAT => nat | LIST t => list (interpt t) | ARROW A B => interpt A -> interpt B end. Inductive expr {var : type -> Type} {ident : type -> Type} : type -> Type := | LetIn {A B} : expr A -> (var A -> expr B) -> expr B | App {A B} : expr (ARROW A B) -> expr A -> expr B | Ident {A} : ident A -> expr A | Var {A} : var A -> expr A. Inductive ident : type -> Type := | ident_literal : nat -> ident NAT | ident_cons : ident (ARROW NAT (ARROW (LIST NAT) (LIST NAT))) | ident_nil : ident (LIST NAT) | ident_f : ident (ARROW NAT (ARROW NAT NAT)). Axiom Let_In : forall {A B : Set}, A -> (A -> B) -> B. Axiom f : nat -> nat -> nat. Fixpoint interp (ident_interp : forall t, ident t -> interpt t) {T} (v : expr T) : interpt T := match v with | LetIn v f => Let_In (interp ident_interp v) (fun v => interp ident_interp (f v)) | App f x => interp ident_interp f (interp ident_interp x) | Var v => v | Ident idc => ident_interp _ idc end. Definition ident_interp {t} (idc : ident t) : interpt t := match idc with | ident_literal x => x | ident_cons => fun x xs => cons x xs | ident_nil => nil | ident_f => fun x y => f x y end. Definition map_double_cps {T} {var} (ls : list (expr (ident:=ident) (var:=var) NAT)) (k : list (expr (ident:=ident) (var:=var) NAT) -> expr (ident:=ident) (var:=var) T) := list_rect (fun _ => (list (expr (var:=var) NAT) -> expr T) -> _) (fun k => k nil) (fun x xs rec k => LetIn (App (App (Ident ident_f) x) x) (fun y => rec (fun ys => k (cons (Var y) ys)))) ls k. Definition make_cps {var} {T} (n : nat) (m : nat) (v : expr (var:=var)(ident:=ident) NAT) (k : list (expr (var:=var) NAT) -> expr T) := nat_rect _ (fun k => k (List.repeat v n)) (fun _ rec k => rec (fun ls => map_double_cps ls k)) m k. Fixpoint reify_list {var} (ls : list (expr (var:=var) NAT)) : expr (var:=var) (LIST NAT) := match ls with | nil => Ident ident_nil | cons x xs => App (App (Ident ident_cons) x) (reify_list xs) end. Ltac do_up_to tac n := lazymatch n with | O => idtac n; tac 0 0 | S (S (S (S (S ?n')))) => do_up_to tac n'; idtac n; tac n n | S ?n' => do_up_to tac n'; idtac n; tac n n end. Ltac mk n m := let preterm := (eval vm_compute in (fun x var => make_cps (T:=LIST NAT) (var:=var) n m (Ident (ident_literal x)) (@reify_list var))) in let term := constr:(fun x => interp (@ident_interp) (preterm x _)) in term. Ltac do_time_native_compute n m:= let term := mk n m in try (once (time "native_compute" (idtac; let res := (eval native_compute in term) in idtac)); fail). Set NativeCompute Timing. Goal True. (* stack overflows occur starting at 65 *) do_up_to do_time_native_compute 60. Abort.
Processed with
#!/usr/bin/env python import re import fileinput from collections import OrderedDict REG_N = re.compile(r'^([0-9]*)$') REG_TAC = re.compile(r'^Tactic call ([^ ]*) ran for ([0-9\.]*) secs .([0-9\.]*)u,([0-9\.]*)s.*$') REG_NAT = re.compile(r'native_compute: (.*?) done in ([0-9\.]*)\s*$') def make_table(lines): ret = OrderedDict() cur_n = None for line in lines: if line.strip() == '': continue mat_n = REG_N.match(line) mat_tac = REG_TAC.match(line) mat_nat = REG_NAT.match(line) if mat_n: cur_n = mat_n.groups()[0] if cur_n not in ret.keys(): ret[cur_n] = OrderedDict([('n', cur_n), ('binders', str(int(cur_n)**2))]) elif mat_tac: tac, real, user, syst = mat_tac.groups() ret[cur_n][tac + ' (real)'] = real # ret[cur_n][tac + ' (user)'] = user # ret[cur_n][tac + ' (sys)'] = syst elif mat_nat: kind, t = mat_nat.groups() ret[cur_n]['native_compute (%s)' % kind] = t else: print('None: %s' % line) return ret if __name__ == '__main__': tbl = make_table(fileinput.input()) keys = [] for row in tbl.values(): for k in row.keys(): if k not in keys: keys.append(k) print(' | '.join(keys)) print(' | '.join('--' for i in keys)) for row in tbl.values(): print(' | '.join(row.get(k, '') for k in keys))
we get the table
n binders native_compute (Conversion to native code) native_compute (Compilation) native_compute (Evaluation) native_compute (Reification) native_compute (real) 0 0 0.00028 0.10489 0.00051 0.00007 0.106 5 25 0.00101 0.10667 0.00046 0.00046 0.108 10 100 0.00235 0.25455 0.00074 0.00141 0.259 15 225 0.00274 0.67083 0.00097 0.00235 0.677 20 400 0.00448 1.50830 0.00203 0.00540 1.52 25 625 0.00740 3.15089 0.00306 0.00684 3.169 30 900 0.00983 5.87512 0.00371 0.00875 5.898 35 1225 0.01246 10.45606 0.00899 0.00617 10.484 40 1600 0.01415 18.01643 0.00715 0.00864 18.047 45 2025 0.04017 28.58474 0.00746 0.01308 28.647 50 2500 0.02802 51.89912 0.01001 0.01464 51.953 55 3025 0.04674 74.39230 0.00976 0.01674 74.47 60 3600 0.05261 99.43878 0.01100 0.01951 99.528 Here's a plot, showing that it's vaguely quadratic:
![chart (1)](https://user-images.githubusercontent.com/396076/77876108-0c5a8400-7220-11ea-9bb0-41844419e1ac.png)cc @ppedrot @maximedenes
See also https://github.com/coq/coq/issues/11151
Coq Version
6760a066168a5be0d3b479741fe8ac6c39339610
JasonGross updated PR #11029 Add a strategy
tactic (assigned to ppedrot) from set-strategy
to master
:
Useful for guarding calls to
unfold
orcbv
to ensure that, e.g.,
Opaque foo
doesn't break some automation which tries to unfoldfoo
.Kind: feature
- [x] Added / updated test-suite
- [x] Corresponding documentation was added / updated (including any warning and error messages added / removed / modified).
- [x] Entry added in the changelog (see https://github.com/coq/coq/tree/master/doc/changelog#unreleased-changelog for details).
<strike>I'm confused about
gec_gen
vsEntry.create
vsmake_gen_entry
, and also I'm gettingFile "./theories/Init/Notations.v", line 128, characters 0-32: Error: Anomaly "grammar function not found: strategy_level." Please report at http://coq.inria.fr/bugs/.
and don't know how to fix it...</strike>
ppedrot submitted PR Review for #12318 Add Ltac2.Constr.Case.{make,nparameters,inductive}
ppedrot created PR Review Comment on #12318 Add Ltac2.Constr.Case.{make,nparameters,inductive}
I'd recommend writing an
Inductive
module which exposes functions such asnparameters : inductive -> int
that fetch that data in the environment.
Zimmi48 opened Issue #12395 [refman] Version switcher is broken:
The version switcher doesn't appear anymore on https://coq.github.io/doc/master/refman/ and https://coq.github.io/doc/v8.12/refman/. I assume this is a consequence of the update of the version of the theme (part of #12224 that we failed to notice when reviewing the output of this PR).
cc @cpitclaudel (is this something that you think would be easy to fix)
Zimmi48 labeled Issue #12395 [refman] Version switcher is broken:
The version switcher doesn't appear anymore on https://coq.github.io/doc/master/refman/ and https://coq.github.io/doc/v8.12/refman/. I assume this is a consequence of the update of the version of the theme (part of #12224 that we failed to notice when reviewing the output of this PR).
cc @cpitclaudel (is this something that you think would be easy to fix)
Zimmi48 labeled Issue #12395 [refman] Version switcher is broken:
The version switcher doesn't appear anymore on https://coq.github.io/doc/master/refman/ and https://coq.github.io/doc/v8.12/refman/. I assume this is a consequence of the update of the version of the theme (part of #12224 that we failed to notice when reviewing the output of this PR).
cc @cpitclaudel (is this something that you think would be easy to fix)
Zimmi48 milestoned Issue #12395 [refman] Version switcher is broken:
The version switcher doesn't appear anymore on https://coq.github.io/doc/master/refman/ and https://coq.github.io/doc/v8.12/refman/. I assume this is a consequence of the update of the version of the theme (part of #12224 that we failed to notice when reviewing the output of this PR).
cc @cpitclaudel (is this something that you think would be easy to fix)
Zimmi48 milestoned Issue #12396 Release notes 8.12:
Kind: documentation
This PR consolidates the release notes for 8.12+beta1. It should be a good basis on which @mattam82 can work to prepare a summary of the changes.
The consolidation was initially done thanks to the
dev/tools/generate-release-changelog.sh
script but I fixed a lot of typos and improved the wording or the links to the doc here and there.More importantly, I've also reordered the entries by type of change (the order is Changed, Removed, Deprecated, Added, Fixed). I did this because I feel like this makes reading the changelog much easier when there are many entries. The order is chosen so that breaking changes are shown first. If people like this ordering, then we can adapt the changelog infrastructure so that it is automatically sorted like this next time.
I also introduced some new categories: Options, flags and attributes + Commands instead of Commands and options because this category was very long; Reals library (split out of Standard Library because there was much content about this); Reference manual to document all the recent important changes that it received.
The last commit introduces changelog entries about the reference manual (cc @jfehrle).
Zimmi48 opened PR #12396 Release notes 8.12 from release-notes-8.12
to master
:
Kind: documentation
This PR consolidates the release notes for 8.12+beta1. It should be a good basis on which @mattam82 can work to prepare a summary of the changes.
The consolidation was initially done thanks to the
dev/tools/generate-release-changelog.sh
script but I fixed a lot of typos and improved the wording or the links to the doc here and there.More importantly, I've also reordered the entries by type of change (the order is Changed, Removed, Deprecated, Added, Fixed). I did this because I feel like this makes reading the changelog much easier when there are many entries. The order is chosen so that breaking changes are shown first. If people like this ordering, then we can adapt the changelog infrastructure so that it is automatically sorted like this next time.
I also introduced some new categories: Options, flags and attributes + Commands instead of Commands and options because this category was very long; Reals library (split out of Standard Library because there was much content about this); Reference manual to document all the recent important changes that it received.
The last commit introduces changelog entries about the reference manual (cc @jfehrle).
Zimmi48 requested doc-maintainers for a review on PR #12396 Release notes 8.12.
Zimmi48 submitted PR Review for #12379 Omit voluminous Latex warnings.
Zimmi48 milestoned Issue #12379 Omit voluminous Latex warnings:
Similar to https://github.com/coq/coq/pull/12195. The
-q
of that PR didn't make much difference and hid some messages useful for local work.
Zimmi48 assigned PR #12379 Omit voluminous Latex warnings to Zimmi48.
Zimmi48 pushed 2 commits to branch master. Commits by Zimmi48 (1) and jfehrle (1).
Zimmi48 merged PR #12379 Omit voluminous Latex warnings.
Zimmi48 milestoned Issue #12380 Fix #12361 (indexing issues in the PDF)
Kind: infrastructure.
Follow up to https://github.com/coq/coq/issues/12361.
Zimmi48 closed without merge PR #12369 Show correct index entries in pdf.
coqbot demilestoned Issue #12369 Show correct index entries in pdf:
Fixes #12361
Zimmi48 opened PR #12397 Fix #12280: do not use xindy to avoid build failures on some machines. from do-not-use-xindy
to master
:
Kind: documentation infrastructure.
Fixes / closes #12280.
- [x] Corresponding documentation was added / updated (including any warning and error messages added / removed / modified).
The build still goes through and the index still looks fine. Since the manual is entirely written in English, I think there is no issue with using
makeindex
instead.
Zimmi48 milestoned Issue #12397 Fix #12280: do not use xindy to avoid build failures on some machines.
Kind: documentation infrastructure.
Fixes / closes #12280.
- [x] Corresponding documentation was added / updated (including any warning and error messages added / removed / modified).
The build still goes through and the index still looks fine. Since the manual is entirely written in English, I think there is no issue with using
makeindex
instead.
Zimmi48 requested ci-maintainers and doc-maintainers for a review on PR #12397 Fix #12280: do not use xindy to avoid build failures on some machines..
Zimmi48 requested ci-maintainers and doc-maintainers for a review on PR #12397 Fix #12280: do not use xindy to avoid build failures on some machines..
Zimmi48 updated PR #12397 Fix #12280: do not use xindy to avoid build failures on some machines. from do-not-use-xindy
to master
:
Kind: documentation infrastructure.
Fixes / closes #12280.
- [x] Corresponding documentation was added / updated (including any warning and error messages added / removed / modified).
The build still goes through and the index still looks fine. Since the manual is entirely written in English, I think there is no issue with using
makeindex
instead.
ejgallego updated PR #12372 [declare] Refactor constant information into a record. from proof+info
to master
:
This improves the interface, and allows even more sealing of the API.
This is yet work in progress.
cpitclaudel submitted PR Review for #12397 Fix #12280: do not use xindy to avoid build failures on some machines.
Zimmi48 milestoned Issue #12398 Allow passing arguments directly to nix-shell.
Kind: infrastructure.
Zimmi48 opened PR #12398 Allow passing arguments directly to nix-shell. from nix-shell-args
to master
:
Kind: infrastructure.
Zimmi48 requested nix-maintainers for a review on PR #12398 Allow passing arguments directly to nix-shell..
Zimmi48 edited Issue #12332 Reference manual does not build (raises fatal warnings) with Sphinx 3. (assigned to Zimmi48):
<!-- Thank you for reporting a bug to Coq! -->
Description of the problem
When building refman-html (via
dune
ormake
) the build is stopped by the following fatal warning:Warning, treated as error: /home/janno/src/coq/_build/default/doc/sphinx/proof-engine/ltac2.rst:665:duplicate token description of coq:ltac2_term , other instance in proof-engine/ltac2
<!-- If you can, it's helpful to provide self-contained example of some code
that reproduces the bug. If not, a link to a larger example is also helpful. -->Coq Version
master+changes from #12329.
Python package versions:
antlr4-python3-runtime==4.8 beautifulsoup4==4.9.0 pexpect==4.8.0 sphinx-rtd-theme==0.4.3 sphinxcontrib-applehelp==1.0.2 sphinxcontrib-bibtex==1.0.0 sphinxcontrib-devhelp==1.0.2 sphinxcontrib-htmlhelp==1.0.3 sphinxcontrib-jsmath==1.0.1 sphinxcontrib-qthelp==1.0.3 sphinxcontrib-serializinghtml==1.1.4
<!-- You can get this information by running
coqtop -v
. If relevant, please
also include your operating system. -->
ppedrot assigned PR #12366 Delay evaluating arguments of the "exists" tactic to ppedrot.
ppedrot submitted PR Review for #12366 Delay evaluating arguments of the "exists" tactic.
ppedrot milestoned Issue #12366 Delay evaluating arguments of the "exists" tactic (assigned to ppedrot):
<!-- Thank you for your contribution.
Make sure you read the contributing guide and fill this template. --><!-- Keep what applies -->
Kind: bug fix<!-- If this is a bug fix, make sure the bug was reported beforehand. -->
Fixes / closes #12365<!-- If there is a user-visible change in coqc/coqtop/coqchk/coq_makefile behavior and testing is not prohibitively expensive: -->
<!-- (Otherwise, remove this line.) -->
[x] Added / updated test-suite
<!-- If this is a feature pull request / breaks compatibility: -->
<!-- (Otherwise, remove these lines.) -->[x] Entry added in the changelog (see https://github.com/coq/coq/tree/master/doc/changelog#unreleased-changelog for details).
ppedrot milestoned Issue #12399 Remove the prolog tactic.
It was deprecated in 8.12 and not used in the wild.
- [ ] Added / updated test-suite
- [ ] Corresponding documentation was added / updated (including any warning and error messages added / removed / modified).
- [ ] Entry added in the changelog (see https://github.com/coq/coq/tree/master/doc/changelog#unreleased-changelog for details).
ppedrot opened PR #12399 Remove the prolog tactic. from rm-prolog
to master
:
It was deprecated in 8.12 and not used in the wild.
- [ ] Added / updated test-suite
- [ ] Corresponding documentation was added / updated (including any warning and error messages added / removed / modified).
- [ ] Entry added in the changelog (see https://github.com/coq/coq/tree/master/doc/changelog#unreleased-changelog for details).
ppedrot requested tactics-maintainers and ltac-maintainers for a review on PR #12399 Remove the prolog tactic..
ppedrot requested tactics-maintainers and ltac-maintainers for a review on PR #12399 Remove the prolog tactic..
JasonGross assigned [PR #12392 [backport-pr] Select correct remote of the master branch.](https://github.com/coq/coq/pull/12392 to JasonGross.
JasonGross pushed 3 commits to branch master. Commits by Zimmi48 (2) and JasonGross (1).
JasonGross closed Issue #12314 dev/tools/merge-pr.sh dies silently when the current branch has no remote:
The call
https://github.com/coq/coq/blob/d80458841316ca7edf7317ef412142e27133c931/dev/tools/merge-pr.sh#L84
will cause the script to exit (due toset -e
) silently if there is no remote. Perhaps there should be an|| true
at the end?
JasonGross merged PR #12392 [backport-pr] Select correct remote of the master branch.
coqbot milestoned Issue #12314 dev/tools/merge-pr.sh dies silently when the current branch has no remote:
The call
https://github.com/coq/coq/blob/d80458841316ca7edf7317ef412142e27133c931/dev/tools/merge-pr.sh#L84
will cause the script to exit (due toset -e
) silently if there is no remote. Perhaps there should be an|| true
at the end?
JasonGross updated PR #11029 Add a strategy
tactic (assigned to ppedrot) from set-strategy
to master
:
Useful for guarding calls to
unfold
orcbv
to ensure that, e.g.,
Opaque foo
doesn't break some automation which tries to unfoldfoo
.Kind: feature
- [x] Added / updated test-suite
- [x] Corresponding documentation was added / updated (including any warning and error messages added / removed / modified).
- [x] Entry added in the changelog (see https://github.com/coq/coq/tree/master/doc/changelog#unreleased-changelog for details).
<strike>I'm confused about
gec_gen
vsEntry.create
vsmake_gen_entry
, and also I'm gettingFile "./theories/Init/Notations.v", line 128, characters 0-32: Error: Anomaly "grammar function not found: strategy_level." Please report at http://coq.inria.fr/bugs/.
and don't know how to fix it...</strike>
jfehrle submitted PR Review for #12396 Release notes 8.12.
jfehrle submitted PR Review for #12396 Release notes 8.12.
jfehrle created PR Review Comment on #12396 Release notes 8.12:
This is idiomatic. Applies in several other places.
Fehrle, reviewed by Théo Zimmermann).
jfehrle created PR Review Comment on #12396 Release notes 8.12:
Most of the grammar is now presented using the notation mechanism that has been used to present commands and tactics since Coq 8.8, which is documented in :ref:`syntax-conventions`
jfehrle created PR Review Comment on #12396 Release notes 8.12:
A selector that allows switching between versions of the reference
jfehrle created PR Review Comment on #12396 Release notes 8.12:
I'd include a little bit of why as well as what was done.
Mention that sections were reordered to give a more logical organization.
For HTML, split on multiple pages to improve usability. Or say "split into smaller pages".
Wording corrections:
The reference manual has been restructured. In the new version, there are fewer top-level chapters, and, in the HTML format, chapters are split into multiple pages. This is still a work in progress and further restructuring is expected in the next versions of Coq
jfehrle created PR Review Comment on #12396 Release notes 8.12:
Most of the documented syntax has been thoroughly updated to make it accurate and easily understood. This was done using a semi-automated `doc_grammar` tool introduced for this purpose and through significant revisions to the text.
Still very understated--getting an accurate, readable grammar is a big step forward.
The pre-change grammar was really bad and incomplete.
Still a good bit of syntax that's not explained (e.g. in the terms chapter).Will we mention the doc improvements (and the plans for subsequent improvements) more prominently, such as in the email announcing the release?
jfehrle submitted PR Review for #12396 Release notes 8.12.
jfehrle created PR Review Comment on #12396 Release notes 8.12:
Given that there are 1000 lines describing the changes, how about making them easy to scan/jump to by here adding a list of hyperlinks to the subsections that follow OR making them (sub-)* sections so they appear in the TOC?
jfehrle submitted PR Review for #12396 Release notes 8.12.
jfehrle created PR Review Comment on #12396 Release notes 8.12:
Maybe better in the "Tactics" section.
jfehrle submitted PR Review for #12396 Release notes 8.12.
JasonGross labeled Issue #12400 Coq's CI fails on at least some developments using native_compute due to incompatible OCaml versions (fiat-crypto)
<!-- Thank you for reporting a bug to Coq! -->
Description of the problem
File "/tmp/Coq_native97170a/Coq_native2ba814.native", line 1: Error: /builds/coq/coq/_install_ci/lib/coq/kernel/nativevalues.cmi is not a compiled interface for this version of OCaml. It seems to be for a newer version of OCaml. Finished failing transaction in 1.16 secs (0.017u,0.007s) (failure) File "./src/UnsaturatedSolinasHeuristics/Tests.v", line 138, characters 0-459: Error: Native compiler exited with status 2 Command exited with non-zero status 1
https://gitlab.com/coq/coq/-/jobs/565436568
cc @coq/ci-maintainers
Coq Version
16e0877c6e3ec6228875e10afb1ec17d640eb1e9
JasonGross opened Issue #12400 Coq's CI fails on at least some developments using native_compute due to incompatible OCaml versions (fiat-crypto)
<!-- Thank you for reporting a bug to Coq! -->
Description of the problem
File "/tmp/Coq_native97170a/Coq_native2ba814.native", line 1: Error: /builds/coq/coq/_install_ci/lib/coq/kernel/nativevalues.cmi is not a compiled interface for this version of OCaml. It seems to be for a newer version of OCaml. Finished failing transaction in 1.16 secs (0.017u,0.007s) (failure) File "./src/UnsaturatedSolinasHeuristics/Tests.v", line 138, characters 0-459: Error: Native compiler exited with status 2 Command exited with non-zero status 1
https://gitlab.com/coq/coq/-/jobs/565436568
cc @coq/ci-maintainers
Coq Version
16e0877c6e3ec6228875e10afb1ec17d640eb1e9
JasonGross labeled Issue #12400 Coq's CI fails on at least some developments using native_compute due to incompatible OCaml versions (fiat-crypto)
<!-- Thank you for reporting a bug to Coq! -->
Description of the problem
File "/tmp/Coq_native97170a/Coq_native2ba814.native", line 1: Error: /builds/coq/coq/_install_ci/lib/coq/kernel/nativevalues.cmi is not a compiled interface for this version of OCaml. It seems to be for a newer version of OCaml. Finished failing transaction in 1.16 secs (0.017u,0.007s) (failure) File "./src/UnsaturatedSolinasHeuristics/Tests.v", line 138, characters 0-459: Error: Native compiler exited with status 2 Command exited with non-zero status 1
https://gitlab.com/coq/coq/-/jobs/565436568
cc @coq/ci-maintainers
Coq Version
16e0877c6e3ec6228875e10afb1ec17d640eb1e9
JasonGross opened Issue #12401 [ci] [engine-bench] "Fatal error: ref_table overflow" is uninformative and missing location info:
<!-- Thank you for reporting a bug to Coq! -->
Description of the problem
What does this error even mean?
https://gitlab.com/coq/coq/-/jobs/565431385Coq Version
16e0877c6e3ec6228875e10afb1ec17d640eb1e9
JasonGross labeled Issue #12401 [ci] [engine-bench] "Fatal error: ref_table overflow" is uninformative and missing location info:
<!-- Thank you for reporting a bug to Coq! -->
Description of the problem
What does this error even mean?
https://gitlab.com/coq/coq/-/jobs/565431385Coq Version
16e0877c6e3ec6228875e10afb1ec17d640eb1e9
JasonGross opened Issue #12402 Docker is sometimes unreliable (ERROR: Preparation failed: Error: No such image registry.gitlab.com/coq/coq:bionic_coq-...)
ERROR: Preparation failed: Error: No such image: registry.gitlab.com/coq/coq:bionic_coq-V2020-05-19-V33 (docker.go:203:0s)
JasonGross labeled Issue #12402 Docker is sometimes unreliable (ERROR: Preparation failed: Error: No such image registry.gitlab.com/coq/coq:bionic_coq-...)
ERROR: Preparation failed: Error: No such image: registry.gitlab.com/coq/coq:bionic_coq-V2020-05-19-V33 (docker.go:203:0s)
JasonGross labeled Issue #12402 Docker is sometimes unreliable (ERROR: Preparation failed: Error: No such image registry.gitlab.com/coq/coq:bionic_coq-...)
ERROR: Preparation failed: Error: No such image: registry.gitlab.com/coq/coq:bionic_coq-V2020-05-19-V33 (docker.go:203:0s)
mdempsky opened PR #12403 Fix hyperlinks in changes.rst from changes-links
to master
:
Kind: documentation
mdempsky requested doc-maintainers for a review on PR #12403 Fix hyperlinks in changes.rst.
ppedrot edited PR #12399 Remove the prolog tactic. from rm-prolog
to master
:
It was deprecated in 8.12 and not used in the wild.
- [ ] Added / updated test-suite
- [ ] Corresponding documentation was added / updated (including any warning and error messages added / removed / modified).
- [x] Entry added in the changelog (see https://github.com/coq/coq/tree/master/doc/changelog#unreleased-changelog for details).
ppedrot updated PR #12399 Remove the prolog tactic. from rm-prolog
to master
:
It was deprecated in 8.12 and not used in the wild.
- [ ] Added / updated test-suite
- [ ] Corresponding documentation was added / updated (including any warning and error messages added / removed / modified).
- [x] Entry added in the changelog (see https://github.com/coq/coq/tree/master/doc/changelog#unreleased-changelog for details).
ppedrot edited PR #12399 Remove the prolog tactic. from rm-prolog
to master
:
It was deprecated in 8.12 and not used in the wild.
- [x] Entry added in the changelog (see https://github.com/coq/coq/tree/master/doc/changelog#unreleased-changelog for details).
Zimmi48 submitted PR Review for #12399 Remove the prolog tactic.
shiatsumat opened PR #12404 trim new lines in ssreflect-proof-language.rst from patch-1
to master
:
Trimmed all redundant new lines after
.. coqdoc::
inssreflect-proof-language.rst
.<!-- Thank you for your contribution.
Make sure you read the contributing guide and fill this template. --><!-- Keep what applies -->
Kind: documentation<!-- If this is a bug fix, make sure the bug was reported beforehand. -->
shiatsumat requested doc-maintainers for a review on PR #12404 trim new lines in ssreflect-proof-language.rst.
SkySkimmer unlabeled Issue #12401 [ci] [engine-bench] "Fatal error: ref_table overflow" is uninformative and missing location info:
<!-- Thank you for reporting a bug to Coq! -->
Description of the problem
What does this error even mean?
https://gitlab.com/coq/coq/-/jobs/565431385Coq Version
16e0877c6e3ec6228875e10afb1ec17d640eb1e9
SkySkimmer edited Issue #12401 [engine-bench] "Fatal error: ref_table overflow" is uninformative and missing location info:
<!-- Thank you for reporting a bug to Coq! -->
Description of the problem
What does this error even mean?
https://gitlab.com/coq/coq/-/jobs/565431385Coq Version
16e0877c6e3ec6228875e10afb1ec17d640eb1e9
gares submitted PR Review for #12389 Small coq_makefile improvement.
gares assigned [PR #12389 Small coq_makefile improvement.](https://github.com/coq/coq/pull/12389 to gares.
gares milestoned Issue #12389 Small coq_makefile improvement. (assigned to gares):
Kind: feature.
Relates to #7740 and #7722.
- [ ] Updated test-suite
- [ ] Corresponding documentation was added.
- [ ] Entry added in the changelog (see https://github.com/coq/coq/tree/master/doc/changelog#unreleased-changelog for details).
The behaviour of coq_makefile regarding
DESTDIR
is somehow confusing (as seen in the related bug reports above). The “usual” set-up in Linux seems to be:
- set
DESTDIR
to the wanted place.- set
COQMF_WINDRIVE
toCOQLIB
to “cancel” the default place.- coq_makefile will add a
user-contrib
at the end.The
COQMF_WINDRIVE
parts feels like a hack and is currently undocumented. This PR provides an alternative way (without breaking the previous way):
- set
COQLIBINSTALL
,COQDOCINSTALL
, andCOQTOPINSTALL
to whatever the user needs.Being able to set up the installation directory is especially important when using programs like
esy
, in which different Coq installation can be shared among repositories:esy
installs Coq libraries into their own directory, relying on theCOQPATH
mechanism to link everything back together. By forcing the installation to${COQLIB}/user-contrib
, coq_makefile is installing files in a shared folder, which breaksesy
’s invariants required for replication.
SkySkimmer opened PR #12405 Stop using flambda for fiat-crypto connected jobs from stop-flambda-bignums
to master
:
Fix #12400
SkySkimmer requested ci-maintainers for a review on PR #12405 Stop using flambda for fiat-crypto connected jobs.
Blaisorblade opened Issue #12406 Type error in dependent induction
Description of the problem
The definition of elim_tac in
theories/Program/Equality.v
is ill-typed (as noticed by @mattam82), causingdependent induction
to sometimes produce ill-typed terms — here's the needed fix:Ltac elim_tac tac p ::= let ty := type of p in - let eliminator := eval simpl in (@elim (_ : DependentEliminationPackage ty)) in + let eliminator := eval simpl in (@elim _ (_ : DependentEliminationPackage ty)) in tac p eliminator.
elim
comes fromClass DependentEliminationPackage (A : Type) := { elim_type : Type ; elim : elim_type }.
My attempt using that run into further problems (maybe #8275), but I guess this should still be fixed. I'll try to send a PR, even tho I don't have a testcase.
(Sorry for the incomplete issue, not sure I'll get to file a better one).
Coq Version
8.11.1
SkySkimmer milestoned Issue #12405 Stop using flambda for fiat-crypto connected jobs:
Fix #12400
Blaisorblade opened PR #12407 Fix #12406: fix Coq type error in dependent induction's Ltac from dep-ind-fix-ltac-type-error
to master
:
<!-- Keep what applies -->
Kind: bug fix.<!-- If this is a bug fix, make sure the bug was reported beforehand. -->
Fixes / closes #12406<!-- If there is a user-visible change in coqc/coqtop/coqchk/coq_makefile behavior and testing is not prohibitively expensive: -->
<!-- (Otherwise, remove this line.) -->
[ ] Added / updated test-suite
<!-- If this is a feature pull request / breaks compatibility: -->
<!-- (Otherwise, remove these lines.) -->[ ] Entry added in the changelog (see https://github.com/coq/coq/tree/master/doc/changelog#unreleased-changelog for details).
proux01 updated PR #12218 Numeral notations for non inductive types from numeral-notations-non-inductive
to master
:
This is a tentative implementation of the idea discussed in #12035
This is a draft PR due to the fact that it is still lacking some proofs and proper documentation.
Numeral Notation non_inductive via inductive using ...
The main idea is to use actual inductive types that map what you want to parse/print and just translate to (resp. from) the actual type from (resp. to) this inductive type after calling the parser (resp before the printer). One then just has to provide a mapping from globrefs of the actual type to constructors of the inductive type.
For instance, for reals, that looks something like
Inductive IZ := | IZpow_pos : Z -> positive -> IZ | IZ0 : IZ | IZpos : positive -> IZ | IZneg : positive -> IZ. Inductive IR := | IRZ : IZ -> IR | IRQ : Q -> IR | IRmult : IR -> IR -> IR | IRdiv : IR -> IR -> IR. [..] (* define parser numeral_to_IR and printer IR_to_numeral *) Numeral Notation R via IR using (IZR IRZ, Q2R IRQ, Rmult IRmult, Rdiv IRdiv, Z.pow_pos IZpow_pos, Z0 IZ0, Zpos IZpos, Zneg IZneg) numeral_to_IR IR_to_numeral : R_scope.
Two notations are provided as examples for
Q
andR
.Q
Previously rationals were all parsed as a pair numerator, denominator. This means
1.02
and102e-2
were both parsed as102 # 100
and could not be tell apart when printing. So the printer had to choose between two representations : without exponent or without decimal dot. The choice was made heuristically toward a most compact representation.Now, decimal dot is still parsed as a power of ten denominator but exponents are parsed as a product or division by
Z.pow_pos
. For instance,1.02
is parsed as102 # 100
whereas102e-2
is parsed as(102 # 1) / (Z.pow_pos 10 2 # 1)
.
1.02
and102e-2
remain equal (proved by reflexivity) but1.02e1 = (102 # 100) * (10 # 1) = 1020 # 100
and10.2 = 102 # 10
no longer are.A nice side effect is that exponents can no longer blow up during parsing. Previously
1e1_000_000
literally produced a numerator with a million digits, now it just yields(1 # 1) * (Z.pow_pos 10 1_000_000 # 1)
.R
Previously real constants were parsed by an unproved OCaml code. The parser and printer are now implemented in Coq, which will enable a proof and hopefully make it easier to maintain / make evolve.
Previously reals were all parsed as an integer, an integer multiplied by a power of ten or an integer divided by a power of ten. This means
1.02
and102e-2
were both parsed as102 / 100
and could not be tell apart when printing. So the printer had to choose between two representations : without exponent or without decimal dot. The choice was made heuristically toward a most compact representation.Now, decimal dot is parsed as a rational and exponents are parsed as a product or division by a power of ten. For instance,
1.02
is parsed asQ2R (102 # 100)
whereas102e-2
is parsed asIZR 102 / IZR (Z.pow_pos 10 2)
.
1.02
and102e-2
remain equal (proved by reflexivity) but1.02e1 = Q2R (102 # 100) * 10
and10.2 = Q2R (102 # 10)
no longer are.TODO
~Depends from: #11948~
- [ ] prove numeral notation for
Q
- [ ] prove numeral notation for
R
- [x] Added / updated test-suite
- [ ] Corresponding documentation was added / updated (including any warning and error messages added / removed / modified).
- [ ] Entry added in the changelog (see https://github.com/coq/coq/tree/master/doc/changelog#unreleased-changelog for details).
proux01 edited PR #12218 Numeral notations for non inductive types from numeral-notations-non-inductive
to master
:
This is a tentative implementation of the idea discussed in #12035
This is still lacking some proofs and proper documentation.
Numeral Notation non_inductive via inductive using ...
The main idea is to use actual inductive types that map what you want to parse/print and just translate to (resp. from) the actual type from (resp. to) this inductive type after calling the parser (resp before the printer). One then just has to provide a mapping from globrefs of the actual type to constructors of the inductive type.
For instance, for reals, that looks something like
Inductive IZ := | IZpow_pos : Z -> positive -> IZ | IZ0 : IZ | IZpos : positive -> IZ | IZneg : positive -> IZ. Inductive IR := | IRZ : IZ -> IR | IRQ : Q -> IR | IRmult : IR -> IR -> IR | IRdiv : IR -> IR -> IR. [..] (* define parser numeral_to_IR and printer IR_to_numeral *) Numeral Notation R via IR using (IZR IRZ, Q2R IRQ, Rmult IRmult, Rdiv IRdiv, Z.pow_pos IZpow_pos, Z0 IZ0, Zpos IZpos, Zneg IZneg) numeral_to_IR IR_to_numeral : R_scope.
Two notations are provided as examples for
Q
andR
.Q
Previously rationals were all parsed as a pair numerator, denominator. This means
1.02
and102e-2
were both parsed as102 # 100
and could not be tell apart when printing. So the printer had to choose between two representations : without exponent or without decimal dot. The choice was made heuristically toward a most compact representation.Now, decimal dot is still parsed as a power of ten denominator but exponents are parsed as a product or division by
Z.pow_pos
. For instance,1.02
is parsed as102 # 100
whereas102e-2
is parsed as(102 # 1) / (Z.pow_pos 10 2 # 1)
.
1.02
and102e-2
remain equal (proved by reflexivity) but1.02e1 = (102 # 100) * (10 # 1) = 1020 # 100
and10.2 = 102 # 10
no longer are.A nice side effect is that exponents can no longer blow up during parsing. Previously
1e1_000_000
literally produced a numerator with a million digits, now it just yields(1 # 1) * (Z.pow_pos 10 1_000_000 # 1)
.R
Previously real constants were parsed by an unproved OCaml code. The parser and printer are now implemented in Coq, which will enable a proof and hopefully make it easier to maintain / make evolve.
Previously reals were all parsed as an integer, an integer multiplied by a power of ten or an integer divided by a power of ten. This means
1.02
and102e-2
were both parsed as102 / 100
and could not be tell apart when printing. So the printer had to choose between two representations : without exponent or without decimal dot. The choice was made heuristically toward a most compact representation.Now, decimal dot is parsed as a rational and exponents are parsed as a product or division by a power of ten. For instance,
1.02
is parsed asQ2R (102 # 100)
whereas102e-2
is parsed asIZR 102 / IZR (Z.pow_pos 10 2)
.
1.02
and102e-2
remain equal (proved by reflexivity) but1.02e1 = Q2R (102 # 100) * 10
and10.2 = Q2R (102 # 10)
no longer are.TODO
~Depends from: #11948~
- [ ] prove numeral notation for
Q
- [ ] prove numeral notation for
R
- [x] Added / updated test-suite
- [ ] Corresponding documentation was added / updated (including any warning and error messages added / removed / modified).
- [ ] Entry added in the changelog (see https://github.com/coq/coq/tree/master/doc/changelog#unreleased-changelog for details).
ejgallego updated PR #12393 [declare] Miscellaneous nits from my main dev tree from declare+misc9
to master
:
Some small commits from my dev tree, I think these are for the most part quite trivial, tho we reduce the internal API a bit.
Depends on #12357 [no point in having to do a rebase]
ejgallego closed without merge PR #12142 [proof] Split vio and regular proof close paths.
proux01 updated PR #12218 Numeral notations for non inductive types from numeral-notations-non-inductive
to master
:
This is a tentative implementation of the idea discussed in #12035
This is still lacking some proofs and proper documentation.
Numeral Notation non_inductive via inductive using ...
The main idea is to use actual inductive types that map what you want to parse/print and just translate to (resp. from) the actual type from (resp. to) this inductive type after calling the parser (resp before the printer). One then just has to provide a mapping from globrefs of the actual type to constructors of the inductive type.
For instance, for reals, that looks something like
Inductive IZ := | IZpow_pos : Z -> positive -> IZ | IZ0 : IZ | IZpos : positive -> IZ | IZneg : positive -> IZ. Inductive IR := | IRZ : IZ -> IR | IRQ : Q -> IR | IRmult : IR -> IR -> IR | IRdiv : IR -> IR -> IR. [..] (* define parser numeral_to_IR and printer IR_to_numeral *) Numeral Notation R via IR using (IZR IRZ, Q2R IRQ, Rmult IRmult, Rdiv IRdiv, Z.pow_pos IZpow_pos, Z0 IZ0, Zpos IZpos, Zneg IZneg) numeral_to_IR IR_to_numeral : R_scope.
Two notations are provided as examples for
Q
andR
.Q
Previously rationals were all parsed as a pair numerator, denominator. This means
1.02
and102e-2
were both parsed as102 # 100
and could not be tell apart when printing. So the printer had to choose between two representations : without exponent or without decimal dot. The choice was made heuristically toward a most compact representation.Now, decimal dot is still parsed as a power of ten denominator but exponents are parsed as a product or division by
Z.pow_pos
. For instance,1.02
is parsed as102 # 100
whereas102e-2
is parsed as(102 # 1) / (Z.pow_pos 10 2 # 1)
.
1.02
and102e-2
remain equal (proved by reflexivity) but1.02e1 = (102 # 100) * (10 # 1) = 1020 # 100
and10.2 = 102 # 10
no longer are.A nice side effect is that exponents can no longer blow up during parsing. Previously
1e1_000_000
literally produced a numerator with a million digits, now it just yields(1 # 1) * (Z.pow_pos 10 1_000_000 # 1)
.R
Previously real constants were parsed by an unproved OCaml code. The parser and printer are now implemented in Coq, which will enable a proof and hopefully make it easier to maintain / make evolve.
Previously reals were all parsed as an integer, an integer multiplied by a power of ten or an integer divided by a power of ten. This means
1.02
and102e-2
were both parsed as102 / 100
and could not be tell apart when printing. So the printer had to choose between two representations : without exponent or without decimal dot. The choice was made heuristically toward a most compact representation.Now, decimal dot is parsed as a rational and exponents are parsed as a product or division by a power of ten. For instance,
1.02
is parsed asQ2R (102 # 100)
whereas102e-2
is parsed asIZR 102 / IZR (Z.pow_pos 10 2)
.
1.02
and102e-2
remain equal (proved by reflexivity) but1.02e1 = Q2R (102 # 100) * 10
and10.2 = Q2R (102 # 10)
no longer are.TODO
~Depends from: #11948~
- [ ] prove numeral notation for
Q
- [ ] prove numeral notation for
R
- [x] Added / updated test-suite
- [ ] Corresponding documentation was added / updated (including any warning and error messages added / removed / modified).
- [ ] Entry added in the changelog (see https://github.com/coq/coq/tree/master/doc/changelog#unreleased-changelog for details).
Zimmi48 milestoned Issue #12408 Fix output tests for location errors when running in async mode.
In this mode, an additional error was emitted, which made the test fail:
Error: There are pending proofs: Unnamed_thm.
Kind: fix
Zimmi48 opened PR #12408 Fix output tests for location errors when running in async mode. from fix-error-location-tests-async
to master
:
In this mode, an additional error was emitted, which made the test fail:
Error: There are pending proofs: Unnamed_thm.
Kind: fix
ejgallego updated PR #12372 [declare] Refactor constant information into a record. from proof+info
to master
:
This improves the interface, and allows even more sealing of the API.
This is yet work in progress.
Zimmi48 submitted PR Review for #12405 Stop using flambda for fiat-crypto connected jobs.
Zimmi48 assigned PR #12405 Stop using flambda for fiat-crypto connected jobs to Zimmi48.
Zimmi48 submitted PR Review for #12403 Fix hyperlinks in changes.rst.
Zimmi48 assigned PR #12403 Fix hyperlinks in changes.rst to Zimmi48.
Zimmi48 milestoned Issue #12403 Fix hyperlinks in changes.rst (assigned to Zimmi48):
Kind: documentation
Zimmi48 pushed 2 commits to branch master. Commits by Zimmi48 (1) and mdempsky (1).
Zimmi48 merged PR #12403 Fix hyperlinks in changes.rst.
ejgallego updated PR #12372 [declare] Refactor constant information into a record. from proof+info
to master
:
This improves the interface, and allows even more sealing of the API.
This is yet work in progress.
JasonGross submitted PR Review for #12408 Fix output tests for location errors when running in async mode.
VincentSe opened PR #12409 Parametric rings from ParametricRings
to master
:
Kind: feature
Make
Add Ring
parametric, so that we can register families of rings like
Add Parametric Ring CRRing (R : ConstructiveReals) : (CRisRing R).
VincentSe requested reals-library-maintainers, ring-maintainers, kernel-maintainers and ltac-maintainers for a review on PR #12409 Parametric rings.
VincentSe requested reals-library-maintainers, ring-maintainers, kernel-maintainers and ltac-maintainers for a review on PR #12409 Parametric rings.
VincentSe requested reals-library-maintainers, ring-maintainers, kernel-maintainers and ltac-maintainers for a review on PR #12409 Parametric rings.
VincentSe requested reals-library-maintainers, ring-maintainers, kernel-maintainers and ltac-maintainers for a review on PR #12409 Parametric rings.
Zimmi48 updated PR #12408 Fix output tests for location errors when running in async mode. from fix-error-location-tests-async
to master
:
In this mode, an additional error was emitted, which made the test fail:
Error: There are pending proofs: Unnamed_thm.
Kind: fix
fajb updated PR #11906 [micromega] native support for boolean operators from bmicromega
to master
:
lia
supports boolean comparisons and operators
+ Z.{eqb, leb, ltb, geb, gtb}
+ andb, orb, implb, eqb, negb, ||zify
has been modified to work in harmony
+ZifyBool.v
injects comparison overnat
to comparisons overZ
Kind: feature
(this is a clean revival of #11047 )
- [x] Added / updated test-suite
- [x] Corresponding documentation was added /
- [x] Entry added in the changelog
ppedrot pushed 3 commits to branch master. Commits by SkySkimmer (2) and ppedrot (1).
ppedrot merged PR #12344 Cleanup noisy prefixes.
ppedrot pushed 2 commits to branch master. Commits by gasparattila (1) and ppedrot (1).
ppedrot closed Issue #12365 "exists a, b" can fail even if "exists a; exists b" succeeds:
<!-- Thank you for reporting a bug to Coq! -->
Description of the problem
<!-- If you can, it's helpful to provide self-contained example of some code
that reproduces the bug. If not, a link to a larger example is also helpful. -->Parameter a b : nat. Parameter p : a = b. Goal exists (_ : True) (_ : exists x, x = b), True. Proof. Fail exists I, (ex_intro _ a p). exists I; exists (ex_intro _ a p).
The failure is caused by the evar constraints from
ex_intro _ a p
being present whenI
is used. These constraints cannot be solved by unification without additional information from the goal.Coq Version
8.11.0
<!-- You can get this information by runningcoqtop -v
. If relevant, please
also include your operating system. -->
ppedrot merged PR #12366 Delay evaluating arguments of the "exists" tactic.
coqbot milestoned Issue #12365 "exists a, b" can fail even if "exists a; exists b" succeeds:
<!-- Thank you for reporting a bug to Coq! -->
Description of the problem
<!-- If you can, it's helpful to provide self-contained example of some code
that reproduces the bug. If not, a link to a larger example is also helpful. -->Parameter a b : nat. Parameter p : a = b. Goal exists (_ : True) (_ : exists x, x = b), True. Proof. Fail exists I, (ex_intro _ a p). exists I; exists (ex_intro _ a p).
The failure is caused by the evar constraints from
ex_intro _ a p
being present whenI
is used. These constraints cannot be solved by unification without additional information from the goal.Coq Version
8.11.0
<!-- You can get this information by runningcoqtop -v
. If relevant, please
also include your operating system. -->
ppedrot submitted PR Review for #12409 Parametric rings.
ppedrot created PR Review Comment on #12409 Parametric rings:
Why the renaming? I was under the impression that the current preferred naming scheme was
sigma
rather thanevd
.
VincentSe submitted PR Review for #12409 Parametric rings.
VincentSe created PR Review Comment on #12409 Parametric rings:
This one slipped after the squash, I'll roll it back.
ppedrot submitted PR Review for #12409 Parametric rings.
Zimmi48 submitted PR Review for #12103 Convert Ltac chapter to prodn.
Zimmi48 submitted PR Review for #12103 Convert Ltac chapter to prodn.
Zimmi48 created PR Review Comment on #12103 Convert Ltac chapter to prodn:
You probably meant in
ltac_expr0
.
Zimmi48 created PR Review Comment on #12103 Convert Ltac chapter to prodn:
The syntax only exists with the leading ltac_expr:
.. tacn:: ltac_expr__seq ; [ {? @for_each_goal } ]
Zimmi48 created PR Review Comment on #12103 Convert Ltac chapter to prodn:
Let's be clearer:
:n:`[> @tactic_list | .. | @tactic_list ]`
Zimmi48 created PR Review Comment on #12103 Convert Ltac chapter to prodn:
.. tacn:: [> @for_each_goal ]
This can already be empty given the definition of a
tactic_list
.
Zimmi48 created PR Review Comment on #12103 Convert Ltac chapter to prodn:
must be lower than or equal to the number of focused goals.
Zimmi48 created PR Review Comment on #12103 Convert Ltac chapter to prodn:
You could even say:
:tacn:`only` is one of the :token:`l3_tactics`.
Zimmi48 created PR Review Comment on #12103 Convert Ltac chapter to prodn:
If you do decide to apply the previous suggestion of referring to
l3_tactics
, then this and the rest of such sentences should be modified as well.
Zimmi48 created PR Review Comment on #12103 Convert Ltac chapter to prodn:
:n:`@ltac_expr` is evaluated to ``v`` which must be a tactic value. The tactic value ``v``
Zimmi48 created PR Review Comment on #12103 Convert Ltac chapter to prodn:
The do loop repeats a tactic :token:`int_or_var` times:
Same change necessary in the paragraph below.
Zimmi48 created PR Review Comment on #12103 Convert Ltac chapter to prodn:
This example makes me realize that we should really find a better name for the
tactic_list
we introduced. The best alternative name I could find is:goal_tactics
.
VincentSe updated PR #12409 Parametric rings from ParametricRings
to master
:
Kind: feature
Make
Add Ring
parametric, so that we can register families of rings like
Add Parametric Ring CRRing (R : ConstructiveReals) : (CRisRing R).
MSoegtropIMC updated PR #12186 CReal: changed epsilon for modulus of convergence from 1/n to 1/2^n from creal-new-modulus
to master
:
This PR changes the epsilon in the definition of the modulus of convergence for CReal from 1/n to 1/2^n. This avoids the issue that in practical high precision computations, even as binary integer n would be quite large (say 2^1000000), although quadratically convergent algorithms might need only a few 10 iterations to reach such a precision.
This is work in progress (right now I just did the main file ConstructiveCauchyReals.v).
@VincentSe : some things I think I should change:
as far as I can tell the major issue for the many lengthy manual arithmetic proofs is the use of variables in Qmake (a#b). As far as I can tell ring, field and lra don't understand that # and / is more or less the same thing. They can compute with literal numbers like 1#2 * 2#3 = 1#3, but they don't work for say 1#n. One should write 1/n instead and use # only for literal rational numbers (ground terms). This would be a major change, though, but I think expressions like 1#n are not intended and we should not do this in the standard library.
In general I am not happy with the proof style, since proofs generally look more complicated than they actually are, but this might improve a lot with the point above and maybe a few little preprocessing tactics and reordering.
When switching to an abstracted computational structure this might get much more messy so some upfront cleanup would help.
The addition function should be fully split into computational part and proof
[ ] Added / updated test-suite
- [ ] Corresponding documentation was added / updated (including any warning and error messages added / removed / modified).
- [ ] Entry added in the changelog (see https://github.com/coq/coq/tree/master/doc/changelog#unreleased-changelog for details).
JasonGross milestoned Issue #12410 dev/tools/make-changelog.sh now asks about fixed bugs:
Fixes #12386
Kind: infrastructure.
- [x] Entry added in the changelog (see https://github.com/coq/coq/tree/master/doc/changelog#unreleased-changelog for details).
JasonGross opened PR #12410 dev/tools/make-changelog.sh now asks about fixed bugs from add-fixes
to master
:
Fixes #12386
Kind: infrastructure.
- [x] Entry added in the changelog (see https://github.com/coq/coq/tree/master/doc/changelog#unreleased-changelog for details).
JasonGross requested dev-tools-maintainers for a review on PR #12410 dev/tools/make-changelog.sh now asks about fixed bugs.
JasonGross opened PR #12411 Add support for CoqMakefile.local-late from makefile-local-late
to master
:
This allows users to write rules that depend on variables such as
VOFILES and VDFILE, which is essential in some of my use-cases (for
example, to properly handle seamless version switching, I need to make
all of the .vo files depend on a file where I record the version of Coq
being used).Fixes #10912
Kind: feature / infrastructure.
- [x] Added / updated test-suite
- [x] Corresponding documentation was added / updated (including any warning and error messages added / removed / modified).
- [x] Entry added in the changelog (see https://github.com/coq/coq/tree/master/doc/changelog#unreleased-changelog for details).
Does this qualify for 8.12 / 8.12+beta1?
JasonGross requested doc-maintainers and coq-makefile-maintainers for a review on PR #12411 Add support for CoqMakefile.local-late.
JasonGross requested doc-maintainers and coq-makefile-maintainers for a review on PR #12411 Add support for CoqMakefile.local-late.
jfehrle submitted PR Review for #12103 Convert Ltac chapter to prodn.
jfehrle created PR Review Comment on #12103 Convert Ltac chapter to prodn:
simple_tactic
is inl1_tactics
.
jfehrle submitted PR Review for #12103 Convert Ltac chapter to prodn.
jfehrle created PR Review Comment on #12103 Convert Ltac chapter to prodn:
Sometimes such redundancy is helpful to the user. In this case,
[> ]
is a no-op, it's not really useful. I will change.
JasonGross submitted PR Review for #12103 Convert Ltac chapter to prodn.
JasonGross created PR Review Comment on #12103 Convert Ltac chapter to prodn:
Huh?
[ > ]
is not a no-op, it fails if the number of goals is not equal to 1. It's[ > .. ]
that's a no-op.
jfehrle submitted PR Review for #12103 Convert Ltac chapter to prodn.
jfehrle created PR Review Comment on #12103 Convert Ltac chapter to prodn:
It's fine. I use the same phrasing elsewhere.
jfehrle updated PR #12103 Convert Ltac chapter to prodn (assigned to Zimmi48) from prodn_ltac
to master
:
A strategy question for now, don't read more than you have to.
I think the two-page long grammar in the Syntax section doesn't work.
I think I can live with making all the tacticals as
tacn::
, but we may need to add comments on them saying whichltac_expr*
they're associated with this since that has some effect on how the expression is interpreted (precedence).Then there would be 2 possibilities for that syntax block:
- omit all the tacticals (with some general explanation and mentioning precedences)
- move it, as it is, to the end of the chapter (with a link near the beginning)
I'd go for the first option. Also, I need to make sure I understand how the precedence works.
Your thoughts?
Fix #11932
jfehrle updated PR #12103 Convert Ltac chapter to prodn (assigned to Zimmi48) from prodn_ltac
to master
:
A strategy question for now, don't read more than you have to.
I think the two-page long grammar in the Syntax section doesn't work.
I think I can live with making all the tacticals as
tacn::
, but we may need to add comments on them saying whichltac_expr*
they're associated with this since that has some effect on how the expression is interpreted (precedence).Then there would be 2 possibilities for that syntax block:
- omit all the tacticals (with some general explanation and mentioning precedences)
- move it, as it is, to the end of the chapter (with a link near the beginning)
I'd go for the first option. Also, I need to make sure I understand how the precedence works.
Your thoughts?
Fix #11932
jfehrle updated PR #12103 Convert Ltac chapter to prodn (assigned to Zimmi48) from prodn_ltac
to master
:
A strategy question for now, don't read more than you have to.
I think the two-page long grammar in the Syntax section doesn't work.
I think I can live with making all the tacticals as
tacn::
, but we may need to add comments on them saying whichltac_expr*
they're associated with this since that has some effect on how the expression is interpreted (precedence).Then there would be 2 possibilities for that syntax block:
- omit all the tacticals (with some general explanation and mentioning precedences)
- move it, as it is, to the end of the chapter (with a link near the beginning)
I'd go for the first option. Also, I need to make sure I understand how the precedence works.
Your thoughts?
Fix #11932
Zimmi48 opened PR #12412 Reduce options passed to workers from reduce-options-passed-to-workers
to master
:
Kind: fix.
If I understood @gares correctly on Zulip, the
-ri
and variants and the-set
and variants do not need to be passed to the workers because they have been applied in the initial state that is passed to the workers. If this is correct, this should fix the failinginterleave_options_bad_order
test with async.
Zimmi48 milestoned Issue #12412 Reduce options passed to workers:
Kind: fix.
If I understood @gares correctly on Zulip, the
-ri
and variants and the-set
and variants do not need to be passed to the workers because they have been applied in the initial state that is passed to the workers. If this is correct, this should fix the failinginterleave_options_bad_order
test with async.
Zimmi48 requested stm-maintainers for a review on PR #12412 Reduce options passed to workers.
SkySkimmer submitted PR Review for #12388 Fix an uncaught python exception in timing.
SkySkimmer assigned PR #12388 Fix an uncaught python exception in timing to SkySkimmer.
Mbodin requested doc-maintainers for a review on PR #12389 Small coq_makefile improvement..
Mbodin updated PR #12389 Small coq_makefile improvement. (assigned to gares) from coq_makefile
to master
:
Kind: feature.
Relates to #7740 and #7722.
- [ ] Updated test-suite
- [ ] Corresponding documentation was added.
- [ ] Entry added in the changelog (see https://github.com/coq/coq/tree/master/doc/changelog#unreleased-changelog for details).
The behaviour of coq_makefile regarding
DESTDIR
is somehow confusing (as seen in the related bug reports above). The “usual” set-up in Linux seems to be:
- set
DESTDIR
to the wanted place.- set
COQMF_WINDRIVE
toCOQLIB
to “cancel” the default place.- coq_makefile will add a
user-contrib
at the end.The
COQMF_WINDRIVE
parts feels like a hack and is currently undocumented. This PR provides an alternative way (without breaking the previous way):
- set
COQLIBINSTALL
,COQDOCINSTALL
, andCOQTOPINSTALL
to whatever the user needs.Being able to set up the installation directory is especially important when using programs like
esy
, in which different Coq installation can be shared among repositories:esy
installs Coq libraries into their own directory, relying on theCOQPATH
mechanism to link everything back together. By forcing the installation to${COQLIB}/user-contrib
, coq_makefile is installing files in a shared folder, which breaksesy
’s invariants required for replication.
SkySkimmer submitted PR Review for #12412 Reduce options passed to workers.
SkySkimmer created PR Review Comment on #12412 Reduce options passed to workers:
You need to add them to "options to discard" not just delete them.
Zimmi48 submitted PR Review for #12412 Reduce options passed to workers.
Zimmi48 created PR Review Comment on #12412 Reduce options passed to workers:
OK thanks!
Zimmi48 edited PR Review Comment on #12412 Reduce options passed to workers.
Zimmi48 updated PR #12412 Reduce options passed to workers from reduce-options-passed-to-workers
to master
:
Kind: fix.
If I understood @gares correctly on Zulip, the
-ri
and variants and the-set
and variants do not need to be passed to the workers because they have been applied in the initial state that is passed to the workers. If this is correct, this should fix the failinginterleave_options_bad_order
test with async.
Zimmi48 requested stm-maintainers and toplevel-maintainers for a review on PR #12412 Reduce options passed to workers.
Zimmi48 submitted PR Review for #12412 Reduce options passed to workers.
Zimmi48 created PR Review Comment on #12412 Reduce options passed to workers:
Should be better now.
SkySkimmer pushed 2 commits to branch master. Commits by JasonGross (1) and SkySkimmer (1).
SkySkimmer closed Issue #12387 make print-pretty-timed-diff will raise a python exception if either "before" or "after" has no files (assigned to JasonGross):
Traceback (most recent call last): File "/home/jgross/Documents/repos/coq/tools/make-both-time-files.py", line 16, in <module> table = make_diff_table_string(left_dict, right_dict, sort_by=args.sort_by, include_mem=args.include_mem, sort_by_mem=args.sort_by_mem) File "/home/jgross/Documents/repos/coq/tools/TimeFileMaker.py", line 391, in make_diff_table_string right_peak = max(v.get(MEM_KEY, 0) for v in right_dict.values()) ValueError: max() arg is an empty sequence
SkySkimmer merged PR #12388 Fix an uncaught python exception in timing.
coqbot milestoned Issue #12387 make print-pretty-timed-diff will raise a python exception if either "before" or "after" has no files (assigned to JasonGross):
Traceback (most recent call last): File "/home/jgross/Documents/repos/coq/tools/make-both-time-files.py", line 16, in <module> table = make_diff_table_string(left_dict, right_dict, sort_by=args.sort_by, include_mem=args.include_mem, sort_by_mem=args.sort_by_mem) File "/home/jgross/Documents/repos/coq/tools/TimeFileMaker.py", line 391, in make_diff_table_string right_peak = max(v.get(MEM_KEY, 0) for v in right_dict.values()) ValueError: max() arg is an empty sequence
SkySkimmer submitted PR Review for #12397 Fix #12280: do not use xindy to avoid build failures on some machines.
SkySkimmer submitted PR Review for #12397 Fix #12280: do not use xindy to avoid build failures on some machines.
SkySkimmer created PR Review Comment on #12397 Fix #12280: do not use xindy to avoid build failures on some machines.
Maybe add a comment about why we do this
Zimmi48 edited PR #12389 Small coq_makefile improvement. (assigned to gares) from coq_makefile
to master
:
Kind: feature.
Relates to #7740 and #7722.
- [ ] Updated test-suite
- [x] Corresponding documentation was added.
- [ ] Entry added in the changelog (see https://github.com/coq/coq/tree/master/doc/changelog#unreleased-changelog for details).
The behaviour of coq_makefile regarding
DESTDIR
is somehow confusing (as seen in the related bug reports above). The “usual” set-up in Linux seems to be:
- set
DESTDIR
to the wanted place.- set
COQMF_WINDRIVE
toCOQLIB
to “cancel” the default place.- coq_makefile will add a
user-contrib
at the end.The
COQMF_WINDRIVE
parts feels like a hack and is currently undocumented. This PR provides an alternative way (without breaking the previous way):
- set
COQLIBINSTALL
,COQDOCINSTALL
, andCOQTOPINSTALL
to whatever the user needs.Being able to set up the installation directory is especially important when using programs like
esy
, in which different Coq installation can be shared among repositories:esy
installs Coq libraries into their own directory, relying on theCOQPATH
mechanism to link everything back together. By forcing the installation to${COQLIB}/user-contrib
, coq_makefile is installing files in a shared folder, which breaksesy
’s invariants required for replication.
Zimmi48 updated PR #12397 Fix #12280: do not use xindy to avoid build failures on some machines. from do-not-use-xindy
to master
:
Kind: documentation infrastructure.
Fixes / closes #12280.
- [x] Corresponding documentation was added / updated (including any warning and error messages added / removed / modified).
The build still goes through and the index still looks fine. Since the manual is entirely written in English, I think there is no issue with using
makeindex
instead.
Zimmi48 milestoned Issue #12411 Add support for CoqMakefile.local-late:
This allows users to write rules that depend on variables such as
VOFILES and VDFILE, which is essential in some of my use-cases (for
example, to properly handle seamless version switching, I need to make
all of the .vo files depend on a file where I record the version of Coq
being used).Fixes #10912
Kind: feature / infrastructure.
- [x] Added / updated test-suite
- [x] Corresponding documentation was added / updated (including any warning and error messages added / removed / modified).
- [x] Entry added in the changelog (see https://github.com/coq/coq/tree/master/doc/changelog#unreleased-changelog for details).
Does this qualify for 8.12 / 8.12+beta1?
SkySkimmer submitted PR Review for #12410 dev/tools/make-changelog.sh now asks about fixed bugs.
SkySkimmer assigned PR #12410 dev/tools/make-changelog.sh now asks about fixed bugs to SkySkimmer.
Zimmi48 submitted PR Review for #12410 dev/tools/make-changelog.sh now asks about fixed bugs.
Zimmi48 created PR Review Comment on #12410 dev/tools/make-changelog.sh now asks about fixed bugs:
Thanks for the example :) but we usually do not introduce changelog entries for purely internal PRs.
SkySkimmer pushed 2 commits to branch master. Commits by JasonGross (1) and SkySkimmer (1).
SkySkimmer closed Issue #12386 dev/tools/make-changelog.sh should automatically handle bugs fixed by the PR:
I'd like
dev/tools/make-changelog.sh
to also ask me if the PR fixes any bugs (say, a space-separated list of numbers), and it should automatically generate the "Fixes" part of the changelog as well
SkySkimmer merged PR #12410 dev/tools/make-changelog.sh now asks about fixed bugs.
coqbot milestoned Issue #12386 dev/tools/make-changelog.sh should automatically handle bugs fixed by the PR:
I'd like
dev/tools/make-changelog.sh
to also ask me if the PR fixes any bugs (say, a space-separated list of numbers), and it should automatically generate the "Fixes" part of the changelog as well
Zimmi48 milestoned Issue #12410 dev/tools/make-changelog.sh now asks about fixed bugs (assigned to SkySkimmer):
Fixes #12386
Kind: infrastructure.
- [x] Entry added in the changelog (see https://github.com/coq/coq/tree/master/doc/changelog#unreleased-changelog for details).
Zimmi48 demilestoned Issue #12410 dev/tools/make-changelog.sh now asks about fixed bugs (assigned to SkySkimmer):
Fixes #12386
Kind: infrastructure.
- [x] Entry added in the changelog (see https://github.com/coq/coq/tree/master/doc/changelog#unreleased-changelog for details).
Zimmi48 milestoned Issue #12386 dev/tools/make-changelog.sh should automatically handle bugs fixed by the PR:
I'd like
dev/tools/make-changelog.sh
to also ask me if the PR fixes any bugs (say, a space-separated list of numbers), and it should automatically generate the "Fixes" part of the changelog as well
Zimmi48 demilestoned Issue #12386 dev/tools/make-changelog.sh should automatically handle bugs fixed by the PR:
I'd like
dev/tools/make-changelog.sh
to also ask me if the PR fixes any bugs (say, a space-separated list of numbers), and it should automatically generate the "Fixes" part of the changelog as well
ejgallego labeled Issue #11244 Report on the 8.8 to 8.10 compatibility of packages in coq-contribs:
Hi, here are a few (partial) comments about porting developments from Coq 8.8 to 8.10 (continuing #8793).
Globally, it takes time but it works relatively well, with helpful messages or tools. It was painful in some specific cases though.
Deprecation of alias
The script
replace-notations.py
was very good. A posteriori, the warning could have been improved to report about the full name (including its dirpath) and not only the basename.Removal of
Implicit Arguments
andArguments Scope
This is rather straightforward. A posteriori, that would somehow have been good to have a script in the style of
replace-notations.py
.Move from .ml4 to .mlg
The renaming and insertion of curly brackets is easy, but
coqpp
seems to suffer from being a bit "young" and not helpful in case of problems. To fix syntax errors, I have to look at the code ofcoqpp
to know what to do. Also, entries such asINT
andLIDENT
are not supported anymore and cause the brutal death ofcoqpp
. (I still have to find what are the replacements...) Location reporting does not seem always accurate.Removal of
Quote
I'll probably add it as a package (which requires less thinking than adapting).
Removal of template polymorphism in sections
Moving the type outside the section is canonical.
Unidentified problems with import of coercions
Problems with imports are the most difficult to solve: need to compare the old and new scripts, and sometimes not at the place where it starts to fail.
Miscellaneous regressions
cofix with
tactic is broken (I made a fix at #11241). That would be good to do have a 8.10 with a workingcofix with
??coq_makefile
does not support anymore the camlp5 extensions automatically (in case of a ml4 file which is not about extending the grammar but of, e.g. using anIFDEF
). I guess this can be resolved by callingocamlfind
explicitly but I don't know yet how to do it.- maybe in relation with the removal of
Standard Proposition Elimination Names
,Program Fixpoint
was still usingH
-names foreq_dec
and cie but stops doing so in 8.10. Compatibility is obtained by using sometry rename
.- some mini-changes such as putting hints in a database (6f1634d2f82) have an impact.
Warnings
Focus
: easy to fix usingn:{ ... }
as explained in the warning message.- changes in ml files: generally the suggestions are very useful! Sometimes, knowing how the code is organized is needed (e.g. when to use
econstr
, how universes and globals work together, proof engine, ...). I hope it is not too painful for external contributors.- hints in core: easy (a script should be made!)
- "The extraction is currently set to bypass opacity": don't know what to do.
fourier
The upgrade works rather well by using
lra
. The difficulties are thatRequire Import Fourier
includes some constants and scopes which have to be expressed differently (e.g. using lemmas fromReals
).
omega
/romega
The move to
lia
works pretty well. A painful consequence has been to control the section variables used byomega
/lia
since this affects the form of a theorem at the end of the section.Primitive string parsers
Adding
Import Coq.Strings.String.string
works well.
Zimmi48 submitted PR Review for #12396 Release notes 8.12.
Zimmi48 created PR Review Comment on #12396 Release notes 8.12:
Making them subsections doesn't make them appear in the TOC in the left-bar (too many levels) and I tried both and I prefer the appearance that the current state results in.
Zimmi48 submitted PR Review for #12396 Release notes 8.12.
Zimmi48 created PR Review Comment on #12396 Release notes 8.12:
Note that there will be a summary written by @mattam82 with some direct links to a selection of changelog entries.
Zimmi48 submitted PR Review for #12396 Release notes 8.12.
Zimmi48 created PR Review Comment on #12396 Release notes 8.12:
Agreed.
Zimmi48 updated PR #12396 Release notes 8.12 from release-notes-8.12
to master
:
Kind: documentation
This PR consolidates the release notes for 8.12+beta1. It should be a good basis on which @mattam82 can work to prepare a summary of the changes.
The consolidation was initially done thanks to the
dev/tools/generate-release-changelog.sh
script but I fixed a lot of typos and improved the wording or the links to the doc here and there.More importantly, I've also reordered the entries by type of change (the order is Changed, Removed, Deprecated, Added, Fixed). I did this because I feel like this makes reading the changelog much easier when there are many entries. The order is chosen so that breaking changes are shown first. If people like this ordering, then we can adapt the changelog infrastructure so that it is automatically sorted like this next time.
I also introduced some new categories: Options, flags and attributes + Commands instead of Commands and options because this category was very long; Reals library (split out of Standard Library because there was much content about this); Reference manual to document all the recent important changes that it received.
The last commit introduces changelog entries about the reference manual (cc @jfehrle).
Zimmi48 updated PR #12391 Backport batch of PRs to v8.12. from backport-v8.12
to v8.12
.
ejgallego opened Issue #12413 [lexer] Expose comments as tokens:
It would be nice to have a
COMMENT
token type, so users of the lexer can actually see the comments in streams. This has been requested a few times, for example:
- https://github.com/ejgallego/coq-serapi/issues/191
- https://github.com/ejgallego/coq-serapi/issues/200
- https://coq.discourse.group/t/would-coq-benefit-from-docstrings
Even if some of these requests would require more than extending the lexer, this would be a good first step. OCaml does something similar, see
COMMENTS
token in https://github.com/ocaml/ocaml/blob/4c24dca92ad684494e9d186412a52be3983d909a/parsing/parser.mly#L704
ejgallego labeled Issue #12413 [lexer] Expose comments as tokens:
It would be nice to have a
COMMENT
token type, so users of the lexer can actually see the comments in streams. This has been requested a few times, for example:
- https://github.com/ejgallego/coq-serapi/issues/191
- https://github.com/ejgallego/coq-serapi/issues/200
- https://coq.discourse.group/t/would-coq-benefit-from-docstrings
Even if some of these requests would require more than extending the lexer, this would be a good first step. OCaml does something similar, see
COMMENTS
token in https://github.com/ocaml/ocaml/blob/4c24dca92ad684494e9d186412a52be3983d909a/parsing/parser.mly#L704
ejgallego labeled Issue #12413 [lexer] Expose comments as tokens:
It would be nice to have a
COMMENT
token type, so users of the lexer can actually see the comments in streams. This has been requested a few times, for example:
- https://github.com/ejgallego/coq-serapi/issues/191
- https://github.com/ejgallego/coq-serapi/issues/200
- https://coq.discourse.group/t/would-coq-benefit-from-docstrings
Even if some of these requests would require more than extending the lexer, this would be a good first step. OCaml does something similar, see
COMMENTS
token in https://github.com/ocaml/ocaml/blob/4c24dca92ad684494e9d186412a52be3983d909a/parsing/parser.mly#L704
ejgallego labeled Issue #12413 [lexer] Expose comments as tokens:
It would be nice to have a
COMMENT
token type, so users of the lexer can actually see the comments in streams. This has been requested a few times, for example:
- https://github.com/ejgallego/coq-serapi/issues/191
- https://github.com/ejgallego/coq-serapi/issues/200
- https://coq.discourse.group/t/would-coq-benefit-from-docstrings
Even if some of these requests would require more than extending the lexer, this would be a good first step. OCaml does something similar, see
COMMENTS
token in https://github.com/ocaml/ocaml/blob/4c24dca92ad684494e9d186412a52be3983d909a/parsing/parser.mly#L704
ejgallego labeled Issue #12413 [lexer] Expose comments as tokens:
It would be nice to have a
COMMENT
token type, so users of the lexer can actually see the comments in streams. This has been requested a few times, for example:
- https://github.com/ejgallego/coq-serapi/issues/191
- https://github.com/ejgallego/coq-serapi/issues/200
- https://coq.discourse.group/t/would-coq-benefit-from-docstrings
Even if some of these requests would require more than extending the lexer, this would be a good first step. OCaml does something similar, see
COMMENTS
token in https://github.com/ocaml/ocaml/blob/4c24dca92ad684494e9d186412a52be3983d909a/parsing/parser.mly#L704
ejgallego labeled Issue #12413 [lexer] Expose comments as tokens:
It would be nice to have a
COMMENT
token type, so users of the lexer can actually see the comments in streams. This has been requested a few times, for example:
- https://github.com/ejgallego/coq-serapi/issues/191
- https://github.com/ejgallego/coq-serapi/issues/200
- https://coq.discourse.group/t/would-coq-benefit-from-docstrings
Even if some of these requests would require more than extending the lexer, this would be a good first step. OCaml does something similar, see
COMMENTS
token in https://github.com/ocaml/ocaml/blob/4c24dca92ad684494e9d186412a52be3983d909a/parsing/parser.mly#L704
Zimmi48 assigned [PR #12399 Remove the prolog tactic.](https://github.com/coq/coq/pull/12399 to Zimmi48.
Janno opened Issue #12414 Universe with Prop <= i not minimized to i := Set, resulting in costly, unconstrained universes:
<!-- Thank you for reporting a bug to Coq! -->
Description of the problem
The following snippet fails at the last
Check
invocation.Set Universe Polymorphism. Set Printing Universes. Inductive list {T} : Type := | cons (t : T) : list -> list. (* who needs nil anyway? *) Arguments list : clear implicits. Fixpoint map {A B} (f: A -> B) (l : list A) : list B := let '(cons t l) := l in cons (f t) (map f l). Check map@{_ _}. (* Two universes, as expected. *) Definition map_Set {A B : Set} := @map A B. Check map_Set@{}. (* Universes minimized away, as expected. *) Definition map_Prop {A B : Prop} := @map A B. Check map_Prop@{}. (* Fails! *) (* Universes *not* minimized away! Confusion abound! *)
While this is not wrong, it essentially means that users pay a very heavy and unnecessary price for using universe polymorphism and later instantiating the definitions with propositions. It is very easy to amass thousands and sometimes tens of thousands of universes in a single definition and in my Mtac2 use cases most of them would disappear since they correspond to types instantiated with propositions.
I am reporting this issue to make sure that the feature request—or should it be called a bug fix?—is not forgotten. (My initial "bug report" happened verbally during POPL.)
There have been two attempts at fixing this (#9343, #10331) but they have both been closed.
<!-- If you can, it's helpful to provide self-contained example of some code
that reproduces the bug. If not, a link to a larger example is also helpful. -->Coq Version
master, but to my knowledge this behaviour was never different in earlier Coq version.
<!-- You can get this information by running
coqtop -v
. If relevant, please
also include your operating system. -->
Janno labeled Issue #12414 Universe with Prop <= i not minimized to i := Set, resulting in costly, unconstrained universes:
<!-- Thank you for reporting a bug to Coq! -->
Description of the problem
The following snippet fails at the last
Check
invocation.Set Universe Polymorphism. Set Printing Universes. Inductive list {T} : Type := | cons (t : T) : list -> list. (* who needs nil anyway? *) Arguments list : clear implicits. Fixpoint map {A B} (f: A -> B) (l : list A) : list B := let '(cons t l) := l in cons (f t) (map f l). Check map@{_ _}. (* Two universes, as expected. *) Definition map_Set {A B : Set} := @map A B. Check map_Set@{}. (* Universes minimized away, as expected. *) Definition map_Prop {A B : Prop} := @map A B. Check map_Prop@{}. (* Fails! *) (* Universes *not* minimized away! Confusion abound! *)
While this is not wrong, it essentially means that users pay a very heavy and unnecessary price for using universe polymorphism and later instantiating the definitions with propositions. It is very easy to amass thousands and sometimes tens of thousands of universes in a single definition and in my Mtac2 use cases most of them would disappear since they correspond to types instantiated with propositions.
I am reporting this issue to make sure that the feature request—or should it be called a bug fix?—is not forgotten. (My initial "bug report" happened verbally during POPL.)
There have been two attempts at fixing this (#9343, #10331) but they have both been closed.
<!-- If you can, it's helpful to provide self-contained example of some code
that reproduces the bug. If not, a link to a larger example is also helpful. -->Coq Version
master, but to my knowledge this behaviour was never different in earlier Coq version.
<!-- You can get this information by running
coqtop -v
. If relevant, please
also include your operating system. -->
Zimmi48 assigned [PR #12397 Fix #12280: do not use xindy to avoid build failures on some machines.](https://github.com/coq/coq/pull/12397 to cpitclaudel.
Zimmi48 opened PR #12415 Carefully select which versions of add-ons are included in the Windows installer. from smart-pinning
to v8.12
:
Cf. #12360.
@Janno: Should mtac2 get a new
master-8.12
branch? The start point could be mtac2/mtac2@62071fe76d05e7d1bd43583514ad498102b556bd.
Zimmi48 milestoned Issue #12415 Carefully select which versions of add-ons are included in the Windows installer.
Cf. #12360.
@Janno: Should mtac2 get a new
master-8.12
branch? The start point could be mtac2/mtac2@62071fe76d05e7d1bd43583514ad498102b556bd.
Zimmi48 edited PR #12415 [v8.12] Carefully select which versions of add-ons are included in the Windows installer. from smart-pinning
to v8.12
:
Cf. #12360.
@Janno: Should mtac2 get a new
master-8.12
branch? The start point could be mtac2/mtac2@62071fe76d05e7d1bd43583514ad498102b556bd.
Zimmi48 edited PR #12415 [v8.12] Carefully select which versions of add-ons are included in the Windows installer. from smart-pinning
to v8.12
:
Cf. #12360.
@Janno: Should mtac2 get a new
master-8.12
branch? The start point could be mtac2/mtac2@62071fe76d05e7d1bd43583514ad498102b556bd.
- [x] bignums
- [ ] equations
- [x] mtac2
- [x] mathcomp
- [ ] menhir
- [ ] menhirlib
- [ ] compcert
- [ ] extlib
- [ ] quickchick
- [ ] coquelicot
- [ ] vst
- [ ] aactactics
- [x] flocq
- [ ] interval
- [ ] gappa_tool
- [ ] gappa
- [ ] elpi
- [ ] HB
Zimmi48 updated PR #12415 [v8.12] Carefully select which versions of add-ons are included in the Windows installer. from smart-pinning
to v8.12
:
Cf. #12360.
@Janno: Should mtac2 get a new
master-8.12
branch? The start point could be mtac2/mtac2@62071fe76d05e7d1bd43583514ad498102b556bd.
- [x] bignums
- [ ] equations
- [x] mtac2
- [x] mathcomp
- [ ] menhir
- [ ] menhirlib
- [ ] compcert
- [ ] extlib
- [ ] quickchick
- [ ] coquelicot
- [ ] vst
- [ ] aactactics
- [x] flocq
- [ ] interval
- [ ] gappa_tool
- [ ] gappa
- [ ] elpi
- [ ] HB
Zimmi48 updated PR #12391 Backport batch of PRs to v8.12. from backport-v8.12
to v8.12
.
Zimmi48 pushed 11 commits to branch v8.12. Commits by Zimmi48 (7), JasonGross (1), gasparattila (1) and others (2).
shiatsumat closed without merge PR #12404 trim new lines in ssreflect-proof-language.rst.
Zimmi48 submitted PR Review for #12103 Convert Ltac chapter to prodn.
Zimmi48 created PR Review Comment on #12103 Convert Ltac chapter to prodn:
OK, but then the following becomes confusing:
The documentation also describes the following as tactics because they can generally be used anywhere a tactic can even though they fit into other levels of ltac_expr:
- ...
- l1_tactics are: first, solve, idtac, fail and gfail as well as match, match goal and their lazymatch and multimatch variants.If the wording could be tweaked to make it a tad less confusing, it would be better. Not a big deal though.
Zimmi48 submitted PR Review for #12103 Convert Ltac chapter to prodn.
Zimmi48 created PR Review Comment on #12103 Convert Ltac chapter to prodn:
In this case, I'd bet that the redundancy would have been confusing to the reader :wink:
gares submitted PR Review for #12389 Small coq_makefile improvement.
gares submitted PR Review for #12412 Reduce options passed to workers.
gares assigned PR #12412 Reduce options passed to workers to gares.
Zimmi48 submitted PR Review for #12103 Convert Ltac chapter to prodn.
Zimmi48 submitted PR Review for #12103 Convert Ltac chapter to prodn.
Zimmi48 created PR Review Comment on #12103 Convert Ltac chapter to prodn:
The way you've integrated this change will rebasing looks quite odd. I think the note should be below the one on precedence, which you cut in the middle.
Zimmi48 created PR Review Comment on #12103 Convert Ltac chapter to prodn:
It looks like the actual error message is
No applicable tactic.
Zimmi48 created PR Review Comment on #12103 Convert Ltac chapter to prodn:
Should there be a
__i
on thetacn
line?
Zimmi48 created PR Review Comment on #12103 Convert Ltac chapter to prodn:
:tacn:`fail` and :tacn:`gfail` are :token:`l1_tactic`\s.
Mbodin updated PR #12389 Small coq_makefile improvement. (assigned to gares) from coq_makefile
to master
:
Kind: feature.
Relates to #7740 and #7722.
- [ ] Updated test-suite
- [x] Corresponding documentation was added.
- [ ] Entry added in the changelog (see https://github.com/coq/coq/tree/master/doc/changelog#unreleased-changelog for details).
The behaviour of coq_makefile regarding
DESTDIR
is somehow confusing (as seen in the related bug reports above). The “usual” set-up in Linux seems to be:
- set
DESTDIR
to the wanted place.- set
COQMF_WINDRIVE
toCOQLIB
to “cancel” the default place.- coq_makefile will add a
user-contrib
at the end.The
COQMF_WINDRIVE
parts feels like a hack and is currently undocumented. This PR provides an alternative way (without breaking the previous way):
- set
COQLIBINSTALL
,COQDOCINSTALL
, andCOQTOPINSTALL
to whatever the user needs.Being able to set up the installation directory is especially important when using programs like
esy
, in which different Coq installation can be shared among repositories:esy
installs Coq libraries into their own directory, relying on theCOQPATH
mechanism to link everything back together. By forcing the installation to${COQLIB}/user-contrib
, coq_makefile is installing files in a shared folder, which breaksesy
’s invariants required for replication.
Mbodin edited PR #12389 Small coq_makefile improvement. (assigned to gares) from coq_makefile
to master
:
Kind: feature.
Relates to #7740 and #7722.
- [ ] Updated test-suite
- [x] Corresponding documentation was added.
- [x] Entry added in the changelog (see https://github.com/coq/coq/tree/master/doc/changelog#unreleased-changelog for details).
The behaviour of coq_makefile regarding
DESTDIR
is somehow confusing (as seen in the related bug reports above). The “usual” set-up in Linux seems to be:
- set
DESTDIR
to the wanted place.- set
COQMF_WINDRIVE
toCOQLIB
to “cancel” the default place.- coq_makefile will add a
user-contrib
at the end.The
COQMF_WINDRIVE
parts feels like a hack and is currently undocumented. This PR provides an alternative way (without breaking the previous way):
- set
COQLIBINSTALL
,COQDOCINSTALL
, andCOQTOPINSTALL
to whatever the user needs.Being able to set up the installation directory is especially important when using programs like
esy
, in which different Coq installation can be shared among repositories:esy
installs Coq libraries into their own directory, relying on theCOQPATH
mechanism to link everything back together. By forcing the installation to${COQLIB}/user-contrib
, coq_makefile is installing files in a shared folder, which breaksesy
’s invariants required for replication.
Mbodin updated PR #12389 Small coq_makefile improvement. (assigned to gares) from coq_makefile
to master
:
Kind: feature.
Relates to #7740 and #7722.
- [ ] Updated test-suite
- [x] Corresponding documentation was added.
- [x] Entry added in the changelog (see https://github.com/coq/coq/tree/master/doc/changelog#unreleased-changelog for details).
The behaviour of coq_makefile regarding
DESTDIR
is somehow confusing (as seen in the related bug reports above). The “usual” set-up in Linux seems to be:
- set
DESTDIR
to the wanted place.- set
COQMF_WINDRIVE
toCOQLIB
to “cancel” the default place.- coq_makefile will add a
user-contrib
at the end.The
COQMF_WINDRIVE
parts feels like a hack and is currently undocumented. This PR provides an alternative way (without breaking the previous way):
- set
COQLIBINSTALL
,COQDOCINSTALL
, andCOQTOPINSTALL
to whatever the user needs.Being able to set up the installation directory is especially important when using programs like
esy
, in which different Coq installation can be shared among repositories:esy
installs Coq libraries into their own directory, relying on theCOQPATH
mechanism to link everything back together. By forcing the installation to${COQLIB}/user-contrib
, coq_makefile is installing files in a shared folder, which breaksesy
’s invariants required for replication.
ejgallego updated PR #12393 [declare] Miscellaneous nits from my main dev tree from declare+misc9
to master
:
Some small commits from my dev tree, I think these are for the most part quite trivial, tho we reduce the internal API a bit.
Depends on #12357 [no point in having to do a rebase]
ejgallego has marked PR #12393 as ready for review.
ejgallego requested vernac-maintainers for a review on PR #12393 [declare] Miscellaneous nits from my main dev tree.
ejgallego milestoned Issue #12393 [declare] Miscellaneous nits from my main dev tree:
Some small commits from my dev tree, I think these are for the most part quite trivial, tho we reduce the internal API a bit.
Depends on #12357 [no point in having to do a rebase]
ejgallego edited PR #12393 [declare] Miscellaneous nits from my main dev tree from declare+misc9
to master
:
Some small commits from my dev tree, I think these are for the most part quite trivial, tho we reduce the internal API a bit.
VizorKit opened Issue #12416 Creating a new Extraction "language"? [kind: question]
[kind: question]
I am trying to create my own extractor to a different output than Scheme, OCaml, C, and Haskell. I am sorry to even bother anyone with this question. But there doesn't seem to be a lot of documentation on how the original creators did so. Any direction at all would be helpful, as far as where to look at someones previous work. Any documentation that might be helpful with contributing to Coq. Etc.
Thanks.
Zimmi48 labeled Issue #12416 Creating a new Extraction "language"? [kind: question]
[kind: question]
I am trying to create my own extractor to a different output than Scheme, OCaml, C, and Haskell. I am sorry to even bother anyone with this question. But there doesn't seem to be a lot of documentation on how the original creators did so. Any direction at all would be helpful, as far as where to look at someones previous work. Any documentation that might be helpful with contributing to Coq. Etc.
Thanks.
Zimmi48 labeled Issue #12416 Creating a new Extraction "language"? [kind: question]
[kind: question]
I am trying to create my own extractor to a different output than Scheme, OCaml, C, and Haskell. I am sorry to even bother anyone with this question. But there doesn't seem to be a lot of documentation on how the original creators did so. Any direction at all would be helpful, as far as where to look at someones previous work. Any documentation that might be helpful with contributing to Coq. Etc.
Thanks.
VizorKit edited Issue #12416 Creating a new Extraction "language"?
[kind: question]
I am trying to create my own extractor to a different output than Scheme, OCaml, C, and Haskell. I am sorry to even bother anyone with this question. But there doesn't seem to be a lot of documentation on how the original creators did so. Any direction at all would be helpful, as far as where to look at someones previous work. Any documentation that might be helpful with contributing to Coq. Etc.
Thanks.
VizorKit edited Issue #12416 Creating a new Extraction "language"?
I am trying to create my own extractor to a different output than Scheme, OCaml, C, and Haskell. I am sorry to even bother anyone with this question. But there doesn't seem to be a lot of documentation on how the original creators did so. Any direction at all would be helpful, as far as where to look at someones previous work. Any documentation that might be helpful with contributing to Coq. Etc.
Thanks.
jfehrle submitted PR Review for #12103 Convert Ltac chapter to prodn.
jfehrle created PR Review Comment on #12103 Convert Ltac chapter to prodn:
That message is already documented so it can't be repeated here.
bfbonatto opened Issue #12417 Encountered an Anomaly when defining a Function:
Description of the problem
Hi, I am trying to define a function with a non-standard recursion pattern and encountered an
anomaly on the sum_total function: ' Anomaly "Uncaught exception Retyping.RetypeError(0)." 'Require Import List.
Require Export PeanoNat.
Require Export Omega.
Require Export CpdtTactics.
Require Import FunInd.
Require Import Recdef.Notation "A :: B" := (cons A B).
Notation "[]" := nil.
Notation "[[ A ]]" := (A :: nil).Inductive tm :=
| E: nat -> tm
| L: list tm -> tm.Definition T := list tm.
Fixpoint max_list (p: nat) (l: list nat) : nat :=
match l with
| [] => p
| n :: l' => max_list (Init.Nat.max n p) l'
end.Fixpoint depth (t: tm) : nat :=
match t with
| E _ => 0
| L l => 1 + max_list 0 (map depth l)
end.Fixpoint sum_depth (l: T) : nat :=
match l with
| [] => 0
| n :: l' => (depth n) + sum_depth l'
end.Definition sum_depth_order (t1 t2 : T) :=
sum_depth t1 < sum_depth t2.Hint Constructors Acc.
Lemma sum_depth_order_wf' : forall d l, sum_depth l <= d ->
Acc sum_depth_order l.
Proof.
unfold sum_depth_order. induction d; intros.- assert (sum_depth l = 0). omega.
apply Acc_intro. intros. omega.- apply Acc_intro. intros. assert (sum_depth y <= d). omega.
apply IHd. auto.
Defined.Theorem sum_depth_order_wf : well_founded sum_depth_order.
Proof.
unfold well_founded. unfold depth_order. intros.
eapply sum_depth_order_wf'. eauto.
Defined.Function sum_total (l: T) {wf sum_depth l} : nat :=
match l with
| [] => 0
| t :: l' =>
(match t with
| E n => n
| L li => sum_total li
end) + sum_total l'
end.Coq Version
8.10.1 on MacOs Mojave 10.14.5
ejgallego labeled Issue #12417 Encountered an Anomaly when defining a Function:
Description of the problem
Hi, I am trying to define a function with a non-standard recursion pattern and encountered an
anomaly on the sum_total function: ' Anomaly "Uncaught exception Retyping.RetypeError(0)." 'Require Import List.
Require Export PeanoNat.
Require Export Omega.
Require Export CpdtTactics.
Require Import FunInd.
Require Import Recdef.Notation "A :: B" := (cons A B).
Notation "[]" := nil.
Notation "[[ A ]]" := (A :: nil).Inductive tm :=
| E: nat -> tm
| L: list tm -> tm.Definition T := list tm.
Fixpoint max_list (p: nat) (l: list nat) : nat :=
match l with
| [] => p
| n :: l' => max_list (Init.Nat.max n p) l'
end.Fixpoint depth (t: tm) : nat :=
match t with
| E _ => 0
| L l => 1 + max_list 0 (map depth l)
end.Fixpoint sum_depth (l: T) : nat :=
match l with
| [] => 0
| n :: l' => (depth n) + sum_depth l'
end.Definition sum_depth_order (t1 t2 : T) :=
sum_depth t1 < sum_depth t2.Hint Constructors Acc.
Lemma sum_depth_order_wf' : forall d l, sum_depth l <= d ->
Acc sum_depth_order l.
Proof.
unfold sum_depth_order. induction d; intros.- assert (sum_depth l = 0). omega.
apply Acc_intro. intros. omega.- apply Acc_intro. intros. assert (sum_depth y <= d). omega.
apply IHd. auto.
Defined.Theorem sum_depth_order_wf : well_founded sum_depth_order.
Proof.
unfold well_founded. unfold depth_order. intros.
eapply sum_depth_order_wf'. eauto.
Defined.Function sum_total (l: T) {wf sum_depth l} : nat :=
match l with
| [] => 0
| t :: l' =>
(match t with
| E n => n
| L li => sum_total li
end) + sum_total l'
end.Coq Version
8.10.1 on MacOs Mojave 10.14.5
MSoegtropIMC updated PR #12186 CReal: changed epsilon for modulus of convergence from 1/n to 1/2^n from creal-new-modulus
to master
:
This PR changes the epsilon in the definition of the modulus of convergence for CReal from 1/n to 1/2^n. This avoids the issue that in practical high precision computations, even as binary integer n would be quite large (say 2^1000000), although quadratically convergent algorithms might need only a few 10 iterations to reach such a precision.
This is work in progress (right now I just did the main file ConstructiveCauchyReals.v).
@VincentSe : some things I think I should change:
as far as I can tell the major issue for the many lengthy manual arithmetic proofs is the use of variables in Qmake (a#b). As far as I can tell ring, field and lra don't understand that # and / is more or less the same thing. They can compute with literal numbers like 1#2 * 2#3 = 1#3, but they don't work for say 1#n. One should write 1/n instead and use # only for literal rational numbers (ground terms). This would be a major change, though, but I think expressions like 1#n are not intended and we should not do this in the standard library.
In general I am not happy with the proof style, since proofs generally look more complicated than they actually are, but this might improve a lot with the point above and maybe a few little preprocessing tactics and reordering.
When switching to an abstracted computational structure this might get much more messy so some upfront cleanup would help.
The addition function should be fully split into computational part and proof
[ ] Added / updated test-suite
- [ ] Corresponding documentation was added / updated (including any warning and error messages added / removed / modified).
- [ ] Entry added in the changelog (see https://github.com/coq/coq/tree/master/doc/changelog#unreleased-changelog for details).
Zimmi48 submitted PR Review for #12103 Convert Ltac chapter to prodn.
Zimmi48 created PR Review Comment on #12103 Convert Ltac chapter to prodn:
Right. But you could remove this incorrect one. And you could also refer the already documented message as is done here: https://github.com/coq/coq/blob/master/doc/sphinx/language/core/basic.rst#attributes (except that this example is referring to a warning). But that's up to you of course!
jfehrle submitted PR Review for #12103 Convert Ltac chapter to prodn.
jfehrle created PR Review Comment on #12103 Convert Ltac chapter to prodn:
Then
[> ]
is a weird exception.[> idtac "x"]
only works if there's one goal,[> idtac "y"; idtac "z" ]
only works if there are 2. Consistency suggests[> ]
should work only if there are zero goals.If that's a really important use case maybe it's worth mentioning in the doc. Isn't there a construction using
numgoals
that is more obvious?In this case, I'd bet that the redundancy would have been confusing to the reader
I disagree. It should be obvious to any reader that
{? {? foo } }
is the same as{? foo }
. Determining whetherfor_each_goal
is optional while reading the tactic line requires reading 2 lines of the prodn. Showing in the tactic is easier to read. But I'd only do it if we document[> ]
.
jfehrle updated PR #12103 Convert Ltac chapter to prodn (assigned to Zimmi48) from prodn_ltac
to master
:
A strategy question for now, don't read more than you have to.
I think the two-page long grammar in the Syntax section doesn't work.
I think I can live with making all the tacticals as
tacn::
, but we may need to add comments on them saying whichltac_expr*
they're associated with this since that has some effect on how the expression is interpreted (precedence).Then there would be 2 possibilities for that syntax block:
- omit all the tacticals (with some general explanation and mentioning precedences)
- move it, as it is, to the end of the chapter (with a link near the beginning)
I'd go for the first option. Also, I need to make sure I understand how the precedence works.
Your thoughts?
Fix #11932
Zimmi48 submitted PR Review for #12103 Convert Ltac chapter to prodn.
Zimmi48 created PR Review Comment on #12103 Convert Ltac chapter to prodn:
You are getting confused. All your examples work only if there are exactly one goal (because there is no
|
).
Zimmi48 submitted PR Review for #12103 Convert Ltac chapter to prodn.
Zimmi48 created PR Review Comment on #12103 Convert Ltac chapter to prodn:
In particular, there is no weird exception.
jfehrle edited PR Review Comment on #12103 Convert Ltac chapter to prodn.
jfehrle submitted PR Review for #12103 Convert Ltac chapter to prodn.
jfehrle created PR Review Comment on #12103 Convert Ltac chapter to prodn:
I had a typo, should have been
[> idtac "x" | idtac "y"].
Then we need to reword "the construct fails if the number of specified {? @ltac_expr } is not the same as the number of focused goals." with the less aesthetic
"... as the number of "|" plus one."
jfehrle submitted PR Review for #12396 Release notes 8.12.
jfehrle created PR Review Comment on #12396 Release notes 8.12:
Making them subsections doesn't make them appear in the TOC in the left-bar (too many levels) and I tried both and I prefer the appearance that the current state results in.
We should figure out, though not in this PR, a better way to handle this because the issue arises in other long chapters or sections. I expect the TOC should be configurable somehow. Manually adding hyperlinks at the beginning of the section is easy enough, but isn't self-maintaining. There ought to be a directive to make it self maintaining. WDYT?
satnam6502 opened Issue #12418 File "pretyping/cases.ml", line 1719, characters 29-35: Assertion failed.
<!-- Thank you for reporting a bug to Coq! -->
Description of the problem
I get the following error message:
"File "pretyping/cases.ml", line 1719, characters 29-35: Assertion failed."
I suspect I have done something wrong :-(
Repo:
$ git clone https://github.com/satnam6502/oak-hardware $ git checkout 38971a7d0f8aa04b6fa4e21d1dfda3990ecf2c66 $ cd oak-hardware/cava/cava $ make coq coq_makefile -f _CoqProject -o Makefile.coq /Library/Developer/CommandLineTools/usr/bin/make -f Makefile.coq COQDEP VFILES *** Warning: in file Cava/Arrow/Instances/Netlist.v, required library Netlist matches several files in path (found Netlist.v in Cava/Arrow/Instances and Cava; used the latter) COQC Cava/BitArithmetic.v COQC Cava/Signal.v COQC Cava/Types.v COQC Cava/Netlist.v COQC Cava/Monad/Cava.v COQC Cava/Monad/Combinators.v COQC Cava/Monad/UnsignedAdders.v COQC Cava/Monad/XilinxAdder.v COQC Cava/Arrow/Arrow.v COQC Cava/Arrow/Instances/Constructive.v COQC Cava/Arrow/Instances/Combinational.v COQC Cava/Arrow/Instances/Netlist.v File "./Cava/Arrow/Instances/Netlist.v", line 111, characters 2-1820: Error: Anomaly "File "pretyping/cases.ml", line 1719, characters 29-35: Assertion failed." Please report at http://coq.inria.fr/bugs/.
Coq Version
$ coqtop -v The Coq Proof Assistant, version 8.11.0 (January 2020) compiled on Jan 27 2020 17:46:49 with OCaml 4.09.0
JasonGross submitted PR Review for #12103 Convert Ltac chapter to prodn.
JasonGross created PR Review Comment on #12103 Convert Ltac chapter to prodn:
The sentence as stated is true; you just need to be aware of the fact that
{? @ltac_expr }
is allowed to be empty, so the number of{? @ltac_expr }
is not the same as the number of@ltac_expr
in some cases. Perhaps this is worth noting? Note also that this correspondence breaks down if..
appears in the construction.
JasonGross submitted PR Review for #12103 Convert Ltac chapter to prodn.
JasonGross created PR Review Comment on #12103 Convert Ltac chapter to prodn:
Note also that, e.g.,
[ > | | | ]
is valid, and I use this form of the construction sometimes in preference tonumgoals
withguard
, as it's much shorter (and also more version-independent; I seem to recallguard
having some weird edge cases around having 0 goals back when it was first introduced).
MSoegtropIMC updated PR #12186 CReal: changed epsilon for modulus of convergence from 1/n to 1/2^n from creal-new-modulus
to master
:
This PR changes the epsilon in the definition of the modulus of convergence for CReal from 1/n to 1/2^n. This avoids the issue that in practical high precision computations, even as binary integer n would be quite large (say 2^1000000), although quadratically convergent algorithms might need only a few 10 iterations to reach such a precision.
This is work in progress (right now I just did the main file ConstructiveCauchyReals.v).
@VincentSe : some things I think I should change:
as far as I can tell the major issue for the many lengthy manual arithmetic proofs is the use of variables in Qmake (a#b). As far as I can tell ring, field and lra don't understand that # and / is more or less the same thing. They can compute with literal numbers like 1#2 * 2#3 = 1#3, but they don't work for say 1#n. One should write 1/n instead and use # only for literal rational numbers (ground terms). This would be a major change, though, but I think expressions like 1#n are not intended and we should not do this in the standard library.
In general I am not happy with the proof style, since proofs generally look more complicated than they actually are, but this might improve a lot with the point above and maybe a few little preprocessing tactics and reordering.
When switching to an abstracted computational structure this might get much more messy so some upfront cleanup would help.
The addition function should be fully split into computational part and proof
[ ] Added / updated test-suite
- [ ] Corresponding documentation was added / updated (including any warning and error messages added / removed / modified).
- [ ] Entry added in the changelog (see https://github.com/coq/coq/tree/master/doc/changelog#unreleased-changelog for details).
VincentSe updated PR #12409 Parametric rings from ParametricRings
to master
:
Kind: feature
Make
Add Ring
parametric, so that we can register families of rings like
Add Parametric Ring CRRing (R : ConstructiveReals) : (CRisRing R).
ppedrot milestoned Issue #12419 Various cleanups in eauto:
Nothing involved, this factorizes code and enforces a few static invariants on the way.
I had a bench just in case but it doesn't show anything except noise.
ppedrot opened PR #12419 Various cleanups in eauto from cleanup-eauto
to master
:
Nothing involved, this factorizes code and enforces a few static invariants on the way.
I had a bench just in case but it doesn't show anything except noise.
ppedrot requested tactics-maintainers for a review on PR #12419 Various cleanups in eauto.
ejgallego:
ejgallego labeled Issue #12418 File "pretyping/cases.ml", line 1719, characters 29-35: Assertion failed.
<!-- Thank you for reporting a bug to Coq! -->
Description of the problem
I get the following error message:
"File "pretyping/cases.ml", line 1719, characters 29-35: Assertion failed."
I suspect I have done something wrong :-(
Repo:
$ git clone https://github.com/satnam6502/oak-hardware $ git checkout 38971a7d0f8aa04b6fa4e21d1dfda3990ecf2c66 $ cd oak-hardware/cava/cava $ make coq coq_makefile -f _CoqProject -o Makefile.coq /Library/Developer/CommandLineTools/usr/bin/make -f Makefile.coq COQDEP VFILES *** Warning: in file Cava/Arrow/Instances/Netlist.v, required library Netlist matches several files in path (found Netlist.v in Cava/Arrow/Instances and Cava; used the latter) COQC Cava/BitArithmetic.v COQC Cava/Signal.v COQC Cava/Types.v COQC Cava/Netlist.v COQC Cava/Monad/Cava.v COQC Cava/Monad/Combinators.v COQC Cava/Monad/UnsignedAdders.v COQC Cava/Monad/XilinxAdder.v COQC Cava/Arrow/Arrow.v COQC Cava/Arrow/Instances/Constructive.v COQC Cava/Arrow/Instances/Combinational.v COQC Cava/Arrow/Instances/Netlist.v File "./Cava/Arrow/Instances/Netlist.v", line 111, characters 2-1820: Error: Anomaly "File "pretyping/cases.ml", line 1719, characters 29-35: Assertion failed." Please report at http://coq.inria.fr/bugs/.
Coq Version
$ coqtop -v The Coq Proof Assistant, version 8.11.0 (January 2020) compiled on Jan 27 2020 17:46:49 with OCaml 4.09.0
ejgallego assigned [PR #12408 Fix output tests for location errors when running in async mode.](https://github.com/coq/coq/pull/12408 to ejgallego.
ejgallego submitted PR Review for #12408 Fix output tests for location errors when running in async mode.
ejgallego pushed 2 commits to branch master. Commits by Zimmi48 (1) and ejgallego (1).
ejgallego merged PR #12408 Fix output tests for location errors when running in async mode.
ejgallego labeled Issue #12418 File "pretyping/cases.ml", line 1719, characters 29-35: Assertion failed.
<!-- Thank you for reporting a bug to Coq! -->
Description of the problem
I get the following error message:
"File "pretyping/cases.ml", line 1719, characters 29-35: Assertion failed."
I suspect I have done something wrong :-(
Repo:
$ git clone https://github.com/satnam6502/oak-hardware $ git checkout 38971a7d0f8aa04b6fa4e21d1dfda3990ecf2c66 $ cd oak-hardware/cava/cava $ make coq coq_makefile -f _CoqProject -o Makefile.coq /Library/Developer/CommandLineTools/usr/bin/make -f Makefile.coq COQDEP VFILES *** Warning: in file Cava/Arrow/Instances/Netlist.v, required library Netlist matches several files in path (found Netlist.v in Cava/Arrow/Instances and Cava; used the latter) COQC Cava/BitArithmetic.v COQC Cava/Signal.v COQC Cava/Types.v COQC Cava/Netlist.v COQC Cava/Monad/Cava.v COQC Cava/Monad/Combinators.v COQC Cava/Monad/UnsignedAdders.v COQC Cava/Monad/XilinxAdder.v COQC Cava/Arrow/Arrow.v COQC Cava/Arrow/Instances/Constructive.v COQC Cava/Arrow/Instances/Combinational.v COQC Cava/Arrow/Instances/Netlist.v File "./Cava/Arrow/Instances/Netlist.v", line 111, characters 2-1820: Error: Anomaly "File "pretyping/cases.ml", line 1719, characters 29-35: Assertion failed." Please report at http://coq.inria.fr/bugs/.
Coq Version
$ coqtop -v The Coq Proof Assistant, version 8.11.0 (January 2020) compiled on Jan 27 2020 17:46:49 with OCaml 4.09.0
ejgallego closed Issue #12418 File "pretyping/cases.ml", line 1719, characters 29-35: Assertion failed.
<!-- Thank you for reporting a bug to Coq! -->
Description of the problem
I get the following error message:
"File "pretyping/cases.ml", line 1719, characters 29-35: Assertion failed."
I suspect I have done something wrong :-(
Repo:
$ git clone https://github.com/satnam6502/oak-hardware $ git checkout 38971a7d0f8aa04b6fa4e21d1dfda3990ecf2c66 $ cd oak-hardware/cava/cava $ make coq coq_makefile -f _CoqProject -o Makefile.coq /Library/Developer/CommandLineTools/usr/bin/make -f Makefile.coq COQDEP VFILES *** Warning: in file Cava/Arrow/Instances/Netlist.v, required library Netlist matches several files in path (found Netlist.v in Cava/Arrow/Instances and Cava; used the latter) COQC Cava/BitArithmetic.v COQC Cava/Signal.v COQC Cava/Types.v COQC Cava/Netlist.v COQC Cava/Monad/Cava.v COQC Cava/Monad/Combinators.v COQC Cava/Monad/UnsignedAdders.v COQC Cava/Monad/XilinxAdder.v COQC Cava/Arrow/Arrow.v COQC Cava/Arrow/Instances/Constructive.v COQC Cava/Arrow/Instances/Combinational.v COQC Cava/Arrow/Instances/Netlist.v File "./Cava/Arrow/Instances/Netlist.v", line 111, characters 2-1820: Error: Anomaly "File "pretyping/cases.ml", line 1719, characters 29-35: Assertion failed." Please report at http://coq.inria.fr/bugs/.
Coq Version
$ coqtop -v The Coq Proof Assistant, version 8.11.0 (January 2020) compiled on Jan 27 2020 17:46:49 with OCaml 4.09.0
Zimmi48 milestoned Issue #12418 File "pretyping/cases.ml", line 1719, characters 29-35: Assertion failed.
<!-- Thank you for reporting a bug to Coq! -->
Description of the problem
I get the following error message:
"File "pretyping/cases.ml", line 1719, characters 29-35: Assertion failed."
I suspect I have done something wrong :-(
Repo:
$ git clone https://github.com/satnam6502/oak-hardware $ git checkout 38971a7d0f8aa04b6fa4e21d1dfda3990ecf2c66 $ cd oak-hardware/cava/cava $ make coq coq_makefile -f _CoqProject -o Makefile.coq /Library/Developer/CommandLineTools/usr/bin/make -f Makefile.coq COQDEP VFILES *** Warning: in file Cava/Arrow/Instances/Netlist.v, required library Netlist matches several files in path (found Netlist.v in Cava/Arrow/Instances and Cava; used the latter) COQC Cava/BitArithmetic.v COQC Cava/Signal.v COQC Cava/Types.v COQC Cava/Netlist.v COQC Cava/Monad/Cava.v COQC Cava/Monad/Combinators.v COQC Cava/Monad/UnsignedAdders.v COQC Cava/Monad/XilinxAdder.v COQC Cava/Arrow/Arrow.v COQC Cava/Arrow/Instances/Constructive.v COQC Cava/Arrow/Instances/Combinational.v COQC Cava/Arrow/Instances/Netlist.v File "./Cava/Arrow/Instances/Netlist.v", line 111, characters 2-1820: Error: Anomaly "File "pretyping/cases.ml", line 1719, characters 29-35: Assertion failed." Please report at http://coq.inria.fr/bugs/.
Coq Version
$ coqtop -v The Coq Proof Assistant, version 8.11.0 (January 2020) compiled on Jan 27 2020 17:46:49 with OCaml 4.09.0
maximedenes edited PR #12337 Move CoqIDE to its own folder (assigned to gares) from mv-coqide
to master
:
This will make it possible to put a VsCoq toplevel in
ide/vscoq
.It's funny to compare what I had to do to adapt the
Makefile
build (see the patch below), compared to just moving the folder for Dune.
maximedenes requested windows-build-maintainers for a review on PR #12337 Move CoqIDE to its own folder.
maximedenes updated PR #12337 Move CoqIDE to its own folder (assigned to gares) from mv-coqide
to master
:
This will make it possible to put a VsCoq toplevel in
ide/vscoq
.It's funny to compare what I had to do to adapt the
Makefile
build (see the patch below), compared to just moving the folder for Dune.
proux01 updated PR #12218 Numeral notations for non inductive types from numeral-notations-non-inductive
to master
:
This is a tentative implementation of the idea discussed in #12035
This is still lacking some proofs and proper documentation.
Numeral Notation non_inductive via inductive using ...
The main idea is to use actual inductive types that map what you want to parse/print and just translate to (resp. from) the actual type from (resp. to) this inductive type after calling the parser (resp before the printer). One then just has to provide a mapping from globrefs of the actual type to constructors of the inductive type.
For instance, for reals, that looks something like
Inductive IZ := | IZpow_pos : Z -> positive -> IZ | IZ0 : IZ | IZpos : positive -> IZ | IZneg : positive -> IZ. Inductive IR := | IRZ : IZ -> IR | IRQ : Q -> IR | IRmult : IR -> IR -> IR | IRdiv : IR -> IR -> IR. [..] (* define parser numeral_to_IR and printer IR_to_numeral *) Numeral Notation R via IR using (IZR IRZ, Q2R IRQ, Rmult IRmult, Rdiv IRdiv, Z.pow_pos IZpow_pos, Z0 IZ0, Zpos IZpos, Zneg IZneg) numeral_to_IR IR_to_numeral : R_scope.
Two notations are provided as examples for
Q
andR
.Q
Previously rationals were all parsed as a pair numerator, denominator. This means
1.02
and102e-2
were both parsed as102 # 100
and could not be tell apart when printing. So the printer had to choose between two representations : without exponent or without decimal dot. The choice was made heuristically toward a most compact representation.Now, decimal dot is still parsed as a power of ten denominator but exponents are parsed as a product or division by
Z.pow_pos
. For instance,1.02
is parsed as102 # 100
whereas102e-2
is parsed as(102 # 1) / (Z.pow_pos 10 2 # 1)
.
1.02
and102e-2
remain equal (proved by reflexivity) but1.02e1 = (102 # 100) * (10 # 1) = 1020 # 100
and10.2 = 102 # 10
no longer are.A nice side effect is that exponents can no longer blow up during parsing. Previously
1e1_000_000
literally produced a numerator with a million digits, now it just yields(1 # 1) * (Z.pow_pos 10 1_000_000 # 1)
.R
Previously real constants were parsed by an unproved OCaml code. The parser and printer are now implemented in Coq, which will enable a proof and hopefully make it easier to maintain / make evolve.
Previously reals were all parsed as an integer, an integer multiplied by a power of ten or an integer divided by a power of ten. This means
1.02
and102e-2
were both parsed as102 / 100
and could not be tell apart when printing. So the printer had to choose between two representations : without exponent or without decimal dot. The choice was made heuristically toward a most compact representation.Now, decimal dot is parsed as a rational and exponents are parsed as a product or division by a power of ten. For instance,
1.02
is parsed asQ2R (102 # 100)
whereas102e-2
is parsed asIZR 102 / IZR (Z.pow_pos 10 2)
.
1.02
and102e-2
remain equal (proved by reflexivity) but1.02e1 = Q2R (102 # 100) * 10
and10.2 = Q2R (102 # 10)
no longer are.TODO
~Depends from: #11948~
- [ ] prove numeral notation for
Q
- [ ] prove numeral notation for
R
- [x] Added / updated test-suite
- [ ] Corresponding documentation was added / updated (including any warning and error messages added / removed / modified).
- [ ] Entry added in the changelog (see https://github.com/coq/coq/tree/master/doc/changelog#unreleased-changelog for details).
proux01 edited PR #12218 Numeral notations for non inductive types from numeral-notations-non-inductive
to master
:
This is a tentative implementation of the idea discussed in #12035
This is still lacking some proofs and proper documentation.
Numeral Notation non_inductive via inductive using ...
The main idea is to use actual inductive types that map what you want to parse/print and just translate to (resp. from) the actual type from (resp. to) this inductive type after calling the parser (resp before the printer). One then just has to provide a mapping from globrefs of the actual type to constructors of the inductive type.
For instance, for reals, that looks something like
Inductive IZ := | IZpow_pos : Z -> positive -> IZ | IZ0 : IZ | IZpos : positive -> IZ | IZneg : positive -> IZ. Inductive IR := | IRZ : IZ -> IR | IRQ : Q -> IR | IRmult : IR -> IR -> IR | IRdiv : IR -> IR -> IR. [..] (* define parser numeral_to_IR and printer IR_to_numeral *) Numeral Notation R via IR using (IZR IRZ, Q2R IRQ, Rmult IRmult, Rdiv IRdiv, Z.pow_pos IZpow_pos, Z0 IZ0, Zpos IZpos, Zneg IZneg) numeral_to_IR IR_to_numeral : R_scope.
Two notations are provided as examples for
Q
andR
.Q
Previously rationals were all parsed as a pair numerator, denominator. This means
1.02
and102e-2
were both parsed as102 # 100
and could not be tell apart when printing. So the printer had to choose between two representations : without exponent or without decimal dot. The choice was made heuristically toward a most compact representation.Now, decimal dot is still parsed as a power of ten denominator but exponents are parsed as a product or division by
Z.pow_pos
. For instance,1.02
is parsed as102 # 100
whereas102e-2
is parsed as(102 # 1) / (Z.pow_pos 10 2 # 1)
.
1.02
and102e-2
remain equal (proved by reflexivity) but1.02e1 = (102 # 100) * (10 # 1) = 1020 # 100
and10.2 = 102 # 10
no longer are.A nice side effect is that exponents can no longer blow up during parsing. Previously
1e1_000_000
literally produced a numerator with a million digits, now it just yields(1 # 1) * (Z.pow_pos 10 1_000_000 # 1)
.R
Previously real constants were parsed by an unproved OCaml code. The parser and printer are now implemented in Coq, which will enable a proof and hopefully make it easier to maintain / make evolve.
Previously reals were all parsed as an integer, an integer multiplied by a power of ten or an integer divided by a power of ten. This means
1.02
and102e-2
were both parsed as102 / 100
and could not be tell apart when printing. So the printer had to choose between two representations : without exponent or without decimal dot. The choice was made heuristically toward a most compact representation.Now, decimal dot is parsed as a rational and exponents are parsed as a product or division by a power of ten. For instance,
1.02
is parsed asQ2R (102 # 100)
whereas102e-2
is parsed asIZR 102 / IZR (Z.pow_pos 10 2)
.
1.02
and102e-2
remain equal (proved by reflexivity) but1.02e1 = Q2R (102 # 100) * 10
and10.2 = Q2R (102 # 10)
no longer are.TODO
~Depends from: #11948~
- [x] prove numeral notation for
Q
- [ ] prove numeral notation for
R
- [x] Added / updated test-suite
- [ ] Corresponding documentation was added / updated (including any warning and error messages added / removed / modified).
- [ ] Entry added in the changelog (see https://github.com/coq/coq/tree/master/doc/changelog#unreleased-changelog for details).
proux01 edited PR #12218 Numeral notations for non inductive types from numeral-notations-non-inductive
to master
:
This is a tentative implementation of the idea discussed in #12035
This is still lacking some proofs and proper documentation.
Numeral Notation non_inductive via inductive using ...
The main idea is to use actual inductive types that map what you want to parse/print and just translate to (resp. from) the actual type from (resp. to) this inductive type after calling the parser (resp before the printer). One then just has to provide a mapping from globrefs of the actual type to constructors of the inductive type.
For instance, for reals, that looks something like
Inductive IZ := | IZpow_pos : Z -> positive -> IZ | IZ0 : IZ | IZpos : positive -> IZ | IZneg : positive -> IZ. Inductive IR := | IRZ : IZ -> IR | IRQ : Q -> IR | IRmult : IR -> IR -> IR | IRdiv : IR -> IR -> IR. [..] (* define parser numeral_to_IR and printer IR_to_numeral *) Numeral Notation R via IR using (IZR IRZ, Q2R IRQ, Rmult IRmult, Rdiv IRdiv, Z.pow_pos IZpow_pos, Z0 IZ0, Zpos IZpos, Zneg IZneg) numeral_to_IR IR_to_numeral : R_scope.
Two notations are provided as examples for
Q
andR
.Q
Previously rationals were all parsed as a pair numerator, denominator. This means
1.02
and102e-2
were both parsed as102 # 100
and could not be tell apart when printing. So the printer had to choose between two representations : without exponent or without decimal dot. The choice was made heuristically toward a most compact representation.Now, decimal dot is still parsed as a power of ten denominator but exponents are parsed as a product or division by
Z.pow_pos
. For instance,1.02
is parsed as102 # 100
whereas102e-2
is parsed as(102 # 1) / (Z.pow_pos 10 2 # 1)
.
1.02
and102e-2
remain equal (proved by reflexivity) but1.02e1 = (102 # 100) * (10 # 1) = 1020 # 100
and10.2 = 102 # 10
no longer are.A nice side effect is that exponents can no longer blow up during parsing. Previously
1e1_000_000
literally produced a numerator with a million digits, now it just yields(1 # 1) * (Z.pow_pos 10 1_000_000 # 1)
.R
Previously real constants were parsed by an unproved OCaml code. The parser and printer are now implemented in Coq, which will enable a proof and hopefully make it easier to maintain / make evolve.
Previously reals were all parsed as an integer, an integer multiplied by a power of ten or an integer divided by a power of ten. This means
1.02
and102e-2
were both parsed as102 / 100
and could not be tell apart when printing. So the printer had to choose between two representations : without exponent or without decimal dot. The choice was made heuristically toward a most compact representation.Now, decimal dot is parsed as a rational and exponents are parsed as a product or division by a power of ten. For instance,
1.02
is parsed asQ2R (102 # 100)
whereas102e-2
is parsed asIZR 102 / IZR (Z.pow_pos 10 2)
.
1.02
and102e-2
remain equal (proved by reflexivity) but1.02e1 = Q2R (102 # 100) * 10
and10.2 = Q2R (102 # 10)
no longer are.TODO
~Depends from: #11948~
- [x] prove numeral notation for
Q
- [x] prove numeral notation for
R
- [x] Added / updated test-suite
- [ ] Corresponding documentation was added / updated (including any warning and error messages added / removed / modified).
- [ ] Entry added in the changelog (see https://github.com/coq/coq/tree/master/doc/changelog#unreleased-changelog for details).
Mbodin updated PR #12389 Small coq_makefile improvement. (assigned to gares) from coq_makefile
to master
:
Kind: feature.
Relates to #7740 and #7722.
- [ ] Updated test-suite
- [x] Corresponding documentation was added.
- [x] Entry added in the changelog (see https://github.com/coq/coq/tree/master/doc/changelog#unreleased-changelog for details).
The behaviour of coq_makefile regarding
DESTDIR
is somehow confusing (as seen in the related bug reports above). The “usual” set-up in Linux seems to be:
- set
DESTDIR
to the wanted place.- set
COQMF_WINDRIVE
toCOQLIB
to “cancel” the default place.- coq_makefile will add a
user-contrib
at the end.The
COQMF_WINDRIVE
parts feels like a hack and is currently undocumented. This PR provides an alternative way (without breaking the previous way):
- set
COQLIBINSTALL
,COQDOCINSTALL
, andCOQTOPINSTALL
to whatever the user needs.Being able to set up the installation directory is especially important when using programs like
esy
, in which different Coq installation can be shared among repositories:esy
installs Coq libraries into their own directory, relying on theCOQPATH
mechanism to link everything back together. By forcing the installation to${COQLIB}/user-contrib
, coq_makefile is installing files in a shared folder, which breaksesy
’s invariants required for replication.
Zimmi48 submitted PR Review for #12396 Release notes 8.12.
Zimmi48 created PR Review Comment on #12396 Release notes 8.12:
Sorry, I missed most of your comments last time:
Will we mention the doc improvements (and the plans for subsequent improvements) more prominently, such as in the email announcing the release?
There's a summary to be written above, which highlights a selection of changes. The documentation changes in 8.12 are clearly one of the highlights to be done.
The e-mail announcing the release will repeat these highlights. But in addition, the 8.12+beta1 announcement should include a call for beta readers of the manual and for help in improving the presentation further. I'll get back to you for help writing this call.
ejgallego unlabeled Issue #12418 File "pretyping/cases.ml", line 1719, characters 29-35: Assertion failed.
<!-- Thank you for reporting a bug to Coq! -->
Description of the problem
I get the following error message:
"File "pretyping/cases.ml", line 1719, characters 29-35: Assertion failed."
I suspect I have done something wrong :-(
Repo:
$ git clone https://github.com/satnam6502/oak-hardware $ git checkout 38971a7d0f8aa04b6fa4e21d1dfda3990ecf2c66 $ cd oak-hardware/cava/cava $ make coq coq_makefile -f _CoqProject -o Makefile.coq /Library/Developer/CommandLineTools/usr/bin/make -f Makefile.coq COQDEP VFILES *** Warning: in file Cava/Arrow/Instances/Netlist.v, required library Netlist matches several files in path (found Netlist.v in Cava/Arrow/Instances and Cava; used the latter) COQC Cava/BitArithmetic.v COQC Cava/Signal.v COQC Cava/Types.v COQC Cava/Netlist.v COQC Cava/Monad/Cava.v COQC Cava/Monad/Combinators.v COQC Cava/Monad/UnsignedAdders.v COQC Cava/Monad/XilinxAdder.v COQC Cava/Arrow/Arrow.v COQC Cava/Arrow/Instances/Constructive.v COQC Cava/Arrow/Instances/Combinational.v COQC Cava/Arrow/Instances/Netlist.v File "./Cava/Arrow/Instances/Netlist.v", line 111, characters 2-1820: Error: Anomaly "File "pretyping/cases.ml", line 1719, characters 29-35: Assertion failed." Please report at http://coq.inria.fr/bugs/.
Coq Version
$ coqtop -v The Coq Proof Assistant, version 8.11.0 (January 2020) compiled on Jan 27 2020 17:46:49 with OCaml 4.09.0
ejgallego labeled Issue #12418 File "pretyping/cases.ml", line 1719, characters 29-35: Assertion failed.
<!-- Thank you for reporting a bug to Coq! -->
Description of the problem
I get the following error message:
"File "pretyping/cases.ml", line 1719, characters 29-35: Assertion failed."
I suspect I have done something wrong :-(
Repo:
$ git clone https://github.com/satnam6502/oak-hardware $ git checkout 38971a7d0f8aa04b6fa4e21d1dfda3990ecf2c66 $ cd oak-hardware/cava/cava $ make coq coq_makefile -f _CoqProject -o Makefile.coq /Library/Developer/CommandLineTools/usr/bin/make -f Makefile.coq COQDEP VFILES *** Warning: in file Cava/Arrow/Instances/Netlist.v, required library Netlist matches several files in path (found Netlist.v in Cava/Arrow/Instances and Cava; used the latter) COQC Cava/BitArithmetic.v COQC Cava/Signal.v COQC Cava/Types.v COQC Cava/Netlist.v COQC Cava/Monad/Cava.v COQC Cava/Monad/Combinators.v COQC Cava/Monad/UnsignedAdders.v COQC Cava/Monad/XilinxAdder.v COQC Cava/Arrow/Arrow.v COQC Cava/Arrow/Instances/Constructive.v COQC Cava/Arrow/Instances/Combinational.v COQC Cava/Arrow/Instances/Netlist.v File "./Cava/Arrow/Instances/Netlist.v", line 111, characters 2-1820: Error: Anomaly "File "pretyping/cases.ml", line 1719, characters 29-35: Assertion failed." Please report at http://coq.inria.fr/bugs/.
Coq Version
$ coqtop -v The Coq Proof Assistant, version 8.11.0 (January 2020) compiled on Jan 27 2020 17:46:49 with OCaml 4.09.0
ejgallego reopened Issue #12418 File "pretyping/cases.ml", line 1719, characters 29-35: Assertion failed.
<!-- Thank you for reporting a bug to Coq! -->
Description of the problem
I get the following error message:
"File "pretyping/cases.ml", line 1719, characters 29-35: Assertion failed."
I suspect I have done something wrong :-(
Repo:
$ git clone https://github.com/satnam6502/oak-hardware $ git checkout 38971a7d0f8aa04b6fa4e21d1dfda3990ecf2c66 $ cd oak-hardware/cava/cava $ make coq coq_makefile -f _CoqProject -o Makefile.coq /Library/Developer/CommandLineTools/usr/bin/make -f Makefile.coq COQDEP VFILES *** Warning: in file Cava/Arrow/Instances/Netlist.v, required library Netlist matches several files in path (found Netlist.v in Cava/Arrow/Instances and Cava; used the latter) COQC Cava/BitArithmetic.v COQC Cava/Signal.v COQC Cava/Types.v COQC Cava/Netlist.v COQC Cava/Monad/Cava.v COQC Cava/Monad/Combinators.v COQC Cava/Monad/UnsignedAdders.v COQC Cava/Monad/XilinxAdder.v COQC Cava/Arrow/Arrow.v COQC Cava/Arrow/Instances/Constructive.v COQC Cava/Arrow/Instances/Combinational.v COQC Cava/Arrow/Instances/Netlist.v File "./Cava/Arrow/Instances/Netlist.v", line 111, characters 2-1820: Error: Anomaly "File "pretyping/cases.ml", line 1719, characters 29-35: Assertion failed." Please report at http://coq.inria.fr/bugs/.
Coq Version
$ coqtop -v The Coq Proof Assistant, version 8.11.0 (January 2020) compiled on Jan 27 2020 17:46:49 with OCaml 4.09.0
ejgallego demilestoned Issue #12418 File "pretyping/cases.ml", line 1719, characters 29-35: Assertion failed.
<!-- Thank you for reporting a bug to Coq! -->
Description of the problem
I get the following error message:
"File "pretyping/cases.ml", line 1719, characters 29-35: Assertion failed."
I suspect I have done something wrong :-(
Repo:
$ git clone https://github.com/satnam6502/oak-hardware $ git checkout 38971a7d0f8aa04b6fa4e21d1dfda3990ecf2c66 $ cd oak-hardware/cava/cava $ make coq coq_makefile -f _CoqProject -o Makefile.coq /Library/Developer/CommandLineTools/usr/bin/make -f Makefile.coq COQDEP VFILES *** Warning: in file Cava/Arrow/Instances/Netlist.v, required library Netlist matches several files in path (found Netlist.v in Cava/Arrow/Instances and Cava; used the latter) COQC Cava/BitArithmetic.v COQC Cava/Signal.v COQC Cava/Types.v COQC Cava/Netlist.v COQC Cava/Monad/Cava.v COQC Cava/Monad/Combinators.v COQC Cava/Monad/UnsignedAdders.v COQC Cava/Monad/XilinxAdder.v COQC Cava/Arrow/Arrow.v COQC Cava/Arrow/Instances/Constructive.v COQC Cava/Arrow/Instances/Combinational.v COQC Cava/Arrow/Instances/Netlist.v File "./Cava/Arrow/Instances/Netlist.v", line 111, characters 2-1820: Error: Anomaly "File "pretyping/cases.ml", line 1719, characters 29-35: Assertion failed." Please report at http://coq.inria.fr/bugs/.
Coq Version
$ coqtop -v The Coq Proof Assistant, version 8.11.0 (January 2020) compiled on Jan 27 2020 17:46:49 with OCaml 4.09.0
ejgallego edited Issue #12417 Encountered an Anomaly when defining a Function:
Description of the problem
Hi, I am trying to define a function with a non-standard recursion pattern and encountered an
anomaly on the sum_total function: ' Anomaly "Uncaught exception Retyping.RetypeError(0)." 'Require Import List. Require Export PeanoNat. Require Export Omega. Require Export CpdtTactics. Require Import FunInd. Require Import Recdef. Notation "A :: B" := (cons A B). Notation "[]" := nil. Notation "[[ A ]]" := (A :: nil). Inductive tm := | E: nat -> tm | L: list tm -> tm. Definition T := list tm. Fixpoint max_list (p: nat) (l: list nat) : nat := match l with | [] => p | n :: l' => max_list (Init.Nat.max n p) l' end. Fixpoint depth (t: tm) : nat := match t with | E _ => 0 | L l => 1 + max_list 0 (map depth l) end. Fixpoint sum_depth (l: T) : nat := match l with | [] => 0 | n :: l' => (depth n) + sum_depth l' end. Definition sum_depth_order (t1 t2 : T) := sum_depth t1 < sum_depth t2. Hint Constructors Acc. Lemma sum_depth_order_wf' : forall d l, sum_depth l <= d -> Acc sum_depth_order l. Proof. unfold sum_depth_order. induction d; intros. - assert (sum_depth l = 0). omega. apply