summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrian Campbell2020-06-17 20:09:08 +0100
committerBrian Campbell2020-06-17 20:09:08 +0100
commit4ea47e5a20f6cdf201774e8bd2ddfb977ee4dc43 (patch)
tree1c2e415b5769342df09645dc64d6f4e797b0aef7
parenta7d351c71d43585d789bc92df3ba27f4e533d1b7 (diff)
Coq: fix rich loop variables
Accidentally broken by e1a2b0d2 because the Coq backend looks at the wrong type to decide when a proof is needed.
-rw-r--r--src/pretty_print_coq.ml8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/pretty_print_coq.ml b/src/pretty_print_coq.ml
index d0d13907..dbb0356d 100644
--- a/src/pretty_print_coq.ml
+++ b/src/pretty_print_coq.ml
@@ -1620,8 +1620,10 @@ let doc_exp, doc_let =
let from_exp_pp, to_exp_pp, step_exp_pp =
expY from_exp, expY to_exp, expY step_exp
in
+ (* The body has the right type for deciding whether a proof is necessary *)
+ let vartuple_retyped = check_exp env (strip_exp vartuple) (general_typ_of body) in
let vartuple_pp, body_lambda =
- make_loop_vars [doc_id loopvar; underscore] vartuple
+ make_loop_vars [doc_id loopvar; underscore] vartuple_retyped
in
parens (
(prefix 2 1)
@@ -1673,8 +1675,10 @@ let doc_exp, doc_let =
| _ -> body
in
let used_vars_body = find_e_ids body in
+ (* The body has the right type for deciding whether a proof is necessary *)
+ let varstuple_retyped = check_exp env (strip_exp varstuple) (general_typ_of body) in
let varstuple_pp, lambda =
- make_loop_vars [] varstuple
+ make_loop_vars [] varstuple_retyped
in
let msuffix, measure_pp =
match measure with