diff options
| author | Pierre-Marie Pédrot | 2020-10-11 14:37:19 +0200 |
|---|---|---|
| committer | Pierre-Marie Pédrot | 2020-10-11 14:38:24 +0200 |
| commit | bdd2b322d26419ee9944b804e580d5b039631569 (patch) | |
| tree | 2129443444ce9f490ac2813b33b040624685060d | |
| parent | 516a7009b08c443a74ef7f3175fff1337e71b668 (diff) | |
Fix #13169: vm_compute has existential crisis.
We simply use evars instance in the right order while reading back VM values.
| -rw-r--r-- | pretyping/vnorm.ml | 3 | ||||
| -rw-r--r-- | test-suite/bugs/closed/bug_13169.v | 14 |
2 files changed, 16 insertions, 1 deletions
diff --git a/pretyping/vnorm.ml b/pretyping/vnorm.ml index 900ba0edb9..1420401875 100644 --- a/pretyping/vnorm.ml +++ b/pretyping/vnorm.ml @@ -218,7 +218,8 @@ and nf_evar env sigma evk stk = let t = List.fold_left fold concl hyps in let t, args = nf_args env sigma args t in let inst, args = Array.chop (List.length hyps) args in - let inst = Array.to_list inst in + (* Evar instances are reversed w.r.t. argument order *) + let inst = Array.rev_to_list inst in let c = mkApp (mkEvar (evk, inst), args) in nf_stk env sigma c t stk | _ -> diff --git a/test-suite/bugs/closed/bug_13169.v b/test-suite/bugs/closed/bug_13169.v new file mode 100644 index 0000000000..a0b564c725 --- /dev/null +++ b/test-suite/bugs/closed/bug_13169.v @@ -0,0 +1,14 @@ +Goal False. +Proof. + set (H1:=I). + set (x:=true). + assert (H2: x = true) by reflexivity. + set (y:=false). + assert (H3: y = false) by reflexivity. + clearbody H1 x y. + eenough (H4: _ = false). + vm_compute in H4. + (* H4 now has "x:=y" in the evar context. *) + 2: exact H3. + match type of H4 with y = false => idtac end. +Abort. |
