Skip to content

Drop useless content from module parameter types. - #22402

Draft
ppedrot wants to merge 2 commits into
rocq-prover:masterfrom
ppedrot:module-type-parameter-drop-contents
Draft

Drop useless content from module parameter types.#22402
ppedrot wants to merge 2 commits into
rocq-prover:masterfrom
ppedrot:module-type-parameter-drop-contents

Conversation

@ppedrot

@ppedrot ppedrot commented Aug 25, 2026

Copy link
Copy Markdown
Member

In theory, some parts of what we store in module types are not used by the system. The two principal examples are opaque proof bodies and sealed module implementations, as they are never accessed when typechecking modules. In both cases we only ever care about the type of the corresponding object, not its implementation.

In practice, we do want to keep them for one single use case, namely the infamous ability to include module types into plain modules. While we could interpret this operation as adding axioms with opaque proofs and modules, users typically expect that it keeps the underlying body instead. This pattern is unfortunately used in several places in the standard library to work around user syntax limitations.

Instead of doing it this violently, in this commit we go for a slightly more refined approach. We drop the opaque content of the parameters of functors only. There is no easy way to include the type of module parameters, hence one cannot rely on the aforementioned hack.

To easily keep track of which modules are assumed to have no opaque content, we introduce a new type and carefully add wrappers that drop this content at the right place.

In theory, some parts of what we store in module types are not used
by the system. The two principal examples are opaque proof bodies and
sealed module implementations, as they are never accessed when
typechecking modules. In both cases we only ever care about the type
of the corresponding object, not its implementation.

In practice, we do want to keep them for one single use case, namely
the infamous ability to include module types into plain modules. While
we could interpret this operation as adding axioms with opaque proofs
and modules, users typically expect that it keeps the underlying body
instead. This pattern is unfortunately used in several places in the
standard library to work around user syntax limitations.

Instead of doing it this violently, in this commit we go for a slightly
more refined approach. We drop the opaque content of the parameters of
functors only. There is no easy way to include the type of module
parameters, hence one cannot rely on the aforementioned hack.

To easily keep track of which modules are assumed to have no opaque
content, we introduce a new type and carefully add wrappers that
drop this content at the right place.
@ppedrot ppedrot added kind: performance Improvements to performance and efficiency. request: full CI Use this label when you want your next push to trigger a full CI. labels Aug 25, 2026
@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 Aug 25, 2026
@ppedrot

ppedrot commented Aug 25, 2026

Copy link
Copy Markdown
Member Author

@coqbot bench

@coqbot-app

coqbot-app Bot commented Aug 26, 2026

Copy link
Copy Markdown
Contributor

🏁 Bench results:

┌─────────────────────────────────────┬─────────────────────────┬───────────────────────────────────────┬─────────────────────────┐
│                                     │      user time [s]      │           CPU instructions            │  max resident mem [KB]  │
│                                     │                         │                                       │                         │
│            package_name             │   NEW      OLD    PDIFF │      NEW             OLD        PDIFF │   NEW      OLD    PDIFF │
├─────────────────────────────────────┼─────────────────────────┼───────────────────────────────────────┼─────────────────────────┤
│                            coq-core │    2.80     2.83  -1.06 │    19311874781     19316174418  -0.02 │  113860   114236  -0.33 │
│                    coq-math-classes │   86.17    86.85  -0.78 │   488420074350    491126737577  -0.55 │  543212   547936  -0.86 │
│                       coq-fiat-core │   59.42    59.77  -0.59 │   335484938400    338086926283  -0.77 │  475664   480368  -0.98 │
│               coq-engine-bench-lite │  128.07   128.68  -0.47 │   934355925614    939252692653  -0.52 │ 1157804  1163332  -0.48 │
│         coq-rewriter-perf-SuperFast │  473.76   475.96  -0.46 │  3500898806193   3505485241924  -0.13 │ 1260348  1278804  -1.44 │
│                rocq-metarocq-common │   42.64    42.83  -0.44 │   261903750316    262819447432  -0.35 │  936712   941864  -0.55 │
│                      rocq-equations │    8.34     8.37  -0.36 │    54066454961     54157352493  -0.17 │  419760   422452  -0.64 │
│                        coq-compcert │  314.58   315.66  -0.34 │  1954576738827   1960132145147  -0.28 │ 1289532  1236036   4.33 │
│                        rocq-bignums │   26.30    26.38  -0.30 │   157522324509    158642909621  -0.71 │  454024   458172  -0.91 │
│                    coq-fiat-parsers │  283.46   284.28  -0.29 │  2056679997782   2065117672729  -0.41 │ 2256752  2255548   0.05 │
│                         rocq-stdlib │  252.42   253.11  -0.27 │  1462130695355   1471279402801  -0.62 │  751284   755324  -0.53 │
│               rocq-metarocq-erasure │  450.07   450.78  -0.16 │  2929409730899   2932676469119  -0.11 │ 1898952  1861588   2.01 │
│                             coq-vst │  833.47   834.71  -0.15 │  5979667421758   5985208796003  -0.09 │ 2080628  2005072   3.77 │
│                        coq-coqprime │   57.49    57.57  -0.14 │   375858021566    377204184789  -0.36 │  823808   828176  -0.53 │
│                           coq-color │  240.31   240.58  -0.11 │  1414444840782   1422298846670  -0.55 │ 1171748  1196240  -2.05 │
│                        coq-bedrock2 │  341.14   341.35  -0.06 │  2654441850628   2659371475265  -0.19 │  849244   857028  -0.91 │
│           rocq-metarocq-safechecker │  315.73   315.92  -0.06 │  2280696456074   2281587086476  -0.04 │ 1751516  1755996  -0.26 │
│                         coq-coqutil │   50.55    50.58  -0.06 │   290248375818    292090525033  -0.63 │  560308   562480  -0.39 │
│          rocq-metarocq-translations │   17.24    17.25  -0.06 │   113502226202    113323569117   0.16 │  902392   918496  -1.75 │
│                         coq-unimath │ 1986.32  1987.12  -0.04 │ 15797079794060  15797151811362  -0.00 │ 1861928  1862208  -0.02 │
│                            coq-hott │  171.02   171.08  -0.04 │  1054977228935   1054974491057   0.00 │  470348   470068   0.06 │
│                        coq-rewriter │  336.90   336.99  -0.03 │  2409488785052   2412974767464  -0.14 │ 1403956  1491696  -5.88 │
│                   coq-iris-examples │  384.46   384.32   0.04 │  2367400274161   2372052149640  -0.20 │ 1086476  1101604  -1.37 │
│                 coq-category-theory │ 1384.54  1383.81   0.05 │  9672657003495   9690973662543  -0.19 │ 6741780  6744252  -0.04 │
│        coq-fiat-crypto-with-bedrock │ 8348.27  8343.21   0.06 │ 67638894554297  67662275659366  -0.03 │ 3881656  3985312  -2.60 │
│          coq-performance-tests-lite │  896.74   895.41   0.15 │  6915327562472   6919902744945  -0.07 │ 1518116  1517144   0.06 │
│                        rocq-runtime │   76.11    75.98   0.17 │   555538996550    555409807682   0.02 │  542512   542296   0.04 │
│              rocq-metarocq-template │   83.64    83.48   0.19 │   552999662773    552432677784   0.10 │ 1144556  1149508  -0.43 │
│                 rocq-metarocq-utils │   25.58    25.49   0.35 │   152233051537    153497687856  -0.82 │  615472   621164  -0.92 │
│ coq-neural-net-interp-computed-lite │  239.96   238.90   0.44 │  2243067460815   2243882722256  -0.04 │  873756   840784   3.92 │
│                 rocq-metarocq-pcuic │  624.95   621.98   0.48 │  3823829289589   3802826116319   0.55 │ 2389824  1727256  38.36 │
│                           rocq-core │    9.72     9.66   0.62 │    61767179157     61792229701  -0.04 │  550888   550940  -0.01 │
└─────────────────────────────────────┴─────────────────────────┴───────────────────────────────────────┴─────────────────────────┘

INFO: failed to install
rocq-elpi (in NEW)

rocq-mathcomp-boot (dependency rocq-elpi failed)
rocq-mathcomp-order (dependency rocq-elpi failed)
rocq-mathcomp-ssreflect (dependency rocq-elpi failed)
rocq-mathcomp-finite-group (dependency rocq-elpi failed)
rocq-mathcomp-algebra (dependency rocq-elpi failed)
rocq-mathcomp-solvable (dependency rocq-elpi failed)
rocq-mathcomp-field (dependency rocq-elpi failed)
rocq-mathcomp-group-representation (dependency rocq-elpi failed)
coq-mathcomp-odd-order (dependency rocq-elpi failed)
rocq-mathcomp-analysis (dependency rocq-elpi failed)
coq-corn (dependency rocq-elpi failed)
coq-coquelicot (dependency rocq-elpi failed)
coq-fourcolor (dependency rocq-elpi failed)

🐢 Top 25 slow downs
┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│                                                         TOP 25 SLOW DOWNS                                                          │
│                                                                                                                                    │
│  OLD     NEW    DIFF    %DIFF   Ln                    FILE                                                                         │
├────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│    203    204  1.2957    0.64%    8  coq-neural-net-interp-computed-lite/theories/MaxOfTwoNumbersSimpler/Computed/AllLogits.v.html │
│   57.3   58.6  1.2719    2.22%  782  coq-fiat-crypto-with-bedrock/src/Bedrock/Secp256k1/JoyeLadder.v.html                          │
│   13.0   14.0  1.0701    8.26%  548  coq-fiat-crypto-with-bedrock/src/Bedrock/P256/Jacobian.v.html                                 │
│   61.1   62.2  1.0484    1.72%  788  coq-fiat-crypto-with-bedrock/src/Bedrock/Secp256k1/JoyeLadder.v.html                          │
│   65.7   66.3  0.6410    0.98%  794  coq-fiat-crypto-with-bedrock/src/Bedrock/Secp256k1/JoyeLadder.v.html                          │
│   18.8   19.4  0.5901    3.14%   32  coq-performance-tests-lite/src/pattern.v.html                                                 │
│   50.8   51.4  0.5896    1.16%   27  coq-fiat-crypto-with-bedrock/src/Rewriter/Passes/ToFancyWithCasts.v.html                      │
│   47.0   47.6  0.5746    1.22%  244  coq-fiat-crypto-with-bedrock/src/Bedrock/P256/Coord32.v.html                                  │
│   38.8   39.3  0.5226    1.35%  762  coq-fiat-crypto-with-bedrock/src/Bedrock/Secp256k1/JoyeLadder.v.html                          │
│   9.90   10.3  0.4241    4.28%  703  coq-fiat-crypto-with-bedrock/src/Bedrock/Secp256k1/JoyeLadder.v.html                          │
│   43.1   43.5  0.3844    0.89%  539  coq-fiat-crypto-with-bedrock/src/Bedrock/End2End/X25519/EdwardsXYZT.v.html                    │
│   31.5   31.9  0.3713    1.18%  656  coq-fiat-crypto-with-bedrock/src/Bedrock/Secp256k1/JoyeLadder.v.html                          │
│   6.66   7.00  0.3404    5.11%  165  coq-fiat-crypto-with-bedrock/src/Curves/Montgomery/XZProofs.v.html                            │
│   20.3   20.6  0.3083    1.52%  722  coq-fiat-crypto-with-bedrock/src/Bedrock/Secp256k1/JoyeLadder.v.html                          │
│   23.5   23.8  0.3055    1.30%  672  coq-fiat-crypto-with-bedrock/src/Bedrock/Secp256k1/JoyeLadder.v.html                          │
│   53.2   53.5  0.2915    0.55%  567  coq-fiat-crypto-with-bedrock/src/Bedrock/End2End/X25519/EdwardsXYZT.v.html                    │
│   53.5   53.8  0.2798    0.52%  776  coq-fiat-crypto-with-bedrock/src/Bedrock/Secp256k1/JoyeLadder.v.html                          │
│   44.7   45.0  0.2706    0.60%  578  coq-fiat-crypto-with-bedrock/rupicola/bedrock2/compiler/src/compiler/MMIO.v.html              │
│   23.2   23.5  0.2671    1.15%  743  coq-fiat-crypto-with-bedrock/src/Bedrock/Secp256k1/JoyeLadder.v.html                          │
│ 0.0333  0.292  0.2587  775.84%   95  coq-fiat-crypto-with-bedrock/src/Bedrock/End2End/X25519/GarageDoorTop.v.html                  │
│   7.54   7.79  0.2503    3.32%  792  coq-fiat-crypto-with-bedrock/src/Bedrock/Secp256k1/JoyeLadder.v.html                          │
│ 0.0905  0.316  0.2254  248.99%   97  coq-fiat-crypto-with-bedrock/src/SlowPrimeSynthesisExamples.v.html                            │
│   97.6   97.8  0.2122    0.22%  296  coq-fiat-crypto-with-bedrock/src/Bedrock/Secp256k1/Addchain.v.html                            │
│ 0.0909  0.295  0.2044  224.98%   62  coq-fiat-crypto-with-bedrock/src/Assembly/WithBedrock/SymbolicProofs.v.html                   │
│   1.12   1.32  0.1996   17.77%   12  coq-fiat-crypto-with-bedrock/src/Bedrock/End2End/X25519/GarageDoorTop.v.html                  │
└────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
🐇 Top 25 speed ups
┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│                                                                TOP 25 SPEED UPS                                                                │
│                                                                                                                                                │
│  OLD      NEW     DIFF     %DIFF    Ln                      FILE                                                                               │
├────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│    107      107  -0.7718   -0.72%   255  coq-fiat-crypto-with-bedrock/src/Bedrock/P256/Jacobian.v.html                                         │
│   5.47     4.78  -0.6861  -12.55%  1828  rocq-metarocq-safechecker/safechecker/theories/PCUICSafeReduce.v.html                                 │
│   85.4     84.7  -0.6177   -0.72%    48  coq-fiat-crypto-with-bedrock/src/Curves/Weierstrass/AffineProofs.v.html                               │
│  7.092    6.536  -0.5560   -7.84%   192  coq-vst/veric/binop_lemmas5.v.html                                                                    │
│   41.9     41.5  -0.4831   -1.15%   269  coq-fiat-crypto-with-bedrock/src/Bedrock/P256/Jacobian.v.html                                         │
│   18.8     18.3  -0.4822   -2.57%    31  coq-engine-bench-lite/coq/PerformanceDemos/pattern.v.html                                             │
│   47.0     46.6  -0.3953   -0.84%     2  coq-fiat-crypto-with-bedrock/src/ExtractionJsOfOCaml/fiat_crypto.v.html                               │
│   15.0     14.6  -0.3936   -2.63%   672  coq-fiat-crypto-with-bedrock/src/Bedrock/Secp256k1/JacobianCoZ.v.html                                 │
│   50.6     50.2  -0.3535   -0.70%   376  coq-unimath/UniMath/ModelCategories/Generated/LNWFSMonoidalStructure.v.html                           │
│   48.5     48.2  -0.3454   -0.71%     3  coq-fiat-crypto-with-bedrock/src/ExtractionJsOfOCaml/WithBedrock/fiat_crypto.v.html                   │
│   2.77     2.50  -0.2727   -9.85%   597  coq-unimath/UniMath/CategoryTheory/DisplayedCats/Examples/SetGroupoidComprehension.v.html             │
│   48.5     48.3  -0.2709   -0.56%     3  coq-fiat-crypto-with-bedrock/src/ExtractionJsOfOCaml/bedrock2_fiat_crypto.v.html                      │
│  0.282   0.0257  -0.2563  -90.90%    96  coq-fiat-crypto-with-bedrock/src/Bedrock/End2End/X25519/GarageDoorTop.v.html                          │
│   1.42    1.166  -0.2540  -17.89%   937  coq-vst/veric/binop_lemmas2.v.html                                                                    │
│   16.3     16.0  -0.2329   -1.43%    57  coq-category-theory/Instance/Fact.v.html                                                              │
│  0.261   0.0315  -0.2300  -87.95%    98  coq-fiat-crypto-with-bedrock/src/SlowPrimeSynthesisExamples.v.html                                    │
│  0.217  0.00109  -0.2162  -99.50%    66  coq-fiat-crypto-with-bedrock/src/Bedrock/End2End/X25519/GarageDoorTop.v.html                          │
│   37.8     37.6  -0.1962   -0.52%   139  coq-fiat-parsers/src/Parsers/Refinement/SharpenedJSON.v.html                                          │
│   22.2     22.0  -0.1911   -0.86%   516  coq-fiat-crypto-with-bedrock/src/Bedrock/End2End/X25519/EdwardsXYZT.v.html                            │
│ 29.444   29.253  -0.1910   -0.65%   194  coq-vst/veric/expr_lemmas4.v.html                                                                     │
│   7.93     7.74  -0.1875   -2.36%     7  coq-fiat-crypto-with-bedrock/src/PerfTesting/PerfTestSearchPattern.v.html                             │
│  2.934    2.747  -0.1870   -6.37%   167  coq-vst/veric/binop_lemmas6.v.html                                                                    │
│  2.344    2.158  -0.1860   -7.94%   290  coq-vst/veric/extend_tc.v.html                                                                        │
│   20.2     20.0  -0.1802   -0.89%    79  coq-rewriter/src/Rewriter/Rewriter/Examples/PerfTesting/SieveOfEratosthenes.v.html                    │
│   1.27     1.09  -0.1793  -14.13%     6  coq-fiat-crypto-with-bedrock/rupicola/bedrock2/deps/riscv-coq/src/riscv/Proofs/DecodeEncodeI64.v.html │
└────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘

@ppedrot

ppedrot commented Aug 26, 2026

Copy link
Copy Markdown
Member Author

Some effect on some module-heavy constructions:

rocq-stdlib/./theories/Numbers/NatInt/NZAdd.vo 19666 19414 -252 -1%
rocq-stdlib/./theories/Numbers/NatInt/NZMul.vo 22550 22267 -283 -1%
rocq-stdlib/./theories/Numbers/Integer/Abstract/ZProperties.vo 433143 427401 -5742 -1%
coq-fiat-crypto-with-bedrock/./src/Util/FSets/FMapFacts.vo 988708 971307 -17401 -1%
rocq-metarocq-utils/./utils/theories/MRFSets.vo 1230417 1208180 -22237 -1%
rocq-metarocq-utils/./utils/theories/MRMSets.vo 3185422 3138142 -47280 -1%
rocq-stdlib/./theories/Numbers/Natural/Abstract/NProperties.vo 869070 843280 -25790 -2%
rocq-stdlib/./theories/Numbers/NatInt/NZLog.vo 268322 252502 -15820 -5%
rocq-stdlib/./theories/Numbers/NatInt/NZSqrt.vo 218211 203907 -14304 -6%
rocq-stdlib/./theories/Numbers/NatInt/NZPow.vo 143149 132354 -10795 -7%
rocq-stdlib/./theories/Numbers/NatInt/NZDiv.vo 144867 134072 -10795 -7%
rocq-stdlib/./theories/Numbers/NatInt/NZGcd.vo 122465 111670 -10795 -8%
rocq-stdlib/./theories/Numbers/NatInt/NZParity.vo 113010 102215 -10795 -9%
rocq-stdlib/./theories/Numbers/Integer/Abstract/ZBits.vo 441293 397537 -43756 -9%
rocq-stdlib/./theories/Numbers/Integer/Abstract/ZDivEucl.vo 249566 220331 -29235 -11%
rocq-stdlib/./theories/Numbers/Natural/Abstract/NDiv0.vo 288796 255236 -33560 -11%
rocq-stdlib/./theories/Numbers/Integer/Abstract/ZSgnAbs.vo 352027 312880 -39147 -11%
rocq-stdlib/./theories/Numbers/Natural/Abstract/NBits.vo 395613 351454 -44159 -11%
rocq-stdlib/./theories/Numbers/Integer/Abstract/ZDivTrunc.vo 227466 198231 -29235 -12%
rocq-stdlib/./theories/Numbers/Integer/Abstract/ZDivFloor.vo 217361 188126 -29235 -13%
rocq-stdlib/./theories/Numbers/Natural/Abstract/NLcm0.vo 357034 309760 -47274 -13%
rocq-stdlib/./theories/Numbers/Integer/Abstract/ZLcm.vo 284193 242156 -42037 -14%
rocq-stdlib/./theories/Numbers/Natural/Abstract/NGcd.vo 164822 137961 -26861 -16%
rocq-stdlib/./theories/Numbers/Integer/Abstract/ZGcd.vo 179390 150155 -29235 -16%
rocq-stdlib/./theories/Numbers/Natural/Abstract/NLcm.vo 203081 168747 -34334 -16%
rocq-stdlib/./theories/Numbers/Natural/Abstract/NDiv.vo 157017 130156 -26861 -17%
rocq-stdlib/./theories/Numbers/Natural/Abstract/NSqrt.vo 143838 116977 -26861 -18%
rocq-stdlib/./theories/Numbers/Natural/Abstract/NParity.vo 143049 116188 -26861 -18%
rocq-stdlib/./theories/Numbers/Integer/Abstract/ZPow.vo 177087 144263 -32824 -18%
rocq-stdlib/./theories/Numbers/Integer/Abstract/ZParity.vo 142548 114586 -27962 -19%
rocq-stdlib/./theories/Numbers/Natural/Abstract/NPow.vo 155983 125865 -30118 -19%
rocq-stdlib/./theories/Numbers/Natural/Abstract/NLog.vo 172583 139072 -33511 -19%

This is uncommon though, all other vo files from the bench have a diff < 1%.

@ppedrot ppedrot added the request: full CI Use this label when you want your next push to trigger a full CI. label Aug 26, 2026
@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 Aug 26, 2026
@ppedrot

ppedrot commented Aug 26, 2026

Copy link
Copy Markdown
Member Author

Let's retry with a backwards compatible API: @coqbot bench.

@coqbot-app

coqbot-app Bot commented Aug 27, 2026

Copy link
Copy Markdown
Contributor

🏁 Bench results:

┌─────────────────────────────────────┬─────────────────────────┬───────────────────────────────────────┬─────────────────────────┐
│                                     │      user time [s]      │           CPU instructions            │  max resident mem [KB]  │
│                                     │                         │                                       │                         │
│            package_name             │   NEW      OLD    PDIFF │      NEW             OLD        PDIFF │   NEW      OLD    PDIFF │
├─────────────────────────────────────┼─────────────────────────┼───────────────────────────────────────┼─────────────────────────┤
│                 rocq-metarocq-utils │   24.30    24.56  -1.06 │   155107817622    156324817484  -0.78 │  589636   596864  -1.21 │
│                        rocq-bignums │   25.36    25.59  -0.90 │   159388704674    160513135607  -0.70 │  461080   465112  -0.87 │
│                         coq-coqutil │   48.32    48.66  -0.70 │   295559694622    297452577190  -0.64 │  562628   568328  -1.00 │
│  rocq-mathcomp-group-representation │   95.77    96.40  -0.65 │   666156215989    666061824344   0.01 │ 1525172  1521968   0.21 │
│               coq-engine-bench-lite │  126.31   127.03  -0.57 │   935267471781    939490720544  -0.45 │ 1132440  1135868  -0.30 │
│                rocq-metarocq-common │   41.53    41.76  -0.55 │   265107952117    266077059978  -0.36 │  907964   915980  -0.88 │
│                           coq-color │  229.88   231.15  -0.55 │  1440330373189   1448269468148  -0.55 │ 1174880  1200400  -2.13 │
│                         rocq-stdlib │  239.82   241.05  -0.51 │  1483206457520   1492334138226  -0.61 │  759980   761832  -0.24 │
│                      rocq-equations │    7.93     7.97  -0.50 │    55549450498     55662534766  -0.20 │  400976   402504  -0.38 │
│                       coq-fiat-core │   56.46    56.74  -0.49 │   338090785943    340867799937  -0.81 │  482440   484744  -0.48 │
│                        coq-coqprime │   55.88    56.15  -0.48 │   381669616441    382875687537  -0.32 │  828396   831760  -0.40 │
│                            coq-hott │  160.04   160.75  -0.44 │  1070085329686   1070079553780   0.00 │  474552   475172  -0.13 │
│                            coq-corn │  644.50   647.32  -0.44 │  4314213460003   4324519790447  -0.24 │  623648   632900  -1.46 │
│                   coq-iris-examples │  370.57   371.69  -0.30 │  2395211011080   2400104608399  -0.20 │ 1084468  1094384  -0.91 │
│                 coq-category-theory │ 1353.45  1357.08  -0.27 │  9826057468586   9842778215119  -0.17 │ 6744368  6748980  -0.07 │
│               rocq-mathcomp-algebra │  366.05   366.93  -0.24 │  2639438189766   2639372751633   0.00 │ 1572312  1568896   0.22 │
│         coq-rewriter-perf-SuperFast │  463.26   464.33  -0.23 │  3534640490319   3539822542210  -0.15 │ 1257528  1293144  -2.75 │
│               rocq-metarocq-erasure │  438.96   439.92  -0.22 │  2956137005973   2959951191630  -0.13 │ 1827008  1831708  -0.26 │
│           rocq-metarocq-safechecker │  313.20   313.78  -0.18 │  2307877508778   2308509687655  -0.03 │ 1723368  1728220  -0.28 │
│              rocq-mathcomp-solvable │   98.20    98.38  -0.18 │   660052055174    660090341064  -0.01 │ 1081344  1082960  -0.15 │
│          coq-performance-tests-lite │  872.14   873.71  -0.18 │  6955148122301   6966968431987  -0.17 │ 1625796  1559944   4.22 │
│                        coq-compcert │  306.98   307.49  -0.17 │  1979147353445   1985022622940  -0.30 │ 1285296  1201060   7.01 │
│                    coq-math-classes │   82.44    82.57  -0.16 │   494570458483    497310575722  -0.55 │  513816   519520  -1.10 │
│                        coq-rewriter │  330.35   330.83  -0.15 │  2431371087568   2435109067920  -0.15 │ 1407612  1498524  -6.07 │
│                    coq-fiat-parsers │  274.18   274.54  -0.13 │  2077427497146   2086906251399  -0.45 │ 2263500  2258248   0.23 │
│                         coq-unimath │ 1938.95  1940.49  -0.08 │ 15984168062338  15984077994728   0.00 │ 1799772  1801664  -0.11 │
│                             coq-vst │  812.16   812.70  -0.07 │  6056954395066   6063672342595  -0.11 │ 2088800  2000492   4.41 │
│        coq-fiat-crypto-with-bedrock │ 8216.88  8222.05  -0.06 │ 68144630313187  68167620338813  -0.03 │ 3887236  4010288  -3.07 │
│              rocq-mathcomp-analysis │ 1379.27  1380.12  -0.06 │ 10383540778966  10383929502297  -0.00 │ 2196028  2195984   0.00 │
│                 rocq-mathcomp-order │   93.63    93.61   0.02 │   668118806843    668142298644  -0.00 │  920788   922856  -0.22 │
│                       coq-fourcolor │ 1352.71  1351.89   0.06 │ 12416206233193  12428325909880  -0.10 │ 1013264  1030460  -1.67 │
│                        rocq-runtime │   77.14    76.99   0.19 │   555785119065    555706858688   0.01 │  495740   497980  -0.45 │
│                 rocq-mathcomp-field │  200.11   199.65   0.23 │  1441742402056   1441615430454   0.01 │ 2228608  2228384   0.01 │
│              rocq-metarocq-template │   81.64    81.44   0.25 │   557441563027    556734335545   0.13 │ 1118708  1120572  -0.17 │
│              coq-mathcomp-odd-order │  606.46   604.84   0.27 │  4243029252068   4243289642407  -0.01 │ 2721140  2721476  -0.01 │
│          rocq-mathcomp-finite-group │   26.88    26.80   0.30 │   172859924464    172847468216   0.01 │  574192   574040   0.03 │
│                 rocq-metarocq-pcuic │  606.19   603.89   0.38 │  3866634755759   3845542938274   0.55 │ 2362428  1697516  39.17 │
│                        coq-bedrock2 │  334.26   332.96   0.39 │  2678512236070   2684320305392  -0.22 │  851472   874768  -2.66 │
│                  rocq-mathcomp-boot │   39.89    39.72   0.43 │   234115649288    234097620988   0.01 │  668004   666008   0.30 │
│          rocq-metarocq-translations │   16.55    16.42   0.79 │   115334263202    115162652480   0.15 │  876772   889028  -1.38 │
│ coq-neural-net-interp-computed-lite │  237.12   235.06   0.88 │  2260268916173   2261191582865  -0.04 │  877328   848536   3.39 │
│                           rocq-core │    9.06     8.96   1.12 │    63184169131     63180873634   0.01 │  504532   503384   0.23 │
│                           rocq-elpi │   16.93    16.70   1.38 │   120037125362    120013119180   0.02 │  470744   470460   0.06 │
│             rocq-mathcomp-ssreflect │    1.16     1.12   3.57 │     7373568718      7367212995   0.09 │  613292   615088  -0.29 │
│                            coq-core │    2.84     2.74   3.65 │    19086604871     19078997631   0.04 │   92688    92892  -0.22 │
└─────────────────────────────────────┴─────────────────────────┴───────────────────────────────────────┴─────────────────────────┘

INFO: failed to install
coq-coquelicot (dependency install failed in NEW)

🐢 Top 25 slow downs
┌──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│                                                          TOP 25 SLOW DOWNS                                                           │
│                                                                                                                                      │
│  OLD     NEW     DIFF    %DIFF    Ln                    FILE                                                                         │
├──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│   62.9    65.4  2.4629    3.91%   608  coq-bedrock2/bedrock2/src/bedrock2Examples/lightbulb.v.html                                   │
│    200     202  2.1316    1.07%     8  coq-neural-net-interp-computed-lite/theories/MaxOfTwoNumbersSimpler/Computed/AllLogits.v.html │
│    236     237  1.2264    0.52%   141  coq-fiat-crypto-with-bedrock/src/UnsaturatedSolinasHeuristics/Tests.v.html                    │
│   12.8    13.7  0.9864    7.74%   548  coq-fiat-crypto-with-bedrock/src/Bedrock/P256/Jacobian.v.html                                 │
│    133     134  0.8976    0.68%   155  coq-fiat-crypto-with-bedrock/src/UnsaturatedSolinasHeuristics/Tests.v.html                    │
│   49.6    50.5  0.8935    1.80%    27  coq-fiat-crypto-with-bedrock/src/Rewriter/Passes/ToFancyWithCasts.v.html                      │
│   44.6    45.1  0.5471    1.23%   578  coq-fiat-crypto-with-bedrock/rupicola/bedrock2/compiler/src/compiler/MMIO.v.html              │
│   39.7    40.2  0.5468    1.38%    81  coq-fiat-crypto-with-bedrock/rupicola/src/Rupicola/Examples/Utf8/Utf8.v.html                  │
│ 38.731  39.173  0.4420    1.14%   834  coq-vst/veric/binop_lemmas4.v.html                                                            │
│   44.7    45.1  0.4240    0.95%     3  coq-fiat-crypto-with-bedrock/src/ExtractionJsOfOCaml/bedrock2_fiat_crypto.v.html              │
│   22.4    22.8  0.3930    1.75%  1073  rocq-metarocq-safechecker/safechecker/theories/PCUICSafeReduce.v.html                         │
│   27.4    27.7  0.3245    1.18%    13  coq-fourcolor/theories/proof/job287to290.v.html                                               │
│   44.6    45.0  0.3130    0.70%     3  coq-fiat-crypto-with-bedrock/src/ExtractionJsOfOCaml/WithBedrock/fiat_crypto.v.html           │
│   36.4    36.7  0.2782    0.76%   139  coq-fiat-parsers/src/Parsers/Refinement/SharpenedJSON.v.html                                  │
│    126     126  0.2775    0.22%   659  coq-fiat-crypto-with-bedrock/src/Bedrock/Secp256k1/JacobianCoZ.v.html                         │
│   25.4    25.7  0.2744    1.08%    13  coq-fourcolor/theories/proof/job223to226.v.html                                               │
│   12.1    12.4  0.2742    2.26%   800  rocq-metarocq-safechecker/safechecker/theories/PCUICSafeRetyping.v.html                       │
│   67.4    67.6  0.2715    0.40%   596  coq-fiat-crypto-with-bedrock/src/Bedrock/Secp256k1/JacobianCoZ.v.html                         │
│   1.31    1.58  0.2643   20.13%     4  rocq-mathcomp-analysis/theories/pi_irrational.v.html                                          │
│  5.082   5.345  0.2630    5.18%   888  coq-vst/veric/binop_lemmas4.v.html                                                            │
│ 0.0330   0.293  0.2596  786.01%    95  coq-fiat-crypto-with-bedrock/src/Bedrock/End2End/X25519/GarageDoorTop.v.html                  │
│    103     103  0.2536    0.25%    22  coq-fiat-crypto-with-bedrock/src/Rewriter/Passes/ArithWithCasts.v.html                        │
│   31.0    31.2  0.2434    0.79%    13  coq-fourcolor/theories/proof/job254to270.v.html                                               │
│   17.5    17.7  0.2432    1.39%   243  coq-fiat-crypto-with-bedrock/src/Bedrock/P256/Jacobian.v.html                                 │
│   4.30    4.54  0.2418    5.63%   162  coq-category-theory/Instance/Coq/Par.v.html                                                   │
└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
🐇 Top 25 speed ups
┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│                                                             TOP 25 SPEED UPS                                                              │
│                                                                                                                                           │
│  OLD     NEW      DIFF     %DIFF    Ln                     FILE                                                                           │
├───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│  41.2      39.6  -1.5704   -3.81%  1423  coq-fiat-crypto-with-bedrock/rupicola/bedrock2/compiler/src/compiler/FlatToRiscvFunctions.v.html │
│  36.3      35.0  -1.3485   -3.71%   898  coq-fiat-crypto-with-bedrock/src/Bedrock/Secp256k1/JoyeLadder.v.html                             │
│  5.37      4.69  -0.6810  -12.68%  1828  rocq-metarocq-safechecker/safechecker/theories/PCUICSafeReduce.v.html                            │
│  65.0      64.3  -0.6183   -0.95%   794  coq-fiat-crypto-with-bedrock/src/Bedrock/Secp256k1/JoyeLadder.v.html                             │
│  16.5      15.9  -0.5864   -3.56%   898  coq-fiat-crypto-with-bedrock/src/Bedrock/Secp256k1/JoyeLadder.v.html                             │
│  29.1      28.5  -0.5591   -1.92%    31  coq-fiat-crypto-with-bedrock/src/Bedrock/End2End/X25519/MontgomeryLadderRISCV.v.html             │
│  27.1      26.6  -0.5483   -2.02%    34  coq-fiat-crypto-with-bedrock/src/Bedrock/End2End/X25519/MontgomeryLadderRISCV.v.html             │
│  50.0      49.5  -0.4936   -0.99%   376  coq-unimath/UniMath/ModelCategories/Generated/LNWFSMonoidalStructure.v.html                      │
│   105       104  -0.4870   -0.46%   255  coq-fiat-crypto-with-bedrock/src/Bedrock/P256/Jacobian.v.html                                    │
│  42.7      42.2  -0.4867   -1.14%   115  coq-fiat-crypto-with-bedrock/rupicola/bedrock2/bedrock2/src/bedrock2Examples/full_mul.v.html     │
│  18.6      18.1  -0.4175   -2.25%    31  coq-engine-bench-lite/coq/PerformanceDemos/pattern.v.html                                        │
│ 0.683     0.273  -0.4108  -60.10%   398  coq-fiat-crypto-with-bedrock/src/Curves/Montgomery/XZProofs.v.html                               │
│ 6.414     6.022  -0.3920   -6.11%   192  coq-vst/veric/binop_lemmas5.v.html                                                               │
│  41.0      40.6  -0.3739   -0.91%   269  coq-fiat-crypto-with-bedrock/src/Bedrock/P256/Jacobian.v.html                                    │
│  15.9      15.6  -0.3684   -2.31%    57  coq-category-theory/Instance/Fact.v.html                                                         │
│  24.5      24.2  -0.3597   -1.47%    13  coq-fourcolor/theories/proof/job486to489.v.html                                                  │
│  57.3      56.9  -0.3454   -0.60%   512  coq-fiat-crypto-with-bedrock/src/Bedrock/End2End/X25519/EdwardsXYZT.v.html                       │
│  64.8      64.5  -0.3073   -0.47%   305  coq-fiat-crypto-with-bedrock/src/Bedrock/Secp256k1/Addchain.v.html                               │
│  23.2      22.9  -0.3025   -1.30%    85  coq-fiat-crypto-with-bedrock/src/Curves/Montgomery/AffineProofs.v.html                           │
│ 0.296  0.000447  -0.2951  -99.85%    64  rocq-mathcomp-analysis/theories/topology_theory/connected.v.html                                 │
│ 1.399     1.113  -0.2860  -20.44%   937  coq-vst/veric/binop_lemmas2.v.html                                                               │
│  4.37      4.10  -0.2729   -6.24%     5  coq-fiat-crypto-with-bedrock/src/Assembly/Parse/Examples/fiat_p256_mul_optimised_seed11.v.html   │
│ 0.284    0.0254  -0.2585  -91.07%    96  coq-fiat-crypto-with-bedrock/src/Bedrock/End2End/X25519/GarageDoorTop.v.html                     │
│  54.0      53.8  -0.2541   -0.47%   276  coq-fiat-crypto-with-bedrock/src/Bedrock/P256/Jacobian.v.html                                    │
│  15.1      14.9  -0.2502   -1.65%   841  coq-fiat-crypto-with-bedrock/src/Curves/Weierstrass/Jacobian/CoZ.v.html                          │
└───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘

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

Labels

kind: performance Improvements to performance and efficiency.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant