diff options
author | Jason Gross <jgross@mit.edu> | 2016-11-06 01:52:06 -0500 |
---|---|---|
committer | Jason Gross <jgross@mit.edu> | 2016-11-06 01:52:06 -0500 |
commit | 1d871e22bbdf011b6711d1488d975d019367b00e (patch) | |
tree | eeae25e47330781aa3a05e0ceba8fec8c0513b37 /src/Specific/GF25519Reflective | |
parent | 705e4c240fae53ef72ebe3d9c26d85cc7b6a3f89 (diff) |
Work around broken evars in 8.4
Diffstat (limited to 'src/Specific/GF25519Reflective')
-rw-r--r-- | src/Specific/GF25519Reflective/Common.v | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/src/Specific/GF25519Reflective/Common.v b/src/Specific/GF25519Reflective/Common.v index 24d114f96..68b022e47 100644 --- a/src/Specific/GF25519Reflective/Common.v +++ b/src/Specific/GF25519Reflective/Common.v @@ -148,18 +148,23 @@ Local Ltac make_args x := intro H; let xv := (eval hnf in x') in args_to_bounded_helper xv; - [ destruct_head' and; + [ instantiate; + destruct_head' and; match goal with - | [ H : ?T |- _ ] => is_evar T; refine (proj1 H) + | [ H : ?T |- _ ] + => is_evar T; + refine (let c := proj1 H in _); (* work around broken evars in Coq 8.4 *) + lazymatch goal with H := proj1 _ |- _ => eexact H end end.. ] - | repeat match goal with H : is_bounded _ = true |- _ => unfold_is_bounded_in H end; + | instantiate; + repeat match goal with H : is_bounded _ = true |- _ => unfold_is_bounded_in H end; repeat match goal with H : wire_digits_is_bounded _ = true |- _ => unfold_is_bounded_in H end; destruct_head' and; Z.ltb_to_lt; repeat first [ eexact I | apply conj; [ repeat apply conj; [ | eassumption | eassumption | ]; - vm_compute; [ refine (fun x => match x with eq_refl => I end) | reflexivity ] + instantiate; vm_compute; [ refine (fun x => match x with eq_refl => I end) | reflexivity ] | ] ] ]. Local Ltac app_tuples x y := |