aboutsummaryrefslogtreecommitdiff
path: root/src/Specific/GF25519Reflective
diff options
context:
space:
mode:
authorGravatar Jason Gross <jgross@mit.edu>2016-11-06 01:52:06 -0500
committerGravatar Jason Gross <jgross@mit.edu>2016-11-06 01:52:06 -0500
commit1d871e22bbdf011b6711d1488d975d019367b00e (patch)
treeeeae25e47330781aa3a05e0ceba8fec8c0513b37 /src/Specific/GF25519Reflective
parent705e4c240fae53ef72ebe3d9c26d85cc7b6a3f89 (diff)
Work around broken evars in 8.4
Diffstat (limited to 'src/Specific/GF25519Reflective')
-rw-r--r--src/Specific/GF25519Reflective/Common.v13
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 :=