Skip to content

Introduce an efficient typing rule for let-bindings in Typeops.#21678

Open
ppedrot wants to merge 2 commits intorocq-prover:masterfrom
ppedrot:preserve-let-in-kernel-the-return
Open

Introduce an efficient typing rule for let-bindings in Typeops.#21678
ppedrot wants to merge 2 commits intorocq-prover:masterfrom
ppedrot:preserve-let-in-kernel-the-return

Conversation

@ppedrot
Copy link
Member

@ppedrot ppedrot commented Feb 27, 2026

When the expand_let typing flag is set in the environment, we change the kernel typing rule for let-bindings from

let x := t in u : T{x := t}

to

let x := t in u : let x := t in T.

We cannot do this by default since it may change the inferred type for some expressions, which is returned when the expected type is not provided. To work around this, we statically set the flag in expressions for which the precise inferred type is not relevant. For now there is no user-facing flag that would allow setting this option in a more fine-grained way though, but it is easy to fix.

This is a revival of #13606 and a partial fix of #11838. The latter still suffers from superlinear blowups in unrelated parts of the kernel, namely VM and native compilation.

@ppedrot ppedrot added this to the 9.3+rc1 milestone Feb 27, 2026
@ppedrot ppedrot requested a review from a team as a code owner February 27, 2026 14:52
@ppedrot ppedrot added kind: fix This fixes a bug or incorrect documentation. 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 Feb 27, 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 Feb 27, 2026
@ppedrot
Copy link
Member Author

ppedrot commented Feb 27, 2026

@coqbot bench

@ppedrot
Copy link
Member Author

ppedrot commented Feb 27, 2026

Together with #21679 this fixes #11838, at least the example given in that report.

@SkySkimmer SkySkimmer self-assigned this Feb 27, 2026
@coqbot-app
Copy link
Contributor

coqbot-app bot commented Mar 1, 2026

🏁 Bench results:

┌─────────────────────────────────────┬─────────────────────────┬───────────────────────────────────────┬─────────────────────────┐
│                                     │      user time [s]      │           CPU instructions            │  max resident mem [KB]  │
│                                     │                         │                                       │                         │
│            package_name             │   NEW      OLD    PDIFF │      NEW             OLD        PDIFF │   NEW      OLD    PDIFF │
├─────────────────────────────────────┼─────────────────────────┼───────────────────────────────────────┼─────────────────────────┤
│          rocq-metarocq-translations │   16.47    16.72  -1.50 │   117031670083    119326773679  -1.92 │  777608   778692  -0.14 │
│                            coq-core │    2.70     2.74  -1.46 │    18290234810     18295571120  -0.03 │   89656    89828  -0.19 │
│                 rocq-mathcomp-order │   81.40    82.01  -0.74 │   600663047842    600543452081   0.02 │ 1983788  1982912   0.04 │
│         coq-rewriter-perf-SuperFast │  479.82   481.86  -0.42 │  3749858019142   3750684818292  -0.02 │ 1253412  1250648   0.22 │
│ coq-neural-net-interp-computed-lite │  237.84   238.83  -0.41 │  2269780355231   2269922563618  -0.01 │  895808   894884   0.10 │
│                       coq-fiat-core │   56.61    56.84  -0.40 │   346320803548    345864908776   0.13 │  484812   482104   0.56 │
│                        coq-coqprime │   54.07    54.22  -0.28 │   366831082557    368291231178  -0.40 │  825740   825896  -0.02 │
│             rocq-mathcomp-character │  108.53   108.81  -0.26 │   783509889613    783647960462  -0.02 │ 2219868  2221984  -0.10 │
│                         coq-coqutil │   47.39    47.47  -0.17 │   293899754986    294244927371  -0.12 │  568080   568000   0.01 │
│                   coq-iris-examples │  368.99   369.56  -0.15 │  2421420002256   2422245509154  -0.03 │ 1123292  1115044   0.74 │
│                    coq-math-classes │   83.88    83.93  -0.06 │   508983677829    508883994278   0.02 │  514908   515780  -0.17 │
│                rocq-metarocq-common │   40.99    41.01  -0.05 │   264596498268    264730173337  -0.05 │  927864   931916  -0.43 │
│                      coq-verdi-raft │  498.27   498.46  -0.04 │  3446982706949   3447893150236  -0.03 │  834424   834308   0.01 │
│                        rocq-runtime │   74.75    74.77  -0.03 │   541568647262    541467332465   0.02 │  501088   502148  -0.21 │
│               rocq-metarocq-erasure │  480.54   480.66  -0.02 │  3298534234001   3298007355494   0.02 │ 1780104  1790264  -0.57 │
│              rocq-metarocq-template │   84.84    84.86  -0.02 │   581564219298    581611255438  -0.01 │ 1061064  1059340   0.16 │
│                      rocq-equations │    8.68     8.68   0.00 │    59918815494     59920197074  -0.00 │  400500   400100   0.10 │
│                        coq-rewriter │  336.05   335.96   0.03 │  2501371098985   2500816630050   0.02 │ 1525956  1525956   0.00 │
│                           coq-verdi │   44.07    44.03   0.09 │   293319873584    293239624725   0.03 │  527948   527452   0.09 │
│                        coq-compcert │  308.69   308.20   0.16 │  2021064657233   2019752412738   0.06 │ 1162960  1162436   0.05 │
│                           coq-color │  235.20   234.81   0.17 │  1489465529431   1487893281667   0.11 │ 1179344  1181064  -0.15 │
│                      coq-coquelicot │   40.42    40.34   0.20 │   245559089024    245873264849  -0.13 │  838116   838160  -0.01 │
│                 rocq-metarocq-pcuic │  635.53   634.06   0.23 │  4072832122283   4072051744185   0.02 │ 2347428  2314996   1.40 │
│              coq-mathcomp-odd-order │  628.22   626.72   0.24 │  4513181259552   4513295199175  -0.00 │ 3750076  3753460  -0.09 │
│                         coq-unimath │ 1814.81  1810.02   0.26 │ 15054329740512  15063266806746  -0.06 │ 1102020  1101588   0.04 │
│                            coq-hott │  158.62   158.19   0.27 │  1068331127375   1069014369896  -0.06 │  454472   454516  -0.01 │
│                 coq-category-theory │  553.44   551.85   0.29 │  4044426126753   4050098136187  -0.14 │  809492   891904  -9.24 │
│           rocq-metarocq-safechecker │  337.01   336.00   0.30 │  2476085334179   2479467223424  -0.14 │ 1765708  1786188  -1.15 │
│               coq-engine-bench-lite │  129.28   128.87   0.32 │   963665874461    961461439385   0.23 │ 1007736  1007400   0.03 │
│                 rocq-metarocq-utils │   24.35    24.27   0.33 │   157640316774    157598654692   0.03 │  593132   590496   0.45 │
│                            coq-corn │  660.05   657.84   0.34 │  4457810549353   4458348118516  -0.01 │  736984   736096   0.12 │
│                    coq-fiat-parsers │  279.93   278.98   0.34 │  2141251168794   2139422366891   0.09 │ 2253596  2253584   0.00 │
│                       coq-fourcolor │ 1371.34  1366.65   0.34 │ 12576459746337  12577163425865  -0.01 │ 1458992  1458840   0.01 │
│                             coq-vst │  854.39   851.12   0.38 │  6465794587393   6450381749383   0.24 │ 2219480  2209216   0.46 │
│              rocq-mathcomp-solvable │  107.28   106.86   0.39 │   748631748842    748872034018  -0.03 │ 1529940  1532004  -0.13 │
│                 rocq-mathcomp-field │  202.60   201.77   0.41 │  1544655540015   1545662636240  -0.07 │ 2972640  2965848   0.23 │
│          coq-performance-tests-lite │  908.25   904.38   0.43 │  7245229637693   7244414158472   0.01 │ 1300440  1225208   6.14 │
│                         rocq-stdlib │  440.74   438.44   0.52 │  1545697102260   1546944083699  -0.08 │  648440   652444  -0.61 │
│                  rocq-mathcomp-boot │   39.89    39.61   0.71 │   235291551885    235011039048   0.12 │  743336   753516  -1.35 │
│               coq-mathcomp-analysis │ 1207.37  1197.63   0.81 │  9099020192728   9095826279216   0.04 │ 2646532  2646448   0.00 │
│               rocq-mathcomp-algebra │  351.01   348.06   0.85 │  2615636126537   2611548108361   0.16 │ 1625924  1623872   0.13 │
│             rocq-mathcomp-ssreflect │    1.15     1.14   0.88 │     7715755627      7721516562  -0.07 │  855236   852416   0.33 │
│              rocq-mathcomp-fingroup │   27.64    27.38   0.95 │   180346256944    179727542488   0.34 │  645764   645604   0.02 │
│                        rocq-bignums │   25.79    25.52   1.06 │   162804795988    163997488005  -0.73 │  461156   460428   0.16 │
│                        coq-bedrock2 │  364.14   359.92   1.17 │  3002391773337   3002995234743  -0.02 │  886648   895784  -1.02 │
│                           rocq-core │    6.70     6.60   1.52 │    40614356158     40595972006   0.05 │  446272   444528   0.39 │
│                           rocq-elpi │   16.01    15.66   2.23 │   111065437299    111055415438   0.01 │  577188   576648   0.09 │
└─────────────────────────────────────┴─────────────────────────┴───────────────────────────────────────┴─────────────────────────┘

INFO: failed to install
coq-fiat-crypto-with-bedrock (in NEW)

🐢 Top 25 slow downs
┌─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│                                                      TOP 25 SLOW DOWNS                                                      │
│                                                                                                                             │
│   OLD      NEW     DIFF     %DIFF      Ln                  FILE                                                             │
├─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│     62.9    66.4  3.4971       5.56%   608  coq-bedrock2/bedrock2/src/bedrock2Examples/lightbulb.v.html                     │
│     94.0    94.7  0.7389       0.79%   999  coq-performance-tests-lite/src/fiat_crypto_via_setoid_rewrite_standalone.v.html │
│    0.724    1.39  0.6654      91.87%   813  rocq-stdlib/theories/MSets/MSetRBT.v.html                                       │
│    0.296   0.941  0.6452     218.15%   153  rocq-mathcomp-algebra/algebra/spectral.v.html                                   │
│     21.6    22.1  0.5040       2.33%   651  rocq-stdlib/theories/Zmod/ZmodBase.v.html                                       │
│    0.497   0.946  0.4494      90.48%   586  rocq-stdlib/theories/Strings/Byte.v.html                                        │
│    0.480   0.899  0.4196      87.50%   816  rocq-stdlib/theories/MSets/MSetRBT.v.html                                       │
│  0.00449   0.415  0.4108    9145.73%    72  rocq-mathcomp-algebra/algebra/spectral.v.html                                   │
│    6.201   6.602  0.4010       6.47%   192  coq-vst/veric/binop_lemmas5.v.html                                              │
│     7.92    8.31  0.3934       4.97%  1331  coq-mathcomp-odd-order/theories/PFsection9.v.html                               │
│    0.564   0.954  0.3895      69.05%     7  rocq-mathcomp-solvable/solvable/all_solvable.v.html                             │
│   34.681  35.055  0.3740       1.08%    97  coq-vst/veric/binop_lemmas5.v.html                                              │
│     32.9    33.2  0.3334       1.01%    12  coq-fourcolor/theories/proof/job439to465.v.html                                 │
│    0.293   0.622  0.3285     112.02%    17  rocq-stdlib/theories/micromega/Env.v.html                                       │
│ 0.000309   0.315  0.3144  101735.28%   793  rocq-mathcomp-algebra/algebra/mxalgebra.v.html                                  │
│     5.84    6.15  0.3074       5.26%   196  coq-unimath/UniMath/CategoryTheory/Hyperdoctrines/HValuedSets.v.html            │
│    0.293   0.585  0.2920      99.71%    14  rocq-stdlib/theories/extraction/ExtrOcamlZBigInt.v.html                         │
│    0.630   0.922  0.2914      46.25%    41  rocq-stdlib/theories/ZArith/Zdiv_facts.v.html                                   │
│   35.125  35.409  0.2840       0.81%   147  coq-vst/veric/expr_lemmas4.v.html                                               │
│     23.9    24.2  0.2800       1.17%    12  coq-fourcolor/theories/proof/job486to489.v.html                                 │
│     29.7    30.0  0.2765       0.93%    12  coq-fourcolor/theories/proof/job001to106.v.html                                 │
│     18.3    18.6  0.2639       1.44%    12  coq-fourcolor/theories/proof/job311to314.v.html                                 │
│     48.7    49.0  0.2493       0.51%   376  coq-unimath/UniMath/ModelCategories/Generated/LNWFSMonoidalStructure.v.html     │
│   15.429  15.677  0.2480       1.61%  1209  coq-vst/floyd/Component.v.html                                                  │
│    0.699   0.942  0.2427      34.72%     9  rocq-mathcomp-solvable/solvable/extremal.v.html                                 │
└─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
🐇 Top 25 speed ups
┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│                                                            TOP 25 SPEED UPS                                                            │
│                                                                                                                                        │
│  OLD     NEW      DIFF     %DIFF    Ln                    FILE                                                                         │
├────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│   202       201  -0.8311   -0.41%     8  coq-neural-net-interp-computed-lite/theories/MaxOfTwoNumbersSimpler/Computed/AllLogits.v.html │
│  1.03     0.502  -0.5243  -51.07%   719  rocq-stdlib/theories/MSets/MSetRBT.v.html                                                     │
│ 0.424   0.00326  -0.4202  -99.23%    75  rocq-mathcomp-algebra/algebra/spectral.v.html                                                 │
│ 0.422   0.00188  -0.4198  -99.55%   171  rocq-mathcomp-field/field/finfield.v.html                                                     │
│ 0.417   0.00942  -0.4080  -97.74%   154  rocq-mathcomp-algebra/algebra/spectral.v.html                                                 │
│ 0.833     0.478  -0.3551  -42.63%   650  rocq-stdlib/theories/MSets/MSetRBT.v.html                                                     │
│ 0.619     0.268  -0.3508  -56.68%    12  rocq-stdlib/theories/MSets/MSets.v.html                                                       │
│ 0.725     0.407  -0.3185  -43.90%   374  rocq-stdlib/theories/Sorting/SetoidList.v.html                                                │
│ 0.315  0.000128  -0.3145  -99.96%   796  rocq-mathcomp-algebra/algebra/mxalgebra.v.html                                                │
│  24.4      24.2  -0.2777   -1.14%   550  coq-bedrock2/bedrock2/src/bedrock2Examples/insertionsort.v.html                               │
│ 0.633     0.361  -0.2721  -42.96%   682  rocq-stdlib/theories/Numbers/DecimalFacts.v.html                                              │
│  25.4      25.2  -0.2255   -0.89%    12  coq-fourcolor/theories/proof/job299to302.v.html                                               │
│  27.7      27.5  -0.2253   -0.81%    12  coq-fourcolor/theories/proof/job287to290.v.html                                               │
│  20.9      20.7  -0.2206   -1.06%   479  rocq-metarocq-erasure/erasure/theories/EWcbvEvalCstrsAsBlocksFixLambdaInd.v.html              │
│ 0.226   0.00760  -0.2181  -96.63%   118  rocq-mathcomp-algebra/algebra/spectral.v.html                                                 │
│ 0.327     0.110  -0.2166  -66.28%   658  rocq-stdlib/theories/Numbers/DecimalFacts.v.html                                              │
│ 0.295    0.0802  -0.2147  -72.81%   166  rocq-mathcomp-algebra/algebra/spectral.v.html                                                 │
│ 0.229    0.0180  -0.2109  -92.12%   640  rocq-mathcomp-solvable/solvable/cyclic.v.html                                                 │
│ 0.214   0.00276  -0.2108  -98.71%   422  rocq-mathcomp-solvable/solvable/cyclic.v.html                                                 │
│ 0.325     0.117  -0.2082  -64.03%    14  rocq-stdlib/theories/setoid_ring/Ncring.v.html                                                │
│ 0.208   0.00333  -0.2050  -98.40%   763  rocq-metarocq-erasure/erasure/theories/EWcbvEval.v.html                                       │
│ 0.576     0.372  -0.2039  -35.41%  1161  rocq-stdlib/theories/Strings/Byte.v.html                                                      │
│  10.6      10.4  -0.2038   -1.92%   496  coq-rewriter/src/Rewriter/Rewriter/Wf.v.html                                                  │
│ 0.396     0.193  -0.2034  -51.37%    16  rocq-stdlib/theories/Numbers/HexadecimalPos.v.html                                            │
│ 0.515     0.314  -0.2007  -38.99%   145  rocq-metarocq-pcuic/pcuic/theories/PCUICPrincipality.v.html                                   │
└────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘

@SkySkimmer SkySkimmer added the needs: progress Work in progress: awaiting action from the author. label Mar 3, 2026
@SkySkimmer
Copy link
Contributor

What's going on in fiat crypto?

@SkySkimmer
Copy link
Contributor

Seems to timeout in

src/Assembly/WithBedrock/Proofs.vo (real: 8870.60, user: 8869.73, sys: 0.61, mem: 1756572 ko)

@ppedrot
Copy link
Member Author

ppedrot commented Mar 4, 2026

@coqbot resume ci minimize ci-fiat_crypto

From Coq Require Import Permutation.
From Coq Require Import List.
From Coq Require Import Lia.
From Coq Require Import NArith.
From Coq Require Import ZArith.
From Coq Require Import Morphisms.
Require Import Crypto.Language.PreExtra.
Require Import Crypto.Language.API.
Require Import Crypto.Language.APINotations.
Require Import Crypto.AbstractInterpretation.ZRange.
Require Import Crypto.Util.ErrorT.
Require Import Crypto.Assembly.Syntax.
Require Import Crypto.Assembly.Symbolic.
Require Import Crypto.Assembly.Equivalence.
Require Import Crypto.CastLemmas.
Require Import Crypto.Util.Option.
Require Import Crypto.Util.Prod.
Require Import Crypto.Util.Sigma.
Require Import Crypto.Util.Notations.
Require Import Crypto.Util.Sum.
Require Import Crypto.Util.Bool.Reflect.
Require Import Crypto.Util.Bool.
Require Import Crypto.Util.NatUtil.
Require Import Crypto.Util.ListUtil.
Require Import Crypto.Util.ListUtil.FoldMap.
Require Import Crypto.Util.ListUtil.Forall.
Require Import Crypto.Util.ListUtil.Permutation.
Require Import Crypto.Util.ListUtil.IndexOf.
Require Import Crypto.Util.ListUtil.Filter.
Require Import Crypto.Util.ListUtil.Split.
Require Import Crypto.Util.OptionList.
Require Import Crypto.Util.ZUtil.Definitions.
Require Import Crypto.Util.ZUtil.AddGetCarry.
Require Import Crypto.Util.ZUtil.MulSplit.
Require Import Crypto.Util.ZUtil.TruncatingShiftl.
Require Import Crypto.Util.ZUtil.Land.
Require Import Crypto.Util.ZUtil.Tactics.LtbToLt.
Require Import Crypto.Util.ZUtil.Tactics.ZeroBounds.
Require Import Crypto.Util.ZUtil.Tactics.PullPush.Modulo.
Require Import Crypto.Util.ZUtil.Ones.
Require Import Crypto.Util.ZUtil.LandLorShiftBounds.
Require Import Crypto.Util.ZUtil.LandLorBounds.
Require Import Crypto.Util.ZUtil.Tactics.PeelLe.
Require Import Crypto.Util.Tactics.BreakMatch.
Require Import Crypto.Util.Tactics.SpecializeBy.
Require Import Crypto.Util.Tactics.RevertUntil.
Require Import Crypto.Util.Tactics.HasBody.
Require Import Crypto.Util.Tactics.Head.
Require Import Crypto.Util.Tactics.PrintContext.
Require Import Crypto.Util.Tactics.PrintGoal.
Require Import Crypto.Util.Tactics.UniquePose.
Require Import Crypto.Util.Tactics.SplitInContext.
Require Import Crypto.Util.Tactics.DestructHead.
Require Import Crypto.Util.Tactics.SetEvars.
Require Import Crypto.Util.Tactics.SubstEvars.
Require Import Crypto.Util.Tactics.ClearHead.
Require Import Crypto.Assembly.EquivalenceProofs.
Require Import Crypto.Assembly.WithBedrock.Semantics.
Require Import Crypto.Assembly.WithBedrock.SymbolicProofs.
Import Assembly.Symbolic.
Import API.Compilers APINotations.Compilers AbstractInterpretation.ZRange.Compilers.
Import ListNotations.
Local Open Scope list_scope.

(* TODO: move to global settings *)
Local Set Keyed Unification.

Import Map.Interface Map.Separation. (* for coercions *)
Require Import bedrock2.Array.
Require Import bedrock2.ZnWords.
Require Import Rupicola.Lib.Tactics. (* for sepsimpl *)
Import LittleEndianList.
Import coqutil.Word.Interface.

Definition R_regs_preserved_v rn (m : Semantics.reg_state)
  := Z.land (Tuple.nth_default 0%Z rn m) (Z.ones 64).

Definition R_regs_preserved G d G' d' (m : Semantics.reg_state) rs rs'
  := forall rn idx, Symbolic.get_reg rs' rn = Some idx -> exists idx', Symbolic.get_reg rs rn = Some idx' /\ let v := R_regs_preserved_v (N.to_nat rn) m in eval_idx_Z G d idx' v -> eval_idx_Z G' d' idx v.

Lemma R_regs_preserved_set_reg G d G' d' rs rs' ri rm v
      (H : R_regs_preserved G d G' d' rm rs rs')
      (H_same : (ri < N.of_nat (List.length widest_registers))%N -> exists idx, Symbolic.get_reg rs ri = Some idx /\ let v' := R_regs_preserved_v (N.to_nat ri) rm in eval_idx_Z G d idx v' -> eval_idx_Z G' d' v v')
  : R_regs_preserved G d G' d' rm rs (Symbolic.set_reg rs' ri v).
Proof.
  cbv [R_regs_preserved] in *.
  intros rn idx; specialize (H rn).
  rewrite get_reg_set_reg_full; intro.
  vm_compute (length widest_registers) in *.
  repeat first [ progress break_innermost_match_hyps
               | progress inversion_option
               | progress subst
               | progress destruct_head'_and
               | progress destruct_head'_or
               | progress destruct_head'_ex
               | progress specialize_by_assumption
               | progress specialize_by lia
               | rewrite @Bool.andb_true_iff in *
               | rewrite @Bool.andb_false_iff in *
               | solve [ eauto ]
               | progress reflect_hyps
               | match goal with
                 | [ H : forall v, ?k = Some v -> _, H' : ?k = Some _ |- _ ]
                   => specialize (H _ H')
                 end ].
Timeout 5 Qed.

@coqbot-app
Copy link
Contributor

coqbot-app bot commented Mar 4, 2026

I was unable to minimize any of the CI targets that you requested.
ci-fiat_crypto was not minimized because no error message was found

@ppedrot
Copy link
Member Author

ppedrot commented Mar 4, 2026

@coqbot resume ci minimize fiat-crypto bug.v

@coqbot-app
Copy link
Contributor

coqbot-app bot commented Mar 4, 2026

I was unable to minimize any of the CI targets that you requested.
The requested target 'fiat-crypto' could not be found among the jobs bench, ci-fiat_crypto, ci-tactician.

@ppedrot
Copy link
Member Author

ppedrot commented Mar 4, 2026

It seems that the minimizer is not able to handle timeouts properly even if we gave it a failing reproduction test... (cc @JasonGross)

@ppedrot ppedrot added the request: full CI Use this label when you want your next push to trigger a full CI. label Mar 4, 2026
@ppedrot ppedrot force-pushed the preserve-let-in-kernel-the-return branch from 8cbd4cb to c5d5ec8 Compare March 4, 2026 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 Mar 4, 2026
@JasonGross
Copy link
Member

The bot looks at the CI log to determine the error message it is supposed to maintain. Here there was no error message, so it can't minimize. We should probably add a mode that disables this check ("coqbot resume ci overlay minimize" or something), but in the meantime, you can make a branch of fiat-crypto with the patch, add an overlay, retrigger the CI, and then trigger the minimizer on the timeout that occurs in CI logs.

ppedrot added 2 commits March 5, 2026 11:33
When the expand_let typing flag is set in the environment, we change
the kernel typing rule for let-bindings from

let x := t in u : T{x := t}

to

let x := t in u : let x := t in T.

We cannot do this by default since it may change the inferred type for
some expressions, which is returned when the expected type is not
provided. To work around this, we statically set the flag in expressions
for which the precise inferred type is not relevant. For now there is
no user-facing flag that would allow setting this option in a more
fine-grained way though, but it is easy to fix.

This is a revival of rocq-prover#13606 and a partial fix of rocq-prover#11838. The latter still
suffers from superlinear blowups in unrelated parts of the kernel, namely
VM and native compilation.
@ppedrot ppedrot added the request: full CI Use this label when you want your next push to trigger a full CI. label Mar 5, 2026
@ppedrot ppedrot force-pushed the preserve-let-in-kernel-the-return branch from c5d5ec8 to 18f1190 Compare March 5, 2026 10:34
@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 Mar 5, 2026
@ppedrot
Copy link
Member Author

ppedrot commented Mar 5, 2026

@coqbot ci minimize

@coqbot-app
Copy link
Contributor

coqbot-app bot commented Mar 5, 2026

I have initiated minimization at commit 18f1190 for the suggested target ci-fiat_crypto as requested.

@coqbot-app
Copy link
Contributor

coqbot-app bot commented Mar 5, 2026

Error: Could not minimize file in 10m 2s (from ci-fiat_crypto) (full log on GitHub Actions, cc @JasonGross)

build log (truncated to last 26KiB; full 5.4MiB file on GitHub Actions Artifacts under build.log)
a/Related.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Sigma/Related.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Sigma/Related.vo  
   creating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Strings/
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Strings/Ascii.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Strings/Ascii.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Strings/Ascii.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Strings/Decimal.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Strings/Decimal.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Strings/Decimal.vo  
   creating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Strings/Parse/
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Strings/Parse/Common.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Strings/Parse/Common.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Strings/Parse/Common.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Strings/ParseArithmetic.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Strings/ParseArithmetic.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Strings/ParseArithmetic.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Strings/String.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Strings/String.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Strings/String.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Sum.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Sum.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Sum.vo  
   creating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/AssertSucceedsPreserveError.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/AssertSucceedsPreserveError.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/AssertSucceedsPreserveError.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/BreakMatch.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/BreakMatch.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/BreakMatch.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/CPSId.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/CPSId.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/CPSId.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/CacheTerm.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/CacheTerm.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/CacheTerm.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/ClearFree.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/ClearFree.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/ClearFree.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/ConstrFail.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/ConstrFail.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/ConstrFail.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/Contains.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/Contains.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/Contains.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/DebugPrint.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/DebugPrint.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/DebugPrint.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/DestructHead.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/DestructHead.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/DestructHead.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/DestructHyps.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/DestructHyps.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/DestructHyps.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/DoWithHyp.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/DoWithHyp.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/DoWithHyp.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/EvarNormalize.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/EvarNormalize.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/EvarNormalize.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/FindHyp.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/FindHyp.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/FindHyp.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/GetGoal.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/GetGoal.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/GetGoal.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/Head.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/Head.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/Head.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/HeadUnderBinders.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/HeadUnderBinders.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/HeadUnderBinders.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/Not.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/Not.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/Not.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/PrintContext.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/PrintContext.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/PrintContext.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/PrintGoal.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/PrintGoal.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/PrintGoal.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/RewriteHyp.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/RewriteHyp.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/RewriteHyp.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/RunTacticAsConstr.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/RunTacticAsConstr.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/RunTacticAsConstr.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/SetEvars.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/SetEvars.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/SetEvars.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/SetoidSubst.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/SetoidSubst.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/SetoidSubst.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/SpecializeAllWays.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/SpecializeAllWays.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/SpecializeAllWays.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/SpecializeBy.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/SpecializeBy.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/SpecializeBy.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/SplitInContext.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/SplitInContext.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/SplitInContext.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/SubstEvars.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/SubstEvars.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/SubstEvars.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/Test.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/Test.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/Test.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/TransparentAssert.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/TransparentAssert.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/TransparentAssert.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/UniquePose.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/UniquePose.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/UniquePose.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/WarnIfGoalsRemain.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/WarnIfGoalsRemain.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/WarnIfGoalsRemain.vo  
   creating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/Array.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/Array.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/Array.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/Char.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/Char.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/Char.vo  
   creating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/Constr/
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/Constr.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/Constr.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/Constr.vo  
   creating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/Constr/Unsafe/
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/Constr/Unsafe/MakeAbbreviations.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/Constr/Unsafe/MakeAbbreviations.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/Constr/Unsafe/MakeAbbreviations.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DecomposeLambda.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DecomposeLambda.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DecomposeLambda.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestApp.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestApp.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestApp.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestCase.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestCase.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestCase.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestCast.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestCast.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestCast.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestCoFix.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestCoFix.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestCoFix.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestConstant.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestConstant.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestConstant.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestConstructor.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestConstructor.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestConstructor.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestEvar.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestEvar.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestEvar.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestFix.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestFix.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestFix.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestInd.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestInd.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestInd.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestLambda.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestLambda.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestLambda.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestLetIn.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestLetIn.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestLetIn.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestMeta.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestMeta.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestMeta.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestProd.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestProd.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestProd.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestProj.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestProj.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestProj.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestRel.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestRel.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestRel.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestSort.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestSort.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestSort.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestVar.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestVar.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestVar.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/FixNotationsForPerformance.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/FixNotationsForPerformance.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/FixNotationsForPerformance.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/Head.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/Head.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/Head.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/HeadReference.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/HeadReference.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/HeadReference.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/Ident.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/Ident.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/Ident.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/InFreshContext.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/InFreshContext.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/InFreshContext.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/InstantiateEvar.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/InstantiateEvar.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/InstantiateEvar.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/Iterate.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/Iterate.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/Iterate.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/List.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/List.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/List.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/Ltac1.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/Ltac1.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/Ltac1.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/Message.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/Message.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/Message.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/Notations.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/Notations.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/Notations.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/Option.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/Option.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/Option.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/Proj.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/Proj.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/Proj.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/ReplaceByPattern.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/ReplaceByPattern.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/ReplaceByPattern.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/String.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/String.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/String.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/TypeList.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/TypeList.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/TypeList.vo  
   creating: _install_ci/lib/coq/user-contrib/Rewriter/Util/plugins/
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/plugins/Ltac2Extra.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/plugins/Ltac2Extra.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/plugins/Ltac2Extra.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/plugins/RewriterBuild.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/plugins/RewriterBuild.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/plugins/RewriterBuild.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/plugins/RewriterBuildRegistry.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/plugins/RewriterBuildRegistry.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/plugins/RewriterBuildRegistry.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/plugins/RewriterBuildRegistryImports.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/plugins/RewriterBuildRegistryImports.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/plugins/RewriterBuildRegistryImports.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/plugins/StrategyTactic.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/plugins/StrategyTactic.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/plugins/StrategyTactic.vo  
++ popd
/github/workspace/builds/coq /github/workspace
++ printf '::endgroup::\n'
::endgroup::
++ printf '::group::df -h\n'
::group::df -h
++ df -h
Filesystem      Size  Used Avail Use% Mounted on
overlay         145G   65G   80G  45% /
tmpfs            64M     0   64M   0% /dev
shm              64M     0   64M   0% /dev/shm
/dev/root       145G   65G   80G  45% /usr/sbin/docker-init
tmpfs           7.9G     0  7.9G   0% /proc/acpi
tmpfs           7.9G     0  7.9G   0% /proc/scsi
tmpfs           7.9G     0  7.9G   0% /sys/firmware
++ printf '::endgroup::\n'
::endgroup::
++ printf '::group::download passing artifacts @ %s %s\n' 4ae03bab6f01db9ac75257b21bac50f947fe1fd9 'https://gitlab.inria.fr/coq/coq/-/jobs/6953030/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6952945/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6953027/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6953012/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6952968/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6952973/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6953026/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6953050/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6952979/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6953000/artifacts/download'
::group::download passing artifacts @ 4ae03bab6f01db9ac75257b21bac50f947fe1fd9 https://gitlab.inria.fr/coq/coq/-/jobs/6953030/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6952945/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6953027/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6953012/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6952968/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6952973/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6953026/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6953050/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6952979/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6953000/artifacts/download
++ printf '::warning::download passing artifacts @ %s %s\n' 4ae03bab6f01db9ac75257b21bac50f947fe1fd9 'https://gitlab.inria.fr/coq/coq/-/jobs/6953030/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6952945/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6953027/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6953012/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6952968/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6952973/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6953026/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6953050/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6952979/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6953000/artifacts/download'
::warning::download passing artifacts @ 4ae03bab6f01db9ac75257b21bac50f947fe1fd9 https://gitlab.inria.fr/coq/coq/-/jobs/6953030/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6952945/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6953027/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6953012/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6952968/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6952973/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6953026/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6953050/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6952979/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6953000/artifacts/download
++ pushd coq-passing
/github/workspace/builds/coq/coq-passing /github/workspace/builds/coq /github/workspace
++ mkdir -p _build_ci
++ ln -s _build_ci saved_build_ci
++ git checkout 4ae03bab6f01db9ac75257b21bac50f947fe1fd9
Note: switching to '4ae03bab6f01db9ac75257b21bac50f947fe1fd9'.

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

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

  git switch -c <new-branch-name>

Or undo this operation with:

  git switch -

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

HEAD is now at 4ae03bab6f Merge PR #21669: Don't check opacity of constant in Typeclasses Opaque
++ for i in ${PASSING_ARTIFACT_URLS}
+++ printf %s https://gitlab.inria.fr/coq/coq/-/jobs/6953030/artifacts/download
+++ sha1sum
+++ cut '-d ' -f1
++ hash=c7f9f443b6b947bb6588f7f2da503748386d7d4b
++ wget https://gitlab.inria.fr/coq/coq/-/jobs/6953030/artifacts/download -O artifact-c7f9f443b6b947bb6588f7f2da503748386d7d4b.zip
--2026-03-05 12:47:17--  https://gitlab.inria.fr/coq/coq/-/jobs/6953030/artifacts/download
Resolving gitlab.inria.fr (gitlab.inria.fr)... 128.93.193.18
Connecting to gitlab.inria.fr (gitlab.inria.fr)|128.93.193.18|:443... connected.
HTTP request sent, awaiting response... 404 Not Found
2026-03-05 12:47:18 ERROR 404: Not Found.
minimizer log (truncated to last 26KiB; full 5.4MiB file on GitHub Actions Artifacts under bug.log)
a/Related.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Sigma/Related.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Sigma/Related.vo  
   creating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Strings/
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Strings/Ascii.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Strings/Ascii.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Strings/Ascii.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Strings/Decimal.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Strings/Decimal.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Strings/Decimal.vo  
   creating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Strings/Parse/
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Strings/Parse/Common.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Strings/Parse/Common.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Strings/Parse/Common.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Strings/ParseArithmetic.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Strings/ParseArithmetic.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Strings/ParseArithmetic.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Strings/String.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Strings/String.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Strings/String.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Sum.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Sum.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Sum.vo  
   creating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/AssertSucceedsPreserveError.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/AssertSucceedsPreserveError.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/AssertSucceedsPreserveError.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/BreakMatch.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/BreakMatch.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/BreakMatch.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/CPSId.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/CPSId.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/CPSId.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/CacheTerm.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/CacheTerm.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/CacheTerm.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/ClearFree.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/ClearFree.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/ClearFree.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/ConstrFail.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/ConstrFail.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/ConstrFail.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/Contains.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/Contains.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/Contains.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/DebugPrint.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/DebugPrint.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/DebugPrint.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/DestructHead.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/DestructHead.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/DestructHead.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/DestructHyps.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/DestructHyps.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/DestructHyps.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/DoWithHyp.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/DoWithHyp.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/DoWithHyp.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/EvarNormalize.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/EvarNormalize.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/EvarNormalize.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/FindHyp.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/FindHyp.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/FindHyp.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/GetGoal.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/GetGoal.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/GetGoal.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/Head.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/Head.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/Head.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/HeadUnderBinders.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/HeadUnderBinders.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/HeadUnderBinders.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/Not.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/Not.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/Not.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/PrintContext.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/PrintContext.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/PrintContext.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/PrintGoal.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/PrintGoal.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/PrintGoal.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/RewriteHyp.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/RewriteHyp.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/RewriteHyp.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/RunTacticAsConstr.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/RunTacticAsConstr.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/RunTacticAsConstr.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/SetEvars.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/SetEvars.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/SetEvars.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/SetoidSubst.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/SetoidSubst.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/SetoidSubst.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/SpecializeAllWays.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/SpecializeAllWays.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/SpecializeAllWays.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/SpecializeBy.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/SpecializeBy.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/SpecializeBy.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/SplitInContext.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/SplitInContext.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/SplitInContext.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/SubstEvars.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/SubstEvars.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/SubstEvars.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/Test.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/Test.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/Test.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/TransparentAssert.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/TransparentAssert.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/TransparentAssert.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/UniquePose.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/UniquePose.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/UniquePose.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/WarnIfGoalsRemain.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/WarnIfGoalsRemain.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/WarnIfGoalsRemain.vo  
   creating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/Array.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/Array.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/Array.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/Char.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/Char.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/Char.vo  
   creating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/Constr/
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/Constr.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/Constr.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/Constr.vo  
   creating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/Constr/Unsafe/
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/Constr/Unsafe/MakeAbbreviations.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/Constr/Unsafe/MakeAbbreviations.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/Constr/Unsafe/MakeAbbreviations.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DecomposeLambda.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DecomposeLambda.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DecomposeLambda.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestApp.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestApp.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestApp.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestCase.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestCase.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestCase.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestCast.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestCast.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestCast.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestCoFix.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestCoFix.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestCoFix.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestConstant.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestConstant.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestConstant.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestConstructor.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestConstructor.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestConstructor.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestEvar.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestEvar.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestEvar.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestFix.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestFix.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestFix.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestInd.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestInd.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestInd.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestLambda.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestLambda.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestLambda.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestLetIn.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestLetIn.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestLetIn.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestMeta.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestMeta.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestMeta.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestProd.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestProd.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestProd.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestProj.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestProj.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestProj.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestRel.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestRel.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestRel.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestSort.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestSort.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestSort.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestVar.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestVar.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestVar.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/FixNotationsForPerformance.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/FixNotationsForPerformance.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/FixNotationsForPerformance.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/Head.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/Head.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/Head.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/HeadReference.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/HeadReference.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/HeadReference.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/Ident.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/Ident.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/Ident.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/InFreshContext.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/InFreshContext.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/InFreshContext.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/InstantiateEvar.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/InstantiateEvar.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/InstantiateEvar.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/Iterate.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/Iterate.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/Iterate.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/List.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/List.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/List.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/Ltac1.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/Ltac1.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/Ltac1.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/Message.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/Message.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/Message.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/Notations.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/Notations.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/Notations.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/Option.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/Option.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/Option.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/Proj.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/Proj.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/Proj.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/ReplaceByPattern.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/ReplaceByPattern.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/ReplaceByPattern.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/String.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/String.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/String.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/TypeList.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/TypeList.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/TypeList.vo  
   creating: _install_ci/lib/coq/user-contrib/Rewriter/Util/plugins/
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/plugins/Ltac2Extra.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/plugins/Ltac2Extra.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/plugins/Ltac2Extra.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/plugins/RewriterBuild.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/plugins/RewriterBuild.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/plugins/RewriterBuild.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/plugins/RewriterBuildRegistry.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/plugins/RewriterBuildRegistry.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/plugins/RewriterBuildRegistry.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/plugins/RewriterBuildRegistryImports.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/plugins/RewriterBuildRegistryImports.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/plugins/RewriterBuildRegistryImports.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/plugins/StrategyTactic.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/plugins/StrategyTactic.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/plugins/StrategyTactic.vo  
++ popd
/github/workspace/builds/coq /github/workspace
++ printf '::endgroup::\n'
::endgroup::
++ printf '::group::df -h\n'
::group::df -h
++ df -h
Filesystem      Size  Used Avail Use% Mounted on
overlay         145G   65G   80G  45% /
tmpfs            64M     0   64M   0% /dev
shm              64M     0   64M   0% /dev/shm
/dev/root       145G   65G   80G  45% /usr/sbin/docker-init
tmpfs           7.9G     0  7.9G   0% /proc/acpi
tmpfs           7.9G     0  7.9G   0% /proc/scsi
tmpfs           7.9G     0  7.9G   0% /sys/firmware
++ printf '::endgroup::\n'
::endgroup::
++ printf '::group::download passing artifacts @ %s %s\n' 4ae03bab6f01db9ac75257b21bac50f947fe1fd9 'https://gitlab.inria.fr/coq/coq/-/jobs/6953030/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6952945/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6953027/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6953012/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6952968/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6952973/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6953026/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6953050/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6952979/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6953000/artifacts/download'
::group::download passing artifacts @ 4ae03bab6f01db9ac75257b21bac50f947fe1fd9 https://gitlab.inria.fr/coq/coq/-/jobs/6953030/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6952945/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6953027/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6953012/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6952968/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6952973/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6953026/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6953050/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6952979/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6953000/artifacts/download
++ printf '::warning::download passing artifacts @ %s %s\n' 4ae03bab6f01db9ac75257b21bac50f947fe1fd9 'https://gitlab.inria.fr/coq/coq/-/jobs/6953030/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6952945/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6953027/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6953012/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6952968/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6952973/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6953026/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6953050/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6952979/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6953000/artifacts/download'
::warning::download passing artifacts @ 4ae03bab6f01db9ac75257b21bac50f947fe1fd9 https://gitlab.inria.fr/coq/coq/-/jobs/6953030/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6952945/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6953027/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6953012/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6952968/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6952973/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6953026/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6953050/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6952979/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6953000/artifacts/download
++ pushd coq-passing
/github/workspace/builds/coq/coq-passing /github/workspace/builds/coq /github/workspace
++ mkdir -p _build_ci
++ ln -s _build_ci saved_build_ci
++ git checkout 4ae03bab6f01db9ac75257b21bac50f947fe1fd9
Note: switching to '4ae03bab6f01db9ac75257b21bac50f947fe1fd9'.

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

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

  git switch -c <new-branch-name>

Or undo this operation with:

  git switch -

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

HEAD is now at 4ae03bab6f Merge PR #21669: Don't check opacity of constant in Typeclasses Opaque
++ for i in ${PASSING_ARTIFACT_URLS}
+++ printf %s https://gitlab.inria.fr/coq/coq/-/jobs/6953030/artifacts/download
+++ sha1sum
+++ cut '-d ' -f1
++ hash=c7f9f443b6b947bb6588f7f2da503748386d7d4b
++ wget https://gitlab.inria.fr/coq/coq/-/jobs/6953030/artifacts/download -O artifact-c7f9f443b6b947bb6588f7f2da503748386d7d4b.zip
--2026-03-05 12:47:17--  https://gitlab.inria.fr/coq/coq/-/jobs/6953030/artifacts/download
Resolving gitlab.inria.fr (gitlab.inria.fr)... 128.93.193.18
Connecting to gitlab.inria.fr (gitlab.inria.fr)|128.93.193.18|:443... connected.
HTTP request sent, awaiting response... 404 Not Found
2026-03-05 12:47:18 ERROR 404: Not Found.

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

@ppedrot
Copy link
Member Author

ppedrot commented Mar 5, 2026

coqbot tried to get the previous artifact for some reason and since there was none it miserably failed. I'm stubborn, so let's retry:

@coqbot ci minimize ci-fiat_crypto

@coqbot-app
Copy link
Contributor

coqbot-app bot commented Mar 5, 2026

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

@coqbot-app
Copy link
Contributor

coqbot-app bot commented Mar 5, 2026

Error: Could not minimize file in 9m 43s (from ci-fiat_crypto) (full log on GitHub Actions, cc @JasonGross)

build log (truncated to last 26KiB; full 5.4MiB file on GitHub Actions Artifacts under build.log)
a/Related.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Sigma/Related.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Sigma/Related.vo  
   creating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Strings/
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Strings/Ascii.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Strings/Ascii.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Strings/Ascii.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Strings/Decimal.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Strings/Decimal.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Strings/Decimal.vo  
   creating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Strings/Parse/
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Strings/Parse/Common.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Strings/Parse/Common.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Strings/Parse/Common.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Strings/ParseArithmetic.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Strings/ParseArithmetic.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Strings/ParseArithmetic.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Strings/String.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Strings/String.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Strings/String.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Sum.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Sum.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Sum.vo  
   creating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/AssertSucceedsPreserveError.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/AssertSucceedsPreserveError.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/AssertSucceedsPreserveError.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/BreakMatch.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/BreakMatch.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/BreakMatch.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/CPSId.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/CPSId.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/CPSId.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/CacheTerm.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/CacheTerm.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/CacheTerm.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/ClearFree.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/ClearFree.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/ClearFree.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/ConstrFail.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/ConstrFail.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/ConstrFail.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/Contains.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/Contains.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/Contains.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/DebugPrint.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/DebugPrint.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/DebugPrint.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/DestructHead.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/DestructHead.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/DestructHead.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/DestructHyps.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/DestructHyps.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/DestructHyps.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/DoWithHyp.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/DoWithHyp.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/DoWithHyp.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/EvarNormalize.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/EvarNormalize.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/EvarNormalize.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/FindHyp.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/FindHyp.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/FindHyp.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/GetGoal.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/GetGoal.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/GetGoal.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/Head.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/Head.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/Head.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/HeadUnderBinders.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/HeadUnderBinders.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/HeadUnderBinders.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/Not.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/Not.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/Not.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/PrintContext.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/PrintContext.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/PrintContext.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/PrintGoal.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/PrintGoal.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/PrintGoal.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/RewriteHyp.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/RewriteHyp.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/RewriteHyp.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/RunTacticAsConstr.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/RunTacticAsConstr.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/RunTacticAsConstr.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/SetEvars.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/SetEvars.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/SetEvars.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/SetoidSubst.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/SetoidSubst.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/SetoidSubst.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/SpecializeAllWays.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/SpecializeAllWays.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/SpecializeAllWays.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/SpecializeBy.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/SpecializeBy.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/SpecializeBy.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/SplitInContext.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/SplitInContext.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/SplitInContext.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/SubstEvars.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/SubstEvars.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/SubstEvars.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/Test.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/Test.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/Test.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/TransparentAssert.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/TransparentAssert.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/TransparentAssert.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/UniquePose.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/UniquePose.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/UniquePose.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/WarnIfGoalsRemain.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/WarnIfGoalsRemain.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/WarnIfGoalsRemain.vo  
   creating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/Array.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/Array.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/Array.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/Char.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/Char.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/Char.vo  
   creating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/Constr/
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/Constr.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/Constr.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/Constr.vo  
   creating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/Constr/Unsafe/
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/Constr/Unsafe/MakeAbbreviations.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/Constr/Unsafe/MakeAbbreviations.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/Constr/Unsafe/MakeAbbreviations.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DecomposeLambda.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DecomposeLambda.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DecomposeLambda.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestApp.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestApp.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestApp.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestCase.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestCase.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestCase.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestCast.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestCast.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestCast.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestCoFix.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestCoFix.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestCoFix.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestConstant.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestConstant.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestConstant.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestConstructor.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestConstructor.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestConstructor.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestEvar.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestEvar.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestEvar.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestFix.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestFix.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestFix.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestInd.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestInd.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestInd.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestLambda.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestLambda.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestLambda.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestLetIn.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestLetIn.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestLetIn.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestMeta.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestMeta.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestMeta.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestProd.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestProd.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestProd.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestProj.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestProj.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestProj.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestRel.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestRel.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestRel.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestSort.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestSort.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestSort.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestVar.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestVar.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestVar.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/FixNotationsForPerformance.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/FixNotationsForPerformance.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/FixNotationsForPerformance.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/Head.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/Head.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/Head.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/HeadReference.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/HeadReference.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/HeadReference.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/Ident.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/Ident.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/Ident.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/InFreshContext.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/InFreshContext.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/InFreshContext.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/InstantiateEvar.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/InstantiateEvar.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/InstantiateEvar.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/Iterate.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/Iterate.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/Iterate.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/List.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/List.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/List.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/Ltac1.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/Ltac1.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/Ltac1.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/Message.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/Message.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/Message.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/Notations.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/Notations.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/Notations.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/Option.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/Option.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/Option.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/Proj.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/Proj.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/Proj.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/ReplaceByPattern.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/ReplaceByPattern.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/ReplaceByPattern.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/String.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/String.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/String.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/TypeList.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/TypeList.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/TypeList.vo  
   creating: _install_ci/lib/coq/user-contrib/Rewriter/Util/plugins/
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/plugins/Ltac2Extra.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/plugins/Ltac2Extra.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/plugins/Ltac2Extra.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/plugins/RewriterBuild.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/plugins/RewriterBuild.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/plugins/RewriterBuild.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/plugins/RewriterBuildRegistry.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/plugins/RewriterBuildRegistry.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/plugins/RewriterBuildRegistry.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/plugins/RewriterBuildRegistryImports.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/plugins/RewriterBuildRegistryImports.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/plugins/RewriterBuildRegistryImports.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/plugins/StrategyTactic.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/plugins/StrategyTactic.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/plugins/StrategyTactic.vo  
++ popd
/github/workspace/builds/coq /github/workspace
++ printf '::endgroup::\n'
::endgroup::
++ printf '::group::df -h\n'
::group::df -h
++ df -h
Filesystem      Size  Used Avail Use% Mounted on
overlay         145G   66G   80G  46% /
tmpfs            64M     0   64M   0% /dev
shm              64M     0   64M   0% /dev/shm
/dev/root       145G   66G   80G  46% /usr/sbin/docker-init
tmpfs           7.9G     0  7.9G   0% /proc/acpi
tmpfs           7.9G     0  7.9G   0% /proc/scsi
tmpfs           7.9G     0  7.9G   0% /sys/firmware
++ printf '::endgroup::\n'
::endgroup::
++ printf '::group::download passing artifacts @ %s %s\n' 4ae03bab6f01db9ac75257b21bac50f947fe1fd9 'https://gitlab.inria.fr/coq/coq/-/jobs/6953030/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6952945/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6953027/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6953012/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6952968/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6952973/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6953026/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6953050/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6952979/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6953000/artifacts/download'
::group::download passing artifacts @ 4ae03bab6f01db9ac75257b21bac50f947fe1fd9 https://gitlab.inria.fr/coq/coq/-/jobs/6953030/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6952945/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6953027/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6953012/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6952968/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6952973/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6953026/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6953050/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6952979/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6953000/artifacts/download
++ printf '::warning::download passing artifacts @ %s %s\n' 4ae03bab6f01db9ac75257b21bac50f947fe1fd9 'https://gitlab.inria.fr/coq/coq/-/jobs/6953030/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6952945/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6953027/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6953012/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6952968/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6952973/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6953026/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6953050/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6952979/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6953000/artifacts/download'
::warning::download passing artifacts @ 4ae03bab6f01db9ac75257b21bac50f947fe1fd9 https://gitlab.inria.fr/coq/coq/-/jobs/6953030/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6952945/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6953027/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6953012/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6952968/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6952973/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6953026/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6953050/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6952979/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6953000/artifacts/download
++ pushd coq-passing
/github/workspace/builds/coq/coq-passing /github/workspace/builds/coq /github/workspace
++ mkdir -p _build_ci
++ ln -s _build_ci saved_build_ci
++ git checkout 4ae03bab6f01db9ac75257b21bac50f947fe1fd9
Note: switching to '4ae03bab6f01db9ac75257b21bac50f947fe1fd9'.

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

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

  git switch -c <new-branch-name>

Or undo this operation with:

  git switch -

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

HEAD is now at 4ae03bab6f Merge PR #21669: Don't check opacity of constant in Typeclasses Opaque
++ for i in ${PASSING_ARTIFACT_URLS}
+++ printf %s https://gitlab.inria.fr/coq/coq/-/jobs/6953030/artifacts/download
+++ sha1sum
+++ cut '-d ' -f1
++ hash=c7f9f443b6b947bb6588f7f2da503748386d7d4b
++ wget https://gitlab.inria.fr/coq/coq/-/jobs/6953030/artifacts/download -O artifact-c7f9f443b6b947bb6588f7f2da503748386d7d4b.zip
--2026-03-05 13:27:48--  https://gitlab.inria.fr/coq/coq/-/jobs/6953030/artifacts/download
Resolving gitlab.inria.fr (gitlab.inria.fr)... 128.93.193.18
Connecting to gitlab.inria.fr (gitlab.inria.fr)|128.93.193.18|:443... connected.
HTTP request sent, awaiting response... 404 Not Found
2026-03-05 13:27:49 ERROR 404: Not Found.
minimizer log (truncated to last 26KiB; full 5.4MiB file on GitHub Actions Artifacts under bug.log)
a/Related.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Sigma/Related.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Sigma/Related.vo  
   creating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Strings/
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Strings/Ascii.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Strings/Ascii.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Strings/Ascii.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Strings/Decimal.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Strings/Decimal.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Strings/Decimal.vo  
   creating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Strings/Parse/
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Strings/Parse/Common.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Strings/Parse/Common.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Strings/Parse/Common.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Strings/ParseArithmetic.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Strings/ParseArithmetic.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Strings/ParseArithmetic.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Strings/String.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Strings/String.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Strings/String.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Sum.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Sum.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Sum.vo  
   creating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/AssertSucceedsPreserveError.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/AssertSucceedsPreserveError.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/AssertSucceedsPreserveError.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/BreakMatch.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/BreakMatch.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/BreakMatch.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/CPSId.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/CPSId.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/CPSId.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/CacheTerm.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/CacheTerm.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/CacheTerm.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/ClearFree.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/ClearFree.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/ClearFree.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/ConstrFail.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/ConstrFail.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/ConstrFail.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/Contains.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/Contains.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/Contains.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/DebugPrint.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/DebugPrint.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/DebugPrint.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/DestructHead.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/DestructHead.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/DestructHead.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/DestructHyps.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/DestructHyps.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/DestructHyps.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/DoWithHyp.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/DoWithHyp.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/DoWithHyp.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/EvarNormalize.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/EvarNormalize.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/EvarNormalize.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/FindHyp.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/FindHyp.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/FindHyp.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/GetGoal.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/GetGoal.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/GetGoal.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/Head.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/Head.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/Head.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/HeadUnderBinders.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/HeadUnderBinders.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/HeadUnderBinders.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/Not.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/Not.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/Not.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/PrintContext.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/PrintContext.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/PrintContext.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/PrintGoal.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/PrintGoal.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/PrintGoal.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/RewriteHyp.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/RewriteHyp.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/RewriteHyp.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/RunTacticAsConstr.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/RunTacticAsConstr.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/RunTacticAsConstr.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/SetEvars.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/SetEvars.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/SetEvars.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/SetoidSubst.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/SetoidSubst.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/SetoidSubst.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/SpecializeAllWays.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/SpecializeAllWays.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/SpecializeAllWays.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/SpecializeBy.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/SpecializeBy.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/SpecializeBy.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/SplitInContext.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/SplitInContext.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/SplitInContext.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/SubstEvars.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/SubstEvars.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/SubstEvars.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/Test.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/Test.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/Test.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/TransparentAssert.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/TransparentAssert.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/TransparentAssert.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/UniquePose.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/UniquePose.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/UniquePose.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/WarnIfGoalsRemain.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/WarnIfGoalsRemain.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics/WarnIfGoalsRemain.vo  
   creating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/Array.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/Array.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/Array.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/Char.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/Char.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/Char.vo  
   creating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/Constr/
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/Constr.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/Constr.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/Constr.vo  
   creating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/Constr/Unsafe/
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/Constr/Unsafe/MakeAbbreviations.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/Constr/Unsafe/MakeAbbreviations.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/Constr/Unsafe/MakeAbbreviations.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DecomposeLambda.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DecomposeLambda.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DecomposeLambda.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestApp.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestApp.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestApp.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestCase.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestCase.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestCase.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestCast.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestCast.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestCast.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestCoFix.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestCoFix.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestCoFix.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestConstant.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestConstant.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestConstant.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestConstructor.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestConstructor.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestConstructor.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestEvar.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestEvar.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestEvar.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestFix.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestFix.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestFix.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestInd.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestInd.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestInd.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestLambda.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestLambda.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestLambda.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestLetIn.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestLetIn.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestLetIn.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestMeta.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestMeta.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestMeta.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestProd.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestProd.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestProd.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestProj.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestProj.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestProj.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestRel.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestRel.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestRel.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestSort.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestSort.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestSort.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestVar.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestVar.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/DestVar.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/FixNotationsForPerformance.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/FixNotationsForPerformance.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/FixNotationsForPerformance.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/Head.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/Head.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/Head.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/HeadReference.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/HeadReference.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/HeadReference.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/Ident.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/Ident.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/Ident.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/InFreshContext.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/InFreshContext.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/InFreshContext.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/InstantiateEvar.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/InstantiateEvar.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/InstantiateEvar.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/Iterate.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/Iterate.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/Iterate.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/List.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/List.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/List.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/Ltac1.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/Ltac1.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/Ltac1.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/Message.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/Message.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/Message.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/Notations.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/Notations.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/Notations.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/Option.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/Option.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/Option.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/Proj.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/Proj.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/Proj.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/ReplaceByPattern.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/ReplaceByPattern.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/ReplaceByPattern.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/String.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/String.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/Tactics2/String.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/TypeList.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/TypeList.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/TypeList.vo  
   creating: _install_ci/lib/coq/user-contrib/Rewriter/Util/plugins/
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/plugins/Ltac2Extra.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/plugins/Ltac2Extra.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/plugins/Ltac2Extra.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/plugins/RewriterBuild.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/plugins/RewriterBuild.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/plugins/RewriterBuild.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/plugins/RewriterBuildRegistry.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/plugins/RewriterBuildRegistry.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/plugins/RewriterBuildRegistry.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/plugins/RewriterBuildRegistryImports.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/plugins/RewriterBuildRegistryImports.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/plugins/RewriterBuildRegistryImports.vo  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/plugins/StrategyTactic.glob  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/plugins/StrategyTactic.v  
  inflating: _install_ci/lib/coq/user-contrib/Rewriter/Util/plugins/StrategyTactic.vo  
++ popd
/github/workspace/builds/coq /github/workspace
++ printf '::endgroup::\n'
::endgroup::
++ printf '::group::df -h\n'
::group::df -h
++ df -h
Filesystem      Size  Used Avail Use% Mounted on
overlay         145G   66G   80G  46% /
tmpfs            64M     0   64M   0% /dev
shm              64M     0   64M   0% /dev/shm
/dev/root       145G   66G   80G  46% /usr/sbin/docker-init
tmpfs           7.9G     0  7.9G   0% /proc/acpi
tmpfs           7.9G     0  7.9G   0% /proc/scsi
tmpfs           7.9G     0  7.9G   0% /sys/firmware
++ printf '::endgroup::\n'
::endgroup::
++ printf '::group::download passing artifacts @ %s %s\n' 4ae03bab6f01db9ac75257b21bac50f947fe1fd9 'https://gitlab.inria.fr/coq/coq/-/jobs/6953030/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6952945/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6953027/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6953012/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6952968/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6952973/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6953026/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6953050/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6952979/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6953000/artifacts/download'
::group::download passing artifacts @ 4ae03bab6f01db9ac75257b21bac50f947fe1fd9 https://gitlab.inria.fr/coq/coq/-/jobs/6953030/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6952945/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6953027/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6953012/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6952968/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6952973/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6953026/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6953050/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6952979/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6953000/artifacts/download
++ printf '::warning::download passing artifacts @ %s %s\n' 4ae03bab6f01db9ac75257b21bac50f947fe1fd9 'https://gitlab.inria.fr/coq/coq/-/jobs/6953030/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6952945/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6953027/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6953012/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6952968/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6952973/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6953026/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6953050/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6952979/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6953000/artifacts/download'
::warning::download passing artifacts @ 4ae03bab6f01db9ac75257b21bac50f947fe1fd9 https://gitlab.inria.fr/coq/coq/-/jobs/6953030/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6952945/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6953027/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6953012/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6952968/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6952973/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6953026/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6953050/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6952979/artifacts/download https://gitlab.inria.fr/coq/coq/-/jobs/6953000/artifacts/download
++ pushd coq-passing
/github/workspace/builds/coq/coq-passing /github/workspace/builds/coq /github/workspace
++ mkdir -p _build_ci
++ ln -s _build_ci saved_build_ci
++ git checkout 4ae03bab6f01db9ac75257b21bac50f947fe1fd9
Note: switching to '4ae03bab6f01db9ac75257b21bac50f947fe1fd9'.

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

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

  git switch -c <new-branch-name>

Or undo this operation with:

  git switch -

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

HEAD is now at 4ae03bab6f Merge PR #21669: Don't check opacity of constant in Typeclasses Opaque
++ for i in ${PASSING_ARTIFACT_URLS}
+++ printf %s https://gitlab.inria.fr/coq/coq/-/jobs/6953030/artifacts/download
+++ sha1sum
+++ cut '-d ' -f1
++ hash=c7f9f443b6b947bb6588f7f2da503748386d7d4b
++ wget https://gitlab.inria.fr/coq/coq/-/jobs/6953030/artifacts/download -O artifact-c7f9f443b6b947bb6588f7f2da503748386d7d4b.zip
--2026-03-05 13:27:48--  https://gitlab.inria.fr/coq/coq/-/jobs/6953030/artifacts/download
Resolving gitlab.inria.fr (gitlab.inria.fr)... 128.93.193.18
Connecting to gitlab.inria.fr (gitlab.inria.fr)|128.93.193.18|:443... connected.
HTTP request sent, awaiting response... 404 Not Found
2026-03-05 13:27:49 ERROR 404: Not Found.

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

@SkySkimmer
Copy link
Contributor

@coqbot ci minimize ci-fiat_crypto

@coqbot-app
Copy link
Contributor

coqbot-app bot commented Mar 5, 2026

I am now running minimization at commit 18f1190 on requested target ci-fiat_crypto. I'll come back to you with the results once it's done.
However, minimization may fail because the pipeline for the base commit (4ae03ba) has not yet finished.

@ppedrot
Copy link
Member Author

ppedrot commented Mar 7, 2026

@coqbot ci minimize ci-fiat_crypto

@coqbot-app
Copy link
Contributor

coqbot-app bot commented Mar 7, 2026

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

@coqbot-app
Copy link
Contributor

coqbot-app bot commented Mar 7, 2026

Minimization interrupted by timeout, being automatically continued. Partially Minimized File /home/runner/work/run-coq-bug-minimizer/run-coq-bug-minimizer/builds/coq/coq-failing/_build_ci/fiat_crypto/src/Assembly/WithBedrock/Proofs.v in 5h 15m 9s (from ci-fiat_crypto) (interrupted by timeout, being automatically continued) (full log on GitHub Actions - verbose log)
⭐ ⏱️ Partially Minimized Coq File (timeout)
(* -*- mode: coq; coq-prog-args: ("-emacs" "-q" "-w" "+implicit-core-hint-db,+implicits-in-term,+non-reversible-notation,+deprecated-intros-until-0,+deprecated-focus,+unused-intro-pattern,+variable-collision,+unexpected-implicit-declaration,+omega-is-deprecated,+deprecated-instantiate-syntax,+non-recursive,+undeclared-scope,+deprecated-hint-rewrite-without-locality,+deprecated-hint-without-locality,+deprecated-instance-without-locality,+deprecated-typeclasses-transparency-without-locality,+fragile-hint-constr,-deprecated-since-9.0,-deprecated-since-8.20,-deprecated-from-Coq" "-w" "-notation-overridden,-native-compiler-disabled,-ambiguous-paths,-masking-absolute-name" "-w" "-deprecated-native-compiler-option" "-native-compiler" "no" "-coqlib" "/github/workspace/builds/coq/coq-failing/_install_ci/lib/coq//" "-R" "/github/workspace/builds/coq/coq-failing/_build_ci/fiat_crypto/src" "Crypto" "-Q" "/github/workspace/cwd" "Top" "-Q" "/github/workspace/builds/coq/coq-failing/_install_ci/lib/coq///user-contrib/Coqprime" "Coqprime" "-Q" "/github/workspace/builds/coq/coq-failing/_install_ci/lib/coq///user-contrib/Kami" "Kami" "-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/Rewriter" "Rewriter" "-Q" "/github/workspace/builds/coq/coq-failing/_install_ci/lib/coq///user-contrib/Rupicola" "Rupicola" "-Q" "/github/workspace/builds/coq/coq-failing/_install_ci/lib/coq///user-contrib/Stdlib" "Stdlib" "-Q" "/github/workspace/builds/coq/coq-failing/_install_ci/lib/coq///user-contrib/bedrock2" "bedrock2" "-Q" "/github/workspace/builds/coq/coq-failing/_install_ci/lib/coq///user-contrib/bedrock2Examples" "bedrock2Examples" "-Q" "/github/workspace/builds/coq/coq-failing/_install_ci/lib/coq///user-contrib/compiler" "compiler" "-Q" "/github/workspace/builds/coq/coq-failing/_install_ci/lib/coq///user-contrib/coqutil" "coqutil" "-Q" "/github/workspace/builds/coq/coq-failing/_install_ci/lib/coq///user-contrib/riscv" "riscv" "-top" "Crypto.Assembly.WithBedrock.Proofs") -*- *)
(* File reduced by coq-bug-minimizer from original input, then from 122 lines to 45 lines *)
(* coqc version 9.3+alpha compiled with OCaml 4.14.2
   coqtop version 9.3+alpha
   Expected coqc runtime on this file: 1.827 sec
   Expected coqc peak memory usage on this file: 886660.0 kb *)
Require Crypto.Assembly.WithBedrock.Semantics.
Require Crypto.Assembly.EquivalenceProofs.
Import Stdlib.micromega.Lia.
Import Stdlib.ZArith.ZArith.
Import Crypto.Assembly.Syntax.
Import Crypto.Util.Option.
Import Crypto.Util.Bool.Reflect.
Import Crypto.Util.ListUtil.
Import Crypto.Util.Tactics.SpecializeBy.
Import Crypto.Assembly.EquivalenceProofs.

Definition R_regs_preserved_v rn (m : Semantics.reg_state)
  := Z.land (Tuple.nth_default 0%Z rn m) (Z.ones 64).

Definition R_regs_preserved G d G' d' (m : Semantics.reg_state) rs rs'
  := forall rn idx, Symbolic.get_reg rs' rn = Some idx -> exists idx', Symbolic.get_reg rs rn = Some idx' /\ let v := R_regs_preserved_v (N.to_nat rn) m in eval_idx_Z G d idx' v -> eval_idx_Z G' d' idx v.

Lemma R_regs_preserved_set_reg G d G' d' rs rs' ri rm v
      (H : R_regs_preserved G d G' d' rm rs rs')
      (H_same : (ri < N.of_nat (List.length widest_registers))%N -> exists idx, Symbolic.get_reg rs ri = Some idx /\ let v' := R_regs_preserved_v (N.to_nat ri) rm in eval_idx_Z G d idx v' -> eval_idx_Z G' d' v v')
  : R_regs_preserved G d G' d' rm rs (Symbolic.set_reg rs' ri v).
Proof.
  cbv [R_regs_preserved] in *.
  intros rn idx; specialize (H rn).
  rewrite get_reg_set_reg_full; intro.
  vm_compute (length widest_registers) in *.
  repeat first [ progress break_innermost_match_hyps
               | progress inversion_option
               | progress subst
               | progress destruct_head'_and
               | progress destruct_head'_or
               | progress destruct_head'_ex
               | progress specialize_by_assumption
               | progress specialize_by lia
               | rewrite @Bool.andb_true_iff in *
               | rewrite @Bool.andb_false_iff in *
               | solve [ eauto ]
               | progress reflect_hyps
               | match goal with
                 | [ H : forall v, ?k = Some v -> _, H' : ?k = Some _ |- _ ]
                   => specialize (H _ H')
                 end ].
Timeout 5 Qed.
🛠️ Intermediate Coq File (useful for debugging if minimization did not go as far as you wanted)
🛠️ 📜 Intermediate Coq File log (useful for debugging if minimization did not go as far as you wanted)
📜 Build Log (contains the Coq error message) (truncated to last 8.0KiB; full 13MiB file on GitHub Actions Artifacts under build.log)
/X25519/GarageDoor.vo
src/Bedrock/End2End/X25519/GarageDoorTop.vo
src/Bedrock/End2End/X25519/MontgomeryLadder.vo
src/Bedrock/End2End/X25519/MontgomeryLadderRISCV.vo
src/Bedrock/Everything.vo
src/Bedrock/Field/Stringification/Stringification.vo
src/Bedrock/Field/Synthesis/Examples/p224_64_new.vo
src/Bedrock/Field/Synthesis/New/ComputedOp.vo
src/Bedrock/Field/Synthesis/New/Signature.vo
src/Bedrock/Field/Synthesis/New/UnsaturatedSolinas.vo
src/Bedrock/Field/Synthesis/New/WordByWordMontgomery.vo
src/Bedrock/Field/Translation/Cmd.vo
src/Bedrock/Field/Translation/Func.vo
src/Bedrock/Field/Translation/Parameters/Defaults.vo
src/Bedrock/Field/Translation/Parameters/Defaults32.vo
src/Bedrock/Field/Translation/Parameters/Defaults64.vo
src/Bedrock/Field/Translation/Parameters/FE310.vo
src/Bedrock/Field/Translation/Proofs/Cmd.vo
src/Bedrock/Field/Translation/Proofs/Func.vo
src/Bedrock/Field/Translation/Proofs/ValidComputable/Cmd.vo
src/Bedrock/Field/Translation/Proofs/ValidComputable/Func.vo
src/Bedrock/Group/ScalarMult/MontgomeryLadder.vo
src/Bedrock/P256.vo
src/Bedrock/P256/Coord.vo
src/Bedrock/P256/Coord32.vo
src/Bedrock/P256/Jacobian.vo
src/Bedrock/P256/JacobianAffine.vo
src/Bedrock/P256/Platform.vo
src/Bedrock/P256/Specs.vo
src/Bedrock/Secp256k1/Addchain.vo
src/Bedrock/Secp256k1/Field256k1.vo
src/Bedrock/Secp256k1/JacobianCoZ.vo
src/Bedrock/Secp256k1/JoyeLadder.vo
src/Bedrock/Standalone/StandaloneHaskellMain.vo
src/Bedrock/Standalone/StandaloneJsOfOCamlMain.vo
src/Bedrock/Standalone/StandaloneOCamlMain.vo
src/BoundsPipeline.vo
src/CLI.vo
src/CompilersTestCases.vo
src/Curves/Montgomery/AffineInstances.vo
src/Curves/Montgomery/AffineProofs.vo
src/Curves/Montgomery/XZProofs.vo
src/Curves/Weierstrass/AffineProofs.vo
src/Curves/Weierstrass/Jacobian/CoZ.vo
src/Curves/Weierstrass/Jacobian/Jacobian.vo
src/Curves/Weierstrass/Jacobian/ScalarMult.vo
src/Curves/Weierstrass/P256.vo
src/Curves/Weierstrass/Projective.vo
src/Everything.vo
src/ExtractionJsOfOCaml/WithBedrock/fiat_crypto.vo
src/ExtractionJsOfOCaml/bedrock2_fiat_crypto.vo
src/ExtractionJsOfOCaml/fiat_crypto.vo
src/Fancy/Barrett256.vo
src/Fancy/Montgomery256.vo
src/PerfTesting/PerfTestPrint.vo
src/PerfTesting/PerfTestSearch.vo
src/PerfTesting/PerfTestSearchPattern.vo
src/PushButtonSynthesis/BarrettReduction.vo
src/PushButtonSynthesis/BaseConversion.vo
src/PushButtonSynthesis/DettmanMultiplication.vo
src/PushButtonSynthesis/FancyMontgomeryReduction.vo
src/PushButtonSynthesis/Primitives.vo
src/PushButtonSynthesis/SaturatedSolinas.vo
src/PushButtonSynthesis/SmallExamples.vo
src/PushButtonSynthesis/SolinasReduction.vo
src/PushButtonSynthesis/UnsaturatedSolinas.vo
src/PushButtonSynthesis/WordByWordMontgomery.vo
src/Rewriter/All.vo
src/Rewriter/PerfTesting/Core.vo
src/Rewriter/PerfTesting/StandaloneOCamlMain.vo
src/Rewriter/RulesGood.vo
src/SlowPrimeSynthesisExamples.vo
src/StandaloneDebuggingExamples.vo
src/StandaloneHaskellMain.vo
src/StandaloneJsOfOCamlMain.vo
src/StandaloneMonadicUtils.vo
src/StandaloneOCamlMain.vo
ROCQ compile src/Assembly/WithBedrock/Proofs.v
MINIMIZER_DEBUG_EXTRA: coqc: /github/workspace/builds/coq/coq-failing/_install_ci/bin///rocq
MINIMIZER_DEBUG_EXTRA: original invocation: '' 
MINIMIZER_DEBUG_EXTRA: new invocation: /github/workspace/builds/coq/coq-failing/_install_ci/bin/rocq.orig compile -q -w +implicit-core-hint-db\,+implicits-in-term\,+non-reversible-notation\,+deprecated-intros-until-0\,+deprecated-focus\,+unused-intro-pattern\,+variable-collision\,+unexpected-implicit-declaration\,+omega-is-deprecated\,+deprecated-instantiate-syntax\,+non-recursive\,+undeclared-scope\,+deprecated-hint-rewrite-without-locality\,+deprecated-hint-without-locality\,+deprecated-instance-without-locality\,+deprecated-typeclasses-transparency-without-locality\,+fragile-hint-constr\,-deprecated-since-9.0\,-deprecated-since-8.20\,-deprecated-from-Coq -w -notation-overridden\,-native-compiler-disabled\,-ambiguous-paths\,-masking-absolute-name -w -deprecated-native-compiler-option -native-compiler no -R /github/workspace/builds/coq/coq-failing/_build_ci/fiat_crypto/src Crypto src/Assembly/WithBedrock/Proofs.v 
MINIMIZER_DEBUG_EXTRA: coqpath: 
MINIMIZER_DEBUG_EXTRA: ocamlpath: /github/workspace/builds/coq/coq-failing/_install_ci/lib:
MINIMIZER_DEBUG_EXTRA: pwd: PWD=/github/workspace/builds/coq/coq-failing/_build_ci/fiat_crypto
MINIMIZER_DEBUG_EXTRA: exec: /github/workspace/builds/coq/coq-failing/_install_ci/bin/rocq.orig compile -q -w +implicit-core-hint-db\,+implicits-in-term\,+non-reversible-notation\,+deprecated-intros-until-0\,+deprecated-focus\,+unused-intro-pattern\,+variable-collision\,+unexpected-implicit-declaration\,+omega-is-deprecated\,+deprecated-instantiate-syntax\,+non-recursive\,+undeclared-scope\,+deprecated-hint-rewrite-without-locality\,+deprecated-hint-without-locality\,+deprecated-instance-without-locality\,+deprecated-typeclasses-transparency-without-locality\,+fragile-hint-constr\,-deprecated-since-9.0\,-deprecated-since-8.20\,-deprecated-from-Coq -w -notation-overridden\,-native-compiler-disabled\,-ambiguous-paths\,-masking-absolute-name -w -deprecated-native-compiler-option -native-compiler no -R /github/workspace/builds/coq/coq-failing/_build_ci/fiat_crypto/src Crypto src/Assembly/WithBedrock/Proofs.v 
MINIMIZER_DEBUG_EXTRA: coqlib: Warning: Deprecated environment variable COQLIB, use ROCQLIB instead.
/github/workspace/builds/coq/coq-failing/_install_ci/lib/coq//
MINIMIZER_DEBUG: info: /tmp/tmp-coqbot-minimizer.mAdSQuZimF
MINIMIZER_DEBUG: files:  src/Assembly/WithBedrock/Proofs.v /github/workspace/builds/coq/coq-failing/_build_ci/fiat_crypto/src/Assembly/WithBedrock/Proofs.vWarning, feedback message received but no listener to handle it!
Warning: Deprecated environment variable COQLIB, use ROCQLIB instead.
[deprecated-coq-env-var,deprecated-since-9.0,deprecated,default]Warning, feedback message received but no listener to handle it!
Warning: Deprecated environment variable COQLIB, use ROCQLIB instead.
[deprecated-coq-env-var,deprecated-since-9.0,deprecated,default]
Warning: Deprecated environment variable COQCORELIB,
use ROCQRUNTIMELIB instead.
[deprecated-coq-env-var,deprecated-since-9.0,deprecated,default]
File "./src/Assembly/WithBedrock/Proofs.v", line 19, characters 0-37:
Warning: Notations "_ + _" defined at level 50 with arguments constr
at level 50 and "_ +" defined at level 50 with arguments constr at next level
have incompatible prefixes. One of them will likely not work.
[notation-incompatible-prefix,parsing,default]
File "./src/Assembly/WithBedrock/Proofs.v", line 19, characters 0-37:
Warning: Notations "_ * _" defined at level 40 with arguments constr
at level 40 and "_ *" defined at level 40 with arguments constr at next level
have incompatible prefixes. One of them will likely not work.
[notation-incompatible-prefix,parsing,default]
File "./src/Assembly/WithBedrock/Proofs.v", line 19, characters 0-37:
Warning: Notations "slet _ .. _ <- _ ; _" defined at level 70 with arguments
binder and "slet _ .. _ := _ in _" defined at level 200 with arguments binder
have incompatible prefixes. One of them will likely not work.
[notation-incompatible-prefix,parsing,default]
File "./src/Assembly/WithBedrock/Proofs.v", line 106, characters 0-14:
Error: Timeout!

Command exited with non-zero status 1
src/Assembly/WithBedrock/Proofs.vo (real: 7.04, user: 6.83, sys: 0.20, mem: 917368 ko)
make: *** [Makefile.coq:815: src/Assembly/WithBedrock/Proofs.vo] Error 1
make: *** [src/Assembly/WithBedrock/Proofs.vo] Deleting file 'src/Assembly/WithBedrock/Proofs.glob'
+ code=2
+ printf '\n%s exit code: %s\n' fiat_crypto 2
+ '[' fiat_crypto '!=' stdlib_test ']'
+ echo 'Aggregating timing log...'
Aggregating timing log...
+ echo

+ tools/make-one-time-file.py --real _build_ci/fiat_crypto.log
    Time |  Peak Mem | File Name                     
-----------------------------------------------------
0m07.81s | 917368 ko | Total Time / Peak Mem         
-----------------------------------------------------
0m07.04s | 917368 ko | Assembly/WithBedrock/Proofs.vo
0m00.77s |  51404 ko | .Makefile.coq.d               
+ '[' '' ']'
+ exit 2
/github/workspace/builds/coq /github/workspace
::endgroup::
📜 🔎 Minimization Log (truncated to last 8.0KiB; full 11MiB file on GitHub Actions Artifacts under bug.log)
rs 0-45:
Warning: Use of “Require” inside a module is fragile. It is not recommended
to use this functionality in finished proof scripts.
[require-in-module,fragile,default]
File "/tmp/tmpkzjr638o/Crypto/Assembly/WithBedrock/Proofs.v", line 56, characters 0-42:
Warning: Use of “Require” inside a module is fragile. It is not recommended
to use this functionality in finished proof scripts.
[require-in-module,fragile,default]
File "/tmp/tmpkzjr638o/Crypto/Assembly/WithBedrock/Proofs.v", line 57, characters 0-50:
Warning: Use of “Require” inside a module is fragile. It is not recommended
to use this functionality in finished proof scripts.
[require-in-module,fragile,default]
File "/tmp/tmpkzjr638o/Crypto/Assembly/WithBedrock/Proofs.v", line 58, characters 0-38:
Warning: Use of “Require” inside a module is fragile. It is not recommended
to use this functionality in finished proof scripts.
[require-in-module,fragile,default]
File "/tmp/tmpkzjr638o/Crypto/Assembly/WithBedrock/Proofs.v", line 59, characters 0-49:
Warning: Use of “Require” inside a module is fragile. It is not recommended
to use this functionality in finished proof scripts.
[require-in-module,fragile,default]
File "/tmp/tmpkzjr638o/Crypto/Assembly/WithBedrock/Proofs.v", line 60, characters 0-52:
Warning: Use of “Require” inside a module is fragile. It is not recommended
to use this functionality in finished proof scripts.
[require-in-module,fragile,default]
File "/tmp/tmpkzjr638o/Crypto/Assembly/WithBedrock/Proofs.v", line 61, characters 0-57:
Warning: Use of “Require” inside a module is fragile. It is not recommended
to use this functionality in finished proof scripts.
[require-in-module,fragile,default]
File "/tmp/tmpkzjr638o/Crypto/Assembly/WithBedrock/Proofs.v", line 62, characters 0-38:
Warning: Use of “Require” inside a module is fragile. It is not recommended
to use this functionality in finished proof scripts.
[require-in-module,fragile,default]
File "/tmp/tmpkzjr638o/Crypto/Assembly/WithBedrock/Proofs.v", line 63, characters 0-52:
Warning: Use of “Require” inside a module is fragile. It is not recommended
to use this functionality in finished proof scripts.
[require-in-module,fragile,default]
File "/tmp/tmpkzjr638o/Crypto/Assembly/WithBedrock/Proofs.v", line 64, characters 0-47:
Warning: Use of “Require” inside a module is fragile. It is not recommended
to use this functionality in finished proof scripts.
[require-in-module,fragile,default]
File "/tmp/tmpkzjr638o/Crypto/Assembly/WithBedrock/Proofs.v", line 65, characters 0-48:
Warning: Use of “Require” inside a module is fragile. It is not recommended
to use this functionality in finished proof scripts.
[require-in-module,fragile,default]
File "/tmp/tmpkzjr638o/Crypto/Assembly/WithBedrock/Proofs.v", line 66, characters 0-46:
Warning: Use of “Require” inside a module is fragile. It is not recommended
to use this functionality in finished proof scripts.
[require-in-module,fragile,default]
File "/tmp/tmpkzjr638o/Crypto/Assembly/WithBedrock/Proofs.v", line 67, characters 0-48:
Warning: Use of “Require” inside a module is fragile. It is not recommended
to use this functionality in finished proof scripts.
[require-in-module,fragile,default]
File "/tmp/tmpkzjr638o/Crypto/Assembly/WithBedrock/Proofs.v", line 68, characters 0-60:
Warning: Use of “Require” inside a module is fragile. It is not recommended
to use this functionality in finished proof scripts.
[require-in-module,fragile,default]
File "/tmp/tmpkzjr638o/Crypto/Assembly/WithBedrock/Proofs.v", line 69, characters 0-43:
Warning: Use of “Require” inside a module is fragile. It is not recommended
to use this functionality in finished proof scripts.
[require-in-module,fragile,default]
File "/tmp/tmpkzjr638o/Crypto/Assembly/WithBedrock/Proofs.v", line 70, characters 0-40:
Warning: Use of “Require” inside a module is fragile. It is not recommended
to use this functionality in finished proof scripts.
[require-in-module,fragile,default]
File "/tmp/tmpkzjr638o/Crypto/Assembly/WithBedrock/Proofs.v", line 71, characters 0-48:
Warning: Use of “Require” inside a module is fragile. It is not recommended
to use this functionality in finished proof scripts.
[require-in-module,fragile,default]
File "/tmp/tmpkzjr638o/Crypto/Assembly/WithBedrock/Proofs.v", line 72, characters 0-45:
Warning: Use of “Require” inside a module is fragile. It is not recommended
to use this functionality in finished proof scripts.
[require-in-module,fragile,default]
File "/tmp/tmpkzjr638o/Crypto/Assembly/WithBedrock/Proofs.v", line 73, characters 0-46:
Warning: Use of “Require” inside a module is fragile. It is not recommended
to use this functionality in finished proof scripts.
[require-in-module,fragile,default]
File "/tmp/tmpkzjr638o/Crypto/Assembly/WithBedrock/Proofs.v", line 74, characters 0-50:
Warning: Use of “Require” inside a module is fragile. It is not recommended
to use this functionality in finished proof scripts.
[require-in-module,fragile,default]
File "/tmp/tmpkzjr638o/Crypto/Assembly/WithBedrock/Proofs.v", line 75, characters 0-48:
Warning: Use of “Require” inside a module is fragile. It is not recommended
to use this functionality in finished proof scripts.
[require-in-module,fragile,default]
File "/tmp/tmpkzjr638o/Crypto/Assembly/WithBedrock/Proofs.v", line 76, characters 0-44:
Warning: Use of “Require” inside a module is fragile. It is not recommended
to use this functionality in finished proof scripts.
[require-in-module,fragile,default]
File "/tmp/tmpkzjr638o/Crypto/Assembly/WithBedrock/Proofs.v", line 77, characters 0-46:
Warning: Use of “Require” inside a module is fragile. It is not recommended
to use this functionality in finished proof scripts.
[require-in-module,fragile,default]
File "/tmp/tmpkzjr638o/Crypto/Assembly/WithBedrock/Proofs.v", line 78, characters 0-45:
Warning: Use of “Require” inside a module is fragile. It is not recommended
to use this functionality in finished proof scripts.
[require-in-module,fragile,default]
File "/tmp/tmpkzjr638o/Crypto/Assembly/WithBedrock/Proofs.v", line 462, characters 2-24:
Warning: Tactic Notation revert dependent (hyp) is deprecated since 8.18.
Use "generalize dependent" instead ("revert dependent" is currently an alias)
[deprecated-tactic-notation-since-8.18,deprecated-since-8.18,deprecated-tactic-notation,deprecated,default]
File "/tmp/tmpkzjr638o/Crypto/Assembly/WithBedrock/Proofs.v", line 462, characters 26-44:
Warning: Tactic Notation revert dependent (hyp) is deprecated since 8.18.
Use "generalize dependent" instead ("revert dependent" is currently an alias)
[deprecated-tactic-notation-since-8.18,deprecated-since-8.18,deprecated-tactic-notation,deprecated,default]
File "/tmp/tmpkzjr638o/Crypto/Assembly/WithBedrock/Proofs.v", line 462, characters 46-65:
Warning: Tactic Notation revert dependent (hyp) is deprecated since 8.18.
Use "generalize dependent" instead ("revert dependent" is currently an alias)
[deprecated-tactic-notation-since-8.18,deprecated-since-8.18,deprecated-tactic-notation,deprecated,default]
File "/tmp/tmpkzjr638o/Crypto/Assembly/WithBedrock/Proofs.v", line 462, characters 67-98:
Warning: Tactic Notation revert dependent (hyp) is deprecated since 8.18.
Use "generalize dependent" instead ("revert dependent" is currently an alias)
[deprecated-tactic-notation-since-8.18,deprecated-since-8.18,deprecated-tactic-notation,deprecated,default]
File "/tmp/tmpkzjr638o/Crypto/Assembly/WithBedrock/Proofs.v", line 462, characters 100-134:
Warning: Tactic Notation revert dependent (hyp) is deprecated since 8.18.
Use "generalize dependent" instead ("revert dependent" is currently an alias)
[deprecated-tactic-notation-since-8.18,deprecated-since-8.18,deprecated-tactic-notation,deprecated,default]
File "/tmp/tmpkzjr638o/Crypto/Assembly/WithBedrock/Proofs.v", line 1147, characters 2-68:
Warning: Found unregistered eliminator eval_ind for eval by name.
Use "Register Scheme" with it instead
("as ind_dep" if dependent or "as ind_nodep" if non dependent).
[deprecated-lookup-elim-by-name,deprecated-since-9.1,deprecated,default]

Timeout! (external)

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
Copy link
Contributor

That may be as minimized as it will get. From there it will inline dependencies but probably have to leave a lot of them around.

@coqbot-app
Copy link
Contributor

coqbot-app bot commented Mar 8, 2026

Minimization interrupted by timeout, being automatically continued. Partially Minimized File /home/runner/work/run-coq-bug-minimizer/run-coq-bug-minimizer/builds/coq/coq-failing/_build_ci/fiat_crypto/src/Assembly/WithBedrock/Proofs.v in 5h 15m 11s (from ci-fiat_crypto) (interrupted by timeout, being automatically continued) (full log on GitHub Actions - verbose log)
⭐ ⏱️ Partially Minimized Coq File (timeout)
(* -*- mode: coq; coq-prog-args: ("-emacs" "-q" "-w" "+implicit-core-hint-db,+implicits-in-term,+non-reversible-notation,+deprecated-intros-until-0,+deprecated-focus,+unused-intro-pattern,+variable-collision,+unexpected-implicit-declaration,+omega-is-deprecated,+deprecated-instantiate-syntax,+non-recursive,+undeclared-scope,+deprecated-hint-rewrite-without-locality,+deprecated-hint-without-locality,+deprecated-instance-without-locality,+deprecated-typeclasses-transparency-without-locality,+fragile-hint-constr,-deprecated-since-9.0,-deprecated-since-8.20,-deprecated-from-Coq" "-w" "-notation-overridden,-native-compiler-disabled,-ambiguous-paths,-masking-absolute-name" "-w" "-deprecated-native-compiler-option" "-native-compiler" "no" "-coqlib" "/github/workspace/builds/coq/coq-failing/_install_ci/lib/coq//" "-R" "/github/workspace/builds/coq/coq-failing/_build_ci/fiat_crypto/src" "Crypto" "-Q" "/github/workspace/cwd" "Top" "-Q" "/github/workspace/builds/coq/coq-failing/_install_ci/lib/coq///user-contrib/Coqprime" "Coqprime" "-Q" "/github/workspace/builds/coq/coq-failing/_install_ci/lib/coq///user-contrib/Kami" "Kami" "-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/Rewriter" "Rewriter" "-Q" "/github/workspace/builds/coq/coq-failing/_install_ci/lib/coq///user-contrib/Rupicola" "Rupicola" "-Q" "/github/workspace/builds/coq/coq-failing/_install_ci/lib/coq///user-contrib/Stdlib" "Stdlib" "-Q" "/github/workspace/builds/coq/coq-failing/_install_ci/lib/coq///user-contrib/bedrock2" "bedrock2" "-Q" "/github/workspace/builds/coq/coq-failing/_install_ci/lib/coq///user-contrib/bedrock2Examples" "bedrock2Examples" "-Q" "/github/workspace/builds/coq/coq-failing/_install_ci/lib/coq///user-contrib/compiler" "compiler" "-Q" "/github/workspace/builds/coq/coq-failing/_install_ci/lib/coq///user-contrib/coqutil" "coqutil" "-Q" "/github/workspace/builds/coq/coq-failing/_install_ci/lib/coq///user-contrib/riscv" "riscv" "-top" "Top.bug_01") -*- *)
(* File reduced by coq-bug-minimizer from original input, then from 122 lines to 45 lines, then from 65 lines to 45 lines *)
(* coqc version 9.3+alpha compiled with OCaml 4.14.2
   coqtop version 9.3+alpha
   Expected coqc runtime on this file: 1.852 sec
   Expected coqc peak memory usage on this file: 888372.0 kb *)
Require Crypto.Assembly.WithBedrock.Semantics.
Require Crypto.Assembly.EquivalenceProofs.
Import Stdlib.micromega.Lia.
Import Stdlib.ZArith.ZArith.
Import Crypto.Assembly.Syntax.
Import Crypto.Util.Option.
Import Crypto.Util.Bool.Reflect.
Import Crypto.Util.ListUtil.
Import Crypto.Util.Tactics.SpecializeBy.
Import Crypto.Assembly.EquivalenceProofs.

Definition R_regs_preserved_v rn (m : Semantics.reg_state)
  := Z.land (Tuple.nth_default 0%Z rn m) (Z.ones 64).

Definition R_regs_preserved G d G' d' (m : Semantics.reg_state) rs rs'
  := forall rn idx, Symbolic.get_reg rs' rn = Some idx -> exists idx', Symbolic.get_reg rs rn = Some idx' /\ let v := R_regs_preserved_v (N.to_nat rn) m in eval_idx_Z G d idx' v -> eval_idx_Z G' d' idx v.

Lemma R_regs_preserved_set_reg G d G' d' rs rs' ri rm v
      (H : R_regs_preserved G d G' d' rm rs rs')
      (H_same : (ri < N.of_nat (List.length widest_registers))%N -> exists idx, Symbolic.get_reg rs ri = Some idx /\ let v' := R_regs_preserved_v (N.to_nat ri) rm in eval_idx_Z G d idx v' -> eval_idx_Z G' d' v v')
  : R_regs_preserved G d G' d' rm rs (Symbolic.set_reg rs' ri v).
Proof.
  cbv [R_regs_preserved] in *.
  intros rn idx; specialize (H rn).
  rewrite get_reg_set_reg_full; intro.
  vm_compute (length widest_registers) in *.
  repeat first [ progress break_innermost_match_hyps
               | progress inversion_option
               | progress subst
               | progress destruct_head'_and
               | progress destruct_head'_or
               | progress destruct_head'_ex
               | progress specialize_by_assumption
               | progress specialize_by lia
               | rewrite @Bool.andb_true_iff in *
               | rewrite @Bool.andb_false_iff in *
               | solve [ eauto ]
               | progress reflect_hyps
               | match goal with
                 | [ H : forall v, ?k = Some v -> _, H' : ?k = Some _ |- _ ]
                   => specialize (H _ H')
                 end ].
Timeout 5 Qed.
🛠️ Intermediate Coq File (useful for debugging if minimization did not go as far as you wanted)
🛠️ 📜 Intermediate Coq File log (useful for debugging if minimization did not go as far as you wanted)
📜 Build Log (contains the Coq error message) (truncated to last 8.0KiB; full 13MiB file on GitHub Actions Artifacts under build.log)
/X25519/GarageDoor.vo
src/Bedrock/End2End/X25519/GarageDoorTop.vo
src/Bedrock/End2End/X25519/MontgomeryLadder.vo
src/Bedrock/End2End/X25519/MontgomeryLadderRISCV.vo
src/Bedrock/Everything.vo
src/Bedrock/Field/Stringification/Stringification.vo
src/Bedrock/Field/Synthesis/Examples/p224_64_new.vo
src/Bedrock/Field/Synthesis/New/ComputedOp.vo
src/Bedrock/Field/Synthesis/New/Signature.vo
src/Bedrock/Field/Synthesis/New/UnsaturatedSolinas.vo
src/Bedrock/Field/Synthesis/New/WordByWordMontgomery.vo
src/Bedrock/Field/Translation/Cmd.vo
src/Bedrock/Field/Translation/Func.vo
src/Bedrock/Field/Translation/Parameters/Defaults.vo
src/Bedrock/Field/Translation/Parameters/Defaults32.vo
src/Bedrock/Field/Translation/Parameters/Defaults64.vo
src/Bedrock/Field/Translation/Parameters/FE310.vo
src/Bedrock/Field/Translation/Proofs/Cmd.vo
src/Bedrock/Field/Translation/Proofs/Func.vo
src/Bedrock/Field/Translation/Proofs/ValidComputable/Cmd.vo
src/Bedrock/Field/Translation/Proofs/ValidComputable/Func.vo
src/Bedrock/Group/ScalarMult/MontgomeryLadder.vo
src/Bedrock/P256.vo
src/Bedrock/P256/Coord.vo
src/Bedrock/P256/Coord32.vo
src/Bedrock/P256/Jacobian.vo
src/Bedrock/P256/JacobianAffine.vo
src/Bedrock/P256/Platform.vo
src/Bedrock/P256/Specs.vo
src/Bedrock/Secp256k1/Addchain.vo
src/Bedrock/Secp256k1/Field256k1.vo
src/Bedrock/Secp256k1/JacobianCoZ.vo
src/Bedrock/Secp256k1/JoyeLadder.vo
src/Bedrock/Standalone/StandaloneHaskellMain.vo
src/Bedrock/Standalone/StandaloneJsOfOCamlMain.vo
src/Bedrock/Standalone/StandaloneOCamlMain.vo
src/BoundsPipeline.vo
src/CLI.vo
src/CompilersTestCases.vo
src/Curves/Montgomery/AffineInstances.vo
src/Curves/Montgomery/AffineProofs.vo
src/Curves/Montgomery/XZProofs.vo
src/Curves/Weierstrass/AffineProofs.vo
src/Curves/Weierstrass/Jacobian/CoZ.vo
src/Curves/Weierstrass/Jacobian/Jacobian.vo
src/Curves/Weierstrass/Jacobian/ScalarMult.vo
src/Curves/Weierstrass/P256.vo
src/Curves/Weierstrass/Projective.vo
src/Everything.vo
src/ExtractionJsOfOCaml/WithBedrock/fiat_crypto.vo
src/ExtractionJsOfOCaml/bedrock2_fiat_crypto.vo
src/ExtractionJsOfOCaml/fiat_crypto.vo
src/Fancy/Barrett256.vo
src/Fancy/Montgomery256.vo
src/PerfTesting/PerfTestPrint.vo
src/PerfTesting/PerfTestSearch.vo
src/PerfTesting/PerfTestSearchPattern.vo
src/PushButtonSynthesis/BarrettReduction.vo
src/PushButtonSynthesis/BaseConversion.vo
src/PushButtonSynthesis/DettmanMultiplication.vo
src/PushButtonSynthesis/FancyMontgomeryReduction.vo
src/PushButtonSynthesis/Primitives.vo
src/PushButtonSynthesis/SaturatedSolinas.vo
src/PushButtonSynthesis/SmallExamples.vo
src/PushButtonSynthesis/SolinasReduction.vo
src/PushButtonSynthesis/UnsaturatedSolinas.vo
src/PushButtonSynthesis/WordByWordMontgomery.vo
src/Rewriter/All.vo
src/Rewriter/PerfTesting/Core.vo
src/Rewriter/PerfTesting/StandaloneOCamlMain.vo
src/Rewriter/RulesGood.vo
src/SlowPrimeSynthesisExamples.vo
src/StandaloneDebuggingExamples.vo
src/StandaloneHaskellMain.vo
src/StandaloneJsOfOCamlMain.vo
src/StandaloneMonadicUtils.vo
src/StandaloneOCamlMain.vo
ROCQ compile src/Assembly/WithBedrock/Proofs.v
MINIMIZER_DEBUG_EXTRA: coqc: /github/workspace/builds/coq/coq-failing/_install_ci/bin///rocq
MINIMIZER_DEBUG_EXTRA: original invocation: '' 
MINIMIZER_DEBUG_EXTRA: new invocation: /github/workspace/builds/coq/coq-failing/_install_ci/bin/rocq.orig compile -q -w +implicit-core-hint-db\,+implicits-in-term\,+non-reversible-notation\,+deprecated-intros-until-0\,+deprecated-focus\,+unused-intro-pattern\,+variable-collision\,+unexpected-implicit-declaration\,+omega-is-deprecated\,+deprecated-instantiate-syntax\,+non-recursive\,+undeclared-scope\,+deprecated-hint-rewrite-without-locality\,+deprecated-hint-without-locality\,+deprecated-instance-without-locality\,+deprecated-typeclasses-transparency-without-locality\,+fragile-hint-constr\,-deprecated-since-9.0\,-deprecated-since-8.20\,-deprecated-from-Coq -w -notation-overridden\,-native-compiler-disabled\,-ambiguous-paths\,-masking-absolute-name -w -deprecated-native-compiler-option -native-compiler no -R /github/workspace/builds/coq/coq-failing/_build_ci/fiat_crypto/src Crypto src/Assembly/WithBedrock/Proofs.v 
MINIMIZER_DEBUG_EXTRA: coqpath: 
MINIMIZER_DEBUG_EXTRA: ocamlpath: /github/workspace/builds/coq/coq-failing/_install_ci/lib:
MINIMIZER_DEBUG_EXTRA: pwd: PWD=/github/workspace/builds/coq/coq-failing/_build_ci/fiat_crypto
MINIMIZER_DEBUG_EXTRA: exec: /github/workspace/builds/coq/coq-failing/_install_ci/bin/rocq.orig compile -q -w +implicit-core-hint-db\,+implicits-in-term\,+non-reversible-notation\,+deprecated-intros-until-0\,+deprecated-focus\,+unused-intro-pattern\,+variable-collision\,+unexpected-implicit-declaration\,+omega-is-deprecated\,+deprecated-instantiate-syntax\,+non-recursive\,+undeclared-scope\,+deprecated-hint-rewrite-without-locality\,+deprecated-hint-without-locality\,+deprecated-instance-without-locality\,+deprecated-typeclasses-transparency-without-locality\,+fragile-hint-constr\,-deprecated-since-9.0\,-deprecated-since-8.20\,-deprecated-from-Coq -w -notation-overridden\,-native-compiler-disabled\,-ambiguous-paths\,-masking-absolute-name -w -deprecated-native-compiler-option -native-compiler no -R /github/workspace/builds/coq/coq-failing/_build_ci/fiat_crypto/src Crypto src/Assembly/WithBedrock/Proofs.v 
MINIMIZER_DEBUG_EXTRA: coqlib: Warning: Deprecated environment variable COQLIB, use ROCQLIB instead.
/github/workspace/builds/coq/coq-failing/_install_ci/lib/coq//
MINIMIZER_DEBUG: info: /tmp/tmp-coqbot-minimizer.qK4tBXyyW3
MINIMIZER_DEBUG: files:  src/Assembly/WithBedrock/Proofs.v /github/workspace/builds/coq/coq-failing/_build_ci/fiat_crypto/src/Assembly/WithBedrock/Proofs.vWarning, feedback message received but no listener to handle it!
Warning: Deprecated environment variable COQLIB, use ROCQLIB instead.
[deprecated-coq-env-var,deprecated-since-9.0,deprecated,default]Warning, feedback message received but no listener to handle it!
Warning: Deprecated environment variable COQLIB, use ROCQLIB instead.
[deprecated-coq-env-var,deprecated-since-9.0,deprecated,default]
Warning: Deprecated environment variable COQCORELIB,
use ROCQRUNTIMELIB instead.
[deprecated-coq-env-var,deprecated-since-9.0,deprecated,default]
File "./src/Assembly/WithBedrock/Proofs.v", line 19, characters 0-37:
Warning: Notations "_ + _" defined at level 50 with arguments constr
at level 50 and "_ +" defined at level 50 with arguments constr at next level
have incompatible prefixes. One of them will likely not work.
[notation-incompatible-prefix,parsing,default]
File "./src/Assembly/WithBedrock/Proofs.v", line 19, characters 0-37:
Warning: Notations "_ * _" defined at level 40 with arguments constr
at level 40 and "_ *" defined at level 40 with arguments constr at next level
have incompatible prefixes. One of them will likely not work.
[notation-incompatible-prefix,parsing,default]
File "./src/Assembly/WithBedrock/Proofs.v", line 19, characters 0-37:
Warning: Notations "slet _ .. _ <- _ ; _" defined at level 70 with arguments
binder and "slet _ .. _ := _ in _" defined at level 200 with arguments binder
have incompatible prefixes. One of them will likely not work.
[notation-incompatible-prefix,parsing,default]
File "./src/Assembly/WithBedrock/Proofs.v", line 106, characters 0-14:
Error: Timeout!

Command exited with non-zero status 1
src/Assembly/WithBedrock/Proofs.vo (real: 7.08, user: 6.88, sys: 0.20, mem: 917648 ko)
make: *** [Makefile.coq:815: src/Assembly/WithBedrock/Proofs.vo] Error 1
make: *** [src/Assembly/WithBedrock/Proofs.vo] Deleting file 'src/Assembly/WithBedrock/Proofs.glob'
+ code=2
+ printf '\n%s exit code: %s\n' fiat_crypto 2
+ '[' fiat_crypto '!=' stdlib_test ']'
+ echo 'Aggregating timing log...'
Aggregating timing log...
+ echo

+ tools/make-one-time-file.py --real _build_ci/fiat_crypto.log
    Time |  Peak Mem | File Name                     
-----------------------------------------------------
0m08.46s | 917648 ko | Total Time / Peak Mem         
-----------------------------------------------------
0m07.08s | 917648 ko | Assembly/WithBedrock/Proofs.vo
0m01.38s |  53032 ko | .Makefile.coq.d               
+ '[' '' ']'
+ exit 2
/github/workspace/builds/coq /github/workspace
::endgroup::
📜 🔎 Minimization Log (truncated to last 8.0KiB; full 13MiB file on GitHub Actions Artifacts under bug.log)
ire” inside a module is fragile. It is not recommended
to use this functionality in finished proof scripts.
[require-in-module,fragile,default]
File "/tmp/tmp0hpp8xk4/Top/bug_01.v", line 44, characters 0-38:
Warning: Use of “Require” inside a module is fragile. It is not recommended
to use this functionality in finished proof scripts.
[require-in-module,fragile,default]
File "/tmp/tmp0hpp8xk4/Top/bug_01.v", line 45, characters 0-45:
Warning: Use of “Require” inside a module is fragile. It is not recommended
to use this functionality in finished proof scripts.
[require-in-module,fragile,default]
File "/tmp/tmp0hpp8xk4/Top/bug_01.v", line 46, characters 0-45:
Warning: Use of “Require” inside a module is fragile. It is not recommended
to use this functionality in finished proof scripts.
[require-in-module,fragile,default]
File "/tmp/tmp0hpp8xk4/Top/bug_01.v", line 47, characters 0-42:
Warning: Use of “Require” inside a module is fragile. It is not recommended
to use this functionality in finished proof scripts.
[require-in-module,fragile,default]
File "/tmp/tmp0hpp8xk4/Top/bug_01.v", line 48, characters 0-50:
Warning: Use of “Require” inside a module is fragile. It is not recommended
to use this functionality in finished proof scripts.
[require-in-module,fragile,default]
File "/tmp/tmp0hpp8xk4/Top/bug_01.v", line 49, characters 0-38:
Warning: Use of “Require” inside a module is fragile. It is not recommended
to use this functionality in finished proof scripts.
[require-in-module,fragile,default]
File "/tmp/tmp0hpp8xk4/Top/bug_01.v", line 50, characters 0-49:
Warning: Use of “Require” inside a module is fragile. It is not recommended
to use this functionality in finished proof scripts.
[require-in-module,fragile,default]
File "/tmp/tmp0hpp8xk4/Top/bug_01.v", line 51, characters 0-52:
Warning: Use of “Require” inside a module is fragile. It is not recommended
to use this functionality in finished proof scripts.
[require-in-module,fragile,default]
File "/tmp/tmp0hpp8xk4/Top/bug_01.v", line 52, characters 0-57:
Warning: Use of “Require” inside a module is fragile. It is not recommended
to use this functionality in finished proof scripts.
[require-in-module,fragile,default]
File "/tmp/tmp0hpp8xk4/Top/bug_01.v", line 53, characters 0-38:
Warning: Use of “Require” inside a module is fragile. It is not recommended
to use this functionality in finished proof scripts.
[require-in-module,fragile,default]
File "/tmp/tmp0hpp8xk4/Top/bug_01.v", line 54, characters 0-52:
Warning: Use of “Require” inside a module is fragile. It is not recommended
to use this functionality in finished proof scripts.
[require-in-module,fragile,default]
File "/tmp/tmp0hpp8xk4/Top/bug_01.v", line 55, characters 0-47:
Warning: Use of “Require” inside a module is fragile. It is not recommended
to use this functionality in finished proof scripts.
[require-in-module,fragile,default]
File "/tmp/tmp0hpp8xk4/Top/bug_01.v", line 56, characters 0-48:
Warning: Use of “Require” inside a module is fragile. It is not recommended
to use this functionality in finished proof scripts.
[require-in-module,fragile,default]
File "/tmp/tmp0hpp8xk4/Top/bug_01.v", line 57, characters 0-46:
Warning: Use of “Require” inside a module is fragile. It is not recommended
to use this functionality in finished proof scripts.
[require-in-module,fragile,default]
File "/tmp/tmp0hpp8xk4/Top/bug_01.v", line 58, characters 0-48:
Warning: Use of “Require” inside a module is fragile. It is not recommended
to use this functionality in finished proof scripts.
[require-in-module,fragile,default]
File "/tmp/tmp0hpp8xk4/Top/bug_01.v", line 59, characters 0-60:
Warning: Use of “Require” inside a module is fragile. It is not recommended
to use this functionality in finished proof scripts.
[require-in-module,fragile,default]
File "/tmp/tmp0hpp8xk4/Top/bug_01.v", line 60, characters 0-43:
Warning: Use of “Require” inside a module is fragile. It is not recommended
to use this functionality in finished proof scripts.
[require-in-module,fragile,default]
File "/tmp/tmp0hpp8xk4/Top/bug_01.v", line 61, characters 0-40:
Warning: Use of “Require” inside a module is fragile. It is not recommended
to use this functionality in finished proof scripts.
[require-in-module,fragile,default]
File "/tmp/tmp0hpp8xk4/Top/bug_01.v", line 62, characters 0-48:
Warning: Use of “Require” inside a module is fragile. It is not recommended
to use this functionality in finished proof scripts.
[require-in-module,fragile,default]
File "/tmp/tmp0hpp8xk4/Top/bug_01.v", line 63, characters 0-45:
Warning: Use of “Require” inside a module is fragile. It is not recommended
to use this functionality in finished proof scripts.
[require-in-module,fragile,default]
File "/tmp/tmp0hpp8xk4/Top/bug_01.v", line 64, characters 0-46:
Warning: Use of “Require” inside a module is fragile. It is not recommended
to use this functionality in finished proof scripts.
[require-in-module,fragile,default]
File "/tmp/tmp0hpp8xk4/Top/bug_01.v", line 65, characters 0-50:
Warning: Use of “Require” inside a module is fragile. It is not recommended
to use this functionality in finished proof scripts.
[require-in-module,fragile,default]
File "/tmp/tmp0hpp8xk4/Top/bug_01.v", line 66, characters 0-48:
Warning: Use of “Require” inside a module is fragile. It is not recommended
to use this functionality in finished proof scripts.
[require-in-module,fragile,default]
File "/tmp/tmp0hpp8xk4/Top/bug_01.v", line 67, characters 0-44:
Warning: Use of “Require” inside a module is fragile. It is not recommended
to use this functionality in finished proof scripts.
[require-in-module,fragile,default]
File "/tmp/tmp0hpp8xk4/Top/bug_01.v", line 68, characters 0-46:
Warning: Use of “Require” inside a module is fragile. It is not recommended
to use this functionality in finished proof scripts.
[require-in-module,fragile,default]
File "/tmp/tmp0hpp8xk4/Top/bug_01.v", line 69, characters 0-45:
Warning: Use of “Require” inside a module is fragile. It is not recommended
to use this functionality in finished proof scripts.
[require-in-module,fragile,default]
File "/tmp/tmp0hpp8xk4/Top/bug_01.v", line 453, characters 2-24:
Warning: Tactic Notation revert dependent (hyp) is deprecated since 8.18.
Use "generalize dependent" instead ("revert dependent" is currently an alias)
[deprecated-tactic-notation-since-8.18,deprecated-since-8.18,deprecated-tactic-notation,deprecated,default]
File "/tmp/tmp0hpp8xk4/Top/bug_01.v", line 453, characters 26-44:
Warning: Tactic Notation revert dependent (hyp) is deprecated since 8.18.
Use "generalize dependent" instead ("revert dependent" is currently an alias)
[deprecated-tactic-notation-since-8.18,deprecated-since-8.18,deprecated-tactic-notation,deprecated,default]
File "/tmp/tmp0hpp8xk4/Top/bug_01.v", line 453, characters 46-65:
Warning: Tactic Notation revert dependent (hyp) is deprecated since 8.18.
Use "generalize dependent" instead ("revert dependent" is currently an alias)
[deprecated-tactic-notation-since-8.18,deprecated-since-8.18,deprecated-tactic-notation,deprecated,default]
File "/tmp/tmp0hpp8xk4/Top/bug_01.v", line 453, characters 67-98:
Warning: Tactic Notation revert dependent (hyp) is deprecated since 8.18.
Use "generalize dependent" instead ("revert dependent" is currently an alias)
[deprecated-tactic-notation-since-8.18,deprecated-since-8.18,deprecated-tactic-notation,deprecated,default]
File "/tmp/tmp0hpp8xk4/Top/bug_01.v", line 453, characters 100-134:
Warning: Tactic Notation revert dependent (hyp) is deprecated since 8.18.
Use "generalize dependent" instead ("revert dependent" is currently an alias)
[deprecated-tactic-notation-since-8.18,deprecated-since-8.18,deprecated-tactic-notation,deprecated,default]
File "/tmp/tmp0hpp8xk4/Top/bug_01.v", line 1138, characters 2-68:
Warning: Found unregistered eliminator eval_ind for eval by name.
Use "Register Scheme" with it instead
("as ind_dep" if dependent or "as ind_nodep" if non dependent).
[deprecated-lookup-elim-by-name,deprecated-since-9.1,deprecated,default]

Timeout! (external)

Retrying another 2 times...

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

@coqbot-app
Copy link
Contributor

coqbot-app bot commented Mar 8, 2026

Minimization interrupted by timeout, being automatically continued. Partially Minimized File /home/runner/work/run-coq-bug-minimizer/run-coq-bug-minimizer/builds/coq/coq-failing/_build_ci/fiat_crypto/src/Assembly/WithBedrock/Proofs.v in 5h 15m 9s (from ci-fiat_crypto) (interrupted by timeout, being automatically continued) (full log on GitHub Actions - verbose log)
⭐ ⏱️ Partially Minimized Coq File (timeout)
(* -*- mode: coq; coq-prog-args: ("-emacs" "-q" "-w" "+implicit-core-hint-db,+implicits-in-term,+non-reversible-notation,+deprecated-intros-until-0,+deprecated-focus,+unused-intro-pattern,+variable-collision,+unexpected-implicit-declaration,+omega-is-deprecated,+deprecated-instantiate-syntax,+non-recursive,+undeclared-scope,+deprecated-hint-rewrite-without-locality,+deprecated-hint-without-locality,+deprecated-instance-without-locality,+deprecated-typeclasses-transparency-without-locality,+fragile-hint-constr,-deprecated-since-9.0,-deprecated-since-8.20,-deprecated-from-Coq" "-w" "-notation-overridden,-native-compiler-disabled,-ambiguous-paths,-masking-absolute-name" "-w" "-deprecated-native-compiler-option" "-native-compiler" "no" "-coqlib" "/github/workspace/builds/coq/coq-failing/_install_ci/lib/coq//" "-R" "/github/workspace/builds/coq/coq-failing/_build_ci/fiat_crypto/src" "Crypto" "-Q" "/github/workspace/cwd" "Top" "-Q" "/github/workspace/builds/coq/coq-failing/_install_ci/lib/coq///user-contrib/Coqprime" "Coqprime" "-Q" "/github/workspace/builds/coq/coq-failing/_install_ci/lib/coq///user-contrib/Kami" "Kami" "-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/Rewriter" "Rewriter" "-Q" "/github/workspace/builds/coq/coq-failing/_install_ci/lib/coq///user-contrib/Rupicola" "Rupicola" "-Q" "/github/workspace/builds/coq/coq-failing/_install_ci/lib/coq///user-contrib/Stdlib" "Stdlib" "-Q" "/github/workspace/builds/coq/coq-failing/_install_ci/lib/coq///user-contrib/bedrock2" "bedrock2" "-Q" "/github/workspace/builds/coq/coq-failing/_install_ci/lib/coq///user-contrib/bedrock2Examples" "bedrock2Examples" "-Q" "/github/workspace/builds/coq/coq-failing/_install_ci/lib/coq///user-contrib/compiler" "compiler" "-Q" "/github/workspace/builds/coq/coq-failing/_install_ci/lib/coq///user-contrib/coqutil" "coqutil" "-Q" "/github/workspace/builds/coq/coq-failing/_install_ci/lib/coq///user-contrib/riscv" "riscv" "-top" "Top.bug_01") -*- *)
(* File reduced by coq-bug-minimizer from original input, then from 122 lines to 45 lines, then from 65 lines to 45 lines, then from 65 lines to 45 lines *)
(* coqc version 9.3+alpha compiled with OCaml 4.14.2
   coqtop version 9.3+alpha
   Expected coqc runtime on this file: 1.793 sec
   Expected coqc peak memory usage on this file: 886840.0 kb *)
Require Crypto.Assembly.WithBedrock.Semantics.
Require Crypto.Assembly.EquivalenceProofs.
Import Stdlib.micromega.Lia.
Import Stdlib.ZArith.ZArith.
Import Crypto.Assembly.Syntax.
Import Crypto.Util.Option.
Import Crypto.Util.Bool.Reflect.
Import Crypto.Util.ListUtil.
Import Crypto.Util.Tactics.SpecializeBy.
Import Crypto.Assembly.EquivalenceProofs.

Definition R_regs_preserved_v rn (m : Semantics.reg_state)
  := Z.land (Tuple.nth_default 0%Z rn m) (Z.ones 64).

Definition R_regs_preserved G d G' d' (m : Semantics.reg_state) rs rs'
  := forall rn idx, Symbolic.get_reg rs' rn = Some idx -> exists idx', Symbolic.get_reg rs rn = Some idx' /\ let v := R_regs_preserved_v (N.to_nat rn) m in eval_idx_Z G d idx' v -> eval_idx_Z G' d' idx v.

Lemma R_regs_preserved_set_reg G d G' d' rs rs' ri rm v
      (H : R_regs_preserved G d G' d' rm rs rs')
      (H_same : (ri < N.of_nat (List.length widest_registers))%N -> exists idx, Symbolic.get_reg rs ri = Some idx /\ let v' := R_regs_preserved_v (N.to_nat ri) rm in eval_idx_Z G d idx v' -> eval_idx_Z G' d' v v')
  : R_regs_preserved G d G' d' rm rs (Symbolic.set_reg rs' ri v).
Proof.
  cbv [R_regs_preserved] in *.
  intros rn idx; specialize (H rn).
  rewrite get_reg_set_reg_full; intro.
  vm_compute (length widest_registers) in *.
  repeat first [ progress break_innermost_match_hyps
               | progress inversion_option
               | progress subst
               | progress destruct_head'_and
               | progress destruct_head'_or
               | progress destruct_head'_ex
               | progress specialize_by_assumption
               | progress specialize_by lia
               | rewrite @Bool.andb_true_iff in *
               | rewrite @Bool.andb_false_iff in *
               | solve [ eauto ]
               | progress reflect_hyps
               | match goal with
                 | [ H : forall v, ?k = Some v -> _, H' : ?k = Some _ |- _ ]
                   => specialize (H _ H')
                 end ].
Timeout 5 Qed.
🛠️ Intermediate Coq File (useful for debugging if minimization did not go as far as you wanted) (truncated to 6.0KiB; full 204KiB file on GitHub Actions Artifacts under tmp.v)
(* -*- mode: coq; coq-prog-args: ("-emacs" "-q" "-w" "+implicit-core-hint-db,+implicits-in-term,+non-reversible-notation,+deprecated-intros-until-0,+deprecated-focus,+unused-intro-pattern,+variable-collision,+unexpected-implicit-declaration,+omega-is-deprecated,+deprecated-instantiate-syntax,+non-recursive,+undeclared-scope,+deprecated-hint-rewrite-without-locality,+deprecated-hint-without-locality,+deprecated-instance-without-locality,+deprecated-typeclasses-transparency-without-locality,+fragile-hint-constr,-deprecated-since-9.0,-deprecated-since-8.20,-deprecated-from-Coq" "-w" "-notation-overridden,-native-compiler-disabled,-ambiguous-paths,-masking-absolute-name" "-w" "-deprecated-native-compiler-option" "-native-compiler" "no" "-coqlib" "/github/workspace/builds/coq/coq-failing/_install_ci/lib/coq//" "-R" "/github/workspace/builds/coq/coq-failing/_build_ci/fiat_crypto/src" "Crypto" "-Q" "/github/workspace/cwd" "Top" "-Q" "/github/workspace/builds/coq/coq-failing/_install_ci/lib/coq///user-contrib/Coqprime" "Coqprime" "-Q" "/github/workspace/builds/coq/coq-failing/_install_ci/lib/coq///user-contrib/Kami" "Kami" "-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/Rewriter" "Rewriter" "-Q" "/github/workspace/builds/coq/coq-failing/_install_ci/lib/coq///user-contrib/Rupicola" "Rupicola" "-Q" "/github/workspace/builds/coq/coq-failing/_install_ci/lib/coq///user-contrib/Stdlib" "Stdlib" "-Q" "/github/workspace/builds/coq/coq-failing/_install_ci/lib/coq///user-contrib/bedrock2" "bedrock2" "-Q" "/github/workspace/builds/coq/coq-failing/_install_ci/lib/coq///user-contrib/bedrock2Examples" "bedrock2Examples" "-Q" "/github/workspace/builds/coq/coq-failing/_install_ci/lib/coq///user-contrib/compiler" "compiler" "-Q" "/github/workspace/builds/coq/coq-failing/_install_ci/lib/coq///user-contrib/coqutil" "coqutil" "-Q" "/github/workspace/builds/coq/coq-failing/_install_ci/lib/coq///user-contrib/riscv" "riscv" "-top" "Top.bug_01") -*- *)
(* File reduced by coq-bug-minimizer from original input, then from 122 lines to 45 lines, then from 65 lines to 45 lines, then from 65 lines to 45 lines, then from 59 lines to 4401 lines *)
(* coqc version 9.3+alpha compiled with OCaml 4.14.2
   coqtop version 9.3+alpha
   Expected coqc runtime on this file: 0.000 sec
   Expected coqc peak memory usage on this file: 0.0 kb *)
Require Coq.Init.Ltac.
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.
Require Crypto.Assembly.WithBedrock.Semantics.
Require Corelib.BinNums.IntDef.
Require Corelib.BinNums.NatDef.
Require Corelib.BinNums.PosDef.
Require Corelib.Classes.CMorphisms.
Require Corelib.Classes.Morphisms.
Require Corelib.Classes.Morphisms_Prop.
Require Corelib.Classes.RelationClasses.
Require Corelib.Init.Byte.
Require Corelib.Init.Decimal.
Require Corelib.Init.Ltac.
Require Corelib.Init.Sumbool.
Require Corelib.Init.Wf.
Require Corelib.Lists.ListDef.
Require Corelib.Numbers.BinNums.
Require Corelib.Program.Basics.
Require Corelib.Program.Tactics.
Require Corelib.Program.Utils.
Require Corelib.Program.Wf.
Require Corelib.Relations.Relation_Definitions.
Require Corelib.Setoids.Setoid.
Require Corelib.derive.Derive.
Require Corelib.ssr.ssreflect.
Require Crypto.Util.Comparison.
Require Crypto.Util.GlobalSettings.
Require Crypto.Util.HProp.
Require Crypto.Util.Isomorphism.
Require Crypto.Util.Tactics.ConstrFail.
Require Crypto.Util.Tactics.Contains.
Require Crypto.Util.Tactics.GetGoal.
Require Crypto.Util.Tactics.HasBody.
Require Crypto.Util.Tactics.PrintContext.
Require Crypto.Util.Tactics.SetEvars.
Require Crypto.Util.Tactics.SubstEvars.
Require Crypto.Util.Tactics.Test.
Require Rewriter.Util.Comparison.
Require Rewriter.Util.GlobalSettings.
Require Rewriter.Util.HProp.
Require Rewriter.Util.InductiveHList.
Require Rewriter.Util.Isomorphism.
Require Rewriter.Util.Tactics.CPSId.
Require Rewriter.Util.Tactics.ClearFree.
Require Rewriter.Util.Tactics.ConstrFail.
Require Rewriter.Util.Tactics.Contains.
Require Rewriter.Util.Tactics.EvarNormalize.
Require Rewriter.Util.Tactics.GetGoal.
Require Rewriter.Util.Tactics.PrintContext.
Require Rewriter.Util.Tactics.SetEvars.
Require Rewriter.Util.Tactics.SubstEvars.
Require Rewriter.Util.Tactics.Test.
Require Rewriter.Util.Tactics.TransparentAssert.
Require Rewriter.Util.TypeList.
Require Rewriter.Util.plugins.StrategyTactic.
Require Stdlib.Classes.DecidableClass.
Require Stdlib.Logic.Decidable.
Require Stdlib.Logic.EqdepFacts.
Require Stdlib.Logic.FunctionalExtensionality.
Require Stdlib.Logic.HLevelsBase.
Require Stdlib.Program.Syntax.
Require Stdlib.Sets.Relations_1.
Require Stdlib.micromega.ZifyClasses.
Require Stdlib.setoid_ring.Algebra_syntax.
Require coqutil.Tactics.autoforward.
Require coqutil.Tactics.forward.
Require coqutil.sanity.
Require Crypto.Util.Tactics.DebugPrint.
Require Crypto.Util.Tactics.Not.
Require Crypto.Util.Tactics.PrintGoal.
Require Crypto.Util.Tactics.SetoidSubst.
Require Ltac2.Init.
Require Rewriter.Util.Tactics.DebugPrint.
Require Rewriter.Util.Tactics.Not.
Require Rewriter.Util.Tactics.PrintGoal.
Require Rewriter.Util.Tactics.SetoidSubst.
Require Stdlib.BinNums.IntDef.
Require Stdlib.BinNums.NatDef.
Require Stdlib.BinNums.PosDef.
Require Stdlib.Classes.CMorphisms.
Require Stdlib.Classes.Morphisms.
Require Stdlib.Classes.Morphisms_Prop.
Require Stdlib.Classes.RelationClasses.
Require Stdlib.Init.Byte.
Require Stdlib.Init.Decimal.
Require Stdlib.Init.Sumbool.
Require Stdlib.Init.Wf.
Require Stdlib.Lists.ListDef.
Require Stdlib.Logic.Eqdep.
Require Stdlib.Logic.Eqdep_dec.
Require Stdlib.Logic.ProofIrrelevanceFacts.
Require Stdlib.Numbers.BinNums.
Require Stdlib.Program.Basics.
Require Stdlib.Program.Tactics.
Require Stdlib.Program.Utils.
Require Stdlib.Program.Wf.
Require Stdlib.Relations.Relation_Definitions.
Require Stdlib.Setoids.Setoid.
Require Stdlib.derive.Derive.
Require Stdlib.ssr.ssrefle
🛠️ 📜 Intermediate Coq File log (useful for debugging if minimization did not go as far as you wanted)
📜 Build Log (contains the Coq error message) (truncated to last 8.0KiB; full 13MiB file on GitHub Actions Artifacts under build.log)
/X25519/GarageDoor.vo
src/Bedrock/End2End/X25519/GarageDoorTop.vo
src/Bedrock/End2End/X25519/MontgomeryLadder.vo
src/Bedrock/End2End/X25519/MontgomeryLadderRISCV.vo
src/Bedrock/Everything.vo
src/Bedrock/Field/Stringification/Stringification.vo
src/Bedrock/Field/Synthesis/Examples/p224_64_new.vo
src/Bedrock/Field/Synthesis/New/ComputedOp.vo
src/Bedrock/Field/Synthesis/New/Signature.vo
src/Bedrock/Field/Synthesis/New/UnsaturatedSolinas.vo
src/Bedrock/Field/Synthesis/New/WordByWordMontgomery.vo
src/Bedrock/Field/Translation/Cmd.vo
src/Bedrock/Field/Translation/Func.vo
src/Bedrock/Field/Translation/Parameters/Defaults.vo
src/Bedrock/Field/Translation/Parameters/Defaults32.vo
src/Bedrock/Field/Translation/Parameters/Defaults64.vo
src/Bedrock/Field/Translation/Parameters/FE310.vo
src/Bedrock/Field/Translation/Proofs/Cmd.vo
src/Bedrock/Field/Translation/Proofs/Func.vo
src/Bedrock/Field/Translation/Proofs/ValidComputable/Cmd.vo
src/Bedrock/Field/Translation/Proofs/ValidComputable/Func.vo
src/Bedrock/Group/ScalarMult/MontgomeryLadder.vo
src/Bedrock/P256.vo
src/Bedrock/P256/Coord.vo
src/Bedrock/P256/Coord32.vo
src/Bedrock/P256/Jacobian.vo
src/Bedrock/P256/JacobianAffine.vo
src/Bedrock/P256/Platform.vo
src/Bedrock/P256/Specs.vo
src/Bedrock/Secp256k1/Addchain.vo
src/Bedrock/Secp256k1/Field256k1.vo
src/Bedrock/Secp256k1/JacobianCoZ.vo
src/Bedrock/Secp256k1/JoyeLadder.vo
src/Bedrock/Standalone/StandaloneHaskellMain.vo
src/Bedrock/Standalone/StandaloneJsOfOCamlMain.vo
src/Bedrock/Standalone/StandaloneOCamlMain.vo
src/BoundsPipeline.vo
src/CLI.vo
src/CompilersTestCases.vo
src/Curves/Montgomery/AffineInstances.vo
src/Curves/Montgomery/AffineProofs.vo
src/Curves/Montgomery/XZProofs.vo
src/Curves/Weierstrass/AffineProofs.vo
src/Curves/Weierstrass/Jacobian/CoZ.vo
src/Curves/Weierstrass/Jacobian/Jacobian.vo
src/Curves/Weierstrass/Jacobian/ScalarMult.vo
src/Curves/Weierstrass/P256.vo
src/Curves/Weierstrass/Projective.vo
src/Everything.vo
src/ExtractionJsOfOCaml/WithBedrock/fiat_crypto.vo
src/ExtractionJsOfOCaml/bedrock2_fiat_crypto.vo
src/ExtractionJsOfOCaml/fiat_crypto.vo
src/Fancy/Barrett256.vo
src/Fancy/Montgomery256.vo
src/PerfTesting/PerfTestPrint.vo
src/PerfTesting/PerfTestSearch.vo
src/PerfTesting/PerfTestSearchPattern.vo
src/PushButtonSynthesis/BarrettReduction.vo
src/PushButtonSynthesis/BaseConversion.vo
src/PushButtonSynthesis/DettmanMultiplication.vo
src/PushButtonSynthesis/FancyMontgomeryReduction.vo
src/PushButtonSynthesis/Primitives.vo
src/PushButtonSynthesis/SaturatedSolinas.vo
src/PushButtonSynthesis/SmallExamples.vo
src/PushButtonSynthesis/SolinasReduction.vo
src/PushButtonSynthesis/UnsaturatedSolinas.vo
src/PushButtonSynthesis/WordByWordMontgomery.vo
src/Rewriter/All.vo
src/Rewriter/PerfTesting/Core.vo
src/Rewriter/PerfTesting/StandaloneOCamlMain.vo
src/Rewriter/RulesGood.vo
src/SlowPrimeSynthesisExamples.vo
src/StandaloneDebuggingExamples.vo
src/StandaloneHaskellMain.vo
src/StandaloneJsOfOCamlMain.vo
src/StandaloneMonadicUtils.vo
src/StandaloneOCamlMain.vo
ROCQ compile src/Assembly/WithBedrock/Proofs.v
MINIMIZER_DEBUG_EXTRA: coqc: /github/workspace/builds/coq/coq-failing/_install_ci/bin///rocq
MINIMIZER_DEBUG_EXTRA: original invocation: '' 
MINIMIZER_DEBUG_EXTRA: new invocation: /github/workspace/builds/coq/coq-failing/_install_ci/bin/rocq.orig compile -q -w +implicit-core-hint-db\,+implicits-in-term\,+non-reversible-notation\,+deprecated-intros-until-0\,+deprecated-focus\,+unused-intro-pattern\,+variable-collision\,+unexpected-implicit-declaration\,+omega-is-deprecated\,+deprecated-instantiate-syntax\,+non-recursive\,+undeclared-scope\,+deprecated-hint-rewrite-without-locality\,+deprecated-hint-without-locality\,+deprecated-instance-without-locality\,+deprecated-typeclasses-transparency-without-locality\,+fragile-hint-constr\,-deprecated-since-9.0\,-deprecated-since-8.20\,-deprecated-from-Coq -w -notation-overridden\,-native-compiler-disabled\,-ambiguous-paths\,-masking-absolute-name -w -deprecated-native-compiler-option -native-compiler no -R /github/workspace/builds/coq/coq-failing/_build_ci/fiat_crypto/src Crypto src/Assembly/WithBedrock/Proofs.v 
MINIMIZER_DEBUG_EXTRA: coqpath: 
MINIMIZER_DEBUG_EXTRA: ocamlpath: /github/workspace/builds/coq/coq-failing/_install_ci/lib:
MINIMIZER_DEBUG_EXTRA: pwd: PWD=/github/workspace/builds/coq/coq-failing/_build_ci/fiat_crypto
MINIMIZER_DEBUG_EXTRA: exec: /github/workspace/builds/coq/coq-failing/_install_ci/bin/rocq.orig compile -q -w +implicit-core-hint-db\,+implicits-in-term\,+non-reversible-notation\,+deprecated-intros-until-0\,+deprecated-focus\,+unused-intro-pattern\,+variable-collision\,+unexpected-implicit-declaration\,+omega-is-deprecated\,+deprecated-instantiate-syntax\,+non-recursive\,+undeclared-scope\,+deprecated-hint-rewrite-without-locality\,+deprecated-hint-without-locality\,+deprecated-instance-without-locality\,+deprecated-typeclasses-transparency-without-locality\,+fragile-hint-constr\,-deprecated-since-9.0\,-deprecated-since-8.20\,-deprecated-from-Coq -w -notation-overridden\,-native-compiler-disabled\,-ambiguous-paths\,-masking-absolute-name -w -deprecated-native-compiler-option -native-compiler no -R /github/workspace/builds/coq/coq-failing/_build_ci/fiat_crypto/src Crypto src/Assembly/WithBedrock/Proofs.v 
MINIMIZER_DEBUG_EXTRA: coqlib: Warning: Deprecated environment variable COQLIB, use ROCQLIB instead.
/github/workspace/builds/coq/coq-failing/_install_ci/lib/coq//
MINIMIZER_DEBUG: info: /tmp/tmp-coqbot-minimizer.BX6s4JnSAq
MINIMIZER_DEBUG: files:  src/Assembly/WithBedrock/Proofs.v /github/workspace/builds/coq/coq-failing/_build_ci/fiat_crypto/src/Assembly/WithBedrock/Proofs.vWarning, feedback message received but no listener to handle it!
Warning: Deprecated environment variable COQLIB, use ROCQLIB instead.
[deprecated-coq-env-var,deprecated-since-9.0,deprecated,default]Warning, feedback message received but no listener to handle it!
Warning: Deprecated environment variable COQLIB, use ROCQLIB instead.
[deprecated-coq-env-var,deprecated-since-9.0,deprecated,default]
Warning: Deprecated environment variable COQCORELIB,
use ROCQRUNTIMELIB instead.
[deprecated-coq-env-var,deprecated-since-9.0,deprecated,default]
File "./src/Assembly/WithBedrock/Proofs.v", line 19, characters 0-37:
Warning: Notations "_ + _" defined at level 50 with arguments constr
at level 50 and "_ +" defined at level 50 with arguments constr at next level
have incompatible prefixes. One of them will likely not work.
[notation-incompatible-prefix,parsing,default]
File "./src/Assembly/WithBedrock/Proofs.v", line 19, characters 0-37:
Warning: Notations "_ * _" defined at level 40 with arguments constr
at level 40 and "_ *" defined at level 40 with arguments constr at next level
have incompatible prefixes. One of them will likely not work.
[notation-incompatible-prefix,parsing,default]
File "./src/Assembly/WithBedrock/Proofs.v", line 19, characters 0-37:
Warning: Notations "slet _ .. _ <- _ ; _" defined at level 70 with arguments
binder and "slet _ .. _ := _ in _" defined at level 200 with arguments binder
have incompatible prefixes. One of them will likely not work.
[notation-incompatible-prefix,parsing,default]
File "./src/Assembly/WithBedrock/Proofs.v", line 106, characters 0-14:
Error: Timeout!

Command exited with non-zero status 1
src/Assembly/WithBedrock/Proofs.vo (real: 6.95, user: 6.72, sys: 0.22, mem: 917500 ko)
make: *** [Makefile.coq:815: src/Assembly/WithBedrock/Proofs.vo] Error 1
make: *** [src/Assembly/WithBedrock/Proofs.vo] Deleting file 'src/Assembly/WithBedrock/Proofs.glob'
+ code=2
+ printf '\n%s exit code: %s\n' fiat_crypto 2
+ '[' fiat_crypto '!=' stdlib_test ']'
+ echo 'Aggregating timing log...'
Aggregating timing log...
+ echo

+ tools/make-one-time-file.py --real _build_ci/fiat_crypto.log
    Time |  Peak Mem | File Name                     
-----------------------------------------------------
0m08.20s | 917500 ko | Total Time / Peak Mem         
-----------------------------------------------------
0m06.95s | 917500 ko | Assembly/WithBedrock/Proofs.vo
0m01.25s |  53104 ko | .Makefile.coq.d               
+ '[' '' ']'
+ exit 2
/github/workspace/builds/coq /github/workspace
::endgroup::
📜 🔎 Minimization Log (truncated to last 8.0KiB; full 15MiB file on GitHub Actions Artifacts under bug.log)
.of_N s)) in
    st <- SetOperand sa s st dst v;
    Some (if cnt =? 0 then st else
      let st := HavocFlagsFromResult s st v in
      let st := if cnt =? 1 then SetFlag st OF false else st in
      let st := if cnt <? Z.of_N s then SetFlag st CF (Z.testbit v1 (cnt-1)) else st in
      HavocFlag st AF)
  | shl, [dst; cnt] =>
    v1 <- DenoteOperand sa s st dst;
    cnt <- DenoteOperand sa s st cnt;
    let v := Z.land (Z.shiftl v1 (Z.land cnt (Z.of_N s-1))) (Z.ones (Z.of_N s)) in
    st <- SetOperand sa s st dst v;
    Some (if cnt =? 0 then st else
      let st := HavocFlagsFromResult s st v in
      let st := if cnt =? 1 then SetFlag st OF (xorb (Z.testbit v1 (Z.of_N s-2)) (Z.testbit v1 (Z.of_N s-1))) else st in
      let st := if cnt <? Z.of_N s then SetFlag st CF (Z.testbit v1 (65-cnt)) else st in
      HavocFlag st AF)
  | shlx, [dst; src; cnt] =>
    v1 <- DenoteOperand sa s st src;
    cnt <- DenoteOperand sa s st cnt;
    let v := Z.land (Z.shiftl v1 (Z.land cnt (Z.of_N s-1))) (Z.ones (Z.of_N s)) in
    SetOperand sa s st dst v
  | shr, [dst; cnt] =>
    v1 <- DenoteOperand sa s st dst;
    cnt <- DenoteOperand sa s st cnt;
    let v := Z.land (Z.shiftr v1 (Z.land cnt (Z.of_N s-1))) (Z.ones (Z.of_N s)) in
    st <- SetOperand sa s st dst v;
    Some (if cnt =? 0 then st else
      let st := HavocFlagsFromResult s st v in
      let st := if cnt =? 1 then SetFlag st OF (Z.testbit v1 (Z.of_N s-1)) else st in
      let st := if cnt <? Z.of_N s then SetFlag st CF (Z.testbit v1 (cnt-1)) else st in
      HavocFlag st AF)
  | rcr, [dst; cnt] =>
    v1 <- DenoteOperand sa s st dst;
    cnt <- DenoteOperand sa s st cnt;
    let cnt := rcrcnt s cnt in
    c <- get_flag st CF;
    let v1c := Z.lor v1 (Z.shiftl (Z.b2z c) (Z.of_N s)) in
    let l := Z.lor v1c (Z.shiftl v1 (1+Z.of_N s)) in
    let v := Z.land (Z.shiftr l cnt) (Z.ones (Z.of_N s)) in
    st <- SetOperand sa s st dst v;
    Some (
      if cnt =? 0 then st else
      let st := SetFlag st CF (Z.testbit v1c (cnt-1)) in
      if cnt =? 1 then SetFlag st OF (xorb (Z.testbit v (Z.of_N s-1)) (Z.testbit v (Z.of_N s-2))) else st)
  | shrd, [dst as lo; hi; cnt] =>
    lv <- DenoteOperand sa s st lo;
    hv <- DenoteOperand sa s st hi;
    cnt <- DenoteOperand sa s st cnt;
    let l := Z.lor lv (Z.shiftl hv (Z.of_N s)) in
    let v := Z.land (Z.shiftr l (Z.land cnt (Z.of_N s-1))) (Z.ones (Z.of_N s)) in
    st <- SetOperand sa s st dst v;
    if cnt =? 0 then Some st else
    if Z.of_N s <? cnt then Some (HavocFlags st) else
      let st := HavocFlagsFromResult s st l in
      let signchange := xorb (Z.signed s lv <? 0)%Z (Z.signed s v <? 0)%Z in
      (* Note: IA-32 SDM does not make it clear what sign change is in question *)
      let st := if cnt =? 1 then SetFlag st OF signchange else st in
      let st := SetFlag st CF (Z.testbit l (cnt-1)) in
      Some (HavocFlag st AF)
  | shld, [dst as hi; lo; cnt] =>
    lv <- DenoteOperand sa s st lo;
    hv <- DenoteOperand sa s st hi;
    cnt <- DenoteOperand sa s st cnt;
    let l := Z.lor lv (Z.shiftl hv (Z.of_N s)) in
    let l_shifted := Z.shiftl l (Z.land cnt (Z.of_N s-1)) in
    let l_shifted_hi := Z.shiftr l_shifted (Z.of_N s) in
    let v := Z.land l_shifted_hi (Z.ones (Z.of_N s)) in
    st <- SetOperand sa s st dst v;
    if cnt =? 0 then Some st else
    if Z.of_N s <? cnt then Some (HavocFlags st) else
      let st := HavocFlagsFromResult s st l in
      let signchange := xorb (Z.signed s hv <? 0)%Z (Z.signed s v <? 0)%Z in
      (* Note: IA-32 SDM does not make it clear what sign change is in question *)
      let st := if cnt =? 1 then SetFlag st OF signchange else st in
      let st := SetFlag st CF (Z.testbit hv (Z.of_N s - cnt)) in
      Some (HavocFlag st AF)
  | (and | xor | or) as opc, [dst; src] =>
    let f := match opc with and => Z.land | xor => Z.lxor | _ => Z.lor end in
    v1 <- DenoteOperand sa s st dst;
    v2 <- DenoteOperand sa s st src;
    let v := f v1 v2 in
    st <- SetOperand sa s st dst v;
    let st := HavocFlagsFromResult s st v in
    let st := SetFlag st CF false in
    let st := SetFlag st OF false in
    Some (HavocFlag st AF)
  | bzhi, [dst; src1; src2] =>
    v1 <- DenoteOperand sa s st src1;
    v2 <- DenoteOperand sa s st src2;
    let n := Z.land v2 (Z.ones 8) in
    let v := Z.land v1 (Z.ones n) in
    st <- SetOperand sa s st dst v;
    let st := HavocFlagsFromResult s st v in
    let st := SetFlag st CF (((Z.of_N (operand_size src1 s)) - 1) <? v) in
    Some (SetFlag st OF false)
  | test, [src1; src2] =>
    v1 <- DenoteOperand sa s st src1;
    v2 <- DenoteOperand sa s st src2;
    let v := Z.land v1 v2 in
    let st := HavocFlagsFromResult s st v in
    let st := SetFlag st CF false in
    let st := SetFlag st OF false in
    Some (HavocFlag st AF)
  | push, [src]
    => v    <- DenoteOperand sa s st src;
       rsp' <- DenoteOperand sa stack_addr_size st rsp;
       let rsp' := Z.land (rsp' - (Z.of_N s / 8)) (Z.ones (Z.of_N stack_addr_size)) in (* we don't actually need to truncate here, but it makes proofs a bit easier *)
       st   <- SetOperand stack_addr_size s st rsp rsp';
               SetOperand sa s st (mem_of_reg rsp) v
  | pop, [dst]
    => v    <- DenoteOperand sa s st (mem_of_reg rsp);
       rsp' <- DenoteOperand sa stack_addr_size st rsp;
       let rsp' := Z.land (rsp' + (Z.of_N s / 8)) (Z.ones (Z.of_N stack_addr_size)) in (* we don't actually need to truncate here, but it makes proofs a bit easier *)
       st   <- SetOperand stack_addr_size s st rsp rsp';
               SetOperand sa s st dst v

  | nop, [] => Some st

  | ret, _ => None (* not sure what to do with this ret, maybe exlude it? *)

  | adc, _
  | adcx, _
  | add, _
  | adox, _
  | and, _
  | bzhi, _
  | db, _
  | dw, _
  | dd, _
  | dq, _
  | mulx, _
  | mul, _
  | call, _
  | cmp, _
  | je, _
  | jmp, _
  | cmovc, _
  | cmovb, _
  | cmovo, _
  | cmovnz, _
  | setc, _
  | seto, _
  | clc, _
  | dec, _
  | lea, _
  | mov, _
  | movzx, _
  | or, _
  | imul, _
  | inc, _
  | push, _
  | pop, _
  | sar, _
  | rcr, _
  | sbb, _
  | shl, _
  | shlx, _
  | shr, _
  | shrx, _
  | shrd, _
  | sub, _
  | test, _
  | xor, _
  | xchg, _ => None
  (* not yet supported *)
  | cmove, _
  | cmovne, _
  | leave, _
  | movabs, _
  | movdqa, _
  | movdqu, _
  | movq, _
  | movd, _
  | movsx, _
  | movups, _
  | neg, _
  | nop, _
  | not, _
  | paddq, _
  | psubq, _
  | pshufd, _
  | pshufw, _
  | punpcklqdq, _
  | punpckhqdq, _
  | pslld, _
  | psrld, _
  | pand, _
  | pandn, _
  | por, _
  | pxor, _
  | psrad, _
  | rol, _
  | ror, _
  | sal, _
  | sete, _
  | setne, _
  | shld, _
    => None
 end | _ => None end | _ => None end%Z%option.


Definition DenoteRawLine (st : machine_state) (rawline : RawLine) : option machine_state :=
  match rawline with
  | EMPTY
  | LABEL _
  | DIRECTIVE _
  | ASCII_ _ _
    => Some st
  | INSTR instr
    => DenoteNormalInstruction st instr
  | SECTION _
  | GLOBAL _
  | ALIGN _
  | DEFAULT_REL
    => None
  end.

Definition DenoteLine (st : machine_state) (line : Line) : option machine_state
  := DenoteRawLine st line.(rawline).

Fixpoint DenoteLines (st : machine_state) (lines : Lines) : option machine_state
  := match lines with
     | [] => Some st
     | line :: lines
       => (st <- DenoteLine st line;
          DenoteLines st lines)
     end%option.

End Semantics.

End Crypto_DOT_Assembly_DOT_WithBedrock_DOT_Semantics_WRAPPED.
Module Export Crypto_DOT_Assembly_DOT_WithBedrock_DOT_Semantics.
Module Export Crypto.
Module Export Assembly.
Module Export WithBedrock.
Module Semantics.
Include Crypto_DOT_Assembly_DOT_WithBedrock_DOT_Semantics_WRAPPED.Semantics.
End Semantics.

End WithBedrock.

End Assembly.

End Crypto.

End Crypto_DOT_Assembly_DOT_WithBedrock_DOT_Semantics.
Require Crypto.Assembly.EquivalenceProofs.
Import Stdlib.micromega.Lia.
Import Stdlib.ZArith.ZArith.
Import Crypto.Assembly.Syntax.
Import Crypto.Util.Option.
Import Crypto.Util.Bool.Reflect.
Import Crypto.Util.ListUtil.
Import Crypto.Util.Tactics.SpecializeBy.
Import Crypto.Assembly.EquivalenceProofs.

Definition R_regs_preserved_v rn (m : Semantics.reg_state)
  := Z.land (Tuple.nth_default 0%Z rn m) (Z.ones 64).

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

@coqbot-app
Copy link
Contributor

coqbot-app bot commented Mar 8, 2026

Minimization interrupted by timeout, being automatically continued. Partially Minimized File /home/runner/work/run-coq-bug-minimizer/run-coq-bug-minimizer/builds/coq/coq-failing/_build_ci/fiat_crypto/src/Assembly/WithBedrock/Proofs.v in 5h 15m 9s (from ci-fiat_crypto) (interrupted by timeout, being automatically continued) (full log on GitHub Actions - verbose log)
⭐ ⏱️ Partially Minimized Coq File (timeout)
(* -*- mode: coq; coq-prog-args: ("-emacs" "-q" "-w" "+implicit-core-hint-db,+implicits-in-term,+non-reversible-notation,+deprecated-intros-until-0,+deprecated-focus,+unused-intro-pattern,+variable-collision,+unexpected-implicit-declaration,+omega-is-deprecated,+deprecated-instantiate-syntax,+non-recursive,+undeclared-scope,+deprecated-hint-rewrite-without-locality,+deprecated-hint-without-locality,+deprecated-instance-without-locality,+deprecated-typeclasses-transparency-without-locality,+fragile-hint-constr,-deprecated-since-9.0,-deprecated-since-8.20,-deprecated-from-Coq" "-w" "-notation-overridden,-native-compiler-disabled,-ambiguous-paths,-masking-absolute-name" "-w" "-deprecated-native-compiler-option" "-native-compiler" "no" "-coqlib" "/github/workspace/builds/coq/coq-failing/_install_ci/lib/coq//" "-R" "/github/workspace/builds/coq/coq-failing/_build_ci/fiat_crypto/src" "Crypto" "-Q" "/github/workspace/cwd" "Top" "-Q" "/github/workspace/builds/coq/coq-failing/_install_ci/lib/coq///user-contrib/Coqprime" "Coqprime" "-Q" "/github/workspace/builds/coq/coq-failing/_install_ci/lib/coq///user-contrib/Kami" "Kami" "-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/Rewriter" "Rewriter" "-Q" "/github/workspace/builds/coq/coq-failing/_install_ci/lib/coq///user-contrib/Rupicola" "Rupicola" "-Q" "/github/workspace/builds/coq/coq-failing/_install_ci/lib/coq///user-contrib/Stdlib" "Stdlib" "-Q" "/github/workspace/builds/coq/coq-failing/_install_ci/lib/coq///user-contrib/bedrock2" "bedrock2" "-Q" "/github/workspace/builds/coq/coq-failing/_install_ci/lib/coq///user-contrib/bedrock2Examples" "bedrock2Examples" "-Q" "/github/workspace/builds/coq/coq-failing/_install_ci/lib/coq///user-contrib/compiler" "compiler" "-Q" "/github/workspace/builds/coq/coq-failing/_install_ci/lib/coq///user-contrib/coqutil" "coqutil" "-Q" "/github/workspace/builds/coq/coq-failing/_install_ci/lib/coq///user-contrib/riscv" "riscv" "-top" "Top.bug_01") -*- *)
(* File reduced by coq-bug-minimizer from original input, then from 122 lines to 45 lines, then from 65 lines to 45 lines, then from 65 lines to 45 lines, then from 65 lines to 45 lines *)
(* coqc version 9.3+alpha compiled with OCaml 4.14.2
   coqtop version 9.3+alpha
   Expected coqc runtime on this file: 1.765 sec
   Expected coqc peak memory usage on this file: 890168.0 kb *)
Require Crypto.Assembly.WithBedrock.Semantics.
Require Crypto.Assembly.EquivalenceProofs.
Import Stdlib.micromega.Lia.
Import Stdlib.ZArith.ZArith.
Import Crypto.Assembly.Syntax.
Import Crypto.Util.Option.
Import Crypto.Util.Bool.Reflect.
Import Crypto.Util.ListUtil.
Import Crypto.Util.Tactics.SpecializeBy.
Import Crypto.Assembly.EquivalenceProofs.

Definition R_regs_preserved_v rn (m : Semantics.reg_state)
  := Z.land (Tuple.nth_default 0%Z rn m) (Z.ones 64).

Definition R_regs_preserved G d G' d' (m : Semantics.reg_state) rs rs'
  := forall rn idx, Symbolic.get_reg rs' rn = Some idx -> exists idx', Symbolic.get_reg rs rn = Some idx' /\ let v := R_regs_preserved_v (N.to_nat rn) m in eval_idx_Z G d idx' v -> eval_idx_Z G' d' idx v.

Lemma R_regs_preserved_set_reg G d G' d' rs rs' ri rm v
      (H : R_regs_preserved G d G' d' rm rs rs')
      (H_same : (ri < N.of_nat (List.length widest_registers))%N -> exists idx, Symbolic.get_reg rs ri = Some idx /\ let v' := R_regs_preserved_v (N.to_nat ri) rm in eval_idx_Z G d idx v' -> eval_idx_Z G' d' v v')
  : R_regs_preserved G d G' d' rm rs (Symbolic.set_reg rs' ri v).
Proof.
  cbv [R_regs_preserved] in *.
  intros rn idx; specialize (H rn).
  rewrite get_reg_set_reg_full; intro.
  vm_compute (length widest_registers) in *.
  repeat first [ progress break_innermost_match_hyps
               | progress inversion_option
               | progress subst
               | progress destruct_head'_and
               | progress destruct_head'_or
               | progress destruct_head'_ex
               | progress specialize_by_assumption
               | progress specialize_by lia
               | rewrite @Bool.andb_true_iff in *
               | rewrite @Bool.andb_false_iff in *
               | solve [ eauto ]
               | progress reflect_hyps
               | match goal with
                 | [ H : forall v, ?k = Some v -> _, H' : ?k = Some _ |- _ ]
                   => specialize (H _ H')
                 end ].
Timeout 5 Qed.
🛠️ Intermediate Coq File (useful for debugging if minimization did not go as far as you wanted) (truncated to 6.0KiB; full 204KiB file on GitHub Actions Artifacts under tmp.v)
(* -*- mode: coq; coq-prog-args: ("-emacs" "-q" "-w" "+implicit-core-hint-db,+implicits-in-term,+non-reversible-notation,+deprecated-intros-until-0,+deprecated-focus,+unused-intro-pattern,+variable-collision,+unexpected-implicit-declaration,+omega-is-deprecated,+deprecated-instantiate-syntax,+non-recursive,+undeclared-scope,+deprecated-hint-rewrite-without-locality,+deprecated-hint-without-locality,+deprecated-instance-without-locality,+deprecated-typeclasses-transparency-without-locality,+fragile-hint-constr,-deprecated-since-9.0,-deprecated-since-8.20,-deprecated-from-Coq" "-w" "-notation-overridden,-native-compiler-disabled,-ambiguous-paths,-masking-absolute-name" "-w" "-deprecated-native-compiler-option" "-native-compiler" "no" "-coqlib" "/github/workspace/builds/coq/coq-failing/_install_ci/lib/coq//" "-R" "/github/workspace/builds/coq/coq-failing/_build_ci/fiat_crypto/src" "Crypto" "-Q" "/github/workspace/cwd" "Top" "-Q" "/github/workspace/builds/coq/coq-failing/_install_ci/lib/coq///user-contrib/Coqprime" "Coqprime" "-Q" "/github/workspace/builds/coq/coq-failing/_install_ci/lib/coq///user-contrib/Kami" "Kami" "-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/Rewriter" "Rewriter" "-Q" "/github/workspace/builds/coq/coq-failing/_install_ci/lib/coq///user-contrib/Rupicola" "Rupicola" "-Q" "/github/workspace/builds/coq/coq-failing/_install_ci/lib/coq///user-contrib/Stdlib" "Stdlib" "-Q" "/github/workspace/builds/coq/coq-failing/_install_ci/lib/coq///user-contrib/bedrock2" "bedrock2" "-Q" "/github/workspace/builds/coq/coq-failing/_install_ci/lib/coq///user-contrib/bedrock2Examples" "bedrock2Examples" "-Q" "/github/workspace/builds/coq/coq-failing/_install_ci/lib/coq///user-contrib/compiler" "compiler" "-Q" "/github/workspace/builds/coq/coq-failing/_install_ci/lib/coq///user-contrib/coqutil" "coqutil" "-Q" "/github/workspace/builds/coq/coq-failing/_install_ci/lib/coq///user-contrib/riscv" "riscv" "-top" "Top.bug_01") -*- *)
(* File reduced by coq-bug-minimizer from original input, then from 122 lines to 45 lines, then from 65 lines to 45 lines, then from 65 lines to 45 lines, then from 65 lines to 45 lines, then from 59 lines to 4401 lines *)
(* coqc version 9.3+alpha compiled with OCaml 4.14.2
   coqtop version 9.3+alpha
   Expected coqc runtime on this file: 0.000 sec
   Expected coqc peak memory usage on this file: 0.0 kb *)
Require Coq.Init.Ltac.
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.
Require Crypto.Assembly.WithBedrock.Semantics.
Require Corelib.BinNums.IntDef.
Require Corelib.BinNums.NatDef.
Require Corelib.BinNums.PosDef.
Require Corelib.Classes.CMorphisms.
Require Corelib.Classes.Morphisms.
Require Corelib.Classes.Morphisms_Prop.
Require Corelib.Classes.RelationClasses.
Require Corelib.Init.Byte.
Require Corelib.Init.Decimal.
Require Corelib.Init.Ltac.
Require Corelib.Init.Sumbool.
Require Corelib.Init.Wf.
Require Corelib.Lists.ListDef.
Require Corelib.Numbers.BinNums.
Require Corelib.Program.Basics.
Require Corelib.Program.Tactics.
Require Corelib.Program.Utils.
Require Corelib.Program.Wf.
Require Corelib.Relations.Relation_Definitions.
Require Corelib.Setoids.Setoid.
Require Corelib.derive.Derive.
Require Corelib.ssr.ssreflect.
Require Crypto.Util.Comparison.
Require Crypto.Util.GlobalSettings.
Require Crypto.Util.HProp.
Require Crypto.Util.Isomorphism.
Require Crypto.Util.Tactics.ConstrFail.
Require Crypto.Util.Tactics.Contains.
Require Crypto.Util.Tactics.GetGoal.
Require Crypto.Util.Tactics.HasBody.
Require Crypto.Util.Tactics.PrintContext.
Require Crypto.Util.Tactics.SetEvars.
Require Crypto.Util.Tactics.SubstEvars.
Require Crypto.Util.Tactics.Test.
Require Rewriter.Util.Comparison.
Require Rewriter.Util.GlobalSettings.
Require Rewriter.Util.HProp.
Require Rewriter.Util.InductiveHList.
Require Rewriter.Util.Isomorphism.
Require Rewriter.Util.Tactics.CPSId.
Require Rewriter.Util.Tactics.ClearFree.
Require Rewriter.Util.Tactics.ConstrFail.
Require Rewriter.Util.Tactics.Contains.
Require Rewriter.Util.Tactics.EvarNormalize.
Require Rewriter.Util.Tactics.GetGoal.
Require Rewriter.Util.Tactics.PrintContext.
Require Rewriter.Util.Tactics.SetEvars.
Require Rewriter.Util.Tactics.SubstEvars.
Require Rewriter.Util.Tactics.Test.
Require Rewriter.Util.Tactics.TransparentAssert.
Require Rewriter.Util.TypeList.
Require Rewriter.Util.plugins.StrategyTactic.
Require Stdlib.Classes.DecidableClass.
Require Stdlib.Logic.Decidable.
Require Stdlib.Logic.EqdepFacts.
Require Stdlib.Logic.FunctionalExtensionality.
Require Stdlib.Logic.HLevelsBase.
Require Stdlib.Program.Syntax.
Require Stdlib.Sets.Relations_1.
Require Stdlib.micromega.ZifyClasses.
Require Stdlib.setoid_ring.Algebra_syntax.
Require coqutil.Tactics.autoforward.
Require coqutil.Tactics.forward.
Require coqutil.sanity.
Require Crypto.Util.Tactics.DebugPrint.
Require Crypto.Util.Tactics.Not.
Require Crypto.Util.Tactics.PrintGoal.
Require Crypto.Util.Tactics.SetoidSubst.
Require Ltac2.Init.
Require Rewriter.Util.Tactics.DebugPrint.
Require Rewriter.Util.Tactics.Not.
Require Rewriter.Util.Tactics.PrintGoal.
Require Rewriter.Util.Tactics.SetoidSubst.
Require Stdlib.BinNums.IntDef.
Require Stdlib.BinNums.NatDef.
Require Stdlib.BinNums.PosDef.
Require Stdlib.Classes.CMorphisms.
Require Stdlib.Classes.Morphisms.
Require Stdlib.Classes.Morphisms_Prop.
Require Stdlib.Classes.RelationClasses.
Require Stdlib.Init.Byte.
Require Stdlib.Init.Decimal.
Require Stdlib.Init.Sumbool.
Require Stdlib.Init.Wf.
Require Stdlib.Lists.ListDef.
Require Stdlib.Logic.Eqdep.
Require Stdlib.Logic.Eqdep_dec.
Require Stdlib.Logic.ProofIrrelevanceFacts.
Require Stdlib.Numbers.BinNums.
Require Stdlib.Program.Basics.
Require Stdlib.Program.Tactics.
Require Stdlib.Program.Utils.
Require Stdlib.Program.Wf.
Require Stdlib.Relations.Relation_Definitions.
Require Stdlib.Setoids.Setoid.
Require Stdlib.derive.De
🛠️ 📜 Intermediate Coq File log (useful for debugging if minimization did not go as far as you wanted)
📜 Build Log (contains the Coq error message) (truncated to last 8.0KiB; full 13MiB file on GitHub Actions Artifacts under build.log)
X25519/GarageDoor.vo
src/Bedrock/End2End/X25519/GarageDoorTop.vo
src/Bedrock/End2End/X25519/MontgomeryLadder.vo
src/Bedrock/End2End/X25519/MontgomeryLadderRISCV.vo
src/Bedrock/Everything.vo
src/Bedrock/Field/Stringification/Stringification.vo
src/Bedrock/Field/Synthesis/Examples/p224_64_new.vo
src/Bedrock/Field/Synthesis/New/ComputedOp.vo
src/Bedrock/Field/Synthesis/New/Signature.vo
src/Bedrock/Field/Synthesis/New/UnsaturatedSolinas.vo
src/Bedrock/Field/Synthesis/New/WordByWordMontgomery.vo
src/Bedrock/Field/Translation/Cmd.vo
src/Bedrock/Field/Translation/Func.vo
src/Bedrock/Field/Translation/Parameters/Defaults.vo
src/Bedrock/Field/Translation/Parameters/Defaults32.vo
src/Bedrock/Field/Translation/Parameters/Defaults64.vo
src/Bedrock/Field/Translation/Parameters/FE310.vo
src/Bedrock/Field/Translation/Proofs/Cmd.vo
src/Bedrock/Field/Translation/Proofs/Func.vo
src/Bedrock/Field/Translation/Proofs/ValidComputable/Cmd.vo
src/Bedrock/Field/Translation/Proofs/ValidComputable/Func.vo
src/Bedrock/Group/ScalarMult/MontgomeryLadder.vo
src/Bedrock/P256.vo
src/Bedrock/P256/Coord.vo
src/Bedrock/P256/Coord32.vo
src/Bedrock/P256/Jacobian.vo
src/Bedrock/P256/JacobianAffine.vo
src/Bedrock/P256/Platform.vo
src/Bedrock/P256/Specs.vo
src/Bedrock/Secp256k1/Addchain.vo
src/Bedrock/Secp256k1/Field256k1.vo
src/Bedrock/Secp256k1/JacobianCoZ.vo
src/Bedrock/Secp256k1/JoyeLadder.vo
src/Bedrock/Standalone/StandaloneHaskellMain.vo
src/Bedrock/Standalone/StandaloneJsOfOCamlMain.vo
src/Bedrock/Standalone/StandaloneOCamlMain.vo
src/BoundsPipeline.vo
src/CLI.vo
src/CompilersTestCases.vo
src/Curves/Montgomery/AffineInstances.vo
src/Curves/Montgomery/AffineProofs.vo
src/Curves/Montgomery/XZProofs.vo
src/Curves/Weierstrass/AffineProofs.vo
src/Curves/Weierstrass/Jacobian/CoZ.vo
src/Curves/Weierstrass/Jacobian/Jacobian.vo
src/Curves/Weierstrass/Jacobian/ScalarMult.vo
src/Curves/Weierstrass/P256.vo
src/Curves/Weierstrass/Projective.vo
src/Everything.vo
src/ExtractionJsOfOCaml/WithBedrock/fiat_crypto.vo
src/ExtractionJsOfOCaml/bedrock2_fiat_crypto.vo
src/ExtractionJsOfOCaml/fiat_crypto.vo
src/Fancy/Barrett256.vo
src/Fancy/Montgomery256.vo
src/PerfTesting/PerfTestPrint.vo
src/PerfTesting/PerfTestSearch.vo
src/PerfTesting/PerfTestSearchPattern.vo
src/PushButtonSynthesis/BarrettReduction.vo
src/PushButtonSynthesis/BaseConversion.vo
src/PushButtonSynthesis/DettmanMultiplication.vo
src/PushButtonSynthesis/FancyMontgomeryReduction.vo
src/PushButtonSynthesis/Primitives.vo
src/PushButtonSynthesis/SaturatedSolinas.vo
src/PushButtonSynthesis/SmallExamples.vo
src/PushButtonSynthesis/SolinasReduction.vo
src/PushButtonSynthesis/UnsaturatedSolinas.vo
src/PushButtonSynthesis/WordByWordMontgomery.vo
src/Rewriter/All.vo
src/Rewriter/PerfTesting/Core.vo
src/Rewriter/PerfTesting/StandaloneOCamlMain.vo
src/Rewriter/RulesGood.vo
src/SlowPrimeSynthesisExamples.vo
src/StandaloneDebuggingExamples.vo
src/StandaloneHaskellMain.vo
src/StandaloneJsOfOCamlMain.vo
src/StandaloneMonadicUtils.vo
src/StandaloneOCamlMain.vo
ROCQ compile src/Assembly/WithBedrock/Proofs.v
MINIMIZER_DEBUG_EXTRA: coqc: /github/workspace/builds/coq/coq-failing/_install_ci/bin///rocq
MINIMIZER_DEBUG_EXTRA: original invocation: '' 
MINIMIZER_DEBUG_EXTRA: new invocation: /github/workspace/builds/coq/coq-failing/_install_ci/bin/rocq.orig compile -q -w +implicit-core-hint-db\,+implicits-in-term\,+non-reversible-notation\,+deprecated-intros-until-0\,+deprecated-focus\,+unused-intro-pattern\,+variable-collision\,+unexpected-implicit-declaration\,+omega-is-deprecated\,+deprecated-instantiate-syntax\,+non-recursive\,+undeclared-scope\,+deprecated-hint-rewrite-without-locality\,+deprecated-hint-without-locality\,+deprecated-instance-without-locality\,+deprecated-typeclasses-transparency-without-locality\,+fragile-hint-constr\,-deprecated-since-9.0\,-deprecated-since-8.20\,-deprecated-from-Coq -w -notation-overridden\,-native-compiler-disabled\,-ambiguous-paths\,-masking-absolute-name -w -deprecated-native-compiler-option -native-compiler no -R /github/workspace/builds/coq/coq-failing/_build_ci/fiat_crypto/src Crypto src/Assembly/WithBedrock/Proofs.v 
MINIMIZER_DEBUG_EXTRA: coqpath: 
MINIMIZER_DEBUG_EXTRA: ocamlpath: /github/workspace/builds/coq/coq-failing/_install_ci/lib:
MINIMIZER_DEBUG_EXTRA: pwd: PWD=/github/workspace/builds/coq/coq-failing/_build_ci/fiat_crypto
MINIMIZER_DEBUG_EXTRA: exec: /github/workspace/builds/coq/coq-failing/_install_ci/bin/rocq.orig compile -q -w +implicit-core-hint-db\,+implicits-in-term\,+non-reversible-notation\,+deprecated-intros-until-0\,+deprecated-focus\,+unused-intro-pattern\,+variable-collision\,+unexpected-implicit-declaration\,+omega-is-deprecated\,+deprecated-instantiate-syntax\,+non-recursive\,+undeclared-scope\,+deprecated-hint-rewrite-without-locality\,+deprecated-hint-without-locality\,+deprecated-instance-without-locality\,+deprecated-typeclasses-transparency-without-locality\,+fragile-hint-constr\,-deprecated-since-9.0\,-deprecated-since-8.20\,-deprecated-from-Coq -w -notation-overridden\,-native-compiler-disabled\,-ambiguous-paths\,-masking-absolute-name -w -deprecated-native-compiler-option -native-compiler no -R /github/workspace/builds/coq/coq-failing/_build_ci/fiat_crypto/src Crypto src/Assembly/WithBedrock/Proofs.v 
MINIMIZER_DEBUG_EXTRA: coqlib: Warning: Deprecated environment variable COQLIB, use ROCQLIB instead.
/github/workspace/builds/coq/coq-failing/_install_ci/lib/coq//
MINIMIZER_DEBUG: info: /tmp/tmp-coqbot-minimizer.7g318LddQ1
MINIMIZER_DEBUG: files:  src/Assembly/WithBedrock/Proofs.v /github/workspace/builds/coq/coq-failing/_build_ci/fiat_crypto/src/Assembly/WithBedrock/Proofs.v
Warning, feedback message received but no listener to handle it!
Warning: Deprecated environment variable COQLIB, use ROCQLIB instead.
[deprecated-coq-env-var,deprecated-since-9.0,deprecated,default]Warning, feedback message received but no listener to handle it!
Warning: Deprecated environment variable COQLIB, use ROCQLIB instead.
[deprecated-coq-env-var,deprecated-since-9.0,deprecated,default]
Warning: Deprecated environment variable COQCORELIB,
use ROCQRUNTIMELIB instead.
[deprecated-coq-env-var,deprecated-since-9.0,deprecated,default]
File "./src/Assembly/WithBedrock/Proofs.v", line 19, characters 0-37:
Warning: Notations "_ + _" defined at level 50 with arguments constr
at level 50 and "_ +" defined at level 50 with arguments constr at next level
have incompatible prefixes. One of them will likely not work.
[notation-incompatible-prefix,parsing,default]
File "./src/Assembly/WithBedrock/Proofs.v", line 19, characters 0-37:
Warning: Notations "_ * _" defined at level 40 with arguments constr
at level 40 and "_ *" defined at level 40 with arguments constr at next level
have incompatible prefixes. One of them will likely not work.
[notation-incompatible-prefix,parsing,default]
File "./src/Assembly/WithBedrock/Proofs.v", line 19, characters 0-37:
Warning: Notations "slet _ .. _ <- _ ; _" defined at level 70 with arguments
binder and "slet _ .. _ := _ in _" defined at level 200 with arguments binder
have incompatible prefixes. One of them will likely not work.
[notation-incompatible-prefix,parsing,default]
File "./src/Assembly/WithBedrock/Proofs.v", line 106, characters 0-14:
Error: Timeout!

Command exited with non-zero status 1
src/Assembly/WithBedrock/Proofs.vo (real: 7.04, user: 6.81, sys: 0.22, mem: 920624 ko)
make: *** [Makefile.coq:815: src/Assembly/WithBedrock/Proofs.vo] Error 1
make: *** [src/Assembly/WithBedrock/Proofs.vo] Deleting file 'src/Assembly/WithBedrock/Proofs.glob'
+ code=2
+ printf '\n%s exit code: %s\n' fiat_crypto 2
+ '[' fiat_crypto '!=' stdlib_test ']'
+ echo 'Aggregating timing log...'
Aggregating timing log...
+ echo

+ tools/make-one-time-file.py --real _build_ci/fiat_crypto.log
    Time |  Peak Mem | File Name                     
-----------------------------------------------------
0m08.32s | 920624 ko | Total Time / Peak Mem         
-----------------------------------------------------
0m07.04s | 920624 ko | Assembly/WithBedrock/Proofs.vo
0m01.28s |  52572 ko | .Makefile.coq.d               
+ '[' '' ']'
+ exit 2
/github/workspace/builds/coq /github/workspace
::endgroup::
📜 🔎 Minimization Log (truncated to last 8.0KiB; full 13MiB file on GitHub Actions Artifacts under bug.log)
y,+deprecated-instance-without-locality,+deprecated-typeclasses-transparency-without-locality,+fragile-hint-constr,-deprecated-since-9.0,-deprecated-since-8.20,-deprecated-from-Coq" "-w" "-notation-overridden,-native-compiler-disabled,-ambiguous-paths,-masking-absolute-name" "-w" "-deprecated-native-compiler-option" "-native-compiler" "no" "-coqlib" "/github/workspace/builds/coq/coq-failing/_install_ci/lib/coq//" "-R" "/github/workspace/builds/coq/coq-failing/_build_ci/fiat_crypto/src" "Crypto" "-Q" "/github/workspace/cwd" "Top" "-Q" "/github/workspace/builds/coq/coq-failing/_install_ci/lib/coq///user-contrib/Coqprime" "Coqprime" "-Q" "/github/workspace/builds/coq/coq-failing/_install_ci/lib/coq///user-contrib/Kami" "Kami" "-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/Rewriter" "Rewriter" "-Q" "/github/workspace/builds/coq/coq-failing/_install_ci/lib/coq///user-contrib/Rupicola" "Rupicola" "-Q" "/github/workspace/builds/coq/coq-failing/_install_ci/lib/coq///user-contrib/Stdlib" "Stdlib" "-Q" "/github/workspace/builds/coq/coq-failing/_install_ci/lib/coq///user-contrib/bedrock2" "bedrock2" "-Q" "/github/workspace/builds/coq/coq-failing/_install_ci/lib/coq///user-contrib/bedrock2Examples" "bedrock2Examples" "-Q" "/github/workspace/builds/coq/coq-failing/_install_ci/lib/coq///user-contrib/compiler" "compiler" "-Q" "/github/workspace/builds/coq/coq-failing/_install_ci/lib/coq///user-contrib/coqutil" "coqutil" "-Q" "/github/workspace/builds/coq/coq-failing/_install_ci/lib/coq///user-contrib/riscv" "riscv" "-top" "Top.bug_01" "/tmp/tmp7i606a52/Top/bug_01.v" "-q"

Running command: "/github/workspace/builds/coq/coq-failing/_install_ci/bin/coqc.orig" "-q" "-w" "+implicit-core-hint-db,+implicits-in-term,+non-reversible-notation,+deprecated-intros-until-0,+deprecated-focus,+unused-intro-pattern,+variable-collision,+unexpected-implicit-declaration,+omega-is-deprecated,+deprecated-instantiate-syntax,+non-recursive,+undeclared-scope,+deprecated-hint-rewrite-without-locality,+deprecated-hint-without-locality,+deprecated-instance-without-locality,+deprecated-typeclasses-transparency-without-locality,+fragile-hint-constr,-deprecated-since-9.0,-deprecated-since-8.20,-deprecated-from-Coq" "-w" "-notation-overridden,-native-compiler-disabled,-ambiguous-paths,-masking-absolute-name" "-w" "-deprecated-native-compiler-option" "-native-compiler" "no" "-coqlib" "/github/workspace/builds/coq/coq-failing/_install_ci/lib/coq//" "-R" "/github/workspace/builds/coq/coq-failing/_build_ci/fiat_crypto/src" "Crypto" "-Q" "/github/workspace/cwd" "Top" "-Q" "/github/workspace/builds/coq/coq-failing/_install_ci/lib/coq///user-contrib/Coqprime" "Coqprime" "-Q" "/github/workspace/builds/coq/coq-failing/_install_ci/lib/coq///user-contrib/Kami" "Kami" "-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/Rewriter" "Rewriter" "-Q" "/github/workspace/builds/coq/coq-failing/_install_ci/lib/coq///user-contrib/Rupicola" "Rupicola" "-Q" "/github/workspace/builds/coq/coq-failing/_install_ci/lib/coq///user-contrib/Stdlib" "Stdlib" "-Q" "/github/workspace/builds/coq/coq-failing/_install_ci/lib/coq///user-contrib/bedrock2" "bedrock2" "-Q" "/github/workspace/builds/coq/coq-failing/_install_ci/lib/coq///user-contrib/bedrock2Examples" "bedrock2Examples" "-Q" "/github/workspace/builds/coq/coq-failing/_install_ci/lib/coq///user-contrib/compiler" "compiler" "-Q" "/github/workspace/builds/coq/coq-failing/_install_ci/lib/coq///user-contrib/coqutil" "coqutil" "-Q" "/github/workspace/builds/coq/coq-failing/_install_ci/lib/coq///user-contrib/riscv" "riscv" "-top" "Top.bug_01" "/tmp/tmp7i606a52/Top/bug_01.v" "-q"

Running command: "/github/workspace/builds/coq/coq-failing/_install_ci/bin/coqc.orig" "-q" "-w" "+implicit-core-hint-db,+implicits-in-term,+non-reversible-notation,+deprecated-intros-until-0,+deprecated-focus,+unused-intro-pattern,+variable-collision,+unexpected-implicit-declaration,+omega-is-deprecated,+deprecated-instantiate-syntax,+non-recursive,+undeclared-scope,+deprecated-hint-rewrite-without-locality,+deprecated-hint-without-locality,+deprecated-instance-without-locality,+deprecated-typeclasses-transparency-without-locality,+fragile-hint-constr,-deprecated-since-9.0,-deprecated-since-8.20,-deprecated-from-Coq" "-w" "-notation-overridden,-native-compiler-disabled,-ambiguous-paths,-masking-absolute-name" "-w" "-deprecated-native-compiler-option" "-native-compiler" "no" "-coqlib" "/github/workspace/builds/coq/coq-failing/_install_ci/lib/coq//" "-R" "/github/workspace/builds/coq/coq-failing/_build_ci/fiat_crypto/src" "Crypto" "-Q" "/github/workspace/cwd" "Top" "-Q" "/github/workspace/builds/coq/coq-failing/_install_ci/lib/coq///user-contrib/Coqprime" "Coqprime" "-Q" "/github/workspace/builds/coq/coq-failing/_install_ci/lib/coq///user-contrib/Kami" "Kami" "-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/Rewriter" "Rewriter" "-Q" "/github/workspace/builds/coq/coq-failing/_install_ci/lib/coq///user-contrib/Rupicola" "Rupicola" "-Q" "/github/workspace/builds/coq/coq-failing/_install_ci/lib/coq///user-contrib/Stdlib" "Stdlib" "-Q" "/github/workspace/builds/coq/coq-failing/_install_ci/lib/coq///user-contrib/bedrock2" "bedrock2" "-Q" "/github/workspace/builds/coq/coq-failing/_install_ci/lib/coq///user-contrib/bedrock2Examples" "bedrock2Examples" "-Q" "/github/workspace/builds/coq/coq-failing/_install_ci/lib/coq///user-contrib/compiler" "compiler" "-Q" "/github/workspace/builds/coq/coq-failing/_install_ci/lib/coq///user-contrib/coqutil" "coqutil" "-Q" "/github/workspace/builds/coq/coq-failing/_install_ci/lib/coq///user-contrib/riscv" "riscv" "-top" "Top.bug_01" "/tmp/tmp7i606a52/Top/bug_01.v" "-q"

Running command: "/github/workspace/builds/coq/coq-failing/_install_ci/bin/coqc.orig" "-q" "-w" "+implicit-core-hint-db,+implicits-in-term,+non-reversible-notation,+deprecated-intros-until-0,+deprecated-focus,+unused-intro-pattern,+variable-collision,+unexpected-implicit-declaration,+omega-is-deprecated,+deprecated-instantiate-syntax,+non-recursive,+undeclared-scope,+deprecated-hint-rewrite-without-locality,+deprecated-hint-without-locality,+deprecated-instance-without-locality,+deprecated-typeclasses-transparency-without-locality,+fragile-hint-constr,-deprecated-since-9.0,-deprecated-since-8.20,-deprecated-from-Coq" "-w" "-notation-overridden,-native-compiler-disabled,-ambiguous-paths,-masking-absolute-name" "-w" "-deprecated-native-compiler-option" "-native-compiler" "no" "-coqlib" "/github/workspace/builds/coq/coq-failing/_install_ci/lib/coq//" "-R" "/github/workspace/builds/coq/coq-failing/_build_ci/fiat_crypto/src" "Crypto" "-Q" "/github/workspace/cwd" "Top" "-Q" "/github/workspace/builds/coq/coq-failing/_install_ci/lib/coq///user-contrib/Coqprime" "Coqprime" "-Q" "/github/workspace/builds/coq/coq-failing/_install_ci/lib/coq///user-contrib/Kami" "Kami" "-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/Rewriter" "Rewriter" "-Q" "/github/workspace/builds/coq/coq-failing/_install_ci/lib/coq///user-contrib/Rupicola" "Rupicola" "-Q" "/github/workspace/builds/coq/coq-failing/_install_ci/lib/coq///user-contrib/Stdlib" "Stdlib" "-Q" "/github/workspace/builds/coq/coq-failing/_install_ci/lib/coq///user-contrib/bedrock2" "bedrock2" "-Q" "/github/workspace/builds/coq/coq-failing/_install_ci/lib/coq///user-contrib/bedrock2Examples" "bedrock2Examples" "-Q" "/github/workspace/builds/coq/coq-failing/_install_ci/lib/coq///user-contrib/compiler" "compiler" "-Q" "/github/workspace/builds/coq/coq-failing/_install_ci/lib/coq///user-contrib/coqutil" "coqutil" "-Q" "/github/workspace/builds/coq/coq-failing/_install_ci/lib/coq///user-contrib/riscv" "riscv" "-top" "Top.bug_01" "/tmp/tmp7i606a52/Top/bug_01.v" "-q"

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

@ppedrot
Copy link
Member Author

ppedrot commented Mar 8, 2026

Indeed it didn't even inlined the modules, this is now seemingly looping.

@JasonGross
Copy link
Member

That is a bit weird, presumably the issue is that Crypto.Assembly.EquivalenceProofs is so slow to build that it does not manage to make it through the initial steps that are required to verify that inlining succeeded before timing out (or the first couple of inlining strategies fail and there is not enough time to run a couple dozen variants and find the one that works)

@ppedrot
Copy link
Member Author

ppedrot commented Mar 8, 2026

I'll try to hand-minimize this a bit further, but I think I've got the explanation for the timeout. Basically we're inferring a type let x := t in T where t is a computational bomb, and we try to VM-convert this in call-by-value to some other type, thus exploding. If x does not appear in T, this is going to trivially disappear either in call-by-name or with the previous inference rule.

@JasonGross
Copy link
Member

If you manually inline the file and proactively admit all Qed'd proofs (maybe I should set up the minimizer to attempt this version first?), it should be able to resume minimization from there.

@coqbot-app
Copy link
Contributor

coqbot-app bot commented Mar 8, 2026

Minimization interrupted by timeout, being automatically continued. Partially Minimized File /home/runner/work/run-coq-bug-minimizer/run-coq-bug-minimizer/builds/coq/coq-failing/_build_ci/fiat_crypto/src/Assembly/WithBedrock/Proofs.v in 5h 15m 10s (from ci-fiat_crypto) (interrupted by timeout, being automatically continued) (full log on GitHub Actions - verbose log)
⭐ ⏱️ Partially Minimized Coq File (timeout)
(* -*- mode: coq; coq-prog-args: ("-emacs" "-q" "-w" "+implicit-core-hint-db,+implicits-in-term,+non-reversible-notation,+deprecated-intros-until-0,+deprecated-focus,+unused-intro-pattern,+variable-collision,+unexpected-implicit-declaration,+omega-is-deprecated,+deprecated-instantiate-syntax,+non-recursive,+undeclared-scope,+deprecated-hint-rewrite-without-locality,+deprecated-hint-without-locality,+deprecated-instance-without-locality,+deprecated-typeclasses-transparency-without-locality,+fragile-hint-constr,-deprecated-since-9.0,-deprecated-since-8.20,-deprecated-from-Coq" "-w" "-notation-overridden,-native-compiler-disabled,-ambiguous-paths,-masking-absolute-name" "-w" "-deprecated-native-compiler-option" "-native-compiler" "no" "-coqlib" "/github/workspace/builds/coq/coq-failing/_install_ci/lib/coq//" "-R" "/github/workspace/builds/coq/coq-failing/_build_ci/fiat_crypto/src" "Crypto" "-Q" "/github/workspace/cwd" "Top" "-Q" "/github/workspace/builds/coq/coq-failing/_install_ci/lib/coq///user-contrib/Coqprime" "Coqprime" "-Q" "/github/workspace/builds/coq/coq-failing/_install_ci/lib/coq///user-contrib/Kami" "Kami" "-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/Rewriter" "Rewriter" "-Q" "/github/workspace/builds/coq/coq-failing/_install_ci/lib/coq///user-contrib/Rupicola" "Rupicola" "-Q" "/github/workspace/builds/coq/coq-failing/_install_ci/lib/coq///user-contrib/Stdlib" "Stdlib" "-Q" "/github/workspace/builds/coq/coq-failing/_install_ci/lib/coq///user-contrib/bedrock2" "bedrock2" "-Q" "/github/workspace/builds/coq/coq-failing/_install_ci/lib/coq///user-contrib/bedrock2Examples" "bedrock2Examples" "-Q" "/github/workspace/builds/coq/coq-failing/_install_ci/lib/coq///user-contrib/compiler" "compiler" "-Q" "/github/workspace/builds/coq/coq-failing/_install_ci/lib/coq///user-contrib/coqutil" "coqutil" "-Q" "/github/workspace/builds/coq/coq-failing/_install_ci/lib/coq///user-contrib/riscv" "riscv" "-top" "Top.bug_01") -*- *)
(* File reduced by coq-bug-minimizer from original input, then from 122 lines to 45 lines, then from 65 lines to 45 lines, then from 65 lines to 45 lines, then from 65 lines to 45 lines, then from 65 lines to 45 lines *)
(* coqc version 9.3+alpha compiled with OCaml 4.14.2
   coqtop version 9.3+alpha
   Expected coqc runtime on this file: 1.750 sec
   Expected coqc peak memory usage on this file: 888588.0 kb *)
Require Crypto.Assembly.WithBedrock.Semantics.
Require Crypto.Assembly.EquivalenceProofs.
Import Stdlib.micromega.Lia.
Import Stdlib.ZArith.ZArith.
Import Crypto.Assembly.Syntax.
Import Crypto.Util.Option.
Import Crypto.Util.Bool.Reflect.
Import Crypto.Util.ListUtil.
Import Crypto.Util.Tactics.SpecializeBy.
Import Crypto.Assembly.EquivalenceProofs.

Definition R_regs_preserved_v rn (m : Semantics.reg_state)
  := Z.land (Tuple.nth_default 0%Z rn m) (Z.ones 64).

Definition R_regs_preserved G d G' d' (m : Semantics.reg_state) rs rs'
  := forall rn idx, Symbolic.get_reg rs' rn = Some idx -> exists idx', Symbolic.get_reg rs rn = Some idx' /\ let v := R_regs_preserved_v (N.to_nat rn) m in eval_idx_Z G d idx' v -> eval_idx_Z G' d' idx v.

Lemma R_regs_preserved_set_reg G d G' d' rs rs' ri rm v
      (H : R_regs_preserved G d G' d' rm rs rs')
      (H_same : (ri < N.of_nat (List.length widest_registers))%N -> exists idx, Symbolic.get_reg rs ri = Some idx /\ let v' := R_regs_preserved_v (N.to_nat ri) rm in eval_idx_Z G d idx v' -> eval_idx_Z G' d' v v')
  : R_regs_preserved G d G' d' rm rs (Symbolic.set_reg rs' ri v).
Proof.
  cbv [R_regs_preserved] in *.
  intros rn idx; specialize (H rn).
  rewrite get_reg_set_reg_full; intro.
  vm_compute (length widest_registers) in *.
  repeat first [ progress break_innermost_match_hyps
               | progress inversion_option
               | progress subst
               | progress destruct_head'_and
               | progress destruct_head'_or
               | progress destruct_head'_ex
               | progress specialize_by_assumption
               | progress specialize_by lia
               | rewrite @Bool.andb_true_iff in *
               | rewrite @Bool.andb_false_iff in *
               | solve [ eauto ]
               | progress reflect_hyps
               | match goal with
                 | [ H : forall v, ?k = Some v -> _, H' : ?k = Some _ |- _ ]
                   => specialize (H _ H')
                 end ].
Timeout 5 Qed.
🛠️ Intermediate Coq File (useful for debugging if minimization did not go as far as you wanted) (truncated to 6.0KiB; full 204KiB file on GitHub Actions Artifacts under tmp.v)
(* -*- mode: coq; coq-prog-args: ("-emacs" "-q" "-w" "+implicit-core-hint-db,+implicits-in-term,+non-reversible-notation,+deprecated-intros-until-0,+deprecated-focus,+unused-intro-pattern,+variable-collision,+unexpected-implicit-declaration,+omega-is-deprecated,+deprecated-instantiate-syntax,+non-recursive,+undeclared-scope,+deprecated-hint-rewrite-without-locality,+deprecated-hint-without-locality,+deprecated-instance-without-locality,+deprecated-typeclasses-transparency-without-locality,+fragile-hint-constr,-deprecated-since-9.0,-deprecated-since-8.20,-deprecated-from-Coq" "-w" "-notation-overridden,-native-compiler-disabled,-ambiguous-paths,-masking-absolute-name" "-w" "-deprecated-native-compiler-option" "-native-compiler" "no" "-coqlib" "/github/workspace/builds/coq/coq-failing/_install_ci/lib/coq//" "-R" "/github/workspace/builds/coq/coq-failing/_build_ci/fiat_crypto/src" "Crypto" "-Q" "/github/workspace/cwd" "Top" "-Q" "/github/workspace/builds/coq/coq-failing/_install_ci/lib/coq///user-contrib/Coqprime" "Coqprime" "-Q" "/github/workspace/builds/coq/coq-failing/_install_ci/lib/coq///user-contrib/Kami" "Kami" "-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/Rewriter" "Rewriter" "-Q" "/github/workspace/builds/coq/coq-failing/_install_ci/lib/coq///user-contrib/Rupicola" "Rupicola" "-Q" "/github/workspace/builds/coq/coq-failing/_install_ci/lib/coq///user-contrib/Stdlib" "Stdlib" "-Q" "/github/workspace/builds/coq/coq-failing/_install_ci/lib/coq///user-contrib/bedrock2" "bedrock2" "-Q" "/github/workspace/builds/coq/coq-failing/_install_ci/lib/coq///user-contrib/bedrock2Examples" "bedrock2Examples" "-Q" "/github/workspace/builds/coq/coq-failing/_install_ci/lib/coq///user-contrib/compiler" "compiler" "-Q" "/github/workspace/builds/coq/coq-failing/_install_ci/lib/coq///user-contrib/coqutil" "coqutil" "-Q" "/github/workspace/builds/coq/coq-failing/_install_ci/lib/coq///user-contrib/riscv" "riscv" "-top" "Top.bug_01") -*- *)
(* File reduced by coq-bug-minimizer from original input, then from 122 lines to 45 lines, then from 65 lines to 45 lines, then from 65 lines to 45 lines, then from 65 lines to 45 lines, then from 65 lines to 45 lines, then from 59 lines to 4401 lines *)
(* coqc version 9.3+alpha compiled with OCaml 4.14.2
   coqtop version 9.3+alpha
   Expected coqc runtime on this file: 0.000 sec
   Expected coqc peak memory usage on this file: 0.0 kb *)
Require Coq.Init.Ltac.
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.
Require Crypto.Assembly.WithBedrock.Semantics.
Require Corelib.BinNums.IntDef.
Require Corelib.BinNums.NatDef.
Require Corelib.BinNums.PosDef.
Require Corelib.Classes.CMorphisms.
Require Corelib.Classes.Morphisms.
Require Corelib.Classes.Morphisms_Prop.
Require Corelib.Classes.RelationClasses.
Require Corelib.Init.Byte.
Require Corelib.Init.Decimal.
Require Corelib.Init.Ltac.
Require Corelib.Init.Sumbool.
Require Corelib.Init.Wf.
Require Corelib.Lists.ListDef.
Require Corelib.Numbers.BinNums.
Require Corelib.Program.Basics.
Require Corelib.Program.Tactics.
Require Corelib.Program.Utils.
Require Corelib.Program.Wf.
Require Corelib.Relations.Relation_Definitions.
Require Corelib.Setoids.Setoid.
Require Corelib.derive.Derive.
Require Corelib.ssr.ssreflect.
Require Crypto.Util.Comparison.
Require Crypto.Util.GlobalSettings.
Require Crypto.Util.HProp.
Require Crypto.Util.Isomorphism.
Require Crypto.Util.Tactics.ConstrFail.
Require Crypto.Util.Tactics.Contains.
Require Crypto.Util.Tactics.GetGoal.
Require Crypto.Util.Tactics.HasBody.
Require Crypto.Util.Tactics.PrintContext.
Require Crypto.Util.Tactics.SetEvars.
Require Crypto.Util.Tactics.SubstEvars.
Require Crypto.Util.Tactics.Test.
Require Rewriter.Util.Comparison.
Require Rewriter.Util.GlobalSettings.
Require Rewriter.Util.HProp.
Require Rewriter.Util.InductiveHList.
Require Rewriter.Util.Isomorphism.
Require Rewriter.Util.Tactics.CPSId.
Require Rewriter.Util.Tactics.ClearFree.
Require Rewriter.Util.Tactics.ConstrFail.
Require Rewriter.Util.Tactics.Contains.
Require Rewriter.Util.Tactics.EvarNormalize.
Require Rewriter.Util.Tactics.GetGoal.
Require Rewriter.Util.Tactics.PrintContext.
Require Rewriter.Util.Tactics.SetEvars.
Require Rewriter.Util.Tactics.SubstEvars.
Require Rewriter.Util.Tactics.Test.
Require Rewriter.Util.Tactics.TransparentAssert.
Require Rewriter.Util.TypeList.
Require Rewriter.Util.plugins.StrategyTactic.
Require Stdlib.Classes.DecidableClass.
Require Stdlib.Logic.Decidable.
Require Stdlib.Logic.EqdepFacts.
Require Stdlib.Logic.FunctionalExtensionality.
Require Stdlib.Logic.HLevelsBase.
Require Stdlib.Program.Syntax.
Require Stdlib.Sets.Relations_1.
Require Stdlib.micromega.ZifyClasses.
Require Stdlib.setoid_ring.Algebra_syntax.
Require coqutil.Tactics.autoforward.
Require coqutil.Tactics.forward.
Require coqutil.sanity.
Require Crypto.Util.Tactics.DebugPrint.
Require Crypto.Util.Tactics.Not.
Require Crypto.Util.Tactics.PrintGoal.
Require Crypto.Util.Tactics.SetoidSubst.
Require Ltac2.Init.
Require Rewriter.Util.Tactics.DebugPrint.
Require Rewriter.Util.Tactics.Not.
Require Rewriter.Util.Tactics.PrintGoal.
Require Rewriter.Util.Tactics.SetoidSubst.
Require Stdlib.BinNums.IntDef.
Require Stdlib.BinNums.NatDef.
Require Stdlib.BinNums.PosDef.
Require Stdlib.Classes.CMorphisms.
Require Stdlib.Classes.Morphisms.
Require Stdlib.Classes.Morphisms_Prop.
Require Stdlib.Classes.RelationClasses.
Require Stdlib.Init.Byte.
Require Stdlib.Init.Decimal.
Require Stdlib.Init.Sumbool.
Require Stdlib.Init.Wf.
Require Stdlib.Lists.ListDef.
Require Stdlib.Logic.Eqdep.
Require Stdlib.Logic.Eqdep_dec.
Require Stdlib.Logic.ProofIrrelevanceFacts.
Require Stdlib.Numbers.BinNums.
Require Stdlib.Program.Basics.
Require Stdlib.Program.Tactics.
Require Stdlib.Program.Utils.
Require Stdlib.Program.Wf.
Require Stdlib.Relations.Relation_Definitions.
Require Stdlib.Setoids.
🛠️ 📜 Intermediate Coq File log (useful for debugging if minimization did not go as far as you wanted)
📜 Build Log (contains the Coq error message) (truncated to last 8.0KiB; full 13MiB file on GitHub Actions Artifacts under build.log)
X25519/GarageDoor.vo
src/Bedrock/End2End/X25519/GarageDoorTop.vo
src/Bedrock/End2End/X25519/MontgomeryLadder.vo
src/Bedrock/End2End/X25519/MontgomeryLadderRISCV.vo
src/Bedrock/Everything.vo
src/Bedrock/Field/Stringification/Stringification.vo
src/Bedrock/Field/Synthesis/Examples/p224_64_new.vo
src/Bedrock/Field/Synthesis/New/ComputedOp.vo
src/Bedrock/Field/Synthesis/New/Signature.vo
src/Bedrock/Field/Synthesis/New/UnsaturatedSolinas.vo
src/Bedrock/Field/Synthesis/New/WordByWordMontgomery.vo
src/Bedrock/Field/Translation/Cmd.vo
src/Bedrock/Field/Translation/Func.vo
src/Bedrock/Field/Translation/Parameters/Defaults.vo
src/Bedrock/Field/Translation/Parameters/Defaults32.vo
src/Bedrock/Field/Translation/Parameters/Defaults64.vo
src/Bedrock/Field/Translation/Parameters/FE310.vo
src/Bedrock/Field/Translation/Proofs/Cmd.vo
src/Bedrock/Field/Translation/Proofs/Func.vo
src/Bedrock/Field/Translation/Proofs/ValidComputable/Cmd.vo
src/Bedrock/Field/Translation/Proofs/ValidComputable/Func.vo
src/Bedrock/Group/ScalarMult/MontgomeryLadder.vo
src/Bedrock/P256.vo
src/Bedrock/P256/Coord.vo
src/Bedrock/P256/Coord32.vo
src/Bedrock/P256/Jacobian.vo
src/Bedrock/P256/JacobianAffine.vo
src/Bedrock/P256/Platform.vo
src/Bedrock/P256/Specs.vo
src/Bedrock/Secp256k1/Addchain.vo
src/Bedrock/Secp256k1/Field256k1.vo
src/Bedrock/Secp256k1/JacobianCoZ.vo
src/Bedrock/Secp256k1/JoyeLadder.vo
src/Bedrock/Standalone/StandaloneHaskellMain.vo
src/Bedrock/Standalone/StandaloneJsOfOCamlMain.vo
src/Bedrock/Standalone/StandaloneOCamlMain.vo
src/BoundsPipeline.vo
src/CLI.vo
src/CompilersTestCases.vo
src/Curves/Montgomery/AffineInstances.vo
src/Curves/Montgomery/AffineProofs.vo
src/Curves/Montgomery/XZProofs.vo
src/Curves/Weierstrass/AffineProofs.vo
src/Curves/Weierstrass/Jacobian/CoZ.vo
src/Curves/Weierstrass/Jacobian/Jacobian.vo
src/Curves/Weierstrass/Jacobian/ScalarMult.vo
src/Curves/Weierstrass/P256.vo
src/Curves/Weierstrass/Projective.vo
src/Everything.vo
src/ExtractionJsOfOCaml/WithBedrock/fiat_crypto.vo
src/ExtractionJsOfOCaml/bedrock2_fiat_crypto.vo
src/ExtractionJsOfOCaml/fiat_crypto.vo
src/Fancy/Barrett256.vo
src/Fancy/Montgomery256.vo
src/PerfTesting/PerfTestPrint.vo
src/PerfTesting/PerfTestSearch.vo
src/PerfTesting/PerfTestSearchPattern.vo
src/PushButtonSynthesis/BarrettReduction.vo
src/PushButtonSynthesis/BaseConversion.vo
src/PushButtonSynthesis/DettmanMultiplication.vo
src/PushButtonSynthesis/FancyMontgomeryReduction.vo
src/PushButtonSynthesis/Primitives.vo
src/PushButtonSynthesis/SaturatedSolinas.vo
src/PushButtonSynthesis/SmallExamples.vo
src/PushButtonSynthesis/SolinasReduction.vo
src/PushButtonSynthesis/UnsaturatedSolinas.vo
src/PushButtonSynthesis/WordByWordMontgomery.vo
src/Rewriter/All.vo
src/Rewriter/PerfTesting/Core.vo
src/Rewriter/PerfTesting/StandaloneOCamlMain.vo
src/Rewriter/RulesGood.vo
src/SlowPrimeSynthesisExamples.vo
src/StandaloneDebuggingExamples.vo
src/StandaloneHaskellMain.vo
src/StandaloneJsOfOCamlMain.vo
src/StandaloneMonadicUtils.vo
src/StandaloneOCamlMain.vo
ROCQ compile src/Assembly/WithBedrock/Proofs.v
MINIMIZER_DEBUG_EXTRA: coqc: /github/workspace/builds/coq/coq-failing/_install_ci/bin///rocq
MINIMIZER_DEBUG_EXTRA: original invocation: '' 
MINIMIZER_DEBUG_EXTRA: new invocation: /github/workspace/builds/coq/coq-failing/_install_ci/bin/rocq.orig compile -q -w +implicit-core-hint-db\,+implicits-in-term\,+non-reversible-notation\,+deprecated-intros-until-0\,+deprecated-focus\,+unused-intro-pattern\,+variable-collision\,+unexpected-implicit-declaration\,+omega-is-deprecated\,+deprecated-instantiate-syntax\,+non-recursive\,+undeclared-scope\,+deprecated-hint-rewrite-without-locality\,+deprecated-hint-without-locality\,+deprecated-instance-without-locality\,+deprecated-typeclasses-transparency-without-locality\,+fragile-hint-constr\,-deprecated-since-9.0\,-deprecated-since-8.20\,-deprecated-from-Coq -w -notation-overridden\,-native-compiler-disabled\,-ambiguous-paths\,-masking-absolute-name -w -deprecated-native-compiler-option -native-compiler no -R /github/workspace/builds/coq/coq-failing/_build_ci/fiat_crypto/src Crypto src/Assembly/WithBedrock/Proofs.v 
MINIMIZER_DEBUG_EXTRA: coqpath: 
MINIMIZER_DEBUG_EXTRA: ocamlpath: /github/workspace/builds/coq/coq-failing/_install_ci/lib:
MINIMIZER_DEBUG_EXTRA: pwd: PWD=/github/workspace/builds/coq/coq-failing/_build_ci/fiat_crypto
MINIMIZER_DEBUG_EXTRA: exec: /github/workspace/builds/coq/coq-failing/_install_ci/bin/rocq.orig compile -q -w +implicit-core-hint-db\,+implicits-in-term\,+non-reversible-notation\,+deprecated-intros-until-0\,+deprecated-focus\,+unused-intro-pattern\,+variable-collision\,+unexpected-implicit-declaration\,+omega-is-deprecated\,+deprecated-instantiate-syntax\,+non-recursive\,+undeclared-scope\,+deprecated-hint-rewrite-without-locality\,+deprecated-hint-without-locality\,+deprecated-instance-without-locality\,+deprecated-typeclasses-transparency-without-locality\,+fragile-hint-constr\,-deprecated-since-9.0\,-deprecated-since-8.20\,-deprecated-from-Coq -w -notation-overridden\,-native-compiler-disabled\,-ambiguous-paths\,-masking-absolute-name -w -deprecated-native-compiler-option -native-compiler no -R /github/workspace/builds/coq/coq-failing/_build_ci/fiat_crypto/src Crypto src/Assembly/WithBedrock/Proofs.v 
MINIMIZER_DEBUG_EXTRA: coqlib: Warning: Deprecated environment variable COQLIB, use ROCQLIB instead.
/github/workspace/builds/coq/coq-failing/_install_ci/lib/coq//
MINIMIZER_DEBUG: info: /tmp/tmp-coqbot-minimizer.omCUBRKEbH
MINIMIZER_DEBUG: files:  src/Assembly/WithBedrock/Proofs.v /github/workspace/builds/coq/coq-failing/_build_ci/fiat_crypto/src/Assembly/WithBedrock/Proofs.v
Warning, feedback message received but no listener to handle it!
Warning: Deprecated environment variable COQLIB, use ROCQLIB instead.
[deprecated-coq-env-var,deprecated-since-9.0,deprecated,default]Warning, feedback message received but no listener to handle it!
Warning: Deprecated environment variable COQLIB, use ROCQLIB instead.
[deprecated-coq-env-var,deprecated-since-9.0,deprecated,default]
Warning: Deprecated environment variable COQCORELIB,
use ROCQRUNTIMELIB instead.
[deprecated-coq-env-var,deprecated-since-9.0,deprecated,default]
File "./src/Assembly/WithBedrock/Proofs.v", line 19, characters 0-37:
Warning: Notations "_ + _" defined at level 50 with arguments constr
at level 50 and "_ +" defined at level 50 with arguments constr at next level
have incompatible prefixes. One of them will likely not work.
[notation-incompatible-prefix,parsing,default]
File "./src/Assembly/WithBedrock/Proofs.v", line 19, characters 0-37:
Warning: Notations "_ * _" defined at level 40 with arguments constr
at level 40 and "_ *" defined at level 40 with arguments constr at next level
have incompatible prefixes. One of them will likely not work.
[notation-incompatible-prefix,parsing,default]
File "./src/Assembly/WithBedrock/Proofs.v", line 19, characters 0-37:
Warning: Notations "slet _ .. _ <- _ ; _" defined at level 70 with arguments
binder and "slet _ .. _ := _ in _" defined at level 200 with arguments binder
have incompatible prefixes. One of them will likely not work.
[notation-incompatible-prefix,parsing,default]
File "./src/Assembly/WithBedrock/Proofs.v", line 106, characters 0-14:
Error: Timeout!

Command exited with non-zero status 1
src/Assembly/WithBedrock/Proofs.vo (real: 6.96, user: 6.74, sys: 0.22, mem: 919048 ko)
make: *** [Makefile.coq:815: src/Assembly/WithBedrock/Proofs.vo] Error 1
make: *** [src/Assembly/WithBedrock/Proofs.vo] Deleting file 'src/Assembly/WithBedrock/Proofs.glob'
+ code=2
+ printf '\n%s exit code: %s\n' fiat_crypto 2
+ '[' fiat_crypto '!=' stdlib_test ']'
+ echo 'Aggregating timing log...'
Aggregating timing log...
+ echo

+ tools/make-one-time-file.py --real _build_ci/fiat_crypto.log
    Time |  Peak Mem | File Name                     
-----------------------------------------------------
0m08.22s | 919048 ko | Total Time / Peak Mem         
-----------------------------------------------------
0m06.96s | 919048 ko | Assembly/WithBedrock/Proofs.vo
0m01.26s |  51340 ko | .Makefile.coq.d               
+ '[' '' ']'
+ exit 2
/github/workspace/builds/coq /github/workspace
::endgroup::
📜 🔎 Minimization Log (truncated to last 8.0KiB; full 17MiB file on GitHub Actions Artifacts under bug.log)
rc2;
    let v := v1 * v2 in
    st <- SetOperand sa s st dst v;
    Some (HavocFlags st) (* conservative *)
  | sar, [dst; cnt] =>
    v1 <- DenoteOperand sa s st dst;
    cnt' <- DenoteOperand sa s st cnt;
    let cnt := Z.land cnt' (Z.of_N s-1) in
    let v := Z.land (Z.shiftr (Z.signed s v1) cnt) (Z.ones (Z.of_N s)) in
    st <- SetOperand sa s st dst v;
    Some (if cnt =? 0 then st else
      let st := HavocFlagsFromResult s st v in
      let st := if cnt =? 1 then SetFlag st OF false else st in
      let st := if cnt <? Z.of_N s then SetFlag st CF (Z.testbit v1 (cnt-1)) else st in
      HavocFlag st AF)
  | shl, [dst; cnt] =>
    v1 <- DenoteOperand sa s st dst;
    cnt <- DenoteOperand sa s st cnt;
    let v := Z.land (Z.shiftl v1 (Z.land cnt (Z.of_N s-1))) (Z.ones (Z.of_N s)) in
    st <- SetOperand sa s st dst v;
    Some (if cnt =? 0 then st else
      let st := HavocFlagsFromResult s st v in
      let st := if cnt =? 1 then SetFlag st OF (xorb (Z.testbit v1 (Z.of_N s-2)) (Z.testbit v1 (Z.of_N s-1))) else st in
      let st := if cnt <? Z.of_N s then SetFlag st CF (Z.testbit v1 (65-cnt)) else st in
      HavocFlag st AF)
  | shlx, [dst; src; cnt] =>
    v1 <- DenoteOperand sa s st src;
    cnt <- DenoteOperand sa s st cnt;
    let v := Z.land (Z.shiftl v1 (Z.land cnt (Z.of_N s-1))) (Z.ones (Z.of_N s)) in
    SetOperand sa s st dst v
  | shr, [dst; cnt] =>
    v1 <- DenoteOperand sa s st dst;
    cnt <- DenoteOperand sa s st cnt;
    let v := Z.land (Z.shiftr v1 (Z.land cnt (Z.of_N s-1))) (Z.ones (Z.of_N s)) in
    st <- SetOperand sa s st dst v;
    Some (if cnt =? 0 then st else
      let st := HavocFlagsFromResult s st v in
      let st := if cnt =? 1 then SetFlag st OF (Z.testbit v1 (Z.of_N s-1)) else st in
      let st := if cnt <? Z.of_N s then SetFlag st CF (Z.testbit v1 (cnt-1)) else st in
      HavocFlag st AF)
  | rcr, [dst; cnt] =>
    v1 <- DenoteOperand sa s st dst;
    cnt <- DenoteOperand sa s st cnt;
    let cnt := rcrcnt s cnt in
    c <- get_flag st CF;
    let v1c := Z.lor v1 (Z.shiftl (Z.b2z c) (Z.of_N s)) in
    let l := Z.lor v1c (Z.shiftl v1 (1+Z.of_N s)) in
    let v := Z.land (Z.shiftr l cnt) (Z.ones (Z.of_N s)) in
    st <- SetOperand sa s st dst v;
    Some (
      if cnt =? 0 then st else
      let st := SetFlag st CF (Z.testbit v1c (cnt-1)) in
      if cnt =? 1 then SetFlag st OF (xorb (Z.testbit v (Z.of_N s-1)) (Z.testbit v (Z.of_N s-2))) else st)
  | shrd, [dst as lo; hi; cnt] =>
    lv <- DenoteOperand sa s st lo;
    hv <- DenoteOperand sa s st hi;
    cnt <- DenoteOperand sa s st cnt;
    let l := Z.lor lv (Z.shiftl hv (Z.of_N s)) in
    let v := Z.land (Z.shiftr l (Z.land cnt (Z.of_N s-1))) (Z.ones (Z.of_N s)) in
    st <- SetOperand sa s st dst v;
    if cnt =? 0 then Some st else
    if Z.of_N s <? cnt then Some (HavocFlags st) else
      let st := HavocFlagsFromResult s st l in
      let signchange := xorb (Z.signed s lv <? 0)%Z (Z.signed s v <? 0)%Z in
      (* Note: IA-32 SDM does not make it clear what sign change is in question *)
      let st := if cnt =? 1 then SetFlag st OF signchange else st in
      let st := SetFlag st CF (Z.testbit l (cnt-1)) in
      Some (HavocFlag st AF)
  | shld, [dst as hi; lo; cnt] =>
    lv <- DenoteOperand sa s st lo;
    hv <- DenoteOperand sa s st hi;
    cnt <- DenoteOperand sa s st cnt;
    let l := Z.lor lv (Z.shiftl hv (Z.of_N s)) in
    let l_shifted := Z.shiftl l (Z.land cnt (Z.of_N s-1)) in
    let l_shifted_hi := Z.shiftr l_shifted (Z.of_N s) in
    let v := Z.land l_shifted_hi (Z.ones (Z.of_N s)) in
    st <- SetOperand sa s st dst v;
    if cnt =? 0 then Some st else
    if Z.of_N s <? cnt then Some (HavocFlags st) else
      let st := HavocFlagsFromResult s st l in
      let signchange := xorb (Z.signed s hv <? 0)%Z (Z.signed s v <? 0)%Z in
      (* Note: IA-32 SDM does not make it clear what sign change is in question *)
      let st := if cnt =? 1 then SetFlag st OF signchange else st in
      let st := SetFlag st CF (Z.testbit hv (Z.of_N s - cnt)) in
      Some (HavocFlag st AF)
  | (and | xor | or) as opc, [dst; src] =>
    let f := match opc with and => Z.land | xor => Z.lxor | _ => Z.lor end in
    v1 <- DenoteOperand sa s st dst;
    v2 <- DenoteOperand sa s st src;
    let v := f v1 v2 in
    st <- SetOperand sa s st dst v;
    let st := HavocFlagsFromResult s st v in
    let st := SetFlag st CF false in
    let st := SetFlag st OF false in
    Some (HavocFlag st AF)
  | bzhi, [dst; src1; src2] =>
    v1 <- DenoteOperand sa s st src1;
    v2 <- DenoteOperand sa s st src2;
    let n := Z.land v2 (Z.ones 8) in
    let v := Z.land v1 (Z.ones n) in
    st <- SetOperand sa s st dst v;
    let st := HavocFlagsFromResult s st v in
    let st := SetFlag st CF (((Z.of_N (operand_size src1 s)) - 1) <? v) in
    Some (SetFlag st OF false)
  | test, [src1; src2] =>
    v1 <- DenoteOperand sa s st src1;
    v2 <- DenoteOperand sa s st src2;
    let v := Z.land v1 v2 in
    let st := HavocFlagsFromResult s st v in
    let st := SetFlag st CF false in
    let st := SetFlag st OF false in
    Some (HavocFlag st AF)
  | push, [src]
    => v    <- DenoteOperand sa s st src;
       rsp' <- DenoteOperand sa stack_addr_size st rsp;
       let rsp' := Z.land (rsp' - (Z.of_N s / 8)) (Z.ones (Z.of_N stack_addr_size)) in (* we don't actually need to truncate here, but it makes proofs a bit easier *)
       st   <- SetOperand stack_addr_size s st rsp rsp';
               SetOperand sa s st (mem_of_reg rsp) v
  | pop, [dst]
    => v    <- DenoteOperand sa s st (mem_of_reg rsp);
       rsp' <- DenoteOperand sa stack_addr_size st rsp;
       let rsp' := Z.land (rsp' + (Z.of_N s / 8)) (Z.ones (Z.of_N stack_addr_size)) in (* we don't actually need to truncate here, but it makes proofs a bit easier *)
       st   <- SetOperand stack_addr_size s st rsp rsp';
               SetOperand sa s st dst v

  | nop, [] => Some st

  | ret, _ => None (* not sure what to do with this ret, maybe exlude it? *)

  | adc, _
  | adcx, _
  | add, _
  | adox, _
  | and, _
  | bzhi, _
  | db, _
  | dw, _
  | dd, _
  | dq, _
  | mulx, _
  | mul, _
  | call, _
  | cmp, _
  | je, _
  | jmp, _
  | cmovc, _
  | cmovb, _
  | cmovo, _
  | cmovnz, _
  | setc, _
  | seto, _
  | clc, _
  | dec, _
  | lea, _
  | mov, _
  | movzx, _
  | or, _
  | imul, _
  | inc, _
  | push, _
  | pop, _
  | sar, _
  | rcr, _
  | sbb, _
  | shl, _
  | shlx, _
  | shr, _
  | shrx, _
  | shrd, _
  | sub, _
  | test, _
  | xor, _
  | xchg, _ => None
  (* not yet supported *)
  | cmove, _
  | cmovne, _
  | leave, _
  | movabs, _
  | movdqa, _
  | movdqu, _
  | movq, _
  | movd, _
  | movsx, _
  | movups, _
  | neg, _
  | nop, _
  | not, _
  | paddq, _
  | psubq, _
  | pshufd, _
  | pshufw, _
  | punpcklqdq, _
  | punpckhqdq, _
  | pslld, _
  | psrld, _
  | pand, _
  | pandn, _
  | por, _
  | pxor, _
  | psrad, _
  | rol, _
  | ror, _
  | sal, _
  | sete, _
  | setne, _
  | shld, _
    => None
 end | _ => None end | _ => None end%Z%option.


Definition DenoteRawLine (st : machine_state) (rawline : RawLine) : option machine_state :=
  match rawline with
  | EMPTY
  | LABEL _
  | DIRECTIVE _
  | ASCII_ _ _
    => Some st
  | INSTR instr
    => DenoteNormalInstruction st instr
  | SECTION _
  | GLOBAL _
  | ALIGN _
  | DEFAULT_REL
    => None
  end.

Definition DenoteLine (st : machine_state) (line : Line) : option machine_state
  := DenoteRawLine st line.(rawline).

Fixpoint DenoteLines (st : machine_state) (lines : Lines) : option machine_state
  := match lines with
     | [] => Some st
     | line :: lines
       => (st <- DenoteLine st line;
          DenoteLines st lines)
     end%option.

End Semantics.

End WithBedrock.

End Assembly.

End Crypto.

End Crypto_DOT_Assembly_DOT_WithBedrock_DOT_Semantics.
Require Crypto.Assembly.EquivalenceProofs.
Import Stdlib.micromega.Lia.
Import Stdlib.ZArith.ZArith.
Import Crypto.Assembly.Syntax.
Import Crypto.Util.Option.
Import Crypto.Util.Bool.Reflect.
Import Crypto.Util.ListUtil.
Import Crypto.Util.Tactics.SpecializeBy.
Import Crypto.Assembly.EquivalenceProofs.

Definition R_regs_preserved_v rn (m : Semantics.reg_state)
  := Z.land (Tuple.nth_default 0%Z rn m) (Z.ones 64).

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
Copy link
Contributor

manually interrupted the auto continue

@ppedrot
Copy link
Member Author

ppedrot commented Mar 8, 2026

Here is a small snippet that only depends on the stdlib. I could inline it further, but it's mostly to quickly pinpoint the culprit in the fiat-crypto dev.

Require Import Stdlib.ZArith.ZArith.

Definition R_regs_preserved_v (rn : Z) := Z.land rn (Z.ones 64).

Lemma R_regs_preserved_set_reg
  (rn : Z)
  (b : bool) :
  (if b then False else False) ->
  R_regs_preserved_v rn = 0%Z.
Proof.
intros XXX.
vm_compute (length) in *.
destruct b eqn:?.
all: contradiction.
Show Proof.
(*
(fun (rn : Z) (b : bool) (XXX : if b then False else False) =>
 (let b0 := b in
  let Heqb0 : b = b0 := eq_refl in
  (if b0 as b1 return b = b1 -> (if b1 then False else False) -> R_regs_preserved_v rn = 0%Z
   then fun (_ : b = true) (XXX0 : False) => False_ind (R_regs_preserved_v rn = 0%Z) XXX0
   else fun (_ : b = false) (XXX0 : False) => False_ind (R_regs_preserved_v rn = 0%Z) XXX0) Heqb0 XXX)
 <:
 R_regs_preserved_v rn = 0%Z)
*)
Timeout 2 Qed.

The bomb is clearly Z.ones 64 from R_regs_preserved_v, as this is evaluates to 2⁶⁴ - 1. The destruct ... eqn: tactic internally generates a let binding that makes the VM explode through vm_compute on the newly inferred type.

Not sure what to do. I do think though it's a bit crazy that fiat-crypto leaves ticking computational bombs around without any kind of locking.

@JasonGross
Copy link
Member

The destruct ... eqn: tactic internally generates a let binding that makes the VM explode through vm_compute on the newly inferred type

Insofar as this is an accurate representation of what's happening, I think we should replace vm_compute with compute or lazy (assuming they have the same behavior modulo the type of cast node). I believe this code probably predates the insertion of vm cast nodes, and we definitely don't want to be inserting cast nodes that demand full reduction on both sides when the proof script is only partially reducing. (It would be a different story if we were invoking vm_compute without an argument.)

@JasonGross
Copy link
Member

Not sure what to do. I do think though it's a bit crazy that fiat-crypto leaves ticking computational bombs around without any kind of locking.

I think we broadly aim for the opposite approach in fiat-crypto: we try to whitelist reduction rather then blacklist it with locking.

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

Labels

kind: fix This fixes a bug or incorrect documentation. kind: performance Improvements to performance and efficiency. needs: progress Work in progress: awaiting action from the author.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants