8000 Reimplement Ncring_tac reification in ltac instead of typeclasses by SkySkimmer · Pull Request #18325 · rocq-prover/rocq · GitHub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

Reimplement Ncring_tac reification in ltac instead of typeclasses #18325

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Dec 9, 2023

Conversation

SkySkimmer
Copy link
Contributor
@SkySkimmer SkySkimmer commented Nov 15, 2023

While we may at some point use an ocaml (or Ltac2?) implementation (for instance variable list manipulation is still done by side effect through the evar map, not the nicest), this helps find out what the typeclasses do when reifying.

Notable finds:

  • the reify typeclass gets 1 instance outside Ncring_tac, from nsatz to reify IZR applied to ground ints. We replace this with a tactic redefition. Alternatives welcomed (redefinition isn't very modular so if we find another case we will have to come up with something).

  • typeclasses do some conversion, eg the instance

Instance  reify_zero (R:Type)  lvar op
 `{Ring (T:=R)(ring0:=op)}
 : reify (ring0:=op)(PEc 0%Z) lvar op.

will also apply to @zero R (@zero_notation R op ...). The reimplementation matches syntactically op (the one appearing in the type of the proof of Ring prealably inferred) and @zero _ _.

Overlays:

@SkySkimmer SkySkimmer added the request: full CI Use this label when you want your next push to trigger a full CI. label Nov 15, 2023
@SkySkimmer SkySkimmer requested review from a team as code owners November 15, 2023 15:33
@coqbot-app coqbot-app bot removed the request: full CI Use this label when you want your next push to trigger a full CI. label Nov 15, 2023
@SkySkimmer
Copy link
Contributor Author

@coqbot bench

Comment on lines 58 to 61
| (Ring (add:=?op), ?op ?t1 ?t2) =>
let et1 := reify_term Tring lvar t1 in
let et2 := reify_term Tring lvar t2 in
open_constr:(PEadd et1 et2)
Copy link
Contributor
@Janno Janno Nov 15, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Would it make sense to use uconstr here and below to avoid the quadratic overhead from typechecking in open_constr?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There is no quadratic overhead from typechecking. There was quadratic overhead from evar normalization until #17704

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Indeed, @SkySkimmer you should use uconstr otherwise we're still going to pay too much.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The bench shall tell (unless fiat crypto is the only significant user and crashes from using the reification functions directly I guess)

Copy link
Contributor
coqbot-app bot commented Nov 15, 2023

The job library:ci-fiat_crypto_legacy has failed in allow failure mode
ping @JasonGross

Copy link
Contributor
coqbot-app bot commented Nov 15, 2023

🏁 Bench results:

┌─────────────────────────────────────┬─────────────────────────┬─────────────────────────────────────┬───────────────────────────────────────┬─────────────────────────┐
│                                     │      user time [s]      │             CPU cycles              │           CPU instructions            │  max resident mem [KB]  │
│                                     │                         │                                     │                                       │                         │
│            package_name             │   NEW      OLD    PDIFF │      NEW            OLD       PDIFF │      NEW             OLD        PDIFF │   NEW      OLD    PDIFF │
├─────────────────────────────────────┼─────────────────────────┼─────────────────────────────────────┼───────────────────────────────────────┼─────────────────────────┤
│                         coq-unimath │ 1616.29  1625.28  -0.55 │ 7310150548241  7353268537709  -0.59 │ 14191650716135  14200083292033  -0.06 │ 1286844  1287048  -0.02 │
│                       coq-fiat-core │   60.59    60.89  -0.49 │  257268491120   258996950882  -0.67 │   378582543779    378468134662   0.03 │  494132   495444  -0.26 │
│         coq-rewriter-perf-SuperFast │  765.73   769.02  -0.43 │ 3410116664158  3422744404093  -0.37 │  5863484779508   5867349692760  -0.07 │ 1373720  1349040   1.83 │
│                      coq-verdi-raft │  598.45   600.77  -0.39 │ 2714300094279  2725234957927  -0.40 │  4230197272625   4232741396824  -0.06 │  850796   848964   0.22 │
│                    coq-math-classes │   90.10    90.38  -0.31 │  403100444597   404516788837  -0.35 │   561637289250    561667321975  -0.01 │  522120   522328  -0.04 │
│                            coq-corn │  801.70   803.91  -0.27 │ 3612673881520  3623049861157  -0.29 │  5611955297629   5611713856529   0.00 │  764624   764676  -0.01 │
│                                 coq │  569.12   570.46  -0.23 │ 2417954201741  2425718315502  -0.32 │  4375190544104   4392407809937  -0.39 │ 2103460  2103244   0.01 │
│                        coq-rewriter │  379.13   379.89  -0.20 │ 1707098006449  1709702178244  -0.15 │  2800181978059   2802429055910  -0.08 │ 1277448  1275320   0.17 │
│                   coq-iris-examples │  475.22   475.83  -0.13 │ 2138700369019  2141945355921  -0.15 │  3267229348585   3268673528070  -0.04 │ 1062716  1066208  -0.33 │
│                           coq-color │  239.83   240.06  -0.10 │ 1067554803406  1071630583442  -0.38 │  1560683171408   1560593911747   0.01 │ 1104364  1108364  -0.36 │
│                           coq-verdi │   49.36    49.40  -0.08 │  221531193429   221277563656   0.11 │   338357078150    338996508308  -0.19 │  527648   526664   0.19 │
│                            coq-hott │  163.43   163.55  -0.07 │  729076552589   728413549203   0.09 │  1153486935656   1153299691060   0.02 │  628732   628724   0.00 │
│                        coq-compcert │  290.79   290.65   0.05 │ 1300699201862  1300263449915   0.03 │  1994322338966   1994439144006  -0.01 │ 1153344  1153776  -0.04 │
│                         coq-coqutil │   41.77    41.71   0.14 │  185499231886   184431718680   0.58 │   268357037528    268397854365  -0.02 │  600884   598024   0.48 │
│                          coq-stdlib │  374.56   374.01   0.15 │ 1574024804294  1573172449245   0.05 │  1381475995312   1381482547852  -0.00 │  684236   685944  -0.25 │
│          coq-performance-tests-lite │  744.08   742.81   0.17 │ 3321720708908  3314764421862   0.21 │  5882155346167   5881603473535   0.01 │ 1898084  1898180  -0.01 │
│                        coq-bedrock2 │  383.21   382.38   0.22 │ 1730918590053  1726675896459   0.25 │  3385214123512   3384972802224   0.01 │  867028   865724   0.15 │
│                    coq-fiat-parsers │  337.21   336.45   0.23 │ 1487949143179  1484824025802   0.21 │  2493006100605   2493138184546  -0.01 │ 2442688  2441584   0.05 │
│               coq-engine-bench-lite │  163.22   162.77   0.28 │  694604599827   691838141806   0.40 │  1304840940224   1298678268490   0.47 │ 1175768  1174140   0.14 │
│ coq-neural-net-interp-computed-lite │  336.67   335.74   0.28 │ 1537650347012  1533531126868   0.27 │  3419783904738   3420139241173  -0.01 │ 1139256  1143396  -0.36 │
│                             coq-vst │  870.35   866.63   0.43 │ 3918170405869  3903522983665   0.38 │  6571096817741   6570399547048   0.01 │ 1945552  1947268  -0.09 │
│                         coq-bignums │   30.15    29.99   0.53 │  136147616948   134908260680   0.92 │   193837613999    193835124988   0.00 │  487632   487800  -0.03 │
│                        coq-coqprime │   49.15    48.85   0.61 │  218930460351   217844042700   0.50 │   335016629658    335049482675  -0.01 │  782272   782264   0.00 │
│                            coq-core │  120.04   119.10   0.79 │  466806054080   464739657093   0.44 │   498195802503    498124147192   0.01 │  365136   364624   0.14 │
└─────────────────────────────────────┴─────────────────────────┴─────────────────────────────────────┴───────────────────────────────────────┴─────────────────────────┘

INFO: failed to install
coq-mathcomp-ssreflect (dependency install failed in NEW)
coq-equations
coq-fiat-crypto-with-bedrock

coq-mathcomp-fingroup (dependency coq-mathcomp-ssreflect failed)
coq-mathcomp-algebra (dependency coq-mathcomp-ssreflect failed)
coq-mathcomp-solvable (dependency coq-mathcomp-ssreflect failed)
coq-mathcomp-field (dependency coq-mathcomp-ssreflect failed)
coq-mathcomp-character (dependency coq-mathcomp-ssreflect failed)
coq-mathcomp-odd-order (dependency coq-mathcomp-ssreflect failed)
coq-metacoq-template (dependency coq-equations failed)
coq-metacoq-pcuic (dependency coq-equations failed)
coq-metacoq-safechecker (dependency coq-equations failed)
coq-metacoq-erasure (dependency coq-equations failed)
coq-metacoq-translations (dependency coq-equations failed)
coq-coquelicot (dependency coq-mathcomp-ssreflect failed)
coq-fourcolor (dependency coq-mathcomp-ssreflect failed)
coq-category-theory (dependency coq-equations failed)

🐢 Top 25 slow downs
┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│                                                             TOP 25 SLOW DOWNS                                                             │
│                                                                                                                                           │
│   OLD       NEW      DIFF    %DIFF     Ln                    FILE                                                                         │
├───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ 295.1610  295.9510  0.7900     0.27%     8  coq-neural-net-interp-computed-lite/theories/MaxOfTwoNumbersSimpler/Computed/AllLogits.v.html │
│  63.3280   63.9020  0.5740     0.91%   139  coq-fiat-parsers/src/Parsers/Refinement/SharpenedJSON.v.html                                  │
│  59.0020   59.4120  0.4100     0.69%   609  coq-bedrock2/bedrock2/src/bedrock2Examples/lightbulb.v.html                                   │
│   2.5310    2.9130  0.3820    15.09%   487  coq-stdlib/Numbers/HexadecimalFacts.v.html                                                    │
│  17.3730   17.7540  0.3810     2.19%    31  coq-engine-bench-lite/coq/PerformanceDemos/pattern.v.html                                     │
│   1.1730    1.5100  0.3370    28.73%   853  coq-stdlib/FSets/FMapAVL.v.html                                                               │
│  42.7870   43.0540  0.2670     0.62%   827  coq-vst/veric/binop_lemmas4.v.html                                                            │
│  42.3330   42.5730  0.2400     0.57%   224  coq-performance-tests-lite/PerformanceExperiments/rewrite_lift_lets_map.v.html                │
│   2.3260    2.5650  0.2390    10.28%   490  coq-stdlib/Reals/Cauchy/ConstructiveCauchyRealsMult.v.html                                    │
│ 114.7390  114.9510  0.2120     0.18%   999  coq-performance-tests-lite/src/fiat_crypto_via_setoid_rewrite_standalone.v.html               │
│  28.1170   28.3250  0.2080     0.74%   194  coq-vst/veric/expr_lemmas4.v.html                                                             │
│  35.2800   35.4770  0.1970     0.56%    79  coq-rewriter/src/Rewriter/Rewriter/Examples/PerfTesting/SieveOfEratosthenes.v.html            │
│   0.8380    1.0270  0.1890    22.55%   384  coq-stdlib/MSets/MSetAVL.v.html                                                               │
│  46.0470   46.2280  0.1810     0.39%   558  coq-bedrock2/bedrock2/src/bedrock2Examples/insertionsort.v.html                               │
│   4.3190    4.4930  0.1740     4.03%   279  coq-vst/veric/SeparationLogicSoundness.v.html                                                 │
│   5.5900    5.7570  0.1670     2.99%   605  coq-unimath/UniMath/CategoryTheory/categories/KleisliCategory.v.html                          │
│ 114.6990  114.8510  0.1520     0.13%   968  coq-performance-tests-lite/src/fiat_crypto_via_setoid_rewrite_standalone.v.html               │
│   0.4160    0.5610  0.1450    34.86%    82  coq-stdlib/Numbers/Cyclic/Int63/Sint63.v.html                                                 │
│  12.4860   12.6290  0.1430     1.15%  1028  coq-unimath/UniMath/CategoryTheory/LocalizingClass.v.html                                     │
│   1.1630    1.3010  0.1380    11.87%   316  coq-stdlib/Strings/Byte.v.html                                                                │
│   0.0840    0.2160  0.1320   157.14%   183  coq-vst/veric/SeparationLogicSoundness.v.html                                                 │
│   0.1630    0.2920  0.1290    79.14%   744  coq-vst/veric/SequentialClight2.v.html                                                        │
│   0.0100    0.1360  0.1260  1260.00%   972  coq-vst/veric/SequentialClight2.v.html                                                        │
│   0.0000    0.1240  0.1240      inf%   976  coq-vst/veric/SequentialClight.v.html                                                         │
│  19.4920   19.6160  0.1240     0.64%   214  coq-engine-bench-lite/coq/PerformanceDemos/one_step_reduction.v.html                          │
└───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
🐇 Top 25 speed ups
┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│                                                              TOP 25 SPEED UPS                                                              │
│                                                                                                                                            │
│   OLD       NEW      DIFF     %DIFF    Ln                     FILE                                                                         │
├────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│   0.9360    0.5670  -0.3690  -39.42%   170  coq-stdlib/Numbers/HexadecimalNat.v.html                                                       │
│ 143.4950  143.2050  -0.2900   -0.20%  1190  coq-unimath/UniMath/CategoryTheory/GrothendieckConstruction/IsPullback.v.html                  │
│   7.6400    7.3780  -0.2620   -3.43%   293  coq-unimath/UniMath/CategoryTheory/EnrichedCats/Limits/Examples/StructureEnrichedLimits.v.html │
│  43.0690   42.8110  -0.2580   -0.60%   236  coq-rewriter-perf-SuperFast/src/Rewriter/Rewriter/Examples/PerfTesting/LiftLetsMap.v.html      │
│  43.0860   42.8330  -0.2530   -0.59%   236  coq-rewriter/src/Rewriter/Rewriter/Examples/PerfTesting/LiftLetsMap.v.html                     │
│  14.9280   14.6760  -0.2520   -1.69%  1265  coq-verdi-raft/theories/Raft/CommonTheorems.v.html                                             │
│   0.9050    0.6560  -0.2490  -27.51%   160  coq-stdlib/Numbers/HexadecimalNat.v.html                                                       │
│  13.9890   13.7440  -0.2450   -1.75%   490  coq-unimath/UniMath/HomologicalAlgebra/KA.v.html                                               │
│  10.3610   10.1370  -0.2240   -2.16%   496  coq-rewriter-perf-SuperFast/src/Rewriter/Rewriter/Wf.v.html                                    │
│  13.7590   13.5630  -0.1960   -1.42%    88  coq-rewriter/src/Rewriter/Rewriter/Examples.v.html                                             │
│  17.0960   16.9070  -0.1890   -1.11%   196  coq-unimath/UniMath/HomologicalAlgebra/KATriangulated.v.html                                   │
│   0.5280    0.3540  -0.1740  -32.95%   868  coq-stdlib/MSets/MSetRBT.v.html                                                                │
│   4.5200    4.3570  -0.1630   -3.61%   318  coq-unimath/UniMath/CategoryTheory/EnrichedCats/YonedaLemma.v.html                             │
│  17.4670   17.3100  -0.1570   -0.90%   957  coq-unimath/UniMath/CategoryTheory/Monoidal/Examples/DisplayedCartesianMonoidal.v.html         │
│  18.0760   17.9210  -0.1550   -0.86%    32  coq-performance-tests-lite/src/pattern.v.html                                                  │
│   0.3090    0.1550  -0.1540  -49.84%   905  coq-stdlib/Reals/Cauchy/ConstructiveCauchyReals.v.html                                         │
│   7.8950    7.7410  -0.1540   -1.95%   571  coq-verdi-raft/theories/Raft/CommonTheorems.v.html                                             │
│   0.6160    0.4630  -0.1530  -24.84%    21  coq-stdlib/MSets/MSetPositive.v.html                                                           │
│   7.9950    7.8440  -0.1510   -1.89%   468  coq-unimath/UniMath/HomologicalAlgebra/KA.v.html                                               │
│   0.2970    0.1500  -0.1470  -49.49%   811  coq-stdlib/MSets/MSetRBT.v.html                                                                │
│   0.4780    0.3330  -0.1450  -30.33%  1363  coq-stdlib/FSets/FMapAVL.v.html                                                                │
│  24.6490   24.5060  -0.1430   -0.58%   454  coq-unimath/UniMath/SyntheticHomotopyTheory/Circle2.v.html                                     │
│   0.3460    0.2070  -0.1390  -40.17%   163  coq-stdlib/Numbers/HexadecimalPos.v.html                                                       │
│   0.1610    0.0260  -0.1350  -83.85%   260  coq-vst/atomics/SC_atomics_base.v.html                                                         │
│   0.1510    0.0160  -0.1350  -89.40%   108  coq-vst/atomics/SC_atomics_base.v.html                                                         │
└────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘

Copy link
Contributor
coqbot-app bot commented Nov 15, 2023

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

✔️ Corresponding jobs for the base commit 56a7f9c 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-analysis, ci-fiat_crypto, ci-fiat_crypto_legacy
  • You can also pass me a specific list of targets to minimize as arguments.

@SkySkimmer
Copy link
Contributor Author

@coqbot ci minimize ci-analysis

Copy link
Contributor
coqbot-app bot commented Nov 15, 2023

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

Copy link
Contributor
coqbot-app bot commented Nov 16, 2023

Minimized File /github/workspace/builds/coq/coq-failing/_build_ci/analysis/theories/trigo.v (from ci-analysis) (interrupted by timeout, being automatically continued) (full log on GitHub Actions)

Partially Minimized Coq File (timeout) (truncated to 32KiB; full 182KiB file on GitHub Actions Artifacts under bug.v)
(* -*- mode: coq; coq-prog-args: ("-emacs" "-q" "-w" "-parsing" "-w" "+undeclared-scope" "-w" "+non-primitive-record" "-w" "-ambiguous-paths" "-w" "-redundant-canonical-projection" "-w" "-projection-no-head-constant" "-w" "-deprecated-native-compiler-option" "-native-compiler" "ondemand" "-R" "/github/workspace/builds/coq/coq-failing/_build_ci/analysis/classical" "mathcomp.classical" "-R" "/github/workspace/builds/coq/coq-failing/_build_ci/analysis/theories" "mathcomp.analysis" "-Q" "/github/workspace/cwd" "Top" "-Q" "/github/workspace/builds/coq/coq-failing/_install_ci/lib/coq/user-contrib/HB" "HB" "-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/elpi" "elpi" "-Q" "/github/workspace/builds/coq/coq-failing/_install_ci/lib/coq/user-contrib/mathcomp" "mathcomp" "-top" "mathcomp.analysis.trigo") -*- *)
(* File reduced by coq-bug-minimizer from original input, then from 1255 lines to 42 lines, then from 55 lines to 816 lines, then from 821 lines to 56 lines, then from 69 lines to 1760 lines, then from 1765 lines to 123 lines, then from 136 lines to 6941 lines, then from 6944 lines to 5747 lines *)
(* coqc version 8.19+alpha compiled with OCaml 4.14.1
   coqtop version b6bf0e601990:/builds/coq/coq/_build/default,(HEAD detached at d939b0f) (d939b0f67e958b71c8283ed71d1bb5d0fa515c69)
   Expected coqc runtime on this file: 18.871 sec *)
Require Coq.Init.Ltac.
Require Coq.nsatz.Nsatz.
Require Coq.ssr.ssreflect.
Require mathcomp.ssreflect.ssreflect.
Require Coq.ssr.ssrfun.
Require mathcomp.ssreflect.ssrnotations.
Require mathcomp.ssreflect.ssrfun.
Require Coq.ssr.ssrbool.
Require mathcomp.ssreflect.ssrbool.
Require mathcomp.ssreflect.eqtype.
Require Coq.NArith.BinNat.
Require Coq.PArith.BinPos.
Require Coq.NArith.Ndec.
Require Coq.setoid_ring.Ring.
Require mathcomp.ssreflect.ssrnat.
Require mathcomp.ssreflect.seq.
Require mathcomp.ssreflect.choice.
Require mathcomp.ssreflect.path.
Require mathcomp.ssreflect.div.
Require mathcomp.ssreflect.fintype.
Require mathcomp.ssreflect.fingraph.
Require mathcomp.ssreflect.tuple.
Require mathcomp.ssreflect.finfun.
Require mathcomp.ssreflect.bigop.
Require mathcomp.ssreflect.prime.
Require mathcomp.ssreflect.finset.
Require mathcomp.ssreflect.order.
Require mathcomp.ssreflect.binomial.
Require mathcomp.ssreflect.generic_quotient.
Require mathcomp.ssreflect.ssrAC.
Require mathcomp.ssreflect.all_ssreflect.
Require mathcomp.algebra.ssralg.
Require mathcomp.algebra.ring_quotient.
Require mathcomp.algebra.countalg.
Require mathcomp.fingroup.fingroup.
Require mathcomp.algebra.poly.
Require mathcomp.algebra.ssrnum.
Require mathcomp.algebra.ssrint.
Require mathcomp.classical.boolp.
Require mathcomp.fingroup.morphism.
Require mathcomp.fingroup.perm.
Require mathcomp.fingroup.automorphism.
Require mathcomp.fingroup.quotient.
Require mathcomp.fingroup.action.
Require mathcomp.algebra.finalg.
Require mathcomp.algebra.polydiv.
Require mathcomp.algebra.zmodp.
Require mathcomp.algebra.matrix.
Require mathcomp.algebra.mxalgebra.
Require mathcomp.algebra.mxpoly.
Require mathcomp.algebra.polyXY.
Require mathcomp.algebra.vector.
Require mathcomp.algebra.qpoly.
Require Coq.setoid_ring.Field_theory.
Require Coq.setoid_ring.Field_tac.
Require mathcomp.algebra.rat.
Require mathcomp.algebra.intdiv.
Require mathcomp.algebra.interval.
Require mathcomp.algebra.fraction.
Require mathcomp.algebra.all_algebra.
Require mathcomp.finmap.finmap.
Require mathcomp.classical.mathcomp_extra.
Require mathcomp.classical.classical_sets.
Require Coq.Strings.String.
Require Coq.Bool.Bool.
Require Coq.Floats.PrimFloat.
Require Coq.Numbers.Cyclic.Int63.PrimInt63.
Require elpi.elpi.
Require HB.structures.
Require mathcomp.classical.functions.
Require mathcomp.classical.set_interval.
Require Coq.Setoids.Setoid.
Require mathcomp.analysis.reals.
Require mathcomp.classical.cardinality.
Require mathcomp.classical.fsbigop.
Require mathcomp.analysis.signed.
Require mathcomp.analysis.topology.
Require mathcomp.analysis.constructive_ereal.
Require mathcomp.analysis.ereal.
Require mathcomp.analysis.nsatz_realtype.
Require Coq.Logic.Epsilon.
Require Coq.Logic.FunctionalExtensionality.
Require Coq.Reals.RIneq.
Require Coq.Reals.Ranalysis1.
Require Coq.Reals.Raxioms.
Require Coq.Reals.Rbasic_fun.
Require Coq.Reals.Rdefinitions.
Require Coq.Reals.Reals.
Require Coq.Reals.Rsqrt_def.
Require Coq.Reals.Rtrigo1.
Require Coq.ZArith.Zwf.
Require mathcomp.field.falgebra.
Require mathcomp.analysis.prodnormedzmodule.
Require mathcomp.field.fieldext.
Require mathcomp.analysis.Rstruct.

Module Export AdmitTactic.
Module Import LocalFalse.
Inductive False : Prop := .
End LocalFalse.
Axiom proof_admitted : False.
Import Coq.Init.Ltac.
Tactic Notation "admit" := abstract case proof_admitted.
End AdmitTactic.

Module mathcomp_DOT_analysis_DOT_normedtype_WRAPPED.
Module normedtype.
 
Import mathcomp.ssreflect.all_ssreflect mathcomp.algebra.ssralg mathcomp.algebra.ssrint mathcomp.algebra.ssrnum mathcomp.finmap.finmap mathcomp.algebra.matrix.
Import mathcomp.algebra.rat mathcomp.algebra.interval mathcomp.algebra.zmodp mathcomp.algebra.vector mathcomp.field.fieldext mathcomp.field.falgebra.
Import mathcomp.classical.mathcomp_extra mathcomp.classical.boolp mathcomp.classical.classical_sets mathcomp.classical.functions.
Import mathcomp.classical.cardinality mathcomp.classical.set_interval mathcomp.analysis.Rstruct.
Import mathcomp.analysis.ereal mathcomp.analysis.reals mathcomp.analysis.signed mathcomp.analysis.topology mathcomp.analysis.prodnormedzmodule.

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Reserved Notation "f @`[ a , b ]" (at level 20, b at level 9,
  format "f  @`[ a ,  b ]").
Reserved Notation "f @`] a , b [" (at level 20, b at level 9,
  format "f  @`] a ,  b [").
Reserved Notation "x ^'+" (at level 3, format "x ^'+").
Reserved Notation "x ^'-" (at level 3, format "x ^'-").
Reserved Notation "+oo_ R" (at level 3, format "+oo_ R").
Reserved Notation "-oo_ R" (at level 3, format "-oo_ R").
Reserved Notation "[ 'bounded' E | x 'in' A ]"
  (at level 0, x name, format "[ 'bounded'  E  |  x  'in'  A ]").
Reserved Notation "k .-lipschitz_on f"
  (at level 2, format "k .-lipschitz_on  f").
Reserved Notation "k .-lipschitz_ A f"
  (at level 2, A at level 0, format "k .-lipschitz_ A  f").
Reserved Notation "k .-lipschitz f" (at level 2, format "k .-lipschitz  f").
Reserved Notation "[ 'lipschitz' E | x 'in' A ]"
  (at level 0, x name, format "[ 'lipschitz'  E  |  x  'in'  A ]").
Reserved Notation "k *` A" (at level 40, left associativity, format "k  *`  A").

Set Implicit Arguments.
Unset Strict Implicit.
Unset Printing Implicit Defensive.

Import Order.TTheory GRing.Theory Num.Def Num.Theory.
Import numFieldTopology.Exports.

Local Open Scope classical_set_scope.
Local Open Scope ring_scope.

Definition pointed_of_zmodule (R : zmodType) : pointedType := PointedType R 0.

Definition filtered_of_normedZmod (K : numDomainType) (R : normedZmodType K)
  : filteredType R := Filtered.Pack (Filtered.Class
    (@Pointed.class (pointed_of_zmodule R))
    (nbhs_ball_ (ball_ (fun x => `|x|)))).

Section pseudoMetric_of_normedDomain.
Variables (K : numDomainType) (R : normedZmodType K).
Lemma ball_norm_center (x : R) (e : K) : 0 < e -> ball_ normr x e x.
Proof.
by move=> ? /=; rewrite subrr normr0.
Qed.
Lemma ball_norm_symmetric (x y : R) (e : K) :
  ball_ normr x e y -> ball_ normr y e x.
Proof.
by rewrite /= distrC.
Qed.
Lemma ball_norm_triangle (x y z : R) (e1 e2 : K) :
  ball_ normr x e1 y -> ball_ normr y e2 z -> ball_ normr x (e1 + e2) z.
Proof.
move=> /= ? ?; rewrite -(subr0 x) -(subrr y) opprD opprK (addrA x _ y) -addrA.
by rewrite (le_lt_trans (ler_norm_add _ _)) // ltr_add.
Qed.
Definition pseudoMetric_of_normedDomain
  : PseudoMetric.mixin_of K (@entourage_ K R R (ball_ (fun x => `|x|)))
  := PseudoMetricMixin ball_norm_center ball_norm_symmetric ball_norm_triangle erefl.

Lemma nbhs_ball_normE :
  @nbhs_ball_ K R R (ball_ normr) = nbhs_ (entourage_ (ball_ normr)).
Proof.
rewrite /nbhs_ entourage_E predeq2E => x A; split.
  move=> [e egt0 sbeA].
  by exists [set xy | ball_ normr xy.1 e xy.2] => //; exists e.
by move=> [E [e egt0 sbeE] sEA]; exists e => // ??; apply/sEA/sbeE.
Qed.
End pseudoMetric_of_normedDomain.

Lemma nbhsN (R : numFieldType) (x : R) : nbhs (- x) = -%R @ x.
Proof.
rewrite predeqE => A; split=> //= -[] e e_gt0 xeA; exists e => //= y /=.
  by move=> ?; apply: xeA => //=; rewrite -opprD normrN.
by rewrite -opprD normrN => ?; rewrite -[y]opprK; apply: xeA; rewrite /= opprK.
Qed.

Lemma nbhsNimage (R : numFieldType) (x : R) :
  nbhs (- x) = [set -%R @` A | A in nbhs x].
Proof.
rewrite nbhsN /fmap/=; under eq_set => A do rewrite preimageEinv//= inv_oppr.
by rewrite (eq_imageK opprK opprK).
Qed.

Lemma nearN (R : numFieldType) (x : R) (P : R -> Prop) :
  (\forall y \near - x, P y) <-> \near x, P (- x).
Proof.
by rewrite -near_simpl nbhsN.
Qed.

Lemma openN (R : numFieldType) (A : set R) :
  open A -> open [set - x | x in A].
Proof.
move=> Aop; rewrite openE => _ [x /Aop x_A <-].
by rewrite /interior nbhsNimage; exists A.
Qed.

Lemma closedN (R : numFieldType) (A : set R) :
  closed A -> closed [set - x | x in A].
Proof
8000
.
move=> Acl x clNAx.
suff /Acl : closure A (- x) by exists (- x)=> //; rewrite opprK.
move=> B oppx_B; have : [set - x | x in A] `&` [set - x | x in B] !=set0.
  by apply: clNAx; rewrite -[x]opprK nbhsNimage; exists B.
move=> [y [[z Az oppzey] [t Bt opptey]]]; exists (- y).
by split; [rewrite -oppzey opprK|rewrite -opptey opprK].
Qed.

Module PseudoMetricNormedZmodule.
Section ClassDef.
Variable R : numDomainType.
Record mixin_of (T : normedZmodType R) (ent : set (set (T * T)))
    (m : PseudoMetric.mixin_of R ent) := Mixin {
  _ : PseudoMetric.ball m = ball_ (fun x => `| x |) }.

Record class_of (T : Type) := Class {
  base : Num.NormedZmodule.class_of R T;
  pointed_mixin : Pointed.point_of T ;
  nbhs_mixin : Filtered.nbhs_of T T ;
  topological_mixin : @Topological.mixin_of T nbhs_mixin ;
  uniform_mixin : @Uniform.mixin_of T nbhs_mixin ;
  pseudoMetric_mixin :
    @PseudoMetric.mixin_of R T (Uniform.entourage uniform_mixin) ;
  mixin : @mixin_of (Num.NormedZmodule.Pack _ base) _ pseudoMetric_mixin
}.
Local Coercion base : class_of >-> Num.NormedZmodule.class_of.
Definition base2 T c := @PseudoMetric.Class _ _
    (@Uniform.Class _
      (@Topological.Class _
        (Filtered.Class
         (Pointed.Class (@base T c) (pointed_mixin c))
         (nbhs_mixin c))
        (topological_mixin c))
      (uniform_mixin c))
    (pseudoMetric_mixin c).
Local Coercion base2 : class_of >-> PseudoMetric.class_of.
 

Structure type (phR : phant R) :=
  Pack { sort; _ : class_of sort }.
Local Coercion sort : type >-> Sortclass.

Variables (phR : phant R) (T : Type) (cT : type phR).

Definition class := let: Pack _ c := cT return class_of cT in c.
Definition clone c of phant_id class c := @Pack phR T c.
Let xT := let: Pack T _ := cT in T.
Notation xclass := (class : class_of xT).
Definition pack (b0 : Num.NormedZmodule.class_of R T) lm0 um0
  (m0 : @mixin_of (@Num.NormedZmodule.Pack R (Phant R) T b0) lm0 um0) :=
  fun bT (b : Num.NormedZmodule.class_of R T)
      & phant_id (@Num.NormedZmodule.class R (Phant R) bT) b =>
  fun uT (u : PseudoMetric.class_of R T) & phant_id (@PseudoMetric.class R uT) u =>
  fun (m : @mixin_of (Num.NormedZmodule.Pack _ b) _ u) & phant_id m m0 =>
  @Pack phR T (@Class T b u u u u u m).

Definition eqType := @Equality.Pack cT xclass.
Definition choiceType := @Choice.Pack cT xclass.
Definition zmodType := @GRing.Zmodule.Pack cT xclass.
Definition normedZmodType := @Num.NormedZmodule.Pack R phR cT xclass.
Definition pointedType := @Pointed.Pack cT xclass.
Definition filteredType := @Filtered.Pack cT cT xclass.
Definition topologicalType := @Topological.Pack cT xclass.
Definition uniformType := @Uniform.Pack cT xclass.
Definition pseudoMetricType := @PseudoMetric.Pack R cT xclass.
Definition pointed_zmodType := @GRing.Zmodule.Pack pointedType xclass.
Definition filtered_zmodType := @GRing.Zmodule.Pack filteredType xclass.
Definition topological_zmodType := @GRing.Zmodule.Pack topologicalType xclass.
Definition uniform_zmodType := @GRing.Zmodule.Pack uniformType xclass.
Definition pseudoMetric_zmodType := @GRing.Zmodule.Pack pseudoMetricType xclass.
Definition pointed_normedZmodType := @Num.NormedZmodule.Pack R phR pointedType xclass.
Definition filtered_normedZmodType := @Num.NormedZmodule.Pack R phR filteredType xclass.
Definition topological_normedZmodType := @Num.NormedZmodule.Pack R phR topologicalType xclass.
Definition uniform_normedZmodType := @Num.NormedZmodule.Pack R phR uniformType xclass.
Definition pseudoMetric_normedZmodType := @Num.NormedZmodule.Pack R phR pseudoMetricType xclass.

End ClassDef.

 

Module Exports.
Coercion base : class_of >-> Num.NormedZmodule.class_of.
Coercion base2 : class_of >-> PseudoMetric.class_of.
Coercion sort : type >-> Sortclass.
Coercion eqType : type >-> Equality.type.
Canonical eqType.
Coercion choiceType : type >-> Choice.type.
Canonical choiceType.
Coercion zmodType : type >-> GRing.Zmodule.type.
Canonical zmodType.
Coercion normedZmodType : type >-> Num.NormedZmodule.type.
Canonical normedZmodType.
Coercion pointedType : type >-> Pointed.type.
Canonical pointedType.
Coercion filteredType : type >-> Filtered.type.
Canonical filteredType.
Coercion topologicalType : type >-> Topological.type.
Canonical topologicalType.
Coercion uniformType : type >-> Uniform.type.
Canonical uniformType.
Coercion pseudoMetricType : type >-> PseudoMetric.type.
Canonical pseudoMetricType.
Canonical pointed_zmodType.
Canonical filtered_zmodType.
Canonical topological_zmodType.
Canonical uniform_zmodType.
Canonical pseudoMetric_zmodType.
Canonical pointed_normedZmodType.
Canonical filtered_normedZmodType.
Canonical topological_normedZmodType.
Canonical uniform_normedZmodType.
Canonical pseudoMetric_normedZmodType.
Notation pseudoMetricNormedZmodType R := (type (Phant R)).
Notation PseudoMetricNormedZmodType R T m :=
  (@pack _ (Phant R) T _ _ _ m _ _ idfun _ _ idfun _ idfun).
Notation "[ 'pseudoMetricNormedZmodType' R 'of' T 'for' cT ]" :=
  (@clone _ (Phant R) T cT _ idfun)
  (at level 0, format "[ 'pseudoMetricNormedZmodType'  R  'of'  T  'for'  cT ]") :
  form_scope.
Notation "[ 'pseudoMetricNormedZmodType' R 'of' T ]" :=
  (@clone _ (Phant R) T _ _ idfun)
  (at level 0, format "[ 'pseudoMetricNormedZmodType'  R  'of'  T ]") : form_scope.
End Exports.

End PseudoMetricNormedZmodule.
Export PseudoMetricNormedZmodule.Exports.

Section pseudoMetricnormedzmodule_lemmas.
Context {K : numDomainType} {V : pseudoMetricNormedZmodType K}.

Local Notation ball_norm := (ball_ (@normr K V)).

Lemma ball_normE : ball_norm = ball.
Proof.
by case: V => ? [? ? ? ? ? ? []].
Qed.

End pseudoMetricnormedzmodule_lemmas.

Lemma bigcup_ballT {R : realType} : \bigcup_n ball (0%R : R) n%:R = setT.
Proof.
apply/seteqP; split => // x _; have [x0|x0] := ltP 0%R x.
  exists `|ceil x|.+1 => //.
  rewrite /ball /= sub0r normrN gtr0_norm// (le_lt_trans (ceil_ge _))//.
  by rewrite -natr1 natr_absz -abszE gtz0_abs// ?ceil_gt0// ltr_spaddr.
exists `|ceil (- x)|.+1 => //.
rewrite /ball /= sub0r normrN ler0_norm// (le_lt_trans (ceil_ge _))//.
rewrite -natr1 natr_absz -abszE gez0_abs ?ceil_ge0// 1?ler_oppr ?oppr0//.
by rewrite ltr_spaddr.
Qed.

 

Section Nbhs'.
Context {R : numDomainType} {T : pseudoMetricType R}.

Lemma ex_ball_sig (x : T) (P : set T) :
  ~ (forall eps : {posnum R}, ~ (ball x eps%:num `<=` ~` P)) ->
    {d : {posnum R} | ball x d%:num `<=` ~` P}.
Proof.
rewrite forallNE notK => exNP.
pose D := [set d : R^o | d > 0 /\ ball x d `<=` ~` P].
have [|d_gt0] := @getPex _ D; last by exists (PosNum d_gt0).
by move: exNP => [e eP]; exists e%:num.
Qed.

Lemma nbhsC (x : T) (P : set T) :
  ~ (forall eps : {posnum R}, ~ (ball x eps%:num `<=` ~` P)) ->
  nbhs x (~` P).
Proof.
by move=> /ex_ball_sig [e] ?; apply/nbhs_ballP; exists e%:num => /=.
Qed.

Lemma nbhsC_ball (x : T) (P : set T) :
  nbhs x (~` P) -> {d : {posnum R} | ball x d%:num `<=` ~` P}.
Proof.
move=> /nbhs_ballP xNP; apply: ex_ball_sig.
by have [_ /posnumP[e] eP /(_ _ eP)] := xNP.
Qed.

Lemma nbhs_ex (x : T) (P : T -> Prop) : nbhs x P ->
  {d : {posnum R} | forall y, ball x d%:num y -> P y}.
Proof.
move=> /nbhs_ballP xP.
pose D := [set d : R^o | d > 0 /\ forall y, ball x d y -> P y].
have [|d_gt0 dP] := @getPex _ D; last by exists (PosNum d_gt0).
by move: xP => [e bP]; exists (e : R).
Qed.

End Nbhs'.

Lemma coord_continuous {K : numFieldType} m n i j :
  continuous (fun M : 'M[K]_(m, n) => M i j).
Proof.
move=> /= M s /= /(nbhs_ballP (M i j)) [e e0 es].
apply/nbhs_ballP; exists e => //= N MN; exact/es/MN.
Qed.

Global Instance Proper_dnbhs_numFieldType (R : numFieldType) (x : R) :
  ProperFilter x^'.
Proof.
apply: Build_ProperFilter => A /nbhs_ballP[_/posnumP[e] Ae].
exists (x + e%:num / 2); apply: Ae; last first.
  by rewrite eq_sym addrC -subr_eq subrr eq_sym.
rewrite /ball /= opprD addrA subrr distrC subr0 ger0_norm //.
by rewrite {2}(splitr e%:num) ltr_spaddl.
Qed.

#[global] Hint Extern 0 (ProperFilter _^') =>
  (apply: Proper_dnbhs_numFieldType) : typeclass_instances.

 

Definition pinfty_nbhs (R : numFieldType) : set (set R) :=
  fun P => exists M, M \is Num.real /\ forall x, M < x -> P x.
Arguments pinfty_nbhs R : clear implicits.
Definition ninfty_nbhs (R : numFieldType) : set (set R) :=
  fun P => exists M, M \is Num.real /\ forall x, x < M -> P x.
Arguments ninfty_nbhs R : clear implicits.

Notation "+oo_ R" := (pinfty_nbhs [numFieldType of R])
  (only parsing) : ring_scope.
Notation "-oo_ R" := (ninfty_nbhs [numFieldType of R])
  (only parsing) : ring_scope.

Notation "+oo" := (pinfty_nbhs _) : ring_scope.
Notation "-oo" := (ninfty_nbhs _) : ring_scope.

Section infty_nbhs_instances.
Context {R : numFieldType}.
Let R_topologicalType := [topologicalType of R].
Implicit Types r : R.

Global Instance proper_pinfty_nbhs : ProperFilter (pinfty_nbhs R).
Proof.
apply Build_ProperFilter.
  by move=> P [M [Mreal MP]]; exists (M + 1); apply MP; rewrite ltr_addl.
split=> /= [|P Q [MP [MPr gtMP]] [MQ [MQr gtMQ]] |P Q sPQ [M [Mr gtM]]].
-
 by exists 0.
-
 exists (maxr MP MQ); split=> [|x]; first exact: max_real.
  by rewrite comparable_lt_maxl ?real_comparable // => /andP[/gtMP ? /gtMQ].
-
 by exists M; split => // ? /gtM /sPQ.
Qed.

Global Instance proper_ninfty_nbhs : ProperFilter (ninfty_nbhs R).
Proof.
apply Build_ProperFilter.
  move=> P [M [Mr ltMP]]; exists (M - 1).
  by apply: ltMP; rewrite gtr_addl oppr_lt0.
split=> /= [|P Q [MP [MPr ltMP]] [MQ [MQr ltMQ]] |P Q sPQ [M [Mr ltM]]].
-
 by exists 0.
-
 exists (Num.min MP MQ); split=> [|x]; first exact: min_real.
  by rewrite comparable_lt_minr ?real_comparable // => /andP[/ltMP ? /ltMQ].
-
 by exists M; split => // x /ltM /sPQ.
Qed.

Lemma nbhs_pinfty_gt r : r \is Num.real -> \forall x \near +oo, r < x.
Proof.
by exists r.
Qed.

Lemma nbhs_pinfty_ge r : r \is Num.real -> \forall x \near +oo, r <= x.
Proof.
by exists r; split => //; apply: ltW.
Qed.

Lemma nbhs_ninfty_lt r : r \is Num.real -> \forall x \near -oo, r > x.
Proof.
by exists r.
Qed.

Lemma nbhs_ninfty_le r : r \is Num.real -> \forall x \near -oo, r >= x.
Proof.
by exists r; split => // ?; apply: ltW.
Qed.

Lemma nbhs_pinfty_real : \forall x \near +oo, x \is @Num.real R.
Proof.
by apply: filterS (nbhs_pinfty_gt (@real0 _)); apply: gtr0_real.
Qed.

Lemma nbhs_ninfty_real : \forall x \near -oo, x \is @Num.real R.
Proof.
by apply: filterS (nbhs_ninfty_lt (@real0 _)); apply: ltr0_real.
Qed.

Lemma pinfty_ex_gt (m : R) (A : set R) : m \is Num.real ->
  (\forall k \near +oo, A k) -> exists2 M, m < M & A M.
Proof.
move=> m_real Agt; near (pinfty_nbhs R) => M.
by exists M; near: M => //; apply: nbhs_pinfty_gt.
Unshelve.
all: by end_near.
Qed.

Lemma pinfty_ex_ge (m : R) (A : set R) : m \is Num.real ->
  (\forall k \near +oo, A k) -> exists2 M, m <= M & A M.
Proof.
move=> m_real Agt; near (pinfty_nbhs R) => M.
by exists M; near: M => //; apply: nbhs_pinfty_ge.
Unshelve.
all: by end_near.
Qed.

Lemma pinfty_ex_gt0 (A : set R) :
  (\forall k \near +oo, A k) -> exists2 M, M > 0 & A M.
Proof.
exact: pinfty_ex_gt.
Qed.

Lemma near_pinfty_div2 (A : set R) :
  (\forall k \near +oo, A k) -> (\forall k \near +oo, A (k / 2)).
Proof.
move=> [M [Mreal AM]]; exists (M * 2); split; first by rewrite realM.
by move=> x; rewrite -ltr_pdivl_mulr //; exact: AM.
Qed.

End infty_nbhs_instances.

#[global] Hint Extern 0 (is_true (_ < ?x)) => match goal with
  H : x \is_near _ |- _ => near: x; exact: nbhs_pinfty_gt end : core.
#[global] Hint Extern 0 (is_true (_ <= ?x)) => match goal with
  H : x \is_near _ |- _ => near: x; exact: nbhs_pinfty_ge end : core.
#[global] Hint Extern 0 (is_true (_ > ?x)) => match goal with
  H : x \is_near _ |- _ => near: x; exact: nbhs_ninfty_lt end : core.
#[global] Hint Extern 0 (is_true (_ >= ?x)) => match goal with
  H : x \is_near _ |- _ => near: x; exact: nbhs_ninfty_le end : core.
#[global] Hint Extern 0 (is_true (?x \is Num.real)) => match goal with
  H : x \is_near _ |- _ => near: x; exact: nbhs_pinfty_real end : core.
#[global] Hint Extern 0 (is_true (?x \is Num.real)) => match goal with
  H : x \is_near _ |- _ => near: x; exact: nbhs_ninfty_real end : core.

#[global] Hint Extern 0 (is_true (_ < ?x)%E) => match goal with
  H : x \is_near _ |- _ => near: x; exact: ereal_nbhs_pinfty_gt end : core.
#[global] Hint Extern 0 (is_true (_ <= ?x)%E) => match goal with
  H : x \is_near _ |- _ => near: x; exact: ereal_nbhs_pinfty_ge end : core.
#[global] Hint Extern 0 (is_true (_ > ?x)%E) => match goal with
  H : x \is_near _ |- _ => near: x; exact: ereal_nbhs_ninfty_lt end : core.
#[global] Hint Extern 0 (is_true (_ >= ?x)%E) => match goal with
  H : x \is_near _ |- _ => near: x; exact: ereal_nbhs_ninfty_le end : core.
#[global] Hint Extern 0 (is_true (fine ?x \is Num.real)) => match goal with
  H : x \is_near _ |- _ => near: x; exact: ereal_nbhs_pinfty_real end : core.
#[global] Hint Extern 0 (is_true (fine ?x \is Num.real)) => match goal with
  H : x \is_near _ |- _ => near: x; exact: ereal_nbhs_ninfty_real end : core.

Section cvg_infty_numField.
Context {R : numFieldType}.

Let cvgryPnum {F : set (set R)} {FF : Filter F} : [<->
  F --> +oo;
  forall A, A \is Num.real -> \forall x \near F, A <= x;
  forall A, A \is Num.real -> \forall x \near F, A < x;
  \forall A \near +oo, \forall x \near F, A < x;
  \forall A \near +oo, \forall x \near F, A <= x ].
Proof.
tfae; first by move=> Foo A Areal; apply: Foo; apply: nbhs_pinfty_ge.
-
 move=> AF A Areal; near +oo_R => B.
  by near do apply: (@lt_le_trans _ _ B) => //=; apply: AF.
-
 by move=> Foo; near do apply: Foo => //.
-
 by apply: filterS => ?; apply: filterS => ?; apply: ltW.
case=> [A [AR AF]] P [x [xR Px]]; near +oo_R => B.
by near do [apply: Px; apply: (@lt_le_trans _ _ B) => //]; apply: AF.
Unshelve.
all: by end_near.
Qed.

Let cvgrNyPnum {F : set (set R)} {FF : Filter F} : [<->
  F --> -oo;
  forall A, A \is Num.real -> \forall x \near F, A >= x;
  forall A, A \is Num.real -> \forall x \near F, A > x;
  \forall A \near -oo, \forall x \near F, A > x;
  \forall A \near -oo, \forall x \near F, A >= x ].
Proof.
tfae; first by move=> Foo A Areal; apply: Foo; apply: nbhs_ninfty_le.
-
 move=> AF A Areal; near -oo_R => B.
  by near do apply: (@le_lt_trans _ _ B) => //; apply: AF.
-
 by move=> Foo; near do apply: Foo => //.
-
 by apply: filterS => ?; apply: filterS => ?; apply: ltW.
case=> [A [AR AF]] P [x [xR Px]]; near -oo_R => B.
by near do [apply: Px; apply: (@le_lt_trans _ _ B) => //]; apply: AF.
Unshelve.
all: end_near.
Qed.

Context {T} {F : set (set T)} {FF : Filter F}.
Implicit Types f : T -> R.

Lemma cvgryPger f :
  f @ F --> +oo <-> forall A, A \is Num.real -> \forall x \near F, A <= f x.
Proof.
exact: (cvgryPnum 0%N 1%N).
Qed.

Lemma cvgryPgtr f :
  f @ F --> +oo <-> forall A, A \is Num.real -> \forall x \near F, A < f x.
Proof.
exact: (cvgryPnum 0%N 2%N).
Qed.

Lemma cvgryPgty f :
  f @ F --> +oo <-> \forall A \near +oo, \forall x \near F, A < f x.
Proof.
exact: (cvgryPnum 0%N 3%N).
Qed.

Lemma cvgryPgey f :
  f @ F --> +oo <-> \forall A \near +oo, \forall x \near F, A <= f x.
Proof.
exact: (cvgryPnum 0%N 4%N).
Qed.

Lemma cvgrNyPler f :
  f @ F --> -oo <-> forall A, A \is Num.real -> \forall x \near F, A >= f x.
Proof.
exact: (cvgrNyPnum 0%N 1%N).
Qed.

Lemma cvgrNyPltr f :
  f @ F --> -oo <-> forall A, A \is Num.real -> \forall x \near F, A > f x.
Proof.
exact: (cvgrNyPnum 0%N 2%N).
Qed.

Lemma cvgrNyPltNy f :
  f @ F --> -oo <-> \forall A \near -oo, \forall x \near F, A > f x.
Proof.
exact: (cvgrNyPnum 0%N 3%N).
Qed.

Lemma cvgrNyPleNy f :
  f @ F --> -oo <-> \forall A \near -oo, \forall x \near F, A >= f x.
Proof.
exact: (cvgrNyPnum 0%N 4%N).
Qed.

Lemma cvgry_ger f :
  f @ F --> +oo -> forall A, A \is Num.real -> \forall x \near F, A <= f x.
Proof.
by rewrite cvgryPger.
Qed.

Lemma cvgry_gtr f :
  f @ F --> +oo -> forall A, A \is Num.real -> \forall x \near F, A < f x.
Proof.
by rewrite cvgryPgtr.
Qed.

Lemma cvgrNy_ler f :
  f @ F --> -oo -> forall A, A \is Num.real -> \forall x \near F, A >= f x.
Proof.
by rewrite cvgrNyPler.
Qed.

Lemma cvgrNy_ltr f :
  f @ F --> -oo -> forall A, A \is Num.real -> \forall x \near F, A > f x.
Proof.
by rewrite cvgrNyPltr.
Qed.

Lemma cvgNry f : (- f @ F --> +oo) <-> (f @ F --> -oo).
Proof.
rewrite cvgrNyPler cvgryPger; split=> Foo A Areal;
by near do rewrite -ler_opp2 ?opprK; apply: Foo; rewrite rpredN.
Unshelve.
all: end_near.
Qed.

Lemma cvgNrNy f : (- f @ F --> -oo) <-> (f @ F --> +oo).
Proof.
by rewrite -cvgNry opprK.
Qed.

End cvg_infty_numField.

Section cvg_infty_realField.
Context {R : realFieldType}.
Context {T} {F : set (set T)} {FF : Filter F} (f : T -> R).

Lemma cvgryPge : f @ F --> +oo <-> forall A, \forall x \near F, A <= f x.
Proof.
by rewrite cvgryPger; under eq_forall do rewrite num_real; split=> + *; apply.
Qed.

Lemma cvgryPgt : f @ F --> +oo <-> forall A, \forall x \near F, A < f x.
Proof.
by rewrite cvgryPgtr; under eq_forall do rewrite num_real; split=> + *; apply.
Qed.

Lemma cvgrNyPle : f @ F --> -oo <-> forall A, \forall x \near F, A >= f x.
Proof.
by rewrite cvgrNyPler; under eq_forall do rewrite num_real; split=> + *; apply.
Qed.

Lemma cvgrNyPlt : f @ F --> -oo <-> forall A, \forall x \near F, A > f x.
Proof.
by rewrite cvgrNyPltr; under eq_forall do rewrite num_real; split=> + *; apply.
Qed.

Lemma cvgry_ge : f @ F --> +oo -> forall A, \forall x \near F, A <= f x.
Proof.
by rewrite cvgryPge.
Qed.

Lemma cvgry_gt : f @ F --> +oo -> forall A, \forall x \near F, A < f x.
Proof.
by rewrite cvgryPgt.
Qed.

Lemma cvgrNy_le : f @ F --> -oo -> forall A, \forall x \near F, A >= f x.
Proof.
by rewrite cvgrNyPle.
Qed.

Lemma cvgrNy_lt : f @ F --> -oo -> forall A, \forall x \near F, A > f x.
Proof.
by rewrite cvgrNyPlt.
Qed.

End cvg_infty_realField.

Lemma cvgrnyP {R : realType} {T} {F : set (set T)} {FF : Filter F} (f : T -> nat) :
   (((f n)%:R : R) @[n --> F] --> +oo) <-> (f @ F --> \oo).
Proof.
split=> [/cvgryPge|/cvgnyPge] Foo.
  by apply/cvgnyPge => A; near do rewrite -(@ler_nat R); apply: Foo.
apply/cvgryPgey; near=> A; near=> n.
rewrite (le_trans (@ceil_ge R A))// (ler_int _ _ (f n)) [ceil _]intEsign.
by rewrite le_gtF ?expr0 ?mul1r ?lez_nat ?ceil_ge0//; near: n; apply: Foo.
Unshelve.
all: by end_near.
Qed.

Section ecvg_infty_numField.
Local Open Scope ereal_scope.

Context {R : numFieldType}.

Let cvgeyPnum {F : set (set \bar R)} {FF : Filter F} : [<->
  F --> +oo;
  forall A, A \is Num.real -> \forall x \near F, A%:E <= x;
  forall A, A \is Num.real -> \forall x \near F, A%:E < x;
  \forall A \near +oo%R, \forall x \near F, A%:E < x;
  \forall A \near +oo%R, \forall x \near F, A%:E <= x ].
Proof.
tfae; first by move=> Foo A Areal; apply: Foo; apply: ereal_nbhs_pinfty_ge.
-
 move=> AF A Areal; near +oo_R => B.
  by near do rewrite (@lt_le_trans _ _ B%:E) ?lte_fin//; apply: AF.
-
 by move=> Foo; near do apply: Foo => //.
-
 by apply: filterS => ?; apply: filterS => ?; apply: ltW.
case=> [A [AR AF]] P [x [xR Px]]; near +oo_R => B.
by near do [apply: Px; rewrite (@lt_le_trans _ _ B%:E) ?lte_fin//]; apply: AF.
Unshelve.
all: end_near.
Qed.

Let cvgeNyPnum {F : set (set \bar R)} {FF : Filter F} : [<->
  F --> -oo;
  forall A, A \is Num.real -> \forall x \near F, A%:E >= x;
  forall A, A \is Num.real -> \forall x \near F, A%:E > x;
  \forall A \near -oo%R, \forall x \near F, A%:E > x;
  \forall A \near -oo%R, \forall x \near F, A%:E >= x ].
Proof.
tfae; first by move=> Foo A Areal; apply: Foo; apply: ereal_nbhs_ninfty_le.
-
 move=> AF A Areal; near -oo_R => B.
  by near do rewrite (@le_lt_trans _ _ B%:E) ?lte_fin//; apply: AF.
-
 by move=> Foo; near do apply: Foo => //.
-
 by apply: filterS => ?; apply: filterS => ?; apply: ltW.
case=> [A [AR AF]] P [x [xR Px]]; near -oo_R => B.
by near do [apply: Px; rewrite (@le_lt_trans _ _ B%:E) ?lte_fin//]; apply: AF.
Unshelve.
all: end_near.
Qed.

Context {T} {F : set (set T)} {FF : Filter F}.
Implicit Types (f : T -> \bar R) (u : T -> R).

Lemma cvgeyPger f :
  f @ F --> +oo <-> forall A, A \is Num.real -> \forall x \near F, A%:E <= f x.
Proof.
exact: (cvgeyPnum 0%N 1%N).
Qed.

Lemma cvgeyPgtr f :
  f @ F --> +oo <-> forall A, A \is Num.real -> \forall x \near F, A%:E < f x.
Proof.
exact: (cvgeyPnum 0%N 2%N).
Qed.

Lemma cvgeyPgty f :
  f @ F --> +oo <-> \forall A \near +oo%R, \forall x \near F, A%:E < f x.
Proof.
exact: (cvgeyPnum 0%N 3%N).
Qed.

Lemma cvgeyPgey f :
  f @ F --> +oo <-> \forall A \near +oo%R, \forall x \near F, A%:E <= f x.
Proof.
exact: (cvgeyPnum 0%N 4%N).
Qed.

Lemma cvgeNyPler f :
  f @ F --> -oo <-> forall A, A \is Num.real -> \forall x \near F, A%:E >= f x.
Proof.
exact: (cvgeNyPnum 0%N 1%N).
Qed.

Lemma cvgeNyPltr f :
  f @ F --> -oo <-> forall A, A \is Num.real -> \forall x \near F, A%:E > f x.
Proof.
exact: (cvgeNyPnum 0%N 2%N).
Qed.

Lemma cvgeNyPltNy f :
  f @ F --> -oo <-> \forall A \near -oo%R, \forall x \near F, A%:E > f x.
Proof.
exact: (cvgeNyPnum 0%N 3%N).
Qed.

Lemma cvgeNyPleNy f :
  f @ F --> -oo <-> \forall A \near -oo%R, \forall x \near F, A%:E >= f x.
Proof.
exact: (cvgeNyPnum 0%N 4%N).
Qed.

Lemma cvgey_ger f :
  f @ F --> +oo -> forall A, A \is Num.real -> \forall x \near F, A%:E <= f x.
Proof.
by rewrite cvgeyPger.
Qed.

Lemma cvgey_gtr f :
  f @ F --> +oo -> forall A, A \is Num.real -> \forall x \near F, A%:E < f x.
Proof.
by rewrite cvgeyPgtr.
Qed.

Lemma cvgeNy_ler f :
  f @ F --> -oo -> forall A, A \is Num.real -> \forall x \near F, A%:E >= f x.
Proof.
by rewrite cvgeNyPler.
Qed.

Lemma cvgeNy_ltr f :
  f @ F --> -oo -> forall A, A \is Num.real -> \forall x \near F, A%:E > f x.
Proof.
by rewrite cvgeNyPltr.
Qed.

Lemma cvgNey f : (\- f @ F --> +oo) <-> (f @ F --> -oo).
Proof.
rewrite cvgeNyPler cvgeyPger; split=> Foo A Areal;
by near do rewrite -lee_opp2 ?oppeK; apply: Foo; rewrite rpredN.
Unshelve.
all: end_near.
Qed.

Lemma cvgNeNy f : (\- f @ F --> -oo) <-> (f @ F --> +oo).
Proof.
by rewrite -cvgNey (_ : \- \- f = f)//; apply/funeqP => x /=; rewrite oppeK.
Qed.

Lemma cvgeryP u : ((u x)%:E @[x --> F] --> +oo) <-> (u @ F --> +oo%R).
Proof.
split=> [/cvgeyPger|/cvgryPger] Foo.
  by apply/cvgryPger => A Ar; near do rewrite -lee_fin; apply: Foo.
by apply/cvgeyPger => A Ar; near do rewrite lee_fin; apply: Foo.
Unshelve.
all: end_near.
Qed.

Lemma cvgerNyP u : ((u x)%:E @[x --> F] --> -oo) <-> (u @ F --> -oo%R).
Proof.
split=> [/cvgeNyPler|/cvgrNyPler] Foo.
  by apply/cvgrNyPler => A Ar; near do rewrite -lee_fin; apply: Foo.
by apply/cvgeNyPler => A Ar; near do rewrite lee_fin; apply: Foo.
Unshelve.
all: end_near.
Qed.

End ecvg_infty_numField.

Section ecvg_infty_realField.
Local Open Scope ereal_scope.
Context {R : realFieldType}.
Context {T} {F : set (set T)} {FF : Filter F} (f : T -> \bar R).

Lemma cvgeyPge : f @ F --> +oo <-> forall A, \forall x \near F, A%:E <= f x.
Proof.
by rewrite cvgeyPger; under eq_forall do rewrite num_real; split=> + *; apply.
Qed.

Lemma cvgeyPgt : f @ F --> +oo <-> forall A, \forall x \near F, A%:E < f x.
Proof.
by rewrite cvgeyPgtr; under eq_forall do rewrite num_real; split=> + *; apply.
Qed.

Lemma cvgeNyPle : f @ F --> -oo <-> forall A, \forall x \near F, A%:E >= f x.
Proof.
by rewrite cvgeNyPler; under eq_forall do rewrite num_real; split=> + *; apply.
Qed.

Lemma cvgeNyPlt : f @ F --> -oo <-> forall A, \forall x \near F, A%:E > f x.
Proof.
by rewrite cvgeNyPltr; under eq_forall do rewrite num_real; split=> + *; apply.
Qed.

Lemma cvgey_
Intermediate Coq File (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 4.1MiB file on GitHub Actions Artifacts under build.log)
ing/_build_ci/analysis
MINIMIZER_DEBUG_EXTRA: exec: /github/workspace/builds/coq/coq-failing/_install_ci/bin/coqc.orig --print-version 
MINIMIZER_DEBUG: info: /tmp/tmp-coqbot-minimizer.v5qMtkcpNa
MINIMIZER_DEBUG: files: 
MINIMIZER_DEBUG_EXTRA: coqc: /github/workspace/builds/coq/coq-failing/_install_ci/bin/////coqc
MINIMIZER_DEBUG_EXTRA: coqpath: 
MINIMIZER_DEBUG_EXTRA: pwd: PWD=/github/workspace/builds/coq/coq-failing/_build_ci/analysis
MINIMIZER_DEBUG_EXTRA: exec: /github/workspace/builds/coq/coq-failing/_install_ci/bin/coqc.orig --print-version 
MINIMIZER_DEBUG: info: /tmp/tmp-coqbot-minimizer.DqsjCUW5zQ
MINIMIZER_DEBUG: files: 
MINIMIZER_DEBUG_EXTRA: coqc: /github/workspace/builds/coq/coq-failing/_install_ci/bin/////coqc
MINIMIZER_DEBUG_EXTRA: coqpath: 
MINIMIZER_DEBUG_EXTRA: pwd: PWD=/github/workspace/builds/coq/coq-failing/_build_ci/analysis
MINIMIZER_DEBUG_EXTRA: exec: /github/workspace/builds/coq/coq-failing/_install_ci/bin/coqc.orig --print-version 
MINIMIZER_DEBUG: info: /tmp/tmp-coqbot-minimizer.tSEQioLJvM
MINIMIZER_DEBUG: files: 
COQC theories/trigo.v
MINIMIZER_DEBUG_EXTRA: coqc: /github/workspace/builds/coq/coq-failing/_install_ci/bin/////coqc
MINIMIZER_DEBUG_EXTRA: coqpath: 
MINIMIZER_DEBUG_EXTRA: pwd: PWD=/github/workspace/builds/coq/coq-failing/_build_ci/analysis
MINIMIZER_DEBUG_EXTRA: exec: /github/workspace/builds/coq/coq-failing/_install_ci/bin/coqc.orig -q -w -parsing -w +undeclared-scope -w +non-primitive-record -w -ambiguous-paths -w -redundant-canonical-projection -w -projection-no-head-constant -w -deprecated-native-compiler-option -native-compiler ondemand -R /github/workspace/builds/coq/coq-failing/_build_ci/analysis/classical mathcomp.classical -R /github/workspace/builds/coq/coq-failing/_build_ci/analysis/theories mathcomp.analysis theories/trigo.v 
MINIMIZER_DEBUG: info: /tmp/tmp-coqbot-minimizer.tcDPH9prRy
MINIMIZER_DEBUG: files:  theories/trigo.v
File "./theories/trigo.v", line 94, characters 55-63:
Warning: Notation ler_addl is deprecated since mathcomp 1.17.0.
Use lerDl instead.
[deprecated-syntactic-definition-since-mathcomp-1.17.0,deprecated-since-mathcomp-1.17.0,deprecated-syntactic-definition,deprecated,default]
File "./theories/trigo.v", line 94, characters 55-63:
Warning: Notation ler_addl is deprecated since mathcomp 1.17.0.
Use lerDl instead.
[deprecated-syntactic-definition-since-mathcomp-1.17.0,deprecated-since-mathcomp-1.17.0,deprecated-syntactic-definition,deprecated,default]
File "./theories/trigo.v", line 94, characters 55-63:
Warning: Notation ler_addl is deprecated since mathcomp 1.17.0.
Use lerDl instead.
[deprecated-syntactic-definition-since-mathcomp-1.17.0,deprecated-since-mathcomp-1.17.0,deprecated-syntactic-definition,deprecated,default]
File "./theories/trigo.v", line 96, characters 26-41:
Warning: Notation ltr_distlC_addr is deprecated since mathcomp 1.17.0.
Use ltr_distlCDr instead.
[deprecated-syntactic-definition-since-mathcomp-1.17.0,deprecated-since-mathcomp-1.17.0,deprecated-syntactic-definition,deprecated,default]
File "./theories/trigo.v", line 101, characters 56-65:
Warning: Notation ler_add2r is deprecated since mathcomp 1.17.0.
Use lerD2r instead.
[deprecated-syntactic-definition-since-mathcomp-1.17.0,deprecated-since-mathcomp-1.17.0,deprecated-syntactic-definition,deprecated,default]
File "./theories/trigo.v", line 101, characters 56-65:
Warning: Notation ler_add2r is deprecated since mathcomp 1.17.0.
Use lerD2r instead.
[deprecated-syntactic-definition-since-mathcomp-1.17.0,deprecated-since-mathcomp-1.17.0,deprecated-syntactic-definition,deprecated,default]
File "./theories/trigo.v", line 101, characters 56-65:
Warning: Notation ler_add2r is deprecated since mathcomp 1.17.0.
Use lerD2r instead.
[deprecated-syntactic-definition-since-mathcomp-1.17.0,deprecated-since-mathcomp-1.17.0,deprecated-syntactic-definition,deprecated,default]
File "./theories/trigo.v", line 361, characters 26-34:
Warning: Notation ler_addl is deprecated since mathcomp 1.17.0.
Use lerDl instead.
[deprecated-syntactic-definition-since-mathcomp-1.17.0,deprecated-since-mathcomp-1.17.0,deprecated-syntactic-definition,deprecated,default]
File "./theories/trigo.v", line 361, characters 26-34:
Warning: Notation ler_addl is deprecated since mathcomp 1.17.0.
Use lerDl instead.
[deprecated-syntactic-definition-since-mathcomp-1.17.0,deprecated-since-mathcomp-1.17.0,deprecated-syntactic-definition,deprecated,default]
File "./theories/trigo.v", line 361, characters 26-34:
Warning: Notation ler_addl is deprecated since mathcomp 1.17.0.
Use lerDl instead.
[deprecated-syntactic-definition-since-mathcomp-1.17.0,deprecated-since-mathcomp-1.17.0,deprecated-syntactic-definition,deprecated,default]
File "./theories/trigo.v", line 365, characters 18-26:
Warning: Notation ler_oppl is deprecated since mathcomp 1.17.0.
Use lerNl instead.
[deprecated-syntactic-definition-since-mathcomp-1.17.0,deprecated-since-mathcomp-1.17.0,deprecated-syntactic-definition,deprecated,default]
File "./theories/trigo.v", line 365, characters 18-26:
Warning: Notation ler_oppl is deprecated since mathcomp 1.17.0.
Use lerNl instead.
[deprecated-syntactic-definition-since-mathcomp-1.17.0,deprecated-since-mathcomp-1.17.0,deprecated-syntactic-definition,deprecated,default]
File "./theories/trigo.v", line 365, characters 18-26:
Warning: Notation ler_oppl is deprecated since mathcomp 1.17.0.
Use lerNl instead.
[deprecated-syntactic-definition-since-mathcomp-1.17.0,deprecated-since-mathcomp-1.17.0,deprecated-syntactic-definition,deprecated,default]
File "./theories/trigo.v", line 373, characters 26-34:
Warning: Notation ler_addr is deprecated since mathcomp 1.17.0.
Use lerDr instead.
[deprecated-syntactic-definition-since-mathcomp-1.17.0,deprecated-since-mathcomp-1.17.0,deprecated-syntactic-definition,deprecated,default]
File "./theories/trigo.v", line 373, characters 26-34:
Warning: Notation ler_addr is deprecated since mathcomp 1.17.0.
Use lerDr instead.
[deprecated-syntactic-definition-since-mathcomp-1.17.0,deprecated-since-mathcomp-1.17.0,deprecated-syntactic-definition,deprecated,default]
File "./theories/trigo.v", line 373, characters 26-34:
Warning: Notation ler_addr is deprecated since mathcomp 1.17.0.
Use lerDr instead.
[deprecated-syntactic-definition-since-mathcomp-1.17.0,deprecated-since-mathcomp-1.17.0,deprecated-syntactic-definition,deprecated,default]
File "./theories/trigo.v", line 377, characters 18-26:
Warning: Notation ler_oppl is deprecated since mathcomp 1.17.0.
Use lerNl instead.
[deprecated-syntactic-definition-since-mathcomp-1.17.0,deprecated-since-mathcomp-1.17.0,deprecated-syntactic-definition,deprecated,default]
File "./theories/trigo.v", line 377, characters 18-26:
Warning: Notation ler_oppl is deprecated since mathcomp 1.17.0.
Use lerNl instead.
[deprecated-syntactic-definition-since-mathcomp-1.17.0,deprecated-since-mathcomp-1.17.0,deprecated-syntactic-definition,deprecated,default]
File "./theories/trigo.v", line 377, characters 18-26:
Warning: Notation ler_oppl is deprecated since mathcomp 1.17.0.
Use lerNl instead.
[deprecated-syntactic-definition-since-mathcomp-1.17.0,deprecated-since-mathcomp-1.17.0,deprecated-syntactic-definition,deprecated,default]
polynomial not in the ideal
File "./theories/trigo.v", line 390, characters 0-56:
Error: No applicable tactic.

Command exited with non-zero status 1
theories/trigo.vo (real: 3.66, user: 3.46, sys: 0.19, mem: 757476 ko)
make[3]: *** [Makefile.coq:847: theories/trigo.vo] Error 1
make[3]: *** [theories/trigo.vo] Deleting file 'theories/trigo.glob'
make[2]: *** [Makefile.coq:417: all] Error 2
make[2]: Leaving directory '/github/workspace/builds/coq/coq-failing/_build_ci/analysis'
make[1]: *** [Makefile.common:63: this-build] Error 2
make[1]: Leaving directory '/github/workspace/builds/coq/coq-failing/_build_ci/analysis'
Aggregating timing log...
    Time |  Peak Mem | File Name            
--------------------------------------------
0m03.46s | 757476 ko | Total Time / Peak Mem
--------------------------------------------
0m03.46s | 757476 ko | trigo.vo             
make: *** [Makefile.ci:172: ci-analysis] Error 2
/github/workspace/builds/coq /github/workspace
::endgroup::
Minimization Log (truncated to last 8.0KiB; full 334KiB file on GitHub Actions Artifacts under bug.log)
7.0,deprecated-syntactic-definition,deprecated,default]
File "/tmp/tmpib8bf5k_/mathcomp/analysis/trigo.v", line 2872, characters 32-46:
Warning: Notation ltr_pdivl_mulr is deprecated since mathcomp 1.17.0.
Use ltr_pdivlMr instead.
[deprecated-syntactic-definition-since-mathcomp-1.17.0,deprecated-since-mathcomp-1.17.0,deprecated-syntactic-definition,deprecated,default]
File "/tmp/tmpib8bf5k_/mathcomp/analysis/trigo.v", line 2972, characters 48-57:
Warning: Notation ler_pmull is deprecated since mathcomp 1.17.0.
Use ler_pMl instead.
[deprecated-syntactic-definition-since-mathcomp-1.17.0,deprecated-since-mathcomp-1.17.0,deprecated-syntactic-definition,deprecated,default]
File "/tmp/tmpib8bf5k_/mathcomp/analysis/trigo.v", line 2972, characters 48-57:
Warning: Notation ler_pmull is deprecated since mathcomp 1.17.0.
Use ler_pMl instead.
[deprecated-syntactic-definition-since-mathcomp-1.17.0,deprecated-since-mathcomp-1.17.0,deprecated-syntactic-definition,deprecated,default]
File "/tmp/tmpib8bf5k_/mathcomp/analysis/trigo.v", line 2972, characters 48-57:
Warning: Notation ler_pmull is deprecated since mathcomp 1.17.0.
Use ler_pMl instead.
[deprecated-syntactic-definition-since-mathcomp-1.17.0,deprecated-since-mathcomp-1.17.0,deprecated-syntactic-definition,deprecated,default]
File "/tmp/tmpib8bf5k_/mathcomp/analysis/trigo.v", line 2991, characters 7-14:
Warning: Notation ltr_add is deprecated since mathcomp 1.17.0.
Use ltrD instead.
[deprecated-syntactic-definition-since-mathcomp-1.17.0,deprecated-since-mathcomp-1.17.0,deprecated-syntactic-definition,deprecated,default]
File "/tmp/tmpib8bf5k_/mathcomp/analysis/trigo.v", line 2991, characters 7-14:
Warning: Notation ltr_add is deprecated since mathcomp 1.17.0.
Use ltrD instead.
[deprecated-syntactic-definition-since-mathcomp-1.17.0,deprecated-since-mathcomp-1.17.0,deprecated-syntactic-definition,deprecated,default]
File "/tmp/tmpib8bf5k_/mathcomp/analysis/trigo.v", line 2991, characters 7-14:
Warning: Notation ltr_add is deprecated since mathcomp 1.17.0.
Use ltrD instead.
[deprecated-syntactic-definition-since-mathcomp-1.17.0,deprecated-since-mathcomp-1.17.0,deprecated-syntactic-definition,deprecated,default]
File "/tmp/tmpib8bf5k_/mathcomp/analysis/trigo.v", line 2992, characters 19-31:
Warning: Notation ler_dist_add is deprecated since mathcomp 1.17.0.
Use ler_distD instead.
[deprecated-syntactic-definition-since-mathcomp-1.17.0,deprecated-since-mathcomp-1.17.0,deprecated-syntactic-definition,deprecated,default]
File "/tmp/tmpib8bf5k_/mathcomp/analysis/trigo.v", line 3074, characters 65-75:
Warning: Notation ltr_spaddl is deprecated since mathcomp 1.17.0.
Use ltr_pwDl instead.
[deprecated-syntactic-definition-since-mathcomp-1.17.0,deprecated-since-mathcomp-1.17.0,deprecated-syntactic-definition,deprecated,default]
File "/tmp/tmpib8bf5k_/mathcomp/analysis/trigo.v", line 3074, characters 65-75:
Warning: Notation ltr_spaddl is deprecated since mathcomp 1.17.0.
Use ltr_pwDl instead.
[deprecated-syntactic-definition-since-mathcomp-1.17.0,deprecated-since-mathcomp-1.17.0,deprecated-syntactic-definition,deprecated,default]
File "/tmp/tmpib8bf5k_/mathcomp/analysis/trigo.v", line 3074, characters 65-75:
Warning: Notation ltr_spaddl is deprecated since mathcomp 1.17.0.
Use ltr_pwDl instead.
[deprecated-syntactic-definition-since-mathcomp-1.17.0,deprecated-since-mathcomp-1.17.0,deprecated-syntactic-definition,deprecated,default]
File "/tmp/tmpib8bf5k_/mathcomp/analysis/trigo.v", line 3238, characters 30-42:
Warning: Notation ler_norm_add is deprecated since mathcomp 1.17.0.
Use ler_normD instead.
[deprecated-syntactic-definition-since-mathcomp-1.17.0,deprecated-since-mathcomp-1.17.0,deprecated-syntactic-definition,deprecated,default]
File "/tmp/tmpib8bf5k_/mathcomp/analysis/trigo.v", line 3238, characters 30-42:
Warning: Notation ler_norm_add is deprecated since mathcomp 1.17.0.
Use ler_normD instead.
[deprecated-syntactic-definition-since-mathcomp-1.17.0,deprecated-since-mathcomp-1.17.0,deprecated-syntactic-definition,deprecated,default]
File "/tmp/tmpib8bf5k_/mathcomp/analysis/trigo.v", line 3239, characters 11-18:
Warning: Notation ler_add is deprecated since mathcomp 1.17.0.
Use lerD instead.
[deprecated-syntactic-definition-since-mathcomp-1.17.0,deprecated-since-mathcomp-1.17.0,deprecated-syntactic-definition,deprecated,default]
File "/tmp/tmpib8bf5k_/mathcomp/analysis/trigo.v", line 3239, characters 11-18:
Warning: Notation ler_add is deprecated since mathcomp 1.17.0.
Use lerD instead.
[deprecated-syntactic-definition-since-mathcomp-1.17.0,deprecated-since-mathcomp-1.17.0,deprecated-syntactic-definition,deprecated,default]
File "/tmp/tmpib8bf5k_/mathcomp/analysis/trigo.v", line 3239, characters 11-18:
Warning: Notation ler_add is deprecated since mathcomp 1.17.0.
Use lerD instead.
[deprecated-syntactic-definition-since-mathcomp-1.17.0,deprecated-since-mathcomp-1.17.0,deprecated-syntactic-definition,deprecated,default]
File "/tmp/tmpib8bf5k_/mathcomp/analysis/trigo.v", line 3308, characters 55-78:
Error:
In environment
K : numFieldType
m, n : nat
The term "ball_ [eta normr]" has type "?t -> ?R -> set ?t"
while it is expected to have type
 "[pseudoMetricType K of 'M_(m.+1, n.+1)] ->
  K -> [pseudoMetricType K of 'M_(m.+1, n.+1)] -> Prop".


�[93mIntermediate code not saved.�[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 replace Qed Obligation with Admit Obligations
�[92m
Admitting Qed Obligations successful.�[0m
Failed to do everything at once; trying one at a time.
Admitting Qed Obligations unsuccessful.
No successful changes.

I will now attempt to replace Qeds with Admitteds

Non-fatal error: Failed to admit Qeds and preserve the error.  
The new error was:
File "/tmp/tmpgytxdtzr/mathcomp/analysis/trigo.v", line 539, characters 34-40:
Warning: Cast types are ignored in patterns
[cast-in-pattern,automation,default]
File "/tmp/tmpgytxdtzr/mathcomp/analysis/trigo.v", line 539, characters 34-40:
Warning: Cast types are ignored in patterns
[cast-in-pattern,automation,default]
File "/tmp/tmpgytxdtzr/mathcomp/analysis/trigo.v", line 541, characters 34-41:
Warning: Cast types are ignored in patterns
[cast-in-pattern,automation,default]
File "/tmp/tmpgytxdtzr/mathcomp/analysis/trigo.v", line 541, characters 34-41:
Warning: Cast types are ignored in patterns
[cast-in-pattern,automation,default]
File "/tmp/tmpgytxdtzr/mathcomp/analysis/trigo.v", line 543, characters 34-40:
Warning: Cast types are ignored in patterns
[cast-in-pattern,automation,default]
File "/tmp/tmpgytxdtzr/mathcomp/analysis/trigo.v", line 543, characters 34-40:
Warning: Cast types are ignored in patterns
[cast-in-pattern,automation,default]
File "/tmp/tmpgytxdtzr/mathcomp/analysis/trigo.v", line 545, characters 34-41:
Warning: Cast types are ignored in patterns
[cast-in-pattern,automation,default]
File "/tmp/tmpgytxdtzr/mathcomp/analysis/trigo.v", line 545, characters 34-41:
Warning: Cast types are ignored in patterns
[cast-in-pattern,automation,default]
File "/tmp/tmpgytxdtzr/mathcomp/analysis/trigo.v", line 561, characters 0-9:
Warning: Let definition cvgryPnum declared as an axiom.
[let-as-axiom,vernacular,default]
File "/tmp/tmpgytxdtzr/mathcomp/analysis/trigo.v", line 569, characters 0-9:
Warning: Let definition cvgrNyPnum declared as an axiom.
[let-as-axiom,vernacular,default]
File "/tmp/tmpgytxdtzr/mathcomp/analysis/trigo.v", line 675, characters 0-9:
Warning: Let definition cvgeyPnum declared as an axiom.
[let-as-axiom,vernacular,default]
File "/tmp/tmpgytxdtzr/mathcomp/analysis/trigo.v", line 683, characters 0-9:
Warning: Let definition cvgeNyPnum declared as an axiom.
[let-as-axiom,vernacular,default]
File "/tmp/tmpgytxdtzr/mathcomp/analysis/trigo.v", line 1944, characters 0-9:
Warning: Let definition cvgrP declared as an axiom.
[let-as-axiom,vernacular,default]
File "/tmp/tmpgytxdtzr/mathcomp/analysis/trigo.v", line 2588, characters 0-46:
Error: Flag "rename" expected to rename J into F.


�[93mIntermediate code not saved.�[0m
Failed to do everything at once; trying 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.

@SkySkimmer SkySkimmer added the request: full CI Use this label when you want your next push to trigger a full CI. label Nov 16, 2023
@coqbot-app coqbot-app bot removed the request: full CI Use this label when you want your next push to trigger a full CI. label Nov 16, 2023
@SkySkimmer SkySkimmer added the request: full CI Use this label when you want your next push to trigger a full CI. label Nov 16, 2023
@coqbot-app coqbot-app bot removed the request: full CI Use this label when you want your next push to trigger a full CI. label Nov 16, 2023
@SkySkimmer SkySkimmer added the request: full CI Use this label when you want your next push to trigger a full CI. label Nov 16, 2023
@coqbot-app coqbot-app bot removed the request: full CI Use this label when you want your next push to trigger a full CI. label Nov 16, 2023
Copy link
Contributor
coqbot-app bot commented Nov 16, 2023

Minimized File /github/workspace/builds/coq/coq-failing/_build_ci/analysis/theories/trigo.v (from ci-analysis) (interrupted by timeout, being automatically continued) (full log on GitHub Actions)

Partially Minimized Coq File (timeout) (truncated to 32KiB; full 33KiB file on GitHub Actions Artifacts under bug.v)
(* -*- mode: coq; coq-prog-args: ("-emacs" "-q" "-w" "-parsing" "-w" "+undeclared-scope" "-w" "+non-primitive-record" "-w" "-ambiguous-paths" "-w" "-redundant-canonical-projection" "-w" "-projection-no-head-constant" "-w" "-deprecated-native-compiler-option" "-native-compiler" "ondemand" "-R" "/github/workspace/builds/coq/coq-failing/_build_ci/analysis/classical" "mathcomp.classical" "-R" "/github/workspace/builds/coq/coq-failing/_build_ci/analysis/theories" "mathcomp.analysis" "-Q" "/github/workspace/cwd" "Top" "-Q" "/github/workspace/builds/coq/coq-failing/_install_ci/lib/coq/user-contrib/HB" "HB" "-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/elpi" "elpi" "-Q" "/github/workspace/builds/coq/coq-failing/_install_ci/lib/coq/user-contrib/mathcomp" "mathcomp" "-top" "Top.bug_01") -*- *)
(* File reduced by coq-bug-minimizer from original input, then from 1255 lines to 42 lines, then from 55 lines to 816 lines, then from 821 lines to 56 lines, then from 69 lines to 1760 lines, then from 1765 lines to 123 lines, then from 136 lines to 6941 lines, then from 6944 lines to 5747 lines, then from 5452 lines to 1132 lines *)
(* coqc version 8.19+alpha compiled with OCaml 4.14.1
   coqtop version b6bf0e601990:/builds/coq/coq/_build/default,(HEAD detached at d939b0f) (d939b0f67e958b71c8283ed71d1bb5d0fa515c69)
   Expected coqc runtime on this file: 2.061 sec *)
Require Coq.Init.Ltac.
Require Coq.nsatz.Nsatz.
Require Coq.ssr.ssreflect.
Require mathcomp.ssreflect.ssreflect.
Require Coq.ssr.ssrfun.
Require mathcomp.ssreflect.ssrnotations.
Require mathcomp.ssreflect.ssrfun.
Require Coq.ssr.ssrbool.
Require mathcomp.ssreflect.ssrbool.
Require mathcomp.ssreflect.eqtype.
Require Coq.NArith.BinNat.
Require Coq.PArith.BinPos.
Require Coq.NArith.Ndec.
Require Coq.setoid_ring.Ring.
Require mathcomp.ssreflect.ssrnat.
Require mathcomp.ssreflect.seq.
Require mathcomp.ssreflect.choice.
Require mathcomp.ssreflect.path.
Require mathcomp.ssreflect.div.
Require mathcomp.ssreflect.fintype.
Require mathcomp.ssreflect.fingraph.
Require mathcomp.ssreflect.tuple.
Require mathcomp.ssreflect.finfun.
Require mathcomp.ssreflect.bigop.
Require mathcomp.ssreflect.prime.
Require mathcomp.ssreflect.finset.
Require mathcomp.ssreflect.order.
Require mathcomp.ssreflect.binomial.
Require mathcomp.ssreflect.generic_quotient.
Require mathcomp.ssreflect.ssrAC.
Require mathcomp.ssreflect.all_ssreflect.
Require mathcomp.algebra.ssralg.
Require mathcomp.algebra.ring_quotient.
Require mathcomp.algebra.countalg.
Require mathcomp.fingroup.fingroup.
Require mathcomp.algebra.poly.
Require mathcomp.algebra.ssrnum.
Require mathcomp.algebra.ssrint.
Require mathcomp.classical.boolp.
Require mathcomp.fingroup.morphism.
Require mathcomp.fingroup.perm.
Require mathcomp.fingroup.automorphism.
Require mathcomp.fingroup.quotient.
Require mathcomp.fingroup.action.
Require mathcomp.algebra.finalg.
Require mathcomp.algebra.polydiv.
Require mathcomp.algebra.zmodp.
Require mathcomp.algebra.matrix.
Require mathcomp.algebra.mxalgebra.
Require mathcomp.algebra.mxpoly.
Require mathcomp.algebra.polyXY.
Require mathcomp.algebra.vector.
Require mathcomp.algebra.qpoly.
Require Coq.setoid_ring.Field_theory.
Require Coq.setoid_ring.Field_tac.
Require mathcomp.algebra.rat.
Require mathcomp.algebra.intdiv.
Require mathcomp.algebra.interval.
Require mathcomp.algebra.fraction.
Require mathcomp.algebra.all_algebra.
Require mathcomp.finmap.finmap.
Require mathcomp.classical.mathcomp_extra.
Require mathcomp.classical.classical_sets.
Require Coq.Strings.String.
Require Coq.Bool.Bool.
Require Coq.Floats.PrimFloat.
Require Coq.Numbers.Cyclic.Int63.PrimInt63.
Require elpi.elpi.
Require HB.structures.
Require mathcomp.classical.functions.
Require mathcomp.classical.set_interval.
Require Coq.Setoids.Setoid.
Require mathcomp.analysis.reals.
Require mathcomp.classical.cardinality.
Require mathcomp.classical.fsbigop.
Require mathcomp.analysis.signed.
Require mathcomp.analysis.topology.
Require mathcomp.analysis.constructive_ereal.
Require mathcomp.analysis.ereal.
Require mathcomp.analysis.nsatz_realtype.
Require Coq.Logic.Epsilon.
Require Coq.Logic.FunctionalExtensionality.
Require Coq.Reals.RIneq.
Require Coq.Reals.Ranalysis1.
Require Coq.Reals.Raxioms.
Require Coq.Reals.Rbasic_fun.
Require Coq.Reals.Rdefinitions.
Require Coq.Reals.Reals.
Require Coq.Reals.Rsqrt_def.
Require Coq.Reals.Rtrigo1.
Require Coq.ZArith.Zwf.
Require mathcomp.field.falgebra.
Require mathcomp.analysis.prodnormedzmodule.
Require mathcomp.field.fieldext.
Require mathcomp.analysis.Rstruct.

Module Export AdmitTactic.
Module Import LocalFalse.
Inductive False : Prop := .
End LocalFalse.
Axiom proof_admitted : False.
Import Coq.Init.Ltac.
Tactic Notation "admit" := abstract case proof_admitted.
End AdmitTactic.
Module mathcomp_DOT_analysis_DOT_normedtype_WRAPPED.
Module Export normedtype.
Import mathcomp.ssreflect.all_ssreflect.
Import mathcomp.algebra.ssralg.
Import mathcomp.algebra.ssrint.
Import mathcomp.algebra.ssrnum.
Import mathcomp.finmap.finmap.
Import mathcomp.algebra.matrix.
Import mathcomp.algebra.rat.
Import mathcomp.algebra.interval.
Import mathcomp.algebra.zmodp.
Import mathcomp.algebra.vector.
Import mathcomp.field.fieldext.
Import mathcomp.field.falgebra.
Import mathcomp.classical.mathcomp_extra.
Import mathcomp.classical.boolp.
Import mathcomp.classical.classical_sets.
Import mathcomp.classical.functions.
Import mathcomp.classical.cardinality.
Import mathcomp.classical.set_interval.
Import mathcomp.analysis.Rstruct.
Import mathcomp.analysis.ereal.
Import mathcomp.analysis.reals.
Import mathcomp.analysis.signed.
Import mathcomp.analysis.topology.
Import mathcomp.analysis.prodnormedzmodule.

Reserved Notation "f @`[ a , b ]" (at level 20, b at level 9,
  format "f  @`[ a ,  b ]").
Reserved Notation "f @`] a , b [" (at level 20, b at level 9,
  format "f  @`] a ,  b [").
Reserved Notation "x ^'+" (at level 3, format "x ^'+").
Reserved Notation "x ^'-" (at level 3, format "x ^'-").
Reserved Notation "+oo_ R" (at level 3, format "+oo_ R").
Reserved Notation "-oo_ R" (at level 3, format "-oo_ R").
Reserved Notation "[ 'bounded' E | x 'in' A ]"
  (at level 0, x name, format "[ 'bounded'  E  |  x  'in'  A ]").
Reserved Notation "k .-lipschitz_on f"
  (at level 2, format "k .-lipschitz_on  f").
Reserved Notation "k .-lipschitz_ A f"
  (at level 2, A at level 0, format "k .-lipschitz_ A  f").
Reserved Notation "k .-lipschitz f" (at level 2, format "k .-lipschitz  f").
Reserved Notation "[ 'lipschitz' E | x 'in' A ]"
  (at level 0, x name, format "[ 'lipschitz'  E  |  x  'in'  A ]").
Reserved Notation "k *` A" (at level 40, left associativity, format "k  *`  A").

Set Implicit Arguments.
Unset Strict Implicit.
Unset Printing Implicit Defensive.
Import Order.TTheory.
Import GRing.Theory.
Import Num.Def.
Import Num.Theory.
Import numFieldTopology.Exports.

Local Open Scope classical_set_scope.
Local Open Scope ring_scope.
Definition pointed_of_zmodule (R : zmodType) : pointedType. exact (PointedType R 0). Defined.
Definition filtered_of_normedZmod (K : numDomainType) (R : normedZmodType K)
  : filteredType R. exact (Filtered.Pack (Filtered.Class
    (@Pointed.class (pointed_of_zmodule R))
    (nbhs_ball_ (ball_ (fun x => `|x|))))). Defined.

Section pseudoMetric_of_normedDomain.
Variables (K : numDomainType) (R : normedZmodType K).
Lemma ball_norm_center (x : R) (e : K) : 0 < e -> ball_ normr x e x.
Admitted.
Lemma ball_norm_symmetric (x y : R) (e : K) :
  ball_ normr x e y -> ball_ normr y e x.
Admitted.
Lemma ball_norm_triangle (x y z : R) (e1 e2 : K) :
  ball_ normr x e1 y -> ball_ normr y e2 z -> ball_ normr x (e1 + e2) z.
Admitted.
Definition pseudoMetric_of_normedDomain
  : PseudoMetric.mixin_of K (@entourage_ K R R (ball_ (fun x => `|x|))). exact (PseudoMetricMixin ball_norm_center ball_norm_symmetric ball_norm_triangle erefl). Defined.

Lemma nbhs_ball_normE :
  @nbhs_ball_ K R R (ball_ normr) = nbhs_ (entourage_ (ball_ normr)).
Admitted.
End pseudoMetric_of_normedDomain.

Lemma nbhsN (R : numFieldType) (x : R) : nbhs (- x) = -%R @ x.
Admitted.

Lemma nbhsNimage (R : numFieldType) (x : R) :
  nbhs (- x) = [set -%R @` A | A in nbhs x].
Admitted.

Lemma nearN (R : numFieldType) (x : R) (P : R -> Prop) :
  (\forall y \near - x, P y) <-> \near x, P (- x).
Admitted.

Lemma openN (R : numFieldType) (A : set R) :
  open A -> open [set - x | x in A].
Admitted.

Lemma closedN (R : numFieldType) (A : set R) :
  closed A -> closed [set - x | x in A].
Admitted.

Module PseudoMetricNormedZmodule.
Section ClassDef.
Variable R : numDomainType.
Record mixin_of (T : normedZmodType R) (ent : set (set (T * T)))
    (m : PseudoMetric.mixin_of R ent) := Mixin {
  _ : PseudoMetric.ball m = ball_ (fun x => `| x |) }.

Record class_of (T : Type) := Class {
  base : Num.NormedZmodule.class_of R T;
  pointed_mixin : Pointed.point_of T ;
  nbhs_mixin : Filtered.nbhs_of T T ;
  topological_mixin : @Topological.mixin_of T nbhs_mixin ;
  uniform_mixin : @Uniform.mixin_of T nbhs_mixin ;
  pseudoMetric_mixin :
    @PseudoMetric.mixin_of R T (Uniform.entourage uniform_mixin) ;
  mixin : @mixin_of (Num.NormedZmodule.Pack _ base) _ pseudoMetric_mixin
}.
Local Coercion base : class_of >-> Num.NormedZmodule.class_of.
Definition base2 T c := @PseudoMetric.Class _ _
    (@Uniform.Class _
      (@Topological.Class _
        (Filtered.Class
         (Pointed.Class (@base T c) (pointed_mixin c))
         (nbhs_mixin c))
        (topological_mixin c))
      (uniform_mixin c))
    (pseudoMetric_mixin c).
Local Coercion base2 : class_of >-> PseudoMetric.class_of.

Structure type (phR : phant R) :=
  Pack { sort; _ : class_of sort }.
Local Coercion sort : type >-> Sortclass.

Variables (phR : phant R) (T : Type) (cT : type phR).

Definition class := let: Pack _ c := cT return class_of cT in c.
Definition clone c of phant_id class c := @Pack phR T c.
Let xT := let: Pack T _ := cT in T.
Notation xclass := (class : class_of xT).
Definition pack (b0 : Num.NormedZmodule.class_of R T) lm0 um0
  (m0 : @mixin_of (@Num.NormedZmodule.Pack R (Phant R) T b0) lm0 um0) :=
  fun bT (b : Num.NormedZmodule.class_of R T)
      & phant_id (@Num.NormedZmodule.class R (Phant R) bT) b =>
  fun uT (u : PseudoMetric.class_of R T) & phant_id (@PseudoMetric.class R uT) u =>
  fun (m : @mixin_of (Num.NormedZmodule.Pack _ b) _ u) & phant_id m m0 =>
  @Pack phR T (@Class T b u u u u u m).

Definition eqType := @Equality.Pack cT xclass.
Definition choiceType := @Choice.Pack cT xclass.
Definition zmodType := @GRing.Zmodule.Pack cT xclass.
Definition normedZmodType := @Num.NormedZmodule.Pack R phR cT xclass.
Definition pointedType := @Pointed.Pack cT xclass.
Definition filteredType := @Filtered.Pack cT cT xclass.
Definition topologicalType := @Topological.Pack cT xclass.
Definition uniformType := @Uniform.Pack cT xclass.
Definition pseudoMetricType := @PseudoMetric.Pack R cT xclass.
Definition pointed_zmodType := @GRing.Zmodule.Pack pointedType xclass.
Definition filtered_zmodType := @GRing.Zmodule.Pack filteredType xclass.
Definition topological_zmodType := @GRing.Zmodule.Pack topologicalType xclass.
Definition uniform_zmodType := @GRing.Zmodule.Pack uniformType xclass.
Definition pseudoMetric_zmodType := @GRing.Zmodule.Pack pseudoMetricType xclass.
Definition pointed_normedZmodType := @Num.NormedZmodule.Pack R phR pointedType xclass.
Definition filtered_normedZmodType := @Num.NormedZmodule.Pack R phR filteredType xclass.
Definition topological_normedZmodType := @Num.NormedZmodule.Pack R phR topologicalType xclass.
Definition uniform_normedZmodType := @Num.NormedZmodule.Pack R phR uniformType xclass.
Definition pseudoMetric_normedZmodType := @Num.NormedZmodule.Pack R phR pseudoMetricType xclass.

End ClassDef.

Module Export Exports.
Coercion base : class_of >-> Num.NormedZmodule.class_of.
Coercion base2 : class_of >-> PseudoMetric.class_of.
Coercion sort : type >-> Sortclass.
Coercion eqType : type >-> Equality.type.
Canonical eqType.
Coercion choiceType : type >-> Choice.type.
Canonical choiceType.
Coercion zmodType : type >-> GRing.Zmodule.type.
Canonical zmodType.
Coercion normedZmodType : type >-> Num.NormedZmodule.type.
Canonical normedZmodType.
Coercion pointedType : type >-> Pointed.type.
Canonical pointedType.
Coercion filteredType : type >-> Filtered.type.
Canonical filteredType.
Coercion topologicalType : type >-> Topological.type.
Canonical topologicalType.
Coercion uniformType : type >-> Uniform.type.
Canonical uniformType.
Coercion pseudoMetricType : type >-> PseudoMetric.type.
Canonical pseudoMetricType.
Canonical pointed_zmodType.
Canonical filtered_zmodType.
Canonical topological_zmodType.
Canonical uniform_zmodType.
Canonical pseudoMetric_zmodType.
Canonical pointed_normedZmodType.
Canonical filtered_normedZmodType.
Canonical topological_normedZmodType.
Canonical uniform_normedZmodType.
Canonical pseudoMetric_normedZmodType.
Notation pseudoMetricNormedZmodType R := (type (Phant R)).
Notation PseudoMetricNormedZmodType R T m :=
  (@pack _ (Phant R) T _ _ _ m _ _ idfun _ _ idfun _ idfun).
Notation "[ 'pseudoMetricNormedZmodType' R 'of' T 'for' cT ]" :=
  (@clone _ (Phant R) T cT _ idfun)
  (at level 0, format "[ 'pseudoMetricNormedZmodType'  R  'of'  T  'for'  cT ]") :
  form_scope.
Notation "[ 'pseudoMetricNormedZmodType' R 'of' T ]" :=
  (@clone _ (Phant R) T _ _ idfun)
  (at level 0, format "[ 'pseudoMetricNormedZmodType'  R  'of'  T ]") : form_scope.
End Exports.

End PseudoMetricNormedZmodule.
Export PseudoMetricNormedZmodule.Exports.

Section pseudoMetricnormedzmodule_lemmas.
Context {K : numDomainType} {V : pseudoMetricNormedZmodType K}.

Local Notation ball_norm := (ball_ (@normr K V)).

Lemma ball_normE : ball_norm = ball.
Admitted.

End pseudoMetricnormedzmodule_lemmas.

Lemma bigcup_ballT {R : realType} : \bigcup_n ball (0%R : R) n%:R = setT.
Admitted.

Section Nbhs'.
Context {R : numDomainType} {T : pseudoMetricType R}.

Lemma ex_ball_sig (x : T) (P : set T) :
  ~ (forall eps : {posnum R}, ~ (ball x eps%:num `<=` ~` P)) ->
    {d : {posnum R} | ball x d%:num `<=` ~` P}.
Admitted.

Lemma nbhsC (x : T) (P : set T) :
  ~ (forall eps : {posnum R}, ~ (ball x eps%:num `<=` ~` P)) ->
  nbhs x (~` P).
Admitted.

Lemma nbhsC_ball (x : T) (P : set T) :
  nbhs x (~` P) -> {d : {posnum R} | ball x d%:num `<=` ~` P}.
Admitted.

Lemma nbhs_ex (x : T) (P : T -> Prop) : nbhs x P ->
  {d : {posnum R} | forall y, ball x d%:num y -> P y}.
Admitted.

End Nbhs'.

Lemma coord_continuous {K : numFieldType} m n i j :
  continuous (fun M : 'M[K]_(m, n) => M i j).
Admitted.

Global Instance Proper_dnbhs_numFieldType (R : numFieldType) (x : R) :
  ProperFilter x^'.
Admitted.

#[global] Hint Extern 0 (ProperFilter _^') =>
  (apply: Proper_dnbhs_numFieldType) : typeclass_instances.
Definition pinfty_nbhs (R : numFieldType) : set (set R). exact (fun P => exists M, M \is Num.real /\ forall x, M < x -> P x). 
10000
Defined.
Arguments pinfty_nbhs R : clear implicits.
Definition ninfty_nbhs (R : numFieldType) : set (set R). exact (fun P => exists M, M \is Num.real /\ forall x, x < M -> P x). Defined.
Arguments ninfty_nbhs R : clear implicits.

Notation "+oo_ R" := (pinfty_nbhs [numFieldType of R])
  (only parsing) : ring_scope.
Notation "-oo_ R" := (ninfty_nbhs [numFieldType of R])
  (only parsing) : ring_scope.

Notation "+oo" := (pinfty_nbhs _) : ring_scope.
Notation "-oo" := (ninfty_nbhs _) : ring_scope.

Section infty_nbhs_instances.
Context {R : numFieldType}.
Let R_topologicalType := [topologicalType of R].
Implicit Types r : R.

Global Instance proper_pinfty_nbhs : ProperFilter (pinfty_nbhs R).
Admitted.

Global Instance proper_ninfty_nbhs : ProperFilter (ninfty_nbhs R).
Admitted.

Lemma nbhs_pinfty_gt r : r \is Num.real -> \forall x \near +oo, r < x.
Admitted.

Lemma nbhs_pinfty_ge r : r \is Num.real -> \forall x \near +oo, r <= x.
Admitted.

Lemma nbhs_ninfty_lt r : r \is Num.real -> \forall x \near -oo, r > x.
Admitted.

Lemma nbhs_ninfty_le r : r \is Num.real -> \forall x \near -oo, r >= x.
Admitted.

Lemma nbhs_pinfty_real : \forall x \near +oo, x \is @Num.real R.
Admitted.

Lemma nbhs_ninfty_real : \forall x \near -oo, x \is @Num.real R.
Admitted.

Lemma pinfty_ex_gt (m : R) (A : set R) : m \is Num.real ->
  (\forall k \near +oo, A k) -> exists2 M, m < M & A M.
Admitted.

Lemma pinfty_ex_ge (m : R) (A : set R) : m \is Num.real ->
  (\forall k \near +oo, A k) -> exists2 M, m <= M & A M.
Admitted.

Lemma pinfty_ex_gt0 (A : set R) :
  (\forall k \near +oo, A k) -> exists2 M, M > 0 & A M.
Admitted.

Lemma near_pinfty_div2 (A : set R) :
  (\forall k \near +oo, A k) -> (\forall k \near +oo, A (k / 2)).
Admitted.

End infty_nbhs_instances.

#[global] Hint Extern 0 (is_true (_ < ?x)) => match goal with
  H : x \is_near _ |- _ => near: x; exact: nbhs_pinfty_gt end : core.
#[global] Hint Extern 0 (is_true (_ <= ?x)) => match goal with
  H : x \is_near _ |- _ => near: x; exact: nbhs_pinfty_ge end : core.
#[global] Hint Extern 0 (is_true (_ > ?x)) => match goal with
  H : x \is_near _ |- _ => near: x; exact: nbhs_ninfty_lt end : core.
#[global] Hint Extern 0 (is_true (_ >= ?x)) => match goal with
  H : x \is_near _ |- _ => near: x; exact: nbhs_ninfty_le end : core.
#[global] Hint Extern 0 (is_true (?x \is Num.real)) => match goal with
  H : x \is_near _ |- _ => near: x; exact: nbhs_pinfty_real end : core.
#[global] Hint Extern 0 (is_true (?x \is Num.real)) => match goal with
  H : x \is_near _ |- _ => near: x; exact: nbhs_ninfty_real end : core.

#[global] Hint Extern 0 (is_true (_ < ?x)%E) => match goal with
  H : x \is_near _ |- _ => near: x; exact: ereal_nbhs_pinfty_gt end : core.
#[global] Hint Extern 0 (is_true (_ <= ?x)%E) => match goal with
  H : x \is_near _ |- _ => near: x; exact: ereal_nbhs_pinfty_ge end : core.
#[global] Hint Extern 0 (is_true (_ > ?x)%E) => match goal with
  H : x \is_near _ |- _ => near: x; exact: ereal_nbhs_ninfty_lt end : core.
#[global] Hint Extern 0 (is_true (_ >= ?x)%E) => match goal with
  H : x \is_near _ |- _ => near: x; exact: ereal_nbhs_ninfty_le end : core.
#[global] Hint Extern 0 (is_true (fine ?x \is Num.real)) => match goal with
  H : x \is_near _ |- _ => near: x; exact: ereal_nbhs_pinfty_real end : core.
#[global] Hint Extern 0 (is_true (fine ?x \is Num.real)) => match goal with
  H : x \is_near _ |- _ => near: x; exact: ereal_nbhs_ninfty_real end : core.

Section cvg_infty_numField.
Context {R : numFieldType}.

Let cvgryPnum {F : set (set R)} {FF : Filter F} : [<->
  F --> +oo;
  forall A, A \is Num.real -> \forall x \near F, A <= x;
  forall A, A \is Num.real -> \forall x \near F, A < x;
  \forall A \near +oo, \forall x \near F, A < x;
  \forall A \near +oo, \forall x \near F, A <= x ].
Admitted.

Let cvgrNyPnum {F : set (set R)} {FF : Filter F} : [<->
  F --> -oo;
  forall A, A \is Num.real -> \forall x \near F, A >= x;
  forall A, A \is Num.real -> \forall x \near F, A > x;
  \forall A \near -oo, \forall x \near F, A > x;
  \forall A \near -oo, \forall x \near F, A >= x ].
Admitted.

Context {T} {F : set (set T)} {FF : Filter F}.
Implicit Types f : T -> R.

Lemma cvgryPger f :
  f @ F --> +oo <-> forall A, A \is Num.real -> \forall x \near F, A <= f x.
Admitted.

Lemma cvgryPgtr f :
  f @ F --> +oo <-> forall A, A \is Num.real -> \forall x \near F, A < f x.
Admitted.

Lemma cvgryPgty f :
  f @ F --> +oo <-> \forall A \near +oo, \forall x \near F, A < f x.
Admitted.

Lemma cvgryPgey f :
  f @ F --> +oo <-> \forall A \near +oo, \forall x \near F, A <= f x.
Admitted.

Lemma cvgrNyPler f :
  f @ F --> -oo <-> forall A, A \is Num.real -> \forall x \near F, A >= f x.
Admitted.

Lemma cvgrNyPltr f :
  f @ F --> -oo <-> forall A, A \is Num.real -> \forall x \near F, A > f x.
Admitted.

Lemma cvgrNyPltNy f :
  f @ F --> -oo <-> \forall A \near -oo, \forall x \near F, A > f x.
Admitted.

Lemma cvgrNyPleNy f :
  f @ F --> -oo <-> \forall A \near -oo, \forall x \near F, A >= f x.
Admitted.

Lemma cvgry_ger f :
  f @ F --> +oo -> forall A, A \is Num.real -> \forall x \near F, A <= f x.
Admitted.

Lemma cvgry_gtr f :
  f @ F --> +oo -> forall A, A \is Num.real -> \forall x \near F, A < f x.
Admitted.

Lemma cvgrNy_ler f :
  f @ F --> -oo -> forall A, A \is Num.real -> \forall x \near F, A >= f x.
Admitted.

Lemma cvgrNy_ltr f :
  f @ F --> -oo -> forall A, A \is Num.real -> \forall x \near F, A > f x.
Admitted.

Lemma cvgNry f : (- f @ F --> +oo) <-> (f @ F --> -oo).
Admitted.

Lemma cvgNrNy f : (- f @ F --> -oo) <-> (f @ F --> +oo).
Admitted.

End cvg_infty_numField.

Section cvg_infty_realField.
Context {R : realFieldType}.
Context {T} {F : set (set T)} {FF : Filter F} (f : T -> R).

Lemma cvgryPge : f @ F --> +oo <-> forall A, \forall x \near F, A <= f x.
Admitted.

Lemma cvgryPgt : f @ F --> +oo <-> forall A, \forall x \near F, A < f x.
Admitted.

Lemma cvgrNyPle : f @ F --> -oo <-> forall A, \forall x \near F, A >= f x.
Admitted.

Lemma cvgrNyPlt : f @ F --> -oo <-> forall A, \forall x \near F, A > f x.
Admitted.

Lemma cvgry_ge : f @ F --> +oo -> forall A, \forall x \near F, A <= f x.
Admitted.

Lemma cvgry_gt : f @ F --> +oo -> forall A, \forall x \near F, A < f x.
Admitted.

Lemma cvgrNy_le : f @ F --> -oo -> forall A, \forall x \near F, A >= f x.
Admitted.

Lemma cvgrNy_lt : f @ F --> -oo -> forall A, \forall x \near F, A > f x.
Admitted.

End cvg_infty_realField.

Section ecvg_infty_numField.

End ecvg_infty_numField.

Section ecvg_infty_realField.

End ecvg_infty_realField.

Module NormedModule.

Record mixin_of (K : numDomainType)
  (V : pseudoMetricNormedZmodType K) (scale : K -> V -> V) := Mixin {
  _ : forall (l : K) (x : V), `| scale l x | = `| l | * `| x |;
}.

Section ClassDef.

Variable K : numDomainType.

Record class_of (T : Type) := Class {
  base : PseudoMetricNormedZmodule.class_of K T ;
  lmodmixin : GRing.Lmodule.mixin_of K (GRing.Zmodule.Pack base) ;
  mixin : @mixin_of K (PseudoMetricNormedZmodule.Pack (Phant K) base)
                      (GRing.Lmodule.scale lmodmixin)
}.
Local Coercion base : class_of >-> PseudoMetricNormedZmodule.class_of.
Local Coercion base2 T (c : class_of T) : GRing.Lmodule.class_of K T. exact (@GRing.Lmodule.Class K T (base c) (lmodmixin c)). Defined.

Structure type (phK : phant K) :=
  Pack { sort; _ : class_of sort }.
Local Coercion sort : type >-> Sortclass.

Variables (phK : phant K) (T : Type) (cT : type phK).

Definition class := let: Pack _ c := cT return class_of cT in c.
Definition clone c of phant_id class c := @Pack phK T c.
Let xT := let: Pack T _ := cT in T.
Notation xclass := (class : class_of xT).

Definition pack b0 l0
                (m0 : @mixin_of K (@PseudoMetricNormedZmodule.Pack K (Phant K) T b0)
                                (GRing.Lmodule.scale l0)) :=
  fun bT b & phant_id (@PseudoMetricNormedZmodule.class K (Phant K) bT) b =>
  fun l & phant_id l0 l =>
  fun m & phant_id m0 m => Pack phK (@Class T b l m).
Definition zmodType := @GRing.Zmodule.Pack cT xclass.
Definition lmodType := @GRing.Lmodule.Pack K phK cT xclass.
Definition pointedType := @Pointed.Pack cT xclass.
Definition filteredType := @Filtered.Pack cT cT xclass.
End ClassDef.

Module Export Exports.
Coercion sort : type >-> Sortclass.
Canonical zmodType.
Canonical lmodType.
Canonical pointedType.
Canonical filteredType.
Notation normedModType K := (type (Phant K)).
Notation NormedModType K T m := (@pack _ (Phant K) T _ _ m _ _ idfun _ idfun _ idfun).
Notation NormedModMixin := Mixin.
Notation "[ 'normedModType' K 'of' T 'for' cT ]" := (@clone _ (Phant K) T cT _ idfun)
  (at level 0, format "[ 'normedModType'  K  'of'  T  'for'  cT ]") : form_scope.
Notation "[ 'normedModType' K 'of' T ]" := (@clone _ (Phant K) T _ _ id)
  (at level 0, format "[ 'normedModType'  K  'of'  T ]") : form_scope.
End Exports.

End NormedModule.

Export NormedModule.Exports.

Module Export regular_topology.

Section regular_topology.
Local Canonical pseudoMetricNormedZmodType (R : numFieldType) :=
  @PseudoMetricNormedZmodType
    R R^o
    (PseudoMetricNormedZmodule.Mixin (erefl : @ball _ R = ball_ Num.norm)).
Local Canonical normedModType (R : numFieldType) :=
  NormedModType R R^o (@NormedModMixin _ _ ( *:%R : R -> R^o -> _) (@normrM _)).
End regular_topology.

Module Export Exports.
Canonical pseudoMetricNormedZmodType.
Canonical normedModType.
End Exports.

End regular_topology.

Module Export numFieldNormedType.

Section realType.
Variable (R : realType).
Local Canonical real_normedModType :=
  [normedModType R of R for [normedModType R of R^o]].
End realType.

Section rcfType.
End rcfType.

Section archiFieldType.
End archiFieldType.

Section realFieldType.
End realFieldType.

Section numClosedFieldType.
End numClosedFieldType.

Section numFieldType.
Variable (R : numFieldType).
Local Canonical numField_lmodType := [lmodType R of R for [lmodType R of R^o]].
Local Canonical numField_pseudoMetricNormedZmodType :=
  [pseudoMetricNormedZmodType R of R for [pseudoMetricNormedZmodType R of R^o]].
Local Canonical numField_normedModType :=
  [normedModType R of R for [normedModType R of R^o]].
Definition normedMod_ringType := [ringType of numField_normedModType].
End numFieldType.

Module Export Exports.
Canonical real_normedModType.

Canonical numField_lmodType.
Canonical numField_pseudoMetricNormedZmodType.
Canonical numField_normedModType.
Canonical normedMod_ringType.
End Exports.

End numFieldNormedType.

Section NormedModule_numDomainType.

End NormedModule_numDomainType.

Section NormedModule_numFieldType.

End NormedModule_numFieldType.

Section PseudoNormedZmod_numDomainType.

End PseudoNormedZmod_numDomainType.

Section analysis_struct.

End analysis_struct.

Section open_closed_sets.

End open_closed_sets.

Section at_left_right.

End at_left_right.

Section open_itv_subset.

End open_itv_subset.

Section at_left_right_topologicalType.

End at_left_right_topologicalType.

Section at_left_right_pmNormedZmod.

End at_left_right_pmNormedZmod.

Section at_left_rightR.

End at_left_rightR.

Section realFieldType.

End realFieldType.

Section contractions.

End contractions.

Section PseudoNormedZMod_numFieldType.

End PseudoNormedZMod_numFieldType.

Section NormedModule_numFieldType.

Section cvgr_norm_infty.

End cvgr_norm_infty.

End NormedModule_numFieldType.

Module Export NbhsNorm.
End NbhsNorm.

Section hausdorff.

End hausdorff.

Module Export NearNorm.
End NearNorm.

Section mx_norm.

End mx_norm.

Section matrix_NormedModule.

End matrix_NormedModule.

Section prod_PseudoMetricNormedZmodule.

End prod_PseudoMetricNormedZmodule.

Section prod_NormedModule.

End prod_NormedModule.

Section example_of_sharing.

End example_of_sharing.

Section prod_NormedModule_lemmas.

End prod_NormedModule_lemmas.

Section NVS_continuity_pseudoMetricNormedZmodType.

End NVS_continuity_pseudoMetricNormedZmodType.

Section NVS_continuity_normedModType.

End NVS_continuity_normedModType.

Section NVS_continuity_mul.

End NVS_continuity_mul.

Section cvg_composition_pseudometric.

End cvg_composition_pseudometric.

Section cvg_composition_normed.

End cvg_composition_normed.

Section cvg_composition_field.

End cvg_composition_field.

Section limit_composition_pseudometric.

End limit_composition_pseudometric.

Section limit_composition_normed.

End limit_composition_normed.

Section limit_composition_field.

End limit_composition_field.

Section cvg_composition_field_proper.

End cvg_composition_field_proper.

Section ProperFilterRealType.

End ProperFilterRealType.

Section local_continuity.

End local_continuity.

Section nbhs_ereal.
End nbhs_ereal.

Section cvg_fin.

Section filter.

End filter.

Section limit.

End limit.

End cvg_fin.

Section ecvg_realFieldType.

End ecvg_realFieldType.

Section max_cts.

End max_cts.

Section pseudoMetricDist.

End pseudoMetricDist.

Section edist_inf.

End edist_inf.

Section urysohn_separator.

End urysohn_separator.

Section topological_urysohn_separator.

Section urysohn_facts.

End urysohn_facts.
End topological_urysohn_separator.

Section Urysohn.
Section normal_uniform_separators.

End normal_uniform_separators.
End Urysohn.

Section normalP.

End normalP.

Section pseudometric_normal.

End pseudometric_normal.

Section open_closed_sets_ereal.

End open_closed_sets_ereal.

Section closure_left_right_open.

End closure_left_right_open.

Module CompleteNormedModule.

Section ClassDef.
End ClassDef.

Module Export Exports.
End Exports.

End CompleteNormedModule.

Section cvg_seq_bounded.

End cvg_seq_bounded.

Section interval.

End interval.

Section ereal_is_hausdorff.

End ereal_is_hausdorff.

Section ProperFilterERealType.

End ProperFilterERealType.

Section ecvg_realFieldType_proper.

End ecvg_realFieldType_proper.

Section cvg_0_pinfty.

End cvg_0_pinfty.

Section FilterRealType.

End FilterRealType.

Section TopoProperFilterRealType.

End TopoProperFilterRealType.

Section FilterERealType.

End FilterERealType.

Section TopoProperFilterERealType.

End TopoProperFilterERealType.

Section open_union_rat.

End open_union_rat.

Section interval_realType.
End interval_realType.

Section segment.

End segment.

Section Shift.

Context {R : zmodType} {T : Type}.

Definition shift (x y : R) := y + x.

End Shift.

Section continuous.

End continuous.

Section ball_realFieldType.

End ball_realFieldType.

Section Closed_Ball.

End Closed_Ball.

Section image_interval.

End image_interval.

Section LinearContinuousBounded.

End LinearContinuousBounded.

Section center_radius.

End center_radius.

Section center_radius_realFieldType.

End center_radius_realFieldType.

Section vitali_lemma_finite.

End vitali_lemma_finite.

Section vitali_collection_partition.

End vitali_collection_partition.

Section vitali_lemma_infinite.

End vitali_lemma_infinite.

End normedtype.

End mathcomp_DOT_analysis_DOT_normedtype_WRAPPED.
Module Export mathcomp.
Module Export analysis.
Module normedtype.
Include mathcomp_DOT_analysis_DOT_normedtype_WRAPPED.normedtype.
End normedtype.
Import mathcomp.ssreflect.all_ssreflect.
Import mathcomp.algebra.ssralg.
Import mathcomp.algebra.ssrnum.
Import mathcomp.classical.classical_sets.
Import mathcomp.classical.functions.
Import mathcomp.analysis.reals.
Import mathcomp.analysis.topology.
Import mathcomp.analysis.normedtype.

Local Open Scope ring_scope.
Local Open Scope classical_set_scope.
Reserved Notation "''D_' v f c" (at level 10, v, f at next level,
  format "''D_' v  f  c").

Section DifferentialR.

Context {R : numFieldType} {V W : normedModType R}.

Definition derive (f : V -> W) a v :=
  lim ((fun h => h^-1 *: ((f \o shift a) (h *: v) - f a)) @ 0^').
Local Notation "''D_' v f c" := (derive f c v).

Definition derivable (f : V -> W) a v :=
  cvg ((fun h => h^-1 *: ((f \o shift a) (h *: v) - f a)) @ 0^').

Class is_derive (a v : V) (f : V -> W) (df : W) := DeriveDef {
  ex_derive : derivable f a v;
  derive_val : 'D_v f a = df
}.

End DifferentialR.

Section DeriveVW.
Variables (R : numFieldType) (V W : normedModType R).

Global Instance is_derive_cst (a : W) (x v : V) : is_derive x v (cst a) 0.
Admitted.

End DeriveVW.

Section Derive_lemmasVW.
Variables (R : numFieldType) (V W : normedModType R).

Global Instance is_deriveD f g (x v : V) (df dg : W) :
  is_derive x v f df -> is_derive x v g dg -> is_derive x v (f + g) (df + dg).
Admitted.

Global Instance is_deriveN f (x v : V) (df : W) :
  is_derive x v f df -> is_derive x v (- f) (- df).
Admitted.

End Derive_lemmasVW.

Section Derive_lemmasVR.
Variables (R : numFieldType) (V : normedModType R).

Global Instance is_deriveM f g (x v : V) (df dg : R) :
  is_derive x v f df -> is_derive x v g dg ->
  is_derive x v (f * g) (f x *: dg + g x *: df).
Admitted.

End Derive_lemmasVR.

Section is_derive_instances.
Variables (R : numFieldType) (V : normedModType R).

Global Instance is_derive_id (x v : V) : is_derive x v id v.
Admitted.

End is_derive_instances.

Lemma trigger_derive (R : realType) (f : R -> R) x x1 y1 :
  is_derive x 1 f x1 -> x1 = y1 -> is_derive x 1 f y1.
Admitted.

Section is_derive_inverse.
Variable R : realType.

Lemma is_derive_0_is_cst (f : R -> R) x y :
  (forall x, is_derive x 1 f 0) -> f x = f y.
Admitted.

Global Instance is_derive1_comp (f g : R -> R) (x a b : R) :
  is_derive (g x) 1 f a -> is_derive x 1 g b ->
  is_derive x 1 (f \o g) (a * b).
Admitted.

End is_derive_inverse.
Import mathcomp.analysis.nsatz_realtype.
Import GRing.Theory.
Variable R : realType.
Implicit Types x y : R.
Definition sin x : R.
Admitted.

Lemma sin0 : sin 0 = 0.
Admitted.
Definition cos x : R.
Admitted.

Lemma cos0 : cos 0 = 1.
Admitted.

Global Instance is_derive_sin x : is_derive x 1 sin (cos x).
Admitted.

Global Instance is_derive_cos x : is
Intermediate Coq File (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 4.1MiB file on GitHub Actions Artifacts under build.log)
ing/_build_ci/analysis
MINIMIZER_DEBUG_EXTRA: exec: /github/workspace/builds/coq/coq-failing/_install_ci/bin/coqc.orig --print-version 
MINIMIZER_DEBUG: info: /tmp/tmp-coqbot-minimizer.Eb7mjjv42o
MINIMIZER_DEBUG: files: 
MINIMIZER_DEBUG_EXTRA: coqc: /github/workspace/builds/coq/coq-failing/_install_ci/bin/////coqc
MINIMIZER_DEBUG_EXTRA: coqpath: 
MINIMIZER_DEBUG_EXTRA: pwd: PWD=/github/workspace/builds/coq/coq-failing/_build_ci/analysis
MINIMIZER_DEBUG_EXTRA: exec: /github/workspace/builds/coq/coq-failing/_install_ci/bin/coqc.orig --print-version 
MINIMIZER_DEBUG: info: /tmp/tmp-coqbot-minimizer.U3jXBYPw5Y
MINIMIZER_DEBUG: files: 
MINIMIZER_DEBUG_EXTRA: coqc: /github/workspace/builds/coq/coq-failing/_install_ci/bin/////coqc
MINIMIZER_DEBUG_EXTRA: coqpath: 
MINIMIZER_DEBUG_EXTRA: pwd: PWD=/github/workspace/builds/coq/coq-failing/_build_ci/analysis
MINIMIZER_DEBUG_EXTRA: exec: /github/workspace/builds/coq/coq-failing/_install_ci/bin/coqc.orig --print-version 
MINIMIZER_DEBUG: info: /tmp/tmp-coqbot-minimizer.QUoc0QBpdW
MINIMIZER_DEBUG: files: 
COQC theories/trigo.v
MINIMIZER_DEBUG_EXTRA: coqc: /github/workspace/builds/coq/coq-failing/_install_ci/bin/////coqc
MINIMIZER_DEBUG_EXTRA: coqpath: 
MINIMIZER_DEBUG_EXTRA: pwd: PWD=/github/workspace/builds/coq/coq-failing/_build_ci/analysis
MINIMIZER_DEBUG_EXTRA: exec: /github/workspace/builds/coq/coq-failing/_install_ci/bin/coqc.orig -q -w -parsing -w +undeclared-scope -w +non-primitive-record -w -ambiguous-paths -w -redundant-canonical-projection -w -projection-no-head-constant -w -deprecated-native-compiler-option -native-compiler ondemand -R /github/workspace/builds/coq/coq-failing/_build_ci/analysis/classical mathcomp.classical -R /github/workspace/builds/coq/coq-failing/_build_ci/analysis/theories mathcomp.analysis theories/trigo.v 
MINIMIZER_DEBUG: info: /tmp/tmp-coqbot-minimizer.8XzXyfrBAH
MINIMIZER_DEBUG: files:  theories/trigo.v
File "./theories/trigo.v", line 94, characters 55-63:
Warning: Notation ler_addl is deprecated since mathcomp 1.17.0.
Use lerDl instead.
[deprecated-syntactic-definition-since-mathcomp-1.17.0,deprecated-since-mathcomp-1.17.0,deprecated-syntactic-definition,deprecated,default]
File "./theories/trigo.v", line 94, characters 55-63:
Warning: Notation ler_addl is deprecated since mathcomp 1.17.0.
Use lerDl instead.
[deprecated-syntactic-definition-since-mathcomp-1.17.0,deprecated-since-mathcomp-1.17.0,deprecated-syntactic-definition,deprecated,default]
File "./theories/trigo.v", line 94, characters 55-63:
Warning: Notation ler_addl is deprecated since mathcomp 1.17.0.
Use lerDl instead.
[deprecated-syntactic-definition-since-mathcomp-1.17.0,deprecated-since-mathcomp-1.17.0,deprecated-syntactic-definition,deprecated,default]
File "./theories/trigo.v", line 96, characters 26-41:
Warning: Notation ltr_distlC_addr is deprecated since mathcomp 1.17.0.
Use ltr_distlCDr instead.
[deprecated-syntactic-definition-since-mathcomp-1.17.0,deprecated-since-mathcomp-1.17.0,deprecated-syntactic-definition,deprecated,default]
File "./theories/trigo.v", line 101, characters 56-65:
Warning: Notation ler_add2r is deprecated since mathcomp 1.17.0.
Use lerD2r instead.
[deprecated-syntactic-definition-since-mathcomp-1.17.0,deprecated-since-mathcomp-1.17.0,deprecated-syntactic-definition,deprecated,default]
File "./theories/trigo.v", line 101, characters 56-65:
Warning: Notation ler_add2r is deprecated since mathcomp 1.17.0.
Use lerD2r instead.
[deprecated-syntactic-definition-since-mathcomp-1.17.0,deprecated-since-mathcomp-1.17.0,deprecated-syntactic-definition,deprecated,default]
File "./theories/trigo.v", line 101, characters 56-65:
Warning: Notation ler_add2r is deprecated since mathcomp 1.17.0.
Use lerD2r instead.
[deprecated-syntactic-definition-since-mathcomp-1.17.0,deprecated-since-mathcomp-1.17.0,deprecated-syntactic-definition,deprecated,default]
File "./theories/trigo.v", line 361, characters 26-34:
Warning: Notation ler_addl is deprecated since mathcomp 1.17.0.
Use lerDl instead.
[deprecated-syntactic-definition-since-mathcomp-1.17.0,deprecated-since-mathcomp-1.17.0,deprecated-syntactic-definition,deprecated,default]
File "./theories/trigo.v", line 361, characters 26-34:
Warning: Notation ler_addl is deprecated since mathcomp 1.17.0.
Use lerDl instead.
[deprecated-syntactic-definition-since-mathcomp-1.17.0,deprecated-since-mathcomp-1.17.0,deprecated-syntactic-definition,deprecated,default]
File "./theories/trigo.v", line 361, characters 26-34:
Warning: Notation ler_addl is deprecated since mathcomp 1.17.0.
Use lerDl instead.
[deprecated-syntactic-definition-since-mathcomp-1.17.0,deprecated-since-mathcomp-1.17.0,deprecated-syntactic-definition,deprecated,default]
File "./theories/trigo.v", line 365, characters 18-26:
Warning: Notation ler_oppl is deprecated since mathcomp 1.17.0.
Use lerNl instead.
[deprecated-syntactic-definition-since-mathcomp-1.17.0,deprecated-since-mathcomp-1.17.0,deprecated-syntactic-definition,deprecated,default]
File "./theories/trigo.v", line 365, characters 18-26:
Warning: Notation ler_oppl is deprecated since mathcomp 1.17.0.
Use lerNl instead.
[deprecated-syntactic-definition-since-mathcomp-1.17.0,deprecated-since-mathcomp-1.17.0,deprecated-syntactic-definition,deprecated,default]
File "./theories/trigo.v", line 365, characters 18-26:
Warning: Notation ler_oppl is deprecated since mathcomp 1.17.0.
Use lerNl instead.
[deprecated-syntactic-definition-since-mathcomp-1.17.0,deprecated-since-mathcomp-1.17.0,deprecated-syntactic-definition,deprecated,default]
File "./theories/trigo.v", line 373, characters 26-34:
Warning: Notation ler_addr is deprecated since mathcomp 1.17.0.
Use lerDr instead.
[deprecated-syntactic-definition-since-mathcomp-1.17.0,deprecated-since-mathcomp-1.17.0,deprecated-syntactic-definition,deprecated,default]
File "./theories/trigo.v", line 373, characters 26-34:
Warning: Notation ler_addr is deprecated since mathcomp 1.17.0.
Use lerDr instead.
[deprecated-syntactic-definition-since-mathcomp-1.17.0,deprecated-since-mathcomp-1.17.0,deprecated-syntactic-definition,deprecated,default]
File "./theories/trigo.v", line 373, characters 26-34:
Warning: Notation ler_addr is deprecated since mathcomp 1.17.0.
Use lerDr instead.
[deprecated-syntactic-definition-since-mathcomp-1.17.0,deprecated-since-mathcomp-1.17.0,deprecated-syntactic-definition,deprecated,default]
File "./theories/trigo.v", line 377, characters 18-26:
Warning: Notation ler_oppl is deprecated since mathcomp 1.17.0.
Use lerNl instead.
[deprecated-syntactic-definition-since-mathcomp-1.17.0,deprecated-since-mathcomp-1.17.0,deprecated-syntactic-definition,deprecated,default]
File "./theories/trigo.v", line 377, characters 18-26:
Warning: Notation ler_oppl is deprecated since mathcomp 1.17.0.
Use lerNl instead.
[deprecated-syntactic-definition-since-mathcomp-1.17.0,deprecated-since-mathcomp-1.17.0,deprecated-syntactic-definition,deprecated,default]
File "./theories/trigo.v", line 377, characters 18-26:
Warning: Notation ler_oppl is deprecated since mathcomp 1.17.0.
Use lerNl instead.
[deprecated-syntactic-definition-since-mathcomp-1.17.0,deprecated-since-mathcomp-1.17.0,deprecated-syntactic-definition,deprecated,default]
polynomial not in the ideal
File "./theories/trigo.v", line 390, characters 0-56:
Error: No applicable tactic.

Command exited with non-zero status 1
theories/trigo.vo (real: 3.60, user: 3.42, sys: 0.17, mem: 758616 ko)
make[3]: *** [Makefile.coq:847: theories/trigo.vo] Error 1
make[3]: *** [theories/trigo.vo] Deleting file 'theories/trigo.glob'
make[2]: *** [Makefile.coq:417: all] Error 2
make[2]: Leaving directory '/github/workspace/builds/coq/coq-failing/_build_ci/analysis'
make[1]: *** [Makefile.common:63: this-build] Error 2
make[1]: Leaving directory '/github/workspace/builds/coq/coq-failing/_build_ci/analysis'
Aggregating timing log...
    Time |  Peak Mem | File Name            
--------------------------------------------
0m03.42s | 758616 ko | Total Time / Peak Mem
--------------------------------------------
0m03.42s | 758616 ko | trigo.vo             
make: *** [Makefile.ci:172: ci-analysis] Error 2
/github/workspace/builds/coq /github/workspace
::endgroup::
Minimization Log (truncated to last 8.0KiB; full 246KiB file on GitHub Actions Artifacts under bug.log)
ast types are ignored in patterns
[cast-in-pattern,automation,default]
File "/tmp/tmptuevyfd9/Top/bug_01.v", line 448, characters 0-9:
Warning: Let definition cvgryPnum declared as an axiom.
[let-as-axiom,vernacular,default]
File "/tmp/tmptuevyfd9/Top/bug_01.v", line 456, characters 0-9:
Warning: Let definition cvgrNyPnum declared as an axiom.
[let-as-axiom,vernacular,default]
File "/tmp/tmptuevyfd9/Top/bug_01.v", line 562, characters 0-9:
Warning: Let definition cvgeyPnum declared as an axiom.
[let-as-axiom,vernacular,default]
File "/tmp/tmptuevyfd9/Top/bug_01.v", line 570, characters 0-9:
Warning: Let definition cvgeNyPnum declared as an axiom.
[let-as-axiom,vernacular,default]
File "/tmp/tmptuevyfd9/Top/bug_01.v", line 1821, characters 0-9:
Warning: Let definition cvgrP declared as an axiom.
[let-as-axiom,vernacular,default]
File "/tmp/tmptuevyfd9/Top/bug_01.v", line 2921, characters 0-9:
Warning: Let definition cvgeM_gt0_pinfty declared as an axiom.
[let-as-axiom,vernacular,default]
File "/tmp/tmptuevyfd9/Top/bug_01.v", line 2925, characters 0-9:
Warning: Let definition cvgeM_lt0_pinfty declared as an axiom.
[let-as-axiom,vernacular,default]
File "/tmp/tmptuevyfd9/Top/bug_01.v", line 2929, characters 0-9:
Warning: Let definition cvgeM_gt0_ninfty declared as an axiom.
[let-as-axiom,vernacular,default]
File "/tmp/tmptuevyfd9/Top/bug_01.v", line 2933, characters 0-9:
Warning: Let definition cvgeM_lt0_ninfty declared as an axiom.
[let-as-axiom,vernacular,default]
File "/tmp/tmptuevyfd9/Top/bug_01.v", line 3038, characters 24-36:
Warning: Cast types are ignored in patterns
[cast-in-pattern,automation,default]
File "/tmp/tmptuevyfd9/Top/bug_01.v", line 3038, characters 24-36:
Warning: Cast types are ignored in patterns
[cast-in-pattern,automation,default]
File "/tmp/tmptuevyfd9/Top/bug_01.v", line 3066, characters 24-42:
Warning: Cast types are ignored in patterns
[cast-in-pattern,automation,default]
File "/tmp/tmptuevyfd9/Top/bug_01.v", line 3066, characters 24-42:
Warning: Cast types are ignored in patterns
[cast-in-pattern,automation,default]
File "/tmp/tmptuevyfd9/Top/bug_01.v", line 3227, characters 0-9:
Warning: Let definition normal_spaceP declared as an axiom.
[let-as-axiom,vernacular,default]
File "/tmp/tmptuevyfd9/Top/bug_01.v", line 3697, characters 0-9:
Warning: Let definition ointsub_rat0 declared as an axiom.
[let-as-axiom,vernacular,default]
File "/tmp/tmptuevyfd9/Top/bug_01.v", line 4096, characters 0-9:
Warning: Let definition ball_inj_radius_gt0 declared as an axiom.
[let-as-axiom,vernacular,default]
File "/tmp/tmptuevyfd9/Top/bug_01.v", line 4099, characters 0-9:
Warning: Let definition ball_inj_center declared as an axiom.
[let-as-axiom,vernacular,default]
File "/tmp/tmptuevyfd9/Top/bug_01.v", line 4102, characters 0-9:
Warning: Let definition ball_inj_radius declared as an axiom.
[let-as-axiom,vernacular,default]
File "/tmp/tmptuevyfd9/Top/bug_01.v", line 4364, characters 0-22:
Warning: Interpreting this declaration as if a global declaration prefixed by
"Local", i.e. as a global declaration which shall not be available without
qualification when imported. [local-declaration,vernacular,default]

�[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

Non-fatal error: Failed to admit definitions and preserve the error.  
The new error was:
File "/tmp/tmptuevyfd9/Top/bug_01.v", line 426, characters 34-40:
Warning: Cast types are ignored in patterns
[cast-in-pattern,automation,default]
File "/tmp/tmptuevyfd9/Top/bug_01.v", line 426, characters 34-40:
Warning: Cast types are ignored in patterns
[cast-in-pattern,automation,default]
File "/tmp/tmptuevyfd9/Top/bug_01.v", line 428, characters 34-41:
Warning: Cast types are ignored in patterns
[cast-in-pattern,automation,default]
File "/tmp/tmptuevyfd9/Top/bug_01.v", line 428, characters 34-41:
Warning: Cast types are ignored in patterns
[cast-in-pattern,automation,default]
File "/tmp/tmptuevyfd9/Top/bug_01.v", line 430, characters 34-40:
Warning: Cast types are ignored in patterns
[cast-in-pattern,automation,default]
File "/tmp/tmptuevyfd9/Top/bug_01.v", line 430, characters 34-40:
Warning: Cast types are ignored in patterns
[cast-in-pattern,automation,default]
File "/tmp/tmptuevyfd9/Top/bug_01.v", line 432, characters 34-41:
Warning: Cast types are ignored in patterns
[cast-in-pattern,automation,default]
File "/tmp/tmptuevyfd9/Top/bug_01.v", line 432, characters 34-41:
Warning: Cast types are ignored in patterns
[cast-in-pattern,automation,default]
File "/tmp/tmptuevyfd9/Top/bug_01.v", line 448, characters 0-9:
Warning: Let definition cvgryPnum declared as an axiom.
[let-as-axiom,vernacular,default]
File "/tmp/tmptuevyfd9/Top/bug_01.v", line 456, characters 0-9:
Warning: Let definition cvgrNyPnum declared as an axiom.
[let-as-axiom,vernacular,default]
File "/tmp/tmptuevyfd9/Top/bug_01.v", line 562, characters 0-9:
Warning: Let definition cvgeyPnum declared as an axiom.
[let-as-axiom,vernacular,default]
File "/tmp/tmptuevyfd9/Top/bug_01.v", line 570, characters 0-9:
Warning: Let definition cvgeNyPnum declared as an axiom.
[let-as-axiom,vernacular,default]
File "/tmp/tmptuevyfd9/Top/bug_01.v", line 1821, characters 0-9:
Warning: Let definition cvgrP declared as an axiom.
[let-as-axiom,vernacular,default]
File "/tmp/tmptuevyfd9/Top/bug_01.v", line 2921, characters 0-9:
Warning: Let definition cvgeM_gt0_pinfty declared as an axiom.
[let-as-axiom,vernacular,default]
File "/tmp/tmptuevyfd9/Top/bug_01.v", line 2925, characters 0-9:
Warning: Let definition cvgeM_lt0_pinfty declared as an axiom.
[let-as-axiom,vernacular,default]
File "/tmp/tmptuevyfd9/Top/bug_01.v", line 2929, characters 0-9:
Warning: Let definition cvgeM_gt0_ninfty declared as an axiom.
[let-as-axiom,vernacular,default]
File "/tmp/tmptuevyfd9/Top/bug_01.v", line 2933, characters 0-9:
Warning: Let definiti
CEB7
on cvgeM_lt0_ninfty declared as an axiom.
[let-as-axiom,vernacular,default]
File "/tmp/tmptuevyfd9/Top/bug_01.v", line 3038, characters 24-36:
Warning: Cast types are ignored in patterns
[cast-in-pattern,automation,default]
File "/tmp/tmptuevyfd9/Top/bug_01.v", line 3038, characters 24-36:
Warning: Cast types are ignored in patterns
[cast-in-pattern,automation,default]
File "/tmp/tmptuevyfd9/Top/bug_01.v", line 3066, characters 24-42:
Warning: Cast types are ignored in patterns
[cast-in-pattern,automation,default]
File "/tmp/tmptuevyfd9/Top/bug_01.v", line 3066, characters 24-42:
Warning: Cast types are ignored in patterns
[cast-in-pattern,automation,default]
File "/tmp/tmptuevyfd9/Top/bug_01.v", line 3227, characters 0-9:
Warning: Let definition normal_spaceP declared as an axiom.
[let-as-axiom,vernacular,default]
File "/tmp/tmptuevyfd9/Top/bug_01.v", line 3697, characters 0-9:
Warning: Let definition ointsub_rat0 declared as an axiom.
[let-as-axiom,vernacular,default]
File "/tmp/tmptuevyfd9/Top/bug_01.v", line 4096, characters 0-9:
Warning: Let definition ball_inj_radius_gt0 declared as an axiom.
[let-as-axiom,vernacular,default]
File "/tmp/tmptuevyfd9/Top/bug_01.v", line 4099, characters 0-9:
Warning: Let definition ball_inj_center declared as an axiom.
[let-as-axiom,vernacular,default]
File "/tmp/tmptuevyfd9/Top/bug_01.v", line 4102, characters 0-9:
Warning: Let definition ball_inj_radius declared as an axiom.
[let-as-axiom,vernacular,default]
File "/tmp/tmptuevyfd9/Top/bug_01.v", line 4364, characters 0-22:
Warning: Interpreting this declaration as if a global declaration prefixed by
"Local", i.e. as a global declaration which shall not be available without
qualification when imported. [local-declaration,vernacular,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 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 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.

Copy link
Contributor
coqbot-app bot commented Nov 16, 2023

Minimized File (from ci-analysis) (full log on GitHub Actions)

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 (truncated to 32KiB; full 33KiB file on GitHub Actions Artifacts under bug.v)
(* -*- mode: coq; coq-prog-args: ("-emacs" "-q" "-w" "-parsing" "-w" "+undeclared-scope" "-w" "+non-primitive-record" "-w" "-ambiguous-paths" "-w" "-redundant-canonical-projection" "-w" "-projection-no-head-constant" "-w" "-deprecated-native-compiler-option" "-native-compiler" "ondemand" "-R" "/github/workspace/builds/coq/coq-failing/_build_ci/analysis/classical" "mathcomp.classical" "-R" "/github/workspace/builds/coq/coq-failing/_build_ci/analysis/theories" "mathcomp.analysis" "-Q" "/github/workspace/cwd" "Top" "-Q" "/github/workspace/builds/coq/coq-failing/_install_ci/lib/coq/user-contrib/HB" "HB" "-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/elpi" "elpi" "-Q" "/github/workspace/builds/coq/coq-failing/_install_ci/lib/coq/user-contrib/mathcomp" "mathcomp" "-top" "Top.bug_01") -*- *)
(* File reduced by coq-bug-minimizer from original input, then from 1255 lines to 42 lines, then from 55 lines to 816 lines, then from 821 lines to 56 lines, then from 69 lines to 1760 lines, then from 1765 lines to 123 lines, then from 136 lines to 6941 lines, then from 6944 lines to 5747 lines, then from 5452 lines to 1132 lines *)
(* coqc version 8.19+alpha compiled with OCaml 4.14.1
   coqtop version b6bf0e601990:/builds/coq/coq/_build/default,(HEAD detached at d939b0f) (d939b0f67e958b71c8283ed71d1bb5d0fa515c69)
   Expected coqc runtime on this file: 2.061 sec *)
Require Coq.Init.Ltac.
Require Coq.nsatz.Nsatz.
Require Coq.ssr.ssreflect.
Require mathcomp.ssreflect.ssreflect.
Require Coq.ssr.ssrfun.
Require mathcomp.ssreflect.ssrnotations.
Require mathcomp.ssreflect.ssrfun.
Require Coq.ssr.ssrbool.
Require mathcomp.ssreflect.ssrbool.
Require mathcomp.ssreflect.eqtype.
Require Coq.NArith.BinNat.
Require Coq.PArith.BinPos.
Require Coq.NArith.Ndec.
Require Coq.setoid_ring.Ring.
Require mathcomp.ssreflect.ssrnat.
Require mathcomp.ssreflect.seq.
Require mathcomp.ssreflect.choice.
Require mathcomp.ssreflect.path.
Require mathcomp.ssreflect.div.
Require mathcomp.ssreflect.fintype.
Require mathcomp.ssreflect.fingraph.
Require mathcomp.ssreflect.tuple.
Require mathcomp.ssreflect.finfun.
Require mathcomp.ssreflect.bigop.
Require mathcomp.ssreflect.prime.
Require mathcomp.ssreflect.finset.
Require mathcomp.ssreflect.order.
Require mathcomp.ssreflect.binomial.
Require mathcomp.ssreflect.generic_quotient.
Require mathcomp.ssreflect.ssrAC.
Require mathcomp.ssreflect.all_ssreflect.
Require mathcomp.algebra.ssralg.
Require mathcomp.algebra.ring_quotient.
Require mathcomp.algebra.countalg.
Require mathcomp.fingroup.fingroup.
Require mathcomp.algebra.poly.
Require mathcomp.algebra.ssrnum.
Require mathcomp.algebra.ssrint.
Require mathcomp.classical.boolp.
Require mathcomp.fingroup.morphism.
Require mathcomp.fingroup.perm.
Require mathcomp.fingroup.automorphism.
Require mathcomp.fingroup.quotient.
Require mathcomp.fingroup.action.
Require mathcomp.algebra.finalg.
Require mathcomp.algebra.polydiv.
Require mathcomp.algebra.zmodp.
Require mathcomp.algebra.matrix.
Require mathcomp.algebra.mxalgebra.
Require mathcomp.algebra.mxpoly.
Require mathcomp.algebra.polyXY.
Require mathcomp.algebra.vector.
Require mathcomp.algebra.qpoly.
Require Coq.setoid_ring.Field_theory.
Require Coq.setoid_ring.Field_tac.
Require mathcomp.algebra.rat.
Require mathcomp.algebra.intdiv.
Require mathcomp.algebra.interval.
Require mathcomp.algebra.fraction.
Require mathcomp.algebra.all_algebra.
Require mathcomp.finmap.finmap.
Require mathcomp.classical.mathcomp_extra.
Require mathcomp.classical.classical_sets.
Require Coq.Strings.String.
Require Coq.Bool.Bool.
Require Coq.Floats.PrimFloat.
Require Coq.Numbers.Cyclic.Int63.PrimInt63.
Require elpi.elpi.
Require HB.structures.
Require mathcomp.classical.functions.
Require mathcomp.classical.set_interval.
Require Coq.Setoids.Setoid.
Require mathcomp.analysis.reals.
Require mathcomp.classical.cardinality.
Require mathcomp.classical.fsbigop.
Require mathcomp.analysis.signed.
Require mathcomp.analysis.topology.
Require mathcomp.analysis.constructive_ereal.
Require mathcomp.analysis.ereal.
Require mathcomp.analysis.nsatz_realtype.
Require Coq.Logic.Epsilon.
Require Coq.Logic.FunctionalExtensionality.
Require Coq.Reals.RIneq.
Require Coq.Reals.Ranalysis1.
Require Coq.Reals.Raxioms.
Require Coq.Reals.Rbasic_fun.
Require Coq.Reals.Rdefinitions.
Require Coq.Reals.Real
3D11
s.
Require Coq.Reals.Rsqrt_def.
Require Coq.Reals.Rtrigo1.
Require Coq.ZArith.Zwf.
Require mathcomp.field.falgebra.
Require mathcomp.analysis.prodnormedzmodule.
Require mathcomp.field.fieldext.
Require mathcomp.analysis.Rstruct.

Module Export AdmitTactic.
Module Import LocalFalse.
Inductive False : Prop := .
End LocalFalse.
Axiom proof_admitted : False.
Import Coq.Init.Ltac.
Tactic Notation "admit" := abstract case proof_admitted.
End AdmitTactic.
Module mathcomp_DOT_analysis_DOT_normedtype_WRAPPED.
Module Export normedtype.
Import mathcomp.ssreflect.all_ssreflect.
Import mathcomp.algebra.ssralg.
Import mathcomp.algebra.ssrint.
Import mathcomp.algebra.ssrnum.
Import mathcomp.finmap.finmap.
Import mathcomp.algebra.matrix.
Import mathcomp.algebra.rat.
Import mathcomp.algebra.interval.
Import mathcomp.algebra.zmodp.
Import mathcomp.algebra.vector.
Import mathcomp.field.fieldext.
Import mathcomp.field.falgebra.
Import mathcomp.classical.mathcomp_extra.
Import mathcomp.classical.boolp.
Import mathcomp.classical.classical_sets.
Import mathcomp.classical.functions.
Import mathcomp.classical.cardinality.
Import mathcomp.classical.set_interval.
Import mathcomp.analysis.Rstruct.
Import mathcomp.analysis.ereal.
Import mathcomp.analysis.reals.
Import mathcomp.analysis.signed.
Import mathcomp.analysis.topology.
Import mathcomp.analysis.prodnormedzmodule.

Reserved Notation "f @`[ a , b ]" (at level 20, b at level 9,
  format "f  @`[ a ,  b ]").
Reserved Notation "f @`] a , b [" (at level 20, b at level 9,
  format "f  @`] a ,  b [").
Reserved Notation "x ^'+" (at level 3, format "x ^'+").
Reserved Notation "x ^'-" (at level 3, format "x ^'-").
Reserved Notation "+oo_ R" (at level 3, format "+oo_ R").
Reserved Notation "-oo_ R" (at level 3, format "-oo_ R").
Reserved Notation "[ 'bounded' E | x 'in' A ]"
  (at level 0, x name, format "[ 'bounded'  E  |  x  'in'  A ]").
Reserved Notation "k .-lipschitz_on f"
  (at level 2, format "k .-lipschitz_on  f").
Reserved Notation "k .-lipschitz_ A f"
  (at level 2, A at level 0, format "k .-lipschitz_ A  f").
Reserved Notation "k .-lipschitz f" (at level 2, format "k .-lipschitz  f").
Reserved Notation "[ 'lipschitz' E | x 'in' A ]"
  (at level 0, x name, format "[ 'lipschitz'  E  |  x  'in'  A ]").
Reserved Notation "k *` A" (at level 40, left associativity, format "k  *`  A").

Set Implicit Arguments.
Unset Strict Implicit.
Unset Printing Implicit Defensive.
Import Order.TTheory.
Import GRing.Theory.
Import Num.Def.
Import Num.Theory.
Import numFieldTopology.Exports.

Local Open Scope classical_set_scope.
Local Open Scope ring_scope.
Definition pointed_of_zmodule (R : zmodType) : pointedType. exact (PointedType R 0). Defined.
Definition filtered_of_normedZmod (K : numDomainType) (R : normedZmodType K)
  : filteredType R. exact (Filtered.Pack (Filtered.Class
    (@Pointed.class (pointed_of_zmodule R))
    (nbhs_ball_ (ball_ (fun x => `|x|))))). Defined.

Section pseudoMetric_of_normedDomain.
Variables (K : numDomainType) (R : normedZmodType K).
Lemma ball_norm_center (x : R) (e : K) : 0 < e -> ball_ normr x e x.
Admitted.
Lemma ball_norm_symmetric (x y : R) (e : K) :
  ball_ normr x e y -> ball_ normr y e x.
Admitted.
Lemma ball_norm_triangle (x y z : R) (e1 e2 : K) :
  ball_ normr x e1 y -> ball_ normr y e2 z -> ball_ normr x (e1 + e2) z.
Admitted.
Definition pseudoMetric_of_normedDomain
  : PseudoMetric.mixin_of K (@entourage_ K R R (ball_ (fun x => `|x|))). exact (PseudoMetricMixin ball_norm_center ball_norm_symmetric ball_norm_triangle erefl). Defined.

Lemma nbhs_ball_normE :
  @nbhs_ball_ K R R (ball_ normr) = nbhs_ (entourage_ (ball_ normr)).
Admitted.
End pseudoMetric_of_normedDomain.

Lemma nbhsN (R : numFieldType) (x : R) : nbhs (- x) = -%R @ x.
Admitted.

Lemma nbhsNimage (R : numFieldType) (x : R) :
  nbhs (- x) = [set -%R @` A | A in nbhs x].
Admitted.

Lemma nearN (R : numFieldType) (x : R) (P : R -> Prop) :
  (\forall y \near - x, P y) <-> \near x, P (- x).
Admitted.

Lemma openN (R : numFieldType) (A : set R) :
  open A -> open [set - x | x in A].
Admitted.

Lemma closedN (R : numFieldType) (A : set R) :
  closed A -> closed [set - x | x in A].
Admitted.

Module PseudoMetricNormedZmodule.
Section ClassDef.
Variable R : numDomainType.
Record mixin_of (T : normedZmodType R) (ent : set (set (T * T)))
    (m : PseudoMetric.mixin_of R ent) := Mixin {
  _ : PseudoMetric.ball m = ball_ (fun x => `| x |) }.

Record class_of (T : Type) := Class {
  base : Num.NormedZmodule.class_of R T;
  pointed_mixin : Pointed.point_of T ;
  nbhs_mixin : Filtered.nbhs_of T T ;
  topological_mixin : @Topological.mixin_of T nbhs_mixin ;
  uniform_mixin : @Uniform.mixin_of T nbhs_mixin ;
  pseudoMetric_mixin :
    @PseudoMetric.mixin_of R T (Uniform.entourage uniform_mixin) ;
  mixin : @mixin_of (Num.NormedZmodule.Pack _ base) _ pseudoMetric_mixin
}.
Local Coercion base : class_of >-> Num.NormedZmodule.class_of.
Definition base2 T c := @PseudoMetric.Class _ _
    (@Uniform.Class _
      (@Topological.Class _
        (Filtered.Class
         (Pointed.Class (@base T c) (pointed_mixin c))
         (nbhs_mixin c))
        (topological_mixin c))
      (uniform_mixin c))
    (pseudoMetric_mixin c).
Local Coercion base2 : class_of >-> PseudoMetric.class_of.

Structure type (phR : phant R) :=
  Pack { sort; _ : class_of sort }.
Local Coercion sort : type >-> Sortclass.

Variables (phR : phant R) (T : Type) (cT : type phR).

Definition class := let: Pack _ c := cT return class_of cT in c.
Definition clone c of phant_id class c := @Pack phR T c.
Let xT := let: Pack T _ := cT in T.
Notation xclass := (class : class_of xT).
Definition pack (b0 : Num.NormedZmodule.class_of R T) lm0 um0
  (m0 : @mixin_of (@Num.NormedZmodule.Pack R (Phant R) T b0) lm0 um0) :=
  fun bT (b : Num.NormedZmodule.class_of R T)
      & phant_id (@Num.NormedZmodule.class R (Phant R) bT) b =>
  fun uT (u : PseudoMetric.class_of R T) & phant_id (@PseudoMetric.class R uT) u =>
  fun (m : @mixin_of (Num.NormedZmodule.Pack _ b) _ u) & phant_id m m0 =>
  @Pack phR T (@Class T b u u u u u m).

Definition eqType := @Equality.Pack cT xclass.
Definition choiceType := @Choice.Pack cT xclass.
Definition zmodType := @GRing.Zmodule.Pack cT xclass.
Definition normedZmodType := @Num.NormedZmodule.Pack R phR cT xclass.
Definition pointedType := @Pointed.Pack cT xclass.
Definition filteredType := @Filtered.Pack cT cT xclass.
Definition topologicalType := @Topological.Pack cT xclass.
Definition uniformType := @Uniform.Pack cT xclass.
Definition pseudoMetricType := @PseudoMetric.Pack R cT xclass.
Definition pointed_zmodType := @GRing.Zmodule.Pack pointedType xclass.
Definition filtered_zmodType := @GRing.Zmodule.Pack filteredType xclass.
Definition topological_zmodType := @GRing.Zmodule.Pack topologicalType xclass.
Definition uniform_zmodType := @GRing.Zmodule.Pack uniformType xclass.
Definition pseudoMetric_zmodType := @GRing.Zmodule.Pack pseudoMetricType xclass.
Definition pointed_normedZmodType := @Num.NormedZmodule.Pack R phR pointedType xclass.
Definition filtered_normedZmodType := @Num.NormedZmodule.Pack R phR filteredType xclass.
Definition topological_normedZmodType := @Num.NormedZmodule.Pack R phR topologicalType xclass.
Definition uniform_normedZmodType := @Num.NormedZmodule.Pack R phR uniformType xclass.
Definition pseudoMetric_normedZmodType := @Num.NormedZmodule.Pack R phR pseudoMetricType xclass.

End ClassDef.

Module Export Exports.
Coercion base : class_of >-> Num.NormedZmodule.class_of.
Coercion base2 : class_of >-> PseudoMetric.class_of.
Coercion sort : type >-> Sortclass.
Coercion eqType : type >-> Equality.type.
Canonical eqType.
Coercion choiceType : type >-> Choice.type.
Canonical choiceType.
Coercion zmodType : type >-> GRing.Zmodule.type.
Canonical zmodType.
Coercion normedZmodType : type >-> Num.NormedZmodule.type.
Canonical normedZmodType.
Coercion pointedType : type >-> Pointed.type.
Canonical pointedType.
Coercion filteredType : type >-> Filtered.type.
Canonical filteredType.
Coercion topologicalType : type >-> Topological.type.
Canonical topologicalType.
Coercion uniformType : type >-> Uniform.type.
Canonical uniformType.
Coercion pseudoMetricType : type >-> PseudoMetric.type.
Canonical pseudoMetricType.
Canonical pointed_zmodType.
Canonical filtered_zmodType.
Canonical topological_zmodType.
Canonical uniform_zmodType.
Canonical pseudoMetric_zmodType.
Canonical pointed_normedZmodType.
Canonical filtered_normedZmodType.
Canonical topological_normedZmodType.
Canonical uniform_normedZmodType.
Canonical pseudoMetric_normedZmodType.
Notation pseudoMetricNormedZmodType R := (type (Phant R)).
Notation PseudoMetricNormedZmodType R T m :=
  (@pack _ (Phant R) T _ _ _ m _ _ idfun _ _ idfun _ idfun).
Notation "[ 'pseudoMetricNormedZmodType' R 'of' T 'for' cT ]" :=
  (@clone _ (Phant R) T cT _ idfun)
  (at level 0, format "[ 'pseudoMetricNormedZmodType'  R  'of'  T  'for'  cT ]") :
  form_scope.
Notation "[ 'pseudoMetricNormedZmodType' R 'of' T ]" :=
  (@clone _ (Phant R) T _ _ idfun)
  (at level 0, format "[ 'pseudoMetricNormedZmodType'  R  'of'  T ]") : form_scope.
End Exports.

End PseudoMetricNormedZmodule.
Export PseudoMetricNormedZmodule.Exports.

Section pseudoMetricnormedzmodule_lemmas.
Context {K : numDomainType} {V : pseudoMetricNormedZmodType K}.

Local Notation ball_norm := (ball_ (@normr K V)).

Lemma ball_normE : ball_norm = ball.
Admitted.

End pseudoMetricnormedzmodule_lemmas.

Lemma bigcup_ballT {R : realType} : \bigcup_n ball (0%R : R) n%:R = setT.
Admitted.

Section Nbhs'.
Context {R : numDomainType} {T : pseudoMetricType R}.

Lemma ex_ball_sig (x : T) (P : set T) :
  ~ (forall eps : {posnum R}, ~ (ball x eps%:num `<=` ~` P)) ->
    {d : {posnum R} | ball x d%:num `<=` ~` P}.
Admitted.

Lemma nbhsC (x : T) (P : set T) :
  ~ (forall eps : {posnum R}, ~ (ball x eps%:num `<=` ~` P)) ->
  nbhs x (~` P).
Admitted.

Lemma nbhsC_ball (x : T) (P : set T) :
  nbhs x (~` P) -> {d : {posnum R} | ball x d%:num `<=` ~` P}.
Admitted.

Lemma nbhs_ex (x : T) (P : T -> Prop) : nbhs x P ->
  {d : {posnum R} | forall y, ball x d%:num y -> P y}.
Admitted.

End Nbhs'.

Lemma coord_continuous {K : numFieldType} m n i j :
  continuous (fun M : 'M[K]_(m, n) => M i j).
Admitted.

Global Instance Proper_dnbhs_numFieldType (R : numFieldType) (x : R) :
  ProperFilter x^'.
Admitted.

#[global] Hint Extern 0 (ProperFilter _^') =>
  (apply: Proper_dnbhs_numFieldType) : typeclass_instances.
Definition pinfty_nbhs (R : numFieldType) : set (set R). exact (fun P => exists M, M \is Num.real /\ forall x, M < x -> P x). Defined.
Arguments pinfty_nbhs R : clear implicits.
Definition ninfty_nbhs (R : numFieldType) : set (set R). exact (fun P => exists M, M \is Num.real /\ forall x, x < M -> P x). Defined.
Arguments ninfty_nbhs R : clear implicits.

Notation "+oo_ R" := (pinfty_nbhs [numFieldType of R])
  (only parsing) : ring_scope.
Notation "-oo_ R" := (ninfty_nbhs [numFieldType of R])
  (only parsing) : ring_scope.

Notation "+oo" := (pinfty_nbhs _) : ring_scope.
Notation "-oo" := (ninfty_nbhs _) : ring_scope.

Section infty_nbhs_instances.
Context {R : numFieldType}.
Let R_topologicalType := [topologicalType of R].
Implicit Types r : R.

Global Instance proper_pinfty_nbhs : ProperFilter (pinfty_nbhs R).
Admitted.

Global Instance proper_ninfty_nbhs : ProperFilter (ninfty_nbhs R).
Admitted.

Lemma nbhs_pinfty_gt r : r \is Num.real -> \forall x \near +oo, r < x.
Admitted.

Lemma nbhs_pinfty_ge r : r \is Num.real -> \forall x \near +oo, r <= x.
Admitted.

Lemma nbhs_ninfty_lt r : r \is Num.real -> \forall x \near -oo, r > x.
Admitted.

Lemma nbhs_ninfty_le r : r \is Num.real -> \forall x \near -oo, r >= x.
Admitted.

Lemma nbhs_pinfty_real : \forall x \near +oo, x \is @Num.real R.
Admitted.

Lemma nbhs_ninfty_real : \forall x \near -oo, x \is @Num.real R.
Admitted.

Lemma pinfty_ex_gt (m : R) (A : set R) : m \is Num.real ->
  (\forall k \near +oo, A k) -> exists2 M, m < M & A M.
Admitted.

Lemma pinfty_ex_ge (m : R) (A : set R) : m \is Num.real ->
  (\forall k \near +oo, A k) -> exists2 M, m <= M & A M.
Admitted.

Lemma pinfty_ex_gt0 (A : set R) :
  (\forall k \near +oo, A k) -> exists2 M, M > 0 & A M.
Admitted.

Lemma near_pinfty_div2 (A : set R) :
  (\forall k \near +oo, A k) -> (\forall k \near +oo, A (k / 2)).
Admitted.

End infty_nbhs_instances.

#[global] Hint Extern 0 (is_true (_ < ?x)) => match goal with
  H : x \is_near _ |- _ => near: x; exact: nbhs_pinfty_gt end : core.
#[global] Hint Extern 0 (is_true (_ <= ?x)) => match goal with
  H : x \is_near _ |- _ => near: x; exact: nbhs_pinfty_ge end : core.
#[global] Hint Extern 0 (is_true (_ > ?x)) => match goal with
  H : x \is_near _ |- _ => near: x; exact: nbhs_ninfty_lt end : core.
#[global] Hint Extern 0 (is_true (_ >= ?x)) => match goal with
  H : x \is_near _ |- _ => near: x; exact: nbhs_ninfty_le end : core.
#[global] Hint Extern 0 (is_true (?x \is Num.real)) => match goal with
  H : x \is_near _ |- _ => near: x; exact: nbhs_pinfty_real end : core.
#[global] Hint Extern 0 (is_true (?x \is Num.real)) => match goal with
  H : x \is_near _ |- _ => near: x; exact: nbhs_ninfty_real end : core.

#[global] Hint Extern 0 (is_true (_ < ?x)%E) => match goal with
  H : x \is_near _ |- _ => near: x; exact: ereal_nbhs_pinfty_gt end : core.
#[global] Hint Extern 0 (is_true (_ <= ?x)%E) => match goal with
  H : x \is_near _ |- _ => near: x; exact: ereal_nbhs_pinfty_ge end : core.
#[global] Hint Extern 0 (is_true (_ > ?x)%E) => match goal with
  H : x \is_near _ |- _ => near: x; exact: ereal_nbhs_ninfty_lt end : core.
#[global] Hint Extern 0 (is_true (_ >= ?x)%E) => match goal with
  H : x \is_near _ |- _ => near: x; exact: ereal_nbhs_ninfty_le end : core.
#[global] Hint Extern 0 (is_true (fine ?x \is Num.real)) => match goal with
  H : x \is_near _ |- _ => near: x; exact: ereal_nbhs_pinfty_real end : core.
#[global] Hint Extern 0 (is_true (fine ?x \is Num.real)) => match goal with
  H : x \is_near _ |- _ => near: x; exact: ereal_nbhs_ninfty_real end : core.

Section cvg_infty_numField.
Context {R : numFieldType}.

Let cvgryPnum {F : set (set R)} {FF : Filter F} : [<->
  F --> +oo;
  forall A, A \is Num.real -> \forall x \near F, A <= x;
  forall A, A \is Num.real -> \forall x \near F, A < x;
  \forall A \near +oo, \forall x \near F, A < x;
  \forall A \near +oo, \forall x \near F, A <= x ].
Admitted.

Let cvgrNyPnum {F : set (set R)} {FF : Filter F} : [<->
  F --> -oo;
  forall A, A \is Num.real -> \forall x \near F, A >= x;
  forall A, A \is Num.real -> \forall x \near F, A > x;
  \forall A \near -oo, \forall x \near F, A > x;
  \forall A \near -oo, \forall x \near F, A >= x ].
Admitted.

Context {T} {F : set (set T)} {FF : Filter F}.
Implicit Types f : T -> R.

Lemma cvgryPger f :
  f @ F --> +oo <-> forall A, A \is Num.real -> \forall x \near F, A <= f x.
Admitted.

Lemma cvgryPgtr f :
  f @ F --> +oo <-> forall A, A \is Num.real -> \forall x \near F, A < f x.
Admitted.

Lemma cvgryPgty f :
  f @ F --> +oo <-> \forall A \near +oo, \forall x \near F, A < f x.
Admitted.

Lemma cvgryPgey f :
  f @ F --> +oo <-> \forall A \near +oo, \forall x \near F, A <= f x.
Admitted.

Lemma cvgrNyPler f :
  f @ F --> -oo <-> forall A, A \is Num.real -> \forall x \near F, A >= f x.
Admitted.

Lemma cvgrNyPltr f :
  f @ F --> -oo <-> forall A, A \is Num.real -> \forall x \near F, A > f x.
Admitted.

Lemma cvgrNyPltNy f :
  f @ F --> -oo <-> \forall A \near -oo, \forall x \near F, A > f x.
Admitted.

Lemma cvgrNyPleNy f :
  f @ F --> -oo <-> \forall A \near -oo, \forall x \near F, A >= f x.
Admitted.

Lemma cvgry_ger f :
  f @ F --> +oo -> forall A, A \is Num.real -> \forall x \near F, A <= f x.
Admitted.

Lemma cvgry_gtr f :
  f @ F --> +oo -> forall A, A \is Num.real -> \forall x \near F, A < f x.
Admitted.

Lemma cvgrNy_ler f :
  f @ F --> -oo -> forall A, A \is Num.real -> \forall x \near F, A >= f x.
Admitted.

Lemma cvgrNy_ltr f :
  f @ F --> -oo -> forall A, A \is Num.real -> \forall x \near F, A > f x.
Admitted.

Lemma cvgNry f : (- f @ F --> +oo) <-> (f @ F --> -oo).
Admitted.

Lemma cvgNrNy f : (- f @ F --> -oo) <-> (f @ F --> +oo).
Admitted.

End cvg_infty_numField.

Section cvg_infty_realField.
Context {R : realFieldType}.
Context {T} {F : set (set T)} {FF : Filter F} (f : T -> R).

Lemma cvgryPge : f @ F --> +oo <-> forall A, \forall x \near F, A <= f x.
Admitted.

Lemma cvgryPgt : f @ F --> +oo <-> forall A, \forall x \near F, A < f x.
Admitted.

Lemma cvgrNyPle : f @ F --> -oo <-> forall A, \forall x \near F, A >= f x.
Admitted.

Lemma cvgrNyPlt : f @ F --> -oo <-> forall A, \forall x \near F, A > f x.
Admitted.

Lemma cvgry_ge : f @ F --> +oo -> forall A, \forall x \near F, A <= f x.
Admitted.

Lemma cvgry_gt : f @ F --> +oo -> forall A, \forall x \near F, A < f x.
Admitted.

Lemma cvgrNy_le : f @ F --> -oo -> forall A, \forall x \near F, A >= f x.
Admitted.

Lemma cvgrNy_lt : f @ F --> -oo -> forall A, \forall x \near F, A > f x.
Admitted.

End cvg_infty_realField.

Section ecvg_infty_numField.

End ecvg_infty_numField.

Section ecvg_infty_realField.

End ecvg_infty_realField.

Module NormedModule.

Record mixin_of (K : numDomainType)
  (V : pseudoMetricNormedZmodType K) (scale : K -> V -> V) := Mixin {
  _ : forall (l : K) (x : V), `| scale l x | = `| l | * `| x |;
}.

Section ClassDef.

Variable K : numDomainType.

Record class_of (T : Type) := Class {
  base : PseudoMetricNormedZmodule.class_of K T ;
  lmodmixin : GRing.Lmodule.mixin_of K (GRing.Zmodule.Pack base) ;
  mixin : @mixin_of K (PseudoMetricNormedZmodule.Pack (Phant K) base)
                      (GRing.Lmodule.scale lmodmixin)
}.
Local Coercion base : class_of >-> PseudoMetricNormedZmodule.class_of.
Local Coercion base2 T (c : class_of T) : GRing.Lmodule.class_of K T. exact (@GRing.Lmodule.Class K T (base c) (lmodmixin c)). Defined.

Structure type (phK : phant K) :=
  Pack { sort; _ : class_of sort }.
Local Coercion sort : type >-> Sortclass.

Variables (phK : phant K) (T : Type) (cT : type phK).

Definition class := let: Pack _ c := cT return class_of cT in c.
Definition clone c of phant_id class c := @Pack phK T c.
Let xT := let: Pack T _ := cT in T.
Notation xclass := (class : class_of xT).

Definition pack b0 l0
                (m0 : @mixin_of K (@PseudoMetricNormedZmodule.Pack K (Phant K) T b0)
                                (GRing.Lmodule.scale l0)) :=
  fun bT b & phant_id (@PseudoMetricNormedZmodule.class K (Phant K) bT) b =>
  fun l & phant_id l0 l =>
  fun m & phant_id m0 m => Pack phK (@Class T b l m).
Definition zmodType := @GRing.Zmodule.Pack cT xclass.
Definition lmodType := @GRing.Lmodule.Pack K phK cT xclass.
Definition pointedType := @Pointed.Pack cT xclass.
Definition filteredType := @Filtered.Pack cT cT xclass.
End ClassDef.

Module Export Exports.
Coercion sort : type >-> Sortclass.
Canonical zmodType.
Canonical lmodType.
Canonical pointedType.
Canonical filteredType.
Notation normedModType K := (type (Phant K)).
Notation NormedModType K T m := (@pack _ (Phant K) T _ _ m _ _ idfun _ idfun _ idfun).
Notation NormedModMixin := Mixin.
Notation "[ 'normedModType' K 'of' T 'for' cT ]" := (@clone _ (Phant K) T cT _ idfun)
  (at level 0, format "[ 'normedModType'  K  'of'  T  'for'  cT ]") : form_scope.
Notation "[ 'normedModType' K 'of' T ]" := (@clone _ (Phant K) T _ _ id)
  (at level 0, format "[ 'normedModType'  K  'of'  T ]") : form_scope.
End Exports.

End NormedModule.

Export NormedModule.Exports.

Module Export regular_topology.

Section regular_topology.
Local Canonical pseudoMetricNormedZmodType (R : numFieldType) :=
  @PseudoMetricNormedZmodType
    R R^o
    (PseudoMetricNormedZmodule.Mixin (erefl : @ball _ R = ball_ Num.norm)).
Local Canonical normedModType (R : numFieldType) :=
  NormedModType R R^o (@NormedModMixin _ _ ( *:%R : R -> R^o -> _) (@normrM _)).
End regular_topology.

Module Export Exports.
Canonical pseudoMetricNormedZmodType.
Canonical normedModType.
End Exports.

End regular_topology.

Module Export numFieldNormedType.

Section realType.
Variable (R : realType).
Local Canonical real_normedModType :=
  [normedModType R of R for [normedModType R of R^o]].
End realType.

Section rcfType.
End rcfType.

Section archiFieldType.
End archiFieldType.

Section realFieldType.
End realFieldType.

Section numClosedFieldType.
End numClosedFieldType.

Section numFieldType.
Variable (R : numFieldType).
Local Canonical numField_lmodType := [lmodType R of R for [lmodType R of R^o]].
Local Canonical numField_pseudoMetricNormedZmodType :=
  [pseudoMetricNormedZmodType R of R for [pseudoMetricNormedZmodType R of R^o]].
Local Canonical numField_normedModType :=
  [normedModType R of R for [normedModType R of R^o]].
Definition normedMod_ringType := [ringType of numField_normedModType].
End numFieldType.

Module Export Exports.
Canonical real_normedModType.

Canonical numField_lmodType.
Canonical numField_pseudoMetricNormedZmodType.
Canonical numField_normedModType.
Canonical normedMod_ringType.
End Exports.

End numFieldNormedType.

Section NormedModule_numDomainType.

End NormedModule_numDomainType.

Section NormedModule_numFieldType.

End NormedModule_numFieldType.

Section PseudoNormedZmod_numDomainType.

End PseudoNormedZmod_numDomainType.

Section analysis_struct.

End analysis_struct.

Section open_closed_sets.

End open_closed_sets.

Section at_left_right.

End at_left_right.

Section open_itv_subset.

End open_itv_subset.

Section at_left_right_topologicalType.

End at_left_right_topologicalType.

Section at_left_right_pmNormedZmod.

End at_left_right_pmNormedZmod.

Section at_left_rightR.

End at_left_rightR.

Section realFieldType.

End realFieldType.

Section contractions.

End contractions.

Section PseudoNormedZMod_numFieldType.

End PseudoNormedZMod_numFieldType.

Section NormedModule_numFieldType.

Section cvgr_norm_infty.

End cvgr_norm_infty.

End NormedModule_numFieldType.

Module Export NbhsNorm.
End NbhsNorm.

Section hausdorff.

End hausdorff.

Module Export NearNorm.
End NearNorm.

Section mx_norm.

End mx_norm.

Section matrix_NormedModule.

End matrix_NormedModule.

Section prod_PseudoMetricNormedZmodule.

End prod_PseudoMetricNormedZmodule.

Section prod_NormedModule.

End prod_NormedModule.

Section example_of_sharing.

End example_of_sharing.

Section prod_NormedModule_lemmas.

End prod_NormedModule_lemmas.

Section NVS_continuity_pseudoMetricNormedZmodType.

End NVS_continuity_pseudoMetricNormedZmodType.

Section NVS_continuity_normedModType.

End NVS_continuity_normedModType.

Section NVS_continuity_mul.

End NVS_continuity_mul.

Section cvg_composition_pseudometric.

End cvg_composition_pseudometric.

Section cvg_composition_normed.

End cvg_composition_normed.

Section cvg_composition_field.

End cvg_composition_field.

Section limit_composition_pseudometric.

End limit_composition_pseudometric.

Section limit_composition_normed.

End limit_composition_normed.

Section limit_composition_field.

End limit_composition_field.

Section cvg_composition_field_proper.

End cvg_composition_field_proper.

Section ProperFilterRealType.

End ProperFilterRealType.

Section local_continuity.

End local_continuity.

Section nbhs_ereal.
End nbhs_ereal.

Section cvg_fin.

Section filter.

End filter.

Section limit.

End limit.

End cvg_fin.

Section ecvg_realFieldType.

End ecvg_realFieldType.

Section max_cts.

End max_cts.

Section pseudoMetricDist.

End pseudoMetricDist.

Section edist_inf.

End edist_inf.

Section urysohn_separator.

End urysohn_separator.

Section topological_urysohn_separator.

Section urysohn_facts.

End urysohn_facts.
End topological_urysohn_separator.

Section Urysohn.
Section normal_uniform_separators.

End normal_uniform_separators.
End Urysohn.

Section normalP.

End normalP.

Section pseudometric_normal.

End pseudometric_normal.

Section open_closed_sets_ereal.

End open_closed_sets_ereal.

Section closure_left_right_open.

End closure_left_right_open.

Module CompleteNormedModule.

Section ClassDef.
End ClassDef.

Module Export Exports.
End Exports.

End CompleteNormedModule.

Section cvg_seq_bounded.

End cvg_seq_bounded.

Section interval.

End interval.

Section ereal_is_hausdorff.

End ereal_is_hausdorff.

Section ProperFilterERealType.

End ProperFilterERealType.

Section ecvg_realFieldType_proper.

End ecvg_realFieldType_proper.

Section cvg_0_pinfty.

End cvg_0_pinfty.

Section FilterRealType.

End FilterRealType.

Section TopoProperFilterRealType.

End TopoProperFilterRealType.

Section FilterERealType.

End FilterERealType.

Section TopoProperFilterERealType.

End TopoProperFilterERealType.

Section open_union_rat.

End open_union_rat.

Section interval_realType.
End interval_realType.

Section segment.

End segment.

Section Shift.

Context {R : zmodType} {T : Type}.

Definition shift (x y : R) := y + x.

End Shift.

Section continuous.

End continuous.

Section ball_realFieldType.

End ball_realFieldType.

Section Closed_Ball.

End Closed_Ball.

Section image_interval.

End image_interval.

Section LinearContinuousBounded.

End LinearContinuousBounded.

Section center_radius.

End center_radius.

Section center_radius_realFieldType.

End center_radius_realFieldType.

Section vitali_lemma_finite.

End vitali_lemma_finite.

Section vitali_collection_partition.

End vitali_collection_partition.

Section vitali_lemma_infinite.

End vitali_lemma_infinite.

End normedtype.

End mathcomp_DOT_analysis_DOT_normedtype_WRAPPED.
Module Export mathcomp.
Module Export analysis.
Module normedtype.
Include mathcomp_DOT_analysis_DOT_normedtype_WRAPPED.normedtype.
End normedtype.
Import mathcomp.ssreflect.all_ssreflect.
Import mathcomp.algebra.ssralg.
Import mathcomp.algebra.ssrnum.
Import mathcomp.classical.classical_sets.
Import mathcomp.classical.functions.
Import mathcomp.analysis.reals.
Import mathcomp.analysis.topology.
Import mathcomp.analysis.normedtype.

Local Open Scope ring_scope.
Local Open Scope classical_set_scope.
Reserved Notation "''D_' v f c" (at level 10, v, f at next level,
  format "''D_' v  f  c").

Section DifferentialR.

Context {R : numFieldType} {V W : normedModType R}.

Definition derive (f : V -> W) a v :=
  lim ((fun h => h^-1 *: ((f \o shift a) (h *: v) - f a)) @ 0^').
Local Notation "''D_' v f c" := (derive f c v).

Definition derivable (f : V -> W) a v :=
  cvg ((fun h => h^-1 *: ((f \o shift a) (h *: v) - f a)) @ 0^').

Class is_derive (a v : V) (f : V -> W) (df : W) := DeriveDef {
  ex_derive : derivable f a v;
  derive_val : 'D_v f a = df
}.

End DifferentialR.

Section DeriveVW.
Variables (R : numFieldType) (V W : normedModType R).

Global Instance is_derive_cst (a : W) (x v : V) : is_derive x v (cst a) 0.
Admitted.

End DeriveVW.

Section Derive_lemmasVW.
Variables (R : numFieldType) (V W : normedModType R).

Global Instance is_deriveD f g (x v : V) (df dg : W) :
  is_derive x v f df -> is_derive x v g dg -> is_derive x v (f + g) (df + dg).
Admitted.

Global Instance is_deriveN f (x v : V) (df : W) :
  is_derive x v f df -> is_derive x v (- f) (- df).
Admitted.

End Derive_lemmasVW.

Section Derive_lemmasVR.
Variables (R : numFieldType) (V : normedModType R).

Global Instance is_deriveM f g (x v : V) (df dg : R) :
  is_derive x v f df -> is_derive x v g dg ->
  is_derive x v (f * g) (f x *: dg + g x *: df).
Admitted.

End Derive_lemmasVR.

Section is_derive_instances.
Variables (R : numFieldType) (V : normedModType R).

Global Instance is_derive_id (x v : V) : is_derive x v id v.
Admitted.

End is_derive_instances.

Lemma trigger_derive (R : realType) (f : R -> R) x x1 y1 :
  is_derive x 1 f x1 -> x1 = y1 -> is_derive x 1 f y1.
Admitted.

Section is_derive_inverse.
Variable R : realType.

Lemma is_derive_0_is_cst (f : R -> R) x y :
  (forall x, is_derive x 1 f 0) -> f x = f y.
Admitted.

Global Instance is_derive1_comp (f g : R -> R) (x a b : R) :
  is_derive (g x) 1 f a -> is_derive x 1 g b ->
  is_derive x 1 (f \o g) (a * b).
Admitted.

End is_derive_inverse.
Import mathcomp.analysis.nsatz_realtype.
Import GRing.Theory.
Variable R : realType.
Implicit Types x y : R.
Definition sin x : R.
Admitted.

Lemma sin0 : sin 0 = 0.
Admitted.
Definition cos x : R.
Admitted.

Lemma cos0 : cos 0 = 1.
Admitted.

Global Instance is_derive_sin x : is_derive x 1 sin (cos x).
Admitted.

Global Instance is_derive_cos x : i
Intermediate Coq File (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 563KiB file on GitHub Actions Artifacts under build.log)
ef]               refs/pull/9853/head  -> origin/pr/9853
 * [new ref]               refs/pull/9854/head  -> origin/pr/9854
 * [new ref]               refs/pull/9855/head  -> origin/pr/9855
 * [new ref]               refs/pull/9856/head  -> origin/pr/9856
 * [new ref]               refs/pull/9858/head  -> origin/pr/9858
 * [new ref]               refs/pull/9859/head  -> origin/pr/9859
 * [new ref]               refs/pull/986/head   -> origin/pr/986
 * [new ref]               refs/pull/9860/head  -> origin/pr/9860
 * [new ref]               refs/pull/9861/head  -> origin/pr/9861
 * [new ref]               refs/pull/9864/head  -> origin/pr/9864
 * [new ref]               refs/pull/9866/head  -> origin/pr/9866
 * [new ref]               refs/pull/9867/head  -> origin/pr/9867
 * [new ref]               refs/pull/9869/head  -> origin/pr/9869
 * [new ref]               refs/pull/987/head   -> origin/pr/987
 * [new ref]               refs/pull/9870/head  -> origin/pr/9870
 * [new ref]               refs/pull/9871/head  -> origin/pr/9871
 * [new ref]               refs/pull/9872/head  -> origin/pr/9872
 * [new ref]               refs/pull/9873/head  -> origin/pr/9873
 * [new ref]               refs/pull/9874/head  -> origin/pr/9874
 * [new ref]               refs/pull/9875/head  -> origin/pr/9875
 * [new ref]               refs/pull/9876/head  -> origin/pr/9876
 * [new ref]               refs/pull/9878/head  -> origin/pr/9878
 * [new ref]               refs/pull/988/head   -> origin/pr/988
 * [new ref]               refs/pull/9880/head  -> origin/pr/9880
 * [new ref]               refs/pull/9881/head  -> origin/pr/9881
 * [new ref]               refs/pull/9882/head  -> origin/pr/9882
 * [new ref]               refs/pull/9883/head  -> origin/pr/9883
 * [new ref]               refs/pull/9884/head  -> origin/pr/9884
 * [new ref]               refs/pull/9887/head  -> origin/pr/9887
 * [new ref]               refs/pull/9889/head  -> origin/pr/9889
 * [new ref]               refs/pull/989/head   -> origin/pr/989
 * [new ref]               refs/pull/9890/head  -> origin/pr/9890
 * [new ref]               refs/pull/9891/head  -> origin/pr/9891
 * [new ref]               refs/pull/9895/head  -> origin/pr/9895
 * [new ref]               refs/pull/9896/head  -> origin/pr/9896
 * [new ref]               refs/pull/9897/head  -> origin/pr/9897
 * [new ref]               refs/pull/9898/head  -> origin/pr/9898
 * [new ref]               refs/pull/99/head    -> origin/pr/99
 * [new ref]               refs/pull/990/head   -> origin/pr/990
 * [new ref]               refs/pull/9900/head  -> origin/pr/9900
 * [new ref]               refs/pull/9901/head  -> origin/pr/9901
 * [new ref]               refs/pull/9903/head  -> origin/pr/9903
 * [new ref]               refs/pull/9904/head  -> origin/pr/9904
 * [new ref]               refs/pull/9905/head  -> origin/pr/9905
 * [new ref]               refs/pull/9906/head  -> origin/pr/9906
 * [new ref]               refs/pull/9908/head  -> origin/pr/9908
 * [new ref]               refs/pull/9909/head  -> origin/pr/9909
 * [new ref]               refs/pull/991/head   -> origin/pr/991
 * [new ref]               refs/pull/9910/head  -> origin/pr/9910
 * [new ref]               refs/pull/9914/head  -> origin/pr/9914
 * [new ref]               refs/pull/9915/head  -> origin/pr/9915
 * [new ref]               refs/pull/9917/head  -> origin/pr/9917
 * [new ref]               refs/pull/9918/head  -> origin/pr/9918
 * [new ref]               refs/pull/992/head   -> origin/pr/992
 * [new ref]               refs/pull/9923/head  -> origin/pr/9923
 * [new ref]               refs/pull/9924/head  -> origin/pr/9924
 * [new ref]               refs/pull/9925/head  -> origin/pr/9925
 * [new ref]               refs/pull/9926/head  -> origin/pr/9926
 * [new ref]               refs/pull/9927/head  -> origin/pr/9927
 * [new ref]               refs/pull/9928/head  -> origin/pr/9928
 * [new ref]               refs/pull/993/head   -> origin/pr/993
 * [new ref]               refs/pull/9931/head  -> origin/pr/9931
 * [new ref]               refs/pull/9933/head  -> origin/pr/9933
 * [new ref]               refs/pull/9935/head  -> origin/pr/9935
 * [new ref]               refs/pull/9938/head  -> origin/pr/9938
 * [new ref]               refs/pull/9939/head  -> origin/pr/9939
 * [new ref]               refs/pull/994/head   -> origin/pr/994
 * [new ref]               refs/pull/9941/head  -> origin/pr/9941
 * [new ref]               refs/pull/9943/head  -> origin/pr/9943
 * [new ref]               refs/pull/9946/head  -> origin/pr/9946
 * [new ref]               refs/pull/9947/head  -> origin/pr/9947
 * [new ref]               refs/pull/9949/head  -> origin/pr/9949
 * [new ref]               refs/pull/995/head   -> origin/pr/995
 * [new ref]               refs/pull/9952/head  -> origin/pr/9952
 * [new ref]               refs/pull/9953/head  -> origin/pr/9953
 * [new ref]               refs/pull/9957/head  -> origin/pr/9957
 * [new ref]               refs/pull/9959/head  -> origin/pr/9959
 * [new ref]               refs/pull/996/head   -> origin/pr/996
 * [new ref]               refs/pull/9961/head  -> origin/pr/9961
 * [new ref]               refs/pull/9962/head  -> origin/pr/9962
 * [new ref]               refs/pull/9963/head  -> origin/pr/9963
 * [new ref]               refs/pull/9964/head  -> origin/pr/9964
 * [new ref]               refs/pull/9966/head  -> origin/pr/9966
 * [new ref]               refs/pull/9968/head  -> origin/pr/9968
 * [new ref]               refs/pull/997/head   -> origin/pr/997
 * [new ref]               refs/pull/9972/head  -> origin/pr/9972
 * [new ref]               refs/pull/9973/head  -> origin/pr/9973
 * [new ref]               refs/pull/9977/head  -> origin/pr/9977
 * [new ref]               refs/pull/9978/head  -> origin/pr/9978
 * [new ref]               refs/pull/998/head   -> origin/pr/998
 * [new ref]               refs/pull/9980/head  -> origin/pr/9980
 * [new ref]               refs/pull/9981/head  -> origin/pr/9981
 * [new ref]               refs/pull/9982/head  -> origin/pr/9982
 * [new ref]               refs/pull/9983/head  -> origin/pr/9983
 * [new ref]               refs/pull/9984/head  -> origin/pr/9984
 * [new ref]               refs/pull/9985/head  -> origin/pr/9985
 * [new ref]               refs/pull/9987/head  -> origin/pr/9987
 * [new ref]               refs/pull/9988/head  -> origin/pr/9988
 * [new ref]               refs/pull/9989/head  -> origin/pr/9989
 * [new ref]               refs/pull/999/head   -> origin/pr/999
 * [new ref]               refs/pull/9990/head  -> origin/pr/9990
 * [new ref]               refs/pull/9995/head  -> origin/pr/9995
 * [new ref]               refs/pull/9996/head  -> origin/pr/9996
 * [new ref]               refs/pull/9997/head  -> origin/pr/9997
 * [new ref]               refs/pull/9998/head  -> origin/pr/9998
 * [new ref]               refs/pull/9999/head  -> origin/pr/9999
++ cp -a coq coq-failing
++ cp -a coq coq-passing
++ printf '::endgroup::\n'
::endgroup::
++ printf '::group::download failing artifacts @ %s %s\n' df45fd0bea8b9b8ec8e48dd5d8716094c57e9ad9 'https://gitlab.inria.fr/coq/coq/-/jobs/3600455/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/3600507/artifacts/download'
::group::download failing artifacts @ df45fd0bea8b9b8ec8e48dd5d8716094c57e9ad9 https://gitlab.inria.fr/coq/coq/-/jobs/3600455/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/3600507/artifacts/download
++ printf '::warning::download failing artifacts @ %s %s\n' df45fd0bea8b9b8ec8e48dd5d8716094c57e9ad9 'https://gitlab.inria.fr/coq/coq/-/jobs/3600455/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/3600507/artifacts/download'
::warning::download failing artifacts @ df45fd0bea8b9b8ec8e48dd5d8716094c57e9ad9 https://gitlab.inria.fr/coq/coq/-/jobs/3600455/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/3600507/artifacts/download
++ pushd coq-failing
/github/workspace/builds/coq/coq-failing /github/workspace/builds/coq /github/workspace
++ git checkout df45fd0bea8b9b8ec8e48dd5d8716094c57e9ad9
fatal: reference is not a tree: df45fd0bea8b9b8ec8e48dd5d8716094c57e9ad9
Minimization Log (truncated to last 8.0KiB; full 575KiB file on GitHub Actions Artifacts under bug.log)
ef]               refs/pull/9853/head  -> origin/pr/9853
 * [new ref]               refs/pull/9854/head  -> origin/pr/9854
 * [new ref]               refs/pull/9855/head  -> origin/pr/9855
 * [new ref]               refs/pull/9856/head  -> origin/pr/9856
 * [new ref]               refs/pull/9858/head  -> origin/pr/9858
 * [new ref]               refs/pull/9859/head  -> origin/pr/9859
 * [new ref]               refs/pull/986/head   -> origin/pr/986
 * [new ref]               refs/pull/9860/head  -> origin/pr/9860
 * [new ref]               refs/pull/9861/head  -> origin/pr/9861
 * [new ref]               refs/pull/9864/head  -> origin/pr/9864
 * [new ref]               refs/pull/9866/head  -> origin/pr/9866
 * [new ref]               refs/pull/9867/head  -> origin/pr/9867
 * [new ref]               refs/pull/9869/head  -> origin/pr/9869
 * [new ref]               refs/pull/987/head   -&g
10000
t; origin/pr/987
 * [new ref]               refs/pull/9870/head  -> origin/pr/9870
 * [new ref]               refs/pull/9871/head  -> origin/pr/9871
 * [new ref]               refs/pull/9872/head  -> origin/pr/9872
 * [new ref]               refs/pull/9873/head  -> origin/pr/9873
 * [new ref]               refs/pull/9874/head  -> origin/pr/9874
 * [new ref]               refs/pull/9875/head  -> origin/pr/9875
 * [new ref]               refs/pull/9876/head  -> origin/pr/9876
 * [new ref]               refs/pull/9878/head  -> origin/pr/9878
 * [new ref]               refs/pull/988/head   -> origin/pr/988
 * [new ref]               refs/pull/9880/head  -> origin/pr/9880
 * [new ref]               refs/pull/9881/head  -> origin/pr/9881
 * [new ref]               refs/pull/9882/head  -> origin/pr/9882
 * [new ref]               refs/pull/9883/head  -> origin/pr/9883
 * [new ref]               refs/pull/9884/head  -> origin/pr/9884
 * [new ref]               refs/pull/9887/head  -> origin/pr/9887
 * [new ref]               refs/pull/9889/head  -> origin/pr/9889
 * [new ref]               refs/pull/989/head   -> origin/pr/989
 * [new ref]               refs/pull/9890/head  -> origin/pr/9890
 * [new ref]               refs/pull/9891/head  -> origin/pr/9891
 * [new ref]               refs/pull/9895/head  -> origin/pr/9895
 * [new ref]               refs/pull/9896/head  -> origin/pr/9896
 * [new ref]               refs/pull/9897/head  -> origin/pr/9897
 * [new ref]               refs/pull/9898/head  -> origin/pr/9898
 * [new ref]               refs/pull/99/head    -> origin/pr/99
 * [new ref]               refs/pull/990/head   -> origin/pr/990
 * [new ref]               refs/pull/9900/head  -> origin/pr/9900
 * [new ref]               refs/pull/9901/head  -> origin/pr/9901
 * [new ref]               refs/pull/9903/head  -> origin/pr/9903
 * [new ref]               refs/pull/9904/head  -> origin/pr/9904
 * [new ref]               refs/pull/9905/head  -> origin/pr/9905
 * [new ref]               refs/pull/9906/head  -> origin/pr/9906
 * [new ref]               refs/pull/9908/head  -> origin/pr/9908
 * [new ref]               refs/pull/9909/head  -> origin/pr/9909
 * [new ref]               refs/pull/991/head   -> origin/pr/991
 * [new ref]               refs/pull/9910/head  -> origin/pr/9910
 * [new ref]               refs/pull/9914/head  -> origin/pr/9914
 * [new ref]               refs/pull/9915/head  -> origin/pr/9915
 * [new ref]               refs/pull/9917/head  -> origin/pr/9917
 * [new ref]               refs/pull/9918/head  -> origin/pr/9918
 * [new ref]               refs/pull/992/head   -> origin/pr/992
 * [new ref]               refs/pull/9923/head  -> origin/pr/9923
 * [new ref]               refs/pull/9924/head  -> origin/pr/9924
 * [new ref]               refs/pull/9925/head  -> origin/pr/9925
 * [new ref]               refs/pull/9926/head  -> origin/pr/9926
 * [new ref]               refs/pull/9927/head  -> origin/pr/9927
 * [new ref]               refs/pull/9928/head  -> origin/pr/9928
 * [new ref]               refs/pull/993/head   -> origin/pr/993
 * [new ref]               refs/pull/9931/head  -> origin/pr/9931
 * [new ref]               refs/pull/9933/head  -> origin/pr/9933
 * [new ref]               refs/pull/9935/head  -> origin/pr/9935
 * [new ref]               refs/pull/9938/head  -> origin/pr/9938
 * [new ref]               refs/pull/9939/head  -> origin/pr/9939
 * [new ref]               refs/pull/994/head   -> origin/pr/994
 * [new ref]               refs/pull/9941/head  -> origin/pr/9941
 * [new ref]               refs/pull/9943/head  -> origin/pr/9943
 * [new ref]               refs/pull/9946/head  -> origin/pr/9946
 * [new ref]               refs/pull/9947/head  -> origin/pr/9947
 * [new ref]               refs/pull/9949/head  -> origin/pr/9949
 * [new ref]               refs/pull/995/head   -> origin/pr/995
 * [new ref]               refs/pull/9952/head  -> origin/pr/9952
 * [new ref]               refs/pull/9953/head  -> origin/pr/9953
 * [new ref]               refs/pull/9957/head  -> origin/pr/9957
 * [new ref]               refs/pull/9959/head  -> origin/pr/9959
 * [new ref]               refs/pull/996/head   -> origin/pr/996
 * [new ref]               refs/pull/9961/head  -> origin/pr/9961
 * [new ref]               refs/pull/9962/head  -> origin/pr/9962
 * [new ref]               refs/pull/9963/head  -> origin/pr/9963
 * [new ref]               refs/pull/9964/head  -> origin/pr/9964
 * [new ref]               refs/pull/9966/head  -> origin/pr/9966
 * [new ref]               refs/pull/9968/head  -> origin/pr/9968
 * [new ref]               refs/pull/997/head   -> origin/pr/997
 * [new ref]               refs/pull/9972/head  -> origin/pr/9972
 * [new ref]               refs/pull/9973/head  -> origin/pr/9973
 * [new ref]               refs/pull/9977/head  -> origin/pr/9977
 * [new ref]               refs/pull/9978/head  -> origin/pr/9978
 * [new ref]               refs/pull/998/head   -> origin/pr/998
 * [new ref]               refs/pull/9980/head  -> origin/pr/9980
 * [new ref]               refs/pull/9981/head  -> origin/pr/9981
 * [new ref]               refs/pull/9982/head  -> origin/pr/9982
 * [new ref]               refs/pull/9983/head  -> origin/pr/9983
 * [new ref]               refs/pull/9984/head  -> origin/pr/9984
 * [new ref]               refs/pull/9985/head  -> origin/pr/9985
 * [new ref]               refs/pull/9987/head  -> origin/pr/9987
 * [new ref]               refs/pull/9988/head  -> origin/pr/9988
 * [new ref]               refs/pull/9989/head  -> origin/pr/9989
 * [new ref]               refs/pull/999/head   -> origin/pr/999
 * [new ref]               refs/pull/9990/head  -> origin/pr/9990
 * [new ref]               refs/pull/9995/head  -> origin/pr/9995
 * [new ref]               refs/pull/9996/head  -> origin/pr/9996
 * [new ref]               refs/pull/9997/head  -> origin/pr/9997
 * [new ref]               refs/pull/9998/head  -> origin/pr/9998
 * [new ref]               refs/pull/9999/head  -> origin/pr/9999
++ cp -a coq coq-failing
++ cp -a coq coq-passing
++ printf '::endgroup::\n'
::endgroup::
++ printf '::group::download failing artifacts @ %s %s\n' df45fd0bea8b9b8ec8e48dd5d8716094c57e9ad9 'https://gitlab.inria.fr/coq/coq/-/jobs/3600455/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/3600507/artifacts/download'
::group::download failing artifacts @ df45fd0bea8b9b8ec8e48dd5d8716094c57e9ad9 https://gitlab.inria.fr/coq/coq/-/jobs/3600455/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/3600507/artifacts/download
++ printf '::warning::download failing artifacts @ %s %s\n' df45fd0bea8b9b8ec8e48dd5d8716094c57e9ad9 'https://gitlab.inria.fr/coq/coq/-/jobs/3600455/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/3600507/artifacts/download'
::warning::download failing artifacts @ df45fd0bea8b9b8ec8e48dd5d8716094c57e9ad9 https://gitlab.inria.fr/coq/coq/-/jobs/3600455/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/3600507/artifacts/download
++ pushd coq-failing
/github/workspace/builds/coq/coq-failing /github/workspace/builds/coq /github/workspace
++ git checkout df45fd0bea8b9b8ec8e48dd5d8716094c57e9ad9
fatal: reference is not a tree: df45fd0bea8b9b8ec8e48dd5d8716094c57e9ad9

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.

@SkySkimmer SkySkimmer added the request: full CI Use this label when you want your next push to trigger a full CI. label Nov 16, 2023
@coqbot-app coqbot-app bot removed the request: full CI Use this label when you want your next push to trigger a full CI. label Nov 16, 2023
Copy link
Contributor
coqbot-app bot commented Nov 16, 2023

The job library:ci-fiat_crypto_legacy has failed in allow failure mode
ping @JasonGross

@SkySkimmer SkySkimmer added the needs: fixing The proposed code change is broken. label Nov 16, 2023
Copy link
Contributor
coqbot-app bot commented Nov 16, 2023

🏁 Bench results:

┌─────────────────────────────────────┬─────────────────────────┬─────────────────────────────────────┬───────────────────────────────────────┬──────────────────────────┐
│                                     │      user time [s]      │             CPU cycles              │           CPU instructions            │  max resident mem [KB]   │
│                                     │                         │                                     │                                       │                          │
│            package_name             │   NEW      OLD    PDIFF │      NEW            OLD       PDIFF │      NEW             OLD        PDIFF │   NEW      OLD    PDIFF  │
├─────────────────────────────────────┼─────────────────────────┼─────────────────────────────────────┼───────────────────────────────────────┼──────────────────────────┤
│                         coq-coqutil │   41.62    42.25  -1.49 │  187832601993   188564275326  -0.39 │   271666652312    271534252138   0.05 │  600000   599904    0.02 │
│             coq-metacoq-safechecker │  378.59   382.34  -0.98 │ 1731798236072  1749360894336  -1.00 │  2897878265830   2897902710250  -0.00 │ 1870796  1871904   -0.06 │
│                             coq-vst │  864.03   870.20  -0.71 │ 3930030465182  3957229755020  -0.69 │  6570644635507   6570110328760   0.01 │ 1906168  1906144    0.00 │
│                        coq-rewriter │  374.23   376.80  -0.68 │ 1708542670427  1719409193350  -0.63 │  2786494626116   2786573154589  -0.00 │ 1260384  1260376    0.00 │
│                            coq-hott │  161.91   162.82  -0.56 │  730351896758   733024961546  -0.36 │  1157514907075   1157648230501  -0.01 │  628644   628704   -0.01 │
│                            coq-core │  117.49   118.04  -0.47 │  475592817453   476260206537  -0.14 │   498750924976    498639341827   0.02 │  369488   369568   -0.02 │
│            coq-metacoq-translations │   18.71    18.79  -0.43 │   83480256027    83643711963  -0.20 │   133731696065    133715758246   0.01 │  840884   841736   -0.10 │
│               coq-mathcomp-fingroup │   39.79    39.95  -0.40 │  181396657149   182199858489  -0.44 │   273660177117    273581528744   0.03 │  559928   559820    0.02 │
│                       coq-equations │   11.49    11.53  -0.35 │   49305199270    49309823826  -0.01 │    77925312073     77916500713   0.01 │  428268   432488   -0.98 │
│                   coq-iris-examples │  471.83   473.41  -0.33 │ 2142645774737  2149011807157  -0.30 │  3273222500528   3273515417841  -0.01 │ 1064784  1064740    0.00 │
│                         coq-unimath │ 1607.60  1612.60  -0.31 │ 7325491037280  7346724466976  -0.29 │ 14229261779923  14226241590403   0.02 │ 1305060  1305432   -0.03 │
│          coq-performance-tests-lite │  741.90   743.77  -0.25 │ 3359619265114  3367901299588  -0.25 │  5892323510410   5892878911563  -0.01 │ 1899316  1897924    0.07 │
│                                 coq │  690.11   691.60  -0.22 │ 3007280368607  3016575625806  -0.31 │  5559501431859   5575741780587  -0.29 │ 1878096  2103592  -10.72 │
│                  coq-mathcomp-field │  219.13   219.59  -0.21 │  998392746452  1000601960368  -0.22 │  1792544602714   1792596529736  -0.00 │ 1506724  1506784   -0.00 │
│                       coq-fourcolor │ 1516.63  1519.70  -0.20 │ 6921435090830  6934346325652  -0.19 │ 12456382070904  12455701793779   0.01 │ 2335740  2335748   -0.00 │
│              coq-mathcomp-ssreflect │  180.74   181.10  -0.20 │  826665726533   828553350785  -0.23 │  1438589690850   1438761990139  -0.01 │ 1234260  1234612   -0.03 │
│                           coq-color │  239.28   239.75  -0.20 │ 1082245056559  1082817605715  -0.05 │  1567824429353   1568045217960  -0.01 │ 1124588  1126312   -0.15 │
│ coq-neural-net-interp-computed-lite │  341.05   341.71  -0.19 │ 1560478347075  1562118965406  -0.11 │  3423376291946   3423413114971  -0.00 │ 1138476  1136412    0.18 │
│               coq-mathcomp-solvable │  147.15   147.39  -0.16 │  671228721626   672014584626  -0.12 │  1088397369119   1089070491327  -0.06 │  930344   932636   -0.25 │
│                            coq-corn │  796.46   797.66  -0.15 │ 3628352189857  3632721407442  -0.12 │  5619945431440   5621607851879  -0.03 │  764452   766548   -0.27 │
│                        coq-coqprime │   48.06    48.13  -0.15 │  218470287997   218535021535  -0.03 │   330243411459    330207265804   0.01 │  780224   780172    0.01 │
│                   coq-metacoq-pcuic │  639.02   639.79  -0.12 │ 2900314081377  2904420938198  -0.14 │  4227570711902   4227461957843   0.00 │ 2023272  2027456   -0.21 │
│                      coq-coquelicot │   39.03    39.05  -0.05 │  175007038913   175144067186  -0.08 │   243258093301    243360364835  -0.04 │  827312   826480    0.10 │
│                 coq-category-theory │  809.95   810.24  -0.04 │ 3698841574296  3701550687925  -0.07 │  6499287773739   6501862618016  -0.04 │  988124   987672    0.05 │
│                 coq-metacoq-erasure │  360.53   360.56  -0.01 │ 1637583254165  1638845116993  -0.08 │  2587390176128   2587828131877  -0.02 │ 1831124  1830568    0.03 │
│                        coq-bedrock2 │  380.41   380.43  -0.01 │ 1737853111479  1738119378905  -0.02 │  3389634046110   3389499321462   0.00 │  869224   867856    0.16 │
│                           coq-verdi │   49.34    49.34   0.00 │  223809601530   223872475518  -0.03 │   339863658820    340100240815  -0.07 │  527620   527212    0.08 │
│              coq-mathcomp-odd-order │  855.46   855.42   0.00 │ 3911184646555  3911756754445  -0.01 │  6508496099442   6508437561118   0.00 │ 1622240  1622464   -0.01 │
│               coq-engine-bench-lite │  162.75   162.73   0.01 │  698138307822   698833912288  -0.10 │  1302317650219   1307005545245  -0.36 │ 1110516  1110404    0.01 │
│                    coq-math-classes │   89.25    89.23   0.02 │  404201908407   404153011957   0.01 │   563879972496    563934734555  -0.01 │  522452   520724    0.33 │
│                        coq-compcert │  288.89   288.82   0.02 │ 1308811453172  1310328871329  -0.12 │  1996350958276   1996303222459   0.00 │ 1153704  1149168    0.39 │
│                          coq-stdlib │  370.46   370.31   0.04 │ 1588085059116  1586428987144   0.10 │  1381666719654   1381862120882  -0.01 │  686904   697304   -1.49 │
│                      coq-verdi-raft │  599.52   598.97   0.09 │ 2735222277260  2734927123140   0.01 │  4237493991721   4237705104066  -0.00 │  846744   846776   -0.00 │
│              coq-mathcomp-character │  137.99   137.80   0.14 │  629152281153   628221573988   0.15 │  1022684320450   1022618885050   0.01 │ 1274288  1274076    0.02 │
│                         coq-bignums │   29.93    29.86   0.23 │  135982101386   135819665537   0.12 │   193828285221    193780832732   0.02 │  490940   488440    0.51 │
│                coq-metacoq-template │  154.90   154.48   0.27 │  692309304577   690445708508   0.27 │  1074844318283   1074749154809   0.01 │ 1302012  1303496   -0.11 │
│                    coq-fiat-parsers │  336.55   335.62   0.28 │ 1512596392739  1509554383198   0.20 │  2499796044205   2499637061911   0.01 │ 2430876  2430472    0.02 │
│                coq-mathcomp-algebra │  475.18   473.15   0.43 │ 2165593026664  2156485964961   0.42 │  3974965342827   3974877867124   0.00 │ 1410032  1410732   -0.05 │
│                       coq-fiat-core │   60.82    60.56   0.43 │  262797646126   261148314180   0.63 │   382475931857    382417626498   0.02 │  492872   493052   -0.04 │
│         coq-rewriter-perf-SuperFast │  763.11   758.49   0.61 │ 3467370037207  3445860454631   0.62 │  5880163560156   5880668083677  -0.01 │ 1379328  1379296    0.00 │
└─────────────────────────────────────┴─────────────────────────┴─────────────────────────────────────┴───────────────────────────────────────┴──────────────────────────┘

INFO: failed to install
coq-fiat-crypto-with-bedrock

🐢 Top 25 slow downs
┌─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│                                                              TOP 25 SLOW DOWNS                                                              │
│                                                                                                                                             │
│   OLD      NEW     DIFF    %DIFF    Ln                     FILE                                                                             │
├─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ 42.8400  43.4260  0.5860    1.37%   236  coq-rewriter-perf-SuperFast/src/Rewriter/Rewriter/Examples/PerfTesting/LiftLetsMap.v.html          │
│  1.9870   2.4820  0.4950   24.91%   736  coq-stdlib/Reals/Cauchy/ConstructiveCauchyReals.v.html                                             │
│  0.2180   0.5560  0.3380  155.05%    12  coq-stdlib/MSets/MSets.v.html                                                                      │
│ 27.4580  27.7670  0.3090    1.13%    12  coq-fourcolor/theories/job618to622.v.html                                                          │
│  7.4000   7.6940  0.2940    3.97%  1225  coq-unimath/UniMath/CategoryTheory/DisplayedCats/Examples/Reindexing.v.html                        │
│ 28.8600  29.1510  0.2910    1.01%    12  coq-fourcolor/theories/job531to534.v.html                                                          │
│ 26.7790  27.0580  0.2790    1.04%    12  coq-fourcolor/theories/job319to322.v.html                                                          │
│  0.6300   0.8850  0.2550   40.48%   170  coq-stdlib/Numbers/HexadecimalNat.v.html                                                           │
│ 24.4720  24.7230  0.2510    1.03%    12  coq-fourcolor/theories/job303to306.v.html                                                          │
│  0.7020   0.9380  0.2360   33.62%   160  coq-stdlib/Numbers/HexadecimalNat.v.html                                                           │
│  0.0870   0.2750  0.1880  216.09%   312  coq-stdlib/Reals/Abstract/ConstructiveAbs.v.html                                                   │
│ 33.9610  34.1430  0.1820    0.54%    12  coq-fourcolor/theories/job254to270.v.html                                                          │
│  0.6070   0.7710  0.1640   27.02%   200  coq-stdlib/Numbers/HexadecimalNat.v.html                                                           │
│  6.5580   6.7130  0.1550    2.36%   604  coq-unimath/UniMath/CategoryTheory/EnrichedCats/Colimits/Examples/StructureEnrichedColimits.v.html │
│  0.1250   0.2740  0.1490  119.20%   811  coq-stdlib/Reals/Abstract/ConstructiveReals.v.html                                                 │
│  0.4030   0.5500  0.1470   36.48%    82  coq-stdlib/Numbers/Cyclic/Int63/Sint63.v.html                                                      │
│  0.2110   0.3580  0.1470   69.67%    16  coq-stdlib/Numbers/HexadecimalZ.v.html                                                             │
│  0.4700   0.6160  0.1460   31.06%    21  coq-stdlib/MSets/MSetPositive.v.html                                                               │
│ 27.3050  27.4490  0.1440    0.53%    12  coq-fourcolor/theories/job291to294.v.html                                                          │
│  0.2350   0.3750  0.1400   59.57%    17  coq-stdlib/Reals/Cauchy/ConstructiveCauchyRealsMult.v.html                                         │
│ 29.1290  29.2560  0.1270    0.44%    12  coq-fourcolor/theories/job190to206.v.html                                                          │
│ 25.7430  25.8670  0.1240    0.48%    12  coq-fourcolor/theories/job295to298.v.html                                                          │
│ 10.1680  10.2890  0.1210    1.19%   279  coq-category-theory/Theory/Metacategory.v.html                                                     │
│ 10.1580  10.2780  0.1200    1.18%   496  coq-rewriter-perf-SuperFast/src/Rewriter/Rewriter/Wf.v.html                                        │
│  0.1050   0.2250  0.1200  114.29%   853  coq-stdlib/MSets/MSetRBT.v.html                                                                    │
└─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
🐇 Top 25 speed ups
┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│                                                             TOP 25 SPEED UPS                                                              │
│                                                                                                                                           │
│   OLD       NEW      DIFF     %DIFF    Ln                    FILE                                                                         │
├───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│   3.0340    2.2750  -0.7590  -25.02%   490  coq-stdlib/Reals/Cauchy/ConstructiveCauchyRealsMult.v.html                                    │
│ 142.7730  142.0900  -0.6830   -0.48%  1190  coq-unimath/UniMath/CategoryTheory/GrothendieckConstruction/IsPullback.v.html                 │
│  43.4680   42.8120  -0.6560   -1.51%   236  coq-rewriter/src/Rewriter/Rewriter/Examples/PerfTesting/LiftLetsMap.v.html                    │
│  18.4430   17.9400  -0.5030   -2.73%    12  coq-fourcolor/theories/job235to238.v.html                                                     │
│ 300.8320  300.3560  -0.4760   -0.16%     8  coq-neural-net-interp-computed-lite/theories/MaxOfTwoNumbersSimpler/Computed/AllLogits.v.html │
│  43.6090   43.1400  -0.4690   -1.08%   827  coq-vst/veric/binop_lemmas4.v.html                                                            │
│  27.9280   27.5140  -0.4140   -1.48%    12  coq-fourcolor/theories/job223to226.v.html                                                     │
│   1.5300    1.1420  -0.3880  -25.36%   853  coq-stdlib/FSets/FMapAVL.v.html                                                               │
│  16.5270   16.1420  -0.3850   -2.33%    12  coq-fourcolor/theories/job215to218.v.html                                                     │
│  10.6470   10.3120  -0.3350   -3.15%   790  coq-metacoq-safechecker/safechecker/theories/PCUICSafeRetyping.v.html                         │
│  10.4230   10.1030  -0.3200   -3.07%   496  coq-rewriter/src/Rewriter/Rewriter/Wf.v.html                                                  │
│  35.2840   34.9660  -0.3180   -0.90%    97  coq-vst/veric/binop_lemmas5.v.html                                                            │
│  17.5830   17.2670  -0.3160   -1.80%   957  coq-unimath/UniMath/CategoryTheory/Monoidal/Examples/DisplayedCartesianMonoidal.v.html        │
│  18.5580   18.2460  -0.3120   -1.68%    32  coq-performance-tests-lite/src/pattern.v.html                                                 │
│  45.5070   45.2060  -0.3010   -0.66%   558  coq-bedrock2/bedrock2/src/bedrock2Examples/insertionsort.v.html                               │
│  26.4340   26.1350  -0.2990   -1.13%    12  coq-fourcolor/theories/job231to234.v.html                                                     │
│  20.8100   20.5120  -0.2980   -1.43%  1073  coq-metacoq-safechecker/safechecker/theories/PCUICSafeReduce.v.html                           │
│  27.4680   27.1790  -0.2890   -1.05%    12  coq-fourcolor/theories/job299to302.v.html                                                     │
│  31.5690   31.2920  -0.2770   -0.88%   839  coq-unimath/UniMath/CategoryTheory/GrothendieckConstruction/IsPullback.v.html                 │
│  33.8730   33.6160  -0.2570   -0.76%    12  coq-fourcolor/theories/job001to106.v.html                                                     │
│  35.0330   34.7950  -0.2380   -0.68%    79  coq-rewriter/src/Rewriter/Rewriter/Examples/PerfTesting/SieveOfEratosthenes.v.html            │
│  29.3100   29.0740  -0.2360   -0.81%   147  coq-vst/veric/expr_lemmas4.v.html                                                             │
│  26.4260   26.1940  -0.2320   -0.88%    12  coq-fourcolor/theories/job486to489.v.html                                                     │
│  32.8650   32.6360  -0.2290   -0.70%    12  coq-fourcolor/theories/job323to383.v.html                                                     │
│  17.9440   17.7350  -0.2090   -1.16%    31  coq-engine-bench-lite/coq/PerformanceDemos/pattern.v.html                                     │
└───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘

Copy link
Contributor
coqbot-app bot commented Nov 16, 2023

🔴 CI failures at commit 95769b8 without any failure in the test-suite

✔️ Corresponding jobs for the base commit 5883afa 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-analysis, ci-fiat_crypto_legacy
  • You can also pass me a specific list of targets to minimize as arguments.
  • If you tag me saying @coqbot ci minimize all, I will additionally minimize the following target (which I do not suggest minimizing): ci-fiat_crypto (because base job at 5883afa failed)

@coqbot-app coqbot-app bot removed the request: full CI Use this label when you want your next push to trigger a full CI. label Nov 23, 2023
JasonGross pushed a commit to mit-plv/fiat-crypto that referenced this pull request Nov 23, 2023
@ppedrot
Copy link
Member
ppedrot commented Nov 24, 2023

Can we get one last entire bench to get the full picture? @coqbot bench

@SkySkimmer
Copy link
Contributor Author

Quick Ltac2 implem:

Module ReDef.
  Import Ncring_tac Ncring_polynom.
  Require Import Ltac2.Ltac2.
  Import Printf.

  Ltac2 rec reify_as_var_aux n lvar term :=
  lazy_match! lvar with
  | @cons _ ?t0 ?tl =>
      match Control.case (fun () => Unification.unify_with_full_ts term t0) with
      | Val _ => n
      | Err _ => reify_as_var_aux open_constr:(S $n) tl term
      end
  | _ =>
      Unification.unify_with_full_ts lvar open_constr:(@cons _ $term _);
      n
  end.

  Ltac2 reify_as_var lvar term := reify_as_var_aux 'Datatypes.O lvar term.

  Ltac2 rec close_varlist lvar :=
    lazy_match! lvar with
    | @nil _ => ()
    | @cons _ _ ?tl => close_varlist tl
    | _ => let _ := open_constr:(eq_refl : $lvar = @nil _) in ()
    end.

  Ltac2 Type ring_ops := {
      car : constr;
      ring0 : constr;
      ring1 : constr;
      add : constr;
      mul : constr;
      sub : constr;
      opp : constr;
    }.

  Ltac2 convert := Unification.unify_with_full_ts.

  Ltac2 rec reify_term tring lvar term :=
    match! term with
    | Z0 => '(PEc $term)
    | Zpos _ => '(PEc $term)
    | Zneg _ => '(PEc $term)

    | _ => convert (tring.(ring0)) term; '(PEc 0%Z)
    | _ => convert (tring.(ring1)) term; '(PEc 1%Z)
    | ?op ?t1 ?t2 =>
        let r := tring.(car) in
        let _ := open_constr:($t1 : $r) in
        let _ := open_constr:($t2 : $r) in
        match! 'tt with
        | _ =>
            convert (tring.(add)) op;
            let et1 := reify_term tring lvar t1 in
            let et2 := reify_term tring lvar t2 in
            '(PEadd $et1 $et2)
        | _ =>
            convert (tring.(mul)) op;
            let et1 := reify_term tring lvar t1 in
            let et2 := reify_term tring lvar t2 in
            '(PEmul $et1 $et2)
        | _ =>
            convert (tring.(sub)) op;
            let et1 := reify_term tring lvar t1 in
            let et2 := reify_term tring lvar t2 in
            '(PEsub $et1 $et2)
        end
    | ?op ?t =>
        convert (tring.(opp)) op;
        let et := reify_term tring lvar t in
        '(PEopp $et)

    | (@multiplication Z _ _ ?z ?t) =>
        let et := reify_term tring lvar t in
        '(PEmul (PEc $z) $et)
    | (pow_N ?t ?n) =>
        let et := reify_term tring lvar t in
        '(PEpow $et $n)
    | (@power _ _ power_ring ?t ?n) =>
        let et := reify_term tring lvar t in
        '(PEpow $et (ZN $n))

    | _ =>
        (* let extra := ltac1val:(x |- extra_reify x) (Ltac1.of_constr term) in *)
        (* let extra := *)
        (*   match Ltac1.to_constr extra with *)
        (*   | Some v => v *)
        (*   | None => Control.throw Assertion_failure *)
        (*   end *)
        (* in *)
        (* lazy_match! extra with *)
        (* | (false, _) => *)
            let n := reify_as_var lvar term in
            '(PEX Z (Pos.of_succ_nat $n))
        (* | (true, ?v) => v *)
        (* end *)
    end.

  Ltac2 rec list_reifyl_core tring lvar lterm :=
    lazy_match! lterm with
    | @nil _ => '(@nil (PExpr Z))
    | @cons _ ?t ?tl =>
        let et := reify_term tring lvar t in
        let etl := list_reifyl_core tring lvar tl in
        '(@cons (PExpr Z) $et $etl)
    end.

  Ltac2 list_reifyl lvar lterm :=
    lazy_match! lterm with
    | @cons ?r _ _ =>
        let r_ring := constr:(_ : Ring (T:=$r)) in
        let t_ring :=
          match Constr.Unsafe.kind r_ring with
          | Constr.Unsafe.Cast _ _ t => t
          | _ => Control.throw Assertion_failure
          end
        in
        let tring :=
          lazy_match! t_ring with
          | Ring (ring0:=?ring0) (ring1:=?ring1) (add:=?add) (mul:=?mul) (sub:=?sub) (opp:=?opp)
            => { car := r; ring0; ring1; add; mul; sub; opp }
          end
        in
        let lexpr := list_reifyl_core tring lvar lterm in
        close_varlist lvar;
        let res := open_constr:(($lvar, $lexpr)) in
        res
    end.

  Ltac2 list_reifyl_interop lvar lterm :=
    match Ltac1.to_constr lvar with
    | None => Control.throw Assertion_failure
    | Some lvar =>
        match Ltac1.to_constr lterm with
        | None => Control.throw Assertion_failure
        | Some lterm => Ltac1.of_constr (list_reifyl lvar lterm)
        end
    end.

  Ltac list_reifyl lvar lterm ::=
    let call := ltac2val:(lvar lterm |- list_reifyl_interop lvar lterm) in call lvar lterm.

  
End ReDef.

(there is some issue with the commented extra_reify stuff but fiat crypto doesn't seem to use it)

on https://github.com/mit-plv/fiat-crypto/blob/c74c06af6bc158f79b70b52f7e9fc9bbae017a57/src/Curves/Weierstrass/AffineProofs.v#L48 with all instead of par:

  • ltac1: 120s
  • ltac2: 100s

Probably the code could still be optimized (use of unsafe constr, avoid using backtrack for flow control...)

Copy link
Contributor
coqbot-app bot commented Nov 24, 2023

🏁 Bench results:

┌─────────────────────────────────────┬─────────────────────────┬───────────────────────────────────────┬───────────────────────────────────────┬─────────────────────────┐
│                                     │      user time [s]      │              CPU cycles               │           CPU instructions            │  max resident mem [KB]  │
│                                     │                         │                                       │                                       │                         │
│            package_name             │   NEW      OLD    PDIFF │      NEW             OLD        PDIFF │      NEW             OLD        PDIFF │   NEW      OLD    PDIFF │
├─────────────────────────────────────┼─────────────────────────┼───────────────────────────────────────┼───────────────────────────────────────┼─────────────────────────┤
│        coq-fiat-crypto-with-bedrock │ 5731.34  5932.57  -3.39 │ 25878083672654  26760888076112  -3.30 │ 47288565332510  48743150801885  -2.98 │ 2463964  2521456  -2.28 │
│                    coq-fiat-parsers │  337.93   340.32  -0.70 │  1489296535478   1497681357115  -0.56 │  2499738626188   2497946706801   0.07 │ 2421600  2423640  -0.08 │
│              coq-mathcomp-ssreflect │  175.92   176.87  -0.54 │   793620872258    795176097650  -0.20 │  1372993560299   1372945683716   0.00 │ 1224352  1224400  -0.00 │
│                         coq-unimath │ 1723.70  1730.73  -0.41 │  7797799766131   7831425777327  -0.43 │ 15205811178031  15205774951420   0.00 │ 1284468  1284860  -0.03 │
│                         coq-coqutil │   41.80    41.96  -0.38 │   184476645974    185166378394  -0.37 │   267811551437    267784609333   0.01 │  601348   599456   0.32 │
│                   coq-metacoq-pcuic │  635.37   637.70  -0.37 │  2852221297958   2863066539381  -0.38 │  4196497356637   4196230793472   0.01 │ 2022144  2021300   0.04 │
│                        coq-coqprime │   49.12    49.29  -0.34 │   219062529580    219968179123  -0.41 │   335982459494    336026678077  -0.01 │  780244   780224   0.00 │
│ coq-neural-net-interp-computed-lite │  338.67   339.59  -0.27 │  1545758454821   1549411775169  -0.24 │  3424279889003   3423466260692   0.02 │ 1143716  1139260   0.39 │
│                coq-mathcomp-algebra │  465.55   466.72  -0.25 │  2093718493983   2100310308227  -0.31 │  3857363656648   3857471722671  -0.00 │ 1523880  1368540  11.35 │
│                   coq-iris-examples │  466.54   467.59  -0.22 │  2103104085332   2106365634918  -0.15 │  3210889334974   3209987884375   0.03 │ 1054120  1053380   0.07 │
│                          coq-stdlib │  376.20   376.95  -0.20 │  1585868129161   1589501333115  -0.23 │  1363664316257   1364228071934  -0.04 │  717544   713924   0.51 │
│                       coq-fourcolor │ 1546.16  1549.06  -0.19 │  6831476506787   6845104151004  -0.20 │ 12453304233699  12452565777268   0.01 │ 2332548  2331572   0.04 │
│                  coq-mathcomp-field │  217.10   217.49  -0.18 │   976046472557    979030198196  -0.30 │  1756556176439   1756843780908  -0.02 │ 1518928  1518944  -0.00 │
│                            coq-core │  119.55   119.72  -0.14 │   467404513234    467093413172   0.07 │   499321850899    499571794831  -0.05 │  369372   369216   0.04 │
│                    coq-math-classes │   90.28    90.40  -0.13 │   402980539556    403764740735  -0.19 │   561521393984    561158638151   0.06 │  520684   520200   0.09 │
│                        coq-rewriter │  378.28   378.73  -0.12 │  1702130624485   1705026475941  -0.17 │  2760176659635   2760377625208  -0.01 │ 1291144  1272244   1.49 │
│                                 coq │  687.61   688.06  -0.07 │  2957013279083   2962051657529  -0.17 │  5544704978224   5559931574156  -0.27 │ 1872844  1873184  -0.02 │
│                        coq-bedrock2 │  385.65   385.75  -0.03 │  1740120887527   1742541842905  -0.14 │  3394864364874   3394554114098   0.01 │  880872   880940  -0.01 │
│                            coq-hott │  161.77   161.70   0.04 │   719721196556    720622882188  -0.13 │  1139885145556   1141085211794  -0.11 │  584528   574576   1.73 │
│                coq-metacoq-template │  155.37   155.27   0.06 │   682792033554    683350098421  -0.08 │  1070384455563   1070872022550  -0.05 │ 1294140  1297240  -0.24 │
│                 coq-category-theory │  806.76   806.13   0.08 │  3658363749920   3655230157701   0.09 │  6360647523407   6360365044174   0.00 │  923072   920912   0.23 │
│              coq-mathcomp-character │  135.99   135.88   0.08 │   615677725075    614452933369   0.20 │  1018055336806   1018097375096  -0.00 │ 1245404  1245536  -0.01 │
│              coq-mathcomp-odd-order │  846.61   845.86   0.09 │  3852745490159   3848579499198   0.11 │  6490894005889   6490787716046   0.00 │ 1565976  1567364  -0.09 │
│         coq-rewriter-perf-SuperFast │  772.02   771.24   0.10 │  3436100490241   3433654835404   0.07 │  5852414681871   5848569929164   0.07 │ 1381708  1389584  -0.57 │
│                             coq-vst │  866.28   865.05   0.14 │  3895251508802   3892974610081   0.06 │  6556536762808   6555289236817   0.02 │ 2161456  2161388   0.00 │
│          coq-performance-tests-lite │  745.46   744.10   0.18 │  3325745235502   3322353856291   0.10 │  5877364022694   5880777611854  -0.06 │ 1893640  1891604   0.11 │
│                      coq-verdi-raft │  606.64   605.40   0.20 │  2750537485749   2746819670570   0.14 │  4249151636356   4249189007487  -0.00 │  854260   854384  -0.01 │
│               coq-engine-bench-lite │  163.12   162.72   0.25 │   694094781367    692465109911   0.24 │  1299106911592   1302037888371  -0.23 │ 1181800  1195936  -1.18 │
│                        coq-compcert │  290.35   289.60   0.26 │  1299509677934   1292884582766   0.51 │  1985531439936   1985151597342   0.02 │ 1142748  1146232  -0.30 │
│            coq-metacoq-translations │   18.57    18.51   0.32 │    81275537044     81439417972  -0.20 │   132615701476    132627014775  -0.01 │  861180   864104  -0.34 │
│                           coq-color │  239.49   238.65   0.35 │  1067321264304   1061333690626   0.56 │  1560375696777   1560209272720   0.01 │ 1124088  1122404   0.15 │
│                            coq-corn │  803.92   800.91   0.38 │  3621972366150   3608196848368   0.38 │  5565165758026   5565307482049  -0.00 │  786600   786260   0.04 │
│                       coq-fiat-core │   60.57    60.34   0.38 │   256120558346    256289467959  -0.07 │   380589717113    380822237747  -0.06 │  492732   495260  -0.51 │
│                         coq-bignums │   29.99    29.85   0.47 │   134626169816    134384091427   0.18 │   193526693490    193736745114  -0.11 │  490668   490676  -0.00 │
│                      coq-coquelicot │   39.88    39.69   0.48 │   176344635138    175076615229   0.72 │   246458957367    246117500758   0.14 │  827232   825208   0.25 │
│                 coq-metacoq-erasure │  362.28   360.53   0.49 │  1628688585357   1621049515193   0.47 │  2572651742238   2572361900636   0.01 │ 1835664  1829660   0.33 │
│               coq-mathcomp-fingroup │   39.22    39.03   0.49 │   177594006189    176737584846   0.48 │   272003001341    272157305925  -0.06 │  560600   561000  -0.07 │
│                       coq-equations │   11.45    11.39   0.53 │    48455199314     48463324020  -0.02 │    76648207900     76650182316  -0.00 │  427860   428280  -0.10 │
│             coq-metacoq-safechecker │  381.85   379.51   0.62 │  1738813674584   1727922586140   0.63 │  2887714280284   2888026531307  -0.01 │ 1870124  1870280  -0.01 │
│                           coq-verdi │   50.34    50.02   0.64 │   224995168262    223773301785   0.55 │   344500206831    344278451872   0.06 │  530644   529100   0.29 │
│               coq-mathcomp-solvable │  147.51   145.61   1.30 │   666694399773    659199029823   1.14 │  1085680986743   1085690751774  -0.00 │  928744   928340   0.04 │
└─────────────────────────────────────┴─────────────────────────┴───────────────────────────────────────┴───────────────────────────────────────┴─────────────────────────┘

🐢 Top 25 slow downs
┌─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│                                                              TOP 25 SLOW DOWNS                                                              │
│                                                                                                                                             │
│   OLD       NEW      DIFF     %DIFF     Ln                     FILE                                                                         │
├─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│  54.5280   55.4550  0.9270      1.70%   915  coq-fiat-crypto-with-bedrock/src/Bedrock/End2End/X25519/GarageDoor.v.html                      │
│  33.8100   34.5040  0.6940      2.05%     2  coq-fiat-crypto-with-bedrock/src/ExtractionJsOfOCaml/fiat_crypto.v.html                        │
│   3.3320    3.9510  0.6190     18.58%   130  coq-fiat-crypto-with-bedrock/src/Curves/Weierstrass/Projective.v.html                          │
│ 114.7410  115.2920  0.5510      0.48%   999  coq-performance-tests-lite/src/fiat_crypto_via_setoid_rewrite_standalone.v.html                │
│  84.2690   84.7800  0.5110      0.61%    20  coq-fiat-crypto-with-bedrock/src/Rewriter/Passes/NBE.v.html                                    │
│ 114.7600  115.2690  0.5090      0.44%   968  coq-performance-tests-lite/src/fiat_crypto_via_setoid_rewrite_standalone.v.html                │
│   4.3440    4.7730  0.4290      9.88%   102  coq-engine-bench-lite/coq/PerformanceDemos/rewrite_strat_repeated_app.v.html                   │
│  12.5110   12.8840  0.3730      2.98%  1555  coq-fiat-crypto-with-bedrock/src/Util/FSets/FMapTrie.v.html                                    │
│  93.2380   93.5930  0.3550      0.38%   103  coq-fiat-crypto-with-bedrock/src/Arithmetic/BarrettReduction.v.html                            │
│  27.4640   27.8120  0.3480      1.27%    12  coq-fourcolor/theories/job503to506.v.html                                                      │
│  28.1250   28.4710  0.3460      1.23%    12  coq-fourcolor/theories/job535to541.v.html                                                      │
│  21.7790   22.1150  0.3360      1.54%    12  coq-fourcolor/theories/job507to510.v.html                                                      │
│   1.0890    1.3660  0.2770     25.44%   937  coq-vst/veric/binop_lemmas2.v.html                                                             │
│  26.5580   26.8310  0.2730      1.03%    12  coq-fourcolor/theories/job486to489.v.html                                                      │
│  26.0480   26.3150  0.2670      1.03%    12  coq-fourcolor/theories/job554to562.v.html                                                      │
│  11.1510   11.4180  0.2670      2.39%    55  coq-category-theory/Construction/Comma/Natural/Transformation.v.html                           │
│   0.0420    0.3010  0.2590    616.67%   115  coq-fiat-crypto-with-bedrock/src/PushButtonSynthesis/Primitives.v.html                         │
│   0.2790    0.5310  0.2520     90.32%   110  coq-fiat-crypto-with-bedrock/src/Bedrock/Field/Synthesis/New/WordByWordMontgomery.v.html       │
│   0.0140    0.2590  0.2450   1750.00%   304  coq-fiat-crypto-with-bedrock/src/PushButtonSynthesis/UnsaturatedSolinas.v.html                 │
│   0.0200    0.2630  0.2430   1215.00%   481  coq-fiat-crypto-with-bedrock/src/Bedrock/Field/Synthesis/New/UnsaturatedSolinas.v.html         │
│   0.0020    0.2450  0.2430  12150.00%   241  coq-fiat-crypto-with-bedrock/src/PushButtonSynthesis/WordByWordMontgomery.v.html               │
│  16.9890   17.2290  0.2400      1.41%    24  coq-fiat-crypto-with-bedrock/src/Rewriter/Passes/MulSplit.v.html                               │
│  10.1940   10.4310  0.2370      2.32%   496  coq-rewriter-perf-SuperFast/src/Rewriter/Rewriter/Wf.v.html                                    │
│   2.5890    2.8230  0.2340      9.04%   487  coq-stdlib/Numbers/HexadecimalFacts.v.html                                                     │
│   6.6980    6.9250  0.2270      3.39%     5  coq-fiat-crypto-with-bedrock/src/Assembly/Parse/Examples/fiat_p256_mul_optimised_seed12.v.html │
└─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
🐇 Top 25 speed ups
┌─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│                                                                  TOP 25 SPEED UPS                                                                   │
│                                                                                                                                                     │
│   OLD       NEW       DIFF     %DIFF   Ln                      FILE                                                                                 │
├─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ 114.8740   79.9170  -34.9570  -30.43%   48  coq-fiat-crypto-with-bedrock/src/Curves/Weierstrass/AffineProofs.v.html                                 │
│  22.9140    5.3370  -17.5770  -76.71%  233  coq-fiat-crypto-with-bedrock/src/Curves/EdwardsMontgomery.v.html                                        │
│  40.1810   24.8430  -15.3380  -38.17%   85  coq-fiat-crypto-with-bedrock/src/Curves/Montgomery/AffineProofs.v.html                                  │
│  16.0950    3.7150  -12.3800  -76.92%  262  coq-fiat-crypto-with-bedrock/src/Curves/EdwardsMontgomery.v.html                                        │
│  14.8680   10.1060   -4.7620  -32.03%  212  coq-fiat-crypto-with-bedrock/src/Curves/Weierstrass/Projective.v.html                                   │
│  12.0130    7.7210   -4.2920  -35.73%  258  coq-fiat-crypto-with-bedrock/src/Curves/Montgomery/XZProofs.v.html                                      │
│  28.8980   25.0000   -3.8980  -13.49%  129  coq-fiat-crypto-with-bedrock/src/Curves/Weierstrass/Projective.v.html                                   │
│   8.0850    5.5290   -2.5560  -31.61%  198  coq-fiat-crypto-with-bedrock/src/Curves/Weierstrass/Projective.v.html                                   │
│  11.0210    8.6800   -2.3410  -21.24%  159  coq-fiat-crypto-with-bedrock/src/Curves/Montgomery/XZProofs.v.html                                      │
│  22.4100   20.3060   -2.1040   -9.39%  219  coq-fiat-crypto-with-bedrock/src/Curves/EdwardsMontgomery.v.html                                        │
│   4.4250    2.3380   -2.0870  -47.16%  524  coq-fiat-crypto-with-bedrock/src/Curves/Weierstrass/Jacobian.v.html                                     │
│   5.1270    3.1750   -1.9520  -38.07%  542  coq-fiat-crypto-with-bedrock/src/Curves/Weierstrass/Jacobian.v.html                                     │
│   6.3350    4.4000   -1.9350  -30.54%  207  coq-fiat-crypto-with-bedrock/src/Curves/EdwardsMontgomery.v.html                                        │
│   3.4450    1.6170   -1.8280  -53.06%   76  coq-fiat-crypto-with-bedrock/src/Curves/Edwards/AffineProofs.v.html                                     │
│   2.5570    0.8830   -1.6740  -65.47%  236  coq-fiat-crypto-with-bedrock/src/Curves/EdwardsMontgomery.v.html                                        │
│   3.6320    2.4610   -1.1710  -32.24%  222  coq-fiat-crypto-with-bedrock/src/Curves/EdwardsMontgomery.v.html                                        │
│   2.3800    1.2240   -1.1560  -48.57%  548  coq-fiat-crypto-with-bedrock/src/Curves/Weierstrass/Jacobian.v.html                                     │
│   3.9100    2.8180   -1.0920  -27.93%  126  coq-fiat-crypto-with-bedrock/src/Curves/Edwards/XYZT/Basic.v.html                                       │
│   2.2280    1.1470   -1.0810  -48.52%  270  coq-fiat-crypto-with-bedrock/src/Curves/EdwardsMontgomery.v.html                                        │
│   2.9870    1.9140   -1.0730  -35.92%  242  coq-fiat-crypto-with-bedrock/src/Curves/EdwardsMontgomery.v.html                                        │
│ 298.3850  297.3750   -1.0100   -0.34%    8  coq-neural-net-interp-computed-lite/theories/MaxOfTwoNumbersSimpler/Computed/AllLogits.v.html           │
│  53.6930   52.7190   -0.9740   -1.81%   50  coq-fiat-crypto-with-bedrock/src/Bedrock/Field/Synthesis/Examples/p224_64_new.v.html                    │
│   2.2570    1.3830   -0.8740  -38.72%  234  coq-fiat-crypto-with-bedrock/src/Curves/EdwardsMontgomery.v.html                                        │
│   3.2530    2.3960   -0.8570  -26.34%  213  coq-fiat-crypto-with-bedrock/src/Curves/EdwardsMontgomery.v.html                                        │
│ 166.3380  165.4890   -0.8490   -0.51%  233  coq-fiat-crypto-with-bedrock/rupicola/bedrock2/deps/riscv-coq/src/riscv/Proofs/DecodeByExtension.v.html │
└─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘

@ppedrot ppedrot self-assigned this Nov 25, 2023
@ppedrot ppedrot modified the milestones: 8.19+rc1, 8.20+rc1 Dec 4, 2023
@SkySkimmer SkySkimmer modified the milestones: 8.20+rc1, 8.19+rc1 Dec 4, 2023
While we may at some point use an ocaml (or Ltac2?)
implementation (for instance variable list manipulation is still done
by side effect through the evar map, not the nicest), this helps find
out what the typeclasses do when reifying.

Notable finds:
- the `reify` typeclass gets 1 instance outside Ncring_tac, from nsatz
  to reify IZR applied to ground ints. We replace this with a tactic redefition.
  Alternatives welcomed (redefinition isn't very modular so if we find
  another case we will have to come up with something).

- comparison up to conversion is necessary for some users, notably
  https://github.com/math-comp/analysis/blob/master/theories/nsatz_realtype.v
@SkySkimmer SkySkimmer added the request: full CI Use this label when you want your next push to trigger a full CI. label Dec 4, 2023
@coqbot-app coqbot-app bot removed the request: full CI Use this label when you want your next push to trigger a full CI. label Dec 4, 2023
Copy link
Contributor
coqbot-app bot commented Dec 7, 2023

🔴 CI failure at commit b3663ed without any failure in the test-suite

✔️ Corresponding job for the base commit ababbf4 succeeded

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

🏃 @coqbot ci minimize will minimize the following target: ci-jasmin
  • You can also pass me a specific list of targets to minimize as arguments.

@SkySkimmer
Copy link
Contributor Author

spurious, cf #18374 (comment)

Copy link
Contributor
coqbot-app bot commented Dec 8, 2023

🔴 CI failure at commit b3663ed without any failure in the test-suite

✔️ Corresponding job for the base commit ababbf4 succeeded

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

🏃 @coqbot ci minimize will minimize the following target: ci-jasmin
  • You can also pass me a specific list of targets to minimize as arguments.

1 similar comment

This comment was marked as duplicate.

@ppedrot
Copy link
Member
ppedrot commented Dec 9, 2023

@coqbot merge now

Copy link
Contributor
coqbot-app bot commented Dec 9, 2023

@ppedrot: You can't merge the PR because it hasn't been approved yet.

@ppedrot
Copy link
Member
ppedrot commented Dec 9, 2023

@coqbot merge now

@coqbot-app coqbot-app bot merged commit ad8dda2 into rocq-prover:master Dec 9, 2023
@SkySkimmer SkySkimmer deleted the reify-ring-ltac branch December 11, 2023 08:14
SkySkimmer added a commit to SkySkimmer/rocq that referenced this pull request Dec 11, 2023
SkySkimmer added a commit that referenced this pull request Dec 13, 2023
@andres-erbsen andres-erbsen mentioned this pull request Jun 1, 2025
3 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
kind: cleanup Code removal, deprecation, refactorings, etc. kind: performance Improvements to performance and efficiency.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants
0