Skip to content

Conversation

@Tragicus
Copy link
Contributor

@Tragicus Tragicus commented Oct 9, 2025

The unification algorithm sometimes fails on problems of the form ?a = t because variables that are not in the scope of ?a appear in t. This PR solves the case where the variable appears in an argument of an evar, e.g. ?b x, by instantiating the evar (?b) to forget the argument.
For instance, unifying forall x : ?T, f (?a x) and forall _ : ?T, ?b reduces to unifying f (?a x) and ?b, which fails because x is not available when instantiating ?b.

Fixes / closes #????

  • Added / updated test-suite.
  • Added changelog.
  • Added / updated documentation.
    • Documented any new / changed user messages.
    • Updated documented syntax by running make doc_gram_rsts.
  • Opened overlay pull requests.

Overlays (to be merged before this)

@Tragicus Tragicus requested a review from a team as a code owner October 9, 2025 09:19
@coqbot-app coqbot-app bot added the needs: full CI The latest GitLab pipeline that ran was a light CI. Say "@coqbot run full ci" to get a full CI. label Oct 9, 2025
@Tragicus
Copy link
Contributor Author

Tragicus commented Oct 9, 2025

I am not sure what to do about bug_3209.v. It seems the problem it describes disappears with this PR. I expect we would not want to get rid of the file, do we keep only the first check, with a small rewriting of the above comment to explain what happens and get rid of everything below?

@ppedrot
Copy link
Member

ppedrot commented Oct 9, 2025

@coqbot run full ci

@coqbot-app coqbot-app bot removed the needs: full CI The latest GitLab pipeline that ran was a light CI. Say "@coqbot run full ci" to get a full CI. label Oct 9, 2025
@coqbot-app
Copy link
Contributor

coqbot-app bot commented Oct 9, 2025

🔴 CI failures at commit 903d928 without any failure in the test-suite

✔️ Corresponding jobs for the base commit 3853feb succeeded

❔ Ask me to try to extract minimal test cases that can be added to the test-suite

🏃 @coqbot ci minimize will minimize the following targets: ci-argosy, ci-elpi_test, ci-hott, ci-iris
  • You can also pass me a specific list of targets to minimize as arguments.

@Tragicus
Copy link
Contributor Author

Tragicus commented Oct 9, 2025

I fail to reproduce the argosy issue (even after rebasing).

@ppedrot
Copy link
Member

ppedrot commented Oct 9, 2025

@coqbot ci minimize

@coqbot-app
Copy link
Contributor

coqbot-app bot commented Oct 9, 2025

I have initiated minimization at commit 903d928 for the suggested targets ci-argosy, ci-elpi_test, ci-hott, ci-iris as requested.

@SkySkimmer
Copy link
Contributor

It reproduces on my machine

@coqbot-app
Copy link
Contributor

coqbot-app bot commented Oct 9, 2025

Error: Could not minimize file in 3m 26s (from ci-argosy) (full log on GitHub Actions, cc @JasonGross)

build log (truncated to last 26KiB; full 3.1MiB file on GitHub Actions Artifacts under build.log)
coq-native/NStdlib_setoid_ring_BinList.cmi -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_BinList.cmi
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_BinList.cmxs -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_BinList.cmxs
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_Cring.cmi -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_Cring.cmi
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_Cring.cmxs -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_Cring.cmxs
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_Field.cmi -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_Field.cmi
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_Field.cmxs -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_Field.cmxs
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_Field_tac.cmi -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_Field_tac.cmi
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_Field_tac.cmxs -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_Field_tac.cmxs
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_Field_theory.cmi -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_Field_theory.cmi
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_Field_theory.cmxs -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_Field_theory.cmxs
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_InitialRing.cmi -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_InitialRing.cmi
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_InitialRing.cmxs -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_InitialRing.cmxs
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_Integral_domain.cmi -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_Integral_domain.cmi
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_Integral_domain.cmxs -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_Integral_domain.cmxs
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_NArithRing.cmi -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_NArithRing.cmi
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_NArithRing.cmxs -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_NArithRing.cmxs
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_Ncring.cmi -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_Ncring.cmi
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_Ncring.cmxs -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_Ncring.cmxs
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_Ncring_initial.cmi -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_Ncring_initial.cmi
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_Ncring_initial.cmxs -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_Ncring_initial.cmxs
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_Ncring_polynom.cmi -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_Ncring_polynom.cmi
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_Ncring_polynom.cmxs -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_Ncring_polynom.cmxs
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_Ncring_tac.cmi -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_Ncring_tac.cmi
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_Ncring_tac.cmxs -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_Ncring_tac.cmxs
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_RealField.cmi -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_RealField.cmi
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_RealField.cmxs -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_RealField.cmxs
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_Ring.cmi -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_Ring.cmi
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_Ring.cmxs -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_Ring.cmxs
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_Ring_base.cmi -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_Ring_base.cmi
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_Ring_base.cmxs -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_Ring_base.cmxs
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_Ring_polynom.cmi -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_Ring_polynom.cmi
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_Ring_polynom.cmxs -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_Ring_polynom.cmxs
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_Ring_tac.cmi -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_Ring_tac.cmi
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_Ring_tac.cmxs -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_Ring_tac.cmxs
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_Ring_theory.cmi -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_Ring_theory.cmi
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_Ring_theory.cmxs -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_Ring_theory.cmxs
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_Rings_Q.cmi -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_Rings_Q.cmi
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_Rings_Q.cmxs -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_Rings_Q.cmxs
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_Rings_R.cmi -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_Rings_R.cmi
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_Rings_R.cmxs -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_Rings_R.cmxs
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_Rings_Z.cmi -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_Rings_Z.cmi
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_Rings_Z.cmxs -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_Rings_Z.cmxs
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_ZArithRing.cmi -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_ZArithRing.cmi
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_ZArithRing.cmxs -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_ZArithRing.cmxs
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/Algebra_syntax.v -> ../../../../../../../default/theories/setoid_ring/Algebra_syntax.v
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/Algebra_syntax.vo -> ../../../../../../../default/theories/setoid_ring/Algebra_syntax.vo
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/ArithRing.v -> ../../../../../../../default/theories/setoid_ring/ArithRing.v
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/ArithRing.vo -> ../../../../../../../default/theories/setoid_ring/ArithRing.vo
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/BinList.v -> ../../../../../../../default/theories/setoid_ring/BinList.v
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/BinList.vo -> ../../../../../../../default/theories/setoid_ring/BinList.vo
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/Cring.v -> ../../../../../../../default/theories/setoid_ring/Cring.v
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/Cring.vo -> ../../../../../../../default/theories/setoid_ring/Cring.vo
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/Field.v -> ../../../../../../../default/theories/setoid_ring/Field.v
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/Field.vo -> ../../../../../../../default/theories/setoid_ring/Field.vo
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/Field_tac.v -> ../../../../../../../default/theories/setoid_ring/Field_tac.v
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/Field_tac.vo -> ../../../../../../../default/theories/setoid_ring/Field_tac.vo
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/Field_theory.v -> ../../../../../../../default/theories/setoid_ring/Field_theory.v
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/Field_theory.vo -> ../../../../../../../default/theories/setoid_ring/Field_theory.vo
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/InitialRing.v -> ../../../../../../../default/theories/setoid_ring/InitialRing.v
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/InitialRing.vo -> ../../../../../../../default/theories/setoid_ring/InitialRing.vo
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/Integral_domain.v -> ../../../../../../../default/theories/setoid_ring/Integral_domain.v
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/Integral_domain.vo -> ../../../../../../../default/theories/setoid_ring/Integral_domain.vo
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/NArithRing.v -> ../../../../../../../default/theories/setoid_ring/NArithRing.v
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/NArithRing.vo -> ../../../../../../../default/theories/setoid_ring/NArithRing.vo
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/Ncring.v -> ../../../../../../../default/theories/setoid_ring/Ncring.v
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/Ncring.vo -> ../../../../../../../default/theories/setoid_ring/Ncring.vo
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/Ncring_initial.v -> ../../../../../../../default/theories/setoid_ring/Ncring_initial.v
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/Ncring_initial.vo -> ../../../../../../../default/theories/setoid_ring/Ncring_initial.vo
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/Ncring_polynom.v -> ../../../../../../../default/theories/setoid_ring/Ncring_polynom.v
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/Ncring_polynom.vo -> ../../../../../../../default/theories/setoid_ring/Ncring_polynom.vo
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/Ncring_tac.v -> ../../../../../../../default/theories/setoid_ring/Ncring_tac.v
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/Ncring_tac.vo -> ../../../../../../../default/theories/setoid_ring/Ncring_tac.vo
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/RealField.v -> ../../../../../../../default/theories/setoid_ring/RealField.v
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/RealField.vo -> ../../../../../../../default/theories/setoid_ring/RealField.vo
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/Ring.v -> ../../../../../../../default/theories/setoid_ring/Ring.v
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/Ring.vo -> ../../../../../../../default/theories/setoid_ring/Ring.vo
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/Ring_base.v -> ../../../../../../../default/theories/setoid_ring/Ring_base.v
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/Ring_base.vo -> ../../../../../../../default/theories/setoid_ring/Ring_base.vo
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/Ring_polynom.v -> ../../../../../../../default/theories/setoid_ring/Ring_polynom.v
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/Ring_polynom.vo -> ../../../../../../../default/theories/setoid_ring/Ring_polynom.vo
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/Ring_tac.v -> ../../../../../../../default/theories/setoid_ring/Ring_tac.v
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/Ring_tac.vo -> ../../../../../../../default/theories/setoid_ring/Ring_tac.vo
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/Ring_theory.v -> ../../../../../../../default/theories/setoid_ring/Ring_theory.v
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/Ring_theory.vo -> ../../../../../../../default/theories/setoid_ring/Ring_theory.vo
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/Rings_Q.v -> ../../../../../../../default/theories/setoid_ring/Rings_Q.v
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/Rings_Q.vo -> ../../../../../../../default/theories/setoid_ring/Rings_Q.vo
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/Rings_R.v -> ../../../../../../../default/theories/setoid_ring/Rings_R.v
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/Rings_R.vo -> ../../../../../../../default/theories/setoid_ring/Rings_R.vo
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/Rings_Z.v -> ../../../../../../../default/theories/setoid_ring/Rings_Z.v
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/Rings_Z.vo -> ../../../../../../../default/theories/setoid_ring/Rings_Z.vo
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/ZArithRing.v -> ../../../../../../../default/theories/setoid_ring/ZArithRing.v
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/ZArithRing.vo -> ../../../../../../../default/theories/setoid_ring/ZArithRing.vo
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/ssr/.coq-native/NStdlib_ssr_ssrbool.cmi -> ../../../../../../../../default/theories/ssr/NStdlib_ssr_ssrbool.cmi
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/ssr/.coq-native/NStdlib_ssr_ssrbool.cmxs -> ../../../../../../../../default/theories/ssr/NStdlib_ssr_ssrbool.cmxs
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/ssr/.coq-native/NStdlib_ssr_ssrclasses.cmi -> ../../../../../../../../default/theories/ssr/NStdlib_ssr_ssrclasses.cmi
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/ssr/.coq-native/NStdlib_ssr_ssrclasses.cmxs -> ../../../../../../../../default/theories/ssr/NStdlib_ssr_ssrclasses.cmxs
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/ssr/.coq-native/NStdlib_ssr_ssreflect.cmi -> ../../../../../../../../default/theories/ssr/NStdlib_ssr_ssreflect.cmi
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/ssr/.coq-native/NStdlib_ssr_ssreflect.cmxs -> ../../../../../../../../default/theories/ssr/NStdlib_ssr_ssreflect.cmxs
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/ssr/.coq-native/NStdlib_ssr_ssrfun.cmi -> ../../../../../../../../default/theories/ssr/NStdlib_ssr_ssrfun.cmi
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/ssr/.coq-native/NStdlib_ssr_ssrfun.cmxs -> ../../../../../../../../default/theories/ssr/NStdlib_ssr_ssrfun.cmxs
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/ssr/.coq-native/NStdlib_ssr_ssrsetoid.cmi -> ../../../../../../../../default/theories/ssr/NStdlib_ssr_ssrsetoid.cmi
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/ssr/.coq-native/NStdlib_ssr_ssrsetoid.cmxs -> ../../../../../../../../default/theories/ssr/NStdlib_ssr_ssrsetoid.cmxs
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/ssr/.coq-native/NStdlib_ssr_ssrunder.cmi -> ../../../../../../../../default/theories/ssr/NStdlib_ssr_ssrunder.cmi
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/ssr/.coq-native/NStdlib_ssr_ssrunder.cmxs -> ../../../../../../../../default/theories/ssr/NStdlib_ssr_ssrunder.cmxs
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/ssr/ssrbool.v -> ../../../../../../../default/theories/ssr/ssrbool.v
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/ssr/ssrbool.vo -> ../../../../../../../default/theories/ssr/ssrbool.vo
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/ssr/ssrclasses.v -> ../../../../../../../default/theories/ssr/ssrclasses.v
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/ssr/ssrclasses.vo -> ../../../../../../../default/theories/ssr/ssrclasses.vo
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/ssr/ssreflect.v -> ../../../../../../../default/theories/ssr/ssreflect.v
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/ssr/ssreflect.vo -> ../../../../../../../default/theories/ssr/ssreflect.vo
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/ssr/ssrfun.v -> ../../../../../../../default/theories/ssr/ssrfun.v
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/ssr/ssrfun.vo -> ../../../../../../../default/theories/ssr/ssrfun.vo
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/ssr/ssrsetoid.v -> ../../../../../../../default/theories/ssr/ssrsetoid.v
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/ssr/ssrsetoid.vo -> ../../../../../../../default/theories/ssr/ssrsetoid.vo
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/ssr/ssrunder.v -> ../../../../../../../default/theories/ssr/ssrunder.v
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/ssr/ssrunder.vo -> ../../../../../../../default/theories/ssr/ssrunder.vo
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/ssrmatching/.coq-native/NStdlib_ssrmatching_ssrmatching.cmi -> ../../../../../../../../default/theories/ssrmatching/NStdlib_ssrmatching_ssrmatching.cmi
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/ssrmatching/.coq-native/NStdlib_ssrmatching_ssrmatching.cmxs -> ../../../../../../../../default/theories/ssrmatching/NStdlib_ssrmatching_ssrmatching.cmxs
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/ssrmatching/ssrmatching.v -> ../../../../../../../default/theories/ssrmatching/ssrmatching.v
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/ssrmatching/ssrmatching.vo -> ../../../../../../../default/theories/ssrmatching/ssrmatching.vo
  saved_build_ci/stdlib/_build/install/default/lib/rocq-stdlib/META -> ../../../../default/META.rocq-stdlib
  saved_build_ci/stdlib/_build/install/default/lib/rocq-stdlib/dune-package -> ../../../../default/rocq-stdlib.dune-package
  saved_build_ci/stdlib/_build/install/default/lib/rocq-stdlib/opam -> ../../../../default/rocq-stdlib.opam
++ popd
/github/workspace/builds/coq /github/workspace
++ printf '::endgroup::\n'
::endgroup::
++ printf '::group::df -h\n'
::group::df -h
++ df -h
Filesystem      Size  Used Avail Use% Mounted on
overlay          72G   56G   16G  78% /
tmpfs            64M     0   64M   0% /dev
shm              64M     0   64M   0% /dev/shm
/dev/root        72G   56G   16G  78% /usr/sbin/docker-init
tmpfs           7.9G     0  7.9G   0% /proc/acpi
tmpfs           7.9G     0  7.9G   0% /proc/scsi
tmpfs           7.9G     0  7.9G   0% /sys/firmware
++ printf '::endgroup::\n'
::endgroup::
++ printf '::group::download passing artifacts @ %s %s\n' 3853febccfbc655239396d2d204fd431e2002232 'https://gitlab.inria.fr/coq/coq/-/jobs/6326441/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6326422/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6326457/artifacts/download'
::group::download passing artifacts @ 3853febccfbc655239396d2d204fd431e2002232 https://gitlab.inria.fr/coq/coq/-/jobs/6326441/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6326422/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6326457/artifacts/download
++ printf '::warning::download passing artifacts @ %s %s\n' 3853febccfbc655239396d2d204fd431e2002232 'https://gitlab.inria.fr/coq/coq/-/jobs/6326441/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6326422/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6326457/artifacts/download'
::warning::download passing artifacts @ 3853febccfbc655239396d2d204fd431e2002232 https://gitlab.inria.fr/coq/coq/-/jobs/6326441/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6326422/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6326457/artifacts/download
++ pushd coq-passing
/github/workspace/builds/coq/coq-passing /github/workspace/builds/coq /github/workspace
++ mkdir -p _build_ci
++ ln -s _build_ci saved_build_ci
++ git checkout 3853febccfbc655239396d2d204fd431e2002232
Note: switching to '3853febccfbc655239396d2d204fd431e2002232'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:

  git switch -c <new-branch-name>

Or undo this operation with:

  git switch -

Turn off this advice by setting config variable advice.detachedHead to false

HEAD is now at 3853febccf Merge PR #20947: Remove references to opam packages not in this repo.
++ for i in ${PASSING_ARTIFACT_URLS}
+++ printf %s https://gitlab.inria.fr/coq/coq/-/jobs/6326441/artifacts/download
+++ sha1sum
+++ cut '-d ' -f1
++ hash=bc8c03af4516326327e9010a010f8cdb9dc333f3
++ wget https://gitlab.inria.fr/coq/coq/-/jobs/6326441/artifacts/download -O artifact-bc8c03af4516326327e9010a010f8cdb9dc333f3.zip
--2025-10-09 12:43:09--  https://gitlab.inria.fr/coq/coq/-/jobs/6326441/artifacts/download
Resolving gitlab.inria.fr (gitlab.inria.fr)... 128.93.193.23
Connecting to gitlab.inria.fr (gitlab.inria.fr)|128.93.193.23|:443... connected.
HTTP request sent, awaiting response... 404 Not Found
2025-10-09 12:43:10 ERROR 404: Not Found.
minimizer log (truncated to last 26KiB; full 3.1MiB file on GitHub Actions Artifacts under bug.log)
coq-native/NStdlib_setoid_ring_BinList.cmi -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_BinList.cmi
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_BinList.cmxs -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_BinList.cmxs
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_Cring.cmi -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_Cring.cmi
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_Cring.cmxs -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_Cring.cmxs
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_Field.cmi -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_Field.cmi
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_Field.cmxs -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_Field.cmxs
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_Field_tac.cmi -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_Field_tac.cmi
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_Field_tac.cmxs -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_Field_tac.cmxs
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_Field_theory.cmi -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_Field_theory.cmi
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_Field_theory.cmxs -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_Field_theory.cmxs
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_InitialRing.cmi -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_InitialRing.cmi
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_InitialRing.cmxs -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_InitialRing.cmxs
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_Integral_domain.cmi -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_Integral_domain.cmi
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_Integral_domain.cmxs -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_Integral_domain.cmxs
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_NArithRing.cmi -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_NArithRing.cmi
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_NArithRing.cmxs -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_NArithRing.cmxs
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_Ncring.cmi -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_Ncring.cmi
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_Ncring.cmxs -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_Ncring.cmxs
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_Ncring_initial.cmi -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_Ncring_initial.cmi
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_Ncring_initial.cmxs -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_Ncring_initial.cmxs
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_Ncring_polynom.cmi -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_Ncring_polynom.cmi
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_Ncring_polynom.cmxs -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_Ncring_polynom.cmxs
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_Ncring_tac.cmi -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_Ncring_tac.cmi
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_Ncring_tac.cmxs -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_Ncring_tac.cmxs
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_RealField.cmi -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_RealField.cmi
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_RealField.cmxs -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_RealField.cmxs
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_Ring.cmi -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_Ring.cmi
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_Ring.cmxs -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_Ring.cmxs
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_Ring_base.cmi -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_Ring_base.cmi
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_Ring_base.cmxs -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_Ring_base.cmxs
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_Ring_polynom.cmi -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_Ring_polynom.cmi
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_Ring_polynom.cmxs -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_Ring_polynom.cmxs
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_Ring_tac.cmi -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_Ring_tac.cmi
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_Ring_tac.cmxs -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_Ring_tac.cmxs
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_Ring_theory.cmi -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_Ring_theory.cmi
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_Ring_theory.cmxs -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_Ring_theory.cmxs
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_Rings_Q.cmi -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_Rings_Q.cmi
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_Rings_Q.cmxs -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_Rings_Q.cmxs
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_Rings_R.cmi -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_Rings_R.cmi
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_Rings_R.cmxs -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_Rings_R.cmxs
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_Rings_Z.cmi -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_Rings_Z.cmi
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_Rings_Z.cmxs -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_Rings_Z.cmxs
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_ZArithRing.cmi -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_ZArithRing.cmi
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_ZArithRing.cmxs -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_ZArithRing.cmxs
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/Algebra_syntax.v -> ../../../../../../../default/theories/setoid_ring/Algebra_syntax.v
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/Algebra_syntax.vo -> ../../../../../../../default/theories/setoid_ring/Algebra_syntax.vo
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/ArithRing.v -> ../../../../../../../default/theories/setoid_ring/ArithRing.v
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/ArithRing.vo -> ../../../../../../../default/theories/setoid_ring/ArithRing.vo
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/BinList.v -> ../../../../../../../default/theories/setoid_ring/BinList.v
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/BinList.vo -> ../../../../../../../default/theories/setoid_ring/BinList.vo
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/Cring.v -> ../../../../../../../default/theories/setoid_ring/Cring.v
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/Cring.vo -> ../../../../../../../default/theories/setoid_ring/Cring.vo
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/Field.v -> ../../../../../../../default/theories/setoid_ring/Field.v
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/Field.vo -> ../../../../../../../default/theories/setoid_ring/Field.vo
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/Field_tac.v -> ../../../../../../../default/theories/setoid_ring/Field_tac.v
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/Field_tac.vo -> ../../../../../../../default/theories/setoid_ring/Field_tac.vo
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/Field_theory.v -> ../../../../../../../default/theories/setoid_ring/Field_theory.v
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/Field_theory.vo -> ../../../../../../../default/theories/setoid_ring/Field_theory.vo
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/InitialRing.v -> ../../../../../../../default/theories/setoid_ring/InitialRing.v
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/InitialRing.vo -> ../../../../../../../default/theories/setoid_ring/InitialRing.vo
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/Integral_domain.v -> ../../../../../../../default/theories/setoid_ring/Integral_domain.v
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/Integral_domain.vo -> ../../../../../../../default/theories/setoid_ring/Integral_domain.vo
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/NArithRing.v -> ../../../../../../../default/theories/setoid_ring/NArithRing.v
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/NArithRing.vo -> ../../../../../../../default/theories/setoid_ring/NArithRing.vo
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/Ncring.v -> ../../../../../../../default/theories/setoid_ring/Ncring.v
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/Ncring.vo -> ../../../../../../../default/theories/setoid_ring/Ncring.vo
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/Ncring_initial.v -> ../../../../../../../default/theories/setoid_ring/Ncring_initial.v
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/Ncring_initial.vo -> ../../../../../../../default/theories/setoid_ring/Ncring_initial.vo
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/Ncring_polynom.v -> ../../../../../../../default/theories/setoid_ring/Ncring_polynom.v
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/Ncring_polynom.vo -> ../../../../../../../default/theories/setoid_ring/Ncring_polynom.vo
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/Ncring_tac.v -> ../../../../../../../default/theories/setoid_ring/Ncring_tac.v
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/Ncring_tac.vo -> ../../../../../../../default/theories/setoid_ring/Ncring_tac.vo
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/RealField.v -> ../../../../../../../default/theories/setoid_ring/RealField.v
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/RealField.vo -> ../../../../../../../default/theories/setoid_ring/RealField.vo
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/Ring.v -> ../../../../../../../default/theories/setoid_ring/Ring.v
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/Ring.vo -> ../../../../../../../default/theories/setoid_ring/Ring.vo
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/Ring_base.v -> ../../../../../../../default/theories/setoid_ring/Ring_base.v
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/Ring_base.vo -> ../../../../../../../default/theories/setoid_ring/Ring_base.vo
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/Ring_polynom.v -> ../../../../../../../default/theories/setoid_ring/Ring_polynom.v
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/Ring_polynom.vo -> ../../../../../../../default/theories/setoid_ring/Ring_polynom.vo
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/Ring_tac.v -> ../../../../../../../default/theories/setoid_ring/Ring_tac.v
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/Ring_tac.vo -> ../../../../../../../default/theories/setoid_ring/Ring_tac.vo
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/Ring_theory.v -> ../../../../../../../default/theories/setoid_ring/Ring_theory.v
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/Ring_theory.vo -> ../../../../../../../default/theories/setoid_ring/Ring_theory.vo
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/Rings_Q.v -> ../../../../../../../default/theories/setoid_ring/Rings_Q.v
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/Rings_Q.vo -> ../../../../../../../default/theories/setoid_ring/Rings_Q.vo
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/Rings_R.v -> ../../../../../../../default/theories/setoid_ring/Rings_R.v
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/Rings_R.vo -> ../../../../../../../default/theories/setoid_ring/Rings_R.vo
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/Rings_Z.v -> ../../../../../../../default/theories/setoid_ring/Rings_Z.v
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/Rings_Z.vo -> ../../../../../../../default/theories/setoid_ring/Rings_Z.vo
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/ZArithRing.v -> ../../../../../../../default/theories/setoid_ring/ZArithRing.v
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/ZArithRing.vo -> ../../../../../../../default/theories/setoid_ring/ZArithRing.vo
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/ssr/.coq-native/NStdlib_ssr_ssrbool.cmi -> ../../../../../../../../default/theories/ssr/NStdlib_ssr_ssrbool.cmi
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/ssr/.coq-native/NStdlib_ssr_ssrbool.cmxs -> ../../../../../../../../default/theories/ssr/NStdlib_ssr_ssrbool.cmxs
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/ssr/.coq-native/NStdlib_ssr_ssrclasses.cmi -> ../../../../../../../../default/theories/ssr/NStdlib_ssr_ssrclasses.cmi
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/ssr/.coq-native/NStdlib_ssr_ssrclasses.cmxs -> ../../../../../../../../default/theories/ssr/NStdlib_ssr_ssrclasses.cmxs
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/ssr/.coq-native/NStdlib_ssr_ssreflect.cmi -> ../../../../../../../../default/theories/ssr/NStdlib_ssr_ssreflect.cmi
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/ssr/.coq-native/NStdlib_ssr_ssreflect.cmxs -> ../../../../../../../../default/theories/ssr/NStdlib_ssr_ssreflect.cmxs
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/ssr/.coq-native/NStdlib_ssr_ssrfun.cmi -> ../../../../../../../../default/theories/ssr/NStdlib_ssr_ssrfun.cmi
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/ssr/.coq-native/NStdlib_ssr_ssrfun.cmxs -> ../../../../../../../../default/theories/ssr/NStdlib_ssr_ssrfun.cmxs
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/ssr/.coq-native/NStdlib_ssr_ssrsetoid.cmi -> ../../../../../../../../default/theories/ssr/NStdlib_ssr_ssrsetoid.cmi
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/ssr/.coq-native/NStdlib_ssr_ssrsetoid.cmxs -> ../../../../../../../../default/theories/ssr/NStdlib_ssr_ssrsetoid.cmxs
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/ssr/.coq-native/NStdlib_ssr_ssrunder.cmi -> ../../../../../../../../default/theories/ssr/NStdlib_ssr_ssrunder.cmi
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/ssr/.coq-native/NStdlib_ssr_ssrunder.cmxs -> ../../../../../../../../default/theories/ssr/NStdlib_ssr_ssrunder.cmxs
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/ssr/ssrbool.v -> ../../../../../../../default/theories/ssr/ssrbool.v
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/ssr/ssrbool.vo -> ../../../../../../../default/theories/ssr/ssrbool.vo
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/ssr/ssrclasses.v -> ../../../../../../../default/theories/ssr/ssrclasses.v
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/ssr/ssrclasses.vo -> ../../../../../../../default/theories/ssr/ssrclasses.vo
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/ssr/ssreflect.v -> ../../../../../../../default/theories/ssr/ssreflect.v
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/ssr/ssreflect.vo -> ../../../../../../../default/theories/ssr/ssreflect.vo
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/ssr/ssrfun.v -> ../../../../../../../default/theories/ssr/ssrfun.v
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/ssr/ssrfun.vo -> ../../../../../../../default/theories/ssr/ssrfun.vo
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/ssr/ssrsetoid.v -> ../../../../../../../default/theories/ssr/ssrsetoid.v
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/ssr/ssrsetoid.vo -> ../../../../../../../default/theories/ssr/ssrsetoid.vo
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/ssr/ssrunder.v -> ../../../../../../../default/theories/ssr/ssrunder.v
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/ssr/ssrunder.vo -> ../../../../../../../default/theories/ssr/ssrunder.vo
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/ssrmatching/.coq-native/NStdlib_ssrmatching_ssrmatching.cmi -> ../../../../../../../../default/theories/ssrmatching/NStdlib_ssrmatching_ssrmatching.cmi
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/ssrmatching/.coq-native/NStdlib_ssrmatching_ssrmatching.cmxs -> ../../../../../../../../default/theories/ssrmatching/NStdlib_ssrmatching_ssrmatching.cmxs
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/ssrmatching/ssrmatching.v -> ../../../../../../../default/theories/ssrmatching/ssrmatching.v
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/ssrmatching/ssrmatching.vo -> ../../../../../../../default/theories/ssrmatching/ssrmatching.vo
  saved_build_ci/stdlib/_build/install/default/lib/rocq-stdlib/META -> ../../../../default/META.rocq-stdlib
  saved_build_ci/stdlib/_build/install/default/lib/rocq-stdlib/dune-package -> ../../../../default/rocq-stdlib.dune-package
  saved_build_ci/stdlib/_build/install/default/lib/rocq-stdlib/opam -> ../../../../default/rocq-stdlib.opam
++ popd
/github/workspace/builds/coq /github/workspace
++ printf '::endgroup::\n'
::endgroup::
++ printf '::group::df -h\n'
::group::df -h
++ df -h
Filesystem      Size  Used Avail Use% Mounted on
overlay          72G   56G   16G  78% /
tmpfs            64M     0   64M   0% /dev
shm              64M     0   64M   0% /dev/shm
/dev/root        72G   56G   16G  78% /usr/sbin/docker-init
tmpfs           7.9G     0  7.9G   0% /proc/acpi
tmpfs           7.9G     0  7.9G   0% /proc/scsi
tmpfs           7.9G     0  7.9G   0% /sys/firmware
++ printf '::endgroup::\n'
::endgroup::
++ printf '::group::download passing artifacts @ %s %s\n' 3853febccfbc655239396d2d204fd431e2002232 'https://gitlab.inria.fr/coq/coq/-/jobs/6326441/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6326422/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6326457/artifacts/download'
::group::download passing artifacts @ 3853febccfbc655239396d2d204fd431e2002232 https://gitlab.inria.fr/coq/coq/-/jobs/6326441/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6326422/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6326457/artifacts/download
++ printf '::warning::download passing artifacts @ %s %s\n' 3853febccfbc655239396d2d204fd431e2002232 'https://gitlab.inria.fr/coq/coq/-/jobs/6326441/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6326422/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6326457/artifacts/download'
::warning::download passing artifacts @ 3853febccfbc655239396d2d204fd431e2002232 https://gitlab.inria.fr/coq/coq/-/jobs/6326441/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6326422/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6326457/artifacts/download
++ pushd coq-passing
/github/workspace/builds/coq/coq-passing /github/workspace/builds/coq /github/workspace
++ mkdir -p _build_ci
++ ln -s _build_ci saved_build_ci
++ git checkout 3853febccfbc655239396d2d204fd431e2002232
Note: switching to '3853febccfbc655239396d2d204fd431e2002232'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:

  git switch -c <new-branch-name>

Or undo this operation with:

  git switch -

Turn off this advice by setting config variable advice.detachedHead to false

HEAD is now at 3853febccf Merge PR #20947: Remove references to opam packages not in this repo.
++ for i in ${PASSING_ARTIFACT_URLS}
+++ printf %s https://gitlab.inria.fr/coq/coq/-/jobs/6326441/artifacts/download
+++ sha1sum
+++ cut '-d ' -f1
++ hash=bc8c03af4516326327e9010a010f8cdb9dc333f3
++ wget https://gitlab.inria.fr/coq/coq/-/jobs/6326441/artifacts/download -O artifact-bc8c03af4516326327e9010a010f8cdb9dc333f3.zip
--2025-10-09 12:43:09--  https://gitlab.inria.fr/coq/coq/-/jobs/6326441/artifacts/download
Resolving gitlab.inria.fr (gitlab.inria.fr)... 128.93.193.23
Connecting to gitlab.inria.fr (gitlab.inria.fr)|128.93.193.23|:443... connected.
HTTP request sent, awaiting response... 404 Not Found
2025-10-09 12:43:10 ERROR 404: Not Found.

If you have any comments on your experience of the minimizer, please share them in a reply (possibly tagging @JasonGross).
If you believe there's a bug in the bug minimizer, please report it on the bug minimizer issue tracker.

@coqbot-app
Copy link
Contributor

coqbot-app bot commented Oct 9, 2025

Error: Could not minimize file in 8m 27s (from ci-elpi_test) (full log on GitHub Actions, cc @JasonGross)

build log (truncated to last 26KiB; full 4.0MiB file on GitHub Actions Artifacts under build.log)
hook.cmi -> ../../../../../default/apps/coercion/src/.elpi_coercion_plugin.objs/byte/elpi_coercion_plugin__Rocq_elpi_coercion_hook.cmi
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/coercion/elpi_coercion_plugin__Rocq_elpi_coercion_hook.cmt -> ../../../../../default/apps/coercion/src/.elpi_coercion_plugin.objs/byte/elpi_coercion_plugin__Rocq_elpi_coercion_hook.cmt
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/coercion/elpi_coercion_plugin__Rocq_elpi_coercion_hook.cmx -> ../../../../../default/apps/coercion/src/.elpi_coercion_plugin.objs/native/elpi_coercion_plugin__Rocq_elpi_coercion_hook.cmx
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/coercion/rocq_elpi_coercion_hook.ml -> ../../../../../default/apps/coercion/src/rocq_elpi_coercion_hook.ml
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/cs/elpi_cs_plugin.a -> ../../../../../default/apps/cs/src/elpi_cs_plugin.a
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/cs/elpi_cs_plugin.cma -> ../../../../../default/apps/cs/src/elpi_cs_plugin.cma
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/cs/elpi_cs_plugin.cmi -> ../../../../../default/apps/cs/src/.elpi_cs_plugin.objs/byte/elpi_cs_plugin.cmi
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/cs/elpi_cs_plugin.cmt -> ../../../../../default/apps/cs/src/.elpi_cs_plugin.objs/byte/elpi_cs_plugin.cmt
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/cs/elpi_cs_plugin.cmx -> ../../../../../default/apps/cs/src/.elpi_cs_plugin.objs/native/elpi_cs_plugin.cmx
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/cs/elpi_cs_plugin.cmxa -> ../../../../../default/apps/cs/src/elpi_cs_plugin.cmxa
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/cs/elpi_cs_plugin.cmxs -> ../../../../../default/apps/cs/src/elpi_cs_plugin.cmxs
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/cs/elpi_cs_plugin.ml -> ../../../../../default/apps/cs/src/elpi_cs_plugin.ml-gen
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/cs/elpi_cs_plugin__Rocq_elpi_cs_hook.cmi -> ../../../../../default/apps/cs/src/.elpi_cs_plugin.objs/byte/elpi_cs_plugin__Rocq_elpi_cs_hook.cmi
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/cs/elpi_cs_plugin__Rocq_elpi_cs_hook.cmt -> ../../../../../default/apps/cs/src/.elpi_cs_plugin.objs/byte/elpi_cs_plugin__Rocq_elpi_cs_hook.cmt
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/cs/elpi_cs_plugin__Rocq_elpi_cs_hook.cmx -> ../../../../../default/apps/cs/src/.elpi_cs_plugin.objs/native/elpi_cs_plugin__Rocq_elpi_cs_hook.cmx
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/cs/rocq_elpi_cs_hook.ml -> ../../../../../default/apps/cs/src/rocq_elpi_cs_hook.ml
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/dune-package -> ../../../../default/rocq-elpi.dune-package
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/elpi_plugin.a -> ../../../../../default/src/elpi_plugin.a
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/elpi_plugin.cma -> ../../../../../default/src/elpi_plugin.cma
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/elpi_plugin.cmi -> ../../../../../default/src/.elpi_plugin.objs/byte/elpi_plugin.cmi
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/elpi_plugin.cmt -> ../../../../../default/src/.elpi_plugin.objs/byte/elpi_plugin.cmt
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/elpi_plugin.cmx -> ../../../../../default/src/.elpi_plugin.objs/native/elpi_plugin.cmx
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/elpi_plugin.cmxa -> ../../../../../default/src/elpi_plugin.cmxa
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/elpi_plugin.cmxs -> ../../../../../default/src/elpi_plugin.cmxs
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/elpi_plugin.ml -> ../../../../../default/src/elpi_plugin.ml-gen
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/elpi_plugin__Rocq_elpi_HOAS.cmi -> ../../../../../default/src/.elpi_plugin.objs/byte/elpi_plugin__Rocq_elpi_HOAS.cmi
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/elpi_plugin__Rocq_elpi_HOAS.cmt -> ../../../../../default/src/.elpi_plugin.objs/byte/elpi_plugin__Rocq_elpi_HOAS.cmt
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/elpi_plugin__Rocq_elpi_HOAS.cmti -> ../../../../../default/src/.elpi_plugin.objs/byte/elpi_plugin__Rocq_elpi_HOAS.cmti
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/elpi_plugin__Rocq_elpi_HOAS.cmx -> ../../../../../default/src/.elpi_plugin.objs/native/elpi_plugin__Rocq_elpi_HOAS.cmx
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/elpi_plugin__Rocq_elpi_arg_HOAS.cmi -> ../../../../../default/src/.elpi_plugin.objs/byte/elpi_plugin__Rocq_elpi_arg_HOAS.cmi
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/elpi_plugin__Rocq_elpi_arg_HOAS.cmt -> ../../../../../default/src/.elpi_plugin.objs/byte/elpi_plugin__Rocq_elpi_arg_HOAS.cmt
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/elpi_plugin__Rocq_elpi_arg_HOAS.cmti -> ../../../../../default/src/.elpi_plugin.objs/byte/elpi_plugin__Rocq_elpi_arg_HOAS.cmti
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/elpi_plugin__Rocq_elpi_arg_HOAS.cmx -> ../../../../../default/src/.elpi_plugin.objs/native/elpi_plugin__Rocq_elpi_arg_HOAS.cmx
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/elpi_plugin__Rocq_elpi_arg_syntax.cmi -> ../../../../../default/src/.elpi_plugin.objs/byte/elpi_plugin__Rocq_elpi_arg_syntax.cmi
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/elpi_plugin__Rocq_elpi_arg_syntax.cmt -> ../../../../../default/src/.elpi_plugin.objs/byte/elpi_plugin__Rocq_elpi_arg_syntax.cmt
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/elpi_plugin__Rocq_elpi_arg_syntax.cmx -> ../../../../../default/src/.elpi_plugin.objs/native/elpi_plugin__Rocq_elpi_arg_syntax.cmx
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/elpi_plugin__Rocq_elpi_builtins.cmi -> ../../../../../default/src/.elpi_plugin.objs/byte/elpi_plugin__Rocq_elpi_builtins.cmi
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/elpi_plugin__Rocq_elpi_builtins.cmt -> ../../../../../default/src/.elpi_plugin.objs/byte/elpi_plugin__Rocq_elpi_builtins.cmt
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/elpi_plugin__Rocq_elpi_builtins.cmti -> ../../../../../default/src/.elpi_plugin.objs/byte/elpi_plugin__Rocq_elpi_builtins.cmti
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/elpi_plugin__Rocq_elpi_builtins.cmx -> ../../../../../default/src/.elpi_plugin.objs/native/elpi_plugin__Rocq_elpi_builtins.cmx
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/elpi_plugin__Rocq_elpi_builtins_HOAS.cmi -> ../../../../../default/src/.elpi_plugin.objs/byte/elpi_plugin__Rocq_elpi_builtins_HOAS.cmi
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/elpi_plugin__Rocq_elpi_builtins_HOAS.cmt -> ../../../../../default/src/.elpi_plugin.objs/byte/elpi_plugin__Rocq_elpi_builtins_HOAS.cmt
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/elpi_plugin__Rocq_elpi_builtins_HOAS.cmx -> ../../../../../default/src/.elpi_plugin.objs/native/elpi_plugin__Rocq_elpi_builtins_HOAS.cmx
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/elpi_plugin__Rocq_elpi_builtins_arg_HOAS.cmi -> ../../../../../default/src/.elpi_plugin.objs/byte/elpi_plugin__Rocq_elpi_builtins_arg_HOAS.cmi
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/elpi_plugin__Rocq_elpi_builtins_arg_HOAS.cmt -> ../../../../../default/src/.elpi_plugin.objs/byte/elpi_plugin__Rocq_elpi_builtins_arg_HOAS.cmt
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/elpi_plugin__Rocq_elpi_builtins_arg_HOAS.cmx -> ../../../../../default/src/.elpi_plugin.objs/native/elpi_plugin__Rocq_elpi_builtins_arg_HOAS.cmx
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/elpi_plugin__Rocq_elpi_builtins_synterp.cmi -> ../../../../../default/src/.elpi_plugin.objs/byte/elpi_plugin__Rocq_elpi_builtins_synterp.cmi
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/elpi_plugin__Rocq_elpi_builtins_synterp.cmt -> ../../../../../default/src/.elpi_plugin.objs/byte/elpi_plugin__Rocq_elpi_builtins_synterp.cmt
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/elpi_plugin__Rocq_elpi_builtins_synterp.cmti -> ../../../../../default/src/.elpi_plugin.objs/byte/elpi_plugin__Rocq_elpi_builtins_synterp.cmti
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/elpi_plugin__Rocq_elpi_builtins_synterp.cmx -> ../../../../../default/src/.elpi_plugin.objs/native/elpi_plugin__Rocq_elpi_builtins_synterp.cmx
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/elpi_plugin__Rocq_elpi_config.cmi -> ../../../../../default/src/.elpi_plugin.objs/byte/elpi_plugin__Rocq_elpi_config.cmi
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/elpi_plugin__Rocq_elpi_config.cmt -> ../../../../../default/src/.elpi_plugin.objs/byte/elpi_plugin__Rocq_elpi_config.cmt
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/elpi_plugin__Rocq_elpi_config.cmx -> ../../../../../default/src/.elpi_plugin.objs/native/elpi_plugin__Rocq_elpi_config.cmx
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/elpi_plugin__Rocq_elpi_glob_quotation.cmi -> ../../../../../default/src/.elpi_plugin.objs/byte/elpi_plugin__Rocq_elpi_glob_quotation.cmi
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/elpi_plugin__Rocq_elpi_glob_quotation.cmt -> ../../../../../default/src/.elpi_plugin.objs/byte/elpi_plugin__Rocq_elpi_glob_quotation.cmt
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/elpi_plugin__Rocq_elpi_glob_quotation.cmti -> ../../../../../default/src/.elpi_plugin.objs/byte/elpi_plugin__Rocq_elpi_glob_quotation.cmti
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/elpi_plugin__Rocq_elpi_glob_quotation.cmx -> ../../../../../default/src/.elpi_plugin.objs/native/elpi_plugin__Rocq_elpi_glob_quotation.cmx
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/elpi_plugin__Rocq_elpi_graph.cmi -> ../../../../../default/src/.elpi_plugin.objs/byte/elpi_plugin__Rocq_elpi_graph.cmi
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/elpi_plugin__Rocq_elpi_graph.cmt -> ../../../../../default/src/.elpi_plugin.objs/byte/elpi_plugin__Rocq_elpi_graph.cmt
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/elpi_plugin__Rocq_elpi_graph.cmti -> ../../../../../default/src/.elpi_plugin.objs/byte/elpi_plugin__Rocq_elpi_graph.cmti
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/elpi_plugin__Rocq_elpi_graph.cmx -> ../../../../../default/src/.elpi_plugin.objs/native/elpi_plugin__Rocq_elpi_graph.cmx
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/elpi_plugin__Rocq_elpi_name_quotation.cmi -> ../../../../../default/src/.elpi_plugin.objs/byte/elpi_plugin__Rocq_elpi_name_quotation.cmi
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/elpi_plugin__Rocq_elpi_name_quotation.cmt -> ../../../../../default/src/.elpi_plugin.objs/byte/elpi_plugin__Rocq_elpi_name_quotation.cmt
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/elpi_plugin__Rocq_elpi_name_quotation.cmx -> ../../../../../default/src/.elpi_plugin.objs/native/elpi_plugin__Rocq_elpi_name_quotation.cmx
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/elpi_plugin__Rocq_elpi_programs.cmi -> ../../../../../default/src/.elpi_plugin.objs/byte/elpi_plugin__Rocq_elpi_programs.cmi
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/elpi_plugin__Rocq_elpi_programs.cmt -> ../../../../../default/src/.elpi_plugin.objs/byte/elpi_plugin__Rocq_elpi_programs.cmt
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/elpi_plugin__Rocq_elpi_programs.cmti -> ../../../../../default/src/.elpi_plugin.objs/byte/elpi_plugin__Rocq_elpi_programs.cmti
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/elpi_plugin__Rocq_elpi_programs.cmx -> ../../../../../default/src/.elpi_plugin.objs/native/elpi_plugin__Rocq_elpi_programs.cmx
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/elpi_plugin__Rocq_elpi_utils.cmi -> ../../../../../default/src/.elpi_plugin.objs/byte/elpi_plugin__Rocq_elpi_utils.cmi
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/elpi_plugin__Rocq_elpi_utils.cmt -> ../../../../../default/src/.elpi_plugin.objs/byte/elpi_plugin__Rocq_elpi_utils.cmt
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/elpi_plugin__Rocq_elpi_utils.cmti -> ../../../../../default/src/.elpi_plugin.objs/byte/elpi_plugin__Rocq_elpi_utils.cmti
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/elpi_plugin__Rocq_elpi_utils.cmx -> ../../../../../default/src/.elpi_plugin.objs/native/elpi_plugin__Rocq_elpi_utils.cmx
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/elpi_plugin__Rocq_elpi_vernacular.cmi -> ../../../../../default/src/.elpi_plugin.objs/byte/elpi_plugin__Rocq_elpi_vernacular.cmi
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/elpi_plugin__Rocq_elpi_vernacular.cmt -> ../../../../../default/src/.elpi_plugin.objs/byte/elpi_plugin__Rocq_elpi_vernacular.cmt
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/elpi_plugin__Rocq_elpi_vernacular.cmti -> ../../../../../default/src/.elpi_plugin.objs/byte/elpi_plugin__Rocq_elpi_vernacular.cmti
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/elpi_plugin__Rocq_elpi_vernacular.cmx -> ../../../../../default/src/.elpi_plugin.objs/native/elpi_plugin__Rocq_elpi_vernacular.cmx
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/elpi_plugin__Rocq_elpi_vernacular_syntax.cmi -> ../../../../../default/src/.elpi_plugin.objs/byte/elpi_plugin__Rocq_elpi_vernacular_syntax.cmi
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/elpi_plugin__Rocq_elpi_vernacular_syntax.cmt -> ../../../../../default/src/.elpi_plugin.objs/byte/elpi_plugin__Rocq_elpi_vernacular_syntax.cmt
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/elpi_plugin__Rocq_elpi_vernacular_syntax.cmx -> ../../../../../default/src/.elpi_plugin.objs/native/elpi_plugin__Rocq_elpi_vernacular_syntax.cmx
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/rocq_elpi_HOAS.ml -> ../../../../../default/src/rocq_elpi_HOAS.ml
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/rocq_elpi_HOAS.mli -> ../../../../../default/src/rocq_elpi_HOAS.mli
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/rocq_elpi_arg_HOAS.ml -> ../../../../../default/src/rocq_elpi_arg_HOAS.ml
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/rocq_elpi_arg_HOAS.mli -> ../../../../../default/src/rocq_elpi_arg_HOAS.mli
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/rocq_elpi_arg_syntax.ml -> ../../../../../default/src/rocq_elpi_arg_syntax.ml
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/rocq_elpi_builtins.ml -> ../../../../../default/src/rocq_elpi_builtins.ml
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/rocq_elpi_builtins.mli -> ../../../../../default/src/rocq_elpi_builtins.mli
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/rocq_elpi_builtins_HOAS.ml -> ../../../../../default/src/rocq_elpi_builtins_HOAS.ml
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/rocq_elpi_builtins_arg_HOAS.ml -> ../../../../../default/src/rocq_elpi_builtins_arg_HOAS.ml
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/rocq_elpi_builtins_synterp.ml -> ../../../../../default/src/rocq_elpi_builtins_synterp.ml
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/rocq_elpi_builtins_synterp.mli -> ../../../../../default/src/rocq_elpi_builtins_synterp.mli
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/rocq_elpi_config.ml -> ../../../../../default/src/rocq_elpi_config.ml
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/rocq_elpi_glob_quotation.ml -> ../../../../../default/src/rocq_elpi_glob_quotation.ml
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/rocq_elpi_glob_quotation.mli -> ../../../../../default/src/rocq_elpi_glob_quotation.mli
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/rocq_elpi_graph.ml -> ../../../../../default/src/rocq_elpi_graph.ml
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/rocq_elpi_graph.mli -> ../../../../../default/src/rocq_elpi_graph.mli
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/rocq_elpi_name_quotation.ml -> ../../../../../default/src/rocq_elpi_name_quotation.ml
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/rocq_elpi_programs.ml -> ../../../../../default/src/rocq_elpi_programs.ml
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/rocq_elpi_programs.mli -> ../../../../../default/src/rocq_elpi_programs.mli
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/rocq_elpi_utils.ml -> ../../../../../default/src/rocq_elpi_utils.ml
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/rocq_elpi_utils.mli -> ../../../../../default/src/rocq_elpi_utils.mli
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/rocq_elpi_vernacular.ml -> ../../../../../default/src/rocq_elpi_vernacular.ml
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/rocq_elpi_vernacular.mli -> ../../../../../default/src/rocq_elpi_vernacular.mli
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/rocq_elpi_vernacular_syntax.ml -> ../../../../../default/src/rocq_elpi_vernacular_syntax.ml
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/opam -> ../../../../default/rocq-elpi.opam
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/tc/elpi_tc_plugin.a -> ../../../../../default/apps/tc/src/elpi_tc_plugin.a
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/tc/elpi_tc_plugin.cma -> ../../../../../default/apps/tc/src/elpi_tc_plugin.cma
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/tc/elpi_tc_plugin.cmi -> ../../../../../default/apps/tc/src/.elpi_tc_plugin.objs/byte/elpi_tc_plugin.cmi
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/tc/elpi_tc_plugin.cmt -> ../../../../../default/apps/tc/src/.elpi_tc_plugin.objs/byte/elpi_tc_plugin.cmt
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/tc/elpi_tc_plugin.cmx -> ../../../../../default/apps/tc/src/.elpi_tc_plugin.objs/native/elpi_tc_plugin.cmx
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/tc/elpi_tc_plugin.cmxa -> ../../../../../default/apps/tc/src/elpi_tc_plugin.cmxa
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/tc/elpi_tc_plugin.cmxs -> ../../../../../default/apps/tc/src/elpi_tc_plugin.cmxs
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/tc/elpi_tc_plugin.ml -> ../../../../../default/apps/tc/src/elpi_tc_plugin.ml-gen
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/tc/elpi_tc_plugin__Rocq_elpi_class_tactics_takeover.cmi -> ../../../../../default/apps/tc/src/.elpi_tc_plugin.objs/byte/elpi_tc_plugin__Rocq_elpi_class_tactics_takeover.cmi
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/tc/elpi_tc_plugin__Rocq_elpi_class_tactics_takeover.cmt -> ../../../../../default/apps/tc/src/.elpi_tc_plugin.objs/byte/elpi_tc_plugin__Rocq_elpi_class_tactics_takeover.cmt
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/tc/elpi_tc_plugin__Rocq_elpi_class_tactics_takeover.cmti -> ../../../../../default/apps/tc/src/.elpi_tc_plugin.objs/byte/elpi_tc_plugin__Rocq_elpi_class_tactics_takeover.cmti
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/tc/elpi_tc_plugin__Rocq_elpi_class_tactics_takeover.cmx -> ../../../../../default/apps/tc/src/.elpi_tc_plugin.objs/native/elpi_tc_plugin__Rocq_elpi_class_tactics_takeover.cmx
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/tc/elpi_tc_plugin__Rocq_elpi_tc_hook.cmi -> ../../../../../default/apps/tc/src/.elpi_tc_plugin.objs/byte/elpi_tc_plugin__Rocq_elpi_tc_hook.cmi
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/tc/elpi_tc_plugin__Rocq_elpi_tc_hook.cmt -> ../../../../../default/apps/tc/src/.elpi_tc_plugin.objs/byte/elpi_tc_plugin__Rocq_elpi_tc_hook.cmt
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/tc/elpi_tc_plugin__Rocq_elpi_tc_hook.cmx -> ../../../../../default/apps/tc/src/.elpi_tc_plugin.objs/native/elpi_tc_plugin__Rocq_elpi_tc_hook.cmx
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/tc/elpi_tc_plugin__Rocq_elpi_tc_register.cmi -> ../../../../../default/apps/tc/src/.elpi_tc_plugin.objs/byte/elpi_tc_plugin__Rocq_elpi_tc_register.cmi
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/tc/elpi_tc_plugin__Rocq_elpi_tc_register.cmt -> ../../../../../default/apps/tc/src/.elpi_tc_plugin.objs/byte/elpi_tc_plugin__Rocq_elpi_tc_register.cmt
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/tc/elpi_tc_plugin__Rocq_elpi_tc_register.cmx -> ../../../../../default/apps/tc/src/.elpi_tc_plugin.objs/native/elpi_tc_plugin__Rocq_elpi_tc_register.cmx
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/tc/elpi_tc_plugin__Rocq_elpi_tc_time.cmi -> ../../../../../default/apps/tc/src/.elpi_tc_plugin.objs/byte/elpi_tc_plugin__Rocq_elpi_tc_time.cmi
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/tc/elpi_tc_plugin__Rocq_elpi_tc_time.cmt -> ../../../../../default/apps/tc/src/.elpi_tc_plugin.objs/byte/elpi_tc_plugin__Rocq_elpi_tc_time.cmt
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/tc/elpi_tc_plugin__Rocq_elpi_tc_time.cmx -> ../../../../../default/apps/tc/src/.elpi_tc_plugin.objs/native/elpi_tc_plugin__Rocq_elpi_tc_time.cmx
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/tc/rocq_elpi_class_tactics_takeover.ml -> ../../../../../default/apps/tc/src/rocq_elpi_class_tactics_takeover.ml
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/tc/rocq_elpi_class_tactics_takeover.mli -> ../../../../../default/apps/tc/src/rocq_elpi_class_tactics_takeover.mli
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/tc/rocq_elpi_tc_hook.ml -> ../../../../../default/apps/tc/src/rocq_elpi_tc_hook.ml
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/tc/rocq_elpi_tc_register.ml -> ../../../../../default/apps/tc/src/rocq_elpi_tc_register.ml
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/tc/rocq_elpi_tc_time.ml -> ../../../../../default/apps/tc/src/rocq_elpi_tc_time.ml
++ popd
/github/workspace/builds/coq /github/workspace
++ printf '::endgroup::\n'
::endgroup::
++ printf '::group::df -h\n'
::group::df -h
++ df -h
Filesystem      Size  Used Avail Use% Mounted on
overlay          72G   59G   13G  83% /
tmpfs            64M     0   64M   0% /dev
shm              64M     0   64M   0% /dev/shm
/dev/root        72G   59G   13G  83% /usr/sbin/docker-init
tmpfs           7.9G     0  7.9G   0% /proc/acpi
tmpfs           7.9G     0  7.9G   0% /proc/scsi
tmpfs           7.9G     0  7.9G   0% /sys/firmware
++ printf '::endgroup::\n'
::endgroup::
++ printf '::group::download passing artifacts @ %s %s\n' 3853febccfbc655239396d2d204fd431e2002232 'https://gitlab.inria.fr/coq/coq/-/jobs/6326502/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6326424/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6326458/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6326470/artifacts/download'
::group::download passing artifacts @ 3853febccfbc655239396d2d204fd431e2002232 https://gitlab.inria.fr/coq/coq/-/jobs/6326502/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6326424/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6326458/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6326470/artifacts/download
++ printf '::warning::download passing artifacts @ %s %s\n' 3853febccfbc655239396d2d204fd431e2002232 'https://gitlab.inria.fr/coq/coq/-/jobs/6326502/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6326424/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6326458/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6326470/artifacts/download'
::warning::download passing artifacts @ 3853febccfbc655239396d2d204fd431e2002232 https://gitlab.inria.fr/coq/coq/-/jobs/6326502/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6326424/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6326458/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6326470/artifacts/download
++ pushd coq-passing
/github/workspace/builds/coq/coq-passing /github/workspace/builds/coq /github/workspace
++ mkdir -p _build_ci
++ ln -s _build_ci saved_build_ci
++ git checkout 3853febccfbc655239396d2d204fd431e2002232
Note: switching to '3853febccfbc655239396d2d204fd431e2002232'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:

  git switch -c <new-branch-name>

Or undo this operation with:

  git switch -

Turn off this advice by setting config variable advice.detachedHead to false

HEAD is now at 3853febccf Merge PR #20947: Remove references to opam packages not in this repo.
++ for i in ${PASSING_ARTIFACT_URLS}
+++ printf %s https://gitlab.inria.fr/coq/coq/-/jobs/6326502/artifacts/download
+++ sha1sum
+++ cut '-d ' -f1
++ hash=ae8c8b0d5fdf0fad3e2e2724c9de9040ded48c8c
++ wget https://gitlab.inria.fr/coq/coq/-/jobs/6326502/artifacts/download -O artifact-ae8c8b0d5fdf0fad3e2e2724c9de9040ded48c8c.zip
--2025-10-09 12:47:39--  https://gitlab.inria.fr/coq/coq/-/jobs/6326502/artifacts/download
Resolving gitlab.inria.fr (gitlab.inria.fr)... 128.93.193.23
Connecting to gitlab.inria.fr (gitlab.inria.fr)|128.93.193.23|:443... connected.
HTTP request sent, awaiting response... 404 Not Found
2025-10-09 12:47:39 ERROR 404: Not Found.
minimizer log (truncated to last 26KiB; full 4.0MiB file on GitHub Actions Artifacts under bug.log)
hook.cmi -> ../../../../../default/apps/coercion/src/.elpi_coercion_plugin.objs/byte/elpi_coercion_plugin__Rocq_elpi_coercion_hook.cmi
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/coercion/elpi_coercion_plugin__Rocq_elpi_coercion_hook.cmt -> ../../../../../default/apps/coercion/src/.elpi_coercion_plugin.objs/byte/elpi_coercion_plugin__Rocq_elpi_coercion_hook.cmt
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/coercion/elpi_coercion_plugin__Rocq_elpi_coercion_hook.cmx -> ../../../../../default/apps/coercion/src/.elpi_coercion_plugin.objs/native/elpi_coercion_plugin__Rocq_elpi_coercion_hook.cmx
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/coercion/rocq_elpi_coercion_hook.ml -> ../../../../../default/apps/coercion/src/rocq_elpi_coercion_hook.ml
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/cs/elpi_cs_plugin.a -> ../../../../../default/apps/cs/src/elpi_cs_plugin.a
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/cs/elpi_cs_plugin.cma -> ../../../../../default/apps/cs/src/elpi_cs_plugin.cma
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/cs/elpi_cs_plugin.cmi -> ../../../../../default/apps/cs/src/.elpi_cs_plugin.objs/byte/elpi_cs_plugin.cmi
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/cs/elpi_cs_plugin.cmt -> ../../../../../default/apps/cs/src/.elpi_cs_plugin.objs/byte/elpi_cs_plugin.cmt
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/cs/elpi_cs_plugin.cmx -> ../../../../../default/apps/cs/src/.elpi_cs_plugin.objs/native/elpi_cs_plugin.cmx
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/cs/elpi_cs_plugin.cmxa -> ../../../../../default/apps/cs/src/elpi_cs_plugin.cmxa
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/cs/elpi_cs_plugin.cmxs -> ../../../../../default/apps/cs/src/elpi_cs_plugin.cmxs
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/cs/elpi_cs_plugin.ml -> ../../../../../default/apps/cs/src/elpi_cs_plugin.ml-gen
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/cs/elpi_cs_plugin__Rocq_elpi_cs_hook.cmi -> ../../../../../default/apps/cs/src/.elpi_cs_plugin.objs/byte/elpi_cs_plugin__Rocq_elpi_cs_hook.cmi
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/cs/elpi_cs_plugin__Rocq_elpi_cs_hook.cmt -> ../../../../../default/apps/cs/src/.elpi_cs_plugin.objs/byte/elpi_cs_plugin__Rocq_elpi_cs_hook.cmt
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/cs/elpi_cs_plugin__Rocq_elpi_cs_hook.cmx -> ../../../../../default/apps/cs/src/.elpi_cs_plugin.objs/native/elpi_cs_plugin__Rocq_elpi_cs_hook.cmx
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/cs/rocq_elpi_cs_hook.ml -> ../../../../../default/apps/cs/src/rocq_elpi_cs_hook.ml
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/dune-package -> ../../../../default/rocq-elpi.dune-package
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/elpi_plugin.a -> ../../../../../default/src/elpi_plugin.a
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/elpi_plugin.cma -> ../../../../../default/src/elpi_plugin.cma
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/elpi_plugin.cmi -> ../../../../../default/src/.elpi_plugin.objs/byte/elpi_plugin.cmi
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/elpi_plugin.cmt -> ../../../../../default/src/.elpi_plugin.objs/byte/elpi_plugin.cmt
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/elpi_plugin.cmx -> ../../../../../default/src/.elpi_plugin.objs/native/elpi_plugin.cmx
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/elpi_plugin.cmxa -> ../../../../../default/src/elpi_plugin.cmxa
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/elpi_plugin.cmxs -> ../../../../../default/src/elpi_plugin.cmxs
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/elpi_plugin.ml -> ../../../../../default/src/elpi_plugin.ml-gen
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/elpi_plugin__Rocq_elpi_HOAS.cmi -> ../../../../../default/src/.elpi_plugin.objs/byte/elpi_plugin__Rocq_elpi_HOAS.cmi
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/elpi_plugin__Rocq_elpi_HOAS.cmt -> ../../../../../default/src/.elpi_plugin.objs/byte/elpi_plugin__Rocq_elpi_HOAS.cmt
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/elpi_plugin__Rocq_elpi_HOAS.cmti -> ../../../../../default/src/.elpi_plugin.objs/byte/elpi_plugin__Rocq_elpi_HOAS.cmti
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/elpi_plugin__Rocq_elpi_HOAS.cmx -> ../../../../../default/src/.elpi_plugin.objs/native/elpi_plugin__Rocq_elpi_HOAS.cmx
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/elpi_plugin__Rocq_elpi_arg_HOAS.cmi -> ../../../../../default/src/.elpi_plugin.objs/byte/elpi_plugin__Rocq_elpi_arg_HOAS.cmi
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/elpi_plugin__Rocq_elpi_arg_HOAS.cmt -> ../../../../../default/src/.elpi_plugin.objs/byte/elpi_plugin__Rocq_elpi_arg_HOAS.cmt
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/elpi_plugin__Rocq_elpi_arg_HOAS.cmti -> ../../../../../default/src/.elpi_plugin.objs/byte/elpi_plugin__Rocq_elpi_arg_HOAS.cmti
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/elpi_plugin__Rocq_elpi_arg_HOAS.cmx -> ../../../../../default/src/.elpi_plugin.objs/native/elpi_plugin__Rocq_elpi_arg_HOAS.cmx
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/elpi_plugin__Rocq_elpi_arg_syntax.cmi -> ../../../../../default/src/.elpi_plugin.objs/byte/elpi_plugin__Rocq_elpi_arg_syntax.cmi
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/elpi_plugin__Rocq_elpi_arg_syntax.cmt -> ../../../../../default/src/.elpi_plugin.objs/byte/elpi_plugin__Rocq_elpi_arg_syntax.cmt
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/elpi_plugin__Rocq_elpi_arg_syntax.cmx -> ../../../../../default/src/.elpi_plugin.objs/native/elpi_plugin__Rocq_elpi_arg_syntax.cmx
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/elpi_plugin__Rocq_elpi_builtins.cmi -> ../../../../../default/src/.elpi_plugin.objs/byte/elpi_plugin__Rocq_elpi_builtins.cmi
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/elpi_plugin__Rocq_elpi_builtins.cmt -> ../../../../../default/src/.elpi_plugin.objs/byte/elpi_plugin__Rocq_elpi_builtins.cmt
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/elpi_plugin__Rocq_elpi_builtins.cmti -> ../../../../../default/src/.elpi_plugin.objs/byte/elpi_plugin__Rocq_elpi_builtins.cmti
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/elpi_plugin__Rocq_elpi_builtins.cmx -> ../../../../../default/src/.elpi_plugin.objs/native/elpi_plugin__Rocq_elpi_builtins.cmx
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/elpi_plugin__Rocq_elpi_builtins_HOAS.cmi -> ../../../../../default/src/.elpi_plugin.objs/byte/elpi_plugin__Rocq_elpi_builtins_HOAS.cmi
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/elpi_plugin__Rocq_elpi_builtins_HOAS.cmt -> ../../../../../default/src/.elpi_plugin.objs/byte/elpi_plugin__Rocq_elpi_builtins_HOAS.cmt
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/elpi_plugin__Rocq_elpi_builtins_HOAS.cmx -> ../../../../../default/src/.elpi_plugin.objs/native/elpi_plugin__Rocq_elpi_builtins_HOAS.cmx
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/elpi_plugin__Rocq_elpi_builtins_arg_HOAS.cmi -> ../../../../../default/src/.elpi_plugin.objs/byte/elpi_plugin__Rocq_elpi_builtins_arg_HOAS.cmi
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/elpi_plugin__Rocq_elpi_builtins_arg_HOAS.cmt -> ../../../../../default/src/.elpi_plugin.objs/byte/elpi_plugin__Rocq_elpi_builtins_arg_HOAS.cmt
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/elpi_plugin__Rocq_elpi_builtins_arg_HOAS.cmx -> ../../../../../default/src/.elpi_plugin.objs/native/elpi_plugin__Rocq_elpi_builtins_arg_HOAS.cmx
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/elpi_plugin__Rocq_elpi_builtins_synterp.cmi -> ../../../../../default/src/.elpi_plugin.objs/byte/elpi_plugin__Rocq_elpi_builtins_synterp.cmi
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/elpi_plugin__Rocq_elpi_builtins_synterp.cmt -> ../../../../../default/src/.elpi_plugin.objs/byte/elpi_plugin__Rocq_elpi_builtins_synterp.cmt
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/elpi_plugin__Rocq_elpi_builtins_synterp.cmti -> ../../../../../default/src/.elpi_plugin.objs/byte/elpi_plugin__Rocq_elpi_builtins_synterp.cmti
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/elpi_plugin__Rocq_elpi_builtins_synterp.cmx -> ../../../../../default/src/.elpi_plugin.objs/native/elpi_plugin__Rocq_elpi_builtins_synterp.cmx
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/elpi_plugin__Rocq_elpi_config.cmi -> ../../../../../default/src/.elpi_plugin.objs/byte/elpi_plugin__Rocq_elpi_config.cmi
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/elpi_plugin__Rocq_elpi_config.cmt -> ../../../../../default/src/.elpi_plugin.objs/byte/elpi_plugin__Rocq_elpi_config.cmt
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/elpi_plugin__Rocq_elpi_config.cmx -> ../../../../../default/src/.elpi_plugin.objs/native/elpi_plugin__Rocq_elpi_config.cmx
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/elpi_plugin__Rocq_elpi_glob_quotation.cmi -> ../../../../../default/src/.elpi_plugin.objs/byte/elpi_plugin__Rocq_elpi_glob_quotation.cmi
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/elpi_plugin__Rocq_elpi_glob_quotation.cmt -> ../../../../../default/src/.elpi_plugin.objs/byte/elpi_plugin__Rocq_elpi_glob_quotation.cmt
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/elpi_plugin__Rocq_elpi_glob_quotation.cmti -> ../../../../../default/src/.elpi_plugin.objs/byte/elpi_plugin__Rocq_elpi_glob_quotation.cmti
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/elpi_plugin__Rocq_elpi_glob_quotation.cmx -> ../../../../../default/src/.elpi_plugin.objs/native/elpi_plugin__Rocq_elpi_glob_quotation.cmx
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/elpi_plugin__Rocq_elpi_graph.cmi -> ../../../../../default/src/.elpi_plugin.objs/byte/elpi_plugin__Rocq_elpi_graph.cmi
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/elpi_plugin__Rocq_elpi_graph.cmt -> ../../../../../default/src/.elpi_plugin.objs/byte/elpi_plugin__Rocq_elpi_graph.cmt
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/elpi_plugin__Rocq_elpi_graph.cmti -> ../../../../../default/src/.elpi_plugin.objs/byte/elpi_plugin__Rocq_elpi_graph.cmti
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/elpi_plugin__Rocq_elpi_graph.cmx -> ../../../../../default/src/.elpi_plugin.objs/native/elpi_plugin__Rocq_elpi_graph.cmx
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/elpi_plugin__Rocq_elpi_name_quotation.cmi -> ../../../../../default/src/.elpi_plugin.objs/byte/elpi_plugin__Rocq_elpi_name_quotation.cmi
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/elpi_plugin__Rocq_elpi_name_quotation.cmt -> ../../../../../default/src/.elpi_plugin.objs/byte/elpi_plugin__Rocq_elpi_name_quotation.cmt
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/elpi_plugin__Rocq_elpi_name_quotation.cmx -> ../../../../../default/src/.elpi_plugin.objs/native/elpi_plugin__Rocq_elpi_name_quotation.cmx
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/elpi_plugin__Rocq_elpi_programs.cmi -> ../../../../../default/src/.elpi_plugin.objs/byte/elpi_plugin__Rocq_elpi_programs.cmi
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/elpi_plugin__Rocq_elpi_programs.cmt -> ../../../../../default/src/.elpi_plugin.objs/byte/elpi_plugin__Rocq_elpi_programs.cmt
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/elpi_plugin__Rocq_elpi_programs.cmti -> ../../../../../default/src/.elpi_plugin.objs/byte/elpi_plugin__Rocq_elpi_programs.cmti
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/elpi_plugin__Rocq_elpi_programs.cmx -> ../../../../../default/src/.elpi_plugin.objs/native/elpi_plugin__Rocq_elpi_programs.cmx
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/elpi_plugin__Rocq_elpi_utils.cmi -> ../../../../../default/src/.elpi_plugin.objs/byte/elpi_plugin__Rocq_elpi_utils.cmi
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/elpi_plugin__Rocq_elpi_utils.cmt -> ../../../../../default/src/.elpi_plugin.objs/byte/elpi_plugin__Rocq_elpi_utils.cmt
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/elpi_plugin__Rocq_elpi_utils.cmti -> ../../../../../default/src/.elpi_plugin.objs/byte/elpi_plugin__Rocq_elpi_utils.cmti
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/elpi_plugin__Rocq_elpi_utils.cmx -> ../../../../../default/src/.elpi_plugin.objs/native/elpi_plugin__Rocq_elpi_utils.cmx
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/elpi_plugin__Rocq_elpi_vernacular.cmi -> ../../../../../default/src/.elpi_plugin.objs/byte/elpi_plugin__Rocq_elpi_vernacular.cmi
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/elpi_plugin__Rocq_elpi_vernacular.cmt -> ../../../../../default/src/.elpi_plugin.objs/byte/elpi_plugin__Rocq_elpi_vernacular.cmt
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/elpi_plugin__Rocq_elpi_vernacular.cmti -> ../../../../../default/src/.elpi_plugin.objs/byte/elpi_plugin__Rocq_elpi_vernacular.cmti
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/elpi_plugin__Rocq_elpi_vernacular.cmx -> ../../../../../default/src/.elpi_plugin.objs/native/elpi_plugin__Rocq_elpi_vernacular.cmx
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/elpi_plugin__Rocq_elpi_vernacular_syntax.cmi -> ../../../../../default/src/.elpi_plugin.objs/byte/elpi_plugin__Rocq_elpi_vernacular_syntax.cmi
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/elpi_plugin__Rocq_elpi_vernacular_syntax.cmt -> ../../../../../default/src/.elpi_plugin.objs/byte/elpi_plugin__Rocq_elpi_vernacular_syntax.cmt
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/elpi_plugin__Rocq_elpi_vernacular_syntax.cmx -> ../../../../../default/src/.elpi_plugin.objs/native/elpi_plugin__Rocq_elpi_vernacular_syntax.cmx
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/rocq_elpi_HOAS.ml -> ../../../../../default/src/rocq_elpi_HOAS.ml
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/rocq_elpi_HOAS.mli -> ../../../../../default/src/rocq_elpi_HOAS.mli
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/rocq_elpi_arg_HOAS.ml -> ../../../../../default/src/rocq_elpi_arg_HOAS.ml
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/rocq_elpi_arg_HOAS.mli -> ../../../../../default/src/rocq_elpi_arg_HOAS.mli
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/rocq_elpi_arg_syntax.ml -> ../../../../../default/src/rocq_elpi_arg_syntax.ml
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/rocq_elpi_builtins.ml -> ../../../../../default/src/rocq_elpi_builtins.ml
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/rocq_elpi_builtins.mli -> ../../../../../default/src/rocq_elpi_builtins.mli
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/rocq_elpi_builtins_HOAS.ml -> ../../../../../default/src/rocq_elpi_builtins_HOAS.ml
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/rocq_elpi_builtins_arg_HOAS.ml -> ../../../../../default/src/rocq_elpi_builtins_arg_HOAS.ml
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/rocq_elpi_builtins_synterp.ml -> ../../../../../default/src/rocq_elpi_builtins_synterp.ml
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/rocq_elpi_builtins_synterp.mli -> ../../../../../default/src/rocq_elpi_builtins_synterp.mli
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/rocq_elpi_config.ml -> ../../../../../default/src/rocq_elpi_config.ml
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/rocq_elpi_glob_quotation.ml -> ../../../../../default/src/rocq_elpi_glob_quotation.ml
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/rocq_elpi_glob_quotation.mli -> ../../../../../default/src/rocq_elpi_glob_quotation.mli
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/rocq_elpi_graph.ml -> ../../../../../default/src/rocq_elpi_graph.ml
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/rocq_elpi_graph.mli -> ../../../../../default/src/rocq_elpi_graph.mli
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/rocq_elpi_name_quotation.ml -> ../../../../../default/src/rocq_elpi_name_quotation.ml
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/rocq_elpi_programs.ml -> ../../../../../default/src/rocq_elpi_programs.ml
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/rocq_elpi_programs.mli -> ../../../../../default/src/rocq_elpi_programs.mli
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/rocq_elpi_utils.ml -> ../../../../../default/src/rocq_elpi_utils.ml
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/rocq_elpi_utils.mli -> ../../../../../default/src/rocq_elpi_utils.mli
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/rocq_elpi_vernacular.ml -> ../../../../../default/src/rocq_elpi_vernacular.ml
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/rocq_elpi_vernacular.mli -> ../../../../../default/src/rocq_elpi_vernacular.mli
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/elpi/rocq_elpi_vernacular_syntax.ml -> ../../../../../default/src/rocq_elpi_vernacular_syntax.ml
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/opam -> ../../../../default/rocq-elpi.opam
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/tc/elpi_tc_plugin.a -> ../../../../../default/apps/tc/src/elpi_tc_plugin.a
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/tc/elpi_tc_plugin.cma -> ../../../../../default/apps/tc/src/elpi_tc_plugin.cma
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/tc/elpi_tc_plugin.cmi -> ../../../../../default/apps/tc/src/.elpi_tc_plugin.objs/byte/elpi_tc_plugin.cmi
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/tc/elpi_tc_plugin.cmt -> ../../../../../default/apps/tc/src/.elpi_tc_plugin.objs/byte/elpi_tc_plugin.cmt
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/tc/elpi_tc_plugin.cmx -> ../../../../../default/apps/tc/src/.elpi_tc_plugin.objs/native/elpi_tc_plugin.cmx
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/tc/elpi_tc_plugin.cmxa -> ../../../../../default/apps/tc/src/elpi_tc_plugin.cmxa
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/tc/elpi_tc_plugin.cmxs -> ../../../../../default/apps/tc/src/elpi_tc_plugin.cmxs
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/tc/elpi_tc_plugin.ml -> ../../../../../default/apps/tc/src/elpi_tc_plugin.ml-gen
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/tc/elpi_tc_plugin__Rocq_elpi_class_tactics_takeover.cmi -> ../../../../../default/apps/tc/src/.elpi_tc_plugin.objs/byte/elpi_tc_plugin__Rocq_elpi_class_tactics_takeover.cmi
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/tc/elpi_tc_plugin__Rocq_elpi_class_tactics_takeover.cmt -> ../../../../../default/apps/tc/src/.elpi_tc_plugin.objs/byte/elpi_tc_plugin__Rocq_elpi_class_tactics_takeover.cmt
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/tc/elpi_tc_plugin__Rocq_elpi_class_tactics_takeover.cmti -> ../../../../../default/apps/tc/src/.elpi_tc_plugin.objs/byte/elpi_tc_plugin__Rocq_elpi_class_tactics_takeover.cmti
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/tc/elpi_tc_plugin__Rocq_elpi_class_tactics_takeover.cmx -> ../../../../../default/apps/tc/src/.elpi_tc_plugin.objs/native/elpi_tc_plugin__Rocq_elpi_class_tactics_takeover.cmx
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/tc/elpi_tc_plugin__Rocq_elpi_tc_hook.cmi -> ../../../../../default/apps/tc/src/.elpi_tc_plugin.objs/byte/elpi_tc_plugin__Rocq_elpi_tc_hook.cmi
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/tc/elpi_tc_plugin__Rocq_elpi_tc_hook.cmt -> ../../../../../default/apps/tc/src/.elpi_tc_plugin.objs/byte/elpi_tc_plugin__Rocq_elpi_tc_hook.cmt
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/tc/elpi_tc_plugin__Rocq_elpi_tc_hook.cmx -> ../../../../../default/apps/tc/src/.elpi_tc_plugin.objs/native/elpi_tc_plugin__Rocq_elpi_tc_hook.cmx
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/tc/elpi_tc_plugin__Rocq_elpi_tc_register.cmi -> ../../../../../default/apps/tc/src/.elpi_tc_plugin.objs/byte/elpi_tc_plugin__Rocq_elpi_tc_register.cmi
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/tc/elpi_tc_plugin__Rocq_elpi_tc_register.cmt -> ../../../../../default/apps/tc/src/.elpi_tc_plugin.objs/byte/elpi_tc_plugin__Rocq_elpi_tc_register.cmt
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/tc/elpi_tc_plugin__Rocq_elpi_tc_register.cmx -> ../../../../../default/apps/tc/src/.elpi_tc_plugin.objs/native/elpi_tc_plugin__Rocq_elpi_tc_register.cmx
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/tc/elpi_tc_plugin__Rocq_elpi_tc_time.cmi -> ../../../../../default/apps/tc/src/.elpi_tc_plugin.objs/byte/elpi_tc_plugin__Rocq_elpi_tc_time.cmi
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/tc/elpi_tc_plugin__Rocq_elpi_tc_time.cmt -> ../../../../../default/apps/tc/src/.elpi_tc_plugin.objs/byte/elpi_tc_plugin__Rocq_elpi_tc_time.cmt
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/tc/elpi_tc_plugin__Rocq_elpi_tc_time.cmx -> ../../../../../default/apps/tc/src/.elpi_tc_plugin.objs/native/elpi_tc_plugin__Rocq_elpi_tc_time.cmx
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/tc/rocq_elpi_class_tactics_takeover.ml -> ../../../../../default/apps/tc/src/rocq_elpi_class_tactics_takeover.ml
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/tc/rocq_elpi_class_tactics_takeover.mli -> ../../../../../default/apps/tc/src/rocq_elpi_class_tactics_takeover.mli
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/tc/rocq_elpi_tc_hook.ml -> ../../../../../default/apps/tc/src/rocq_elpi_tc_hook.ml
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/tc/rocq_elpi_tc_register.ml -> ../../../../../default/apps/tc/src/rocq_elpi_tc_register.ml
  saved_build_ci/elpi/_build/install/default/lib/rocq-elpi/tc/rocq_elpi_tc_time.ml -> ../../../../../default/apps/tc/src/rocq_elpi_tc_time.ml
++ popd
/github/workspace/builds/coq /github/workspace
++ printf '::endgroup::\n'
::endgroup::
++ printf '::group::df -h\n'
::group::df -h
++ df -h
Filesystem      Size  Used Avail Use% Mounted on
overlay          72G   59G   13G  83% /
tmpfs            64M     0   64M   0% /dev
shm              64M     0   64M   0% /dev/shm
/dev/root        72G   59G   13G  83% /usr/sbin/docker-init
tmpfs           7.9G     0  7.9G   0% /proc/acpi
tmpfs           7.9G     0  7.9G   0% /proc/scsi
tmpfs           7.9G     0  7.9G   0% /sys/firmware
++ printf '::endgroup::\n'
::endgroup::
++ printf '::group::download passing artifacts @ %s %s\n' 3853febccfbc655239396d2d204fd431e2002232 'https://gitlab.inria.fr/coq/coq/-/jobs/6326502/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6326424/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6326458/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6326470/artifacts/download'
::group::download passing artifacts @ 3853febccfbc655239396d2d204fd431e2002232 https://gitlab.inria.fr/coq/coq/-/jobs/6326502/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6326424/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6326458/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6326470/artifacts/download
++ printf '::warning::download passing artifacts @ %s %s\n' 3853febccfbc655239396d2d204fd431e2002232 'https://gitlab.inria.fr/coq/coq/-/jobs/6326502/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6326424/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6326458/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6326470/artifacts/download'
::warning::download passing artifacts @ 3853febccfbc655239396d2d204fd431e2002232 https://gitlab.inria.fr/coq/coq/-/jobs/6326502/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6326424/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6326458/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6326470/artifacts/download
++ pushd coq-passing
/github/workspace/builds/coq/coq-passing /github/workspace/builds/coq /github/workspace
++ mkdir -p _build_ci
++ ln -s _build_ci saved_build_ci
++ git checkout 3853febccfbc655239396d2d204fd431e2002232
Note: switching to '3853febccfbc655239396d2d204fd431e2002232'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:

  git switch -c <new-branch-name>

Or undo this operation with:

  git switch -

Turn off this advice by setting config variable advice.detachedHead to false

HEAD is now at 3853febccf Merge PR #20947: Remove references to opam packages not in this repo.
++ for i in ${PASSING_ARTIFACT_URLS}
+++ printf %s https://gitlab.inria.fr/coq/coq/-/jobs/6326502/artifacts/download
+++ sha1sum
+++ cut '-d ' -f1
++ hash=ae8c8b0d5fdf0fad3e2e2724c9de9040ded48c8c
++ wget https://gitlab.inria.fr/coq/coq/-/jobs/6326502/artifacts/download -O artifact-ae8c8b0d5fdf0fad3e2e2724c9de9040ded48c8c.zip
--2025-10-09 12:47:39--  https://gitlab.inria.fr/coq/coq/-/jobs/6326502/artifacts/download
Resolving gitlab.inria.fr (gitlab.inria.fr)... 128.93.193.23
Connecting to gitlab.inria.fr (gitlab.inria.fr)|128.93.193.23|:443... connected.
HTTP request sent, awaiting response... 404 Not Found
2025-10-09 12:47:39 ERROR 404: Not Found.

If you have any comments on your experience of the minimizer, please share them in a reply (possibly tagging @JasonGross).
If you believe there's a bug in the bug minimizer, please report it on the bug minimizer issue tracker.

@coqbot-app
Copy link
Contributor

coqbot-app bot commented Oct 9, 2025

Minimized File /home/runner/work/run-coq-bug-minimizer/run-coq-bug-minimizer/builds/coq/coq-failing/_build_ci/hott/theories/Algebra/Groups/Group.v in 25m 7s (from ci-hott) (full log on GitHub Actions - verbose log)

We are collecting data on the user experience of the Coq Bug Minimizer.
If you haven't already filled the survey for this PR, please fill out our short survey!

🌟 Minimized Coq File (consider adding this file to the test-suite)
(* -*- mode: coq; coq-prog-args: ("-emacs" "-q" "-noinit" "-indices-matter" "-w" "-deprecated-native-compiler-option" "-native-compiler" "no" "-coqlib" "/github/workspace/builds/coq/coq-failing/_install_ci/lib/coq//" "-R" "/github/workspace/builds/coq/coq-failing/_build_ci/hott/theories" "HoTT" "-Q" "/github/workspace/cwd" "Top" "-Q" "/github/workspace/builds/coq/coq-failing/_build_ci/hott/contrib" "HoTT.Contrib" "-Q" "/github/workspace/builds/coq/coq-failing/_build_ci/hott/test" "HoTT.Tests" "-Q" "/github/workspace/builds/coq/coq-failing/_install_ci/lib/coq///user-contrib/Ltac2" "Ltac2" "-top" "HoTT.Algebra.Groups.Group") -*- *)
(* File reduced by coq-bug-minimizer from original input, then from 1283 lines to 36 lines, then from 49 lines to 593 lines, then from 599 lines to 49 lines, then from 62 lines to 654 lines, then from 659 lines to 82 lines, then from 95 lines to 136 lines, then from 142 lines to 83 lines, then from 96 lines to 809 lines, then from 812 lines to 137 lines, then from 150 lines to 964 lines, then from 969 lines to 183 lines, then from 196 lines to 286 lines, then from 292 lines to 192 lines, then from 205 lines to 521 lines, then from 523 lines to 216 lines, then from 230 lines to 215 lines, then from 229 lines to 180 lines, then from 194 lines to 180 lines *)
(* coqc version 9.2+alpha compiled with OCaml 4.14.2
   coqtop version 9.2+alpha
   Expected coqc runtime on this file: 0.124 sec *)
Declare Scope type_scope.

Reserved Notation "x -> y" (at level 99, right associativity, y at level 200).

Reserved Notation "x = y  :>  T"
(at level 70, y at next level, no associativity).
Reserved Notation "x * y" (at level 40, left associativity).

Reserved Notation "p ^" (at level 1, format "p '^'").
Delimit Scope trunc_scope with trunc.

Global Open Scope trunc_scope.
Global Open Scope type_scope.

Declare ML Module "ltac_plugin:coq-core.plugins.ltac".

Global Set Default Proof Mode "Classic".

Global Set Universe Polymorphism.

Global Unset Strict Universe Declaration.
Create HintDb typeclass_instances discriminated.

Notation "A -> B" := (forall (_ : A), B) : type_scope.

Record prod (A B : Type) := pair { fst : A ; snd : B }.

Notation "x * y" := (prod x y) : type_scope.

Notation Type0 := Set.
Definition flip A B `{P : A -> B -> Type}
  : (forall a b, P a b) -> (forall b a, P a b).
Admitted.

Arguments flip {A B P} f b a /.

Inductive paths {A : Type} (a : A) : A -> Type :=
  idpath : paths a a.

Notation "x = y :> A" := (@paths A x y) : type_scope.
Notation "x = y" := (x = y :>_) : type_scope.

Inductive trunc_index : Type0 :=
| minus_two : trunc_index
| trunc_S : trunc_index -> trunc_index.

Notation "n .+1" := (trunc_S n) : trunc_scope.
Notation "n .+2" := (n.+1.+1)%trunc : trunc_scope.

Inductive IsTrunc_internal (A : Type@{u}) : trunc_index -> Type@{u} :=
| Build_Contr : forall (center : A) (contr : forall y, center = y), IsTrunc_internal A minus_two
| istrunc_S : forall {n:trunc_index}, (forall x y:A, IsTrunc_internal (x = y) n) -> IsTrunc_internal A (trunc_S n).

Notation IsTrunc n A := (IsTrunc_internal A n).
Notation IsHSet A := (IsTrunc minus_two.+2 A).

Tactic Notation "do_with_holes" tactic3(x) uconstr(p) :=
  x uconstr:(p) ||
  x uconstr:(p _) ||
  x uconstr:(p _ _) ||
  x uconstr:(p _ _ _) ||
  x uconstr:(p _ _ _ _) ||
  x uconstr:(p _ _ _ _ _) ||
  x uconstr:(p _ _ _ _ _ _) ||
  x uconstr:(p _ _ _ _ _ _ _) ||
  x uconstr:(p _ _ _ _ _ _ _ _) ||
  x uconstr:(p _ _ _ _ _ _ _ _ _) ||
  x uconstr:(p _ _ _ _ _ _ _ _ _ _) ||
  x uconstr:(p _ _ _ _ _ _ _ _ _ _ _) ||
  x uconstr:(p _ _ _ _ _ _ _ _ _ _ _ _) ||
  x uconstr:(p _ _ _ _ _ _ _ _ _ _ _ _ _) ||
  x uconstr:(p _ _ _ _ _ _ _ _ _ _ _ _ _ _) ||
  x uconstr:(p _ _ _ _ _ _ _ _ _ _ _ _ _ _ _) ||
  x uconstr:(p _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _) ||
  x uconstr:(p _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _) ||
  x uconstr:(p _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _) ||
  x uconstr:(p _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _) ||
  x uconstr:(p _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _) ||
  x uconstr:(p _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _) ||
  x uconstr:(p _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _) ||
  x uconstr:(p _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _) ||
  x uconstr:(p _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _) ||
  x uconstr:(p _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _) ||
  x uconstr:(p _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _) ||
  x uconstr:(p _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _) ||
  x uconstr:(p _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _) ||
  x uconstr:(p _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _) ||
  x uconstr:(p _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _).
Class IsGlobalAxiom (A : Type) : Type0 := {}.

Ltac is_global_axiom A := let _ := constr:(_ : IsGlobalAxiom A) in idtac.

Ltac global_axiom := try match goal with
    | |- ?G  => is_global_axiom G; exact _
end.

Tactic Notation "snrefine" uconstr(term) := simple notypeclasses refine term; global_axiom.

Tactic Notation "snapply" uconstr(term)
  := do_with_holes ltac:(fun x => snrefine x) term.

Class SgOp A := sg_op: A -> A -> A.
Class MonUnit A := mon_unit: A.
Class Plus A := plus: A -> A -> A.
Class Mult A := mult: A -> A -> A.
Class One A := one: A.
Class Zero A := zero: A.
Class Negate A := negate: A -> A.
Class Inverse A := inv: A -> A.
#[global] Typeclasses Transparent SgOp MonUnit Plus Mult Zero One Negate.
  Notation "(.*.)" := sg_op (only parsing) : mc_mult_scope.

  Notation "x ^" := (inv x) : mc_mult_scope.
  Notation "(^)" := inv (only parsing) : mc_mult_scope.

Class LeftIdentity {A B} (op : A -> B -> B) (x : A): Type
  := left_identity: forall y, op x y = y.

Class RightIdentity {A B} (op : A -> B -> A) (y : B): Type
  := right_identity: forall x, op x y = x.

Class LeftInverse {A} {B} {C} (op : A -> B -> C) (inv : B -> A) (unit : C)
  := left_inverse: forall x, op (inv x) x = unit.

Class RightInverse {A} {B} {C} (op : A -> B -> C) (inv : A -> B) (unit : C)
  := right_inverse: forall x, op x (inv x) = unit.

Class HeteroAssociative {A B C AB BC ABC}
  (fA_BC: A -> BC -> ABC) (fBC: B -> C -> BC)
  (fAB_C: AB -> C -> ABC) (fAB : A -> B -> AB): Type
  := associativity : forall x y z, fA_BC x (fBC y z) = fAB_C (fAB x y) z.
Class Associative {A} (f : A -> A -> A)
  := simple_associativity :: HeteroAssociative f f f f.

Section upper_classes.
  Context (A : Type@{i}).

  Local Open Scope mc_mult_scope.

  Class IsSemiGroup {Aop: SgOp A} :=
    { sg_set :: IsHSet A
    ; sg_ass :: Associative (.*.) }.

  Class IsMonoid {Aop : SgOp A} {Aunit : MonUnit A} :=
    { monoid_semigroup :: IsSemiGroup
    ; monoid_left_id :: LeftIdentity (.*.) mon_unit
    ; monoid_right_id :: RightIdentity (.*.) mon_unit }.

  Class IsGroup {Aop : SgOp A} {Aunit : MonUnit A} {Ainv : Inverse A} :=
    { group_monoid :: @IsMonoid (.*.) mon_unit
    ; inverse_l :: LeftInverse (.*.) (^) mon_unit
    ; inverse_r :: RightInverse (.*.) (^) mon_unit
    }.

End upper_classes.

Local Open Scope mc_mult_scope.

Record Group := Build_Group_internal {
  group_type :> Type;
  group_sgop :: SgOp group_type;
  group_unit :: MonUnit group_type;
  group_inverse :: Inverse group_type;
  group_isgroup :: IsGroup group_type;

  group_assoc_opp : Associative (flip group_sgop);
}.

Definition Build_Group (G : Type)
  `(op : SgOp G, unit : MonUnit G, inv : Inverse G, grp : !IsGroup G)
  : Group.
Admitted.

Definition grp_prod : Group -> Group -> Group.
Proof.
  intros G H.
  snapply (Build_Group (G * H)).
  4: repeat split.
🛠️ Intermediate Coq File (useful for debugging if minimization did not go as far as you wanted)
🛠️ 📜 Intermediate Coq File log (useful for debugging if minimization did not go as far as you wanted)
📜 Build Log (contains the Coq error message) (truncated to last 8.0KiB; full 2.6MiB file on GitHub Actions Artifacts under build.log)
ted environment variable COQLIB, use ROCQLIB instead.
[deprecated-coq-env-var,deprecated-since-9.0,deprecated,default]Warning, feedback message received but no listener to handle it!
MINIMIZER_DEBUG_EXTRA: pwd: PWD=/github/workspace/builds/coq/coq-failing/_build_ci/hott
MINIMIZER_DEBUG_EXTRA: exec: /github/workspace/builds/coq/coq-failing/_install_ci/bin/rocq.orig compile -time-file /github/workspace/builds/coq/coq-failing/_build_ci/hott/theories/Algebra/Groups/Group.v.timing -q -noinit -indices-matter -w -deprecated-native-compiler-option -native-compiler no -Q /github/workspace/builds/coq/coq-failing/_build_ci/hott/contrib HoTT.Contrib -Q /github/workspace/builds/coq/coq-failing/_build_ci/hott/test HoTT.Tests -R /github/workspace/builds/coq/coq-failing/_build_ci/hott/theories HoTT theories/Algebra/Groups/Group.v 
MINIMIZER_DEBUG_EXTRA: coqlib: Warning: Deprecated environment variable COQLIB, use ROCQLIB instead.
/github/workspace/builds/coq/coq-failing/_install_ci/lib/coq//
MINIMIZER_DEBUG: info: /tmp/tmp-coqbot-minimizer.cigk5CLYxv
MINIMIZER_DEBUG: files:  theories/Algebra/Groups/Group.v /github/workspace/builds/coq/coq-failing/_build_ci/hott/theories/Algebra/Groups/Group.v
Warning, feedback message received but no listener to handle it!
Warning: Deprecated environment variable COQLIB, use ROCQLIB instead.
[deprecated-coq-env-var,deprecated-since-9.0,deprecated,default]Warning, feedback message received but no listener to handle it!
Warning: Deprecated environment variable COQLIB, use ROCQLIB instead.
[deprecated-coq-env-var,deprecated-since-9.0,deprecated,default]
Warning: Deprecated environment variable COQCORELIB,
use ROCQRUNTIMELIB instead.
[deprecated-coq-env-var,deprecated-since-9.0,deprecated,default]
Warning: Deprecated environment variable COQLIB, use ROCQLIB instead.
[deprecated-coq-env-var,deprecated-since-9.0,deprecated,default]
Warning: Deprecated environment variable COQCORELIB,
use ROCQRUNTIMELIB instead.
[deprecated-coq-env-var,deprecated-since-9.0,deprecated,default]
theories/Truncations.vo (real: 0.13, user: 0.06, sys: 0.07, mem: 120744 ko)
ROCQ compile theories/Homotopy/Join/TriJoin.v
MINIMIZER_DEBUG_EXTRA: coqc: /github/workspace/builds/coq/coq-failing/_install_ci/bin/////rocq
MINIMIZER_DEBUG_EXTRA: original invocation: compile -time-file theories/Homotopy/Join/TriJoin.v.timing -q -noinit -indices-matter -w -deprecated-native-compiler-option -native-compiler no -Q contrib HoTT.Contrib -Q test HoTT.Tests -R theories HoTT theories/Homotopy/Join/TriJoin.v 
MINIMIZER_DEBUG_EXTRA: new invocation: /github/workspace/builds/coq/coq-failing/_install_ci/bin/rocq.orig compile -time-file /github/workspace/builds/coq/coq-failing/_build_ci/hott/theories/Homotopy/Join/TriJoin.v.timing -q -noinit -indices-matter -w -deprecated-native-compiler-option -native-compiler no -Q /github/workspace/builds/coq/coq-failing/_build_ci/hott/contrib HoTT.Contrib -Q /github/workspace/builds/coq/coq-failing/_build_ci/hott/test HoTT.Tests -R /github/workspace/builds/coq/coq-failing/_build_ci/hott/theories HoTT theories/Homotopy/Join/TriJoin.v 
MINIMIZER_DEBUG_EXTRA: coqpath: 
MINIMIZER_DEBUG_EXTRA: ocamlpath: /github/workspace/builds/coq/coq-failing/_install_ci/lib:
MINIMIZER_DEBUG_EXTRA: pwd: PWD=/github/workspace/builds/coq/coq-failing/_build_ci/hott
MINIMIZER_DEBUG_EXTRA: exec: /github/workspace/builds/coq/coq-failing/_install_ci/bin/rocq.orig compile -time-file /github/workspace/builds/coq/coq-failing/_build_ci/hott/theories/Homotopy/Join/TriJoin.v.timing -q -noinit -indices-matter -w -deprecated-native-compiler-option -native-compiler no -Q /github/workspace/builds/coq/coq-failing/_build_ci/hott/contrib HoTT.Contrib -Q /github/workspace/builds/coq/coq-failing/_build_ci/hott/test HoTT.Tests -R /github/workspace/builds/coq/coq-failing/_build_ci/hott/theories HoTT theories/Homotopy/Join/TriJoin.v 
MINIMIZER_DEBUG_EXTRA: coqlib: Warning: Deprecated environment variable COQLIB, use ROCQLIB instead.
/github/workspace/builds/coq/coq-failing/_install_ci/lib/coq//
MINIMIZER_DEBUG: info: /tmp/tmp-coqbot-minimizer.gdYqWkX46U
MINIMIZER_DEBUG: files:  theories/Homotopy/Join/TriJoin.v /github/workspace/builds/coq/coq-failing/_build_ci/hott/theories/Homotopy/Join/TriJoin.v
Warning, feedback message received but no listener to handle it!
Warning: Deprecated environment variable COQLIB, use ROCQLIB instead.
[deprecated-coq-env-var,deprecated-since-9.0,deprecated,default]Warning, feedback message received but no listener to handle it!
Warning: Deprecated environment variable COQLIB, use ROCQLIB instead.
[deprecated-coq-env-var,deprecated-since-9.0,deprecated,default]
Warning: Deprecated environment variable COQCORELIB,
use ROCQRUNTIMELIB instead.
[deprecated-coq-env-var,deprecated-since-9.0,deprecated,default]
File "./theories/Algebra/Groups/Group.v", line 663, characters 2-19:
Warning: Found unregistered eliminator Int_rect for Int by name.
Use "Register Scheme" with it instead
("as rect_dep" if dependent or "as rect_nodep" if non dependent).
[deprecated-lookup-elim-by-name,deprecated-since-9.1,deprecated,default]
File "./theories/Algebra/Groups/Group.v", line 702, characters 2-14:
Warning: Found unregistered eliminator Int_rect for Int by name.
Use "Register Scheme" with it instead
("as rect_dep" if dependent or "as rect_nodep" if non dependent).
[deprecated-lookup-elim-by-name,deprecated-since-9.1,deprecated,default]
File "./theories/Algebra/Groups/Group.v", line 721, characters 2-14:
Warning: Found unregistered eliminator Int_rect for Int by name.
Use "Register Scheme" with it instead
("as rect_dep" if dependent or "as rect_nodep" if non dependent).
[deprecated-lookup-elim-by-name,deprecated-since-9.1,deprecated,default]
File "./theories/Algebra/Groups/Group.v", line 743, characters 2-14:
Warning: Found unregistered eliminator Int_rect for Int by name.
Use "Register Scheme" with it instead
("as rect_dep" if dependent or "as rect_nodep" if non dependent).
[deprecated-lookup-elim-by-name,deprecated-since-9.1,deprecated,default]
File "./theories/Algebra/Groups/Group.v", line 782, characters 6-14:
Warning: Use of "Notation" keyword for abbreviations is deprecated, use
"Abbreviation" instead.
[notation-for-abbreviation,deprecated-since-9.2,deprecated,default]
File "./theories/Algebra/Groups/Group.v", line 972, characters 2-18:
Error: In environment
G : Group
H : Group
x : G * H
Unable to unify "?p0" with "?p@{x0:=x^}" (cannot satisfy constraint
"?p0" == "?p@{x0:=x^}").
(while solving unification constraints,
 see flag "Solve Unification Constraints")

Command exited with non-zero status 1
theories/Algebra/Groups/Group.vo (real: 0.82, user: 0.71, sys: 0.10, mem: 396668 ko)
make[2]: *** [Makefile.coq:813: theories/Algebra/Groups/Group.vo] Error 1
make[2]: *** [theories/Algebra/Groups/Group.vo] Deleting file 'theories/Algebra/Groups/Group.glob'
make[2]: *** Waiting for unfinished jobs....
theories/Homotopy/Join/TriJoin.vo (real: 1.85, user: 1.76, sys: 0.09, mem: 411256 ko)
make[1]: *** [Makefile.coq:411: all] Error 2
make: *** [Makefile:21: invoke-coqmakefile] Error 2
+ code=2
+ printf '\n%s exit code: %s\n' hott 2
+ '[' hott '!=' stdlib_test ']'
+ echo 'Aggregating timing log...'
Aggregating timing log...
+ echo

+ tools/make-one-time-file.py --real hott.log
    Time |  Peak Mem | File Name                       
-------------------------------------------------------
0m06.31s | 411256 ko | Total Time / Peak Mem           
-------------------------------------------------------
0m01.85s | 411256 ko | Homotopy/Join/TriJoin.vo        
0m00.98s | 403000 ko | Pointed/Loops.vo                
0m00.94s | 396868 ko | Homotopy/Join/Core.vo           
0m00.82s | 396668 ko | Algebra/Groups/Group.vo         
0m00.50s | 379944 ko | Classes/orders/orders.vo        
0m00.45s | 376952 ko | Classes/theory/rings.vo         
0m00.21s | 286648 ko | Categories/Functor/Attributes.vo
0m00.15s | 165996 ko | Classes/interfaces/naturals.vo  
0m00.15s | 171056 ko | Classes/interfaces/rationals.vo 
0m00.13s | 117932 ko | Categories/Adjoint.vo           
0m00.13s | 120744 ko | Truncations.vo                  
+ '[' '' ']'
+ exit 2
/github/workspace/builds/coq /github/workspace
::endgroup::
📜 🔎 Minimization Log (truncated to last 8.0KiB; full 983KiB file on GitHub Actions Artifacts under bug.log)
 Use of "Notation" keyword for abbreviations is deprecated, use
"Abbreviation" instead.
[notation-for-abbreviation,deprecated-since-9.2,deprecated,default]
File "/tmp/tmpoavkq8h4/HoTT/Algebra/Groups/Group.v", line 111, characters 2-59:
Warning: Declaring a scope implicitly is deprecated; use in advance an
explicit "Declare Scope mc_mult_scope.".
[undeclared-scope,deprecated-since-8.10,deprecated,default]
File "/tmp/tmpoavkq8h4/HoTT/Algebra/Groups/Group.v", line 140, characters 2-98:
Warning:
Ignored instance declaration for “sg_set”: “forall Aop : SgOp A,
                                            IsSemiGroup -> IsHSet A” is not a class
[not-a-class,default]

�[93mIntermediate code not saved.�[0m
Failed to do everything at once; trying one at a time.
Admitting definitions unsuccessful.
No successful changes.

I will now attempt to admit lemmas with admit. Defined with Proof using
�[92m
Admitting lemmas successful.�[0m
Failed to do everything at once; trying one at a time.
Admitting lemmas unsuccessful.
No successful changes.

I will now attempt to admit definitions with admit. Defined with Proof using

Non-fatal error: Failed to admit definitions and preserve the error.  
The new error was:
Deprecated environment variable COQCORELIB, use ROCQRUNTIMELIB instead.
Warning: Deprecated environment variable COQCORELIB,
use ROCQRUNTIMELIB instead.
[deprecated-coq-env-var,deprecated-since-9.0,deprecated,default]
File "/tmp/tmpdk4z8jrm/HoTT/Algebra/Groups/Group.v", line 10, characters 0-37:
Warning: Declaring a scope implicitly is deprecated; use in advance an
explicit "Declare Scope trunc_scope.".
[undeclared-scope,deprecated-since-8.10,deprecated,default]
File "/tmp/tmpdk4z8jrm/HoTT/Algebra/Groups/Group.v", line 15, characters 0-54:
Warning:
Legacy loading plugin method has been removed from Rocq, and the `:` syntax is deprecated, and its first argument ignored; please remove "ltac_plugin:" from your Declare ML
[legacy-loading-removed,deprecated-since-9.0,deprecated,default]
File "/tmp/tmpdk4z8jrm/HoTT/Algebra/Groups/Group.v", line 15, characters 0-54:
Warning: "coq-core" has been renamed to "rocq-runtime".
[coq-core-plugin,deprecated-since-9.0,deprecated,default]
File "/tmp/tmpdk4z8jrm/HoTT/Algebra/Groups/Group.v", line 30, characters 0-8:
Warning: Use of "Notation" keyword for abbreviations is deprecated, use
"Abbreviation" instead.
[notation-for-abbreviation,deprecated-since-9.2,deprecated,default]
File "/tmp/tmpdk4z8jrm/HoTT/Algebra/Groups/Group.v", line 54, characters 0-8:
Warning: Use of "Notation" keyword for abbreviations is deprecated, use
"Abbreviation" instead.
[notation-for-abbreviation,deprecated-since-9.2,deprecated,default]
File "/tmp/tmpdk4z8jrm/HoTT/Algebra/Groups/Group.v", line 55, characters 0-8:
Warning: Use of "Notation" keyword for abbreviations is deprecated, use
"Abbreviation" instead.
[notation-for-abbreviation,deprecated-since-9.2,deprecated,default]
File "/tmp/tmpdk4z8jrm/HoTT/Algebra/Groups/Group.v", line 111, characters 2-59:
Warning: Declaring a scope implicitly is deprecated; use in advance an
explicit "Declare Scope mc_mult_scope.".
[undeclared-scope,deprecated-since-8.10,deprecated,default]
File "/tmp/tmpdk4z8jrm/HoTT/Algebra/Groups/Group.v", line 140, characters 2-98:
Warning:
Ignored instance declaration for “sg_set”: “forall Aop : SgOp A,
                                            IsSemiGroup -> IsHSet A” is not a class
[not-a-class,default]
File "/tmp/tmpdk4z8jrm/HoTT/Algebra/Groups/Group.v", line 176, characters 0-8:
Error:  (in proof grp_prod): Attempt to save an incomplete proof
(the proof term is not complete because of given up (admitted) goals).
If this is really what you want to do, use Admitted in place of Qed.


�[93mIntermediate code not saved.�[0m
Failed to do everything at once; trying one at a time.
Admitting definitions unsuccessful.
No successful changes.

I will now attempt to add Proof using lines
�[92m
Adding Proof using lines successful.�[0m
Failed to do everything at once; trying one at a time.
Adding Proof using lines unsuccessful.
No successful changes.

I will now attempt to export modules
Module exportation unsuccessful.

I will now attempt to split imports and exports
Import/Export splitting unsuccessful.

I will now attempt to split := definitions
One-line definition splitting unsuccessful.

I will now attempt to lift Requires to the top of the file while inserting option settings

I will now attempt to lift Requires to the top of the file while inserting option settings

I will now attempt to remove all lines, one at a time
Line removal unsuccessful.

I will now attempt to remove goals ending in [Abort.]
�[92m
Aborted removal successful.�[0m

I will now attempt to remove unused Ltacs
�[92m
Ltac removal successful.�[0m

I will now attempt to remove unused definitions
�[92m
Definition removal successful.�[0m

I will now attempt to remove unused non-instance, non-canonical structure definitions
�[92m
Non-instance definition removal successful.�[0m

I will now attempt to remove unused variables
�[92m
Variable removal successful.�[0m

I will now attempt to remove unused contexts
�[92m
Context removal successful.�[0m

I will now attempt to remove modules
�[92m
Module removal successful.�[0m
Failed to do everything at once; trying one at a time.
Module removal unsuccessful.
No successful changes.

I will now attempt to remove sections

Non-fatal error: Failed to remove Sections and preserve the error.  
The new error was:
Deprecated environment variable COQCORELIB, use ROCQRUNTIMELIB instead.
Warning: Deprecated environment variable COQCORELIB,
use ROCQRUNTIMELIB instead.
[deprecated-coq-env-var,deprecated-since-9.0,deprecated,default]
File "/tmp/tmp95rejhjv/HoTT/Algebra/Groups/Group.v", line 10, characters 0-37:
Warning: Declaring a scope implicitly is deprecated; use in advance an
explicit "Declare Scope trunc_scope.".
[undeclared-scope,deprecated-since-8.10,deprecated,default]
File "/tmp/tmp95rejhjv/HoTT/Algebra/Groups/Group.v", line 15, characters 0-54:
Warning:
Legacy loading plugin method has been removed from Rocq, and the `:` syntax is deprecated, and its first argument ignored; please remove "ltac_plugin:" from your Declare ML
[legacy-loading-removed,deprecated-since-9.0,deprecated,default]
File "/tmp/tmp95rejhjv/HoTT/Algebra/Groups/Group.v", line 15, characters 0-54:
Warning: "coq-core" has been renamed to "rocq-runtime".
[coq-core-plugin,deprecated-since-9.0,deprecated,default]
File "/tmp/tmp95rejhjv/HoTT/Algebra/Groups/Group.v", line 30, characters 0-8:
Warning: Use of "Notation" keyword for abbreviations is deprecated, use
"Abbreviation" instead.
[notation-for-abbreviation,deprecated-since-9.2,deprecated,default]
File "/tmp/tmp95rejhjv/HoTT/Algebra/Groups/Group.v", line 54, characters 0-8:
Warning: Use of "Notation" keyword for abbreviations is deprecated, use
"Abbreviation" instead.
[notation-for-abbreviation,deprecated-since-9.2,deprecated,default]
File "/tmp/tmp95rejhjv/HoTT/Algebra/Groups/Group.v", line 55, characters 0-8:
Warning: Use of "Notation" keyword for abbreviations is deprecated, use
"Abbreviation" instead.
[notation-for-abbreviation,deprecated-since-9.2,deprecated,default]
File "/tmp/tmp95rejhjv/HoTT/Algebra/Groups/Group.v", line 111, characters 2-59:
Warning: Declaring a scope implicitly is deprecated; use in advance an
explicit "Declare Scope mc_mult_scope.".
[undeclared-scope,deprecated-since-8.10,deprecated,default]
File "/tmp/tmp95rejhjv/HoTT/Algebra/Groups/Group.v", line 134, characters 2-25:
Error: Use of "Context" outside sections behaves as "#[local] Parameter" or
"#[local] Axiom" followed by "Existing Instance" for typeclasses.
[context-outside-section,vernacular,default]


�[93mIntermediate code not saved.�[0m
Failed to do everything at once; trying one at a time.
Section removal unsuccessful.
No successful changes.

I will now attempt to remove empty sections

No empty sections to remove.

I will now attempt to remove the admit tactic header

No admit tactic header to remove

Now, I will attempt to strip repeated newlines and trailing spaces from this file...

No strippable newlines or spaces.

Completed second minimization pass.

If you have any comments on your experience of the minimizer, please share them in a reply (possibly tagging @JasonGross).
If you believe there's a bug in the bug minimizer, please report it on the bug minimizer issue tracker.

@ppedrot
Copy link
Member

ppedrot commented Oct 9, 2025

@coqbot ci minimize ci-argosy

@coqbot-app
Copy link
Contributor

coqbot-app bot commented Oct 9, 2025

I am now running minimization at commit 903d928 on requested target ci-argosy. I'll come back to you with the results once it's done.

@SkySkimmer
Copy link
Contributor

It's not going to work, the passing job doesn't make install so doesn't upload artifacts

@ppedrot
Copy link
Member

ppedrot commented Oct 9, 2025

Ah, given the error message I thought it was the connection going wonky...

@coqbot-app
Copy link
Contributor

coqbot-app bot commented Oct 9, 2025

Error: Could not minimize file in 3m 15s (from ci-argosy) (full log on GitHub Actions, cc @JasonGross)

build log (truncated to last 26KiB; full 3.1MiB file on GitHub Actions Artifacts under build.log)
coq-native/NStdlib_setoid_ring_BinList.cmi -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_BinList.cmi
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_BinList.cmxs -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_BinList.cmxs
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_Cring.cmi -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_Cring.cmi
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_Cring.cmxs -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_Cring.cmxs
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_Field.cmi -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_Field.cmi
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_Field.cmxs -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_Field.cmxs
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_Field_tac.cmi -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_Field_tac.cmi
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_Field_tac.cmxs -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_Field_tac.cmxs
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_Field_theory.cmi -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_Field_theory.cmi
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_Field_theory.cmxs -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_Field_theory.cmxs
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_InitialRing.cmi -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_InitialRing.cmi
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_InitialRing.cmxs -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_InitialRing.cmxs
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_Integral_domain.cmi -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_Integral_domain.cmi
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_Integral_domain.cmxs -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_Integral_domain.cmxs
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_NArithRing.cmi -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_NArithRing.cmi
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_NArithRing.cmxs -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_NArithRing.cmxs
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_Ncring.cmi -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_Ncring.cmi
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_Ncring.cmxs -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_Ncring.cmxs
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_Ncring_initial.cmi -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_Ncring_initial.cmi
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_Ncring_initial.cmxs -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_Ncring_initial.cmxs
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_Ncring_polynom.cmi -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_Ncring_polynom.cmi
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_Ncring_polynom.cmxs -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_Ncring_polynom.cmxs
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_Ncring_tac.cmi -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_Ncring_tac.cmi
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_Ncring_tac.cmxs -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_Ncring_tac.cmxs
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_RealField.cmi -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_RealField.cmi
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_RealField.cmxs -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_RealField.cmxs
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_Ring.cmi -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_Ring.cmi
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_Ring.cmxs -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_Ring.cmxs
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_Ring_base.cmi -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_Ring_base.cmi
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_Ring_base.cmxs -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_Ring_base.cmxs
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_Ring_polynom.cmi -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_Ring_polynom.cmi
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_Ring_polynom.cmxs -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_Ring_polynom.cmxs
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_Ring_tac.cmi -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_Ring_tac.cmi
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_Ring_tac.cmxs -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_Ring_tac.cmxs
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_Ring_theory.cmi -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_Ring_theory.cmi
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_Ring_theory.cmxs -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_Ring_theory.cmxs
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_Rings_Q.cmi -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_Rings_Q.cmi
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_Rings_Q.cmxs -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_Rings_Q.cmxs
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_Rings_R.cmi -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_Rings_R.cmi
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_Rings_R.cmxs -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_Rings_R.cmxs
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_Rings_Z.cmi -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_Rings_Z.cmi
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_Rings_Z.cmxs -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_Rings_Z.cmxs
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_ZArithRing.cmi -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_ZArithRing.cmi
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_ZArithRing.cmxs -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_ZArithRing.cmxs
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/Algebra_syntax.v -> ../../../../../../../default/theories/setoid_ring/Algebra_syntax.v
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/Algebra_syntax.vo -> ../../../../../../../default/theories/setoid_ring/Algebra_syntax.vo
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/ArithRing.v -> ../../../../../../../default/theories/setoid_ring/ArithRing.v
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/ArithRing.vo -> ../../../../../../../default/theories/setoid_ring/ArithRing.vo
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/BinList.v -> ../../../../../../../default/theories/setoid_ring/BinList.v
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/BinList.vo -> ../../../../../../../default/theories/setoid_ring/BinList.vo
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/Cring.v -> ../../../../../../../default/theories/setoid_ring/Cring.v
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/Cring.vo -> ../../../../../../../default/theories/setoid_ring/Cring.vo
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/Field.v -> ../../../../../../../default/theories/setoid_ring/Field.v
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/Field.vo -> ../../../../../../../default/theories/setoid_ring/Field.vo
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/Field_tac.v -> ../../../../../../../default/theories/setoid_ring/Field_tac.v
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/Field_tac.vo -> ../../../../../../../default/theories/setoid_ring/Field_tac.vo
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/Field_theory.v -> ../../../../../../../default/theories/setoid_ring/Field_theory.v
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/Field_theory.vo -> ../../../../../../../default/theories/setoid_ring/Field_theory.vo
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/InitialRing.v -> ../../../../../../../default/theories/setoid_ring/InitialRing.v
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/InitialRing.vo -> ../../../../../../../default/theories/setoid_ring/InitialRing.vo
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/Integral_domain.v -> ../../../../../../../default/theories/setoid_ring/Integral_domain.v
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/Integral_domain.vo -> ../../../../../../../default/theories/setoid_ring/Integral_domain.vo
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/NArithRing.v -> ../../../../../../../default/theories/setoid_ring/NArithRing.v
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/NArithRing.vo -> ../../../../../../../default/theories/setoid_ring/NArithRing.vo
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/Ncring.v -> ../../../../../../../default/theories/setoid_ring/Ncring.v
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/Ncring.vo -> ../../../../../../../default/theories/setoid_ring/Ncring.vo
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/Ncring_initial.v -> ../../../../../../../default/theories/setoid_ring/Ncring_initial.v
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/Ncring_initial.vo -> ../../../../../../../default/theories/setoid_ring/Ncring_initial.vo
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/Ncring_polynom.v -> ../../../../../../../default/theories/setoid_ring/Ncring_polynom.v
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/Ncring_polynom.vo -> ../../../../../../../default/theories/setoid_ring/Ncring_polynom.vo
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/Ncring_tac.v -> ../../../../../../../default/theories/setoid_ring/Ncring_tac.v
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/Ncring_tac.vo -> ../../../../../../../default/theories/setoid_ring/Ncring_tac.vo
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/RealField.v -> ../../../../../../../default/theories/setoid_ring/RealField.v
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/RealField.vo -> ../../../../../../../default/theories/setoid_ring/RealField.vo
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/Ring.v -> ../../../../../../../default/theories/setoid_ring/Ring.v
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/Ring.vo -> ../../../../../../../default/theories/setoid_ring/Ring.vo
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/Ring_base.v -> ../../../../../../../default/theories/setoid_ring/Ring_base.v
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/Ring_base.vo -> ../../../../../../../default/theories/setoid_ring/Ring_base.vo
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/Ring_polynom.v -> ../../../../../../../default/theories/setoid_ring/Ring_polynom.v
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/Ring_polynom.vo -> ../../../../../../../default/theories/setoid_ring/Ring_polynom.vo
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/Ring_tac.v -> ../../../../../../../default/theories/setoid_ring/Ring_tac.v
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/Ring_tac.vo -> ../../../../../../../default/theories/setoid_ring/Ring_tac.vo
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/Ring_theory.v -> ../../../../../../../default/theories/setoid_ring/Ring_theory.v
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/Ring_theory.vo -> ../../../../../../../default/theories/setoid_ring/Ring_theory.vo
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/Rings_Q.v -> ../../../../../../../default/theories/setoid_ring/Rings_Q.v
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/Rings_Q.vo -> ../../../../../../../default/theories/setoid_ring/Rings_Q.vo
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/Rings_R.v -> ../../../../../../../default/theories/setoid_ring/Rings_R.v
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/Rings_R.vo -> ../../../../../../../default/theories/setoid_ring/Rings_R.vo
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/Rings_Z.v -> ../../../../../../../default/theories/setoid_ring/Rings_Z.v
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/Rings_Z.vo -> ../../../../../../../default/theories/setoid_ring/Rings_Z.vo
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/ZArithRing.v -> ../../../../../../../default/theories/setoid_ring/ZArithRing.v
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/ZArithRing.vo -> ../../../../../../../default/theories/setoid_ring/ZArithRing.vo
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/ssr/.coq-native/NStdlib_ssr_ssrbool.cmi -> ../../../../../../../../default/theories/ssr/NStdlib_ssr_ssrbool.cmi
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/ssr/.coq-native/NStdlib_ssr_ssrbool.cmxs -> ../../../../../../../../default/theories/ssr/NStdlib_ssr_ssrbool.cmxs
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/ssr/.coq-native/NStdlib_ssr_ssrclasses.cmi -> ../../../../../../../../default/theories/ssr/NStdlib_ssr_ssrclasses.cmi
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/ssr/.coq-native/NStdlib_ssr_ssrclasses.cmxs -> ../../../../../../../../default/theories/ssr/NStdlib_ssr_ssrclasses.cmxs
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/ssr/.coq-native/NStdlib_ssr_ssreflect.cmi -> ../../../../../../../../default/theories/ssr/NStdlib_ssr_ssreflect.cmi
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/ssr/.coq-native/NStdlib_ssr_ssreflect.cmxs -> ../../../../../../../../default/theories/ssr/NStdlib_ssr_ssreflect.cmxs
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/ssr/.coq-native/NStdlib_ssr_ssrfun.cmi -> ../../../../../../../../default/theories/ssr/NStdlib_ssr_ssrfun.cmi
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/ssr/.coq-native/NStdlib_ssr_ssrfun.cmxs -> ../../../../../../../../default/theories/ssr/NStdlib_ssr_ssrfun.cmxs
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/ssr/.coq-native/NStdlib_ssr_ssrsetoid.cmi -> ../../../../../../../../default/theories/ssr/NStdlib_ssr_ssrsetoid.cmi
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/ssr/.coq-native/NStdlib_ssr_ssrsetoid.cmxs -> ../../../../../../../../default/theories/ssr/NStdlib_ssr_ssrsetoid.cmxs
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/ssr/.coq-native/NStdlib_ssr_ssrunder.cmi -> ../../../../../../../../default/theories/ssr/NStdlib_ssr_ssrunder.cmi
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/ssr/.coq-native/NStdlib_ssr_ssrunder.cmxs -> ../../../../../../../../default/theories/ssr/NStdlib_ssr_ssrunder.cmxs
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/ssr/ssrbool.v -> ../../../../../../../default/theories/ssr/ssrbool.v
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/ssr/ssrbool.vo -> ../../../../../../../default/theories/ssr/ssrbool.vo
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/ssr/ssrclasses.v -> ../../../../../../../default/theories/ssr/ssrclasses.v
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/ssr/ssrclasses.vo -> ../../../../../../../default/theories/ssr/ssrclasses.vo
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/ssr/ssreflect.v -> ../../../../../../../default/theories/ssr/ssreflect.v
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/ssr/ssreflect.vo -> ../../../../../../../default/theories/ssr/ssreflect.vo
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/ssr/ssrfun.v -> ../../../../../../../default/theories/ssr/ssrfun.v
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/ssr/ssrfun.vo -> ../../../../../../../default/theories/ssr/ssrfun.vo
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/ssr/ssrsetoid.v -> ../../../../../../../default/theories/ssr/ssrsetoid.v
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/ssr/ssrsetoid.vo -> ../../../../../../../default/theories/ssr/ssrsetoid.vo
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/ssr/ssrunder.v -> ../../../../../../../default/theories/ssr/ssrunder.v
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/ssr/ssrunder.vo -> ../../../../../../../default/theories/ssr/ssrunder.vo
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/ssrmatching/.coq-native/NStdlib_ssrmatching_ssrmatching.cmi -> ../../../../../../../../default/theories/ssrmatching/NStdlib_ssrmatching_ssrmatching.cmi
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/ssrmatching/.coq-native/NStdlib_ssrmatching_ssrmatching.cmxs -> ../../../../../../../../default/theories/ssrmatching/NStdlib_ssrmatching_ssrmatching.cmxs
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/ssrmatching/ssrmatching.v -> ../../../../../../../default/theories/ssrmatching/ssrmatching.v
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/ssrmatching/ssrmatching.vo -> ../../../../../../../default/theories/ssrmatching/ssrmatching.vo
  saved_build_ci/stdlib/_build/install/default/lib/rocq-stdlib/META -> ../../../../default/META.rocq-stdlib
  saved_build_ci/stdlib/_build/install/default/lib/rocq-stdlib/dune-package -> ../../../../default/rocq-stdlib.dune-package
  saved_build_ci/stdlib/_build/install/default/lib/rocq-stdlib/opam -> ../../../../default/rocq-stdlib.opam
++ popd
/github/workspace/builds/coq /github/workspace
++ printf '::endgroup::\n'
::endgroup::
++ printf '::group::df -h\n'
::group::df -h
++ df -h
Filesystem      Size  Used Avail Use% Mounted on
overlay          72G   56G   16G  78% /
tmpfs            64M     0   64M   0% /dev
shm              64M     0   64M   0% /dev/shm
/dev/root        72G   56G   16G  78% /usr/sbin/docker-init
tmpfs           7.9G     0  7.9G   0% /proc/acpi
tmpfs           7.9G     0  7.9G   0% /proc/scsi
tmpfs           7.9G     0  7.9G   0% /sys/firmware
++ printf '::endgroup::\n'
::endgroup::
++ printf '::group::download passing artifacts @ %s %s\n' 3853febccfbc655239396d2d204fd431e2002232 'https://gitlab.inria.fr/coq/coq/-/jobs/6326441/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6326422/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6326457/artifacts/download'
::group::download passing artifacts @ 3853febccfbc655239396d2d204fd431e2002232 https://gitlab.inria.fr/coq/coq/-/jobs/6326441/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6326422/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6326457/artifacts/download
++ printf '::warning::download passing artifacts @ %s %s\n' 3853febccfbc655239396d2d204fd431e2002232 'https://gitlab.inria.fr/coq/coq/-/jobs/6326441/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6326422/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6326457/artifacts/download'
::warning::download passing artifacts @ 3853febccfbc655239396d2d204fd431e2002232 https://gitlab.inria.fr/coq/coq/-/jobs/6326441/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6326422/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6326457/artifacts/download
++ pushd coq-passing
/github/workspace/builds/coq/coq-passing /github/workspace/builds/coq /github/workspace
++ mkdir -p _build_ci
++ ln -s _build_ci saved_build_ci
++ git checkout 3853febccfbc655239396d2d204fd431e2002232
Note: switching to '3853febccfbc655239396d2d204fd431e2002232'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:

  git switch -c <new-branch-name>

Or undo this operation with:

  git switch -

Turn off this advice by setting config variable advice.detachedHead to false

HEAD is now at 3853febccf Merge PR #20947: Remove references to opam packages not in this repo.
++ for i in ${PASSING_ARTIFACT_URLS}
+++ printf %s https://gitlab.inria.fr/coq/coq/-/jobs/6326441/artifacts/download
+++ sha1sum
+++ cut '-d ' -f1
++ hash=bc8c03af4516326327e9010a010f8cdb9dc333f3
++ wget https://gitlab.inria.fr/coq/coq/-/jobs/6326441/artifacts/download -O artifact-bc8c03af4516326327e9010a010f8cdb9dc333f3.zip
--2025-10-09 14:01:51--  https://gitlab.inria.fr/coq/coq/-/jobs/6326441/artifacts/download
Resolving gitlab.inria.fr (gitlab.inria.fr)... 128.93.193.23
Connecting to gitlab.inria.fr (gitlab.inria.fr)|128.93.193.23|:443... connected.
HTTP request sent, awaiting response... 404 Not Found
2025-10-09 14:01:52 ERROR 404: Not Found.
minimizer log (truncated to last 26KiB; full 3.1MiB file on GitHub Actions Artifacts under bug.log)
coq-native/NStdlib_setoid_ring_BinList.cmi -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_BinList.cmi
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_BinList.cmxs -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_BinList.cmxs
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_Cring.cmi -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_Cring.cmi
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_Cring.cmxs -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_Cring.cmxs
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_Field.cmi -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_Field.cmi
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_Field.cmxs -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_Field.cmxs
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_Field_tac.cmi -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_Field_tac.cmi
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_Field_tac.cmxs -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_Field_tac.cmxs
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_Field_theory.cmi -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_Field_theory.cmi
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_Field_theory.cmxs -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_Field_theory.cmxs
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_InitialRing.cmi -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_InitialRing.cmi
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_InitialRing.cmxs -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_InitialRing.cmxs
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_Integral_domain.cmi -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_Integral_domain.cmi
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_Integral_domain.cmxs -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_Integral_domain.cmxs
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_NArithRing.cmi -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_NArithRing.cmi
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_NArithRing.cmxs -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_NArithRing.cmxs
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_Ncring.cmi -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_Ncring.cmi
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_Ncring.cmxs -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_Ncring.cmxs
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_Ncring_initial.cmi -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_Ncring_initial.cmi
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_Ncring_initial.cmxs -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_Ncring_initial.cmxs
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_Ncring_polynom.cmi -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_Ncring_polynom.cmi
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_Ncring_polynom.cmxs -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_Ncring_polynom.cmxs
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_Ncring_tac.cmi -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_Ncring_tac.cmi
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_Ncring_tac.cmxs -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_Ncring_tac.cmxs
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_RealField.cmi -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_RealField.cmi
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_RealField.cmxs -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_RealField.cmxs
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_Ring.cmi -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_Ring.cmi
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_Ring.cmxs -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_Ring.cmxs
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_Ring_base.cmi -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_Ring_base.cmi
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_Ring_base.cmxs -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_Ring_base.cmxs
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_Ring_polynom.cmi -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_Ring_polynom.cmi
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_Ring_polynom.cmxs -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_Ring_polynom.cmxs
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_Ring_tac.cmi -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_Ring_tac.cmi
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_Ring_tac.cmxs -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_Ring_tac.cmxs
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_Ring_theory.cmi -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_Ring_theory.cmi
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_Ring_theory.cmxs -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_Ring_theory.cmxs
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_Rings_Q.cmi -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_Rings_Q.cmi
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_Rings_Q.cmxs -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_Rings_Q.cmxs
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_Rings_R.cmi -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_Rings_R.cmi
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_Rings_R.cmxs -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_Rings_R.cmxs
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_Rings_Z.cmi -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_Rings_Z.cmi
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_Rings_Z.cmxs -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_Rings_Z.cmxs
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_ZArithRing.cmi -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_ZArithRing.cmi
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/.coq-native/NStdlib_setoid_ring_ZArithRing.cmxs -> ../../../../../../../../default/theories/setoid_ring/NStdlib_setoid_ring_ZArithRing.cmxs
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/Algebra_syntax.v -> ../../../../../../../default/theories/setoid_ring/Algebra_syntax.v
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/Algebra_syntax.vo -> ../../../../../../../default/theories/setoid_ring/Algebra_syntax.vo
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/ArithRing.v -> ../../../../../../../default/theories/setoid_ring/ArithRing.v
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/ArithRing.vo -> ../../../../../../../default/theories/setoid_ring/ArithRing.vo
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/BinList.v -> ../../../../../../../default/theories/setoid_ring/BinList.v
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/BinList.vo -> ../../../../../../../default/theories/setoid_ring/BinList.vo
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/Cring.v -> ../../../../../../../default/theories/setoid_ring/Cring.v
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/Cring.vo -> ../../../../../../../default/theories/setoid_ring/Cring.vo
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/Field.v -> ../../../../../../../default/theories/setoid_ring/Field.v
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/Field.vo -> ../../../../../../../default/theories/setoid_ring/Field.vo
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/Field_tac.v -> ../../../../../../../default/theories/setoid_ring/Field_tac.v
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/Field_tac.vo -> ../../../../../../../default/theories/setoid_ring/Field_tac.vo
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/Field_theory.v -> ../../../../../../../default/theories/setoid_ring/Field_theory.v
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/Field_theory.vo -> ../../../../../../../default/theories/setoid_ring/Field_theory.vo
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/InitialRing.v -> ../../../../../../../default/theories/setoid_ring/InitialRing.v
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/InitialRing.vo -> ../../../../../../../default/theories/setoid_ring/InitialRing.vo
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/Integral_domain.v -> ../../../../../../../default/theories/setoid_ring/Integral_domain.v
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/Integral_domain.vo -> ../../../../../../../default/theories/setoid_ring/Integral_domain.vo
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/NArithRing.v -> ../../../../../../../default/theories/setoid_ring/NArithRing.v
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/NArithRing.vo -> ../../../../../../../default/theories/setoid_ring/NArithRing.vo
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/Ncring.v -> ../../../../../../../default/theories/setoid_ring/Ncring.v
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/Ncring.vo -> ../../../../../../../default/theories/setoid_ring/Ncring.vo
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/Ncring_initial.v -> ../../../../../../../default/theories/setoid_ring/Ncring_initial.v
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/Ncring_initial.vo -> ../../../../../../../default/theories/setoid_ring/Ncring_initial.vo
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/Ncring_polynom.v -> ../../../../../../../default/theories/setoid_ring/Ncring_polynom.v
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/Ncring_polynom.vo -> ../../../../../../../default/theories/setoid_ring/Ncring_polynom.vo
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/Ncring_tac.v -> ../../../../../../../default/theories/setoid_ring/Ncring_tac.v
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/Ncring_tac.vo -> ../../../../../../../default/theories/setoid_ring/Ncring_tac.vo
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/RealField.v -> ../../../../../../../default/theories/setoid_ring/RealField.v
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/RealField.vo -> ../../../../../../../default/theories/setoid_ring/RealField.vo
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/Ring.v -> ../../../../../../../default/theories/setoid_ring/Ring.v
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/Ring.vo -> ../../../../../../../default/theories/setoid_ring/Ring.vo
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/Ring_base.v -> ../../../../../../../default/theories/setoid_ring/Ring_base.v
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/Ring_base.vo -> ../../../../../../../default/theories/setoid_ring/Ring_base.vo
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/Ring_polynom.v -> ../../../../../../../default/theories/setoid_ring/Ring_polynom.v
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/Ring_polynom.vo -> ../../../../../../../default/theories/setoid_ring/Ring_polynom.vo
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/Ring_tac.v -> ../../../../../../../default/theories/setoid_ring/Ring_tac.v
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/Ring_tac.vo -> ../../../../../../../default/theories/setoid_ring/Ring_tac.vo
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/Ring_theory.v -> ../../../../../../../default/theories/setoid_ring/Ring_theory.v
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/Ring_theory.vo -> ../../../../../../../default/theories/setoid_ring/Ring_theory.vo
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/Rings_Q.v -> ../../../../../../../default/theories/setoid_ring/Rings_Q.v
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/Rings_Q.vo -> ../../../../../../../default/theories/setoid_ring/Rings_Q.vo
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/Rings_R.v -> ../../../../../../../default/theories/setoid_ring/Rings_R.v
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/Rings_R.vo -> ../../../../../../../default/theories/setoid_ring/Rings_R.vo
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/Rings_Z.v -> ../../../../../../../default/theories/setoid_ring/Rings_Z.v
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/Rings_Z.vo -> ../../../../../../../default/theories/setoid_ring/Rings_Z.vo
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/ZArithRing.v -> ../../../../../../../default/theories/setoid_ring/ZArithRing.v
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/setoid_ring/ZArithRing.vo -> ../../../../../../../default/theories/setoid_ring/ZArithRing.vo
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/ssr/.coq-native/NStdlib_ssr_ssrbool.cmi -> ../../../../../../../../default/theories/ssr/NStdlib_ssr_ssrbool.cmi
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/ssr/.coq-native/NStdlib_ssr_ssrbool.cmxs -> ../../../../../../../../default/theories/ssr/NStdlib_ssr_ssrbool.cmxs
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/ssr/.coq-native/NStdlib_ssr_ssrclasses.cmi -> ../../../../../../../../default/theories/ssr/NStdlib_ssr_ssrclasses.cmi
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/ssr/.coq-native/NStdlib_ssr_ssrclasses.cmxs -> ../../../../../../../../default/theories/ssr/NStdlib_ssr_ssrclasses.cmxs
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/ssr/.coq-native/NStdlib_ssr_ssreflect.cmi -> ../../../../../../../../default/theories/ssr/NStdlib_ssr_ssreflect.cmi
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/ssr/.coq-native/NStdlib_ssr_ssreflect.cmxs -> ../../../../../../../../default/theories/ssr/NStdlib_ssr_ssreflect.cmxs
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/ssr/.coq-native/NStdlib_ssr_ssrfun.cmi -> ../../../../../../../../default/theories/ssr/NStdlib_ssr_ssrfun.cmi
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/ssr/.coq-native/NStdlib_ssr_ssrfun.cmxs -> ../../../../../../../../default/theories/ssr/NStdlib_ssr_ssrfun.cmxs
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/ssr/.coq-native/NStdlib_ssr_ssrsetoid.cmi -> ../../../../../../../../default/theories/ssr/NStdlib_ssr_ssrsetoid.cmi
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/ssr/.coq-native/NStdlib_ssr_ssrsetoid.cmxs -> ../../../../../../../../default/theories/ssr/NStdlib_ssr_ssrsetoid.cmxs
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/ssr/.coq-native/NStdlib_ssr_ssrunder.cmi -> ../../../../../../../../default/theories/ssr/NStdlib_ssr_ssrunder.cmi
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/ssr/.coq-native/NStdlib_ssr_ssrunder.cmxs -> ../../../../../../../../default/theories/ssr/NStdlib_ssr_ssrunder.cmxs
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/ssr/ssrbool.v -> ../../../../../../../default/theories/ssr/ssrbool.v
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/ssr/ssrbool.vo -> ../../../../../../../default/theories/ssr/ssrbool.vo
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/ssr/ssrclasses.v -> ../../../../../../../default/theories/ssr/ssrclasses.v
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/ssr/ssrclasses.vo -> ../../../../../../../default/theories/ssr/ssrclasses.vo
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/ssr/ssreflect.v -> ../../../../../../../default/theories/ssr/ssreflect.v
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/ssr/ssreflect.vo -> ../../../../../../../default/theories/ssr/ssreflect.vo
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/ssr/ssrfun.v -> ../../../../../../../default/theories/ssr/ssrfun.v
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/ssr/ssrfun.vo -> ../../../../../../../default/theories/ssr/ssrfun.vo
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/ssr/ssrsetoid.v -> ../../../../../../../default/theories/ssr/ssrsetoid.v
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/ssr/ssrsetoid.vo -> ../../../../../../../default/theories/ssr/ssrsetoid.vo
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/ssr/ssrunder.v -> ../../../../../../../default/theories/ssr/ssrunder.v
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/ssr/ssrunder.vo -> ../../../../../../../default/theories/ssr/ssrunder.vo
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/ssrmatching/.coq-native/NStdlib_ssrmatching_ssrmatching.cmi -> ../../../../../../../../default/theories/ssrmatching/NStdlib_ssrmatching_ssrmatching.cmi
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/ssrmatching/.coq-native/NStdlib_ssrmatching_ssrmatching.cmxs -> ../../../../../../../../default/theories/ssrmatching/NStdlib_ssrmatching_ssrmatching.cmxs
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/ssrmatching/ssrmatching.v -> ../../../../../../../default/theories/ssrmatching/ssrmatching.v
  saved_build_ci/stdlib/_build/install/default/lib/coq/user-contrib/Stdlib/ssrmatching/ssrmatching.vo -> ../../../../../../../default/theories/ssrmatching/ssrmatching.vo
  saved_build_ci/stdlib/_build/install/default/lib/rocq-stdlib/META -> ../../../../default/META.rocq-stdlib
  saved_build_ci/stdlib/_build/install/default/lib/rocq-stdlib/dune-package -> ../../../../default/rocq-stdlib.dune-package
  saved_build_ci/stdlib/_build/install/default/lib/rocq-stdlib/opam -> ../../../../default/rocq-stdlib.opam
++ popd
/github/workspace/builds/coq /github/workspace
++ printf '::endgroup::\n'
::endgroup::
++ printf '::group::df -h\n'
::group::df -h
++ df -h
Filesystem      Size  Used Avail Use% Mounted on
overlay          72G   56G   16G  78% /
tmpfs            64M     0   64M   0% /dev
shm              64M     0   64M   0% /dev/shm
/dev/root        72G   56G   16G  78% /usr/sbin/docker-init
tmpfs           7.9G     0  7.9G   0% /proc/acpi
tmpfs           7.9G     0  7.9G   0% /proc/scsi
tmpfs           7.9G     0  7.9G   0% /sys/firmware
++ printf '::endgroup::\n'
::endgroup::
++ printf '::group::download passing artifacts @ %s %s\n' 3853febccfbc655239396d2d204fd431e2002232 'https://gitlab.inria.fr/coq/coq/-/jobs/6326441/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6326422/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6326457/artifacts/download'
::group::download passing artifacts @ 3853febccfbc655239396d2d204fd431e2002232 https://gitlab.inria.fr/coq/coq/-/jobs/6326441/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6326422/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6326457/artifacts/download
++ printf '::warning::download passing artifacts @ %s %s\n' 3853febccfbc655239396d2d204fd431e2002232 'https://gitlab.inria.fr/coq/coq/-/jobs/6326441/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6326422/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6326457/artifacts/download'
::warning::download passing artifacts @ 3853febccfbc655239396d2d204fd431e2002232 https://gitlab.inria.fr/coq/coq/-/jobs/6326441/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6326422/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6326457/artifacts/download
++ pushd coq-passing
/github/workspace/builds/coq/coq-passing /github/workspace/builds/coq /github/workspace
++ mkdir -p _build_ci
++ ln -s _build_ci saved_build_ci
++ git checkout 3853febccfbc655239396d2d204fd431e2002232
Note: switching to '3853febccfbc655239396d2d204fd431e2002232'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:

  git switch -c <new-branch-name>

Or undo this operation with:

  git switch -

Turn off this advice by setting config variable advice.detachedHead to false

HEAD is now at 3853febccf Merge PR #20947: Remove references to opam packages not in this repo.
++ for i in ${PASSING_ARTIFACT_URLS}
+++ printf %s https://gitlab.inria.fr/coq/coq/-/jobs/6326441/artifacts/download
+++ sha1sum
+++ cut '-d ' -f1
++ hash=bc8c03af4516326327e9010a010f8cdb9dc333f3
++ wget https://gitlab.inria.fr/coq/coq/-/jobs/6326441/artifacts/download -O artifact-bc8c03af4516326327e9010a010f8cdb9dc333f3.zip
--2025-10-09 14:01:51--  https://gitlab.inria.fr/coq/coq/-/jobs/6326441/artifacts/download
Resolving gitlab.inria.fr (gitlab.inria.fr)... 128.93.193.23
Connecting to gitlab.inria.fr (gitlab.inria.fr)|128.93.193.23|:443... connected.
HTTP request sent, awaiting response... 404 Not Found
2025-10-09 14:01:52 ERROR 404: Not Found.

If you have any comments on your experience of the minimizer, please share them in a reply (possibly tagging @JasonGross).
If you believe there's a bug in the bug minimizer, please report it on the bug minimizer issue tracker.

@ppedrot
Copy link
Member

ppedrot commented Oct 9, 2025

Can't we just fix argosy to make install?

@SkySkimmer
Copy link
Contributor

It has some weird build system with no install target

@ppedrot
Copy link
Member

ppedrot commented Oct 9, 2025

Here is a reproducible example hand-extracted from argosy:

Definition relation := fun A B T : Type => A -> B -> T -> Prop.

Axiom addr : Type.
Axiom block : Type.
Axiom D_State : Type.
Axiom State : Type.
Axiom Op : Type -> Type.
Axiom proc : (Type -> Type) -> Type -> Type.

Axiom read : addr -> proc Op block.
Axiom Recover : proc Op unit.
Axiom rd_abstraction : D_State -> State -> unit -> Prop.

Axiom Specification : Type -> Type -> Type -> Type.

Axiom refine_spec :
forall [AState CState : Type],
relation AState CState unit ->
forall [T R : Type], Specification T R AState -> AState -> Specification T R CState.

Axiom proc_hspec :
forall {Op : Type -> Type} {State : Type},
forall [T : Type], proc Op T -> Specification T unit State -> Prop.

Axiom proc_rspec :
forall {Op : Type -> Type} {State : Type},
forall [T R : Type], proc Op T -> proc Op R -> Specification T R State -> Prop.

Axiom proc_hspec_to_rspec :
forall {Op : Type -> Type} {State : Type} [A' T R : Type]
[rec_hspec : A' -> Specification R unit State] (p_rspec : Specification T R State) 
[p : proc Op T] [rec : proc Op R],
(forall a : A', @proc_hspec Op State R rec (rec_hspec a)) ->
@proc_rspec Op State T R p rec p_rspec.

Axiom read_spec : addr -> Specification block unit D_State.

Theorem read_rec_ok : forall (a : addr) (d : D_State),
  @proc_rspec Op State block unit (read a) Recover
    (@refine_spec D_State State rd_abstraction block unit (read_spec a) d).
Proof.
intros a d.
eapply proc_hspec_to_rspec.
solve[eauto]. (* works on master, fails on this PR *)

We can probably simplify it further.

@ppedrot
Copy link
Member

ppedrot commented Oct 9, 2025

Even shorter:

Axiom Specification : Type.

Axiom proc_hspec : Specification -> Prop.

Axiom proc_rspec : Prop.

Axiom proc_hspec_to_rspec : forall [A' : Type] [rec_hspec : A' -> Specification],
  (forall a : A', @proc_hspec (rec_hspec a)) -> proc_rspec.

Theorem read_rec_ok : proc_rspec.
Proof.
eapply proc_hspec_to_rspec.
solve[eauto].

@coqbot-app
Copy link
Contributor

coqbot-app bot commented Oct 9, 2025

Minimization interrupted by timeout, being automatically continued. Partially Minimized File /home/runner/work/run-coq-bug-minimizer/run-coq-bug-minimizer/builds/coq/coq-failing/_build_ci/iris/iris/base_logic/lib/cancelable_invariants.v in 5h 15m 8s (from ci-iris) (interrupted by timeout, being automatically continued) (full log on GitHub Actions - verbose log)
⭐ ⏱️ Partially Minimized Coq File (timeout)
(* -*- mode: coq; coq-prog-args: ("-emacs" "-q" "-w" "-notation-overridden" "-w" "-redundant-canonical-projection" "-w" "-notation-incompatible-prefix" "-w" "-deprecated-from-Coq" "-w" "-deprecated-dirpath-Coq" "-w" "-deprecated-native-compiler-option" "-native-compiler" "ondemand" "-coqlib" "/github/workspace/builds/coq/coq-failing/_install_ci/lib/coq//" "-Q" "/github/workspace/cwd" "Top" "-Q" "/github/workspace/builds/coq/coq-failing/_build_ci/iris/iris" "iris" "-Q" "/github/workspace/builds/coq/coq-failing/_build_ci/iris/iris_heap_lang" "iris.heap_lang" "-Q" "/github/workspace/builds/coq/coq-failing/_build_ci/iris/iris_unstable" "iris.unstable" "-Q" "/github/workspace/builds/coq/coq-failing/_build_ci/iris/iris_deprecated" "iris.deprecated" "-Q" "/github/workspace/builds/coq/coq-failing/_install_ci/lib/coq///user-contrib/Autosubst" "Autosubst" "-Q" "/github/workspace/builds/coq/coq-failing/_install_ci/lib/coq///user-contrib/Ltac2" "Ltac2" "-Q" "/github/workspace/builds/coq/coq-failing/_install_ci/lib/coq///user-contrib/Stdlib" "Stdlib" "-Q" "/github/workspace/builds/coq/coq-failing/_install_ci/lib/coq///user-contrib/stdpp" "stdpp" "-top" "iris.base_logic.lib.cancelable_invariants") -*- *)
(* File reduced by coq-bug-minimizer from original input, then from 204 lines to 32 lines, then from 45 lines to 651 lines, then from 657 lines to 31 lines, then from 44 lines to 706 lines, then from 712 lines to 58 lines, then from 71 lines to 654 lines, then from 660 lines to 77 lines, then from 90 lines to 482 lines, then from 488 lines to 104 lines, then from 117 lines to 987 lines, then from 990 lines to 132 lines, then from 145 lines to 702 lines, then from 708 lines to 148 lines, then from 161 lines to 1079 lines, then from 1085 lines to 175 lines, then from 188 lines to 735 lines, then from 736 lines to 195 lines, then from 208 lines to 591 lines, then from 597 lines to 197 lines, then from 210 lines to 923 lines, then from 929 lines to 201 lines, then from 214 lines to 587 lines, then from 593 lines to 206 lines, then from 219 lines to 899 lines, then from 905 lines to 219 lines, then from 232 lines to 1231 lines, then from 1237 lines to 236 lines, then from 249 lines to 1215 lines, then from 1221 lines to 248 lines, then from 261 lines to 791 lines, then from 797 lines to 261 lines, then from 274 lines to 586 lines, then from 592 lines to 539 lines *)
(* coqc version 9.2+alpha compiled with OCaml 4.14.2
   coqtop version 9.2+alpha
   Expected coqc runtime on this file: 0.922 sec *)










Require iris.base_logic.bi.
Require iris.bi.lib.cmra.
Require iris.proofmode.proofmode.
Require iris.proofmode.class_instances_updates.
Require iris.proofmode.class_instances.
Require iris.proofmode.ltac_tactics.
Require iris.proofmode.notation.
Require iris.proofmode.coq_tactics.
Require iris.proofmode.class_instances_later.
Require iris.proofmode.class_instances_frame.
Require iris.proofmode.class_instances_internal_eq.
Require iris.proofmode.class_instances_plainly.
Require iris.proofmode.class_instances_embedding.
Require iris.proofmode.modality_instances.
Require iris.proofmode.reduction.
Require iris.proofmode.classes.
Require iris.proofmode.environments.
Require iris.proofmode.intro_patterns.
Require iris.proofmode.spec_patterns.
Require iris.proofmode.sel_patterns.
Require iris.proofmode.tokens.
Require iris.proofmode.modalities.
Require iris.proofmode.class_instances_make.
Require iris.bi.telescopes.
Require iris.proofmode.classes_make.
Require iris.proofmode.base.
Require iris.bi.bi.
Require iris.bi.embedding.
Require iris.bi.updates.
Require iris.bi.plainly.
Require iris.bi.internal_eq.
Require iris.bi.big_op.
Require iris.algebra.gmap.
Require iris.algebra.gset.
Require iris.algebra.list.
Require iris.algebra.big_op.
Require stdpp.gmultiset.
Require iris.bi.derived_laws_later.
Require iris.bi.derived_laws.
Require iris.bi.extensions.
Require iris.bi.derived_connectives.
Require iris.base_logic.upred.
Require stdpp.namespaces.
Require iris.bi.interface.
Require iris.algebra.csum.
Require stdpp.coPset.
Require stdpp.gmap.
Require iris.algebra.updates.
Require iris.algebra.stepindex_finite.
Require iris.algebra.proofmode_classes.
Require iris.algebra.local_updates.
Require iris.algebra.excl.
Require iris.algebra.agree.
Require iris.algebra.cmra.
Require iris.algebra.monoid.
Require iris.algebra.ofe.
Require iris.algebra.stepindex.
Require iris.prelude.prelude.
Require stdpp.infinite.
Require stdpp.ssreflect.
Require stdpp.pretty.
Require stdpp.pmap.
Require stdpp.prelude.
Require stdpp.mapset.
Require stdpp.fin_map_dom.
Require stdpp.fin_maps.
Require stdpp.fin_sets.
Require stdpp.relations.
Require stdpp.listset.
Require stdpp.sets.
Require stdpp.strings.
Require stdpp.finite.
Require stdpp.vector.
Require stdpp.countable.
Require stdpp.list.
Require stdpp.list_numbers.
Require stdpp.list_tactics.
Require stdpp.list_misc.
Require stdpp.list_monad.
Require stdpp.list_relations.
Require stdpp.nat_cancel.
Require stdpp.list_basics.
Require stdpp.lexico.
Require stdpp.numbers.
Require Stdlib.ZArith.ZArith.
Require stdpp.fin.
Require stdpp.telescopes.
Require stdpp.orders.
Require stdpp.option.
Require stdpp.hlist.
Require stdpp.functions.
Require stdpp.tactics.
Require iris.proofmode.string_ident.
Require Stdlib.ZArith.Znumtheory.
Require Stdlib.ZArith.ZNsatz.
Require Stdlib.ZArith.Zbitwise.
Require Stdlib.btauto.Btauto.
Require Stdlib.micromega.ZArith_hints.
Require Stdlib.btauto.Reflect.
Require Stdlib.btauto.Algebra.
Require Stdlib.ZArith.Zcong.
Require Stdlib.ZArith.ZModOffset.
Require Stdlib.ZArith.Zdivisibility.
Require Stdlib.ZArith.Zdiv_facts.
Require Stdlib.micromega.Lia.
Require Stdlib.QArith.QArith.
Require Stdlib.micromega.ZMicromega.
Require Stdlib.QArith.QNsatz.
Require Stdlib.ZArith.Zdiv.
Require Stdlib.ZArith.Zpower.
Require Stdlib.ZArith.Zcomplements.
Require Stdlib.QArith.Qring.
Require Stdlib.QArith.Qfield.
Require Stdlib.QArith.Qcanon.
Require Stdlib.omega.PreOmega.
Require Stdlib.QArith.Qreduction.
Require Stdlib.micromega.Zify.
Require Stdlib.Strings.String.
Require Stdlib.QArith.QArith_base.
Require Stdlib.micromega.ZifyInst.
Require Stdlib.ZArith.ZArith_base.
Require Stdlib.Arith.Arith.
Require Stdlib.micromega.ZCoeff.
Require Stdlib.ZArith.Zhints.
Require Stdlib.NArith.NArith.
Require Stdlib.nsatz.NsatzTactic.
Require Stdlib.micromega.RingMicromega.
Require Stdlib.ZArith.Zabs.
Require Stdlib.setoid_ring.Integral_domain.
Require Stdlib.setoid_ring.Field.
Require Stdlib.ZArith.Zbool.
Require Stdlib.setoid_ring.ZArithRing.
Require Stdlib.setoid_ring.Field_tac.
Require Stdlib.setoid_ring.Cring.
Require Stdlib.setoid_ring.ArithRing.
Require Stdlib.ZArith.Wf_Z.
Require Stdlib.setoid_ring.NArithRing.
Require Stdlib.setoid_ring.Field_theory.
Require Stdlib.micromega.OrderedRing.
Require Stdlib.ZArith.ZArith_dec.
Require Stdlib.setoid_ring.Ring.
Require Stdlib.setoid_ring.Ncring_tac.
Require Stdlib.setoid_ring.Ring_base.
Require Stdlib.setoid_ring.Ncring_initial.
Require Stdlib.omega.OmegaLemmas.
Require Stdlib.ZArith.auxiliary.
Require Stdlib.ZArith.Zmisc.
Require Stdlib.ZArith.Zminmax.
Require Stdlib.ZArith.Zmin.
Require Stdlib.ZArith.Zmax.
Require Stdlib.setoid_ring.Ring_tac.
Require Stdlib.setoid_ring.Ncring_polynom.
Require Stdlib.ZArith.Zorder.
Require Stdlib.ZArith.Znat.
Require Stdlib.setoid_ring.InitialRing.
Require Stdlib.setoid_ring.Ring_polynom.
Require Stdlib.micromega.EnvRing.
Require Stdlib.micromega.VarMap.
Require Stdlib.micromega.Env.
Require Stdlib.setoid_ring.Ncring.
Require Stdlib.ZArith.Zpow_def.
Require Stdlib.ZArith.Zeven.
Require Stdlib.ZArith.Zcompare.
Require Stdlib.ZArith.BinInt.
Require Stdlib.micromega.DeclConstantZ.
Require Stdlib.Strings.Ascii.
Require stdpp.decidable.
Require iris.proofmode.ident_name.
Require Stdlib.Strings.Byte.
Require Stdlib.NArith.NArith_base.
Require stdpp.well_founded.
Require stdpp.proof_irrel.
Require Stdlib.Vectors.Vector.
Require stdpp.base.
Require Stdlib.Vectors.VectorEq.
Require Stdlib.ZArith.BinIntDef.
Require Stdlib.Vectors.VectorSpec.
Require Stdlib.NArith.Nnat.
Require Stdlib.setoid_ring.Ring_theory.
Require Stdlib.NArith.Nsqrt_def.
Require Stdlib.NArith.Ngcd_def.
Require Stdlib.NArith.Ndiv_def.
Require Stdlib.setoid_ring.BinList.
Require Stdlib.NArith.BinNat.
Require Stdlib.Vectors.VectorDef.
Require Stdlib.PArith.PArith.
Require Stdlib.NArith.BinNatDef.
Require Stdlib.Vectors.Fin.
Require Stdlib.PArith.Pnat.
Require Stdlib.PArith.POrderedType.
Require Stdlib.Arith.Arith_base.
Require Stdlib.PArith.BinPos.
Require Stdlib.Sorting.Permutation.
Require Stdlib.Lists.ListTactics.
Require Stdlib.micromega.Tauto.
Require Stdlib.Lists.Finite.
Require Stdlib.micromega.Refl.
Require Stdlib.Lists.ListDec.
Require Stdlib.Lists.List.
Require Stdlib.Arith.Peano_dec.
Require Stdlib.Arith.Wf_nat.
Require Stdlib.Arith.Factorial.
Require Stdlib.Arith.EqNat.
Require Stdlib.Arith.Compare_dec.
Require Stdlib.Arith.Between.
Require Stdlib.Arith.PeanoNat.
Require Stdlib.Numbers.Natural.Abstract.NProperties.
Require Stdlib.Numbers.Integer.Abstract.ZProperties.
Require Stdlib.Numbers.Natural.Abstract.NLcm0.
Require Stdlib.Numbers.Natural.Abstract.NBits.
Require Stdlib.Numbers.Integer.Abstract.ZLcm.
Require Stdlib.Numbers.Integer.Abstract.ZBits.
Require Stdlib.Numbers.Natural.Abstract.NLog.
Require Stdlib.Numbers.Natural.Abstract.NLcm.
Require Stdlib.Numbers.Integer.Abstract.ZPow.
Require Stdlib.Numbers.Natural.Abstract.NPow.
Require Stdlib.Numbers.Natural.Abstract.NDiv0.
Require Stdlib.Numbers.Integer.Abstract.ZGcd.
Require Stdlib.Numbers.Integer.Abstract.ZDivTrunc.
Require Stdlib.Numbers.Integer.Abstract.ZDivFloor.
Require Stdlib.Numbers.Natural.Abstract.NSqrt.
Require Stdlib.Numbers.Natural.Abstract.NParity.
Require Stdlib.Numbers.Natural.Abstract.NMaxMin.
Require Stdlib.Numbers.Natural.Abstract.NGcd.
Require Stdlib.Numbers.Natural.Abstract.NDiv.
Require Stdlib.Numbers.Integer.Abstract.ZSgnAbs.
Require Stdlib.Numbers.Integer.Abstract.ZParity.
Require Stdlib.Numbers.Integer.Abstract.ZMaxMin.
Require Stdlib.Numbers.Natural.Abstract.NSub.
Require Stdlib.Numbers.Integer.Abstract.ZMulOrder.
Require Stdlib.Numbers.Natural.Abstract.NMulOrder.
Require Stdlib.Numbers.Integer.Abstract.ZAddOrder.
Require Stdlib.Numbers.Natural.Abstract.NAddOrder.
Require Stdlib.Numbers.Integer.Abstract.ZLt.
Require Stdlib.Numbers.Natural.Abstract.NOrder.
Require Stdlib.Numbers.Integer.Abstract.ZMul.
Require Stdlib.Numbers.Natural.Abstract.NAdd.
Require Stdlib.Numbers.Integer.Abstract.ZAdd.
Require Stdlib.Numbers.Natural.Abstract.NBase.
Require Stdlib.Numbers.Integer.Abstract.ZBase.
Require Stdlib.Numbers.Natural.Abstract.NAxioms.
Require Stdlib.Numbers.Integer.Abstract.ZAxioms.
Require Stdlib.Numbers.NatInt.NZBits.
Require Ltac2.Ltac2.
Require Stdlib.Numbers.NatInt.NZLog.
Module Export frac.

Export iris.algebra.cmra.


Notation frac := Qp (only parsing).
  Canonical Structure fracO := leibnizO frac.
Local Instance frac_valid_instance : Valid frac. exact (λ x, (x ≤ 1)%Qp). Defined.
Local Instance frac_pcore_instance : PCore frac. exact (λ _, None). Defined.
Local Instance frac_op_instance : Op frac. exact (λ x y, (x + y)%Qp). Defined.

  Definition frac_ra_mixin : RAMixin frac.
Admitted.
  Canonical Structure fracR := discreteR frac frac_ra_mixin.
End frac.
Module Export iris_DOT_algebra_DOT_frac.
Module Export iris.
Module Export algebra.
Module Export frac.
End frac.

End algebra.

End iris.

End iris_DOT_algebra_DOT_frac.
Export iris.base_logic.bi.
Module Export iris_DOT_base_logic_DOT_derived.
Module Export iris.
Module Export base_logic.
Module Export derived.
End derived.

End base_logic.

End iris.

End iris_DOT_base_logic_DOT_derived.
Export iris.algebra.frac.
Export iris.algebra.agree.
Module Export iris_DOT_algebra_DOT_view.
Module Export iris.
Module Export algebra.
Module Export view.
End view.

End algebra.

End iris.

End iris_DOT_algebra_DOT_view.
Export iris.algebra.gmap.
Definition gmap_viewR {SI : sidx} (K : Type) `{Countable K} (V : cmra) : cmra.
Admitted.
Module Export iris_DOT_algebra_DOT_lib_DOT_gmap_view.
Module Export iris.
Module Export algebra.
Module Export lib.
Module Export gmap_view.
End gmap_view.

End lib.

End algebra.

End iris.

End iris_DOT_algebra_DOT_lib_DOT_gmap_view.
Export iris.algebra.view.
Definition authR {SI : sidx} (A : ucmra) : cmra.
Admitted.
Module Export iris_DOT_algebra_DOT_auth.
Module Export iris.
Module Export algebra.
Module Export auth.
End auth.

End algebra.

End iris.

End iris_DOT_algebra_DOT_auth.
Module Export iris_DOT_algebra_DOT_lib_DOT_excl_auth.
Module Export excl_auth.
End excl_auth.

End iris_DOT_algebra_DOT_lib_DOT_excl_auth.
Module Export algebra.
End algebra.
Export iris.base_logic.derived.
Module Export base_logic.
End base_logic.

Structure gFunctor := GFunctor {
  gFunctor_F :> rFunctor;
  gFunctor_map_contractive : rFunctorContractive gFunctor_F;
}.

Record gFunctors := GFunctors {
  gFunctors_len : nat;
  gFunctors_lookup : fin gFunctors_len → gFunctor
}.

Definition gid (Σ : gFunctors) := fin (gFunctors_len Σ).

Definition gname := positive.
Definition iResUR (Σ : gFunctors) : ucmra.
Admitted.
  Notation iProp Σ := (uPred (iResUR Σ)).
  Notation iPropO Σ := (uPredO (iResUR Σ)).
Module Export iprop.
End iprop.

Class inG (Σ : gFunctors) (A : cmra) := InG {
  inG_id : gid Σ;
  inG_apply := rFunctor_apply (gFunctors_lookup Σ inG_id);
  inG_prf : A = inG_apply (iPropO Σ) _;
}.
Local Definition own_def `{!inG Σ A} (γ : gname) (a : A) : iProp Σ.
Admitted.
Local Definition own_aux : seal (@own_def).
Admitted.
Definition own := own_aux.(unseal).
Global Arguments own {Σ A _} γ a.
Module Export iris_DOT_base_logic_DOT_lib_DOT_own.
Module Export iris.
Module Export base_logic.
Module Export lib.
Module Export own.
End own.

End lib.

End base_logic.

End iris.

End iris_DOT_base_logic_DOT_lib_DOT_own.
Export iris.algebra.cmra.
Local Instance nat_valid_instance : Valid nat.
Admitted.
Local Instance nat_pcore_instance : PCore nat.
Admitted.
Local Instance nat_op_instance : Op nat.
Admitted.
  Lemma nat_ra_mixin : RAMixin nat.
Admitted.
Canonical Structure natR : cmra.
exact (discreteR nat nat_ra_mixin).
Defined.
Local Instance nat_unit_instance : Unit nat.
Admitted.
  Lemma nat_ucmra_mixin : UcmraMixin nat.
Admitted.
Canonical Structure natUR : ucmra.
exact (Ucmra nat nat_ucmra_mixin).
Defined.
Module Export numbers.
End numbers.
Export iris.algebra.auth.
Import iris.base_logic.lib.own.

Class lcGS (Σ : gFunctors) := LcGS {
  #[local] lcGS_inG :: inG Σ (authR natUR);
  lcGS_name : gname;
}.

Module Export le_upd_if.
  End le_upd_if.
Module Export iris_DOT_base_logic_DOT_lib_DOT_later_credits.
Module Export iris.
Module Export base_logic.
Module Export lib.
Module Export later_credits.
End later_credits.

End lib.

End base_logic.

End iris.

End iris_DOT_base_logic_DOT_lib_DOT_later_credits.
Export stdpp.coPset.

Inductive coPset_disj :=
  | CoPset : coPset → coPset_disj
  | CoPsetInvalid : coPset_disj.
  Canonical Structure coPset_disjO := leibnizO coPset_disj.
Local Instance coPset_disj_valid_instance : Valid coPset_disj.
Admitted.
Local Instance coPset_disj_op_instance : Op coPset_disj.
Admitted.
Local Instance coPset_disj_pcore_instance : PCore coPset_disj.
Admitted.

  Lemma coPset_disj_ra_mixin : RAMixin coPset_disj.
Admitted.
  Canonical Structure coPset_disjR := discreteR coPset_disj coPset_disj_ra_mixin.
Module Export iris_DOT_algebra_DOT_coPset.
Module Export iris.
Module Export algebra.
Module Export coPset.
End coPset.

End algebra.

End iris.

End iris_DOT_algebra_DOT_coPset.
Import iris.algebra.lib.gmap_view.
Import iris.algebra.gset.
Import iris.algebra.coPset.
Export iris.base_logic.lib.own.
  Class wsatGpreS (Σ : gFunctors) : Set := WsatGpreS {
    wsatGpreS_inv : inG Σ (gmap_viewR positive (agreeR $ laterO (iPropO Σ)));
    wsatGpreS_enabled : inG Σ coPset_disjR;
    wsatGpreS_disabled : inG Σ (gset_disjR positive);
  }.

  Class wsatGS (Σ : gFunctors) : Set := WsatG {
    wsat_inG : wsatGpreS Σ;
    invariant_name : gname;
    enabled_name : gname;
    disabled_name : gname;
  }.
Module Export iris_DOT_base_logic_DOT_lib_DOT_wsat.
Module Export wsat.
End wsat.

End iris_DOT_base_logic_DOT_lib_DOT_wsat.
Export iris.base_logic.lib.later_credits.

Inductive has_lc := HasLc | HasNoLc.

Class invGS_gen (hlc : has_lc) (Σ : gFunctors) : Set := InvG {
  #[global] invGS_wsat :: wsatGS Σ;
  #[global] invGS_lc :: lcGS Σ;
}.
Global Instance uPred_bi_fupd `{!invGS_gen hlc Σ} : BiFUpd (uPredI (iResUR Σ)).
Admitted.

Global Instance uPred_bi_bupd_fupd `{!invGS_gen hlc Σ} : BiBUpdFUpd (uPredI (iResUR Σ)).
Admitted.
Module Export iris.
Module Export base_logic.
Module Export lib.
Module Export fancy_updates.
End fancy_updates.

End lib.

End base_logic.

End iris.
Export stdpp.namespaces.
Export iris.base_logic.lib.fancy_updates.
Export iris.algebra.excl.
Import iris.proofmode.proofmode.

Class cinvG Σ := {
  #[local] cinv_inG :: inG Σ (prodR (optionR (exclR unitO)) (optionR fracR)) ;
}.

Section defs.
  Context `{!invGS_gen hlc Σ, !cinvG Σ}.
Definition cinv_own (γ : gname) (p : frac) : iProp Σ.
Admitted.
  Definition cinv_excl γ : iProp Σ := own γ (Some (Excl ()), None).
Definition cinv (N : namespace) (γ : gname) (P : iProp Σ) : iProp Σ.
Admitted.

  Lemma cinv_own_excl_alloc P :
    pred_infinite P → ⊢ |==> ∃ γ, ⌜P γ⌝ ∗ cinv_excl γ ∗ cinv_own γ 1.
Admitted.

  Lemma cinv_alloc_strong (I : gname → Prop) E N :
    pred_infinite I →
    ⊢ |={E}=> ∃ γ, ⌜ I γ ⌝ ∗ cinv_own γ 1 ∗ ∀ P, ▷ P ={E}=∗ cinv N γ P.
  Proof.
    iIntros (?).
iMod cinv_own_excl_alloc as (γ) "[$ [Hexcl $]]"; first done.
🛠️ Intermediate Coq File (useful for debugging if minimization did not go as far as you wanted)
🛠️ 📜 Intermediate Coq File log (useful for debugging if minimization did not go as far as you wanted)
📜 Build Log (contains the Coq error message) (truncated to last 8.0KiB; full 6.4MiB file on GitHub Actions Artifacts under build.log)
LIB instead.
[deprecated-coq-env-var,deprecated-since-9.0,deprecated,default]
Warning: Deprecated environment variable COQCORELIB,
use ROCQRUNTIMELIB instead.
[deprecated-coq-env-var,deprecated-since-9.0,deprecated,default]
iris/program_logic/lifting.vo (real: 2.83, user: 2.70, sys: 0.12, mem: 597748 ko)
COQNATIVE iris/program_logic/lifting.vo
Warning, feedback message received but no listener to handle it!
Warning: Deprecated environment variable COQLIB, use ROCQLIB instead.
[deprecated-coq-env-var,deprecated-since-9.0,deprecated,default]Warning, feedback message received but no listener to handle it!
Deprecated environment variable COQLIB, use ROCQLIB instead.
[deprecated-coq-env-var,deprecated-since-9.0,deprecated,default]
Deprecated environment variable COQCORELIB, use ROCQRUNTIMELIB instead.
[deprecated-coq-env-var,deprecated-since-9.0,deprecated,default]
File "./iris/program_logic/total_weakestpre.v", line 106, characters 68-80:
Warning: In term, tolerating this expression at a higher level than expected.
This tolerance will be eventually removed. Insert parentheses or try to lower
the level at which the top symbol of this expression is parsed.
[level-tolerance,deprecated-since-9.2,deprecated,parsing,default]
iris/program_logic/lifting.vo.native (real: 0.48, user: 0.37, sys: 0.11, mem: 157084 ko)
COQTEST [ref ignored] tests/algebra.v (ref: tests/algebra.ref)
Warning, feedback message received but no listener to handle it!
Warning: Deprecated environment variable COQLIB, use ROCQLIB instead.
[deprecated-coq-env-var,deprecated-since-9.0,deprecated,default]Warning, feedback message received but no listener to handle it!
Warning: Deprecated environment variable COQLIB, use ROCQLIB instead.
[deprecated-coq-env-var,deprecated-since-9.0,deprecated,default]
Warning: Deprecated environment variable COQCORELIB,
use ROCQRUNTIMELIB instead.
[deprecated-coq-env-var,deprecated-since-9.0,deprecated,default]
tests/algebra.vo (real: 1.22, user: 1.10, sys: 0.12, mem: 590468 ko)
ROCQ compile iris/base_logic/lib/cancelable_invariants.v
MINIMIZER_DEBUG_EXTRA: coqc: /github/workspace/builds/coq/coq-failing/_install_ci/bin/////rocq
MINIMIZER_DEBUG_EXTRA: original invocation: compile -q -w -notation-overridden -w -redundant-canonical-projection -w -notation-incompatible-prefix -w -deprecated-from-Coq -w -deprecated-dirpath-Coq -w -deprecated-native-compiler-option -native-compiler ondemand -Q iris iris -Q iris_heap_lang iris.heap_lang -Q iris_unstable iris.unstable -Q iris_deprecated iris.deprecated iris/base_logic/lib/cancelable_invariants.v 
MINIMIZER_DEBUG_EXTRA: new invocation: /github/workspace/builds/coq/coq-failing/_install_ci/bin/rocq.orig compile -q -w -notation-overridden -w -redundant-canonical-projection -w -notation-incompatible-prefix -w -deprecated-from-Coq -w -deprecated-dirpath-Coq -w -deprecated-native-compiler-option -native-compiler ondemand -Q /github/workspace/builds/coq/coq-failing/_build_ci/iris/iris iris -Q /github/workspace/builds/coq/coq-failing/_build_ci/iris/iris_heap_lang iris.heap_lang -Q /github/workspace/builds/coq/coq-failing/_build_ci/iris/iris_unstable iris.unstable -Q /github/workspace/builds/coq/coq-failing/_build_ci/iris/iris_deprecated iris.deprecated iris/base_logic/lib/cancelable_invariants.v 
MINIMIZER_DEBUG_EXTRA: coqpath: 
MINIMIZER_DEBUG_EXTRA: ocamlpath: /github/workspace/builds/coq/coq-failing/_install_ci/lib:
MINIMIZER_DEBUG_EXTRA: pwd: PWD=/github/workspace/builds/coq/coq-failing/_build_ci/iris
MINIMIZER_DEBUG_EXTRA: exec: /github/workspace/builds/coq/coq-failing/_install_ci/bin/rocq.orig compile -q -w -notation-overridden -w -redundant-canonical-projection -w -notation-incompatible-prefix -w -deprecated-from-Coq -w -deprecated-dirpath-Coq -w -deprecated-native-compiler-option -native-compiler ondemand -Q /github/workspace/builds/coq/coq-failing/_build_ci/iris/iris iris -Q /github/workspace/builds/coq/coq-failing/_build_ci/iris/iris_heap_lang iris.heap_lang -Q /github/workspace/builds/coq/coq-failing/_build_ci/iris/iris_unstable iris.unstable -Q /github/workspace/builds/coq/coq-failing/_build_ci/iris/iris_deprecated iris.deprecated iris/base_logic/lib/cancelable_invariants.v 
MINIMIZER_DEBUG_EXTRA: coqlib: Warning: Deprecated environment variable COQLIB, use ROCQLIB instead.
/github/workspace/builds/coq/coq-failing/_install_ci/lib/coq//
MINIMIZER_DEBUG: info: /tmp/tmp-coqbot-minimizer.03B72gzebL
MINIMIZER_DEBUG: files:  iris/base_logic/lib/cancelable_invariants.v /github/workspace/builds/coq/coq-failing/_build_ci/iris/iris/base_logic/lib/cancelable_invariants.v
Warning, feedback message received but no listener to handle it!
Warning: Deprecated environment variable COQLIB, use ROCQLIB instead.
[deprecated-coq-env-var,deprecated-since-9.0,deprecated,default]Warning, feedback message received but no listener to handle it!
Warning: Deprecated environment variable COQLIB, use ROCQLIB instead.
[deprecated-coq-env-var,deprecated-since-9.0,deprecated,default]
Warning: Deprecated environment variable COQCORELIB,
use ROCQRUNTIMELIB instead.
[deprecated-coq-env-var,deprecated-since-9.0,deprecated,default]
File "./iris/base_logic/lib/cancelable_invariants.v", line 90, characters 17-65:
Error: Tactic failure: iFrame: cannot frame ⌜?Goal γ⌝%I.

Command exited with non-zero status 1
iris/base_logic/lib/cancelable_invariants.vo (real: 1.44, user: 1.30, sys: 0.14, mem: 583660 ko)
make[2]: *** [Makefile.coq:813: iris/base_logic/lib/cancelable_invariants.vo] Error 1
make[2]: *** [iris/base_logic/lib/cancelable_invariants.vo] Deleting file 'iris/base_logic/lib/cancelable_invariants.glob'
make[2]: *** Waiting for unfinished jobs....
File "./iris/program_logic/total_weakestpre.v", line 274, characters 78-90:
Warning: In term, tolerating this expression at a higher level than expected.
This tolerance will be eventually removed. Insert parentheses or try to lower
the level at which the top symbol of this expression is parsed.
[level-tolerance,deprecated-since-9.2,deprecated,parsing,default]
iris/program_logic/total_weakestpre.vo (real: 5.93, user: 5.79, sys: 0.14, mem: 635904 ko)
COQNATIVE iris/program_logic/total_weakestpre.vo
Warning, feedback message received but no listener to handle it!
Warning: Deprecated environment variable COQLIB, use ROCQLIB instead.
[deprecated-coq-env-var,deprecated-since-9.0,deprecated,default]Warning, feedback message received but no listener to handle it!
Deprecated environment variable COQLIB, use ROCQLIB instead.
[deprecated-coq-env-var,deprecated-since-9.0,deprecated,default]
Deprecated environment variable COQCORELIB, use ROCQRUNTIMELIB instead.
[deprecated-coq-env-var,deprecated-since-9.0,deprecated,default]
iris/program_logic/total_weakestpre.vo.native (real: 0.57, user: 0.46, sys: 0.11, mem: 151584 ko)
make[1]: *** [Makefile.coq:411: all] Error 2
make[1]: Leaving directory '/github/workspace/builds/coq/coq-failing/_build_ci/iris'
make: *** [Makefile:3: all] Error 2
+ code=2
+ printf '\n%s exit code: %s\n' iris 2
+ '[' iris '!=' stdlib_test ']'
+ echo 'Aggregating timing log...'
Aggregating timing log...
+ echo

+ tools/make-one-time-file.py --real iris.log
    Time |  Peak Mem | File Name                                    
--------------------------------------------------------------------
0m19.16s | 635904 ko | Total Time / Peak Mem                        
--------------------------------------------------------------------
0m05.93s | 635904 ko | iris/program_logic/total_weakestpre.vo       
0m03.67s | 607536 ko | iris/program_logic/adequacy.vo               
0m02.83s | 597748 ko | iris/program_logic/lifting.vo                
0m01.92s | 598616 ko | iris/program_logic/atomic.vo                 
0m01.44s | 583660 ko | iris/base_logic/lib/cancelable_invariants.vo 
0m01.22s | 590468 ko | tests/algebra.vo                             
0m00.57s | 157604 ko | iris/program_logic/atomic.vo.native          
0m00.57s | 151584 ko | iris/program_logic/total_weakestpre.vo.native
0m00.53s | 165552 ko | iris/program_logic/adequacy.vo.native        
0m00.48s | 157084 ko | iris/program_logic/lifting.vo.native         
+ '[' '' ']'
+ exit 2
/github/workspace/builds/coq /github/workspace
::endgroup::
📜 🔎 Minimization Log (truncated to last 8.0KiB; full 4.4MiB file on GitHub Actions Artifacts under bug.log)
eprecated-since-9.2,deprecated,default]
File "/tmp/tmpisda6e5b/iris/base_logic/lib/cancelable_invariants.v", line 515, characters 2-10:
Warning: Use of "Notation" keyword for abbreviations is deprecated, use
"Abbreviation" instead.
[notation-for-abbreviation,deprecated-since-9.2,deprecated,default]
File "/tmp/tmpisda6e5b/iris/base_logic/lib/cancelable_invariants.v", line 516, characters 2-10:
Warning: Use of "Notation" keyword for abbreviations is deprecated, use
"Abbreviation" instead.
[notation-for-abbreviation,deprecated-since-9.2,deprecated,default]
File "/tmp/tmpisda6e5b/iris/base_logic/lib/cancelable_invariants.v", line 555, characters 0-9:
Error: Could not declare a canonical structure natR.
Could not find its value in the global environment.


�[93mIntermediate code not saved.�[0m
Failed to do everything at once; trying one at a time.
Admitting definitions unsuccessful.
No successful changes.

I will now attempt to admit lemmas with admit. Defined with Proof using

Non-fatal error: Failed to admit lemmas and preserve the error.  
The new error was:
Deprecated environment variable COQCORELIB, use ROCQRUNTIMELIB instead.
Warning: Deprecated environment variable COQCORELIB,
use ROCQRUNTIMELIB instead.
[deprecated-coq-env-var,deprecated-since-9.0,deprecated,default]
File "/tmp/tmpz5jh63c8/iris/base_logic/lib/cancelable_invariants.v", line 131, characters 0-34:
Warning: Library File Stdlib.ZArith.ZArith_base is deprecated since 9.0.
use ZArith instead
[deprecated-library-file-since-9.0,deprecated-since-9.0,deprecated-library-file,deprecated,default]
File "/tmp/tmpz5jh63c8/iris/base_logic/lib/cancelable_invariants.v", line 183, characters 0-30:
Warning: Using Vector.t is known to be technically difficult, see
<https://github.com/coq/stdlib/blob/master/theories/Vectors/Vector.v>.
[warn-library-file-stdlib-vector,stdlib-vector,warn-library-file,user-warn,default]
File "/tmp/tmpz5jh63c8/iris/base_logic/lib/cancelable_invariants.v", line 185, characters 0-32:
Warning: Using Vector.t is known to be technically difficult, see
<https://github.com/coq/stdlib/blob/master/theories/Vectors/Vector.v>.
[warn-library-file-stdlib-vector,stdlib-vector,warn-library-file,user-warn,default]
File "/tmp/tmpz5jh63c8/iris/base_logic/lib/cancelable_invariants.v", line 187, characters 0-34:
Warning: Using Vector.t is known to be technically difficult, see
<https://github.com/coq/stdlib/blob/master/theories/Vectors/Vector.v>.
[warn-library-file-stdlib-vector,stdlib-vector,warn-library-file,user-warn,default]
File "/tmp/tmpz5jh63c8/iris/base_logic/lib/cancelable_invariants.v", line 195, characters 0-33:
Warning: Using Vector.t is known to be technically difficult, see
<https://github.com/coq/stdlib/blob/master/theories/Vectors/Vector.v>.
[warn-library-file-stdlib-vector,stdlib-vector,warn-library-file,user-warn,default]
File "/tmp/tmpz5jh63c8/iris/base_logic/lib/cancelable_invariants.v", line 198, characters 0-27:
Warning: Alternatives to Fin.t are available, see
<https://github.com/coq/stdlib/blob/master/theories/Vectors/Fin.v>.
[warn-library-file-stdlib-vector,stdlib-vector,warn-library-file,user-warn,default]
File "/tmp/tmpz5jh63c8/iris/base_logic/lib/cancelable_invariants.v", line 376, characters 0-8:
Warning: Use of "Notation" keyword for abbreviations is deprecated, use
"Abbreviation" instead.
[notation-for-abbreviation,deprecated-since-9.2,deprecated,default]
File "/tmp/tmpz5jh63c8/iris/base_logic/lib/cancelable_invariants.v", line 515, characters 2-10:
Warning: Use of "Notation" keyword for abbreviations is deprecated, use
"Abbreviation" instead.
[notation-for-abbreviation,deprecated-since-9.2,deprecated,default]
File "/tmp/tmpz5jh63c8/iris/base_logic/lib/cancelable_invariants.v", line 516, characters 2-10:
Warning: Use of "Notation" keyword for abbreviations is deprecated, use
"Abbreviation" instead.
[notation-for-abbreviation,deprecated-since-9.2,deprecated,default]
Error: The section defs needs to be closed.


�[93mIntermediate code not saved.�[0m
Failed to do everything at once; trying one at a time.
Admitting lemmas unsuccessful.
No successful changes.

I will now attempt to admit definitions with admit. Defined with Proof using

Non-fatal error: Failed to admit definitions and preserve the error.  
The new error was:
Deprecated environment variable COQCORELIB, use ROCQRUNTIMELIB instead.
Warning: Deprecated environment variable COQCORELIB,
use ROCQRUNTIMELIB instead.
[deprecated-coq-env-var,deprecated-since-9.0,deprecated,default]
File "/tmp/tmpnfm2t7ru/iris/base_logic/lib/cancelable_invariants.v", line 131, characters 0-34:
Warning: Library File Stdlib.ZArith.ZArith_base is deprecated since 9.0.
use ZArith instead
[deprecated-library-file-since-9.0,deprecated-since-9.0,deprecated-library-file,deprecated,default]
File "/tmp/tmpnfm2t7ru/iris/base_logic/lib/cancelable_invariants.v", line 183, characters 0-30:
Warning: Using Vector.t is known to be technically difficult, see
<https://github.com/coq/stdlib/blob/master/theories/Vectors/Vector.v>.
[warn-library-file-stdlib-vector,stdlib-vector,warn-library-file,user-warn,default]
File "/tmp/tmpnfm2t7ru/iris/base_logic/lib/cancelable_invariants.v", line 185, characters 0-32:
Warning: Using Vector.t is known to be technically difficult, see
<https://github.com/coq/stdlib/blob/master/theories/Vectors/Vector.v>.
[warn-library-file-stdlib-vector,stdlib-vector,warn-library-file,user-warn,default]
File "/tmp/tmpnfm2t7ru/iris/base_logic/lib/cancelable_invariants.v", line 187, characters 0-34:
Warning: Using Vector.t is known to be technically difficult, see
<https://github.com/coq/stdlib/blob/master/theories/Vectors/Vector.v>.
[warn-library-file-stdlib-vector,stdlib-vector,warn-library-file,user-warn,default]
File "/tmp/tmpnfm2t7ru/iris/base_logic/lib/cancelable_invariants.v", line 195, characters 0-33:
Warning: Using Vector.t is known to be technically difficult, see
<https://github.com/coq/stdlib/blob/master/theories/Vectors/Vector.v>.
[warn-library-file-stdlib-vector,stdlib-vector,warn-library-file,user-warn,default]
File "/tmp/tmpnfm2t7ru/iris/base_logic/lib/cancelable_invariants.v", line 198, characters 0-27:
Warning: Alternatives to Fin.t are available, see
<https://github.com/coq/stdlib/blob/master/theories/Vectors/Fin.v>.
[warn-library-file-stdlib-vector,stdlib-vector,warn-library-file,user-warn,default]
File "/tmp/tmpnfm2t7ru/iris/base_logic/lib/cancelable_invariants.v", line 376, characters 0-8:
Warning: Use of "Notation" keyword for abbreviations is deprecated, use
"Abbreviation" instead.
[notation-for-abbreviation,deprecated-since-9.2,deprecated,default]
File "/tmp/tmpnfm2t7ru/iris/base_logic/lib/cancelable_invariants.v", line 515, characters 2-10:
Warning: Use of "Notation" keyword for abbreviations is deprecated, use
"Abbreviation" instead.
[notation-for-abbreviation,deprecated-since-9.2,deprecated,default]
File "/tmp/tmpnfm2t7ru/iris/base_logic/lib/cancelable_invariants.v", line 516, characters 2-10:
Warning: Use of "Notation" keyword for abbreviations is deprecated, use
"Abbreviation" instead.
[notation-for-abbreviation,deprecated-since-9.2,deprecated,default]
File "/tmp/tmpnfm2t7ru/iris/base_logic/lib/cancelable_invariants.v", line 556, characters 0-8:
Error: Could not declare a canonical structure natR.
Expected a record or structure constructor applied to arguments.


�[93mIntermediate code not saved.�[0m
Failed to do everything at once; trying one at a time.
Admitting definitions unsuccessful.
No successful changes.

I will now attempt to add Proof using lines
�[92m
Adding Proof using lines successful.�[0m
Failed to do everything at once; trying one at a time.
Adding Proof using lines unsuccessful.
No successful changes.

I will now attempt to export modules
Module exportation successful

I will now attempt to split imports and exports
Import/Export splitting unsuccessful.

I will now attempt to split := definitions
One-line definition splitting successful

I will now attempt to lift Requires to the top of the file while inserting option settings

I will now attempt to lift Requires to the top of the file while inserting option settings

I will now attempt to remove all lines, one at a time

If you have any comments on your experience of the minimizer, please share them in a reply (possibly tagging @JasonGross).
If you believe there's a bug in the bug minimizer, please report it on the bug minimizer issue tracker.

@JasonGross
Copy link
Member

Can't we just fix argosy to make install?

What about adding something like

printf '\nMakefile.coq: _CoqProject\n\tcoq_makefile -f _CoqProject -o $@ $(ALL_VFILES)\n' >> Makefile
make Makefile.coq
make -f Makefile.coq install

to Coq's CI?

@coqbot-app
Copy link
Contributor

coqbot-app bot commented Oct 9, 2025

Minimization interrupted by timeout, being automatically continued. Partially Minimized File /home/runner/work/run-coq-bug-minimizer/run-coq-bug-minimizer/builds/coq/coq-failing/_build_ci/iris/iris/base_logic/lib/cancelable_invariants.v in 5h 15m 7s (from ci-iris) (interrupted by timeout, being automatically continued) (full log on GitHub Actions - verbose log)
⭐ ⏱️ Partially Minimized Coq File (timeout) (truncated to first and last 32KiB; full 64KiB file on GitHub Actions Artifacts under bug.v)
(* -*- mode: coq; coq-prog-args: ("-emacs" "-q" "-w" "-notation-overridden" "-w" "-redundant-canonical-projection" "-w" "-notation-incompatible-prefix" "-w" "-deprecated-from-Coq" "-w" "-deprecated-dirpath-Coq" "-w" "-deprecated-native-compiler-option" "-native-compiler" "ondemand" "-coqlib" "/github/workspace/builds/coq/coq-failing/_install_ci/lib/coq//" "-Q" "/github/workspace/cwd" "Top" "-Q" "/github/workspace/builds/coq/coq-failing/_build_ci/iris/iris" "iris" "-Q" "/github/workspace/builds/coq/coq-failing/_build_ci/iris/iris_heap_lang" "iris.heap_lang" "-Q" "/github/workspace/builds/coq/coq-failing/_build_ci/iris/iris_unstable" "iris.unstable" "-Q" "/github/workspace/builds/coq/coq-failing/_build_ci/iris/iris_deprecated" "iris.deprecated" "-Q" "/github/workspace/builds/coq/coq-failing/_install_ci/lib/coq///user-contrib/Autosubst" "Autosubst" "-Q" "/github/workspace/builds/coq/coq-failing/_install_ci/lib/coq///user-contrib/Ltac2" "Ltac2" "-Q" "/github/workspace/builds/coq/coq-failing/_install_ci/lib/coq///user-contrib/Stdlib" "Stdlib" "-Q" "/github/workspace/builds/coq/coq-failing/_install_ci/lib/coq///user-contrib/stdpp" "stdpp" "-top" "Top.bug_01") -*- *)
(* File reduced by coq-bug-minimizer from original input, then from 204 lines to 32 lines, then from 45 lines to 651 lines, then from 657 lines to 31 lines, then from 44 lines to 706 lines, then from 712 lines to 58 lines, then from 71 lines to 654 lines, then from 660 lines to 77 lines, then from 90 lines to 482 lines, then from 488 lines to 104 lines, then from 117 lines to 987 lines, then from 990 lines to 132 lines, then from 145 lines to 702 lines, then from 708 lines to 148 lines, then from 161 lines to 1079 lines, then from 1085 lines to 175 lines, then from 188 lines to 735 lines, then from 736 lines to 195 lines, then from 208 lines to 591 lines, then from 597 lines to 197 lines, then from 210 lines to 923 lines, then from 929 lines to 201 lines, then from 214 lines to 587 lines, then from 593 lines to 206 lines, then from 219 lines to 899 lines, then from 905 lines to 219 lines, then from 232 lines to 1231 lines, then from 1237 lines to 236 lines, then from 249 lines to 1215 lines, then from 1221 lines to 248 lines, then from 261 lines to 791 lines, then from 797 lines to 261 lines, then from 274 lines to 586 lines, then from 592 lines to 539 lines, then from 547 lines to 146 lines, then from 159 lines to 826 lines, then from 832 lines to 186 lines, then from 199 lines to 1392 lines, then from 1397 lines to 319 lines, then from 332 lines to 845 lines, then from 851 lines to 321 lines, then from 334 lines to 940 lines, then from 946 lines to 372 lines, then from 385 lines to 753 lines, then from 759 lines to 387 lines, then from 400 lines to 882 lines, then from 888 lines to 398 lines, then from 411 lines to 1223 lines, then from 1229 lines to 476 lines, then from 489 lines to 1045 lines, then from 1051 lines to 488 lines, then from 501 lines to 2017 lines, then from 2023 lines to 506 lines, then from 519 lines to 3085 lines, then from 3090 lines to 1575 lines, then from 1588 lines to 1874 lines, then from 1880 lines to 1637 lines, then from 1650 lines to 1881 lines, then from 1887 lines to 1646 lines, then from 1659 lines to 2056 lines, then from 2062 lines to 1838 lines *)
(* coqc version 9.2+alpha compiled with OCaml 4.14.2
   coqtop version 9.2+alpha
   Expected coqc runtime on this file: 1.420 sec *)










Require iris.proofmode.notation.
Require iris.proofmode.coq_tactics.
Require iris.proofmode.modality_instances.
Require iris.proofmode.reduction.
Require iris.proofmode.classes.
Require iris.proofmode.environments.
Require iris.proofmode.intro_patterns.
Require iris.proofmode.sel_patterns.
Require iris.proofmode.tokens.
Require iris.proofmode.modalities.
Require iris.bi.telescopes.
Require iris.proofmode.classes_make.
Require iris.proofmode.base.
Require iris.bi.bi.
Require iris.bi.embedding.
Require iris.bi.updates.
Require iris.bi.plainly.
Require iris.bi.internal_eq.
Require iris.bi.big_op.
Require iris.algebra.gmap.
Require iris.algebra.gset.
Require iris.algebra.list.
Require iris.algebra.big_op.
Require stdpp.gmultiset.
Require iris.bi.derived_laws_later.
Require iris.bi.derived_laws.
Require iris.bi.extensions.
Require iris.bi.derived_connectives.
Require stdpp.namespaces.
Require iris.bi.interface.
Require iris.algebra.csum.
Require stdpp.coPset.
Require stdpp.gmap.
Require iris.algebra.updates.
Require iris.algebra.stepindex_finite.
Require iris.algebra.proofmode_classes.
Require iris.algebra.local_updates.
Require iris.algebra.excl.
Require iris.algebra.cmra.
Require iris.algebra.monoid.
Require iris.algebra.ofe.
Require iris.algebra.stepindex.
Require iris.prelude.prelude.
Require stdpp.infinite.
Require stdpp.ssreflect.
Require stdpp.pretty.
Require stdpp.pmap.
Require stdpp.prelude.
Require stdpp.mapset.
Require stdpp.fin_map_dom.
Require stdpp.fin_maps.
Require stdpp.fin_sets.
Require stdpp.relations.
Require stdpp.listset.
Require stdpp.sets.
Require stdpp.strings.
Require stdpp.finite.
Require stdpp.vector.
Require stdpp.countable.
Require stdpp.list.
Require stdpp.list_numbers.
Require stdpp.list_tactics.
Require stdpp.list_misc.
Require stdpp.list_monad.
Require stdpp.list_relations.
Require stdpp.list_basics.
Require stdpp.lexico.
Require stdpp.numbers.
Require Stdlib.ZArith.ZArith.
Require stdpp.fin.
Require stdpp.telescopes.
Require stdpp.orders.
Require stdpp.option.
Require stdpp.functions.
Require stdpp.tactics.
Require Stdlib.ZArith.Znumtheory.
Require Stdlib.ZArith.ZNsatz.
Require Stdlib.ZArith.Zbitwise.
Require Stdlib.btauto.Btauto.
Require Stdlib.micromega.ZArith_hints.
Require Stdlib.btauto.Reflect.
Require Stdlib.btauto.Algebra.
Require Stdlib.ZArith.Zcong.
Require Stdlib.ZArith.ZModOffset.
Require Stdlib.ZArith.Zdivisibility.
Require Stdlib.ZArith.Zdiv_facts.
Require Stdlib.micromega.Lia.
Require Stdlib.QArith.QArith.
Require Stdlib.micromega.ZMicromega.
Require Stdlib.QArith.QNsatz.
Require Stdlib.ZArith.Zdiv.
Require Stdlib.ZArith.Zpower.
Require Stdlib.ZArith.Zcomplements.
Require Stdlib.QArith.Qring.
Require Stdlib.QArith.Qfield.
Require Stdlib.QArith.Qcanon.
Import iris.proofmode.base.
Import iris.proofmode.tokens.

Inductive goal_kind := GSpatial | GModal | GIntuitionistic.

Record spec_goal := SpecGoal {
  spec_goal_kind : goal_kind;
  spec_goal_negate : bool;
  spec_goal_frame : list ident;
  spec_goal_hyps : list ident;
  spec_goal_done : bool
}.

Inductive spec_pat :=
  | SIdent : ident → list spec_pat → spec_pat
  | SPureGoal (perform_done : bool) : spec_pat
  | SGoal : spec_goal → spec_pat
  | SAutoFrame : goal_kind → spec_pat.

Module Export spec_pat.
Inductive stack_item :=
  | StPat : spec_pat → stack_item
  | StIdent : string → stack_item.
Notation stack := (list stack_item).
Fixpoint close (k : stack) (ps : list spec_pat) : option (list spec_pat). exact (match k with
  | [] => Some ps
  | StPat p :: k => close k (p :: ps)
  | StIdent _ :: _ => None
  end). Defined.
Fixpoint close_ident (k : stack) (ps : list spec_pat) : option stack. exact (match k with
  | [] => None
  | StPat p :: k => close_ident k (p :: ps)
  | StIdent s :: k => Some (StPat (SIdent s ps) :: k)
  end). Defined.

Fixpoint parse_go (ts : list token) (k : stack) : option (list spec_pat) :=
  match ts with
  | [] => close k []
  | TParenL :: TName s :: ts => parse_go ts (StIdent s :: k)
  | TParenR :: ts => k ← close_ident k []; parse_go ts k
  | TName s :: ts => parse_go ts (StPat (SIdent s []) :: k)
  | TBracketL :: TIntuitionistic :: TFrame :: TBracketR :: ts =>
     parse_go ts (StPat (SAutoFrame GIntuitionistic) :: k)
  | TBracketL :: TFrame :: TBracketR :: ts =>
     parse_go ts (StPat (SAutoFrame GSpatial) :: k)
  | TBracketL :: TModal :: TFrame :: TBracketR :: ts =>
     parse_go ts (StPat (SAutoFrame GModal) :: k)
  | TBracketL :: TPure None :: TBracketR :: ts =>
     parse_go ts (StPat (SPureGoal false) :: k)
  | TBracketL :: TPure None :: TDone :: TBracketR :: ts =>
     parse_go ts (StPat (SPureGoal true) :: k)
  | TBracketL :: TIntuitionistic :: ts => parse_goal ts GIntuitionistic false [] [] k
  | TBracketL :: TModal :: ts => parse_goal ts GModal false [] [] k
  | TBracketL :: ts => parse_goal ts GSpatial false [] [] k
  | _ => None
  end
with parse_goal (ts : list token)
    (ki : goal_kind) (neg : bool) (frame hyps : list ident)
    (k : stack) : option (list spec_pat) :=
  match ts with
  | TMinus :: ts =>
     guard (¬neg ∧ frame = [] ∧ hyps = []);;
     parse_goal ts ki true frame hyps k
  | TName s :: ts => parse_goal ts ki neg frame (INamed s :: hyps) k
  | TFrame :: TName s :: ts => parse_goal ts ki neg (INamed s :: frame) hyps k
  | TDone :: TBracketR :: ts =>
     parse_go ts (StPat (SGoal (SpecGoal ki neg (reverse frame) (reverse hyps) true)) :: k)
  | TBracketR :: ts =>
     parse_go ts (StPat (SGoal (SpecGoal ki neg (reverse frame) (reverse hyps) false)) :: k)
  | _ => None
  end.
Definition parse (s : string) : option (list spec_pat). exact (parse_go (tokenize s) []). Defined.

Ltac parse s :=
  lazymatch type of s with
  | list spec_pat => s
  | spec_pat => constr:([s])
  | string =>
     lazymatch eval vm_compute in (parse s) with
     | Some ?pats => pats
     | _ => fail "spec_pat.parse: cannot parse" s "as a specialization pattern"
     end
  | ident => constr:([SIdent s []])
  | ?X => fail "spec_pat.parse: the term" s
     "is expected to be a specialization pattern"
     "(usually a string),"
     "but has unexpected type" X
  end.
Module Export iris.
Module Export proofmode.
Module Export spec_patterns.
End spec_patterns.

Inductive tlist := tnil : tlist | tcons : Type → tlist → tlist.

Inductive hlist : tlist → Type :=
  | hnil : hlist tnil
  | hcons {A As} : A → hlist As → hlist (tcons A As).
Module Export stdpp.
Module Export hlist.
End hlist.
Import Stdlib.Strings.String.
Import Stdlib.Init.Byte.
Local Open Scope list.

Module Export StringToIdent.
  Import Ltac2.Ltac2.

  Ltac2 Type exn ::= [ NotStringLiteral(constr) | InvalidIdent(string) ].

  Ltac2 coq_byte_to_int (b : constr) : int :=
    match! b with

    | x00 => 0 | x01 => 1 | x02 => 2 | x03 => 3 | x04 => 4 | x05 => 5 | x06 => 6 | x07 => 7 | x08 => 8 | x09 => 9 | x0a => 10 | x0b => 11 | x0c => 12 | x0d => 13 | x0e => 14 | x0f => 15 | x10 => 16 | x11 => 17 | x12 => 18 | x13 => 19 | x14 => 20 | x15 => 21 | x16 => 22 | x17 => 23 | x18 => 24 | x19 => 25 | x1a => 26 | x1b => 27 | x1c => 28 | x1d => 29 | x1e => 30 | x1f => 31 | x20 => 32 | x21 => 33 | x22 => 34 | x23 => 35 | x24 => 36 | x25 => 37 | x26 => 38 | x27 => 39 | x28 => 40 | x29 => 41 | x2a => 42 | x2b => 43 | x2c => 44 | x2d => 45 | x2e => 46 | x2f => 47 | x30 => 48 | x31 => 49 | x32 => 50 | x33 => 51 | x34 => 52 | x35 => 53 | x36 => 54 | x37 => 55 | x38 => 56 | x39 => 57 | x3a => 58 | x3b => 59 | x3c => 60 | x3d => 61 | x3e => 62 | x3f => 63 | x40 => 64 | x41 => 65 | x42 => 66 | x43 => 67 | x44 => 68 | x45 => 69 | x46 => 70 | x47 => 71 | x48 => 72 | x49 => 73 | x4a => 74 | x4b => 75 | x4c => 76 | x4d => 77 | x4e => 78 | x4f => 79 | x50 => 80 | x51 => 81 | x52 => 82 | x53 => 83 | x54 => 84 | x55 => 85 | x56 => 86 | x57 => 87 | x58 => 88 | x59 => 89 | x5a => 90 | x5b => 91 | x5c => 92 | x5d => 93 | x5e => 94 | x5f => 95 | x60 => 96 | x61 => 97 | x62 => 98 | x63 => 99 | x64 => 100 | x65 => 101 | x66 => 102 | x67 => 103 | x68 => 104 | x69 => 105 | x6a => 106 | x6b => 107 | x6c => 108 | x6d => 109 | x6e => 110 | x6f => 111 | x70 => 112 | x71 => 113 | x72 => 114 | x73 => 115 | x74 => 116 | x75 => 117 | x76 => 118 | x77 => 119 | x78 => 120 | x79 => 121 | x7a => 122 | x7b => 123 | x7c => 124 | x7d => 125 | x7e => 126 | x7f => 127 | x80 => 128 | x81 => 129 | x82 => 130 | x83 => 131 | x84 => 132 | x85 => 133 | x86 => 134 | x87 => 135 | x88 => 136 | x89 => 137 | x8a => 138 | x8b => 139 | x8c => 140 | x8d => 141 | x8e => 142 | x8f => 143 | x90 => 144 | x91 => 145 | x92 => 146 | x93 => 147 | x94 => 148 | x95 => 149 | x96 => 150 | x97 => 151 | x98 => 152 | x99 => 153 | x9a => 154 | x9b => 155 | x9c => 156 | x9d => 157 | x9e => 158 | x9f => 159 | xa0 => 160 | xa1 => 161 | xa2 => 162 | xa3 => 163 | xa4 => 164 | xa5 => 165 | xa6 => 166 | xa7 => 167 | xa8 => 168 | xa9 => 169 | xaa => 170 | xab => 171 | xac => 172 | xad => 173 | xae => 174 | xaf => 175 | xb0 => 176 | xb1 => 177 | xb2 => 178 | xb3 => 179 | xb4 => 180 | xb5 => 181 | xb6 => 182 | xb7 => 183 | xb8 => 184 | xb9 => 185 | xba => 186 | xbb => 187 | xbc => 188 | xbd => 189 | xbe => 190 | xbf => 191 | xc0 => 192 | xc1 => 193 | xc2 => 194 | xc3 => 195 | xc4 => 196 | xc5 => 197 | xc6 => 198 | xc7 => 199 | xc8 => 200 | xc9 => 201 | xca => 202 | xcb => 203 | xcc => 204 | xcd => 205 | xce => 206 | xcf => 207 | xd0 => 208 | xd1 => 209 | xd2 => 210 | xd3 => 211 | xd4 => 212 | xd5 => 213 | xd6 => 214 | xd7 => 215 | xd8 => 216 | xd9 => 217 | xda => 218 | xdb => 219 | xdc => 220 | xdd => 221 | xde => 222 | xdf => 223 | xe0 => 224 | xe1 => 225 | xe2 => 226 | xe3 => 227 | xe4 => 228 | xe5 => 229 | xe6 => 230 | xe7 => 231 | xe8 => 232 | xe9 => 233 | xea => 234 | xeb => 235 | xec => 236 | xed => 237 | xee => 238 | xef => 239 | xf0 => 240 | xf1 => 241 | xf2 => 242 | xf3 => 243 | xf4 => 244 | xf5 => 245 | xf6 => 246 | xf7 => 247 | xf8 => 248 | xf9 => 249 | xfa => 250 | xfb => 251 | xfc => 252 | xfd => 253 | xfe => 254 | xff => 255
    end.

  Ltac2 coq_byte_to_char (b : constr) : char :=
    Char.of_int (coq_byte_to_int b).
Fixpoint coq_string_to_list_byte (s : string) : list byte.
Admitted.

  Ltac2 rec coq_byte_list_blit_list (pos : int) (ls : constr) (str : string) : unit :=
    match! ls with
    | nil => ()
    | ?c :: ?ls =>
      let b := coq_byte_to_char c in
      String.set str pos b; coq_byte_list_blit_list (Int.add pos 1) ls str
    end.

  Ltac2 rec coq_string_length (s : constr) : int :=
    match! s with
    | EmptyString => 0
    | String _ ?s' => Int.add 1 (coq_string_length s')
    | _ => Control.throw (NotStringLiteral s)
    end.

  Ltac2 compute (c : constr) : constr :=
    Std.eval_vm None c.

  Ltac2 coq_string_to_string (s : constr) : string :=
    let l := coq_string_length s in
    let str := String.make l (Char.of_int 0) in
    let bytes := compute constr:(coq_string_to_list_byte $s) in
    let _ := coq_byte_list_blit_list 0 bytes str in
    str.

  Ltac2 string_to_ident (s : string) : ident :=
    match Ident.of_string s with
    | Some id => id
    | None => Control.throw (InvalidIdent s)
    end.

  Ltac2 coq_string_to_ident (s : constr) : ident :=
    string_to_ident (coq_string_to_string s).

  Ltac string_to_ident_cps :=
    ltac2:(s1 r |- let s := Option.get (Ltac1.to_constr s1) in
                   let ident := coq_string_to_ident s in
                   Ltac1.apply r [Ltac1.of_ident ident] Ltac1.run).
End StringToIdent.

Ltac rename_by_string id s :=
  StringToIdent.string_to_ident_cps s ltac:(fun x => rename id into x).
Module Export string_ident.
End string_ident.
Import stdpp.namespaces.
Import stdpp.hlist.
Import iris.proofmode.intro_patterns.
Import iris.proofmode.spec_patterns.
Import iris.proofmode.sel_patterns.
Import iris.proofmode.coq_tactics.
Import iris.proofmode.reduction.

Ltac iSolveSideCondition :=
  lazymatch goal with
  | |- pm_error ?err => fail "" err
  | _ => split_and?; try solve [ fast_done | solve_ndisj | tc_solve ]
  end.

Ltac pretty_ident H :=
  lazymatch H with
  | INamed ?H => H
  | ?H => H
  end.

Ltac iGetCtx :=
  lazymatch goal with
  | |- envs_entails ?Δ _ => Δ
  | |- context[ envs_split _ _ ?Δ ] => Δ
  end.

Ltac iMissingHypsCore Δ Hs :=
  let Hhyps := pm_eval (envs_dom Δ) in
  eval vm_compute in (list_difference Hs Hhyps).

Ltac iTypeOf H :=
  let Δ := match goal with |- envs_entails ?Δ _ => Δ end in
  pm_eval (envs_lookup H Δ).

Ltac iBiOfGoal :=
  match goal with |- @envs_entails ?PROP _ _ => PROP end.

Tactic Notation "iStartProof" :=
  lazymatch goal with
  | |- (let _ := _ in _) => fail "iStartProof: goal is a `let`, use `simpl`,"
                                 "`intros x`, `iIntros (x)`, or `iIntros ""%x"""
  | |- envs_entails _ _ => idtac
  | |- ?φ => notypeclasses refine (as_emp_valid_2 φ _ _);
               [tc_solve || fail "iStartProof: not a BI assertion:" φ
               |notypeclasses refine (tac_start _ _)]
  end.

Ltac iFresh :=

  let start :=
    lazymatch goal with
    | _ => iStartProof
    end in
  let c :=
    lazymatch goal with
    | |- envs_entails (Envs _ _ ?c) _ => c
    end in
  let inc :=
    lazymatch goal with
    | |- envs_entails (Envs ?Δp ?Δs _) ?Q =>
      let c' := eval vm_compute in (Pos.succ c) in
      change_no_check (envs_entails (Envs Δp Δs c') Q)
    end in
  constr:(IAnon c).

Tactic Notation "iRename" constr(H1) "into" constr(H2) :=
  eapply tac_rename with H1 H2 _ _;
    [pm_reflexivity ||
     let H1 := pretty_ident H1 in
     fail "iRename:" H1 "not found"
    |pm_reduce;
     lazymatch goal with
       | |- False =>
         let H2 := pretty_ident H2 in
         fail "iRename:" H2 "not fresh"
       | _ => idtac
     end].

Inductive esel_pat :=
  | ESelPure
  | ESelIdent :  bool → ident → esel_pat.

Local Ltac iElaborateSelPat_go pat Δ Hs :=
  lazymatch pat with
  | [] => eval cbv in Hs
  | SelPure :: ?pat =>  iElaborateSelPat_go pat Δ (ESelPure :: Hs)
  | SelIntuitionistic :: ?pat =>
    let Hs' := pm_eval (env_dom (env_intuitionistic Δ)) in
    let Δ' := pm_eval (envs_clear_intuitionistic Δ) in
    iElaborateSelPat_go pat Δ' ((ESelIdent true <$> Hs') ++ Hs)
  | SelSpatial :: ?pat =>
    let Hs' := pm_eval (env_dom (env_spatial Δ)) in
    let Δ' := pm_eval (envs_clear_spatial Δ) in
    iElaborateSelPat_go pat Δ' ((ESelIdent false <$> Hs') ++ Hs)
  | SelIdent ?H :: ?pat =>
    lazymatch pm_eval (envs_lookup_delete false H Δ) with
    | Some (?p,_,?Δ') =>  iElaborateSelPat_go pat Δ' (ESelIdent p H :: Hs)
    | None =>
      let H := pretty_ident H in
      fail "iElaborateSelPat:" H "not found"
    end
  end.

Ltac iElaborateSelPat pat :=
  lazymatch goal with
  | |- envs_entails ?Δ _ =>
    let pat := sel_pat.parse pat in iElaborateSelPat_go pat Δ (@nil esel_pat)
  end.

Ltac _iClearHyp H :=
  eapply tac_clear with H _ _;
    [pm_reflexivity ||
     let H := pretty_ident H in
     fail "iClear:" H "not found"
    |pm_reduce; tc_solve ||
     let H := pretty_ident H in
     let P := match goal with |- TCOr (Affine ?P) _ => P end in
     fail "iClear:" H ":" P "not affine and the goal not absorbing"
    |pm_reduce].

Local Ltac iClear_go Hs :=
  lazymatch Hs with
  | [] => idtac
  | ESelPure :: ?Hs => clear; iClear_go Hs
  | ESelIdent _ ?H :: ?Hs => _iClearHyp H; iClear_go Hs
  end.
Tactic Notation "iClear" constr(Hs) :=
  iStartProof; let Hs := iElaborateSelPat Hs in iClear_go Hs.

Tactic Notation "iExact" constr(H) :=
  eapply tac_assumption with H _ _;
    [pm_reflexivity ||
     let H := pretty_ident H in
     fail "iExact:" H "not found"
    |tc_solve ||
     let H := pretty_ident H in
     let P := match goal with |- FromAssumption _ ?P _ => P end in
     fail "iExact:" H ":" P "does not match goal"
    |pm_reduce; tc_solve ||
     let H := pretty_ident H in
     fail "iExact: remaining hypotheses not affine and the goal not absorbing"].

Tactic Notation "iExFalso" :=
  iStartProof;
  apply tac_ex_falso.

Ltac _iIntuitionistic H H' :=
  eapply tac_intuitionistic with H H' _ _ _;
    [pm_reflexivity ||
     let H := pretty_ident H in
     fail "iIntuitionistic:" H "not found"
    |tc_solve ||
     let P := match goal with |- IntoPersistent _ ?P _ => P end in
     fail "iIntuitionistic:" P "not persistent"
    |pm_reduce; tc_solve ||
     let P := match goal with |- TCOr (Affine ?P) _ => P end in
     fail "iIntuitionistic:" P "not affine and the goal not absorbing"
    |pm_reduce;
     lazymatch goal with
     | |- False =>
       let H' := pretty_ident H' in
       fail "iIntuitionistic:" H' "not fresh"
     | _ => idtac
     end].

Ltac _iSpatial H H' :=
  eapply tac_spatial with H H' _ _ _;
    [pm_reflexivity ||
     let H := pretty_ident H in
     fail "iSpatial:" H "not found"
    |pm_reduce; tc_solve
    |pm_reduce;
     lazymatch goal with
     | |- False =>
       let H' := pretty_ident H' in
       fail "iSpatial:" H' "not fresh"
     | _ => idtac
     end].

Tactic Notation "iPure" constr(H) "as" simple_intropattern(pat) :=
  eapply tac_pure with H _ _ _;
    [pm_reflexivity ||
     let H := pretty_ident H in
     fail "iPure:" H "not found"
    |tc_solve ||
     let P := match goal with |- IntoPure ?P _ => P end in
     fail "iPure:" P "not pure"
    |pm_reduce; tc_solve ||
     let P := match goal with |- TCOr (Affine ?P) _ => P end in
     fail "iPure:" P "not affine and the goal not absorbing"
    |pm_reduce; intros pat].

Tactic Notation "iEmpIntro" :=
  iStartProof;
  eapply tac_emp_intro;
    [pm_reduce; tc_solve ||
     fail "iEmpIntro: spatial context contains non-affine hypotheses"].

Tactic Notation "iPureIntro" :=
  iStartProof;
  eapply tac_pure_intro;
    [tc_solve ||
     let P := match goal with |- FromPure _ ?P _ => P end in
     fail "iPureIntro:" P "not pure"
    |pm_reduce; tc_solve ||
     fail "iPureIntro: spatial context contains non-affine hypotheses"
    |].

Ltac _iFrameFinish :=
  pm_prettify;
  try match goal with
  | |- envs_entails _ True => by iPureIntro
  | |- envs_entails _ emp => iEmpIntro
  end.

Ltac _iFramePure t :=
  iStartProof;
  let φ := type of t in
  eapply (tac_frame_pure _ _ _ _ t);
    [tc_solve || fail "iFrame: cannot frame" φ
    |].

Ltac _iFrameHyp H :=
  iStartProof;
  eapply tac_frame with H _ _ _;
    [pm_reflexivity ||
     let H := pretty_ident H in
     fail "iFrame:" H "not found"
    |tc_solve ||
     let R := match goal with |- Frame _ ?R _ _ => R end in
     fail "iFrame: cannot frame" R
    |pm_reduce].

Ltac _iFrameAnyPure :=
  repeat match goal with H : _ |- _ => _iFramePure H end.

Ltac _iFrameAnyIntuitionistic :=
  iStartProof;
  let rec go Hs :=
    match Hs with [] => idtac | ?H :: ?Hs => repeat _iFrameHyp H; go Hs end in
  match goal with
  | |- envs_entails ?Δ _ =>

     let Hs := eval lazy in (env_dom (env_intuitionistic Δ)) in go Hs
  end.

Ltac _iFrameAnySpatial :=
  iStartProof;
  let rec go Hs :=
    match Hs with [] => idtac | ?H :: ?Hs => try _iFrameHyp H; go Hs end in
  match goal with
  | |- envs_entails ?Δ _ =>

     let Hs := eval lazy in (env_dom (env_spatial Δ)) in go Hs
  end.

Ltac _iFrame_go Hs :=
  lazymatch Hs with
  | [] => idtac
  | SelPure :: ?Hs => _iFrameAnyPure; _iFrame_go Hs
  | SelIntuitionistic :: ?Hs => _iFrameAnyIntuitionistic; _iFrame_go Hs
  | SelSpatial :: ?Hs => _iFrameAnySpatial; _iFrame_go Hs
  | SelIdent ?H :: ?Hs => _iFrameHyp H; _iFrame_go Hs
  end.

Ltac _iFrame0 Hs :=
  let Hs := sel_pat.parse Hs in

  lazymatch Hs with
  | [] => idtac
  | _ => _iFrame_go Hs; _iFrameFinish
  end.
Tactic Notation "iFrame" constr(Hs) := _iFrame0 Hs.

Tactic Notation "_iIntro" "(" simple_intropattern(x) ")" :=

  (

    intros x
  ) || (

    iStartProof;
    lazymatch goal with
    | |- envs_entails _ _ =>
      eapply tac_forall_intro;
        [tc_solve ||
         let P := match goal with |- FromForall ?P _ _ => P end in
         fail "iIntro: cannot turn" P "into a universal quantifier"
        |let name := lazymatch goal with
                     | |- let _ := (λ name, _) in _ => name
                     end in
         pm_prettify;
         let y := fresh name in
         intros y; revert y; intros x
         ]
    end).

Ltac _iIntroSpatial H :=
  iStartProof;
  first
  [
    eapply tac_impl_intro with H _ _ _;
      [tc_solve
      |pm_reduce; tc_solve ||
       let P := lazymatch goal with |- Persistent ?P => P end in
       let H := pretty_ident H in
       fail 1 "iIntro: introducing non-persistent" H ":" P
              "into non-empty spatial context"
      |tc_solve
      |pm_reduce;
       let H := pretty_ident H in
        lazymatch goal with
        | |- False =>
          let H := pretty_ident H in
          fail 1 "iIntro:" H "not fresh"
        | _ => idtac
        end]
  |
    eapply tac_wand_intro with H _ _;
      [tc_solve
      | pm_reduce;
        lazymatch goal with
        | |- False =>
          let H := pretty_ident H in
          fail 1 "iIntro:" H "not fresh"
        | _ => idtac
        end]
  | let H := pretty_ident H in
    fail 1 "iIntro: could not introduce" H ", goal is not a wand or implication" ].

Ltac _iIntroPersistent H :=
  iStartProof;
  first
  [
   eapply tac_impl_intro_intuitionistic with H _ _ _;
     [tc_solve
     |tc_solve ||
      let P := match goal with |- IntoPersistent _ ?P _ => P end in
      fail 1 "iIntro:" P "not persistent"
     |pm_reduce;
      lazymatch goal with
      | |- False =>
        let H := pretty_ident H in
        fail 1 "iIntro:" H "not fresh"
      | _ => idtac
      end]
  |
   eapply tac_wand_intro_intuitionistic with H _ _ _;
     [tc_solve
     |tc_solve ||
      let P := match goal with |- IntoPersistent _ ?P _ => P end in
      fail 1 "iIntro:" P "not intuitionistic"
     |tc_solve ||
      let P := match goal with |- TCOr (Affine ?P) _ => P end in
      fail 1 "iIntro:" P "not affine and the goal not absorbing"
     |pm_reduce;
      lazymatch goal with
      | |- False =>
        let H := pretty_ident H in
        fail 1 "iIntro:" H "not fresh"
      | _ => idtac
      end]
  |fail 1 "iIntro: nothing to introduce"].

Ltac _iIntroMaybePersistent H p :=
  lazymatch p with
  | true => _iIntroPersistent H
  | _ =>  _iIntroSpatial H
  end.

Ltac _iIntroDrop :=
  iStartProof;
  first
  [
   eapply tac_impl_intro_drop;
     [tc_solve
     |]
  |
   eapply tac_wand_intro_drop;
     [tc_solve
     |tc_solve ||
      let P := match goal with |- TCOr (Affine ?P) _ => P end in
      fail 1 "iIntro:" P "not affine and the goal not absorbing"
     |]
  |
   _iIntro (_)

  |fail 1 "iIntro: nothing to introduce"].

Ltac _iIntroForall :=
  lazymatch goal with
  | |- ∀ _, ?P => fail
  | |- ∀ _, _ => intro
  | |- let _ := _ in _ => intro
  | |- _ =>
    iStartProof;
    lazymatch goal with
    | |- envs_entails _ (∀ x : _, _) => let x' := fresh x in _iIntro (x')
    end
  end.
Ltac _iIntro :=
  lazymatch goal with
  | |- _ → ?P => intro
  | |- _ =>
    iStartProof;
    lazymatch goal with
    | |- envs_entails _ (_ -∗ _) => _iIntro (?) ||
        let H := iFresh in
        _iIntroPersistent H ||
        _iIntroSpatial H
    | |- envs_entails _ (_ → _) => _iIntro (?) ||
         let H := iFresh in
         _iIntroSpatial H ||
         _iIntroSpatial H
    end
  end.

Tactic Notation "iRevertHyp" constr(H) "with" tactic1(tac) :=
  eapply tac_revert with H;
    [lazymatch goal with
     | |- match envs_lookup_delete true ?i ?Δ with _ => _ end =>
        lazymatch eval pm_eval in (envs_lookup_delete true i Δ) with
        | Some (?p,_,_) => pm_reduce; tac p
        | None =>
           let H := pretty_ident H in
           fail "iRevert:" H "not found"
        end
     end].

Record iTrm {X As S} :=
  ITrm { itrm : X ; itrm_vars : hlist As ; itrm_hyps : S }.

Tactic Notation "iPoseProofCoreHyp" constr(H) "as" constr(Hnew) :=
  let Δ := iGetCtx in
  notypeclasses refine (tac_pose_proof_hyp _ H Hnew _ _);
    pm_reduce;
    lazymatch goal with
    | |- False =>
      let lookup := pm_eval (envs_lookup_delete false H Δ) in
      lazymatch lookup with
      | None =>
        let H := pretty_ident H in
        fail "iPoseProof:" H "not found"
      | _ =>
        let Hnew := pretty_ident Hnew in
        fail "iPoseProof:" Hnew "not fresh"
      end
    | _ => idtac
    end.

Ltac iIntoEmpValid_go :=
  lazymatch goal with
  | |- IntoEmpValid (let _ := _ in _) _ =>

    lazy zeta; iIntoEmpValid_go
  | |- IntoEmpValid (?φ → ?ψ) _ =>

    notypeclasses refine (into_emp_valid_impl _ _ _ _ _);
      [|iIntoEmpValid_go]
  | |- IntoEmpValid (∀ _, _) _ =>

    notypeclasses refine (into_emp_valid_forall _ _ _ _); iIntoEmpValid_go
  | |- IntoEmpValid (∀.. _, _) _ =>

    notypeclasses refine (into_emp_valid_tforall _ _ _ _); iIntoEmpValid_go
  | |- _ =>
    first
      [
       notypeclasses refine (into_emp_valid_impl _ _ _ _ _);
         [|iIntoEmpValid_go]
      |
       notypeclasses refine (into_emp_valid_forall _ _ _ _); iIntoEmpValid_go
      |
       notypeclasses refine (into_emp_valid_tforall _ _ _ _); iIntoEmpValid_go
      |
       notypeclasses refine (into_emp_valid_here _ _ _) ]
  end.

Ltac iIntoEmpValid :=

  iIntoEmpValid_go;
    [..
    |tc_solve ||
     let φ := lazymatch goal with |- AsEmpValid _ ?φ _ => φ end in
     fail "iPoseProof:" φ "not a BI assertion"].

Tactic Notation "iPoseProofCoreLem" open_constr(lem) "as" tactic3(tac) :=
  let Hnew := iFresh in
  notypeclasses refine (tac_pose_proof _ Hnew _ _ (into_emp_valid_proj _ _ _ lem) _);
    [iIntoEmpValid
    |pm_reduce;
     lazymatch goal with
     | |- False =>
       let Hnew := pretty_ident Hnew in
       fail "iPoseProof:" Hnew "not fresh"
     | _ => tac Hnew
     end];

  try tc_solve.

Local Ltac iSpecializeArgs_go H xs :=
  lazymatch xs with
  | hnil => idtac
  | hcons ?x ?xs =>
     notypeclasses refine (tac_forall_specialize _ H _ _ _ _ _ _ _);
       [pm_reflexivity ||
        let H := pretty_ident H in
        fail "iSpecialize:" H "not found"
       |tc_solve ||
        let P := match goal with |- IntoForall ?P _ => P end in
        fail "iSpecialize: cannot instantiate" P "with" x
       |lazymatch goal with
        | |- ∃ _ : ?A, _ =>
          notypeclasses refine (@ex_intro A _ x _)
        end; [shelve..|pm_reduce; iSpecializeArgs_go H xs]]
  end.
Local Tactic Notation "iSpecializeArgs" constr(H) open_constr(xs) :=
  iSpecializeArgs_go H xs.

Ltac iSpecializePat_go H1 pats :=
  let solve_to_wand H1 :=
    tc_solve ||
    let P := match goal with |- IntoWand _ _ ?P _ _ => P end in
    fail "iSpecialize:" P "not an implication/wand" in
  let solve_done d :=
    lazymatch d with
    | true =>
       first [ done
             | let Q := match goal with |- envs_entails _ ?Q => Q end in
               fail 1 "iSpecialize: cannot solve" Q "using done"
             | let Q := match goal with |- ?Q => Q end in
               fail 1 "iSpecialize: cannot solve" Q "using done" ]
    | false => idtac
    end in
  let Δ := iGetCtx in
  lazymatch pats with
    | [] => idtac
    | SIdent ?H2 [] :: ?pats =>

       notypeclasses refine (tac_specialize false _ H2 _ H1 _ _ _ _ _ _ _ _ _);
         [pm_reflexivity ||
          let H2 := pretty_ident H2 in
          fail "iSpecialize:" H2 "not found"
         |pm_reflexivity ||
          let H1 := pretty_ident H1 in
          fail "iSpecialize:" H1 "not found"
         |tc_solve ||
          let P := match goal with |- IntoWand _ _ ?P ?Q _ => P end in
          let Q := match goal with |- IntoWand _ _ ?P ?Q _ => Q end in
          fail "iSpecialize: cannot instantiate" P "with" Q
         |pm_reduce; iSpecializePat_go H1 pats]
    | SIdent ?H2 ?pats1 :: ?pats =>

       let H2tmp := iFresh in
       iPoseProofCoreHyp H2 as H2tmp;

       iRevertHyp H1 with (fun p =>
         iSpecializePat_go H2tmp pats1;
           [..
           |_iIntroMaybePersistent H1 p]);

         [..
         |
          notypeclasses refine (tac_specialize true _ H2tmp _ H1 _ _ _ _ _ _ _ _ _);
            [pm_reflexivity ||
             let H2tmp := pretty_ident H2tmp in
             fail "iSpecialize:" H2tmp "not found"
            |pm_reflexivity ||
             let H1 := pretty_ident H1 in
             fail "iSpecialize:" H1 "not found"
            |tc_solve ||
             let P := match goal with |- IntoWand _ _ ?P ?Q _ => P end in
             let Q := match goal with |- IntoWand _ _ ?P ?Q _ => Q end in
             fail "iSpecialize: cannot instantiate" P "with" Q
            |pm_reduce; iSpecializePat_go H1 pats]]
    | SPureGoal ?d :: ?pats =>
       notypeclasses refine (tac_specialize_assert_pure _ H1 _ _ _ _ _ _ _ _ _ _ _ _);
         [pm_reflexivity ||
          let H1 := pretty_ident H1 in
          fail "iSpecialize:" H1 "not found"
         |solve_to_wand H1
         |tc_solve ||
          let Q := match goal with |- FromPure _ ?Q _ => Q end in
          fail "iSpecialize:" Q "not pure"
         |solve_done d
         |pm_reduce;
          iSpecializePat_go H1 pats]
    | SGoal (SpecGoal GIntuitionistic false ?Hs_frame [] ?d) :: ?pats =>
       notypeclasses refine (tac_specialize_assert_intuitionistic _ H1 _ _ _ _ _ _ _ _ _ _ _ _);
         [pm_reflexivity ||
          let H1 := pretty_ident H1 in
          fail "iSpecialize:" H1 "not found"
         |solve_to_wand H1
         |tc_solve ||
          let Q := match goal with |- Persistent ?Q => Q end in
          fail "iSpeci

[...]

]]
    | SPureGoal ?d :: ?pats =>
       notypeclasses refine (tac_specialize_assert_pure _ H1 _ _ _ _ _ _ _ _ _ _ _ _);
         [pm_reflexivity ||
          let H1 := pretty_ident H1 in
          fail "iSpecialize:" H1 "not found"
         |solve_to_wand H1
         |tc_solve ||
          let Q := match goal with |- FromPure _ ?Q _ => Q end in
          fail "iSpecialize:" Q "not pure"
         |solve_done d
         |pm_reduce;
          iSpecializePat_go H1 pats]
    | SGoal (SpecGoal GIntuitionistic false ?Hs_frame [] ?d) :: ?pats =>
       notypeclasses refine (tac_specialize_assert_intuitionistic _ H1 _ _ _ _ _ _ _ _ _ _ _ _);
         [pm_reflexivity ||
          let H1 := pretty_ident H1 in
          fail "iSpecialize:" H1 "not found"
         |solve_to_wand H1
         |tc_solve ||
          let Q := match goal with |- Persistent ?Q => Q end in
          fail "iSpecialize:" Q "not persistent"
         |tc_solve
         |pm_reduce; iFrame Hs_frame; solve_done d
         |pm_reduce; iSpecializePat_go H1 pats]
    | SGoal (SpecGoal GIntuitionistic _ _ _ _) :: ?pats =>
       fail "iSpecialize: cannot select hypotheses for intuitionistic premise"
    | SGoal (SpecGoal ?m ?lr ?Hs_frame ?Hs ?d) :: ?pats =>
       let Hs' := eval cbv in (if lr then Hs else Hs_frame ++ Hs) in
       notypeclasses refine (tac_specialize_assert _ H1 _
           (if m is GModal then true else false) lr Hs' _ _ _ _ _ _ _ _ _);
         [pm_reflexivity ||
          let H1 := pretty_ident H1 in
          fail "iSpecialize:" H1 "not found"
         |solve_to_wand H1
         |tc_solve || fail "iSpecialize: goal not a modality"
         |pm_reduce;
          lazymatch goal with
          | |- False =>
            let Hs' := iMissingHypsCore Δ Hs' in
            fail "iSpecialize: hypotheses" Hs' "not found"
          | _ =>
            notypeclasses refine (conj _ _);
              [iFrame Hs_frame; solve_done d
              |iSpecializePat_go H1 pats]
          end]
    | SAutoFrame GIntuitionistic :: ?pats =>
       notypeclasses refine (tac_specialize_assert_intuitionistic _ H1 _ _ _ _ _ _ _ _ _ _ _ _);
         [pm_reflexivity ||
          let H1 := pretty_ident H1 in
          fail "iSpecialize:" H1 "not found"
         |solve_to_wand H1
         |tc_solve ||
          let Q := match goal with |- Persistent ?Q => Q end in
          fail "iSpecialize:" Q "not persistent"
         |tc_solve ||
          fail "iSpecialize: Cannot find IntoAbsorbingly;"
               "this should not happen, please report a bug"
         |pm_reduce; solve [iFrame "∗ #"]
         |pm_reduce; iSpecializePat_go H1 pats]
    | SAutoFrame ?m :: ?pats =>
       notypeclasses refine (tac_specialize_frame _ H1 _
           (if m is GModal then true else false) _ _ _ _ _ _ _ _ _ _ _);
         [pm_reflexivity ||
          let H1 := pretty_ident H1 in
          fail "iSpecialize:" H1 "not found"
         |solve_to_wand H1
         |tc_solve || fail "iSpecialize: goal not a modality"
         |pm_reduce;
          first
            [notypeclasses refine (tac_unlock_emp _ _ _)
            |notypeclasses refine (tac_unlock_True _ _ _)
            |iFrame "∗ #"; notypeclasses refine (tac_unlock _ _ _)
            |let P :=
               match goal with |- envs_entails _ (?P ∗ locked _)%I => P end in
             fail 1 "iSpecialize: premise" P "cannot be solved by framing"]
         |exact eq_refl]; _iIntroSpatial H1; iSpecializePat_go H1 pats
    end.

Local Tactic Notation "iSpecializePat" open_constr(H) constr(pat) :=
  let pats := spec_pat.parse pat in iSpecializePat_go H pats.

Fixpoint use_tac_specialize_intuitionistic_helper {M}
    (Δ : envs M) (pats : list spec_pat) : bool :=
  match pats with
  | [] => false
  | SPureGoal _ :: pats =>
     use_tac_specialize_intuitionistic_helper Δ pats
  | SAutoFrame _ :: _ => true
  | SIdent H _ :: pats =>
     match envs_lookup_delete false H Δ with
     | Some (false, _, Δ) => true
     | Some (true, _, Δ) => use_tac_specialize_intuitionistic_helper Δ pats
     | None => false
     end
  | SGoal (SpecGoal GModal _ _ _ _) :: _ => false
  | SGoal (SpecGoal GIntuitionistic _ _ _ _) :: pats =>
     use_tac_specialize_intuitionistic_helper Δ pats
  | SGoal (SpecGoal GSpatial neg Hs_frame Hs _) :: pats =>
     match envs_split (if neg is true then Right else Left)
                      (if neg then Hs else pm_app Hs_frame Hs) Δ with
     | Some (Δ1,Δ2) => if env_spatial_is_nil Δ1
                       then use_tac_specialize_intuitionistic_helper Δ2 pats
                       else true
     | None => false
     end
  end.

Tactic Notation "iSpecializeCore" open_constr(H)
    "with" open_constr(xs) open_constr(pat) "as" constr(p) :=
  let p := intro_pat_intuitionistic p in
  let pat := spec_pat.parse pat in
  let H :=
    lazymatch type of H with
    | string => constr:(INamed H)
    | _ => H
    end in
  iSpecializeArgs H xs; [..|
    lazymatch type of H with
    | ident =>
       let pat := spec_pat.parse pat in
       let Δ := iGetCtx in

       let b := eval lazy [use_tac_specialize_intuitionistic_helper] in
         (if p then use_tac_specialize_intuitionistic_helper Δ pat else false) in
       lazymatch eval pm_eval in b with
       | true =>

          lazymatch iTypeOf H with
          | Some (?q, _) =>
             let PROP := iBiOfGoal in

             lazymatch eval lazy in (q || tc_to_bool (BiAffine PROP)) with
             | true =>
                notypeclasses refine (tac_specialize_intuitionistic_helper _ H _ _ _ _ _ _ _ _ _ _);
                  [pm_reflexivity

                  |pm_reduce; tc_solve

                  |iSpecializePat H pat;
                    [..
                    |notypeclasses refine (tac_specialize_intuitionistic_helper_done _ H _ _ _);
                     pm_reflexivity]
                  |tc_solve ||
                   let Q := match goal with |- IntoPersistent _ ?Q _ => Q end in
                   fail "iSpecialize:" Q "not persistent"
                  |pm_reduce ]
             | false => iSpecializePat H pat
             end
          | None =>
             let H := pretty_ident H in
             fail "iSpecialize:" H "not found"
          end
       | false => iSpecializePat H pat
       end
    | _ => fail "iSpecialize:" H "should be a hypothesis, use iPoseProof instead"
    end].

Tactic Notation "iSpecializeCore" open_constr(t) "as" constr(p) :=
  lazymatch type of t with
  | string => iSpecializeCore t with hnil "" as p
  | ident => iSpecializeCore t with hnil "" as p
  | _ =>
    lazymatch t with
    | ITrm ?H ?xs ?pat => iSpecializeCore H with xs pat as p
    | _ => fail "iSpecialize:" t "should be a proof mode term"
    end
  end.

Tactic Notation "iPoseProofCore" open_constr(lem)
    "as" constr(p) tactic3(tac) :=
  iStartProof;
  let t := lazymatch lem with ITrm ?t ?xs ?pat => t | _ => lem end in
  let t := lazymatch type of t with string => constr:(INamed t) | _ => t end in
  let spec_tac Htmp :=
    lazymatch lem with
    | ITrm _ ?xs ?pat => iSpecializeCore (ITrm Htmp xs pat) as p
    | _ => idtac
    end in
  lazymatch type of t with
  | ident =>
     let Htmp := iFresh in
     iPoseProofCoreHyp t as Htmp; spec_tac Htmp; [..|tac Htmp]
  | _ => iPoseProofCoreLem t as (fun Htmp => spec_tac Htmp; [..|tac Htmp])
  end.

Tactic Notation "iOrDestruct" constr(H) "as" constr(H1) constr(H2) :=
  eapply tac_or_destruct with H _ H1 H2 _ _ _;
    [pm_reflexivity ||
     let H := pretty_ident H in
     fail "iOrDestruct:" H "not found"
    |tc_solve ||
     let P := match goal with |- IntoOr ?P _ _ => P end in
     fail "iOrDestruct: cannot destruct" P
    | pm_reduce;
      lazymatch goal with
      | |- False =>
        let H1 := pretty_ident H1 in
        let H2 := pretty_ident H2 in
        fail "iOrDestruct:" H1 "or" H2 "not fresh"
      |  _ => split
      end].

Ltac _iAndDestruct H H1 H2 :=
  eapply tac_and_destruct with H _ H1 H2 _ _ _;
    [pm_reflexivity ||
     let H := pretty_ident H in
     fail "iAndDestruct:" H "not found"
    |pm_reduce; tc_solve ||
     let P :=
       lazymatch goal with
       | |- IntoSep ?P _ _ => P
       | |- IntoAnd _ ?P _ _ => P
       end in
     fail "iAndDestruct: cannot destruct" P
    |pm_reduce;
     lazymatch goal with
       | |- False =>
         let H1 := pretty_ident H1 in
         let H2 := pretty_ident H2 in
         fail "iAndDestruct:" H1 "or" H2 "not fresh"
       | _ => idtac
     end].

Ltac _iAndDestructChoice H d H' :=
  eapply tac_and_destruct_choice with H _ d H' _ _ _;
    [pm_reflexivity || fail "iAndDestructChoice:" H "not found"
    |pm_reduce; tc_solve ||
     let P := match goal with |- TCOr (IntoAnd _ ?P _ _) _ => P end in
     fail "iAndDestructChoice: cannot destruct" P
    |pm_reduce;
     lazymatch goal with
     | |- False =>
       let H' := pretty_ident H' in
       fail "iAndDestructChoice:" H' "not fresh"
     | _ => idtac
     end].

Tactic Notation "_iExistDestruct" constr(H)
    "as" simple_intropattern(x) constr(Hx) :=
  eapply tac_exist_destruct with H _ Hx _ _ _;
    [pm_reflexivity ||
     let H := pretty_ident H in
     fail "iExistDestruct:" H "not found"
    |tc_solve ||
     let P := match goal with |- IntoExist ?P _ _ => P end in
     fail "iExistDestruct: cannot destruct" P|];
    let name := lazymatch goal with
                | |- let _ := (λ name, _) in _ => name
                end in
    intros _;
    let y := fresh name in
    intros y; pm_reduce;
    lazymatch goal with
    | |- False =>
      let Hx := pretty_ident Hx in
      fail "iExistDestruct:" Hx "not fresh"
    | _ => revert y; intros x
    end.

Tactic Notation "iModIntro" uconstr(sel) :=
  iStartProof;
  notypeclasses refine (tac_modal_intro _ _ sel _ _ _ _ _ _ _ _ _ _ _ _ _ _);
    [tc_solve ||
     fail "iModIntro: the goal is not a modality"
    |tc_solve ||
     let s := lazymatch goal with |- IntoModalIntuitionisticEnv _ _ _ ?s => s end in
     lazymatch eval hnf in s with
     | MIEnvForall ?C => fail "iModIntro: intuitionistic context does not satisfy" C
     | MIEnvIsEmpty => fail "iModIntro: intuitionistic context is non-empty"
     end
    |tc_solve ||
     let s := lazymatch goal with |- IntoModalSpatialEnv _ _ _ ?s _ => s end in
     lazymatch eval hnf in s with
     | MIEnvForall ?C => fail "iModIntro: spatial context does not satisfy" C
     | MIEnvIsEmpty => fail "iModIntro: spatial context is non-empty"
     end
    |pm_reduce; tc_solve ||
     fail "iModIntro: cannot filter spatial context when goal is not absorbing"
    |iSolveSideCondition
    |pm_prettify
      ].
Tactic Notation "iModIntro" := iModIntro _.

Tactic Notation "iModCore" constr(H) "as" constr(H') :=
  eapply tac_modal_elim with H H' _ _ _ _ _ _;
    [pm_reflexivity || fail "iMod:" H "not found"
    |tc_solve ||
     let P := match goal with |- ElimModal _ _ _ ?P _ _ _ => P end in
     let Q := match goal with |- ElimModal _ _ _ _ _ ?Q _ => Q end in
     fail "iMod: cannot eliminate modality" P "in" Q
    |iSolveSideCondition
    |pm_reduce;
     lazymatch goal with
     | |- False =>
       let H' := pretty_ident H' in
       fail "iMod:" H' "not fresh"
     | _ => pm_prettify
     end].

Ltac _ident_for_pat pat :=
  lazymatch pat with
  | IIdent ?x => x
  | _ => let x := iFresh in x
  end.

Ltac _ident_for_pat_default pat default :=
  lazymatch pat with
  | IIdent ?x => x
  | _ =>
    lazymatch default with
    | IAnon _ => default
    | _ => let x := iFresh in x
    end
  end.

Ltac _iDestructHypGo Hz pat0 pat :=
  lazymatch pat with
  | IFresh =>
     lazymatch Hz with
     | IAnon _ => idtac
     | INamed ?Hz => let Hz' := iFresh in iRename Hz into Hz'
     end
  | IDrop => _iClearHyp Hz
  | IFrame => iFrame Hz
  | IIdent Hz => idtac
  | IIdent ?y => iRename Hz into y
  | IList [[]] => iExFalso; iExact Hz

  | IList [[?pat1; IDrop]] =>
     let x := _ident_for_pat_default pat1 Hz in
     _iAndDestructChoice Hz Left x;
     _iDestructHypGo x pat0 pat1
  | IList [[IDrop; ?pat2]] =>
     let x := _ident_for_pat_default pat2 Hz in
     _iAndDestructChoice Hz Right x;
     _iDestructHypGo x pat0 pat2

  | IList [[IPure IGallinaAnon; ?pat2]] =>
     let x := _ident_for_pat_default pat2 Hz in
     _iExistDestruct Hz as ? x; _iDestructHypGo x pat0 pat2
  | IList [[IPure (IGallinaNamed ?s); ?pat2]] =>
     let x := fresh in
     let y := _ident_for_pat_default pat2 Hz in
     _iExistDestruct Hz as x y;
     rename_by_string x s;
     _iDestructHypGo y pat0 pat2
  | IList [[?pat1; ?pat2]] =>

     let x1 := _ident_for_pat_default pat1 Hz in
     let x2 := _ident_for_pat pat2 in
     _iAndDestruct Hz x1 x2;
     _iDestructHypGo x1 pat0 pat1; _iDestructHypGo x2 pat0 pat2
  | IList [_ :: _ :: _] => fail "iDestruct:" pat0 "has too many conjuncts"
  | IList [[_]] => fail "iDestruct:" pat0 "has just a single conjunct"

  | IList [[?pat1];[?pat2]] =>
     let x1 := _ident_for_pat_default pat1 Hz in
     let x2 := _ident_for_pat_default pat2 Hz in
     iOrDestruct Hz as x1 x2;
     [_iDestructHypGo x1 pat0 pat1|_iDestructHypGo x2 pat0 pat2]

  | IList (_ :: _ :: _ :: _) => fail "iDestruct:" pat0 "has too many disjuncts"

  | IList [_;_] => fail "iDestruct: in" pat0 "a disjunct has multiple patterns"

  | IPure IGallinaAnon => iPure Hz as ?
  | IPure (IGallinaNamed ?s) =>
     let x := fresh in
     iPure Hz as x;
     rename_by_string x s
  | IRewrite Right => iPure Hz as ->
  | IRewrite Left => iPure Hz as <-
  | IIntuitionistic ?pat =>
    let x := _ident_for_pat_default pat Hz in
    _iIntuitionistic Hz x; _iDestructHypGo x pat0 pat
  | ISpatial ?pat =>
    let x := _ident_for_pat_default pat Hz in
    _iSpatial Hz x; _iDestructHypGo x pat0 pat
  | IModalElim ?pat =>
    let x := _ident_for_pat_default pat Hz in
    iModCore Hz as x; _iDestructHypGo x pat0 pat
  | _ => fail "iDestruct:" pat0 "is not supported due to" pat
  end.
Ltac _iDestructHypFindPat Hgo pat found pats :=
  lazymatch pats with
  | [] =>
    lazymatch found with
    | true => pm_prettify
    | false => fail "iDestruct:" pat "should contain exactly one proper introduction pattern"
    end
  | ISimpl :: ?pats => simpl; _iDestructHypFindPat Hgo pat found pats
  | IClear ?H :: ?pats => iClear H; _iDestructHypFindPat Hgo pat found pats
  | IClearFrame ?H :: ?pats => iFrame H; _iDestructHypFindPat Hgo pat found pats
  | ?pat1 :: ?pats =>
     lazymatch found with
     | false => _iDestructHypGo Hgo pat pat1; _iDestructHypFindPat Hgo pat true pats
     | true => fail "iDestruct:" pat "should contain exactly one proper introduction pattern"
     end
  end.

Ltac _iDestructHyp0 H pat :=
  let pats := intro_pat.parse pat in
  _iDestructHypFindPat H pat false pats.
Ltac _iDestructHyp H xs pat :=
  ltac1_list_iter ltac:(fun x => _iExistDestruct H as x H) xs;
  _iDestructHyp0 H pat.

Tactic Notation "iDestructHyp" constr(H) "as" constr(pat) :=
  _iDestructHyp0 H pat.

Ltac _iIntros_go pats startproof :=
  lazymatch pats with
  | [] =>
    lazymatch startproof with
    | true => iStartProof
    | false => idtac
    end

  | IPure (IGallinaNamed ?s) :: ?pats =>
     let i := fresh in
     _iIntro (i);
     rename_by_string i s;
     _iIntros_go pats startproof
  | IPure IGallinaAnon :: ?pats => _iIntro (?); _iIntros_go pats startproof
  | IIntuitionistic (IIdent ?H) :: ?pats => _iIntroPersistent H; _iIntros_go pats false
  | IDrop :: ?pats => _iIntroDrop; _iIntros_go pats startproof
  | IIdent ?H :: ?pats => _iIntroSpatial H; _iIntros_go pats startproof

  | IPureIntro :: ?pats => iPureIntro; _iIntros_go pats false
  | IModalIntro :: ?pats => iModIntro; _iIntros_go pats false
  | IForall :: ?pats => repeat _iIntroForall; _iIntros_go pats startproof
  | IAll :: ?pats => repeat (_iIntroForall || _iIntro); _iIntros_go pats startproof

  | ISimpl :: ?pats => simpl; _iIntros_go pats startproof
  | IClear ?H :: ?pats => iClear H; _iIntros_go pats false
  | IClearFrame ?H :: ?pats => iFrame H; _iIntros_go pats false
  | IDone :: ?pats => try done; _iIntros_go pats startproof

  | IIntuitionistic ?pat :: ?pats =>
     let H := iFresh in _iIntroPersistent H; iDestructHyp H as pat; _iIntros_go pats false
  | ?pat :: ?pats =>
     let H := iFresh in _iIntroSpatial H; iDestructHyp H as pat; _iIntros_go pats false
  end.

Ltac _iIntros0 pat :=
  let pats := intro_pat.parse pat in

  lazymatch pats with
  | [] => idtac
  | _ => _iIntros_go pats true
  end.
Ltac _iIntros xs pat :=
  ltac1_list_iter ltac:(fun x => _iIntro (x)) xs;
  _iIntros0 pat.
Tactic Notation "iIntros" "(" ne_simple_intropattern_list(xs) ")" :=
  _iIntros xs "".

Tactic Notation "iDestructCore" open_constr(lem) "as" constr(p) tactic3(tac) :=
  let intro_destruct n :=
    let rec go n' :=
      lazymatch n' with
      | 0 => fail "iDestruct: cannot introduce" n "hypotheses"
      | 1 => repeat _iIntroForall; let H := iFresh in _iIntroSpatial H; tac H
      | S ?n' => repeat _iIntroForall; let H := iFresh in _iIntroSpatial H; go n'
      end in
    intros; go n in
  lazymatch type of lem with
  | nat => intro_destruct lem
  | Z =>

     let n := eval cbv in (Z.to_nat lem) in intro_destruct n
  | ident => tac lem
  | string => tac constr:(INamed lem)
  | _ => iPoseProofCore lem as p tac
  end.
Tactic Notation "iMod" open_constr(lem) "as" "(" ne_simple_intropattern_list(xs) ")"
    constr(pat) :=
  iDestructCore lem as false (fun H => iModCore H as H; last _iDestructHyp H xs pat).
Module Export iris_DOT_proofmode_DOT_ltac_tactics.
Module Export iris.
Module Export proofmode.
Module Export ltac_tactics.
End ltac_tactics.

End proofmode.

End iris.

End iris_DOT_proofmode_DOT_ltac_tactics.

Section class_instances.
Context {PROP : bi}.
Implicit Types P Q R : PROP.

Global Instance as_emp_valid_emp_valid d P : AsEmpValid0 d (⊢ P) P | 0.
Admitted.

Global Instance into_sep_sep P Q : IntoSep (P ∗ Q) P Q.
Admitted.

Global Instance into_exist_exist {A} (Φ : A → PROP) name :
  AsIdentName Φ name → IntoExist (bi_exist Φ) Φ name.
Admitted.
End class_instances.
Module Export class_instances.
End class_instances.
Import iris.proofmode.modality_instances.

Section class_instances_updates.
Context {PROP : bi}.
Implicit Types P Q R : PROP.
Global Instance elim_modal_bupd_fupd
    `{!BiBUpd PROP, !BiFUpd PROP, !BiBUpdFUpd PROP} p E1 E2 P Q :
  ElimModal True p false (|==> P) P (|={E1,E2}=> Q) (|={E1,E2}=> Q) | 10.
Admitted.
End class_instances_updates.
Module Export class_instances_updates.
End class_instances_updates.
Import iris.bi.telescopes.
Import iris.proofmode.classes.
Import iris.proofmode.classes_make.

Section class_instances_frame.
Context {PROP : bi}.
Implicit Types P Q R : PROP.
Global Instance frame_here p R : Frame p R R emp | 1.
Admitted.
Global Instance frame_sep_l R P1 P2 Q Q' :
  Frame false R P1 Q → MakeSep Q P2 Q' → Frame false R (P1 ∗ P2) Q' | 9.
Admitted.

Inductive GatherEvarsEq {A} (x : A) : A → Prop :=
  GatherEvarsEq_refl : GatherEvarsEq x x.

#[projections(primitive)] Class FrameExistRequirements
    (p : bool) (R : PROP) {A} (Φ : A → PROP) (a' : A) (G' : PROP) := {
  frame_exist_witness : A;
  frame_exist_resource : PROP;
  frame_exist_proof : Frame p R (Φ frame_exist_witness) frame_exist_resource;
  frame_exist_witness_eq : GatherEvarsEq frame_exist_witness a';
  frame_exist_resource_eq : TCEq frame_exist_resource G'
}.
Global Existing Instance Build_FrameExistRequirements.

Inductive TCCbnTele {A} (x : A) : A → Prop :=
  TCCbnTele_refl : TCCbnTele x x.

Global Instance frame_exist {A} p R (Φ : A → PROP)
    (TT : tele) (g : TT → A) (Ψ : TT → PROP) Q :
  FrameInstantiateExistEnabled →
  (∀ c, FrameExistRequirements p R Φ (g c) (Ψ c)) →
  TCCbnTele (∃.. c, Ψ c)%I Q →
  Frame p R (∃ a, Φ a) Q.
Admitted.
Global Instance frame_fupd `{!BiFUpd PROP} p E1 E2 R P Q :
  Frame p R P Q → Frame p R (|={E1,E2}=> P) (|={E1,E2}=> Q) | 2.
Admitted.
End class_instances_frame.

Ltac solve_gather_evars_eq :=
  lazymatch goal with
  | |- GatherEvarsEq ?a (?g ?c) =>
    let rec retcon_tele T arg :=

      match a with
      | context [?term] =>
        is_evar term;
        let X := type of term in
        lazymatch X with
        | tele => fail
        | _ => idtac
        end;
        let T' := open_constr:(_) in
        unify T (TeleS (λ _ : X, T'));

        unify term (tele_arg_head (λ _ : X, T') arg);

        retcon_tele T' (tele_arg_tail (λ _ : X, T') arg)

      | _ =>

        unify T TeleO
      end
    in
    let T' := lazymatch (type of c) with tele_arg ?T => T end in
    retcon_tele T' c;
    exact (GatherEvarsEq_refl _)
  end.

Global Hint Extern 0 (GatherEvarsEq _ _) =>
  solve_gather_evars_eq : typeclass_instances.

Global Hint Extern 0 (TCCbnTele _ _) =>
  cbn [bi_texist tele_fold tele_bind tele_arg_head tele_arg_tail];
  exact (TCCbnTele_refl _) : typeclass_instances.
Module Export class_instances_frame.
End class_instances_frame.

Export iris.proofmode.classes_make.

Section class_instances_make.
Context {PROP : bi}.
Implicit Types P Q R : PROP.

Global Instance make_sep_emp_l P : KnownLMakeSep emp P P.
Admitted.
End class_instances_make.
Module Export class_instances_make.
End class_instances_make.

Export iris.proofmode.ltac_tactics.
Module Export iris_DOT_proofmode_DOT_proofmode.
Module Export iris.
Module Export proofmode.
Module Export proofmode.
End proofmode.

End proofmode.

End iris.

End iris_DOT_proofmode_DOT_proofmode.
Export iris.algebra.cmra.

Record agree (A : Type) : Type := {
  agree_car : list A;
  agree_not_nil : bool_decide (agree_car = []) = false
}.
Global Arguments agree_car {_} _.

Section agree.
Context {SI : sidx} {A : ofe}.
Local Instance agree_dist : Dist (agree A).
Admitted.
Local Instance agree_equiv : Equiv (agree A).
Admitted.

Definition agree_ofe_mixin : OfeMixin (agree A).
Admitted.
Canonical Structure agreeO := Ofe (agree A) agree_ofe_mixin.
Local Instance agree_validN_instance : ValidN (agree A).
Admitted.
Local Instance agree_valid_instance : Valid (agree A).
Admitted.

Local Program Instance agree_op_instance : Op (agree A) := λ x y,
  {| agree_car := agree_car x ++ agree_car y |}.
Admit Obligations.
Local Instance agree_pcore_instance : PCore (agree A).
Admitted.

Definition agree_cmra_mixin : CmraMixin (agree A).
Admitted.
Canonical Structure agreeR : cmra.
exact (Cmra (agree A) agree_cmra_mixin).
Defined.

End agree.
Global Arguments agreeR {_} _.

Section agree_map.
End agree_map.
Admit Obligations.
Module Export iris_DOT_algebra_DOT_agree.
Module Export iris.
Module Export algebra.
Module Export agree.
End agree.

End algebra.

End iris.

End iris_DOT_algebra_DOT_agree.
Module Export cmra.
End cmra.
Export iris.algebra.cmra.
Export iris.algebra.stepindex_finite.

Record uPred (M : ucmra) : Type := UPred {
  uPred_holds : nat → M → Prop;

  uPred_mono n1 n2 x1 x2 :
    uPred_holds n1 x1 → x1 ≼{n2} x2 → n2 ≤ n1 → uPred_holds n2 x2
}.

Local Coercion uPred_holds : uPred >-> Funclass.

Section cofe.
  Context {M : ucmra}.
Local Instance uPred_equiv : Equiv (uPred M).
Admitted.
Local Instance uPred_dist : Dist (uPred M).
Admitted.
  Definition uPred_ofe_mixin : OfeMixin (uPred M).
Admitted.
Canonical Structure uPredO : ofe.
exact (Ofe (uPred M) uPred_ofe_mixin).
Defined.

  Program Definition uPred_compl : Compl uPredO := λ c,
    {| uPred_holds n x := ∀ n', n' ≤ n → ✓{n'} x → c n' n' x |}.
Admit Obligations.
  Global Program Instance uPred_cofe : Cofe uPredO := cofe_finite uPred_compl _.
Admit Obligations.
End cofe.
Global Arguments uPredO : clear implicits.

Inductive uPred_entails {M} (P Q : uPred M) : Prop :=
  { uPred_in_entails : ∀ n x, ✓{n} x → P n x → Q n x }.
Global Hint Resolve uPred_mono : uPred_def.

Local Program Definition uPred_pure_def {M} (φ : Prop) : uPred M :=
  {| uPred_holds n x := φ |}.
Solve Obligations with done.
Local Definition uPred_pure_aux : seal (@uPred_pure_def).
Admitted.
Definition uPred_pure := uPred_pure_aux.(unseal).
Global Arguments uPred_pure {M}.

Local Program Definition uPred_and_def {M} (P Q : uPred M) : uPred M :=
  {| uPred_holds n x := P n x ∧ Q n x |}.
Solve Obligations with naive_solver eauto 2 with uPred_def.
Local Definition uPred_and_aux : seal (@uPred_and_def).
Admitted.
Definition uPred_and := uPred_and_aux.(unseal).
Global Arguments uPred_and {M}.

Local Program Definition uPred_or_def {M} (P Q : uPred M) : uPred M :=
  {| uPred_holds n x := P n x ∨ Q n x |}.
Solve Obligations with naive_solver eauto 2 with uPred_def.
Local Definition uPred_or_aux : seal (@uPred_or_def).
Admitted.
Definition uPred_or := uPred_or_aux.(unseal).
Global Arguments uPred_or {M}.

Local Program Definition uPred_impl_def {M} (P Q : uPred M) : uPred M :=
  {| uPred_holds n x := ∀ n' x',
       x ≼ x' → n' ≤ n → ✓{n'} x' → P n' x' → Q n' x' |}.
Admit Obligations.
Local Definition uPred_impl_aux : seal (@uPred_impl_def).
Admitted.
Definition uPred_impl := uPred_impl_aux.(unseal).
Global Arguments uPred_impl {M}.

Local Program Definition uPred_forall_def {M A} (Ψ : A → uPred M) : uPred M :=
  {| uPred_holds n x := ∀ a, Ψ a n x |}.
Solve Obligations with naive_solver eauto 2 with uPred_def.
Local Definition uPred_forall_aux : seal (@uPred_forall_def).
Admitted.
Definition uPred_forall := uPred_forall_aux.(unseal).

Local Program Definition uPred_exist_def {M A} (Ψ : A → uPred M) : uPred M :=
  {| uPred_holds n x := ∃ a, Ψ a n x |}.
Solve Obligations with naive_solver eauto 2 with uPred_def.
Local Definition uPred_exist_aux : seal (@uPred_exist_def).
Admitted.
Definition uPred_exist := uPred_exist_aux.(unseal).

Local Program Definition uPred_sep_def {M} (P Q : uPred M) : uPred M :=
  {| uPred_holds n x := ∃ x1 x2, x ≡{n}≡ x1 ⋅ x2 ∧ P n x1 ∧ Q n x2 |}.
Admit Obligations.
Local Definition uPred_sep_aux : seal (@uPred_sep_def).
Admitted.
Definition uPred_sep := uPred_sep_aux.(unseal).
Global Arguments uPred_sep {M}.

Local Program Definition uPred_wand_def {M} (P Q : uPred M) : uPred M :=
  {| uPred_holds n x := ∀ n' x',
       n' ≤ n → ✓{n'} (x ⋅ x') → P n' x' → Q n' (x ⋅ x') |}.
Admit Obligations.
Local Definition uPred_wand_aux : seal (@uPred_wand_def).
Admitted.
Definition uPred_wand := uPred_wand_aux.(unseal).
Global Arguments uPred_wand {M}.

Local Program Definition uPred_plainly_def {M} (P : uPred M) : uPred M :=
  {| uPred_holds n x := P n ε |}.
Solve Obligations with naive_solver eauto using uPred_mono, ucmra_unit_validN.

Local Program Definition uPred_persistently_def {M} (P : uPred M) : uPred M :=
  {| uPred_holds n x := P n (core x) |}.
Solve Obligations with naive_solver eauto using uPred_mono, cmra_core_monoN.
Local Definition uPred_persistently_aux : seal (@uPred_persistently_def).
Admitted.
Definition uPred_persistently := uPred_persistently_aux.(unseal).
Global Arguments uPred_persistently {M}.

Local Program Definition uPred_later_def {M} (P : uPred M) : uPred M :=
  {| uPred_holds n x := match n return _ with 0 => True | S n' => P n' x end |}.
Admit Obligations.
Local Definition uPred_later_aux : seal (@uPred_later_def).
Admitted.
Definition uPred_later := uPred_later_aux.(unseal).
Global Arguments uPred_later {M}.

Section primitive.
End primitive.
Module Export iris_DOT_base_logic_DOT_upred.
Module Export iris.
Module Export base_logic.
Module Export upred.
End upred.

End base_logic.

End iris.

End iris_DOT_base_logic_DOT_upred.
Export iris.bi.derived_connectives.
Export iris.bi.updates.
Export iris.base_logic.upred.
Definition uPred_emp {M} : uPred M.
Admitted.

Lemma uPred_bi_mixin (M : ucmra) :
  BiMixin
    uPred_entails uPred_emp uPred_pure uPred_and uPred_or uPred_impl
    (@uPred_forall M) (@uPred_exist M) uPred_sep uPred_wand.
Admitted.

Lemma uPred_bi_persistently_mixin (M : ucmra) :
  BiPersistentlyMixin
    uPred_entails uPred_emp uPred_and
    (@uPred_exist M) uPred_sep uPred_persistently.
Admitted.

Lemma uPred_bi_later_mixin (M : ucmra) :
  BiLaterMixin
    uPred_entails uPred_pure uPred_or uPred_impl
    (@uPred_forall M) (@uPred_exist M) uPred_sep uPred_persistently uPred_later.
Admitted.
Canonical Structure uPredI (M : ucmra) : bi.
exact ({| bi_ofe_mixin := ofe_mixin_of (uPred M);
     bi_bi_mixin := uPred_bi_mixin M;
     bi_bi_later_mixin := uPred_bi_later_mixin M;
     bi_bi_persistently_mixin := uPred_bi_persistently_mixin M |}).
Defined.
Global Instance uPred_bi_bupd M : BiBUpd (uPredI M).
Admitted.
Module Export iris.
Module Export base_logic.
Module Export bi.
End bi.

End base_logic.

End iris.

Export iris.algebra.cmra.

Notation frac := Qp (only parsing).
  Canonical Structure fracO := leibnizO frac.
Local Instance frac_valid_instance : Valid frac.
Admitted.
Local Instance frac_pcore_instance : PCore frac.
Admitted.
Local Instance frac_op_instance : Op frac.
Admitted.

  Definition frac_ra_mixin : RAMixin frac.
Admitted.
  Canonical Structure fracR := discreteR frac frac_ra_mixin.
Export iris.base_logic.bi.
Export iris.algebra.agree.
Export iris.algebra.gmap.
Definition gmap_viewR {SI : sidx} (K : Type) `{Countable K} (V : cmra) : cmra.
Admitted.
Definition authR {SI : sidx} (A : ucmra) : cmra.
Admitted.

Structure gFunctor := GFunctor {
  gFunctor_F :> rFunctor;
  gFunctor_map_contractive : rFunctorContractive gFunctor_F;
}.

Record gFunctors := GFunctors {
  gFunctors_len : nat;
  gFunctors_lookup : fin gFunctors_len → gFunctor
}.

Definition gid (Σ : gFunctors) := fin (gFunctors_len Σ).

Definition gname := positive.
Definition iResUR (Σ : gFunctors) : ucmra.
Admitted.
  Notation iProp Σ := (uPred (iResUR Σ)).
  Notation iPropO Σ := (uPredO (iResUR Σ)).

Class inG (Σ : gFunctors) (A : cmra) := InG {
  inG_id : gid Σ;
  inG_apply := rFunctor_apply (gFunctors_lookup Σ inG_id);
  inG_prf : A = inG_apply (iPropO Σ) _;
}.
Local Definition own_def `{!inG Σ A} (γ : gname) (a : A) : iProp Σ.
Admitted.
Local Definition own_aux : seal (@own_def).
Admitted.
Definition own := own_aux.(unseal).
Global Arguments own {Σ A _} γ a.
Local Instance nat_valid_instance : Valid nat.
Admitted.
Local Instance nat_pcore_instance : PCore nat.
Admitted.
Local Instance nat_op_instance : Op nat.
Admitted.
  Lemma nat_ra_mixin : RAMixin nat.
Admitted.
Canonical Structure natR : cmra.
exact (discreteR nat nat_ra_mixin).
Defined.
Local Instance nat_unit_instance : Unit nat.
Admitted.
  Lemma nat_ucmra_mixin : UcmraMixin nat.
Admitted.
Canonical Structure natUR : ucmra.
exact (Ucmra nat nat_ucmra_mixin).
Defined.

Class lcGS (Σ : gFunctors) := LcGS {
  #[local] lcGS_inG :: inG Σ (authR natUR);
  lcGS_name : gname;
}.
Export stdpp.coPset.

Inductive coPset_disj :=
  | CoPset : coPset → coPset_disj
  | CoPsetInvalid : coPset_disj.
  Canonical Structure coPset_disjO := leibnizO coPset_disj.
Local Instance coPset_disj_valid_instance : Valid coPset_disj.
Admitted.
Local Instance coPset_disj_op_instance : Op coPset_disj.
Admitted.
Local Instance coPset_disj_pcore_instance : PCore coPset_disj.
Admitted.

  Lemma coPset_disj_ra_mixin : RAMixin coPset_disj.
Admitted.
  Canonical Structure coPset_disjR := discreteR coPset_disj coPset_disj_ra_mixin.
Import iris.algebra.gset.
  Class wsatGpreS (Σ : gFunctors) : Set := WsatGpreS {
    wsatGpreS_inv : inG Σ (gmap_viewR positive (agreeR $ laterO (iPropO Σ)));
    wsatGpreS_enabled : inG Σ coPset_disjR;
    wsatGpreS_disabled : inG Σ (gset_disjR positive);
  }.

  Class wsatGS (Σ : gFunctors) : Set := WsatG {
    wsat_inG : wsatGpreS Σ;
    invariant_name : gname;
    enabled_name : gname;
    disabled_name : gname;
  }.

Inductive has_lc := HasLc | HasNoLc.

Class invGS_gen (hlc : has_lc) (Σ : gFunctors) : Set := InvG {
  #[global] invGS_wsat :: wsatGS Σ;
  #[global] invGS_lc :: lcGS Σ;
}.
Global Instance uPred_bi_fupd `{!invGS_gen hlc Σ} : BiFUpd (uPredI (iResUR Σ)).
Admitted.

Global Instance uPred_bi_bupd_fupd `{!invGS_gen hlc Σ} : BiBUpdFUpd (uPredI (iResUR Σ)).
Admitted.
Export stdpp.namespaces.
Export iris.algebra.excl.
Import iris.proofmode.proofmode.

Class cinvG Σ := {
  #[local] cinv_inG :: inG Σ (prodR (optionR (exclR unitO)) (optionR fracR)) ;
}.

Section defs.
  Context `{!invGS_gen hlc Σ, !cinvG Σ}.
Definition cinv_own (γ : gname) (p : frac) : iProp Σ.
Admitted.
  Definition cinv_excl γ : iProp Σ := own γ (Some (Excl ()), None).
Definition cinv (N : namespace) (γ : gname) (P : iProp Σ) : iProp Σ.
Admitted.

  Lemma cinv_own_excl_alloc P :
    pred_infinite P → ⊢ |==> ∃ γ, ⌜P γ⌝ ∗ cinv_excl γ ∗ cinv_own γ 1.
Admitted.

  Lemma cinv_alloc_strong (I : gname → Prop) E N :
    pred_infinite I →
    ⊢ |={E}=> ∃ γ, ⌜ I γ ⌝ ∗ cinv_own γ 1 ∗ ∀ P, ▷ P ={E}=∗ cinv N γ P.
  Proof.
    iIntros (?).
iMod cinv_own_excl_alloc as (γ) "[$ [Hexcl $]]"; first done.
🛠️ Intermediate Coq File (useful for debugging if minimization did not go as far as you wanted)
🛠️ 📜 Intermediate Coq File log (useful for debugging if minimization did not go as far as you wanted)
📜 Build Log (contains the Coq error message) (truncated to last 8.0KiB; full 6.4MiB file on GitHub Actions Artifacts under build.log)
LIB instead.
[deprecated-coq-env-var,deprecated-since-9.0,deprecated,default]
Warning: Deprecated environment variable COQCORELIB,
use ROCQRUNTIMELIB instead.
[deprecated-coq-env-var,deprecated-since-9.0,deprecated,default]
iris/program_logic/lifting.vo (real: 2.91, user: 2.78, sys: 0.13, mem: 597944 ko)
COQNATIVE iris/program_logic/lifting.vo
Warning, feedback message received but no listener to handle it!
Warning: Deprecated environment variable COQLIB, use ROCQLIB instead.
[deprecated-coq-env-var,deprecated-since-9.0,deprecated,default]Warning, feedback message received but no listener to handle it!
Deprecated environment variable COQLIB, use ROCQLIB instead.
[deprecated-coq-env-var,deprecated-since-9.0,deprecated,default]
Deprecated environment variable COQCORELIB, use ROCQRUNTIMELIB instead.
[deprecated-coq-env-var,deprecated-since-9.0,deprecated,default]
File "./iris/program_logic/total_weakestpre.v", line 106, characters 68-80:
Warning: In term, tolerating this expression at a higher level than expected.
This tolerance will be eventually removed. Insert parentheses or try to lower
the level at which the top symbol of this expression is parsed.
[level-tolerance,deprecated-since-9.2,deprecated,parsing,default]
iris/program_logic/lifting.vo.native (real: 0.49, user: 0.38, sys: 0.11, mem: 157056 ko)
COQTEST [ref ignored] tests/algebra.v (ref: tests/algebra.ref)
Warning, feedback message received but no listener to handle it!
Warning: Deprecated environment variable COQLIB, use ROCQLIB instead.
[deprecated-coq-env-var,deprecated-since-9.0,deprecated,default]Warning, feedback message received but no listener to handle it!
Warning: Deprecated environment variable COQLIB, use ROCQLIB instead.
[deprecated-coq-env-var,deprecated-since-9.0,deprecated,default]
Warning: Deprecated environment variable COQCORELIB,
use ROCQRUNTIMELIB instead.
[deprecated-coq-env-var,deprecated-since-9.0,deprecated,default]
tests/algebra.vo (real: 1.28, user: 1.14, sys: 0.13, mem: 590428 ko)
ROCQ compile iris/base_logic/lib/cancelable_invariants.v
MINIMIZER_DEBUG_EXTRA: coqc: /github/workspace/builds/coq/coq-failing/_install_ci/bin/////rocq
MINIMIZER_DEBUG_EXTRA: original invocation: compile -q -w -notation-overridden -w -redundant-canonical-projection -w -notation-incompatible-prefix -w -deprecated-from-Coq -w -deprecated-dirpath-Coq -w -deprecated-native-compiler-option -native-compiler ondemand -Q iris iris -Q iris_heap_lang iris.heap_lang -Q iris_unstable iris.unstable -Q iris_deprecated iris.deprecated iris/base_logic/lib/cancelable_invariants.v 
MINIMIZER_DEBUG_EXTRA: new invocation: /github/workspace/builds/coq/coq-failing/_install_ci/bin/rocq.orig compile -q -w -notation-overridden -w -redundant-canonical-projection -w -notation-incompatible-prefix -w -deprecated-from-Coq -w -deprecated-dirpath-Coq -w -deprecated-native-compiler-option -native-compiler ondemand -Q /github/workspace/builds/coq/coq-failing/_build_ci/iris/iris iris -Q /github/workspace/builds/coq/coq-failing/_build_ci/iris/iris_heap_lang iris.heap_lang -Q /github/workspace/builds/coq/coq-failing/_build_ci/iris/iris_unstable iris.unstable -Q /github/workspace/builds/coq/coq-failing/_build_ci/iris/iris_deprecated iris.deprecated iris/base_logic/lib/cancelable_invariants.v 
MINIMIZER_DEBUG_EXTRA: coqpath: 
MINIMIZER_DEBUG_EXTRA: ocamlpath: /github/workspace/builds/coq/coq-failing/_install_ci/lib:
MINIMIZER_DEBUG_EXTRA: pwd: PWD=/github/workspace/builds/coq/coq-failing/_build_ci/iris
MINIMIZER_DEBUG_EXTRA: exec: /github/workspace/builds/coq/coq-failing/_install_ci/bin/rocq.orig compile -q -w -notation-overridden -w -redundant-canonical-projection -w -notation-incompatible-prefix -w -deprecated-from-Coq -w -deprecated-dirpath-Coq -w -deprecated-native-compiler-option -native-compiler ondemand -Q /github/workspace/builds/coq/coq-failing/_build_ci/iris/iris iris -Q /github/workspace/builds/coq/coq-failing/_build_ci/iris/iris_heap_lang iris.heap_lang -Q /github/workspace/builds/coq/coq-failing/_build_ci/iris/iris_unstable iris.unstable -Q /github/workspace/builds/coq/coq-failing/_build_ci/iris/iris_deprecated iris.deprecated iris/base_logic/lib/cancelable_invariants.v 
MINIMIZER_DEBUG_EXTRA: coqlib: Warning: Deprecated environment variable COQLIB, use ROCQLIB instead.
/github/workspace/builds/coq/coq-failing/_install_ci/lib/coq//
MINIMIZER_DEBUG: info: /tmp/tmp-coqbot-minimizer.kntTCrYV2z
MINIMIZER_DEBUG: files:  iris/base_logic/lib/cancelable_invariants.v /github/workspace/builds/coq/coq-failing/_build_ci/iris/iris/base_logic/lib/cancelable_invariants.v
Warning, feedback message received but no listener to handle it!
Warning: Deprecated environment variable COQLIB, use ROCQLIB instead.
[deprecated-coq-env-var,deprecated-since-9.0,deprecated,default]Warning, feedback message received but no listener to handle it!
Warning: Deprecated environment variable COQLIB, use ROCQLIB instead.
[deprecated-coq-env-var,deprecated-since-9.0,deprecated,default]
Warning: Deprecated environment variable COQCORELIB,
use ROCQRUNTIMELIB instead.
[deprecated-coq-env-var,deprecated-since-9.0,deprecated,default]
File "./iris/base_logic/lib/cancelable_invariants.v", line 90, characters 17-65:
Error: Tactic failure: iFrame: cannot frame ⌜?Goal γ⌝%I.

Command exited with non-zero status 1
iris/base_logic/lib/cancelable_invariants.vo (real: 1.46, user: 1.32, sys: 0.13, mem: 583992 ko)
make[2]: *** [Makefile.coq:813: iris/base_logic/lib/cancelable_invariants.vo] Error 1
make[2]: *** [iris/base_logic/lib/cancelable_invariants.vo] Deleting file 'iris/base_logic/lib/cancelable_invariants.glob'
make[2]: *** Waiting for unfinished jobs....
File "./iris/program_logic/total_weakestpre.v", line 274, characters 78-90:
Warning: In term, tolerating this expression at a higher level than expected.
This tolerance will be eventually removed. Insert parentheses or try to lower
the level at which the top symbol of this expression is parsed.
[level-tolerance,deprecated-since-9.2,deprecated,parsing,default]
iris/program_logic/total_weakestpre.vo (real: 6.17, user: 6.02, sys: 0.15, mem: 636016 ko)
COQNATIVE iris/program_logic/total_weakestpre.vo
Warning, feedback message received but no listener to handle it!
Warning: Deprecated environment variable COQLIB, use ROCQLIB instead.
[deprecated-coq-env-var,deprecated-since-9.0,deprecated,default]Warning, feedback message received but no listener to handle it!
Deprecated environment variable COQLIB, use ROCQLIB instead.
[deprecated-coq-env-var,deprecated-since-9.0,deprecated,default]
Deprecated environment variable COQCORELIB, use ROCQRUNTIMELIB instead.
[deprecated-coq-env-var,deprecated-since-9.0,deprecated,default]
iris/program_logic/total_weakestpre.vo.native (real: 0.58, user: 0.47, sys: 0.11, mem: 151844 ko)
make[1]: *** [Makefile.coq:411: all] Error 2
make[1]: Leaving directory '/github/workspace/builds/coq/coq-failing/_build_ci/iris'
make: *** [Makefile:3: all] Error 2
+ code=2
+ printf '\n%s exit code: %s\n' iris 2
+ '[' iris '!=' stdlib_test ']'
+ echo 'Aggregating timing log...'
Aggregating timing log...
+ echo

+ tools/make-one-time-file.py --real iris.log
    Time |  Peak Mem | File Name                                    
--------------------------------------------------------------------
0m19.96s | 636016 ko | Total Time / Peak Mem                        
--------------------------------------------------------------------
0m06.17s | 636016 ko | iris/program_logic/total_weakestpre.vo       
0m03.84s | 607256 ko | iris/program_logic/adequacy.vo               
0m02.91s | 597944 ko | iris/program_logic/lifting.vo                
0m02.13s | 598196 ko | iris/program_logic/atomic.vo                 
0m01.46s | 583992 ko | iris/base_logic/lib/cancelable_invariants.vo 
0m01.28s | 590428 ko | tests/algebra.vo                             
0m00.58s | 151844 ko | iris/program_logic/total_weakestpre.vo.native
0m00.56s | 156372 ko | iris/program_logic/atomic.vo.native          
0m00.54s | 165240 ko | iris/program_logic/adequacy.vo.native        
0m00.49s | 157056 ko | iris/program_logic/lifting.vo.native         
+ '[' '' ']'
+ exit 2
/github/workspace/builds/coq /github/workspace
::endgroup::
📜 🔎 Minimization Log (truncated to last 8.0KiB; full 3.8MiB file on GitHub Actions Artifacts under bug.log)
tor.v>.
[warn-library-file-stdlib-vector,stdlib-vector,warn-library-file,user-warn,default]
File "/tmp/tmp_qed88p6/Top/bug_01.v", line 169, characters 0-34:
Warning: Using Vector.t is known to be technically difficult, see
<https://github.com/coq/stdlib/blob/master/theories/Vectors/Vector.v>.
[warn-library-file-stdlib-vector,stdlib-vector,warn-library-file,user-warn,default]
File "/tmp/tmp_qed88p6/Top/bug_01.v", line 177, characters 0-33:
Warning: Using Vector.t is known to be technically difficult, see
<https://github.com/coq/stdlib/blob/master/theories/Vectors/Vector.v>.
[warn-library-file-stdlib-vector,stdlib-vector,warn-library-file,user-warn,default]
File "/tmp/tmp_qed88p6/Top/bug_01.v", line 180, characters 0-27:
Warning: Alternatives to Fin.t are available, see
<https://github.com/coq/stdlib/blob/master/theories/Vectors/Fin.v>.
[warn-library-file-stdlib-vector,stdlib-vector,warn-library-file,user-warn,default]
File "/tmp/tmp_qed88p6/Top/bug_01.v", line 385, characters 0-8:
Warning: Use of "Notation" keyword for abbreviations is deprecated, use
"Abbreviation" instead.
[notation-for-abbreviation,deprecated-since-9.2,deprecated,default]
File "/tmp/tmp_qed88p6/Top/bug_01.v", line 1775, characters 0-9:
Error: Could not declare a canonical structure agreeR.
Could not find its value in the global environment.


�[93mIntermediate code not saved.�[0m
Failed to do everything at once; trying one at a time.
Admitting definitions unsuccessful.
No successful changes.

I will now attempt to admit lemmas with admit. Defined with Proof using

Non-fatal error: Failed to admit lemmas and preserve the error.  
The new error was:
Deprecated environment variable COQCORELIB, use ROCQRUNTIMELIB instead.
Warning: Deprecated environment variable COQCORELIB,
use ROCQRUNTIMELIB instead.
[deprecated-coq-env-var,deprecated-since-9.0,deprecated,default]
File "/tmp/tmpxaak1sal/Top/bug_01.v", line 113, characters 0-34:
Warning: Library File Stdlib.ZArith.ZArith_base is deprecated since 9.0.
use ZArith instead
[deprecated-library-file-since-9.0,deprecated-since-9.0,deprecated-library-file,deprecated,default]
File "/tmp/tmpxaak1sal/Top/bug_01.v", line 165, characters 0-30:
Warning: Using Vector.t is known to be technically difficult, see
<https://github.com/coq/stdlib/blob/master/theories/Vectors/Vector.v>.
[warn-library-file-stdlib-vector,stdlib-vector,warn-library-file,user-warn,default]
File "/tmp/tmpxaak1sal/Top/bug_01.v", line 167, characters 0-32:
Warning: Using Vector.t is known to be technically difficult, see
<https://github.com/coq/stdlib/blob/master/theories/Vectors/Vector.v>.
[warn-library-file-stdlib-vector,stdlib-vector,warn-library-file,user-warn,default]
File "/tmp/tmpxaak1sal/Top/bug_01.v", line 169, characters 0-34:
Warning: Using Vector.t is known to be technically difficult, see
<https://github.com/coq/stdlib/blob/master/theories/Vectors/Vector.v>.
[warn-library-file-stdlib-vector,stdlib-vector,warn-library-file,user-warn,default]
File "/tmp/tmpxaak1sal/Top/bug_01.v", line 177, characters 0-33:
Warning: Using Vector.t is known to be technically difficult, see
<https://github.com/coq/stdlib/blob/master/theories/Vectors/Vector.v>.
[warn-library-file-stdlib-vector,stdlib-vector,warn-library-file,user-warn,default]
File "/tmp/tmpxaak1sal/Top/bug_01.v", line 180, characters 0-27:
Warning: Alternatives to Fin.t are available, see
<https://github.com/coq/stdlib/blob/master/theories/Vectors/Fin.v>.
[warn-library-file-stdlib-vector,stdlib-vector,warn-library-file,user-warn,default]
File "/tmp/tmpxaak1sal/Top/bug_01.v", line 385, characters 0-8:
Warning: Use of "Notation" keyword for abbreviations is deprecated, use
"Abbreviation" instead.
[notation-for-abbreviation,deprecated-since-9.2,deprecated,default]
File "/tmp/tmpxaak1sal/Top/bug_01.v", line 1831, characters 0-43:
Warning: Implicitly declaring hint databases is deprecated. Please explicitly
create "uPred_def"
[implicit-create-hint-db,deprecated-since-9.2,deprecated,default]
File "/tmp/tmpxaak1sal/Top/bug_01.v", line 1972, characters 0-8:
Warning: Use of "Notation" keyword for abbreviations is deprecated, use
"Abbreviation" instead.
[notation-for-abbreviation,deprecated-since-9.2,deprecated,default]
File "/tmp/tmpxaak1sal/Top/bug_01.v", line 2007, characters 2-10:
Warning: Use of "Notation" keyword for abbreviations is deprecated, use
"Abbreviation" instead.
[notation-for-abbreviation,deprecated-since-9.2,deprecated,default]
File "/tmp/tmpxaak1sal/Top/bug_01.v", line 2008, characters 2-10:
Warning: Use of "Notation" keyword for abbreviations is deprecated, use
"Abbreviation" instead.
[notation-for-abbreviation,deprecated-since-9.2,deprecated,default]
Error: The section defs and module stdpp need to be closed.


�[93mIntermediate code not saved.�[0m
Failed to do everything at once; trying one at a time.
Admitting lemmas unsuccessful.
No successful changes.

I will now attempt to admit definitions with admit. Defined with Proof using

Non-fatal error: Failed to admit definitions and preserve the error.  
The new error was:
Deprecated environment variable COQCORELIB, use ROCQRUNTIMELIB instead.
Warning: Deprecated environment variable COQCORELIB,
use ROCQRUNTIMELIB instead.
[deprecated-coq-env-var,deprecated-since-9.0,deprecated,default]
File "/tmp/tmp24fv5ezj/Top/bug_01.v", line 113, characters 0-34:
Warning: Library File Stdlib.ZArith.ZArith_base is deprecated since 9.0.
use ZArith instead
[deprecated-library-file-since-9.0,deprecated-since-9.0,deprecated-library-file,deprecated,default]
File "/tmp/tmp24fv5ezj/Top/bug_01.v", line 165, characters 0-30:
Warning: Using Vector.t is known to be technically difficult, see
<https://github.com/coq/stdlib/blob/master/theories/Vectors/Vector.v>.
[warn-library-file-stdlib-vector,stdlib-vector,warn-library-file,user-warn,default]
File "/tmp/tmp24fv5ezj/Top/bug_01.v", line 167, characters 0-32:
Warning: Using Vector.t is known to be technically difficult, see
<https://github.com/coq/stdlib/blob/master/theories/Vectors/Vector.v>.
[warn-library-file-stdlib-vector,stdlib-vector,warn-library-file,user-warn,default]
File "/tmp/tmp24fv5ezj/Top/bug_01.v", line 169, characters 0-34:
Warning: Using Vector.t is known to be technically difficult, see
<https://github.com/coq/stdlib/blob/master/theories/Vectors/Vector.v>.
[warn-library-file-stdlib-vector,stdlib-vector,warn-library-file,user-warn,default]
File "/tmp/tmp24fv5ezj/Top/bug_01.v", line 177, characters 0-33:
Warning: Using Vector.t is known to be technically difficult, see
<https://github.com/coq/stdlib/blob/master/theories/Vectors/Vector.v>.
[warn-library-file-stdlib-vector,stdlib-vector,warn-library-file,user-warn,default]
File "/tmp/tmp24fv5ezj/Top/bug_01.v", line 180, characters 0-27:
Warning: Alternatives to Fin.t are available, see
<https://github.com/coq/stdlib/blob/master/theories/Vectors/Fin.v>.
[warn-library-file-stdlib-vector,stdlib-vector,warn-library-file,user-warn,default]
File "/tmp/tmp24fv5ezj/Top/bug_01.v", line 385, characters 0-8:
Warning: Use of "Notation" keyword for abbreviations is deprecated, use
"Abbreviation" instead.
[notation-for-abbreviation,deprecated-since-9.2,deprecated,default]
File "/tmp/tmp24fv5ezj/Top/bug_01.v", line 1776, characters 0-8:
Error: Could not declare a canonical structure agreeR.
Expected a record or structure constructor applied to arguments.


�[93mIntermediate code not saved.�[0m
Failed to do everything at once; trying one at a time.
Admitting definitions unsuccessful.
No successful changes.

I will now attempt to add Proof using lines
�[92m
Adding Proof using lines successful.�[0m
Failed to do everything at once; trying one at a time.
Adding Proof using lines unsuccessful.
No successful changes.

I will now attempt to export modules
Module exportation successful

I will now attempt to split imports and exports
Import/Export splitting successful

I will now attempt to split := definitions
One-line definition splitting successful

I will now attempt to lift Requires to the top of the file while inserting option settings

I will now attempt to lift Requires to the top of the file while inserting option settings

I will now attempt to remove all lines, one at a time

If you have any comments on your experience of the minimizer, please share them in a reply (possibly tagging @JasonGross).
If you believe there's a bug in the bug minimizer, please report it on the bug minimizer issue tracker.

@coqbot-app
Copy link
Contributor

coqbot-app bot commented Oct 10, 2025

Minimization interrupted by timeout, being automatically continued. Partially Minimized File /home/runner/work/run-coq-bug-minimizer/run-coq-bug-minimizer/builds/coq/coq-failing/_build_ci/iris/iris/base_logic/lib/cancelable_invariants.v in 5h 15m 6s (from ci-iris) (interrupted by timeout, being automatically continued) (full log on GitHub Actions - verbose log)
⭐ ⏱️ Partially Minimized Coq File (timeout) (truncated to first and last 32KiB; full 104KiB file on GitHub Actions Artifacts under bug.v)
(* -*- mode: coq; coq-prog-args: ("-emacs" "-q" "-w" "-notation-overridden" "-w" "-redundant-canonical-projection" "-w" "-notation-incompatible-prefix" "-w" "-deprecated-from-Coq" "-w" "-deprecated-dirpath-Coq" "-w" "-deprecated-native-compiler-option" "-native-compiler" "ondemand" "-coqlib" "/github/workspace/builds/coq/coq-failing/_install_ci/lib/coq//" "-Q" "/github/workspace/cwd" "Top" "-Q" "/github/workspace/builds/coq/coq-failing/_build_ci/iris/iris" "iris" "-Q" "/github/workspace/builds/coq/coq-failing/_build_ci/iris/iris_heap_lang" "iris.heap_lang" "-Q" "/github/workspace/builds/coq/coq-failing/_build_ci/iris/iris_unstable" "iris.unstable" "-Q" "/github/workspace/builds/coq/coq-failing/_build_ci/iris/iris_deprecated" "iris.deprecated" "-Q" "/github/workspace/builds/coq/coq-failing/_install_ci/lib/coq///user-contrib/Autosubst" "Autosubst" "-Q" "/github/workspace/builds/coq/coq-failing/_install_ci/lib/coq///user-contrib/Ltac2" "Ltac2" "-Q" "/github/workspace/builds/coq/coq-failing/_install_ci/lib/coq///user-contrib/Stdlib" "Stdlib" "-Q" "/github/workspace/builds/coq/coq-failing/_install_ci/lib/coq///user-contrib/stdpp" "stdpp" "-top" "Top.bug_01") -*- *)
(* File reduced by coq-bug-minimizer from original input, then from 204 lines to 32 lines, then from 45 lines to 651 lines, then from 657 lines to 31 lines, then from 44 lines to 706 lines, then from 712 lines to 58 lines, then from 71 lines to 654 lines, then from 660 lines to 77 lines, then from 90 lines to 482 lines, then from 488 lines to 104 lines, then from 117 lines to 987 lines, then from 990 lines to 132 lines, then from 145 lines to 702 lines, then from 708 lines to 148 lines, then from 161 lines to 1079 lines, then from 1085 lines to 175 lines, then from 188 lines to 735 lines, then from 736 lines to 195 lines, then from 208 lines to 591 lines, then from 597 lines to 197 lines, then from 210 lines to 923 lines, then from 929 lines to 201 lines, then from 214 lines to 587 lines, then from 593 lines to 206 lines, then from 219 lines to 899 lines, then from 905 lines to 219 lines, then from 232 lines to 1231 lines, then from 1237 lines to 236 lines, then from 249 lines to 1215 lines, then from 1221 lines to 248 lines, then from 261 lines to 791 lines, then from 797 lines to 261 lines, then from 274 lines to 586 lines, then from 592 lines to 539 lines, then from 547 lines to 146 lines, then from 159 lines to 826 lines, then from 832 lines to 186 lines, then from 199 lines to 1392 lines, then from 1397 lines to 319 lines, then from 332 lines to 845 lines, then from 851 lines to 321 lines, then from 334 lines to 940 lines, then from 946 lines to 372 lines, then from 385 lines to 753 lines, then from 759 lines to 387 lines, then from 400 lines to 882 lines, then from 888 lines to 398 lines, then from 411 lines to 1223 lines, then from 1229 lines to 476 lines, then from 489 lines to 1045 lines, then from 1051 lines to 488 lines, then from 501 lines to 2017 lines, then from 2023 lines to 506 lines, then from 519 lines to 3085 lines, then from 3090 lines to 1575 lines, then from 1588 lines to 1874 lines, then from 1880 lines to 1637 lines, then from 1650 lines to 1881 lines, then from 1887 lines to 1646 lines, then from 1659 lines to 2056 lines, then from 2062 lines to 1838 lines, then from 1847 lines to 1582 lines, then from 1595 lines to 2082 lines, then from 2088 lines to 1737 lines, then from 1750 lines to 2091 lines, then from 2097 lines to 1774 lines, then from 1787 lines to 2175 lines, then from 2181 lines to 1877 lines, then from 1890 lines to 2291 lines, then from 2297 lines to 1926 lines, then from 1939 lines to 2311 lines, then from 2317 lines to 1928 lines, then from 1941 lines to 3575 lines, then from 3581 lines to 2352 lines, then from 2365 lines to 2805 lines, then from 2811 lines to 2358 lines, then from 2371 lines to 2758 lines, then from 2764 lines to 2381 lines, then from 2394 lines to 2799 lines, then from 2805 lines to 2444 lines, then from 2457 lines to 3620 lines, then from 3626 lines to 2610 lines, then from 2623 lines to 3023 lines, then from 3029 lines to 2612 lines, then from 2625 lines to 3639 lines, then from 3644 lines to 3038 lines *)
(* coqc version 9.2+alpha compiled with OCaml 4.14.2
   coqtop version 9.2+alpha
   Expected coqc runtime on this file: 1.853 sec *)










Require iris.proofmode.modalities.
Require iris.proofmode.base.
Require iris.bi.bi.
Require iris.bi.embedding.
Require iris.bi.updates.
Require iris.bi.plainly.
Require iris.bi.internal_eq.
Require iris.bi.big_op.
Require iris.algebra.gmap.
Require iris.algebra.gset.
Require iris.algebra.list.
Require iris.algebra.big_op.
Require stdpp.gmultiset.
Require iris.bi.derived_laws_later.
Require iris.bi.derived_laws.
Require iris.bi.extensions.
Require iris.bi.derived_connectives.
Require stdpp.namespaces.
Require iris.bi.interface.
Require iris.algebra.csum.
Require stdpp.coPset.
Require stdpp.gmap.
Require iris.algebra.updates.
Require iris.algebra.stepindex_finite.
Require iris.algebra.proofmode_classes.
Require iris.algebra.local_updates.
Require iris.algebra.excl.
Require iris.algebra.cmra.
Require iris.algebra.monoid.
Require iris.algebra.ofe.
Require iris.algebra.stepindex.
Require iris.prelude.prelude.
Require stdpp.infinite.
Require stdpp.ssreflect.
Require stdpp.pretty.
Require stdpp.pmap.
Require stdpp.prelude.
Require stdpp.mapset.
Require stdpp.fin_map_dom.
Require stdpp.fin_maps.
Require stdpp.fin_sets.
Require stdpp.relations.
Require stdpp.listset.
Require stdpp.sets.
Require stdpp.strings.
Require stdpp.finite.
Require stdpp.vector.
Require stdpp.countable.
Require stdpp.list.
Require stdpp.list_numbers.
Require stdpp.list_tactics.
Require stdpp.list_misc.
Require stdpp.list_monad.
Require stdpp.list_relations.
Require stdpp.list_basics.
Require stdpp.lexico.
Require stdpp.numbers.
Require Stdlib.ZArith.ZArith.
Require stdpp.fin.
Require stdpp.orders.
Require stdpp.option.
Require stdpp.functions.
Require stdpp.tactics.
Require Stdlib.ZArith.Znumtheory.
Require Stdlib.ZArith.ZNsatz.
Require Stdlib.ZArith.Zbitwise.
Require Stdlib.btauto.Btauto.
Require Stdlib.micromega.ZArith_hints.
Require Stdlib.btauto.Reflect.
Require Stdlib.btauto.Algebra.
Require Stdlib.ZArith.Zcong.
Require Stdlib.ZArith.ZModOffset.
Require Stdlib.ZArith.Zdivisibility.
Require Stdlib.ZArith.Zdiv_facts.
Require Stdlib.micromega.Lia.
Require Stdlib.QArith.QArith.
Require Stdlib.micromega.ZMicromega.
Require Stdlib.QArith.QNsatz.
Require Stdlib.ZArith.Zdiv.
Require Stdlib.ZArith.Zpower.
Require Stdlib.ZArith.Zcomplements.
Require Stdlib.QArith.Qring.
Require Stdlib.QArith.Qfield.
Require Stdlib.QArith.Qcanon.
Require Stdlib.omega.PreOmega.
Require Stdlib.QArith.Qreduction.
Require Stdlib.micromega.Zify.
Require Stdlib.Strings.String.
Require Stdlib.QArith.QArith_base.
Require Stdlib.micromega.ZifyInst.
Require Stdlib.ZArith.ZArith_base.
Require Stdlib.Arith.Arith.
Require Stdlib.micromega.ZCoeff.
Require Stdlib.ZArith.Zhints.
Require Stdlib.NArith.NArith.
Require Stdlib.nsatz.NsatzTactic.
Require Stdlib.micromega.RingMicromega.
Require Stdlib.ZArith.Zabs.
Require Stdlib.setoid_ring.Integral_domain.
Require Stdlib.setoid_ring.Field.
Require Stdlib.ZArith.Zbool.
Require Stdlib.setoid_ring.ZArithRing.
Require Stdlib.setoid_ring.Field_tac.
Require Stdlib.setoid_ring.Cring.
Require Stdlib.setoid_ring.ArithRing.
Require Stdlib.ZArith.Wf_Z.
Require Stdlib.setoid_ring.NArithRing.
Require Stdlib.setoid_ring.Field_theory.
Require Stdlib.micromega.OrderedRing.
Require Stdlib.ZArith.ZArith_dec.
Require Stdlib.setoid_ring.Ring.
Require Stdlib.setoid_ring.Ncring_tac.
Require Stdlib.setoid_ring.Ring_base.
Require Stdlib.setoid_ring.Ncring_initial.
Require Stdlib.omega.OmegaLemmas.
Require Stdlib.ZArith.auxiliary.
Require Stdlib.ZArith.Zmisc.
Require Stdlib.ZArith.Zminmax.
Require Stdlib.ZArith.Zmin.
Require Stdlib.ZArith.Zmax.
Require Stdlib.setoid_ring.Ring_tac.
Require Stdlib.setoid_ring.Ncring_polynom.
Require Stdlib.ZArith.Zorder.
Require Stdlib.ZArith.Znat.
Require Stdlib.setoid_ring.InitialRing.
Require Stdlib.setoid_ring.Ring_polynom.
Require Stdlib.micromega.EnvRing.
Require Stdlib.micromega.VarMap.
Require Stdlib.micromega.Env.
Require Stdlib.setoid_ring.Ncring.
Require Stdlib.ZArith.Zpow_def.
Require Stdlib.ZArith.Zeven.
Require Stdlib.ZArith.Zcompare.
Require Stdlib.ZArith.BinInt.
Require Stdlib.micromega.DeclConstantZ.
Require Stdlib.Strings.Ascii.
Require stdpp.decidable.
Require iris.proofmode.ident_name.
Require Stdlib.Strings.Byte.
Require Stdlib.NArith.NArith_base.
Require stdpp.well_founded.
Require stdpp.proof_irrel.
Require Stdlib.Vectors.Vector.
Require stdpp.base.
Require Stdlib.Vectors.VectorEq.
Require Stdlib.ZArith.BinIntDef.
Require Stdlib.Vectors.VectorSpec.
Require Stdlib.NArith.Nnat.
Require Stdlib.setoid_ring.Ring_theory.
Require Stdlib.NArith.Nsqrt_def.
Require Stdlib.NArith.Ngcd_def.
Require Stdlib.NArith.Ndiv_def.
Require Stdlib.setoid_ring.BinList.
Require Stdlib.NArith.BinNat.
Require Stdlib.Vectors.VectorDef.
Require Stdlib.PArith.PArith.
Require Stdlib.NArith.BinNatDef.
Require Stdlib.Vectors.Fin.
Require Stdlib.PArith.Pnat.
Require Stdlib.PArith.POrderedType.
Require Stdlib.Arith.Arith_base.
Require Stdlib.PArith.BinPos.
Require Stdlib.Sorting.Permutation.
Require Stdlib.Lists.ListTactics.
Require Stdlib.micromega.Tauto.
Require Stdlib.Lists.Finite.
Require Stdlib.micromega.Refl.
Require Stdlib.Lists.ListDec.
Require Stdlib.Lists.List.
Require Stdlib.Arith.Peano_dec.
Require Stdlib.Arith.Wf_nat.
Require Stdlib.Arith.Factorial.
Require Stdlib.Arith.EqNat.
Require Stdlib.Arith.Compare_dec.
Require Stdlib.Arith.Between.
Require Stdlib.Arith.PeanoNat.
Require Stdlib.Numbers.Natural.Abstract.NProperties.
Require Stdlib.Numbers.Integer.Abstract.ZProperties.
Require Stdlib.Numbers.Natural.Abstract.NLcm0.
Require Stdlib.Numbers.Natural.Abstract.NBits.
Require Stdlib.Numbers.Integer.Abstract.ZLcm.
Require Stdlib.Numbers.Integer.Abstract.ZBits.
Require Stdlib.Numbers.Natural.Abstract.NLog.
Require Stdlib.Numbers.Natural.Abstract.NLcm.
Require Stdlib.Numbers.Integer.Abstract.ZPow.
Require Stdlib.Numbers.Natural.Abstract.NPow.
Require Stdlib.Numbers.Natural.Abstract.NDiv0.
Require Stdlib.Numbers.Integer.Abstract.ZGcd.
Require Stdlib.Numbers.Integer.Abstract.ZDivTrunc.
Require Stdlib.Numbers.Integer.Abstract.ZDivFloor.
Require Stdlib.Numbers.Natural.Abstract.NSqrt.
Require Stdlib.Numbers.Natural.Abstract.NParity.
Require Stdlib.Numbers.Natural.Abstract.NMaxMin.
Require Stdlib.Numbers.Natural.Abstract.NGcd.
Require Stdlib.Numbers.Natural.Abstract.NDiv.
Require Stdlib.Numbers.Integer.Abstract.ZSgnAbs.
Require Stdlib.Numbers.Integer.Abstract.ZParity.
Require Stdlib.Numbers.Integer.Abstract.ZMaxMin.
Require Stdlib.Numbers.Natural.Abstract.NSub.
Require Stdlib.Numbers.Integer.Abstract.ZMulOrder.
Require Stdlib.Numbers.Natural.Abstract.NMulOrder.
Require Stdlib.Numbers.Integer.Abstract.ZAddOrder.
Require Stdlib.Numbers.Natural.Abstract.NAddOrder.
Require Stdlib.Numbers.Integer.Abstract.ZLt.
Require Stdlib.Numbers.Natural.Abstract.NOrder.
Require Stdlib.Numbers.Integer.Abstract.ZMul.
Require Stdlib.Numbers.Natural.Abstract.NAdd.
Require Stdlib.Numbers.Integer.Abstract.ZAdd.
Require Stdlib.Numbers.Natural.Abstract.NBase.
Require Stdlib.Numbers.Integer.Abstract.ZBase.
Require Stdlib.Numbers.Natural.Abstract.NAxioms.
Require Stdlib.Numbers.Integer.Abstract.ZAxioms.
Require Stdlib.Numbers.NatInt.NZBits.
Require Ltac2.Ltac2.
Require Stdlib.Numbers.NatInt.NZLog.
Require Stdlib.Numbers.NatInt.NZSqrt.
Require Stdlib.Numbers.NatInt.NZPow.
Require Stdlib.Numbers.NatInt.NZParity.
Require Stdlib.Numbers.NatInt.NZGcd.
Require Stdlib.Numbers.NatInt.NZDiv.
Require Stdlib.Numbers.NatInt.NZMulOrder.
Require Stdlib.Numbers.NatInt.NZAddOrder.
Require Stdlib.Numbers.NatInt.NZOrder.
Require Stdlib.Numbers.NatInt.NZMul.
Require Stdlib.Numbers.NatInt.NZAdd.
Require Stdlib.Numbers.NatInt.NZBase.
Require Stdlib.Numbers.NatInt.NZAxioms.
Require Stdlib.Structures.GenericMinMax.
Require Stdlib.Structures.OrdersFacts.
Require Stdlib.Structures.OrdersTac.
Require Stdlib.Structures.Orders.
Require Ltac2.Notations.
Require Stdlib.Structures.Equalities.
Require Ltac2.Constr.
Require Ltac2.Fresh.
Require Stdlib.Numbers.NumPrelude.
Require Ltac2.List.
Require Ltac2.Lazy.
Require Ltac2.Array.
Require Ltac2.Ltac1.
Require Stdlib.Relations.Relations.
Require Stdlib.PArith.BinPosDef.
Require Ltac2.Pattern.
Require Ltac2.Option.
Require Stdlib.Relations.Operators_Properties.
Require Ltac2.Unification.
Require Ltac2.Ref.
Require Ltac2.RedFlags.
Require Ltac2.Printf.
Require Ltac2.FMap.
Require Ltac2.Env.
Require Ltac2.Control.
Require Ltac2.Char.
Require iris.bi.notation.
Require Stdlib.Relations.Relation_Operators.
Require Stdlib.Bool.Bool.
Require Ltac2.Uint63.
Require Ltac2.TransparentState.
Require Ltac2.String.
Require Ltac2.Std.
Require Ltac2.Proj.
Require Ltac2.Meta.
Require Ltac2.Message.
Require Ltac2.Int.
Require Ltac2.Ind.
Require Ltac2.Ident.
Require Ltac2.Float.
Require Ltac2.FSet.
Require Ltac2.Evar.
Require Ltac2.Constructor.
Require Ltac2.Constant.
Require Ltac2.Bool.
Require iris.prelude.options.
Require Stdlib.ssr.ssreflect.
Require Stdlib.ssr.ssrfun.
Require Stdlib.Unicode.Utf8.
Require Stdlib.Setoids.Setoid.
Require Stdlib.Relations.Relation_Definitions.
Require Stdlib.Program.Basics.
Require Stdlib.Numbers.BinNums.
Require Stdlib.Logic.Eqdep_dec.
Require Stdlib.Lists.ListDef.
Require Stdlib.Init.Sumbool.
Require Stdlib.Init.Peano.
Require Stdlib.Init.Byte.
Require Stdlib.Classes.Morphisms.
Require Stdlib.Classes.RelationClasses.
Require Stdlib.Classes.Morphisms_Prop.
Require Stdlib.BinNums.NatDef.
Require Stdlib.BinNums.PosDef.
Require Stdlib.BinNums.IntDef.
Require Ltac2.Init.
Require stdpp.options.
Require Stdlib.setoid_ring.Algebra_syntax.
Require Stdlib.micromega.ZifyClasses.
Require Stdlib.Unicode.Utf8_core.
Require Stdlib.Program.Syntax.
Require Stdlib.Logic.HLevelsBase.
Require Stdlib.Logic.EqdepFacts.
Require Stdlib.Logic.Decidable.
Require Stdlib.Classes.DecidableClass.
Require Corelib.Setoids.Setoid.
Require Corelib.Relations.Relation_Definitions.
Require Corelib.BinNums.PosDef.
Require Corelib.Init.Peano.
Require Corelib.Classes.RelationClasses.
Require Corelib.Classes.Morphisms_Prop.
Require Corelib.ssr.ssreflect.
Require Corelib.Init.Sumbool.
Require Corelib.Numbers.BinNums.
Require Corelib.Classes.Morphisms.
Require Corelib.Init.Ltac.
Require Corelib.Program.Basics.
Require Corelib.ssr.ssrfun.
Require Corelib.Lists.ListDef.
Require Corelib.BinNums.NatDef.
Import iris.proofmode.base.
Export iris.proofmode.ident_name.
Export iris.proofmode.modalities.


Inductive pm_error (s : string) := .

Class FromAssumption {PROP : bi} (p : bool) (P Q : PROP) :=
  from_assumption : □?p P ⊢ Q.

Class IntoPure {PROP : bi} (P : PROP) (φ : Prop) :=
  into_pure : P ⊢ ⌜φ⌝.


Class FromPure {PROP : bi} (a : bool) (P : PROP) (φ : Prop) :=
  from_pure : <affine>?a ⌜φ⌝ ⊢ P.

Class IntoPersistent {PROP : bi} (p : bool) (P Q : PROP) :=
  into_persistent : <pers>?p P ⊢ <pers> Q.


Class FromModal {PROP1 PROP2 : bi} {A}
    (φ : Prop) (M : modality PROP1 PROP2) (sel : A) (P : PROP2) (Q : PROP1) :=
  from_modal : φ → M Q ⊢ P.


Class FromAffinely {PROP : bi} (P Q : PROP) :=
  from_affinely : <affine> Q ⊢ P.


Class IntoAbsorbingly {PROP : bi} (P Q : PROP) :=
  into_absorbingly : P ⊢ <absorb> Q.


Class IntoWand {PROP : bi} (p q : bool) (R P Q : PROP) :=
  into_wand : □?p R ⊢ □?q P -∗ Q.

Class FromWand {PROP : bi} (P Q1 Q2 : PROP) := from_wand : (Q1 -∗ Q2) ⊢ P.

Class FromImpl {PROP : bi} (P Q1 Q2 : PROP) := from_impl : (Q1 → Q2) ⊢ P.


Class IntoAnd {PROP : bi} (p : bool) (P Q1 Q2 : PROP) :=
  into_and : □?p P ⊢ □?p (Q1 ∧ Q2).


Class IntoSep {PROP : bi} (P Q1 Q2 : PROP) :=
  into_sep : P ⊢ Q1 ∗ Q2.

Class IntoOr {PROP : bi} (P Q1 Q2 : PROP) := into_or : P ⊢ Q1 ∨ Q2.

Class IntoExist {PROP : bi} {A} (P : PROP) (Φ : A → PROP) (name: ident_name) :=
  into_exist : P ⊢ ∃ x, Φ x.

Class IntoForall {PROP : bi} {A} (P : PROP) (Φ : A → PROP) :=
  into_forall : P ⊢ ∀ x, Φ x.

Class FromForall {PROP : bi} {A} (P : PROP) (Φ : A → PROP) (name : ident_name) :=
  from_forall : (∀ x, Φ x) ⊢ P.


Class ElimModal {PROP : bi} (φ : Prop) (p p' : bool) (P P' : PROP) (Q Q' : PROP) :=
  elim_modal : φ → □?p P ∗ (□?p' P' -∗ Q') ⊢ Q.


Class AddModal {PROP : bi} (P P' : PROP) (Q : PROP) :=
  add_modal : P ∗ (P' -∗ Q) ⊢ Q.

Class Frame {PROP : bi} (p : bool) (R P Q : PROP) := frame : □?p R ∗ Q ⊢ P.


Class FrameInstantiateExistDisabled : Prop := frame_instantiate_exist_disabled {}.

Notation FrameInstantiateExistEnabled := (TCUnless FrameInstantiateExistDisabled).


Inductive as_emp_valid_direction :=
  | DirectionIntoEmpValid
  | DirectionFromEmpValid.


Class AsEmpValid {PROP : bi} (d : as_emp_valid_direction) (φ : Prop) (P : PROP) :=
  as_emp_valid : (d = DirectionIntoEmpValid → φ → ⊢ P) ∧
                 (d = DirectionFromEmpValid → (⊢ P) → φ).
Class AsEmpValid0 {PROP : bi} (d : as_emp_valid_direction) (φ : Prop) (P : PROP) :=
  as_emp_valid_0 : AsEmpValid d φ P.
Global Existing Instance as_emp_valid_0 | 0.
Lemma as_emp_valid_2 (φ : Prop) {PROP : bi} (P : PROP)
    `{!AsEmpValid DirectionFromEmpValid φ P} :
  (⊢ P) → φ.
Admitted.
Module Export iris_DOT_proofmode_DOT_classes.
Module Export iris.
Module Export proofmode.
Module Export classes.
End classes.

End proofmode.

End iris.

End iris_DOT_proofmode_DOT_classes.
Import iris.bi.bi.
Module Export modality_instances.
End modality_instances.
Import iris.proofmode.base.

Inductive env (A : Type) : Type :=
  | Enil : env A
  | Esnoc : env A → ident → A → env A.
Global Arguments Enil {_}.
Global Arguments Esnoc {_} _ _ _.

Fixpoint env_lookup {A} (i : ident) (Γ : env A) : option A :=
  match Γ with
  | Enil => None
  | Esnoc Γ j x => if ident_beq i j then Some x else env_lookup i Γ
  end.

Module Export env_notations.
  Notation "y ≫= f" := (pm_option_bind f y).
  Notation "x ← y ; z" := (y ≫= λ x, z).
  Notation "Γ !! j" := (env_lookup j Γ).
End env_notations.

Inductive env_wf {A} : env A → Prop :=
  | Enil_wf : env_wf Enil
  | Esnoc_wf Γ i x : Γ !! i = None → env_wf Γ → env_wf (Esnoc Γ i x).

Fixpoint env_to_list {A} (E : env A) : list A :=
  match E with Enil => [] | Esnoc Γ _ x => x :: env_to_list Γ end.
Coercion env_to_list : env >-> list.

Fixpoint env_dom {A} (Γ : env A) : list ident :=
  match Γ with Enil => [] | Esnoc Γ i _ => i :: env_dom Γ end.

Fixpoint env_app {A} (Γapp : env A) (Γ : env A) : option (env A) :=
  match Γapp with
  | Enil => Some Γ
  | Esnoc Γapp i x =>
     Γ' ← env_app Γapp Γ;
     match Γ' !! i with None => Some (Esnoc Γ' i x) | Some _ => None end
  end.

Fixpoint env_replace {A} (i: ident) (Γi: env A) (Γ: env A) : option (env A) :=
  match Γ with
  | Enil => None
  | Esnoc Γ j x =>
     if ident_beq i j then env_app Γi Γ else
     match Γi !! j with
     | None => Γ' ← env_replace i Γi Γ; Some (Esnoc Γ' j x)
     | Some _ => None
     end
  end.

Fixpoint env_delete {A} (i : ident) (Γ : env A) : env A :=
  match Γ with
  | Enil => Enil
  | Esnoc Γ j x => if ident_beq i j then Γ else Esnoc (env_delete i Γ) j x
  end.

Fixpoint env_lookup_delete {A} (i : ident) (Γ : env A) : option (A * env A) :=
  match Γ with
  | Enil => None
  | Esnoc Γ j x =>
     if ident_beq i j then Some (x,Γ)
     else '(y,Γ') ← env_lookup_delete i Γ; Some (y, Esnoc Γ' j x)
  end.

Section env.
End env.

Record envs (PROP : bi) := Envs {
  env_intuitionistic : env PROP;
  env_spatial : env PROP;
  env_counter : positive
}.
Global Arguments Envs {_} _ _ _.
Global Arguments env_spatial {_} _.

Notation env_and_persistently Γ := ([∧ list] P ∈ env_to_list Γ, <pers> P)%I.
Definition envs_entails {PROP : bi} (Δ : envs PROP) (Q : PROP) : Prop.
Admitted.
Definition envs_dom {PROP} (Δ : envs PROP) : list ident.
Admitted.
Definition envs_lookup {PROP} (i : ident) (Δ : envs PROP) : option (bool * PROP).
exact (let (Γp,Γs,n) := Δ in
  match env_lookup i Γp with
  | Some P => Some (true, P)
  | None => P ← env_lookup i Γs; Some (false, P)
  end).
Defined.
Definition envs_delete {PROP} (remove_intuitionistic : bool)
    (i : ident) (p : bool) (Δ : envs PROP) : envs PROP.
exact (let (Γp,Γs,n) := Δ in
  match p with
  | true => Envs (if remove_intuitionistic then env_delete i Γp else Γp) Γs n
  | false => Envs Γp (env_delete i Γs) n
  end).
Defined.
Definition envs_lookup_delete {PROP} (remove_intuitionistic : bool)
    (i : ident) (Δ : envs PROP) : option (bool * PROP * envs PROP).
Admitted.
Definition envs_snoc {PROP} (Δ : envs PROP)
    (p : bool) (j : ident) (P : PROP) : envs PROP.
Admitted.
Definition envs_app {PROP : bi} (p : bool)
    (Γ : env PROP) (Δ : envs PROP) : option (envs PROP).
exact (let (Γp,Γs,n) := Δ in
  match p with
  | true => _ ← env_app Γ Γs; Γp' ← env_app Γ Γp; Some (Envs Γp' Γs n)
  | false => _ ← env_app Γ Γp; Γs' ← env_app Γ Γs; Some (Envs Γp Γs' n)
  end).
Defined.
Definition envs_simple_replace {PROP : bi} (i : ident) (p : bool)
    (Γ : env PROP) (Δ : envs PROP) : option (envs PROP).
exact (let (Γp,Γs,n) := Δ in
  match p with
  | true => _ ← env_app Γ Γs; Γp' ← env_replace i Γ Γp; Some (Envs Γp' Γs n)
  | false => _ ← env_app Γ Γp; Γs' ← env_replace i Γ Γs; Some (Envs Γp Γs' n)
  end).
Defined.
Definition envs_replace {PROP : bi} (i : ident) (p q : bool)
    (Γ : env PROP) (Δ : envs PROP) : option (envs PROP).
exact (if beq p q then envs_simple_replace i p Γ Δ
  else envs_app q Γ (envs_delete true i p Δ)).
Defined.
Definition env_spatial_is_nil {PROP} (Δ : envs PROP) : bool.
Admitted.
Definition envs_clear_spatial {PROP} (Δ : envs PROP) : envs PROP.
Admitted.
Definition envs_clear_intuitionistic {PROP} (Δ : envs PROP) : envs PROP.
Admitted.
Definition envs_incr_counter {PROP} (Δ : envs PROP) : envs PROP.
Admitted.

Fixpoint envs_split_go {PROP}
    (js : list ident) (Δ1 Δ2 : envs PROP) : option (envs PROP * envs PROP) :=
  match js with
  | [] => Some (Δ1, Δ2)
  | j :: js =>
     '(p,P,Δ1') ← envs_lookup_delete true j Δ1;
     if p : bool then envs_split_go js Δ1 Δ2 else
     envs_split_go js Δ1' (envs_snoc Δ2 false j P)
  end.
Definition envs_split {PROP} (d : direction)
    (js : list ident) (Δ : envs PROP) : option (envs PROP * envs PROP).
Admitted.

Fixpoint env_to_prop_go {PROP : bi} (acc : PROP) (Γ : env PROP) : PROP :=
  match Γ with Enil => acc | Esnoc Γ _ P => env_to_prop_go (P ∗ acc)%I Γ end.
Definition env_to_prop {PROP : bi} (Γ : env PROP) : PROP.
Admitted.

Fixpoint env_to_prop_and_go {PROP : bi} (acc : PROP) (Γ : env PROP) : PROP :=
  match Γ with Enil => acc | Esnoc Γ _ P => env_to_prop_and_go (P ∧ acc)%I Γ end.
Definition env_to_prop_and {PROP : bi} (Γ : env PROP) : PROP.
Admitted.

Section envs.
End envs.
Module Export iris_DOT_proofmode_DOT_environments.
Module Export iris.
Module Export proofmode.
Module Export environments.
End environments.

End proofmode.

End iris.

End iris_DOT_proofmode_DOT_environments.

Local Set Universe Polymorphism.

Inductive tele : Type :=
  | TeleO : tele
  | TeleS {X} (binder : X → tele) : tele.
Fixpoint tele_fun (TT : tele) (T : Type) : Type.
exact (match TT with
  | TeleO => T
  | TeleS b => ∀ x, tele_fun (b x) T
  end).
Defined.

Notation "TT -t> A" :=
  (tele_fun TT A) (at level 99, A at level 200, right associativity).

Definition tele_fold {X Y} {TT : tele} (step : ∀ {A : Type}, (A → Y) → Y) (base : X → Y)
  : (TT -t> X) → Y :=
  (fix rec {TT} : (TT -t> X) → Y :=
     match TT as TT return (TT -t> X) → Y with
     | TeleO => λ x : X, base x
     | TeleS b => λ f, step (λ x, rec (f x))
     end) TT.

Record tele_arg_cons {X : Type} (f : X → Type) : Type := TeleArgCons
  { tele_arg_head : X;
    tele_arg_tail : f tele_arg_head }.
Global Arguments TeleArgCons {_ _} _ _.
Fixpoint tele_arg@{u} (t : tele@{u}) : Type@{u}.
exact (match t with
  | TeleO => unit
  | TeleS f => tele_arg_cons (λ x, tele_arg (f x))
  end).
Defined.

Notation TargS a b :=
  ((@TeleArgCons _ (λ x, tele_arg (_ x)) a b) : (tele_arg (TeleS _))) (only parsing).
Coercion tele_arg : tele >-> Sortclass.

Fixpoint tele_app {TT : tele} {U} : (TT -t> U) -> TT → U :=
  match TT as TT return (TT -t> U) -> TT → U with
  | TeleO => λ F _, F
  | TeleS r => λ (F : TeleS r -t> U) '(TeleArgCons x b),
      tele_app (F x) b
  end.

Fixpoint tele_bind {U} {TT : tele} : (TT → U) → TT -t> U :=
  match TT as TT return (TT → U) → TT -t> U with
  | TeleO => λ F, F tt
  | @TeleS X b => λ (F : TeleS b → U) (x : X),
      tele_bind (λ a, F (TargS x a))
  end.
Definition tforall {TT : tele} (Ψ : TT → Prop) : Prop.
Admitted.

Notation "'∀..' x .. y , P" := (tforall (λ x, .. (tforall (λ y, P)) .. ))
  (at level 200, x binder, y binder, right associativity,
  format "∀..  x  ..  y ,  P") : stdpp_scope.
Module Export stdpp.
Module Export telescopes.
End telescopes.

End stdpp.
Export stdpp.telescopes.
Export iris.bi.bi.
Import bi.
Definition bi_texist {PROP : bi} {TT : tele@{Quant}} (Ψ : TT → PROP) : PROP.
exact (tele_fold (@bi_exist PROP) (λ x, x) (tele_bind Ψ)).
Defined.
Definition bi_tforall {PROP : bi} {TT : tele@{Quant}} (Ψ : TT → PROP) : PROP.
Admitted.

Notation "'∃..' x .. y , P" := (bi_texist (λ x, .. (bi_texist (λ y, P)) .. )%I)
  (at level 200, x binder, y binder, right associativity,
  format "∃..  x  ..  y ,  P") : bi_scope.
Module Export iris_DOT_bi_DOT_telescopes.
Module Export iris.
Module Export bi.
Module Export telescopes.
End telescopes.

End bi.

End iris.

End iris_DOT_bi_DOT_telescopes.

Export iris.bi.bi.

Class MakeSep {PROP : bi} (P Q PQ : PROP) := make_sep : P ∗ Q ⊣⊢ PQ .
Class KnownLMakeSep {PROP : bi} (P Q PQ : PROP) :=
  #[global] knownl_make_sep :: MakeSep P Q PQ.
Module Export classes_make.
End classes_make.
Export iris.bi.telescopes.
Export iris.proofmode.base.
Export iris.proofmode.environments.
Export iris.proofmode.classes.
Import env_notations.

Local Open Scope lazy_bool_scope.

Section tactics.
Context {PROP : bi}.
Implicit Types P Q : PROP.

Lemma tac_start P : envs_entails (Envs Enil Enil 1) P → ⊢ P.
Admitted.

Class AffineEnv (Γ : env PROP) := affine_env : Forall Affine Γ.

Lemma tac_emp_intro Δ : AffineEnv (env_spatial Δ) → envs_entails Δ emp.
Admitted.

Lemma tac_assumption Δ i p P Q :
  envs_lookup i Δ = Some (p,P) →
  FromAssumption p P Q →
  (let Δ' := envs_delete true i p Δ in
   if env_spatial_is_nil Δ' then TCTrue
   else TCOr (Absorbing Q) (AffineEnv (env_spatial Δ'))) →
  envs_entails Δ Q.
Admitted.

Lemma tac_rename Δ i j p P Q :
  envs_lookup i Δ = Some (p,P) →
  match envs_simple_replace i p (Esnoc Enil j P) Δ with
  | None => False
  | Some Δ' => envs_entails Δ' Q
  end →
  envs_entails Δ Q.
Admitted.

Lemma tac_clear Δ i p P Q :
  envs_lookup i Δ = Some (p,P) →
  (if p then TCTrue else TCOr (Affine P) (Absorbing Q)) →
  envs_entails (envs_delete true i p Δ) Q →
  envs_entails Δ Q.
Admitted.

Lemma tac_ex_falso Δ Q : envs_entails Δ False → envs_entails Δ Q.
Admitted.

Lemma tac_pure_intro Δ Q φ a :
  FromPure a Q φ →
  (if a then AffineEnv (env_spatial Δ) else TCTrue) →
  φ →
  envs_entails Δ Q.
Admitted.

Lemma tac_pure Δ i p P φ Q :
  envs_lookup i Δ = Some (p, P) →
  IntoPure P φ →
  (if p then TCTrue else TCOr (Affine P) (Absorbing Q)) →
  (φ → envs_entails (envs_delete true i p Δ) Q) → envs_entails Δ Q.
Admitted.

Lemma tac_intuitionistic Δ i j p P P' Q :
  envs_lookup i Δ = Some (p, P) →
  IntoPersistent p P P' →
  (if p then TCTrue else TCOr (Affine P) (Absorbing Q)) →
  match envs_replace i p true (Esnoc Enil j P') Δ with
  | None => False
  | Some Δ' => envs_entails Δ' Q
  end →
  envs_entails Δ Q.
Admitted.

Lemma tac_spatial Δ i j p P P' Q :
  envs_lookup i Δ = Some (p, P) →
  (if p then FromAffinely P' P else TCEq P' P) →
  match envs_replace i p false (Esnoc Enil j P') Δ with
  | None => False
  | Some Δ' => envs_entails Δ' Q
  end →
  envs_entails Δ Q.
Admitted.

Lemma tac_impl_intro Δ i P P' Q R :
  FromImpl R P Q →
  (if env_spatial_is_nil Δ then TCTrue else Persistent P) →
  FromAffinely P' P →
  match envs_app false (Esnoc Enil i P') Δ with
  | None => False
  | Some Δ' => envs_entails Δ' Q
  end →
  envs_entails Δ R.
Admitted.
Lemma tac_impl_intro_intuitionistic Δ i P P' Q R :
  FromImpl R P Q →
  IntoPersistent false P P' →
  match envs_app true (Esnoc Enil i P') Δ with
  | None => False
  | Some Δ' => envs_entails Δ' Q
  end →
  envs_entails Δ R.
Admitted.
Lemma tac_impl_intro_drop Δ P Q R :
  FromImpl R P Q → envs_entails Δ Q → envs_entails Δ R.
Admitted.

Lemma tac_wand_intro Δ i P Q R :
  FromWand R P Q →
  match envs_app false (Esnoc Enil i P) Δ with
  | None => False
  | Some Δ' => envs_entails Δ' Q
  end →
  envs_entails Δ R.
Admitted.

Lemma tac_wand_intro_intuitionistic Δ i P P' Q R :
  FromWand R P Q →
  IntoPersistent false P P' →
  TCOr (Affine P) (Absorbing Q) →
  match envs_app true (Esnoc Enil i P') Δ with
  | None => False
  | Some Δ' => envs_entails Δ' Q
  end →
  envs_entails Δ R.
Admitted.
Lemma tac_wand_intro_drop Δ P Q R :
  FromWand R P Q →
  TCOr (Affine P) (Absorbing Q) →
  envs_entails Δ Q →
  envs_entails Δ R.
Admitted.

Lemma tac_specialize remove_intuitionistic Δ i p j q P1 P2 R Q :
  envs_lookup i Δ = Some (p, P1) →
  let Δ' := envs_delete remove_intuitionistic i p Δ in
  envs_lookup j Δ' = Some (q, R) →
  IntoWand q p R P1 P2 →
  match envs_replace j q (p &&& q) (Esnoc Enil j P2) Δ' with
  | Some Δ'' => envs_entails Δ'' Q
  | None => False
  end → envs_entails Δ Q.
Admitted.

Lemma tac_specialize_assert Δ j (q am neg : bool) js R P1 P2 P1' Q :
  envs_lookup j Δ = Some (q, R) →
  IntoWand q false R P1 P2 →
  (if am then AddModal P1' P1 Q else TCEq P1' P1) →
  match
    '(Δ1,Δ2) ← envs_split (if neg is true then Right else Left)
                          js (envs_delete true j q Δ);
    Δ2' ← envs_app (negb am &&& q &&& env_spatial_is_nil Δ1) (Esnoc Enil j P2) Δ2;
    Some (Δ1,Δ2')
  with
  | Some (Δ1,Δ2') =>

     envs_entails Δ1 P1' ∧ envs_entails Δ2' Q
  | None => False
  end → envs_entails Δ Q.
Admitted.

Lemma tac_unlock_emp Δ Q : envs_entails Δ Q → envs_entails Δ (emp ∗ locked Q).
Admitted.
Lemma tac_unlock_True Δ Q : envs_entails Δ Q → envs_entails Δ (True ∗ locked Q).
Admitted.
Lemma tac_unlock Δ Q : envs_entails Δ Q → envs_entails Δ (locked Q).
Admitted.

Lemma tac_specialize_frame Δ j (q am : bool) R P1 P2 P1' Q Q' :
  envs_lookup j Δ = Some (q, R) →
  IntoWand q false R P1 P2 →
  (if am then AddModal P1' P1 Q else TCEq P1' P1) →
  envs_entails (envs_delete true j q Δ) (P1' ∗ locked Q') →
  Q' = (P2 -∗ Q)%I →
  envs_entails Δ Q.
Admitted.

Lemma tac_specialize_assert_pure Δ j q a R P1 P2 φ Q :
  envs_lookup j Δ = Some (q, R) →
  IntoWand q false R P1 P2 →
  FromPure a P1 φ →
  φ →
  match envs_simple_replace j q (Esnoc Enil j P2) Δ with
  | None => False
  | Some Δ' => envs_entails Δ' Q
  end →
  envs_entails Δ Q.
Admitted.

Lemma tac_specialize_assert_intuitionistic Δ j q P1 P1' P2 R Q :
  envs_lookup j Δ = Some (q, R) →
  IntoWand q true R P1 P2 →
  Persistent P1 →
  IntoAbsorbingly P1' P1 →
  envs_entails (envs_delete true j q Δ) P1' →
  match envs_simple_replace j q (Esnoc Enil j P2) Δ with
  | Some Δ'' => envs_entails Δ'' Q
  | None => False
  end → envs_entails Δ Q.
Admitted.

Lemma tac_specialize_intuitionistic_helper Δ j q P R R' Q :
  envs_lookup j Δ = Some (q,P) →
  (if q then TCTrue else BiAffine PROP) →
  envs_entails Δ (<absorb> R) →
  IntoPersistent false R R' →
  match envs_replace j q true (Esnoc Enil j R') Δ with
  | Some Δ'' => envs_entails Δ'' Q
  | None => False
  end → envs_entails Δ Q.
Admitted.

Lemma tac_specialize_intuitionistic_helper_done Δ i q P :
  envs_lookup i Δ = Some (q,P) →
  envs_entails Δ (<absorb> P).
Admitted.

Lemma tac_revert Δ i Q :
  match envs_lookup_delete true i Δ with
  | Some (p,P,Δ') => envs_entails Δ' ((if p then □ P else P)%I -∗ Q)
  | None => False
  end →
  envs_entails Δ Q.
Admitted.

Definition IntoEmpValid (φ : Type) (P : PROP) := φ → ⊢ P.

Lemma into_emp_valid_here φ P : AsEmpValid DirectionIntoEmpValid φ P → IntoEmpValid φ P.
Admitted.
Lemma into_emp_valid_impl (φ ψ : Type) P :
  φ → Into

[...]

end in
               fail 1 "iSpecialize: cannot solve" Q "using done"
             | let Q := match goal with |- ?Q => Q end in
               fail 1 "iSpecialize: cannot solve" Q "using done" ]
    | false => idtac
    end in
  let Δ := iGetCtx in
  lazymatch pats with
    | [] => idtac
    | SIdent ?H2 [] :: ?pats =>

       notypeclasses refine (tac_specialize false _ H2 _ H1 _ _ _ _ _ _ _ _ _);
         [pm_reflexivity ||
          let H2 := pretty_ident H2 in
          fail "iSpecialize:" H2 "not found"
         |pm_reflexivity ||
          let H1 := pretty_ident H1 in
          fail "iSpecialize:" H1 "not found"
         |tc_solve ||
          let P := match goal with |- IntoWand _ _ ?P ?Q _ => P end in
          let Q := match goal with |- IntoWand _ _ ?P ?Q _ => Q end in
          fail "iSpecialize: cannot instantiate" P "with" Q
         |pm_reduce; iSpecializePat_go H1 pats]
    | SIdent ?H2 ?pats1 :: ?pats =>

       let H2tmp := iFresh in
       iPoseProofCoreHyp H2 as H2tmp;

       iRevertHyp H1 with (fun p =>
         iSpecializePat_go H2tmp pats1;
           [..
           |_iIntroMaybePersistent H1 p]);

         [..
         |
          notypeclasses refine (tac_specialize true _ H2tmp _ H1 _ _ _ _ _ _ _ _ _);
            [pm_reflexivity ||
             let H2tmp := pretty_ident H2tmp in
             fail "iSpecialize:" H2tmp "not found"
            |pm_reflexivity ||
             let H1 := pretty_ident H1 in
             fail "iSpecialize:" H1 "not found"
            |tc_solve ||
             let P := match goal with |- IntoWand _ _ ?P ?Q _ => P end in
             let Q := match goal with |- IntoWand _ _ ?P ?Q _ => Q end in
             fail "iSpecialize: cannot instantiate" P "with" Q
            |pm_reduce; iSpecializePat_go H1 pats]]
    | SPureGoal ?d :: ?pats =>
       notypeclasses refine (tac_specialize_assert_pure _ H1 _ _ _ _ _ _ _ _ _ _ _ _);
         [pm_reflexivity ||
          let H1 := pretty_ident H1 in
          fail "iSpecialize:" H1 "not found"
         |solve_to_wand H1
         |tc_solve ||
          let Q := match goal with |- FromPure _ ?Q _ => Q end in
          fail "iSpecialize:" Q "not pure"
         |solve_done d
         |pm_reduce;
          iSpecializePat_go H1 pats]
    | SGoal (SpecGoal GIntuitionistic false ?Hs_frame [] ?d) :: ?pats =>
       notypeclasses refine (tac_specialize_assert_intuitionistic _ H1 _ _ _ _ _ _ _ _ _ _ _ _);
         [pm_reflexivity ||
          let H1 := pretty_ident H1 in
          fail "iSpecialize:" H1 "not found"
         |solve_to_wand H1
         |tc_solve ||
          let Q := match goal with |- Persistent ?Q => Q end in
          fail "iSpecialize:" Q "not persistent"
         |tc_solve
         |pm_reduce; iFrame Hs_frame; solve_done d
         |pm_reduce; iSpecializePat_go H1 pats]
    | SGoal (SpecGoal GIntuitionistic _ _ _ _) :: ?pats =>
       fail "iSpecialize: cannot select hypotheses for intuitionistic premise"
    | SGoal (SpecGoal ?m ?lr ?Hs_frame ?Hs ?d) :: ?pats =>
       let Hs' := eval cbv in (if lr then Hs else Hs_frame ++ Hs) in
       notypeclasses refine (tac_specialize_assert _ H1 _
           (if m is GModal then true else false) lr Hs' _ _ _ _ _ _ _ _ _);
         [pm_reflexivity ||
          let H1 := pretty_ident H1 in
          fail "iSpecialize:" H1 "not found"
         |solve_to_wand H1
         |tc_solve || fail "iSpecialize: goal not a modality"
         |pm_reduce;
          lazymatch goal with
          | |- False =>
            let Hs' := iMissingHypsCore Δ Hs' in
            fail "iSpecialize: hypotheses" Hs' "not found"
          | _ =>
            notypeclasses refine (conj _ _);
              [iFrame Hs_frame; solve_done d
              |iSpecializePat_go H1 pats]
          end]
    | SAutoFrame GIntuitionistic :: ?pats =>
       notypeclasses refine (tac_specialize_assert_intuitionistic _ H1 _ _ _ _ _ _ _ _ _ _ _ _);
         [pm_reflexivity ||
          let H1 := pretty_ident H1 in
          fail "iSpecialize:" H1 "not found"
         |solve_to_wand H1
         |tc_solve ||
          let Q := match goal with |- Persistent ?Q => Q end in
          fail "iSpecialize:" Q "not persistent"
         |tc_solve ||
          fail "iSpecialize: Cannot find IntoAbsorbingly;"
               "this should not happen, please report a bug"
         |pm_reduce; solve [iFrame "∗ #"]
         |pm_reduce; iSpecializePat_go H1 pats]
    | SAutoFrame ?m :: ?pats =>
       notypeclasses refine (tac_specialize_frame _ H1 _
           (if m is GModal then true else false) _ _ _ _ _ _ _ _ _ _ _);
         [pm_reflexivity ||
          let H1 := pretty_ident H1 in
          fail "iSpecialize:" H1 "not found"
         |solve_to_wand H1
         |tc_solve || fail "iSpecialize: goal not a modality"
         |pm_reduce;
          first
            [notypeclasses refine (tac_unlock_emp _ _ _)
            |notypeclasses refine (tac_unlock_True _ _ _)
            |iFrame "∗ #"; notypeclasses refine (tac_unlock _ _ _)
            |let P :=
               match goal with |- envs_entails _ (?P ∗ locked _)%I => P end in
             fail 1 "iSpecialize: premise" P "cannot be solved by framing"]
         |exact eq_refl]; _iIntroSpatial H1; iSpecializePat_go H1 pats
    end.

Local Tactic Notation "iSpecializePat" open_constr(H) constr(pat) :=
  let pats := spec_pat.parse pat in iSpecializePat_go H pats.

Fixpoint use_tac_specialize_intuitionistic_helper {M}
    (Δ : envs M) (pats : list spec_pat) : bool :=
  match pats with
  | [] => false
  | SPureGoal _ :: pats =>
     use_tac_specialize_intuitionistic_helper Δ pats
  | SAutoFrame _ :: _ => true
  | SIdent H _ :: pats =>
     match envs_lookup_delete false H Δ with
     | Some (false, _, Δ) => true
     | Some (true, _, Δ) => use_tac_specialize_intuitionistic_helper Δ pats
     | None => false
     end
  | SGoal (SpecGoal GModal _ _ _ _) :: _ => false
  | SGoal (SpecGoal GIntuitionistic _ _ _ _) :: pats =>
     use_tac_specialize_intuitionistic_helper Δ pats
  | SGoal (SpecGoal GSpatial neg Hs_frame Hs _) :: pats =>
     match envs_split (if neg is true then Right else Left)
                      (if neg then Hs else pm_app Hs_frame Hs) Δ with
     | Some (Δ1,Δ2) => if env_spatial_is_nil Δ1
                       then use_tac_specialize_intuitionistic_helper Δ2 pats
                       else true
     | None => false
     end
  end.

Tactic Notation "iSpecializeCore" open_constr(H)
    "with" open_constr(xs) open_constr(pat) "as" constr(p) :=
  let p := intro_pat_intuitionistic p in
  let pat := spec_pat.parse pat in
  let H :=
    lazymatch type of H with
    | string => constr:(INamed H)
    | _ => H
    end in
  iSpecializeArgs H xs; [..|
    lazymatch type of H with
    | ident =>
       let pat := spec_pat.parse pat in
       let Δ := iGetCtx in

       let b := eval lazy [use_tac_specialize_intuitionistic_helper] in
         (if p then use_tac_specialize_intuitionistic_helper Δ pat else false) in
       lazymatch eval pm_eval in b with
       | true =>

          lazymatch iTypeOf H with
          | Some (?q, _) =>
             let PROP := iBiOfGoal in

             lazymatch eval lazy in (q || tc_to_bool (BiAffine PROP)) with
             | true =>
                notypeclasses refine (tac_specialize_intuitionistic_helper _ H _ _ _ _ _ _ _ _ _ _);
                  [pm_reflexivity

                  |pm_reduce; tc_solve

                  |iSpecializePat H pat;
                    [..
                    |notypeclasses refine (tac_specialize_intuitionistic_helper_done _ H _ _ _);
                     pm_reflexivity]
                  |tc_solve ||
                   let Q := match goal with |- IntoPersistent _ ?Q _ => Q end in
                   fail "iSpecialize:" Q "not persistent"
                  |pm_reduce ]
             | false => iSpecializePat H pat
             end
          | None =>
             let H := pretty_ident H in
             fail "iSpecialize:" H "not found"
          end
       | false => iSpecializePat H pat
       end
    | _ => fail "iSpecialize:" H "should be a hypothesis, use iPoseProof instead"
    end].

Tactic Notation "iSpecializeCore" open_constr(t) "as" constr(p) :=
  lazymatch type of t with
  | string => iSpecializeCore t with hnil "" as p
  | ident => iSpecializeCore t with hnil "" as p
  | _ =>
    lazymatch t with
    | ITrm ?H ?xs ?pat => iSpecializeCore H with xs pat as p
    | _ => fail "iSpecialize:" t "should be a proof mode term"
    end
  end.

Tactic Notation "iPoseProofCore" open_constr(lem)
    "as" constr(p) tactic3(tac) :=
  iStartProof;
  let t := lazymatch lem with ITrm ?t ?xs ?pat => t | _ => lem end in
  let t := lazymatch type of t with string => constr:(INamed t) | _ => t end in
  let spec_tac Htmp :=
    lazymatch lem with
    | ITrm _ ?xs ?pat => iSpecializeCore (ITrm Htmp xs pat) as p
    | _ => idtac
    end in
  lazymatch type of t with
  | ident =>
     let Htmp := iFresh in
     iPoseProofCoreHyp t as Htmp; spec_tac Htmp; [..|tac Htmp]
  | _ => iPoseProofCoreLem t as (fun Htmp => spec_tac Htmp; [..|tac Htmp])
  end.

Tactic Notation "iOrDestruct" constr(H) "as" constr(H1) constr(H2) :=
  eapply tac_or_destruct with H _ H1 H2 _ _ _;
    [pm_reflexivity ||
     let H := pretty_ident H in
     fail "iOrDestruct:" H "not found"
    |tc_solve ||
     let P := match goal with |- IntoOr ?P _ _ => P end in
     fail "iOrDestruct: cannot destruct" P
    | pm_reduce;
      lazymatch goal with
      | |- False =>
        let H1 := pretty_ident H1 in
        let H2 := pretty_ident H2 in
        fail "iOrDestruct:" H1 "or" H2 "not fresh"
      |  _ => split
      end].

Ltac _iAndDestruct H H1 H2 :=
  eapply tac_and_destruct with H _ H1 H2 _ _ _;
    [pm_reflexivity ||
     let H := pretty_ident H in
     fail "iAndDestruct:" H "not found"
    |pm_reduce; tc_solve ||
     let P :=
       lazymatch goal with
       | |- IntoSep ?P _ _ => P
       | |- IntoAnd _ ?P _ _ => P
       end in
     fail "iAndDestruct: cannot destruct" P
    |pm_reduce;
     lazymatch goal with
       | |- False =>
         let H1 := pretty_ident H1 in
         let H2 := pretty_ident H2 in
         fail "iAndDestruct:" H1 "or" H2 "not fresh"
       | _ => idtac
     end].

Ltac _iAndDestructChoice H d H' :=
  eapply tac_and_destruct_choice with H _ d H' _ _ _;
    [pm_reflexivity || fail "iAndDestructChoice:" H "not found"
    |pm_reduce; tc_solve ||
     let P := match goal with |- TCOr (IntoAnd _ ?P _ _) _ => P end in
     fail "iAndDestructChoice: cannot destruct" P
    |pm_reduce;
     lazymatch goal with
     | |- False =>
       let H' := pretty_ident H' in
       fail "iAndDestructChoice:" H' "not fresh"
     | _ => idtac
     end].

Tactic Notation "_iExistDestruct" constr(H)
    "as" simple_intropattern(x) constr(Hx) :=
  eapply tac_exist_destruct with H _ Hx _ _ _;
    [pm_reflexivity ||
     let H := pretty_ident H in
     fail "iExistDestruct:" H "not found"
    |tc_solve ||
     let P := match goal with |- IntoExist ?P _ _ => P end in
     fail "iExistDestruct: cannot destruct" P|];
    let name := lazymatch goal with
                | |- let _ := (λ name, _) in _ => name
                end in
    intros _;
    let y := fresh name in
    intros y; pm_reduce;
    lazymatch goal with
    | |- False =>
      let Hx := pretty_ident Hx in
      fail "iExistDestruct:" Hx "not fresh"
    | _ => revert y; intros x
    end.

Tactic Notation "iModIntro" uconstr(sel) :=
  iStartProof;
  notypeclasses refine (tac_modal_intro _ _ sel _ _ _ _ _ _ _ _ _ _ _ _ _ _);
    [tc_solve ||
     fail "iModIntro: the goal is not a modality"
    |tc_solve ||
     let s := lazymatch goal with |- IntoModalIntuitionisticEnv _ _ _ ?s => s end in
     lazymatch eval hnf in s with
     | MIEnvForall ?C => fail "iModIntro: intuitionistic context does not satisfy" C
     | MIEnvIsEmpty => fail "iModIntro: intuitionistic context is non-empty"
     end
    |tc_solve ||
     let s := lazymatch goal with |- IntoModalSpatialEnv _ _ _ ?s _ => s end in
     lazymatch eval hnf in s with
     | MIEnvForall ?C => fail "iModIntro: spatial context does not satisfy" C
     | MIEnvIsEmpty => fail "iModIntro: spatial context is non-empty"
     end
    |pm_reduce; tc_solve ||
     fail "iModIntro: cannot filter spatial context when goal is not absorbing"
    |iSolveSideCondition
    |pm_prettify
      ].
Tactic Notation "iModIntro" := iModIntro _.

Tactic Notation "iModCore" constr(H) "as" constr(H') :=
  eapply tac_modal_elim with H H' _ _ _ _ _ _;
    [pm_reflexivity || fail "iMod:" H "not found"
    |tc_solve ||
     let P := match goal with |- ElimModal _ _ _ ?P _ _ _ => P end in
     let Q := match goal with |- ElimModal _ _ _ _ _ ?Q _ => Q end in
     fail "iMod: cannot eliminate modality" P "in" Q
    |iSolveSideCondition
    |pm_reduce;
     lazymatch goal with
     | |- False =>
       let H' := pretty_ident H' in
       fail "iMod:" H' "not fresh"
     | _ => pm_prettify
     end].

Ltac _ident_for_pat pat :=
  lazymatch pat with
  | IIdent ?x => x
  | _ => let x := iFresh in x
  end.

Ltac _ident_for_pat_default pat default :=
  lazymatch pat with
  | IIdent ?x => x
  | _ =>
    lazymatch default with
    | IAnon _ => default
    | _ => let x := iFresh in x
    end
  end.

Ltac _iDestructHypGo Hz pat0 pat :=
  lazymatch pat with
  | IFresh =>
     lazymatch Hz with
     | IAnon _ => idtac
     | INamed ?Hz => let Hz' := iFresh in iRename Hz into Hz'
     end
  | IDrop => _iClearHyp Hz
  | IFrame => iFrame Hz
  | IIdent Hz => idtac
  | IIdent ?y => iRename Hz into y
  | IList [[]] => iExFalso; iExact Hz

  | IList [[?pat1; IDrop]] =>
     let x := _ident_for_pat_default pat1 Hz in
     _iAndDestructChoice Hz Left x;
     _iDestructHypGo x pat0 pat1
  | IList [[IDrop; ?pat2]] =>
     let x := _ident_for_pat_default pat2 Hz in
     _iAndDestructChoice Hz Right x;
     _iDestructHypGo x pat0 pat2

  | IList [[IPure IGallinaAnon; ?pat2]] =>
     let x := _ident_for_pat_default pat2 Hz in
     _iExistDestruct Hz as ? x; _iDestructHypGo x pat0 pat2
  | IList [[IPure (IGallinaNamed ?s); ?pat2]] =>
     let x := fresh in
     let y := _ident_for_pat_default pat2 Hz in
     _iExistDestruct Hz as x y;
     rename_by_string x s;
     _iDestructHypGo y pat0 pat2
  | IList [[?pat1; ?pat2]] =>

     let x1 := _ident_for_pat_default pat1 Hz in
     let x2 := _ident_for_pat pat2 in
     _iAndDestruct Hz x1 x2;
     _iDestructHypGo x1 pat0 pat1; _iDestructHypGo x2 pat0 pat2
  | IList [_ :: _ :: _] => fail "iDestruct:" pat0 "has too many conjuncts"
  | IList [[_]] => fail "iDestruct:" pat0 "has just a single conjunct"

  | IList [[?pat1];[?pat2]] =>
     let x1 := _ident_for_pat_default pat1 Hz in
     let x2 := _ident_for_pat_default pat2 Hz in
     iOrDestruct Hz as x1 x2;
     [_iDestructHypGo x1 pat0 pat1|_iDestructHypGo x2 pat0 pat2]

  | IList (_ :: _ :: _ :: _) => fail "iDestruct:" pat0 "has too many disjuncts"

  | IList [_;_] => fail "iDestruct: in" pat0 "a disjunct has multiple patterns"

  | IPure IGallinaAnon => iPure Hz as ?
  | IPure (IGallinaNamed ?s) =>
     let x := fresh in
     iPure Hz as x;
     rename_by_string x s
  | IRewrite Right => iPure Hz as ->
  | IRewrite Left => iPure Hz as <-
  | IIntuitionistic ?pat =>
    let x := _ident_for_pat_default pat Hz in
    _iIntuitionistic Hz x; _iDestructHypGo x pat0 pat
  | ISpatial ?pat =>
    let x := _ident_for_pat_default pat Hz in
    _iSpatial Hz x; _iDestructHypGo x pat0 pat
  | IModalElim ?pat =>
    let x := _ident_for_pat_default pat Hz in
    iModCore Hz as x; _iDestructHypGo x pat0 pat
  | _ => fail "iDestruct:" pat0 "is not supported due to" pat
  end.
Ltac _iDestructHypFindPat Hgo pat found pats :=
  lazymatch pats with
  | [] =>
    lazymatch found with
    | true => pm_prettify
    | false => fail "iDestruct:" pat "should contain exactly one proper introduction pattern"
    end
  | ISimpl :: ?pats => simpl; _iDestructHypFindPat Hgo pat found pats
  | IClear ?H :: ?pats => iClear H; _iDestructHypFindPat Hgo pat found pats
  | IClearFrame ?H :: ?pats => iFrame H; _iDestructHypFindPat Hgo pat found pats
  | ?pat1 :: ?pats =>
     lazymatch found with
     | false => _iDestructHypGo Hgo pat pat1; _iDestructHypFindPat Hgo pat true pats
     | true => fail "iDestruct:" pat "should contain exactly one proper introduction pattern"
     end
  end.

Ltac _iDestructHyp0 H pat :=
  let pats := intro_pat.parse pat in
  _iDestructHypFindPat H pat false pats.
Ltac _iDestructHyp H xs pat :=
  ltac1_list_iter ltac:(fun x => _iExistDestruct H as x H) xs;
  _iDestructHyp0 H pat.

Tactic Notation "iDestructHyp" constr(H) "as" constr(pat) :=
  _iDestructHyp0 H pat.

Ltac _iIntros_go pats startproof :=
  lazymatch pats with
  | [] =>
    lazymatch startproof with
    | true => iStartProof
    | false => idtac
    end

  | IPure (IGallinaNamed ?s) :: ?pats =>
     let i := fresh in
     _iIntro (i);
     rename_by_string i s;
     _iIntros_go pats startproof
  | IPure IGallinaAnon :: ?pats => _iIntro (?); _iIntros_go pats startproof
  | IIntuitionistic (IIdent ?H) :: ?pats => _iIntroPersistent H; _iIntros_go pats false
  | IDrop :: ?pats => _iIntroDrop; _iIntros_go pats startproof
  | IIdent ?H :: ?pats => _iIntroSpatial H; _iIntros_go pats startproof

  | IPureIntro :: ?pats => iPureIntro; _iIntros_go pats false
  | IModalIntro :: ?pats => iModIntro; _iIntros_go pats false
  | IForall :: ?pats => repeat _iIntroForall; _iIntros_go pats startproof
  | IAll :: ?pats => repeat (_iIntroForall || _iIntro); _iIntros_go pats startproof

  | ISimpl :: ?pats => simpl; _iIntros_go pats startproof
  | IClear ?H :: ?pats => iClear H; _iIntros_go pats false
  | IClearFrame ?H :: ?pats => iFrame H; _iIntros_go pats false
  | IDone :: ?pats => try done; _iIntros_go pats startproof

  | IIntuitionistic ?pat :: ?pats =>
     let H := iFresh in _iIntroPersistent H; iDestructHyp H as pat; _iIntros_go pats false
  | ?pat :: ?pats =>
     let H := iFresh in _iIntroSpatial H; iDestructHyp H as pat; _iIntros_go pats false
  end.

Ltac _iIntros0 pat :=
  let pats := intro_pat.parse pat in

  lazymatch pats with
  | [] => idtac
  | _ => _iIntros_go pats true
  end.
Ltac _iIntros xs pat :=
  ltac1_list_iter ltac:(fun x => _iIntro (x)) xs;
  _iIntros0 pat.
Tactic Notation "iIntros" "(" ne_simple_intropattern_list(xs) ")" :=
  _iIntros xs "".

Tactic Notation "iDestructCore" open_constr(lem) "as" constr(p) tactic3(tac) :=
  let intro_destruct n :=
    let rec go n' :=
      lazymatch n' with
      | 0 => fail "iDestruct: cannot introduce" n "hypotheses"
      | 1 => repeat _iIntroForall; let H := iFresh in _iIntroSpatial H; tac H
      | S ?n' => repeat _iIntroForall; let H := iFresh in _iIntroSpatial H; go n'
      end in
    intros; go n in
  lazymatch type of lem with
  | nat => intro_destruct lem
  | Z =>

     let n := eval cbv in (Z.to_nat lem) in intro_destruct n
  | ident => tac lem
  | string => tac constr:(INamed lem)
  | _ => iPoseProofCore lem as p tac
  end.
Tactic Notation "iMod" open_constr(lem) "as" "(" ne_simple_intropattern_list(xs) ")"
    constr(pat) :=
  iDestructCore lem as false (fun H => iModCore H as H; last _iDestructHyp H xs pat).

Section class_instances.
Context {PROP : bi}.
Implicit Types P Q R : PROP.

Global Instance as_emp_valid_emp_valid d P : AsEmpValid0 d (⊢ P) P | 0.
Admitted.

Global Instance into_sep_sep P Q : IntoSep (P ∗ Q) P Q.
Admitted.

Global Instance into_exist_exist {A} (Φ : A → PROP) name :
  AsIdentName Φ name → IntoExist (bi_exist Φ) Φ name.
Admitted.
End class_instances.

Section class_instances_updates.
Context {PROP : bi}.
Implicit Types P Q R : PROP.
Global Instance elim_modal_bupd_fupd
    `{!BiBUpd PROP, !BiFUpd PROP, !BiBUpdFUpd PROP} p E1 E2 P Q :
  ElimModal True p false (|==> P) P (|={E1,E2}=> Q) (|={E1,E2}=> Q) | 10.
Admitted.
End class_instances_updates.

Section class_instances_frame.
Context {PROP : bi}.
Implicit Types P Q R : PROP.
Global Instance frame_here p R : Frame p R R emp | 1.
Admitted.
Global Instance frame_sep_l R P1 P2 Q Q' :
  Frame false R P1 Q → MakeSep Q P2 Q' → Frame false R (P1 ∗ P2) Q' | 9.
Admitted.

Inductive GatherEvarsEq {A} (x : A) : A → Prop :=
  GatherEvarsEq_refl : GatherEvarsEq x x.

#[projections(primitive)] Class FrameExistRequirements
    (p : bool) (R : PROP) {A} (Φ : A → PROP) (a' : A) (G' : PROP) := {
  frame_exist_witness : A;
  frame_exist_resource : PROP;
  frame_exist_proof : Frame p R (Φ frame_exist_witness) frame_exist_resource;
  frame_exist_witness_eq : GatherEvarsEq frame_exist_witness a';
  frame_exist_resource_eq : TCEq frame_exist_resource G'
}.
Global Existing Instance Build_FrameExistRequirements.

Inductive TCCbnTele {A} (x : A) : A → Prop :=
  TCCbnTele_refl : TCCbnTele x x.

Global Instance frame_exist {A} p R (Φ : A → PROP)
    (TT : tele) (g : TT → A) (Ψ : TT → PROP) Q :
  FrameInstantiateExistEnabled →
  (∀ c, FrameExistRequirements p R Φ (g c) (Ψ c)) →
  TCCbnTele (∃.. c, Ψ c)%I Q →
  Frame p R (∃ a, Φ a) Q.
Admitted.
Global Instance frame_fupd `{!BiFUpd PROP} p E1 E2 R P Q :
  Frame p R P Q → Frame p R (|={E1,E2}=> P) (|={E1,E2}=> Q) | 2.
Admitted.
End class_instances_frame.

Ltac solve_gather_evars_eq :=
  lazymatch goal with
  | |- GatherEvarsEq ?a (?g ?c) =>
    let rec retcon_tele T arg :=

      match a with
      | context [?term] =>
        is_evar term;
        let X := type of term in
        lazymatch X with
        | tele => fail
        | _ => idtac
        end;
        let T' := open_constr:(_) in
        unify T (TeleS (λ _ : X, T'));

        unify term (tele_arg_head (λ _ : X, T') arg);

        retcon_tele T' (tele_arg_tail (λ _ : X, T') arg)

      | _ =>

        unify T TeleO
      end
    in
    let T' := lazymatch (type of c) with tele_arg ?T => T end in
    retcon_tele T' c;
    exact (GatherEvarsEq_refl _)
  end.

Global Hint Extern 0 (GatherEvarsEq _ _) =>
  solve_gather_evars_eq : typeclass_instances.

Global Hint Extern 0 (TCCbnTele _ _) =>
  cbn [bi_texist tele_fold tele_bind tele_arg_head tele_arg_tail];
  exact (TCCbnTele_refl _) : typeclass_instances.

Section class_instances_make.
Context {PROP : bi}.
Implicit Types P Q R : PROP.

Global Instance make_sep_emp_l P : KnownLMakeSep emp P P.
Admitted.
End class_instances_make.
Export iris.algebra.cmra.

Record agree (A : Type) : Type := {
  agree_car : list A;
  agree_not_nil : bool_decide (agree_car = []) = false
}.
Global Arguments agree_car {_} _.

Section agree.
Context {SI : sidx} {A : ofe}.
Local Instance agree_dist : Dist (agree A).
Admitted.
Local Instance agree_equiv : Equiv (agree A).
Admitted.

Definition agree_ofe_mixin : OfeMixin (agree A).
Admitted.
Canonical Structure agreeO := Ofe (agree A) agree_ofe_mixin.
Local Instance agree_validN_instance : ValidN (agree A).
Admitted.
Local Instance agree_valid_instance : Valid (agree A).
Admitted.

Local Program Instance agree_op_instance : Op (agree A) := λ x y,
  {| agree_car := agree_car x ++ agree_car y |}.
Admit Obligations.
Local Instance agree_pcore_instance : PCore (agree A).
Admitted.

Definition agree_cmra_mixin : CmraMixin (agree A).
Admitted.
Canonical Structure agreeR : cmra.
exact (Cmra (agree A) agree_cmra_mixin).
Defined.

End agree.
Global Arguments agreeR {_} _.

Record uPred (M : ucmra) : Type := UPred {
  uPred_holds : nat → M → Prop;

  uPred_mono n1 n2 x1 x2 :
    uPred_holds n1 x1 → x1 ≼{n2} x2 → n2 ≤ n1 → uPred_holds n2 x2
}.

Local Coercion uPred_holds : uPred >-> Funclass.

Section cofe.
  Context {M : ucmra}.
Local Instance uPred_equiv : Equiv (uPred M).
Admitted.
Local Instance uPred_dist : Dist (uPred M).
Admitted.
  Definition uPred_ofe_mixin : OfeMixin (uPred M).
Admitted.
Canonical Structure uPredO : ofe.
exact (Ofe (uPred M) uPred_ofe_mixin).
Defined.

  Program Definition uPred_compl : Compl uPredO := λ c,
    {| uPred_holds n x := ∀ n', n' ≤ n → ✓{n'} x → c n' n' x |}.
Admit Obligations.
  Global Program Instance uPred_cofe : Cofe uPredO := cofe_finite uPred_compl _.
Admit Obligations.
End cofe.
Global Arguments uPredO : clear implicits.

Inductive uPred_entails {M} (P Q : uPred M) : Prop :=
  { uPred_in_entails : ∀ n x, ✓{n} x → P n x → Q n x }.
Global Hint Resolve uPred_mono : uPred_def.

Local Program Definition uPred_pure_def {M} (φ : Prop) : uPred M :=
  {| uPred_holds n x := φ |}.
Solve Obligations with done.
Local Definition uPred_pure_aux : seal (@uPred_pure_def).
Admitted.
Definition uPred_pure := uPred_pure_aux.(unseal).
Global Arguments uPred_pure {M}.

Local Program Definition uPred_and_def {M} (P Q : uPred M) : uPred M :=
  {| uPred_holds n x := P n x ∧ Q n x |}.
Solve Obligations with naive_solver eauto 2 with uPred_def.
Local Definition uPred_and_aux : seal (@uPred_and_def).
Admitted.
Definition uPred_and := uPred_and_aux.(unseal).
Global Arguments uPred_and {M}.

Local Program Definition uPred_or_def {M} (P Q : uPred M) : uPred M :=
  {| uPred_holds n x := P n x ∨ Q n x |}.
Solve Obligations with naive_solver eauto 2 with uPred_def.
Local Definition uPred_or_aux : seal (@uPred_or_def).
Admitted.
Definition uPred_or := uPred_or_aux.(unseal).
Global Arguments uPred_or {M}.

Local Program Definition uPred_impl_def {M} (P Q : uPred M) : uPred M :=
  {| uPred_holds n x := ∀ n' x',
       x ≼ x' → n' ≤ n → ✓{n'} x' → P n' x' → Q n' x' |}.
Admit Obligations.
Local Definition uPred_impl_aux : seal (@uPred_impl_def).
Admitted.
Definition uPred_impl := uPred_impl_aux.(unseal).
Global Arguments uPred_impl {M}.

Local Program Definition uPred_forall_def {M A} (Ψ : A → uPred M) : uPred M :=
  {| uPred_holds n x := ∀ a, Ψ a n x |}.
Solve Obligations with naive_solver eauto 2 with uPred_def.
Local Definition uPred_forall_aux : seal (@uPred_forall_def).
Admitted.
Definition uPred_forall := uPred_forall_aux.(unseal).

Local Program Definition uPred_exist_def {M A} (Ψ : A → uPred M) : uPred M :=
  {| uPred_holds n x := ∃ a, Ψ a n x |}.
Solve Obligations with naive_solver eauto 2 with uPred_def.
Local Definition uPred_exist_aux : seal (@uPred_exist_def).
Admitted.
Definition uPred_exist := uPred_exist_aux.(unseal).

Local Program Definition uPred_sep_def {M} (P Q : uPred M) : uPred M :=
  {| uPred_holds n x := ∃ x1 x2, x ≡{n}≡ x1 ⋅ x2 ∧ P n x1 ∧ Q n x2 |}.
Admit Obligations.
Local Definition uPred_sep_aux : seal (@uPred_sep_def).
Admitted.
Definition uPred_sep := uPred_sep_aux.(unseal).
Global Arguments uPred_sep {M}.

Local Program Definition uPred_wand_def {M} (P Q : uPred M) : uPred M :=
  {| uPred_holds n x := ∀ n' x',
       n' ≤ n → ✓{n'} (x ⋅ x') → P n' x' → Q n' (x ⋅ x') |}.
Admit Obligations.
Local Definition uPred_wand_aux : seal (@uPred_wand_def).
Admitted.
Definition uPred_wand := uPred_wand_aux.(unseal).
Global Arguments uPred_wand {M}.

Local Program Definition uPred_plainly_def {M} (P : uPred M) : uPred M :=
  {| uPred_holds n x := P n ε |}.
Solve Obligations with naive_solver eauto using uPred_mono, ucmra_unit_validN.

Local Program Definition uPred_persistently_def {M} (P : uPred M) : uPred M :=
  {| uPred_holds n x := P n (core x) |}.
Solve Obligations with naive_solver eauto using uPred_mono, cmra_core_monoN.
Local Definition uPred_persistently_aux : seal (@uPred_persistently_def).
Admitted.
Definition uPred_persistently := uPred_persistently_aux.(unseal).
Global Arguments uPred_persistently {M}.

Local Program Definition uPred_later_def {M} (P : uPred M) : uPred M :=
  {| uPred_holds n x := match n return _ with 0 => True | S n' => P n' x end |}.
Admit Obligations.
Local Definition uPred_later_aux : seal (@uPred_later_def).
Admitted.
Definition uPred_later := uPred_later_aux.(unseal).
Global Arguments uPred_later {M}.
Definition uPred_emp {M} : uPred M.
Admitted.

Lemma uPred_bi_mixin (M : ucmra) :
  BiMixin
    uPred_entails uPred_emp uPred_pure uPred_and uPred_or uPred_impl
    (@uPred_forall M) (@uPred_exist M) uPred_sep uPred_wand.
Admitted.

Lemma uPred_bi_persistently_mixin (M : ucmra) :
  BiPersistentlyMixin
    uPred_entails uPred_emp uPred_and
    (@uPred_exist M) uPred_sep uPred_persistently.
Admitted.

Lemma uPred_bi_later_mixin (M : ucmra) :
  BiLaterMixin
    uPred_entails uPred_pure uPred_or uPred_impl
    (@uPred_forall M) (@uPred_exist M) uPred_sep uPred_persistently uPred_later.
Admitted.
Canonical Structure uPredI (M : ucmra) : bi.
exact ({| bi_ofe_mixin := ofe_mixin_of (uPred M);
     bi_bi_mixin := uPred_bi_mixin M;
     bi_bi_later_mixin := uPred_bi_later_mixin M;
     bi_bi_persistently_mixin := uPred_bi_persistently_mixin M |}).
Defined.
Global Instance uPred_bi_bupd M : BiBUpd (uPredI M).
Admitted.

Notation frac := Qp (only parsing).
  Canonical Structure fracO := leibnizO frac.
Local Instance frac_valid_instance : Valid frac.
Admitted.
Local Instance frac_pcore_instance : PCore frac.
Admitted.
Local Instance frac_op_instance : Op frac.
Admitted.

  Definition frac_ra_mixin : RAMixin frac.
Admitted.
  Canonical Structure fracR := discreteR frac frac_ra_mixin.
Definition gmap_viewR {SI : sidx} (K : Type) `{Countable K} (V : cmra) : cmra.
Admitted.
Definition authR {SI : sidx} (A : ucmra) : cmra.
Admitted.

Structure gFunctor := GFunctor {
  gFunctor_F :> rFunctor;
  gFunctor_map_contractive : rFunctorContractive gFunctor_F;
}.

Record gFunctors := GFunctors {
  gFunctors_len : nat;
  gFunctors_lookup : fin gFunctors_len → gFunctor
}.

Definition gid (Σ : gFunctors) := fin (gFunctors_len Σ).

Definition gname := positive.
Definition iResUR (Σ : gFunctors) : ucmra.
Admitted.
  Notation iProp Σ := (uPred (iResUR Σ)).
  Notation iPropO Σ := (uPredO (iResUR Σ)).

Class inG (Σ : gFunctors) (A : cmra) := InG {
  inG_id : gid Σ;
  inG_apply := rFunctor_apply (gFunctors_lookup Σ inG_id);
  inG_prf : A = inG_apply (iPropO Σ) _;
}.
Local Definition own_def `{!inG Σ A} (γ : gname) (a : A) : iProp Σ.
Admitted.
Local Definition own_aux : seal (@own_def).
Admitted.
Definition own := own_aux.(unseal).
Global Arguments own {Σ A _} γ a.
Local Instance nat_valid_instance : Valid nat.
Admitted.
Local Instance nat_pcore_instance : PCore nat.
Admitted.
Local Instance nat_op_instance : Op nat.
Admitted.
  Lemma nat_ra_mixin : RAMixin nat.
Admitted.
Canonical Structure natR : cmra.
exact (discreteR nat nat_ra_mixin).
Defined.
Local Instance nat_unit_instance : Unit nat.
Admitted.
  Lemma nat_ucmra_mixin : UcmraMixin nat.
Admitted.
Canonical Structure natUR : ucmra.
exact (Ucmra nat nat_ucmra_mixin).
Defined.

Class lcGS (Σ : gFunctors) := LcGS {
  #[local] lcGS_inG :: inG Σ (authR natUR);
  lcGS_name : gname;
}.

Inductive coPset_disj :=
  | CoPset : coPset → coPset_disj
  | CoPsetInvalid : coPset_disj.
  Canonical Structure coPset_disjO := leibnizO coPset_disj.
Local Instance coPset_disj_valid_instance : Valid coPset_disj.
Admitted.
Local Instance coPset_disj_op_instance : Op coPset_disj.
Admitted.
Local Instance coPset_disj_pcore_instance : PCore coPset_disj.
Admitted.

  Lemma coPset_disj_ra_mixin : RAMixin coPset_disj.
Admitted.
  Canonical Structure coPset_disjR := discreteR coPset_disj coPset_disj_ra_mixin.
Import iris.algebra.gset.
  Class wsatGpreS (Σ : gFunctors) : Set := WsatGpreS {
    wsatGpreS_inv : inG Σ (gmap_viewR positive (agreeR $ laterO (iPropO Σ)));
    wsatGpreS_enabled : inG Σ coPset_disjR;
    wsatGpreS_disabled : inG Σ (gset_disjR positive);
  }.

  Class wsatGS (Σ : gFunctors) : Set := WsatG {
    wsat_inG : wsatGpreS Σ;
    invariant_name : gname;
    enabled_name : gname;
    disabled_name : gname;
  }.

Inductive has_lc := HasLc | HasNoLc.

Class invGS_gen (hlc : has_lc) (Σ : gFunctors) : Set := InvG {
  #[global] invGS_wsat :: wsatGS Σ;
  #[global] invGS_lc :: lcGS Σ;
}.
Global Instance uPred_bi_fupd `{!invGS_gen hlc Σ} : BiFUpd (uPredI (iResUR Σ)).
Admitted.

Global Instance uPred_bi_bupd_fupd `{!invGS_gen hlc Σ} : BiBUpdFUpd (uPredI (iResUR Σ)).
Admitted.
Export iris.algebra.excl.

Class cinvG Σ := {
  #[local] cinv_inG :: inG Σ (prodR (optionR (exclR unitO)) (optionR fracR)) ;
}.

Section defs.
  Context `{!invGS_gen hlc Σ, !cinvG Σ}.
Definition cinv_own (γ : gname) (p : frac) : iProp Σ.
Admitted.
  Definition cinv_excl γ : iProp Σ := own γ (Some (Excl ()), None).
Definition cinv (N : namespace) (γ : gname) (P : iProp Σ) : iProp Σ.
Admitted.

  Lemma cinv_own_excl_alloc P :
    pred_infinite P → ⊢ |==> ∃ γ, ⌜P γ⌝ ∗ cinv_excl γ ∗ cinv_own γ 1.
Admitted.

  Lemma cinv_alloc_strong (I : gname → Prop) E N :
    pred_infinite I →
    ⊢ |={E}=> ∃ γ, ⌜ I γ ⌝ ∗ cinv_own γ 1 ∗ ∀ P, ▷ P ={E}=∗ cinv N γ P.
  Proof.
    iIntros (?).
iMod cinv_own_excl_alloc as (γ) "[$ [Hexcl $]]"; first done.
🛠️ Intermediate Coq File (useful for debugging if minimization did not go as far as you wanted)
🛠️ 📜 Intermediate Coq File log (useful for debugging if minimization did not go as far as you wanted)
📜 Build Log (contains the Coq error message) (truncated to last 8.0KiB; full 6.4MiB file on GitHub Actions Artifacts under build.log)
LIB instead.
[deprecated-coq-env-var,deprecated-since-9.0,deprecated,default]
Warning: Deprecated environment variable COQCORELIB,
use ROCQRUNTIMELIB instead.
[deprecated-coq-env-var,deprecated-since-9.0,deprecated,default]
iris/program_logic/lifting.vo (real: 2.86, user: 2.71, sys: 0.14, mem: 597684 ko)
COQNATIVE iris/program_logic/lifting.vo
Warning, feedback message received but no listener to handle it!
Warning: Deprecated environment variable COQLIB, use ROCQLIB instead.
[deprecated-coq-env-var,deprecated-since-9.0,deprecated,default]Warning, feedback message received but no listener to handle it!
Deprecated environment variable COQLIB, use ROCQLIB instead.
[deprecated-coq-env-var,deprecated-since-9.0,deprecated,default]
Deprecated environment variable COQCORELIB, use ROCQRUNTIMELIB instead.
[deprecated-coq-env-var,deprecated-since-9.0,deprecated,default]
File "./iris/program_logic/total_weakestpre.v", line 106, characters 68-80:
Warning: In term, tolerating this expression at a higher level than expected.
This tolerance will be eventually removed. Insert parentheses or try to lower
the level at which the top symbol of this expression is parsed.
[level-tolerance,deprecated-since-9.2,deprecated,parsing,default]
iris/program_logic/lifting.vo.native (real: 0.49, user: 0.37, sys: 0.11, mem: 157280 ko)
COQTEST [ref ignored] tests/algebra.v (ref: tests/algebra.ref)
Warning, feedback message received but no listener to handle it!
Warning: Deprecated environment variable COQLIB, use ROCQLIB instead.
[deprecated-coq-env-var,deprecated-since-9.0,deprecated,default]Warning, feedback message received but no listener to handle it!
Warning: Deprecated environment variable COQLIB, use ROCQLIB instead.
[deprecated-coq-env-var,deprecated-since-9.0,deprecated,default]
Warning: Deprecated environment variable COQCORELIB,
use ROCQRUNTIMELIB instead.
[deprecated-coq-env-var,deprecated-since-9.0,deprecated,default]
tests/algebra.vo (real: 1.24, user: 1.12, sys: 0.12, mem: 590544 ko)
ROCQ compile iris/base_logic/lib/cancelable_invariants.v
MINIMIZER_DEBUG_EXTRA: coqc: /github/workspace/builds/coq/coq-failing/_install_ci/bin/////rocq
MINIMIZER_DEBUG_EXTRA: original invocation: compile -q -w -notation-overridden -w -redundant-canonical-projection -w -notation-incompatible-prefix -w -deprecated-from-Coq -w -deprecated-dirpath-Coq -w -deprecated-native-compiler-option -native-compiler ondemand -Q iris iris -Q iris_heap_lang iris.heap_lang -Q iris_unstable iris.unstable -Q iris_deprecated iris.deprecated iris/base_logic/lib/cancelable_invariants.v 
MINIMIZER_DEBUG_EXTRA: new invocation: /github/workspace/builds/coq/coq-failing/_install_ci/bin/rocq.orig compile -q -w -notation-overridden -w -redundant-canonical-projection -w -notation-incompatible-prefix -w -deprecated-from-Coq -w -deprecated-dirpath-Coq -w -deprecated-native-compiler-option -native-compiler ondemand -Q /github/workspace/builds/coq/coq-failing/_build_ci/iris/iris iris -Q /github/workspace/builds/coq/coq-failing/_build_ci/iris/iris_heap_lang iris.heap_lang -Q /github/workspace/builds/coq/coq-failing/_build_ci/iris/iris_unstable iris.unstable -Q /github/workspace/builds/coq/coq-failing/_build_ci/iris/iris_deprecated iris.deprecated iris/base_logic/lib/cancelable_invariants.v 
MINIMIZER_DEBUG_EXTRA: coqpath: 
MINIMIZER_DEBUG_EXTRA: ocamlpath: /github/workspace/builds/coq/coq-failing/_install_ci/lib:
MINIMIZER_DEBUG_EXTRA: pwd: PWD=/github/workspace/builds/coq/coq-failing/_build_ci/iris
MINIMIZER_DEBUG_EXTRA: exec: /github/workspace/builds/coq/coq-failing/_install_ci/bin/rocq.orig compile -q -w -notation-overridden -w -redundant-canonical-projection -w -notation-incompatible-prefix -w -deprecated-from-Coq -w -deprecated-dirpath-Coq -w -deprecated-native-compiler-option -native-compiler ondemand -Q /github/workspace/builds/coq/coq-failing/_build_ci/iris/iris iris -Q /github/workspace/builds/coq/coq-failing/_build_ci/iris/iris_heap_lang iris.heap_lang -Q /github/workspace/builds/coq/coq-failing/_build_ci/iris/iris_unstable iris.unstable -Q /github/workspace/builds/coq/coq-failing/_build_ci/iris/iris_deprecated iris.deprecated iris/base_logic/lib/cancelable_invariants.v 
MINIMIZER_DEBUG_EXTRA: coqlib: Warning: Deprecated environment variable COQLIB, use ROCQLIB instead.
/github/workspace/builds/coq/coq-failing/_install_ci/lib/coq//
MINIMIZER_DEBUG: info: /tmp/tmp-coqbot-minimizer.R3FYvBSOiH
MINIMIZER_DEBUG: files:  iris/base_logic/lib/cancelable_invariants.v /github/workspace/builds/coq/coq-failing/_build_ci/iris/iris/base_logic/lib/cancelable_invariants.v
Warning, feedback message received but no listener to handle it!
Warning: Deprecated environment variable COQLIB, use ROCQLIB instead.
[deprecated-coq-env-var,deprecated-since-9.0,deprecated,default]Warning, feedback message received but no listener to handle it!
Warning: Deprecated environment variable COQLIB, use ROCQLIB instead.
[deprecated-coq-env-var,deprecated-since-9.0,deprecated,default]
Warning: Deprecated environment variable COQCORELIB,
use ROCQRUNTIMELIB instead.
[deprecated-coq-env-var,deprecated-since-9.0,deprecated,default]
File "./iris/base_logic/lib/cancelable_invariants.v", line 90, characters 17-65:
Error: Tactic failure: iFrame: cannot frame ⌜?Goal γ⌝%I.

Command exited with non-zero status 1
iris/base_logic/lib/cancelable_invariants.vo (real: 1.44, user: 1.32, sys: 0.12, mem: 584220 ko)
make[2]: *** [Makefile.coq:813: iris/base_logic/lib/cancelable_invariants.vo] Error 1
make[2]: *** [iris/base_logic/lib/cancelable_invariants.vo] Deleting file 'iris/base_logic/lib/cancelable_invariants.glob'
make[2]: *** Waiting for unfinished jobs....
File "./iris/program_logic/total_weakestpre.v", line 274, characters 78-90:
Warning: In term, tolerating this expression at a higher level than expected.
This tolerance will be eventually removed. Insert parentheses or try to lower
the level at which the top symbol of this expression is parsed.
[level-tolerance,deprecated-since-9.2,deprecated,parsing,default]
iris/program_logic/total_weakestpre.vo (real: 6.00, user: 5.85, sys: 0.14, mem: 636148 ko)
COQNATIVE iris/program_logic/total_weakestpre.vo
Warning, feedback message received but no listener to handle it!
Warning: Deprecated environment variable COQLIB, use ROCQLIB instead.
[deprecated-coq-env-var,deprecated-since-9.0,deprecated,default]Warning, feedback message received but no listener to handle it!
Deprecated environment variable COQLIB, use ROCQLIB instead.
[deprecated-coq-env-var,deprecated-since-9.0,deprecated,default]
Deprecated environment variable COQCORELIB, use ROCQRUNTIMELIB instead.
[deprecated-coq-env-var,deprecated-since-9.0,deprecated,default]
iris/program_logic/total_weakestpre.vo.native (real: 0.58, user: 0.47, sys: 0.11, mem: 152232 ko)
make[1]: *** [Makefile.coq:411: all] Error 2
make[1]: Leaving directory '/github/workspace/builds/coq/coq-failing/_build_ci/iris'
make: *** [Makefile:3: all] Error 2
+ code=2
+ printf '\n%s exit code: %s\n' iris 2
+ '[' iris '!=' stdlib_test ']'
+ echo 'Aggregating timing log...'
Aggregating timing log...
+ echo

+ tools/make-one-time-file.py --real iris.log
    Time |  Peak Mem | File Name                                    
--------------------------------------------------------------------
0m19.52s | 636148 ko | Total Time / Peak Mem                        
--------------------------------------------------------------------
0m06.00s | 636148 ko | iris/program_logic/total_weakestpre.vo       
0m03.80s | 607220 ko | iris/program_logic/adequacy.vo               
0m02.86s | 597684 ko | iris/program_logic/lifting.vo                
0m02.01s | 598100 ko | iris/program_logic/atomic.vo                 
0m01.44s | 584220 ko | iris/base_logic/lib/cancelable_invariants.vo 
0m01.24s | 590544 ko | tests/algebra.vo                             
0m00.58s | 152232 ko | iris/program_logic/total_weakestpre.vo.native
0m00.56s | 156608 ko | iris/program_logic/atomic.vo.native          
0m00.54s | 165992 ko | iris/program_logic/adequacy.vo.native        
0m00.49s | 157280 ko | iris/program_logic/lifting.vo.native         
+ '[' '' ']'
+ exit 2
/github/workspace/builds/coq /github/workspace
::endgroup::
📜 🔎 Minimization Log (truncated to last 8.0KiB; full 3.9MiB file on GitHub Actions Artifacts under bug.log)
 do everything at once; trying one at a time.
Admitting definitions unsuccessful.
No successful changes.

I will now attempt to admit lemmas with admit. Defined with Proof using

Non-fatal error: Failed to admit lemmas and preserve the error.  
The new error was:
Deprecated environment variable COQCORELIB, use ROCQRUNTIMELIB instead.
Warning: Deprecated environment variable COQCORELIB,
use ROCQRUNTIMELIB instead.
[deprecated-coq-env-var,deprecated-since-9.0,deprecated,default]
File "/tmp/tmp016mo8z5/Top/bug_01.v", line 101, characters 0-34:
Warning: Library File Stdlib.ZArith.ZArith_base is deprecated since 9.0.
use ZArith instead
[deprecated-library-file-since-9.0,deprecated-since-9.0,deprecated-library-file,deprecated,default]
File "/tmp/tmp016mo8z5/Top/bug_01.v", line 153, characters 0-30:
Warning: Using Vector.t is known to be technically difficult, see
<https://github.com/coq/stdlib/blob/master/theories/Vectors/Vector.v>.
[warn-library-file-stdlib-vector,stdlib-vector,warn-library-file,user-warn,default]
File "/tmp/tmp016mo8z5/Top/bug_01.v", line 155, characters 0-32:
Warning: Using Vector.t is known to be technically difficult, see
<https://github.com/coq/stdlib/blob/master/theories/Vectors/Vector.v>.
[warn-library-file-stdlib-vector,stdlib-vector,warn-library-file,user-warn,default]
File "/tmp/tmp016mo8z5/Top/bug_01.v", line 157, characters 0-34:
Warning: Using Vector.t is known to be technically difficult, see
<https://github.com/coq/stdlib/blob/master/theories/Vectors/Vector.v>.
[warn-library-file-stdlib-vector,stdlib-vector,warn-library-file,user-warn,default]
File "/tmp/tmp016mo8z5/Top/bug_01.v", line 165, characters 0-33:
Warning: Using Vector.t is known to be technically difficult, see
<https://github.com/coq/stdlib/blob/master/theories/Vectors/Vector.v>.
[warn-library-file-stdlib-vector,stdlib-vector,warn-library-file,user-warn,default]
File "/tmp/tmp016mo8z5/Top/bug_01.v", line 168, characters 0-27:
Warning: Alternatives to Fin.t are available, see
<https://github.com/coq/stdlib/blob/master/theories/Vectors/Fin.v>.
[warn-library-file-stdlib-vector,stdlib-vector,warn-library-file,user-warn,default]
File "/tmp/tmp016mo8z5/Top/bug_01.v", line 609, characters 0-8:
Warning: Use of "Notation" keyword for abbreviations is deprecated, use
"Abbreviation" instead.
[notation-for-abbreviation,deprecated-since-9.2,deprecated,default]
File "/tmp/tmp016mo8z5/Top/bug_01.v", line 614, characters 0-8:
Warning: Use of "Notation" keyword for abbreviations is deprecated, use
"Abbreviation" instead.
[notation-for-abbreviation,deprecated-since-9.2,deprecated,default]
File "/tmp/tmp016mo8z5/Top/bug_01.v", line 846, characters 0-8:
Warning: Use of "Notation" keyword for abbreviations is deprecated, use
"Abbreviation" instead.
[notation-for-abbreviation,deprecated-since-9.2,deprecated,default]
File "/tmp/tmp016mo8z5/Top/bug_01.v", line 973, characters 0-8:
Warning: Use of "Notation" keyword for abbreviations is deprecated, use
"Abbreviation" instead.
[notation-for-abbreviation,deprecated-since-9.2,deprecated,default]
File "/tmp/tmp016mo8z5/Top/bug_01.v", line 1683, characters 0-8:
Warning: Use of "Notation" keyword for abbreviations is deprecated, use
"Abbreviation" instead.
[notation-for-abbreviation,deprecated-since-9.2,deprecated,default]
File "/tmp/tmp016mo8z5/Top/bug_01.v", line 3129, characters 0-43:
Warning: Implicitly declaring hint databases is deprecated. Please explicitly
create "uPred_def"
[implicit-create-hint-db,deprecated-since-9.2,deprecated,default]
File "/tmp/tmp016mo8z5/Top/bug_01.v", line 3243, characters 0-8:
Warning: Use of "Notation" keyword for abbreviations is deprecated, use
"Abbreviation" instead.
[notation-for-abbreviation,deprecated-since-9.2,deprecated,default]
File "/tmp/tmp016mo8z5/Top/bug_01.v", line 3275, characters 2-10:
Warning: Use of "Notation" keyword for abbreviations is deprecated, use
"Abbreviation" instead.
[notation-for-abbreviation,deprecated-since-9.2,deprecated,default]
File "/tmp/tmp016mo8z5/Top/bug_01.v", line 3276, characters 2-10:
Warning: Use of "Notation" keyword for abbreviations is deprecated, use
"Abbreviation" instead.
[notation-for-abbreviation,deprecated-since-9.2,deprecated,default]
Error: The section defs, module spec_pat, module intro_pat and module sel_pat
need to be closed.


�[93mIntermediate code not saved.�[0m
Failed to do everything at once; trying one at a time.
Admitting lemmas unsuccessful.
No successful changes.

I will now attempt to admit definitions with admit. Defined with Proof using

Non-fatal error: Failed to admit definitions and preserve the error.  
The new error was:
Deprecated environment variable COQCORELIB, use ROCQRUNTIMELIB instead.
Warning: Deprecated environment variable COQCORELIB,
use ROCQRUNTIMELIB instead.
[deprecated-coq-env-var,deprecated-since-9.0,deprecated,default]
File "/tmp/tmpc8vwu4px/Top/bug_01.v", line 101, characters 0-34:
Warning: Library File Stdlib.ZArith.ZArith_base is deprecated since 9.0.
use ZArith instead
[deprecated-library-file-since-9.0,deprecated-since-9.0,deprecated-library-file,deprecated,default]
File "/tmp/tmpc8vwu4px/Top/bug_01.v", line 153, characters 0-30:
Warning: Using Vector.t is known to be technically difficult, see
<https://github.com/coq/stdlib/blob/master/theories/Vectors/Vector.v>.
[warn-library-file-stdlib-vector,stdlib-vector,warn-library-file,user-warn,default]
File "/tmp/tmpc8vwu4px/Top/bug_01.v", line 155, characters 0-32:
Warning: Using Vector.t is known to be technically difficult, see
<https://github.com/coq/stdlib/blob/master/theories/Vectors/Vector.v>.
[warn-library-file-stdlib-vector,stdlib-vector,warn-library-file,user-warn,default]
File "/tmp/tmpc8vwu4px/Top/bug_01.v", line 157, characters 0-34:
Warning: Using Vector.t is known to be technically difficult, see
<https://github.com/coq/stdlib/blob/master/theories/Vectors/Vector.v>.
[warn-library-file-stdlib-vector,stdlib-vector,warn-library-file,user-warn,default]
File "/tmp/tmpc8vwu4px/Top/bug_01.v", line 165, characters 0-33:
Warning: Using Vector.t is known to be technically difficult, see
<https://github.com/coq/stdlib/blob/master/theories/Vectors/Vector.v>.
[warn-library-file-stdlib-vector,stdlib-vector,warn-library-file,user-warn,default]
File "/tmp/tmpc8vwu4px/Top/bug_01.v", line 168, characters 0-27:
Warning: Alternatives to Fin.t are available, see
<https://github.com/coq/stdlib/blob/master/theories/Vectors/Fin.v>.
[warn-library-file-stdlib-vector,stdlib-vector,warn-library-file,user-warn,default]
File "/tmp/tmpc8vwu4px/Top/bug_01.v", line 609, characters 0-8:
Warning: Use of "Notation" keyword for abbreviations is deprecated, use
"Abbreviation" instead.
[notation-for-abbreviation,deprecated-since-9.2,deprecated,default]
File "/tmp/tmpc8vwu4px/Top/bug_01.v", line 614, characters 0-8:
Warning: Use of "Notation" keyword for abbreviations is deprecated, use
"Abbreviation" instead.
[notation-for-abbreviation,deprecated-since-9.2,deprecated,default]
File "/tmp/tmpc8vwu4px/Top/bug_01.v", line 846, characters 0-8:
Warning: Use of "Notation" keyword for abbreviations is deprecated, use
"Abbreviation" instead.
[notation-for-abbreviation,deprecated-since-9.2,deprecated,default]
File "/tmp/tmpc8vwu4px/Top/bug_01.v", line 938, characters 23-24:
Error: Found type "X" where "TeleO -t> X" was expected
(cannot unify "TeleO -t> X" and "X").


�[93mIntermediate code not saved.�[0m
Failed to do everything at once; trying one at a time.
Admitting definitions unsuccessful.
No successful changes.

I will now attempt to add Proof using lines
�[92m
Adding Proof using lines successful.�[0m
Failed to do everything at once; trying one at a time.
Adding Proof using lines unsuccessful.
No successful changes.

I will now attempt to export modules
Module exportation successful

I will now attempt to split imports and exports
Import/Export splitting successful

I will now attempt to split := definitions
One-line definition splitting successful

I will now attempt to lift Requires to the top of the file while inserting option settings

I will now attempt to lift Requires to the top of the file while inserting option settings

I will now attempt to remove all lines, one at a time

If you have any comments on your experience of the minimizer, please share them in a reply (possibly tagging @JasonGross).
If you believe there's a bug in the bug minimizer, please report it on the bug minimizer issue tracker.

@Tragicus
Copy link
Contributor Author

@ppedrot I can compile both minimizations... But I could reproduce the argosy issue (I had already done an overlay but never pushed it for some reason).

@Tragicus
Copy link
Contributor Author

It would be great if the new behavior, and in particular the difference between apply and exact would be documented. Could you please extend the documentation in the ref man so it reflects the changes in this PR?

I went though the documentation but could not find anything describing how evars are solved during unification. Can you tell me where you would expect to find information related to this PR?

@Tragicus
Copy link
Contributor Author

What should I do with bug_3209.v? Also, do we want to do a bench?

@ppedrot
Copy link
Member

ppedrot commented Nov 13, 2025

@coqbot run full ci

@coqbot-app coqbot-app bot removed the needs: full CI The latest GitLab pipeline that ran was a light CI. Say "@coqbot run full ci" to get a full CI. label Nov 13, 2025
@robbertkrebbers
Copy link
Contributor

I went though the documentation but could not find anything describing how evars are solved during unification. Can you tell me where you would expect to find information related to this PR?

I don't know what's the best place, and I wouldn't really mind where it's described, as long as it's somewhere.

I understand that it's difficult to document the current behavior if no documentation has been written in the past. But it would at least be good practice to start doing so. Maybe there should be a new section about the behavior of unification that can be updated gradually gets when PRs are made that affect unification?

@proux01 proux01 added this to the 9.2+rc1 milestone Nov 17, 2025
@proux01 proux01 added kind: fix This fixes a bug or incorrect documentation. part: unification The unification mechanism. needs: changelog entry This should be documented in doc/changelog. and removed needs: changelog entry This should be documented in doc/changelog. labels Nov 17, 2025
@proux01
Copy link
Contributor

proux01 commented Nov 17, 2025

@coqbot bench

@coqbot-app
Copy link
Contributor

coqbot-app bot commented Nov 18, 2025

🏁 Bench results:

┌─────────────────────────────────────┬─────────────────────────┬───────────────────────────────────────┬─────────────────────────┐
│                                     │      user time [s]      │           CPU instructions            │  max resident mem [KB]  │
│                                     │                         │                                       │                         │
│            package_name             │   NEW      OLD    PDIFF │      NEW             OLD        PDIFF │   NEW      OLD    PDIFF │
├─────────────────────────────────────┼─────────────────────────┼───────────────────────────────────────┼─────────────────────────┤
│                            coq-core │    2.82     2.91  -3.09 │    19634200583     19636085577  -0.01 │  105468   105316   0.14 │
│                           rocq-core │    6.39     6.55  -2.44 │    40062229087     40051880208   0.03 │  457384   452840   1.00 │
│                         rocq-stdlib │  437.27   443.55  -1.42 │  1527925276515   1527957520494  -0.00 │  628764   626820   0.31 │
│                        rocq-bignums │   24.63    24.95  -1.28 │   157516731313    157521369603  -0.00 │  455840   457676  -0.40 │
│                         coq-coqutil │   45.17    45.70  -1.16 │   284614192051    284615488972  -0.00 │  560400   560656  -0.05 │
│               coq-engine-bench-lite │  124.11   125.24  -0.90 │   931191116185    932288385922  -0.12 │  990556   992048  -0.15 │
│                           coq-color │  226.43   228.31  -0.82 │  1443613214604   1443447027601   0.01 │ 1140808  1140720   0.01 │
│                   coq-iris-examples │  358.53   360.90  -0.66 │  2370897717033   2370814003833   0.00 │ 1100292  1103648  -0.30 │
│                    coq-math-classes │   81.84    82.37  -0.64 │   498377990318    498419845990  -0.01 │  516880   515468   0.27 │
│          coq-performance-tests-lite │  898.16   901.48  -0.37 │  7255128711894   7253246010267   0.03 │ 2194068  2193668   0.02 │
│                      coq-verdi-raft │  494.68   496.15  -0.30 │  3429474186850   3429099510678   0.01 │  822136   820280   0.23 │
│                             coq-vst │  837.09   839.52  -0.29 │  6355022704356   6354197094232   0.01 │ 1993652  1992720   0.05 │
│                        coq-bedrock2 │  350.33   351.34  -0.29 │  2926767370931   2926881210872  -0.00 │  840044   842288  -0.27 │
│        coq-fiat-crypto-with-bedrock │ 7167.27  7186.77  -0.27 │ 59465332197487  59460192091319   0.01 │ 2957448  2950952   0.22 │
│                        coq-compcert │  294.26   295.01  -0.25 │  1927938883407   1928056313588  -0.01 │ 1152688  1151652   0.09 │
│         coq-rewriter-perf-SuperFast │  478.54   479.40  -0.18 │  3745406484927   3745913438123  -0.01 │ 1213016  1235616  -1.83 │
│                           coq-verdi │   42.09    42.14  -0.12 │   280153389347    280167263160  -0.00 │  519084   519944  -0.17 │
│                        coq-rewriter │  334.09   334.11  -0.01 │  2485095012436   2484559166242   0.02 │ 1320336  1314116   0.47 │
│                       coq-fiat-core │   53.71    53.68   0.06 │   327400375310    327435438582  -0.01 │  481668   478892   0.58 │
│                        coq-coqprime │   51.80    51.74   0.12 │   355829517882    355806247224   0.01 │  804004   806032  -0.25 │
│                    coq-fiat-parsers │  274.59   273.47   0.41 │  2112078129937   2097116157950   0.71 │ 2347848  2349892  -0.09 │
│                        rocq-runtime │   73.69    73.29   0.55 │   532936648898    532615763536   0.06 │  507716   506344   0.27 │
│ coq-neural-net-interp-computed-lite │  237.43   234.00   1.47 │  2260652095185   2260646237196   0.00 │  844836   847880  -0.36 │
└─────────────────────────────────────┴─────────────────────────┴───────────────────────────────────────┴─────────────────────────┘

INFO: failed to install
coq-hott (in NEW)
rocq-elpi (in NEW)
rocq-equations (in NEW)
coq-unimath (in NEW)

rocq-mathcomp-boot (dependency rocq-elpi failed)
rocq-mathcomp-order (dependency rocq-elpi failed)
rocq-mathcomp-ssreflect (dependency rocq-elpi failed)
rocq-mathcomp-fingroup (dependency rocq-elpi failed)
rocq-mathcomp-algebra (dependency rocq-elpi failed)
rocq-mathcomp-solvable (dependency rocq-elpi failed)
rocq-mathcomp-field (dependency rocq-elpi failed)
rocq-mathcomp-character (dependency rocq-elpi failed)
coq-mathcomp-odd-order (dependency rocq-elpi failed)
coq-mathcomp-analysis (dependency rocq-elpi failed)
coq-corn (dependency rocq-elpi failed)
rocq-metarocq-utils (dependency rocq-equations failed)
rocq-metarocq-common (dependency rocq-equations failed)
rocq-metarocq-template (dependency rocq-equations failed)
rocq-metarocq-pcuic (dependency rocq-equations failed)
rocq-metarocq-safechecker (dependency rocq-equations failed)
rocq-metarocq-erasure (dependency rocq-equations failed)
rocq-metarocq-translations (dependency rocq-equations failed)
coq-coquelicot (dependency rocq-elpi failed)
coq-fourcolor (dependency rocq-elpi failed)
coq-category-theory (dependency rocq-equations failed)

🐢 Top 25 slow downs
┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│                                                           TOP 25 SLOW DOWNS                                                           │
│                                                                                                                                       │
│  OLD    NEW    DIFF    %DIFF    Ln                     FILE                                                                           │
├───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│   199    203  3.4667    1.74%     8  coq-neural-net-interp-computed-lite/theories/MaxOfTwoNumbersSimpler/Computed/AllLogits.v.html    │
│ 0.605   2.81  2.2094  365.08%   213  coq-fiat-parsers/src/Common/FMapExtensions/LiftRelationInstances.v.html                          │
│  21.3   22.2  0.9331    4.39%    49  coq-fiat-crypto-with-bedrock/src/Curves/Weierstrass/AffineProofs.v.html                          │
│  3.12   3.94  0.8249   26.45%   557  coq-fiat-crypto-with-bedrock/src/Bedrock/P256/Jacobian.v.html                                    │
│  39.8   40.6  0.7774    1.95%  1423  coq-fiat-crypto-with-bedrock/rupicola/bedrock2/compiler/src/compiler/FlatToRiscvFunctions.v.html │
│  93.6   94.1  0.4766    0.51%    20  coq-fiat-crypto-with-bedrock/src/Rewriter/Passes/NBE.v.html                                      │
│  11.5   11.9  0.3878    3.36%   194  coq-fiat-crypto-with-bedrock/src/Fancy/Barrett256.v.html                                         │
│  28.3   28.6  0.3606    1.28%   530  coq-fiat-crypto-with-bedrock/src/Bedrock/End2End/X25519/EdwardsXYZT.v.html                       │
│  9.64  10.00  0.3572    3.70%   673  coq-rewriter/src/Rewriter/Rewriter/Wf.v.html                                                     │
│  46.1   46.4  0.3343    0.73%   115  coq-fiat-crypto-with-bedrock/rupicola/bedrock2/bedrock2/src/bedrock2Examples/full_mul.v.html     │
│ 0.257  0.583  0.3261  126.85%    34  rocq-stdlib/theories/Logic/SetoidChoice.v.html                                                   │
│  17.0   17.3  0.2956    1.74%   558  coq-fiat-crypto-with-bedrock/src/Bedrock/End2End/X25519/EdwardsXYZT.v.html                       │
│  17.1   17.4  0.2925    1.71%   585  coq-fiat-crypto-with-bedrock/src/Bedrock/End2End/X25519/EdwardsXYZT.v.html                       │
│  46.1   46.4  0.2869    0.62%   115  coq-bedrock2/bedrock2/src/bedrock2Examples/full_mul.v.html                                       │
│  17.8   18.1  0.2776    1.56%   670  coq-performance-tests-lite/src/Nia.v.html                                                        │
│  7.73   7.99  0.2549    3.30%  3023  coq-fiat-crypto-with-bedrock/src/Assembly/EquivalenceProofs.v.html                               │
│ 0.311  0.565  0.2536   81.50%  1982  rocq-stdlib/theories/FSets/FMapFacts.v.html                                                      │
│  13.0   13.3  0.2444    1.88%   930  coq-fiat-crypto-with-bedrock/src/Bedrock/End2End/X25519/GarageDoor.v.html                        │
│  13.8   14.0  0.2424    1.76%    61  coq-rewriter/src/Rewriter/Rewriter/Examples/PrefixSums.v.html                                    │
│  9.03   9.27  0.2362    2.61%   566  coq-fiat-crypto-with-bedrock/src/Curves/Weierstrass/Jacobian/Jacobian.v.html                     │
│  2.15   2.38  0.2306   10.75%   620  coq-fiat-crypto-with-bedrock/src/Curves/Weierstrass/Jacobian/CoZ.v.html                          │
│  20.9   21.1  0.2237    1.07%    23  coq-fiat-crypto-with-bedrock/src/Rewriter/Passes/Arith.v.html                                    │
│ 0.296  0.510  0.2136   72.14%    10  rocq-stdlib/theories/micromega/ZArith_hints.v.html                                               │
│ 0.548  0.757  0.2091   38.14%    13  rocq-stdlib/theories/FSets/FMapPositive.v.html                                                   │
│  18.6   18.8  0.2087    1.12%   481  coq-verdi-raft/theories/RaftProofs/EndToEndLinearizability.v.html                                │
└───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
🐇 Top 25 speed ups
┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│                                                              TOP 25 SPEED UPS                                                              │
│                                                                                                                                            │
│ OLD   NEW    DIFF     %DIFF   Ln                      FILE                                                                                 │
├────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ 96.7  95.3  -1.3820   -1.43%  968  coq-performance-tests-lite/src/fiat_crypto_via_setoid_rewrite_standalone.v.html                         │
│ 65.8  64.6  -1.2424   -1.89%  608  coq-bedrock2/bedrock2/src/bedrock2Examples/lightbulb.v.html                                             │
│  177   176  -1.1764   -0.67%  233  coq-fiat-crypto-with-bedrock/rupicola/bedrock2/deps/riscv-coq/src/riscv/Proofs/DecodeByExtension.v.html │
│ 96.4  95.4  -0.9931   -1.03%  999  coq-performance-tests-lite/src/fiat_crypto_via_setoid_rewrite_standalone.v.html                         │
│ 33.3  32.4  -0.8854   -2.66%  174  coq-fiat-crypto-with-bedrock/src/Bedrock/P256/Jacobian.v.html                                           │
│ 66.4  65.6  -0.8188   -1.23%  608  coq-fiat-crypto-with-bedrock/rupicola/bedrock2/bedrock2/src/bedrock2Examples/lightbulb.v.html           │
│ 4.76  4.12  -0.6413  -13.47%  492  rocq-stdlib/theories/Reals/Cauchy/ConstructiveCauchyRealsMult.v.html                                    │
│ 3.22  2.58  -0.6377  -19.79%  607  rocq-stdlib/theories/Zmod/ZmodBase.v.html                                                               │
│ 29.4  28.8  -0.5959   -2.03%  145  coq-fiat-crypto-with-bedrock/src/Bedrock/End2End/X25519/GarageDoorTop.v.html                            │
│ 27.7  27.1  -0.5889   -2.13%  148  coq-fiat-crypto-with-bedrock/src/Bedrock/End2End/X25519/GarageDoorTop.v.html                            │
│ 1.88  1.35  -0.5251  -27.95%   75  rocq-stdlib/theories/Numbers/HexadecimalString.v.html                                                   │
│ 23.9  23.4  -0.5063   -2.12%   85  coq-fiat-crypto-with-bedrock/src/Curves/Montgomery/AffineProofs.v.html                                  │
│ 47.6  47.1  -0.4938   -1.04%  260  coq-fiat-crypto-with-bedrock/src/Bedrock/P256/Jacobian.v.html                                           │
│ 31.0  30.5  -0.4691   -1.51%  214  coq-fiat-crypto-with-bedrock/src/Bedrock/Field/Synthesis/Examples/p224_64_new.v.html                    │
│ 23.3  22.9  -0.4324   -1.85%   79  coq-rewriter/src/Rewriter/Rewriter/Examples/PerfTesting/SieveOfEratosthenes.v.html                      │
│ 32.3  31.9  -0.3997   -1.24%  121  coq-fiat-crypto-with-bedrock/src/Bedrock/Field/Synthesis/Examples/p224_64_new.v.html                    │
│ 31.2  30.8  -0.3978   -1.28%  148  coq-fiat-crypto-with-bedrock/src/Bedrock/Field/Synthesis/Examples/p224_64_new.v.html                    │
│ 31.1  30.7  -0.3903   -1.25%  180  coq-fiat-crypto-with-bedrock/src/Bedrock/Field/Synthesis/Examples/p224_64_new.v.html                    │
│ 45.3  44.9  -0.3773   -0.83%    3  coq-fiat-crypto-with-bedrock/src/ExtractionJsOfOCaml/WithBedrock/fiat_crypto.v.html                     │
│ 30.4  30.0  -0.3769   -1.24%  671  coq-fiat-crypto-with-bedrock/src/Bedrock/Secp256k1/JoyeLadder.v.html                                    │
│ 65.0  64.6  -0.3606   -0.55%  716  coq-fiat-crypto-with-bedrock/src/Bedrock/Secp256k1/JacobianCoZ.v.html                                   │
│ 34.1  33.8  -0.3555   -1.04%  960  coq-fiat-crypto-with-bedrock/src/Bedrock/Secp256k1/JoyeLadder.v.html                                    │
│ 24.5  24.2  -0.3488   -1.42%  345  coq-fiat-crypto-with-bedrock/src/Curves/Montgomery/XZProofs.v.html                                      │
│ 30.9  30.6  -0.3214   -1.04%  166  coq-fiat-crypto-with-bedrock/src/Bedrock/Field/Synthesis/Examples/p224_64_new.v.html                    │
│ 38.9  38.6  -0.3194   -0.82%  239  coq-fiat-crypto-with-bedrock/src/Bedrock/P256/Jacobian.v.html                                           │
└────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘

@ppedrot
Copy link
Member

ppedrot commented Nov 26, 2025

Who's taking care of this PR and what do we do with it?

@Tragicus
Copy link
Contributor Author

I need to decide what to do with the documentation, and I need to know what I should do with bug_3209.v. Also, I do not know why the bench fails while the CI succeeds.

@proux01
Copy link
Contributor

proux01 commented Nov 26, 2025

@coqbot run full ci

@ppedrot
Copy link
Member

ppedrot commented Nov 26, 2025

@Tragicus The bench is finicky, if you rebase this and we relaunch a bench it should eventually work.

…new variable when instantiating old shelved variable with the new one in `evarsolve/instantiate_evar`
@coqbot-app coqbot-app bot added the needs: full CI The latest GitLab pipeline that ran was a light CI. Say "@coqbot run full ci" to get a full CI. label Nov 26, 2025
@ppedrot
Copy link
Member

ppedrot commented Nov 26, 2025

@coqbot run full ci

@coqbot-app coqbot-app bot removed the needs: full CI The latest GitLab pipeline that ran was a light CI. Say "@coqbot run full ci" to get a full CI. label Nov 26, 2025
@ppedrot
Copy link
Member

ppedrot commented Nov 26, 2025

@coqbot bench

@coqbot-app
Copy link
Contributor

coqbot-app bot commented Nov 27, 2025

🏁 Bench results:

┌─────────────────────────────────────┬─────────────────────────┬───────────────────────────────────────┬─────────────────────────┐
│                                     │      user time [s]      │           CPU instructions            │  max resident mem [KB]  │
│                                     │                         │                                       │                         │
│            package_name             │   NEW      OLD    PDIFF │      NEW             OLD        PDIFF │   NEW      OLD    PDIFF │
├─────────────────────────────────────┼─────────────────────────┼───────────────────────────────────────┼─────────────────────────┤
│                            coq-core │    2.81     2.99  -6.02 │    19679196306     19680835002  -0.01 │  106460   106764  -0.28 │
│                      rocq-equations │    8.53     8.71  -2.07 │    59697289815     59715277071  -0.03 │  397860   397436   0.11 │
│          rocq-metarocq-translations │   15.36    15.63  -1.73 │   109195378926    109205087115  -0.01 │  776768   776508   0.03 │
│             rocq-mathcomp-character │  101.04   101.53  -0.48 │   719802040963    719978071346  -0.02 │ 2128952  2130792  -0.09 │
│                        coq-rewriter │  330.98   332.58  -0.48 │  2476849812309   2476285584494   0.02 │ 1513228  1505156   0.54 │
│                      coq-coquelicot │   42.81    43.01  -0.47 │   255814500720    255752483045   0.02 │  839384   837136   0.27 │
│                            coq-corn │  646.65   649.39  -0.42 │  4375794844935   4375396736476   0.01 │  737636   738168  -0.07 │
│              rocq-metarocq-template │   81.35    81.59  -0.29 │   559493310965    559483209149   0.00 │ 1027488  1027188   0.03 │
│                             coq-vst │  826.99   829.29  -0.28 │  6280479920206   6280165359843   0.01 │ 2182520  2182340   0.01 │
│         coq-rewriter-perf-SuperFast │  478.24   479.48  -0.26 │  3727431119260   3727907210018  -0.01 │ 1259952  1246824   1.05 │
│                       coq-fourcolor │ 1360.22  1363.57  -0.25 │ 12550524365554  12550461106812   0.00 │ 1403572  1401852   0.12 │
│                 rocq-mathcomp-field │  187.70   188.11  -0.22 │  1429375457258   1428593576343   0.05 │ 2796232  2789236   0.25 │
│                        coq-coqprime │   52.55    52.66  -0.21 │   358686628053    358653320170   0.01 │  822600   820464   0.26 │
│                         coq-coqutil │   46.18    46.26  -0.17 │   287805649911    287798415769   0.00 │  562572   564056  -0.26 │
│                           coq-verdi │   42.56    42.63  -0.16 │   283354725565    283323025803   0.01 │  527340   531656  -0.81 │
│                        coq-bedrock2 │  352.07   352.54  -0.13 │  2912859568219   2913783799458  -0.03 │  847480   851016  -0.42 │
│                  rocq-mathcomp-boot │   38.87    38.92  -0.13 │   230041792590    230005758433   0.02 │  744712   746368  -0.22 │
│                         rocq-stdlib │  447.76   448.14  -0.08 │  1539360172018   1539445232774  -0.01 │  629120   626892   0.36 │
│                   coq-iris-examples │  364.85   365.14  -0.08 │  2400212093323   2400078924581   0.01 │ 1121572  1120988   0.05 │
│          coq-performance-tests-lite │  901.69   902.38  -0.08 │  7253704598165   7254475451168  -0.01 │ 2205948  2205932   0.00 │
│                      coq-verdi-raft │  493.51   493.86  -0.07 │  3413974469718   3413822864875   0.00 │  820944   820856   0.01 │
│                       coq-fiat-core │   54.59    54.62  -0.05 │   332842155641    332874447016  -0.01 │  481076   481596  -0.11 │
│               coq-mathcomp-analysis │ 1052.10  1052.65  -0.05 │  7902051172981   7899624599208   0.03 │ 2585020  2587052  -0.08 │
│              rocq-mathcomp-solvable │  103.38   103.40  -0.02 │   717304905741    717121302133   0.03 │ 1532840  1533200  -0.02 │
│ coq-neural-net-interp-computed-lite │  236.52   236.53  -0.00 │  2263687517580   2263681669012   0.00 │  846440   848028  -0.19 │
│                        rocq-runtime │   74.49    74.49   0.00 │   539386034492    539248421687   0.03 │  515336   515632  -0.06 │
│                 coq-category-theory │  579.82   579.66   0.03 │  4278164390996   4278769662253  -0.01 │ 1005828  1005784   0.00 │
│           rocq-metarocq-safechecker │  311.31   311.19   0.04 │  2319303811333   2319190124153   0.00 │ 1873780  1870844   0.16 │
│        coq-fiat-crypto-with-bedrock │ 7213.95  7210.22   0.05 │ 59601584299501  59604777929947  -0.01 │ 3275636  3169948   3.33 │
│               rocq-metarocq-erasure │  473.27   472.72   0.12 │  3236438892016   3236318732504   0.00 │ 1808268  1809808  -0.09 │
│                 rocq-mathcomp-order │   81.47    81.36   0.14 │   601983539460    601952021577   0.01 │ 2060432  2062064  -0.08 │
│              coq-mathcomp-odd-order │  603.80   602.94   0.14 │  4355675652905   4353306932747   0.05 │ 3390816  3394464  -0.11 │
│                        rocq-bignums │   24.92    24.88   0.16 │   157297181378    157243958443   0.03 │  460180   457988   0.48 │
│                           coq-color │  229.55   229.03   0.23 │  1448863618341   1448862591232   0.00 │ 1142988  1141440   0.14 │
│                        coq-compcert │  299.24   298.48   0.25 │  1952450775187   1952509508242  -0.00 │ 1294648  1297784  -0.24 │
│               rocq-mathcomp-algebra │  326.85   325.95   0.28 │  2432977959390   2432513604009   0.02 │ 2049744  2048952   0.04 │
│                 rocq-metarocq-pcuic │  626.33   624.55   0.29 │  3983988235784   3984241746675  -0.01 │ 1895044  1894964   0.00 │
│                           rocq-elpi │   15.80    15.74   0.38 │   111674172113    111664989471   0.01 │  573080   572812   0.05 │
│                    coq-math-classes │   82.76    82.44   0.39 │   501052483665    501096617933  -0.01 │  514448   513924   0.10 │
│                 rocq-metarocq-utils │   23.74    23.64   0.42 │   153119983528    153110155627   0.01 │  599440   597312   0.36 │
│                    coq-fiat-parsers │  276.41   275.20   0.44 │  2123364675990   2108613453629   0.70 │ 2348176  2348464  -0.01 │
│                rocq-metarocq-common │   40.73    40.52   0.52 │   259749098990    259740359026   0.00 │  902984   900720   0.25 │
│                           rocq-core │    6.62     6.58   0.61 │    40971104291     40970754275   0.00 │  457432   458020  -0.13 │
│               coq-engine-bench-lite │  127.99   127.00   0.78 │   952087743699    945088397871   0.74 │ 1084968  1084708   0.02 │
│              rocq-mathcomp-fingroup │   26.47    26.24   0.88 │   172075203649    172077699276  -0.00 │  603388   601656   0.29 │
│             rocq-mathcomp-ssreflect │    1.17     1.13   3.54 │     8150657129      8144128537   0.08 │  861712   861244   0.05 │
└─────────────────────────────────────┴─────────────────────────┴───────────────────────────────────────┴─────────────────────────┘

INFO: failed to install
coq-hott (in NEW)
coq-unimath (in NEW)

🐢 Top 25 slow downs
┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│                                                             TOP 25 SLOW DOWNS                                                             │
│                                                                                                                                           │
│   OLD     NEW    DIFF     %DIFF     Ln                     FILE                                                                           │
├───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│   0.604   2.76  2.1552    356.70%   213  coq-fiat-parsers/src/Common/FMapExtensions/LiftRelationInstances.v.html                          │
│    33.6   35.3  1.6272      4.84%   960  coq-fiat-crypto-with-bedrock/src/Bedrock/Secp256k1/JoyeLadder.v.html                             │
│    30.5   31.9  1.3880      4.56%   960  coq-fiat-crypto-with-bedrock/src/Bedrock/Secp256k1/JoyeLadder.v.html                             │
│    17.5   18.8  1.2972      7.40%    31  coq-engine-bench-lite/coq/PerformanceDemos/pattern.v.html                                        │
│    1.33   2.58  1.2476     93.60%   549  coq-fiat-crypto-with-bedrock/src/Bedrock/P256/Jacobian.v.html                                    │
│    30.1   30.9  0.8745      2.91%   671  coq-fiat-crypto-with-bedrock/src/Bedrock/Secp256k1/JoyeLadder.v.html                             │
│    21.5   22.2  0.7791      3.63%   651  rocq-stdlib/theories/Zmod/ZmodBase.v.html                                                        │
│    94.7   95.5  0.7477      0.79%   968  coq-performance-tests-lite/src/fiat_crypto_via_setoid_rewrite_standalone.v.html                  │
│    65.2   65.9  0.6348      0.97%   608  coq-bedrock2/bedrock2/src/bedrock2Examples/lightbulb.v.html                                      │
│    93.1   93.7  0.6207      0.67%    20  coq-fiat-crypto-with-bedrock/src/Rewriter/Passes/NBE.v.html                                      │
│    94.7   95.3  0.6139      0.65%   999  coq-performance-tests-lite/src/fiat_crypto_via_setoid_rewrite_standalone.v.html                  │
│     201    202  0.5867      0.29%     8  coq-neural-net-interp-computed-lite/theories/MaxOfTwoNumbersSimpler/Computed/AllLogits.v.html    │
│    26.2   26.8  0.5664      2.16%    62  coq-fiat-crypto-with-bedrock/src/Assembly/Parse/TestAsm.v.html                                   │
│    43.4   44.0  0.5658      1.30%   578  coq-fiat-crypto-with-bedrock/rupicola/bedrock2/compiler/src/compiler/MMIO.v.html                 │
│    45.4   45.9  0.4770      1.05%     3  coq-fiat-crypto-with-bedrock/src/ExtractionJsOfOCaml/bedrock2_fiat_crypto.v.html                 │
│    36.3   36.8  0.4734      1.30%   835  coq-fiat-crypto-with-bedrock/src/Fancy/Compiler.v.html                                           │
│    59.1   59.6  0.4350      0.74%    27  coq-fiat-crypto-with-bedrock/src/Rewriter/Passes/ToFancyWithCasts.v.html                         │
│   0.972   1.39  0.4200     43.20%   408  rocq-stdlib/theories/MSets/MSetAVL.v.html                                                        │
│    45.4   45.8  0.4006      0.88%     3  coq-fiat-crypto-with-bedrock/src/ExtractionJsOfOCaml/WithBedrock/fiat_crypto.v.html              │
│    18.6   19.0  0.3973      2.14%    77  coq-fiat-crypto-with-bedrock/src/Assembly/Parse/TestAsm.v.html                                   │
│    39.7   40.1  0.3795      0.96%  1423  coq-fiat-crypto-with-bedrock/rupicola/bedrock2/compiler/src/compiler/FlatToRiscvFunctions.v.html │
│    34.9   35.3  0.3759      1.08%   174  coq-fiat-crypto-with-bedrock/src/Bedrock/P256/Jacobian.v.html                                    │
│    1.17   1.50  0.3323     28.50%   572  rocq-stdlib/theories/MSets/MSetAVL.v.html                                                        │
│ 0.00197  0.320  0.3177  16134.94%   380  coq-mathcomp-odd-order/theories/BGsection11.v.html                                               │
│    38.0   38.3  0.3055      0.80%   224  coq-performance-tests-lite/PerformanceExperiments/rewrite_lift_lets_map.v.html                   │
└───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
🐇 Top 25 speed ups
┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│                                                                 TOP 25 SPEED UPS                                                                  │
│                                                                                                                                                   │
│  OLD      NEW      DIFF     %DIFF    Ln                      FILE                                                                                 │
├───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│    177       175  -2.5053   -1.41%   233  coq-fiat-crypto-with-bedrock/rupicola/bedrock2/deps/riscv-coq/src/riscv/Proofs/DecodeByExtension.v.html │
│   27.9      27.1  -0.8416   -3.01%    68  coq-fiat-crypto-with-bedrock/rupicola/bedrock2/deps/riscv-coq/src/riscv/Proofs/VerifyDecode.v.html      │
│   3.32      2.55  -0.7664  -23.12%    34  coq-fiat-crypto-with-bedrock/src/Rewriter/Passes/ArithWithCasts.v.html                                  │
│   3.96      3.34  -0.6201  -15.64%   557  coq-fiat-crypto-with-bedrock/src/Bedrock/P256/Jacobian.v.html                                           │
│   43.8      43.2  -0.5724   -1.31%     2  coq-fiat-crypto-with-bedrock/src/ExtractionJsOfOCaml/fiat_crypto.v.html                                 │
│    119       118  -0.5544   -0.47%    22  coq-fiat-crypto-with-bedrock/src/Rewriter/Passes/ArithWithCasts.v.html                                  │
│   17.8      17.3  -0.4925   -2.77%    32  coq-performance-tests-lite/src/pattern.v.html                                                           │
│   4.36      3.88  -0.4833  -11.09%   492  rocq-stdlib/theories/Reals/Cauchy/ConstructiveCauchyRealsMult.v.html                                    │
│   19.7      19.3  -0.4534   -2.30%   371  coq-fiat-crypto-with-bedrock/src/Bedrock/Secp256k1/Addchain.v.html                                      │
│   46.8      46.3  -0.4416   -0.94%   115  coq-fiat-crypto-with-bedrock/rupicola/bedrock2/bedrock2/src/bedrock2Examples/full_mul.v.html            │
│ 39.429    38.994  -0.4350   -1.10%   834  coq-vst/veric/binop_lemmas4.v.html                                                                      │
│   21.9      21.5  -0.4034   -1.85%    49  coq-fiat-crypto-with-bedrock/src/Curves/Weierstrass/AffineProofs.v.html                                 │
│   1.24     0.860  -0.3810  -30.71%   690  rocq-stdlib/theories/setoid_ring/Field_theory.v.html                                                    │
│   65.0      64.6  -0.3458   -0.53%   716  coq-fiat-crypto-with-bedrock/src/Bedrock/Secp256k1/JacobianCoZ.v.html                                   │
│  0.327  0.000216  -0.3265  -99.93%   472  rocq-mathcomp-algebra/algebra/mxalgebra.v.html                                                          │
│   24.3      24.0  -0.3224   -1.33%   345  coq-fiat-crypto-with-bedrock/src/Curves/Montgomery/XZProofs.v.html                                      │
│  0.643     0.330  -0.3125  -48.62%     1  rocq-stdlib/theories/btauto/Algebra.v.html                                                              │
│   46.7      46.4  -0.3109   -0.67%   115  coq-bedrock2/bedrock2/src/bedrock2Examples/full_mul.v.html                                              │
│   31.1      30.8  -0.3049   -0.98%   139  coq-fiat-crypto-with-bedrock/src/Bedrock/Field/Synthesis/Examples/p224_64_new.v.html                    │
│   28.8      28.5  -0.2889   -1.00%   530  coq-fiat-crypto-with-bedrock/src/Bedrock/End2End/X25519/EdwardsXYZT.v.html                              │
│   24.9      24.6  -0.2884   -1.16%    12  coq-fourcolor/theories/proof/job503to506.v.html                                                         │
│  0.973     0.685  -0.2874  -29.54%   816  rocq-stdlib/theories/MSets/MSetRBT.v.html                                                               │
│  0.278  0.000602  -0.2770  -99.78%   568  rocq-mathcomp-solvable/solvable/cyclic.v.html                                                           │
│  0.534     0.266  -0.2684  -50.22%    19  rocq-stdlib/theories/FSets/FSetFacts.v.html                                                             │
│  0.499     0.232  -0.2673  -53.54%  1187  rocq-stdlib/theories/Strings/Byte.v.html                                                                │
└───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘

@Tragicus
Copy link
Contributor Author

There is again a difference between the bench and the CI... It looks like my hott overlay is not taken into account, but then why would argosy not fail and why does unicoq fail?
I prepared a commit for the refman, to be included in my next push.

@SkySkimmer
Copy link
Contributor

The bench does not use the CI overlays, you have to use new_opam_override_urls (cf bench.sh)
The bench does not run argosy
CI does not run all unimath (we skip SubstitutionSystems Bicategories and ModelCategories, ModelCategories is where the bench has an error)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

kind: fix This fixes a bug or incorrect documentation. part: unification The unification mechanism.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants